<?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>178892</bug_id>
          
          <creation_ts>2017-10-26 16:20:50 -0700</creation_ts>
          <short_desc>Modernize AccessibilityObject.h</short_desc>
          <delta_ts>2017-11-15 12:41:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>jlewis3</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1365077</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 16:20:50 -0700</bug_when>
    <thetext>Modernize AccessibilityObject.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365079</commentid>
    <comment_count>1</comment_count>
      <attachid>325075</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 16:24:31 -0700</bug_when>
    <thetext>Created attachment 325075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365115</commentid>
    <comment_count>2</comment_count>
      <attachid>325080</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 16:52:00 -0700</bug_when>
    <thetext>Created attachment 325080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365128</commentid>
    <comment_count>3</comment_count>
      <attachid>325081</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 17:09:55 -0700</bug_when>
    <thetext>Created attachment 325081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365142</commentid>
    <comment_count>4</comment_count>
      <attachid>325082</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 17:22:25 -0700</bug_when>
    <thetext>Created attachment 325082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365152</commentid>
    <comment_count>5</comment_count>
      <attachid>325084</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 17:29:32 -0700</bug_when>
    <thetext>Created attachment 325084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365164</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 17:37:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/r224074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365172</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 18:14:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/r224075
http://trac.webkit.org/r224076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365192</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-26 19:02:43 -0700</bug_when>
    <thetext>Committed r224079: &lt;https://trac.webkit.org/changeset/224079&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365195</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-10-26 19:14:23 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365196</commentid>
    <comment_count>10</comment_count>
      <attachid>325098</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-10-26 19:14:24 -0700</bug_when>
    <thetext>Created attachment 325098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365209</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 19:45:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/r224083
Keith attached a patch to the wrong bug :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365212</commentid>
    <comment_count>12</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-10-26 19:47:20 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #11)
&gt; http://trac.webkit.org/r224083
&gt; Keith attached a patch to the wrong bug :(

Man, webkit-patch has not been my friend today... :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365374</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-27 09:18:43 -0700</bug_when>
    <thetext>accessibility/mac/aria-label-on-label-element.html is failing after this change:

--- /Volumes/Data/slave/elcapitan-release-tests-wk2/build/layout-test-results/accessibility/mac/aria-label-on-label-element-expected.txt
+++ /Volumes/Data/slave/elcapitan-release-tests-wk2/build/layout-test-results/accessibility/mac/aria-label-on-label-element-actual.txt
@@ -12,7 +12,7 @@
 PASS !titleUIElement1 is true
 PASS input1.title is &apos;AXTitle: aria label&apos;
 PASS titleUIElement2.isEqual(accessibilityController.accessibleElementById(&apos;label2&apos;)) is true
-PASS input3.title is &apos;AXTitle: hidden aria label&apos;
+FAIL input3.title should be AXTitle: hidden aria label. Was AXTitle: .
 PASS input4.title is &apos;AXTitle: aria labelledby&apos;
 PASS successfullyParsed is true

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=accessibility%2Fmac%2Faria-label-on-label-element.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365427</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-27 10:39:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/r224119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372209</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:41:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/35567968&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325075</attachid>
            <date>2017-10-26 16:24:31 -0700</date>
            <delta_ts>2017-10-26 16:51:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178892-20171026162430.patch</filename>
            <type>text/plain</type>
            <size>314912</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDA2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBAQAorMjAxNy0xMC0yNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODg5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBlbnVtcyBpbiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmggYXJlIGNh
dXNpbmcgbmFtaW5nIGNvbGxpc2lvbnMgd2l0aCB1bmlmaWVkIGJ1aWxkcy4KKyAgICAgICAgVGhp
cyBpcyB3aGF0IGVudW0gY2xhc3NlcyBhcmUgZm9yLgorICAgICAgICBIYXNoTWFwcyBvZiBlbnVt
IGNsYXNzZXMgc3RpbGwgbmVlZCBhIGZldyBjYXN0cyB0by9mcm9tIGludC4KKyAgICAgICAgCisg
ICAgICAgIEkgYWxzbyBtYWRlIHNvbWUgUmVmUHRyJ3MgUmVmJ3MsIHVzZSBzb21lIGluaXRpYWxp
emVyIGxpc3RzIGluc3RlYWQgb2YgdmFsdWVzIGluIHRoZSBjb25zdHJ1Y3RvciBpbXBsZW1lbnRh
dGlvbiwgYW5kIGluZGVudGF0aW9uIGZpeGluZy4KKyAgICAgICAgCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6Omdl
dElnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6fkFYT2Jq
ZWN0Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFY
Q29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6Q2FjaGVkQVhPYmplY3RBdHRyaWJ1dGVzOjpD
YWNoZWRBWE9iamVjdEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QVhDb21wdXRlZE9i
amVjdEF0dHJpYnV0ZUNhY2hlOjpnZXRJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50Um93R3JvdXAgY29uc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6aGVhZGVyT2JqZWN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlBdHRhY2htZW50OjphY2Nlc3NpYmlsaXR5VGV4dCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QXR0YWNobWVudC5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpyb2xlVmFsdWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6YWNjZXNzaWJpbGl0eVRleHQp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNoaWxkcmVuQ29udGFpbk9ubHlTdGF0aWNUZXh0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUxpc3Q6OmlzVW5vcmRlcmVkTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdDo6aXNPcmRlcmVkTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TGlzdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eUxpc3Q6OnJvbGVWYWx1ZSBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TGlzdEJveDo6c2V0U2VsZWN0ZWRDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3gu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmg6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6ZGV0ZXJtaW5l
QWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQ6OmlzTWF0aFNjcmlwdE9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QgY29uc3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6YWNjZXNzaWJp
bGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6
cm9sZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2xzLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRD
aGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3Qu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6Om1lbnVMaXN0
T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2FuSGF2ZUNoaWxk
cmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpj
b21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTZWFyY2hGaWVsZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQYXNzd29yZEZpZWxkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0lucHV0SW1h
Z2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
UHJvZ3Jlc3NJbmRpY2F0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzU2xpZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc01lbnVSZWxhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUJhciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QnV0dG9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVJdGVtIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0VuYWJsZWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzQ2hl
Y2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
c3VwcG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0hlYWRpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTGluayBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHcm91cCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hlY2tib3hP
clJhZGlvVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmFjdGlvbkVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmFsdGVyU2xpZGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR2VuZXJpY0ZvY3VzYWJsZUVsZW1lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1lbnVFbGVtZW50Rm9y
TWVudUJ1dHRvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6bWVudUl0ZW1FbGVtZW50Rm9yTWVudSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGVFbGVtZW50VGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2aXNpYmxlVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVs
cFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjphcmlhTGFiZWxlZEJ5VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpyb2xlSWdub3Jlc1RpdGxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoaWVy
YXJjaGljYWxMZXZlbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6dGl0bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OnN0cmluZ1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cmVtYXBBcmlhUm9sZUR1ZVRv
UGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNB
Y2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2libGVOYW1lRGVyaXZlc0Zyb21Db250ZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQmxvY2txdW90
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RleHRD
b250cm9sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QVJJQVRleHRDb250cm9sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzTGFuZG1hcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6ZmluZE1hdGNoaW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpyYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUlucHV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUNvbnRyb2wpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSYW5nZUNvbnRyb2wgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9u
Rm9yQm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OnN1cHBvcnRzQVJJQVJlYWRPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFyaWFSZWFkT25seVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZVJvd3MpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVJdGVtQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1bHRMaXZlUmVn
aW9uU3RhdHVzRm9yUm9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFDdXJyZW50U3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6YXJpYUN1cnJlbnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojppbml0aWFsaXplUm9sZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6Y29tcHV0ZWRSb2xlU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUHJlc3NBY3Rpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c29ydERpcmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRXhwYW5kZWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHND
aGVja2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNo
ZWNrYm94T3JSYWRpb1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNjcm9sbEJ5UGFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpidXR0b25Sb2xlVHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1dHRvbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkQnlEZWZhdWx0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbnRhaW5lZEJ5UGFzc3dvcmRG
aWVsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5T2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUZXh0OjpB
Y2Nlc3NpYmlsaXR5VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkRnJvbVBhcmVudERhdGE6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0ltYWdlTWFwIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzV2ViQXJlYSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NoZWNrYm94IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFkaW9CdXR0
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0
Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3Bp
bkJ1dHRvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1N3aXRjaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1RvZ2dsZUJ1dHRvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojppc1RhYkxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNUYWJJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzUmFkaW9Hcm91cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0NvbWJvQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzVHJlZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1RyZWVHcmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzVHJlZUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNTY3JvbGxiYXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNMaXN0SXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Njcm9sbFZpZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDYW52YXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNQb3BVcEJ1dHRvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NvbG9yV2VsbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwbGl0dGVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9vbGJhciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N1bW1hcnkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTdGF0aWNUZXh0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlQXR0cmlidXRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2li
aWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBdHRhY2htZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlbHBUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmlu
Z1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpsaW5r
ZWRVSUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzQWxsb3dlZENoaWxkT2ZUcmVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Om9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6c2VsZWN0ZWRUZXh0UmFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNUYWJJdGVtU2VsZWN0ZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGb2N1c2VkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFNlbGVjdGVk
Um93cyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRE
b2N1bWVudExpbmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzRXhw
YW5kZWRUZXh0VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRp
b25hbFJvbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmli
dXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFkZEltYWdlTWFwQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkVGV4dEZpZWxkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRlUm9sZUFmdGVyQ2hpbGRyZW5DcmVhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGl2ZVJl
Z2lvbkF0b21pYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0ZWRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2
aXNpYmxlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dGFiQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWN0aW9uVmVyYiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjptc2FhUm9sZUZv
clJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnJvbGVWYWx1ZUZvck1TQUEgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNW
R0VsZW1lbnQ6OmFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTVkdFbGVtZW50Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6aW5oZXJpdHNQcmVzZW50
YXRpb25hbFJvbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR0Vs
ZW1lbnQ6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlTVkdFbGVtZW50OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNjcm9sbEJhcik6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTbGlkZXI6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTcGluQnV0dG9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uOjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aGFzQVJJQVJvbGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmhlYWRlckNvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnJvbGVWYWx1ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZTo6dGl0bGVFbGVtZW50VGV4dCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmRldGVybWluZUFjY2Vzc2liaWxp
dHlSb2xlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRl
ck9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNv
bnRhaW5lci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6ZGV0ZXJtaW5l
QWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Um93Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VHJlZTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09i
amVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0lu
cHV0VHlwZVBvcHVwQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUNhbkZ1enp5SGl0VGVzdF0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eUlzTGFu
ZG1hcmtSb2xlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBf
YWNjZXNzaWJpbGl0eVRyZWVBbmNlc3Rvcl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eUxpc3RBbmNlc3Rvcl0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eUFydGljbGVBbmNlc3Rv
cl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJp
bGl0eVRyYWl0c0Zyb21BbmNlc3RvcnNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlUZXh0RW50cnlUcmFpdHNdKToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVRyYWl0c10pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBkZXRlcm1pbmVJc0FjY2Vzc2li
aWxpdHlFbGVtZW50XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IHN0cmluZ1ZhbHVlU2hvdWxkQmVVc2VkSW5MYWJlbF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5TGFiZWxdKToKKyAgICAgICAgKC1bV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVZhbHVlXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJc0NvbWJvQm94
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNvbnRhaW5zVW5u
YXR1cmFsbHlTZWdtZW50ZWRDaGlsZHJlbl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5TGlua2VkRWxlbWVudF0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0cmVlSXRlbVBhcmVudEZvck9iamVjdDpdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUVs
ZW1lbnREaWRCZWNvbWVGb2N1c2VkXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uXSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZSBiYXNlQWNjZXNzaWJpbGl0eVRpdGxlXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZSBiYXNlQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uXSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBiYXNlQWNjZXNzaWJp
bGl0eUhlbHBUZXh0XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZSBhcmlhTGFuZG1hcmtSb2xlRGVzY3JpcHRpb25dKToKKyAgICAgICAgKGNyZWF0ZUFjY2Vz
c2liaWxpdHlTZWFyY2hLZXlNYXApOgorICAgICAgICAoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZv
clN0cmluZyk6CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQ
cmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKGFjY2Vz
c2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWFGb3JDcml0ZXJpYVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUpOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhZGRpdGlvbmFs
QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAo
Y3JlYXRlQWNjZXNzaWJpbGl0eVJvbGVNYXApOgorICAgICAgICAocm9sZVZhbHVlVG9OU1N0cmlu
Zyk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJvbGVdKToKKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciByb2xlRGVzY3JpcHRpb25dKToKKyAg
ICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uXSk6CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6Zm9yQXR0cmlidXRl
Ol0pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5
UHJvcGVydGllcyk6CisKIDIwMTctMTAtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBzZXJ2aWNlIHdvcmtlciBoYW5kbGUgZmV0Y2ggc3VwcG9ydCBm
b3IgYWxsIHN1YnJlc291cmNlIHJlcXVlc3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyMCw4ICsxMjAsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBhY2Nlc3NpYmlsaXR5Rm9j
dXNBCiAKIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQVhDb21wdXRlZE9iamVjdEF0dHJp
YnV0ZUNhY2hlOjpnZXRJZ25vcmVkKEFYSUQgaWQpIGNvbnN0CiB7Ci0gICAgSGFzaE1hcDxBWElE
LCBDYWNoZWRBWE9iamVjdEF0dHJpYnV0ZXM+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1faWRNYXBw
aW5nLmZpbmQoaWQpOwotICAgIHJldHVybiBpdCAhPSBtX2lkTWFwcGluZy5lbmQoKSA/IGl0LT52
YWx1ZS5pZ25vcmVkIDogRGVmYXVsdEJlaGF2aW9yOworICAgIGF1dG8gaXQgPSBtX2lkTWFwcGlu
Zy5maW5kKGlkKTsKKyAgICByZXR1cm4gaXQgIT0gbV9pZE1hcHBpbmcuZW5kKCkgPyBpdC0+dmFs
dWUuaWdub3JlZCA6IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlv
cjsKIH0KIAogdm9pZCBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6OnNldElnbm9yZWQo
QVhJRCBpZCwgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBpbmNsdXNpb24pCkBAIC0yMDMs
OCArMjAzLDggQEAgQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogICAgIG1fZm9jdXNB
cmlhTW9kYWxOb2RlVGltZXIuc3RvcCgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvYmplY3Qg
OiBtX29iamVjdHMudmFsdWVzKCkpIHsKLSAgICAgICAgZGV0YWNoV3JhcHBlcihvYmplY3QuZ2V0
KCksIENhY2hlRGVzdHJveWVkKTsKLSAgICAgICAgb2JqZWN0LT5kZXRhY2goQ2FjaGVEZXN0cm95
ZWQpOworICAgICAgICBkZXRhY2hXcmFwcGVyKG9iamVjdC5nZXQoKSwgQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlOjpDYWNoZURlc3Ryb3llZCk7CisgICAgICAgIG9iamVjdC0+ZGV0YWNoKEFj
Y2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOwogICAgICAgICByZW1v
dmVBWElEKG9iamVjdC5nZXQoKSk7CiAgICAgfQogfQpAQCAtNjQ3LDMxICs2NDcsMzEgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0TwogICAgIAogICAgIC8vIHdpbGwg
YmUgZmlsbGVkIGluLi4uCiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgY2FzZSBMaXN0Qm94T3B0
aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgogICAg
ICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSW1hZ2VNYXBMaW5rUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpJbWFnZU1hcExpbms6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbms6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbHVtblJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uOgogICAgICAgICBvYmogPSBBY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW46OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsgICAgICAgICAgICAK
LSAgICBjYXNlIFRhYmxlSGVhZGVyQ29udGFpbmVyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0
eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7ICAgCi0gICAg
Y2FzZSBTbGlkZXJUaHVtYlJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVy
VGh1bWI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVudUxpc3RQb3B1cFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cDoKICAgICAgICAgb2JqID0gQWNjZXNzaWJp
bGl0eU1lbnVMaXN0UG9wdXA6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1l
bnVMaXN0T3B0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9w
dGlvbjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpjcmVhdGUo
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTcGluQnV0dG9uUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3BpbkJ1dHRv
blBhcnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0Ogog
ICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ6OmNyZWF0ZSgpOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtNjk5LDggKzY5OSw4IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cmVtb3ZlKEFYSUQgYXhJRCkKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGRldGFjaFdyYXBwZXIob2JqLCBFbGVtZW50RGVzdHJveWVkKTsKLSAgICBv
YmotPmRldGFjaChFbGVtZW50RGVzdHJveWVkLCB0aGlzKTsKKyAgICBkZXRhY2hXcmFwcGVyKG9i
aiwgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVkKTsKKyAgICBv
YmotPmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnREZXN0cm95ZWQs
IHRoaXMpOwogICAgIHJlbW92ZUFYSUQob2JqKTsKICAgICAKICAgICAvLyBmaW5hbGx5IHJlbW92
ZSB0aGUgb2JqZWN0CkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub3Rp
ZmljYXRpb25Qb3N0VGltZQogICAgICAgICAvLyB0aGUgYXhDaGlsZHJlbiB3aGVuIHRoZSBtZW51
IGlzIG1hcmtlZCBhcyBvcGVuaW5nLgogICAgICAgICBpZiAobm90aWZpY2F0aW9uID09IEFYTWVu
dU9wZW5lZCkgewogICAgICAgICAgICAgb2JqLT51cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7
Ci0gICAgICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSAhPSBNZW51Um9sZSkKKyAgICAgICAg
ICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51KQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHJldmlzaW9uIDIyMzk0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw3ICs5MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgQ2FjaGVkQVhPYmplY3RBdHRyaWJ1dGVzIHsKLSAgICAgICAgQ2FjaGVkQVhPYmplY3RBdHRy
aWJ1dGVzKCkgOiBpZ25vcmVkKERlZmF1bHRCZWhhdmlvcikgeyB9CisgICAgICAgIENhY2hlZEFY
T2JqZWN0QXR0cmlidXRlcygpCisgICAgICAgICAgICA6IGlnbm9yZWQoQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yKQorICAgICAgICB7IH0KIAogICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGlnbm9yZWQ7CiAgICAgfTsKQEAgLTQ2Niw3ICs0
NjgsNyBAQCBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBjb25zdCBTdHJpbmcmIHJvCiBib29sIGlz
Tm9kZUFyaWFWaXNpYmxlKE5vZGUqKTsKICAgICAKICNpZiAhSEFWRShBQ0NFU1NJQklMSVRZKQot
aW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQVhDb21wdXRlZE9iamVjdEF0dHJp
YnV0ZUNhY2hlOjpnZXRJZ25vcmVkKEFYSUQpIGNvbnN0IHsgcmV0dXJuIERlZmF1bHRCZWhhdmlv
cjsgfQoraW5saW5lIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQVhDb21wdXRlZE9iamVj
dEF0dHJpYnV0ZUNhY2hlOjpnZXRJZ25vcmVkKEFYSUQpIGNvbnN0IHsgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsgfQogaW5saW5lIEFjY2Vzc2li
aWxpdHlSZXBsYWNlZFRleHQ6OkFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpIHsgfQogaW5saW5lIHZvaWQgQWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4dDo6
cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihBWE9iamVjdENhY2hlKiwgQVhUZXh0RWRp
dFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KIGlubGlu
ZSB2b2lkIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6c2V0SWdub3JlZChBWElELCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHJldmlz
aW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbigKICAgICAKICAgICAvLyBtYWtlIHRoZSBj
b2x1bW5zIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgKytpKSB7Ci0gICAgICAg
IGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2Fj
aGUtPmdldE9yQ3JlYXRlKENvbHVtblJvbGUpKTsKKyAgICAgICAgYXV0byYgY29sdW1uID0gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Z2V0T3JDcmVhdGUoQWNj
ZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikpOwogICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgo
c3RhdGljX2Nhc3Q8aW50PihpKSk7CiAgICAgICAgIGNvbHVtbi5zZXRQYXJlbnQodGhpcyk7CiAg
ICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5j
cHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjks
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluCiBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91cCgpIGNv
bnN0CiB7CiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAg
IGlmIChwYXJlbnQtPmhhc1RhZ05hbWUodGhlYWRUYWcpIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh0
Ym9keVRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKHRmb290VGFnKSB8fCBwYXJlbnQtPnJvbGVW
YWx1ZSgpID09IFJvd0dyb3VwUm9sZSkKKyAgICAgICAgaWYgKHBhcmVudC0+aGFzVGFnTmFtZSh0
aGVhZFRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKHRib2R5VGFnKSB8fCBwYXJlbnQtPmhhc1Rh
Z05hbWUodGZvb3RUYWcpIHx8IHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJvd0dyb3VwKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudDsKICAgICB9CiAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cuY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlB
UklBR3JpCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6Omhl
YWRlck9iamVjdCgpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkp
IHsKLSAgICAgICAgaWYgKGNoaWxkLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IFJvd0hlYWRlclJv
bGUpCisgICAgICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6Um93SGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAg
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUF0dGFjaG1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTUsMTMgKzk1LDEzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eUF0dGFjaG1l
bnQ6OmFjY2Vzc2liaWwKICAgICBhdXRvJiBhY3Rpb24gPSBnZXRBdHRyaWJ1dGUoYWN0aW9uQXR0
cik7CiAgICAgCiAgICAgaWYgKGFjdGlvbi5sZW5ndGgoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY3Rpb24sIEFjdGlvblRleHQpKTsKKyAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY3Rpb24sIEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlOjpBY3Rpb24pKTsKIAogICAgIGlmICh0aXRsZS5sZW5ndGgoKSkKLSAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZSwgVGl0bGVUZXh0KSk7CisgICAg
ICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIEFjY2Vzc2liaWxp
dHlUZXh0U291cmNlOjpUaXRsZSkpOwogCiAgICAgaWYgKHN1YnRpdGxlLmxlbmd0aCgpKQotICAg
ICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHN1YnRpdGxlLCBTdWJ0aXRs
ZVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChzdWJ0
aXRsZSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1YnRpdGxlKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUF0dGFjaG1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50LmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcm9ncmVz
cyhmbG9hdCogcHJvZ3Jlc3MgPSBudWxscHRyKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQnV0
dG9uUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b247IH0KICAgICBib29sIGlzQXR0
YWNobWVudEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBT
dHJpbmcgcm9sZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluay5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDEz
ICs2NiwxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5SW1hZ2VNCiBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpyb2xlVmFsdWUoKSBjb25z
dAogewogICAgIGlmICghbV9hcmVhRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmVMaW5r
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazsKICAg
ICAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFSb2xlID0gZ2V0QXR0cmlidXRlKHJvbGVB
dHRyKTsKICAgICBpZiAoIWFyaWFSb2xlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFyaWFSb2xlVG9XZWJDb3JlUm9sZShhcmlhUm9sZSk7CiAKLSAgICBy
ZXR1cm4gV2ViQ29yZUxpbmtSb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2Vi
Q29yZUxpbms7CiB9CiAgICAgCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjph
Y3Rpb25FbGVtZW50KCkgY29uc3QKQEAgLTk3LDE1ICs5NywxNSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbms6OmFjY2Vzc2liCiB7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCFkZXNjcmlwdGlvbi5pc0VtcHR5KCkp
Ci0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoZGVzY3JpcHRpb24s
IEFsdGVybmF0aXZlVGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxp
dHlUZXh0KGRlc2NyaXB0aW9uLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUp
KTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGl0bGVUZXh0ID0gZ2V0QXR0cmlidXRlKHRp
dGxlQXR0cik7CiAgICAgaWYgKCF0aXRsZVRleHQuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0T3Jk
ZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlVGV4dCwgVGl0bGVUYWdUZXh0KSk7Cisg
ICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGVUZXh0LCBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZTo6VGl0bGVUYWcpKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3VtbWFyeSA9IGdldEF0dHJpYnV0ZShzdW1tYXJ5QXR0cik7CiAgICAgaWYgKCFzdW1tYXJ5
LmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChz
dW1tYXJ5LCBTdW1tYXJ5VGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2li
aWxpdHlUZXh0KHN1bW1hcnksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdW1tYXJ5KSk7CiB9
CiAgICAgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6YWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxhYmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjUsOSArNjUsOSBAQCBzdGF0aWMgYm9vbCBjaGlsZHJlbkNvbnRhaW5Pbmx5U3Rh
dGljVGV4CiAgICAgaWYgKCFjaGlsZHJlbi5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKLSAgICAgICAgaWYgKGNo
aWxkLT5yb2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZSkKKyAgICAgICAgaWYgKGNoaWxkLT5y
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IEdyb3VwUm9sZSkg
eworICAgICAgICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpH
cm91cCkgewogICAgICAgICAgICAgaWYgKCFjaGlsZHJlbkNvbnRhaW5Pbmx5U3RhdGljVGV4dChj
aGlsZC0+Y2hpbGRyZW4oKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9IGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxhYmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGFiZWwuaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlMYWJl
bChSZW5kZXJPYmplY3QqKTsKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3QgZmluYWw7Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gTGFiZWxSb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZh
bHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsOyB9CiAg
ICAgYm9vbCBpc0xhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIFN0cmlu
ZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5l
Y2Vzc2FyeSgpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmlzVW5vcmRlcmVkTGlz
dCgKICAgICAvLyBUaGUgQVJJQSBzcGVjIHNheXMgdGhlICJsaXN0IiByb2xlIGlzIHN1cHBvc2Vk
IHRvIG1pbWljIGEgVUwgb3IgT0wgdGFnLgogICAgIC8vIFNpbmNlIGl0IGNhbid0IGJlIGJvdGgs
IGl0J3MgcHJvYmFibHkgT0sgdG8gc2F5IHRoYXQgaXQncyBhbiB1bi1vcmRlcmVkIGxpc3QuCiAg
ICAgLy8gT24gdGhlIE1hYywgdGhlcmUncyBubyBkaXN0aW5jdGlvbiB0byB0aGUgY2xpZW50Lgot
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IExpc3RSb2xlKQorICAgIGlmIChhcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHVsVGFnKTsK
QEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdDo6aXNPcmRlcmVkTGlzdCgp
IAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBUklBIHNheXMgYSBkaXJlY3Rvcnkg
aXMgbGlrZSBhIHN0YXRpYyB0YWJsZSBvZiBjb250ZW50cywgd2hpY2ggc291bmRzIGxpa2UgYW4g
b3JkZXJlZCBsaXN0LgotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IERpcmVjdG9yeVJv
bGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRp
cmVjdG9yeSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBOb2RlKiBub2RlID0gbV9yZW5k
ZXJlci0+bm9kZSgpOwpAQCAtMTI5LDggKzEyOSw4IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vz
c2liaWxpdHlMaXN0OjpkZXQKICAgICBtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRy
aWJ1dGUoKTsKICAgICAKICAgICAvLyBEaXJlY3RvcnkgaXMgbWFwcGVkIHRvIGxpc3QgZm9yIG5v
dywgYnV0IGRvZXMgbm90IGFkaGVyZSB0byB0aGUgc2FtZSBoZXVyaXN0aWNzLgotICAgIGlmIChh
cmlhUm9sZUF0dHJpYnV0ZSgpID09IERpcmVjdG9yeVJvbGUpCi0gICAgICAgIHJldHVybiBMaXN0
Um9sZTsKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RGlyZWN0b3J5KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q7CiAgICAg
CiAgICAgLy8gSGV1cmlzdGljIHRvIGRldGVybWluZSBpZiB0aGlzIGxpc3QgaXMgYmVpbmcgdXNl
ZCBmb3IgbGF5b3V0IG9yIGZvciBjb250ZW50LgogICAgIC8vICAgMS4gSWYgaXQncyBhIG5hbWVk
IGxpc3QsIGxpa2Ugb2wgb3IgYXJpYT1saXN0LCB0aGVuIGl0J3MgYSBsaXN0LgpAQCAtMTQwLDcg
KzE0MCw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlMaXN0OjpkZXQKICAgICAv
LyAgIDQuIElmIGl0IGRvZXMgbm90IGhhdmUgYW55IGxpc3RpdGVtIGNoaWxkcmVuLCBpdCdzIG5v
dCBhIGxpc3QuCiAgICAgLy8gICA1LiBPdGhlcndpc2UgaXQncyBhIGxpc3QgKGZvciBub3cpLgog
ICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBMaXN0Um9sZTsKKyAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q7CiAgICAgCiAgICAgLy8g
VGVtcG9yYXJpbHkgc2V0IHJvbGUgc28gdGhhdCB3ZSBjYW4gcXVlcnkgY2hpbGRyZW4gKG90aGVy
d2lzZSBjYW5IYXZlQ2hpbGRyZW4gcmV0dXJucyBmYWxzZSkuCiAgICAgbV9yb2xlID0gcm9sZTsK
QEAgLTE1MSwxMiArMTUxLDEyIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlMaXN0
OjpkZXQKICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IHRoaXMtPmNoaWxkcmVuKCk7CiAgICAg
Ly8gRGVzY3JpcHRpb25MaXN0cyBhcmUgYWx3YXlzIHNlbWFudGljYWxseSBhIGRlc2NyaXB0aW9u
IGxpc3QsIHNvIGRvIG5vdCBhcHBseSBoZXVyaXN0aWNzLgogICAgIGlmIChpc0Rlc2NyaXB0aW9u
TGlzdCgpICYmIGNoaWxkcmVuLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIERlc2NyaXB0aW9uTGlz
dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0
OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIGlm
IChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBMaXN0SXRlbVJvbGUpCisgICAgICAgIGlm
IChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0
ZW0pCiAgICAgICAgICAgICBsaXN0SXRlbUNvdW50Kys7Ci0gICAgICAgIGVsc2UgaWYgKGNoaWxk
LT5yb2xlVmFsdWUoKSA9PSBMaXN0SXRlbVJvbGUpIHsKKyAgICAgICAgZWxzZSBpZiAoY2hpbGQt
PnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSkgewogICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBsaXN0SXRlbSA9IGNoaWxkLT5yZW5kZXJlcigpOwogICAgICAgICAg
ICAgaWYgKCFsaXN0SXRlbSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE2OCw3ICsx
NjgsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6ZGV0CiAgICAgICAg
ICAgICAgICAgbGlzdEl0ZW1Db3VudCsrOwogICAgICAgICAgICAgfSBlbHNlIGlmIChsaXN0SXRl
bS0+bm9kZSgpICYmIGxpc3RJdGVtLT5ub2RlKCktPmhhc1RhZ05hbWUobGlUYWcpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gSW5saW5lIGVsZW1lbnRzIHRoYXQgYXJlIGluIGEgbGlzdCB3aXRoIGFu
IGV4cGxpY2l0IHJvbGUgc2hvdWxkIGFsc28gY291bnQuCi0gICAgICAgICAgICAgICAgaWYgKG1f
YXJpYVJvbGUgPT0gTGlzdFJvbGUpCisgICAgICAgICAgICAgICAgaWYgKG1fYXJpYVJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6Okxpc3QpCiAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtQ291
bnQrKzsKIAogICAgICAgICAgICAgICAgIGlmIChjaGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0SXRl
bU1hcmtlcnMobGlzdEl0ZW0pKSB7CkBAIC0xODEsMTggKzE4MSwxOCBAQCBBY2Nlc3NpYmlsaXR5
Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6ZGV0CiAgICAgCiAgICAgLy8gTm9uIDx1bD4gbGlzdHMg
YW5kIEFSSUEgbGlzdHMgb25seSBuZWVkIHRvIGhhdmUgb25lIGNoaWxkLgogICAgIC8vIDx1bD4s
IDxvbD4gbGlzdHMgbmVlZCB0byBoYXZlIHZpc2libGUgbWFya2Vycy4KLSAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkgeworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0
ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKSB7CiAgICAgICAgIGlmICghbGlzdEl0
ZW1Db3VudCkKLSAgICAgICAgICAgIHJvbGUgPSBBcHBsaWNhdGlvbkdyb3VwUm9sZTsKKyAgICAg
ICAgICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cDsKICAgICB9
IGVsc2UgaWYgKCFoYXNWaXNpYmxlTWFya2VycykKLSAgICAgICAgcm9sZSA9IEdyb3VwUm9sZTsK
KyAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsKIAogICAgIHJldHVybiBy
b2xlOwogfQogICAgIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eUxpc3Q6OnJvbGVW
YWx1ZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fcm9sZSAhPSBVbmtub3duUm9sZSk7CisgICAg
QVNTRVJUKG1fcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bik7CiAgICAgcmV0dXJu
IG1fcm9sZTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTYsOSArOTYsOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlMaXN0Qm94Ojpz
ZXRTZWxlY3RlZENoCiAgICAgfQogICAgIAogICAgIGZvciAoY29uc3QgYXV0byYgb2JqIDogY2hp
bGRyZW4pIHsKLSAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgIT0gTGlzdEJveE9wdGlvblJv
bGUpCisgICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0Qm94T3B0aW9uKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCisK
ICAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24+KCpvYmopLnNldFNl
bGVjdGVkKHRydWUpOwogICAgIH0KIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJvCiAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQt
Pmhhc1RhZ05hbWUoaHJUYWcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBsaXN0Qm94T2JqZWN0ID0gKm1fcmVuZGVyZXItPmRvY3VtZW50
KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShMaXN0Qm94T3B0aW9uUm9sZSk7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCYgbGlzdEJveE9iamVjdCA9ICptX3JlbmRlcmVyLT5kb2N1bWVu
dCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RC
b3hPcHRpb24pOwogICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPihsaXN0
Qm94T2JqZWN0KS5zZXRIVE1MRWxlbWVudChlbGVtZW50KTsKICAgICAKICAgICByZXR1cm4gJmxp
c3RCb3hPYmplY3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRD
aGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2VsZWN0ZWRD
aGlsZHJlbihjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMaXN0Qm94Um9s
ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9CiAgICAgICAgIAogICAgIHZvaWQg
c2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsK
ICAgICB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBz
ZXRIVE1MRWxlbWVudChIVE1MRWxlbWVudCogZWxlbWVudCkgeyBtX29wdGlvbkVsZW1lbnQgPSBl
bGVtZW50OyB9CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gTGlzdEJveE9wdGlvblJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEJveE9wdGlvbjsgfQogICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1NlbGVj
dGVkT3B0aW9uQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50
LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE4ICs1
MSwxOCBAQCBSZWY8QWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ+IEFjY2Vzc2liCiBBY2Nlc3Np
YmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6ZGV0ZXJtaW5lQWNjZXNzaWJp
bGl0eVJvbGUoKQogewogICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFVua25v
d25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAKLSAg
ICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtu
b3duUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0
ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIG1fYXJp
YVJvbGU7CiAKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwogICAgIGlmIChu
b2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQotICAgICAgICBy
ZXR1cm4gRG9jdW1lbnRNYXRoUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpEb2N1bWVudE1hdGg7CiAKICAgICAvLyBJdCdzIG5vdCBjbGVhciB3aGljaCByb2xlIGEgcGxh
dGZvcm0gc2hvdWxkIGNob29zZSBmb3IgYSBtYXRoIGVsZW1lbnQuCiAgICAgLy8gRGVjbGFyaW5n
IGEgbWF0aCBlbGVtZW50IHJvbGUgc2hvdWxkIGdpdmUgZmxleGliaWxpdHkgdG8gcGxhdGZvcm1z
IHRvIGNob29zZS4KLSAgICByZXR1cm4gTWF0aEVsZW1lbnRSb2xlOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWF0aEVsZW1lbnQ7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5TWF0
aE1MRWxlbWVudDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVu
dE1vZGUgbW9kZSkgY29uc3QKQEAgLTIwNiw3ICsyMDYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlN
YXRoTUxFbGVtZW50Ojppc01hdGhTCiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHJldHVybiB0eXBlID09IFN1YnNjcmlwdCA/IHRoaXMgPT0gcGFyZW50LT5t
YXRoU3Vic2NyaXB0T2JqZWN0KCkgOiB0aGlzID09IHBhcmVudC0+bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KCk7CisgICAgcmV0dXJuIHR5cGUgPT0gQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RU
eXBlOjpTdWJzY3JpcHQgPyB0aGlzID09IHBhcmVudC0+bWF0aFN1YnNjcmlwdE9iamVjdCgpIDog
dGhpcyA9PSBwYXJlbnQtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgpOwogfQogCiBib29sIEFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmls
aXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB0eXBlKSBjb25zdApAQCAtMjIxLDE2ICsyMjEs
MTYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTQogICAgIC8vIHRo
aXMgdG9rZW4gaXMgcHJlc2VudCBhbmQgaW4gdGhlIHBvc2l0aW9uIGNvcnJlc3BvbmRpbmcgd2l0
aCB0aGUgdHlwZS4KIAogICAgIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyBwYWly
czsKLSAgICBpZiAodHlwZSA9PSBQcmVTdWJzY3JpcHQgfHwgdHlwZSA9PSBQcmVTdXBlcnNjcmlw
dCkKKyAgICBpZiAodHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlw
ZTo6UHJlU3Vic2NyaXB0IHx8IHR5cGUgPT0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9i
amVjdFR5cGU6OlByZVN1cGVyc2NyaXB0KQogICAgICAgICBwYXJlbnQtPm1hdGhQcmVzY3JpcHRz
KHBhaXJzKTsKICAgICBlbHNlCiAgICAgICAgIHBhcmVudC0+bWF0aFBvc3RzY3JpcHRzKHBhaXJz
KTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHBhaXJzKSB7CiAgICAgICAgIGlmICh0
aGlzID09IHBhaXIuZmlyc3QpCi0gICAgICAgICAgICByZXR1cm4gKHR5cGUgPT0gUHJlU3Vic2Ny
aXB0IHx8IHR5cGUgPT0gUG9zdFN1YnNjcmlwdCk7CisgICAgICAgICAgICByZXR1cm4gKHR5cGUg
PT0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlByZVN1YnNjcmlwdCB8
fCB0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vi
c2NyaXB0KTsKICAgICAgICAgaWYgKHRoaXMgPT0gcGFpci5zZWNvbmQpCi0gICAgICAgICAgICBy
ZXR1cm4gKHR5cGUgPT0gUHJlU3VwZXJzY3JpcHQgfHwgdHlwZSA9PSBQb3N0U3VwZXJzY3JpcHQp
OworICAgICAgICAgICAgcmV0dXJuICh0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3Jp
cHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCB8fCB0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRo
TXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3VwZXJzY3JpcHQpOwogICAgIH0KIAogICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCShyZXZpc2lvbiAyMjM5NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE1ICsxNDIsMTUgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9sOjphY2Nlc3NpYgogewogICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9
IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwogICAgIGlmICghZGVzY3JpcHRpb24uaXNFbXB0
eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaXB0
aW9uLCBBbHRlcm5hdGl2ZVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3Np
YmlsaXR5VGV4dChkZXNjcmlwdGlvbiwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0
aXZlKSk7CiAKICAgICBTdHJpbmcgdGl0bGUgPSB0aGlzLT50aXRsZSgpOwogICAgIGlmICghdGl0
bGUuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0
KHRpdGxlLCBBbHRlcm5hdGl2ZVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nl
c3NpYmlsaXR5VGV4dCh0aXRsZSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZl
KSk7CiAKICAgICBTdHJpbmcgaGVscHRleHQgPSBoZWxwVGV4dCgpOwogICAgIGlmICghaGVscHRl
eHQuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0
KGhlbHB0ZXh0LCBIZWxwVGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2li
aWxpdHlUZXh0KGhlbHB0ZXh0LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCkpOwogfQog
ICAgIAogCkBAIC0xOTcsMjMgKzE5NywyMiBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5TWVkaWFDb250CiAgICAgY2FzZSBNZWRpYVBhdXNlQnV0dG9uOgogICAgIGNhc2UgTWVkaWFT
aG93Q2xvc2VkQ2FwdGlvbnNCdXR0b246CiAgICAgY2FzZSBNZWRpYUhpZGVDbG9zZWRDYXB0aW9u
c0J1dHRvbjoKLSAgICAgICAgcmV0dXJuIEJ1dHRvblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6QnV0dG9uOwogCiAgICAgY2FzZSBNZWRpYVN0YXR1c0Rpc3BsYXk6Ci0g
ICAgICAgIHJldHVybiBTdGF0aWNUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpTdGF0aWNUZXh0OwogCiAgICAgY2FzZSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOgot
ICAgICAgICByZXR1cm4gR3JvdXBSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6Okdyb3VwOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
cmV0dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93
bjsKIH0KIAogCi0KIC8vCiAvLyBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sc0NvbnRhaW5lcgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9scy5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJp
bGl0eU9iamVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2li
aWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyKCkgPSBkZWZhdWx0OwogCi0gICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVG9vbGJhclJvbGU7
IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjsgfQogCiAgICAgU3RyaW5nIGhlbHBUZXh0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVh
bCB+QWNjZXNzaWJpbGl0eU1lZGlhVGltZURpc3BsYXkoKSA9IGRlZmF1bHQ7CiAKLSAgICBBY2Nl
c3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBcHBsaWNh
dGlvblRpbWVyUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOyB9
CiAKICAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcg
YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3Qu
Y3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxkcmVuKAogICAgIGlmICghY2FjaGUp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0ID0g
Y2FjaGUtPmdldE9yQ3JlYXRlKE1lbnVMaXN0UG9wdXBSb2xlKTsKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBsaXN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
TGlzdFBvcHVwKTsKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dC5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0KFJlbmRlck1lbnVMaXN0
Kik7CiAKICAgICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gUG9wVXBCdXR0b25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
OyB9CiAgICAgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5o
CShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBNZW51TGlzdE9wdGlvblJvbGU7IH0KKyAgICBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUxpc3RPcHRpb247IH0KICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAkocmV2aXNpb24g
MjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uKiBBY2Nlc3NpYmlsaQogICAgIGlmICghaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KGVsZW1lbnQpIHx8ICFlbGVtZW50LT5pblJlbmRlcmVkRG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvJiBvcHRpb24gPSBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb24+KCpkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKE1lbnVMaXN0T3B0aW9uUm9sZSkpOworICAgIGF1dG8mIG9wdGlvbiA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbj4oKmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0T3B0aW9uKSk7CiAgICAg
b3B0aW9uLnNldEVsZW1lbnQoZWxlbWVudCk7CiAKICAgICByZXR1cm4gJm9wdGlvbjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwLmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaAkod29ya2luZyBjb3B5KQpA
QCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQotICAgIEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lbnVMaXN0UG9w
dXBSb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0UG9wdXA7IH0KIAogICAgIGJv
b2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBwcmVzcygpIG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MywxMSArODMsNiBAQCBzdGF0aWMgU3RyaW5nIGFjY2Vzc2libGVOYW1lRm9yTm9k
ZShOb2RlCiAKIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dChOb2RlKiBub2RlKQogICAgIDogQWNjZXNzaWJpbGl0eU9iamVjdCgpCi0gICAgLCBtX2FyaWFS
b2xlKFVua25vd25Sb2xlKQotICAgICwgbV9yb2xlRm9yTVNBQShVbmtub3duUm9sZSkKLSNpZm5k
ZWYgTkRFQlVHCi0gICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQotI2VuZGlmCiAgICAgLCBtX25v
ZGUobm9kZSkKIHsKIH0KQEAgLTI4Miw1NyArMjc3LDU3IEBAIERvY3VtZW50KiBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6ZG9jdW0KIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiB7CiAgICAgaWYgKCFub2RlKCkp
Ci0gICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJv
bGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKChtX2FyaWFSb2xlID0gZGV0
ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24p
CiAgICAgICAgIHJldHVybiBtX2FyaWFSb2xlOwogICAgIAogICAgIGlmIChub2RlKCktPmlzTGlu
aygpKQotICAgICAgICByZXR1cm4gV2ViQ29yZUxpbmtSb2xlOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOwogICAgIGlmIChub2RlKCktPmlzVGV4dE5vZGUo
KSkKLSAgICAgICAgcmV0dXJuIFN0YXRpY1RleHRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShidXR0
b25UYWcpKQogICAgICAgICByZXR1cm4gYnV0dG9uUm9sZVR5cGUoKTsKICAgICBpZiAoaXM8SFRN
TElucHV0RWxlbWVudD4oKm5vZGUoKSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSgpKTsKICAgICAgICAgaWYgKGlu
cHV0LmlzQ2hlY2tib3goKSkKLSAgICAgICAgICAgIHJldHVybiBDaGVja0JveFJvbGU7CisgICAg
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OwogICAgICAgICBpZiAo
aW5wdXQuaXNSYWRpb0J1dHRvbigpKQotICAgICAgICAgICAgcmV0dXJuIFJhZGlvQnV0dG9uUm9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b247CiAg
ICAgICAgIGlmIChpbnB1dC5pc1RleHRCdXR0b24oKSkKICAgICAgICAgICAgIHJldHVybiBidXR0
b25Sb2xlVHlwZSgpOwogICAgICAgICBpZiAoaW5wdXQuaXNSYW5nZUNvbnRyb2woKSkKLSAgICAg
ICAgICAgIHJldHVybiBTbGlkZXJSb2xlOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpTbGlkZXI7CiAgICAgICAgIGlmIChpbnB1dC5pc0lucHV0VHlwZUhpZGRlbigpKQot
ICAgICAgICAgICAgcmV0dXJuIElnbm9yZWRSb2xlOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpJZ25vcmVkOwogICAgICAgICBpZiAoaW5wdXQuaXNTZWFyY2hGaWVsZCgp
KQotICAgICAgICAgICAgcmV0dXJuIFNlYXJjaEZpZWxkUm9sZTsKKyAgICAgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCiAgICAgICAgIGlmIChpbnB1dC5pc0NvbG9yQ29udHJvbCgpKQotICAgICAgICAgICAg
cmV0dXJuIENvbG9yV2VsbFJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbG9yV2VsbDsKICNlbmRpZgotICAgICAgICByZXR1cm4gVGV4dEZpZWxkUm9sZTsKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAgICAgfQogICAgIGlm
IChub2RlKCktPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewogICAgICAgICBIVE1MU2VsZWN0RWxl
bWVudCYgc2VsZWN0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqbm9kZSgp
KTsKLSAgICAgICAgcmV0dXJuIHNlbGVjdEVsZW1lbnQubXVsdGlwbGUoKSA/IExpc3RCb3hSb2xl
IDogUG9wVXBCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4gc2VsZWN0RWxlbWVudC5tdWx0aXBs
ZSgpID8gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3ggOiBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9w
VXBCdXR0b247CiAgICAgfQogICAgIGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50Pigqbm9kZSgp
KSkKLSAgICAgICAgcmV0dXJuIFRleHRBcmVhUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpUZXh0QXJlYTsKICAgICBpZiAoaGVhZGluZ0xldmVsKCkpCi0gICAgICAgIHJl
dHVybiBIZWFkaW5nUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFk
aW5nOwogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZykpCi0gICAgICAg
IHJldHVybiBCbG9ja3F1b3RlUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpCbG9ja3F1b3RlOwogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoZGl2VGFnKSkKLSAgICAg
ICAgcmV0dXJuIERpdlJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6RGl2
OwogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUocFRhZykpCi0gICAgICAgIHJldHVybiBQYXJh
Z3JhcGhSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaDsK
ICAgICBpZiAoaXM8SFRNTExhYmVsRWxlbWVudD4oKm5vZGUoKSkpCi0gICAgICAgIHJldHVybiBM
YWJlbFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFiZWw7CiAgICAg
aWYgKGlzPEVsZW1lbnQ+KCpub2RlKCkpICYmIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKCkpLmlz
Rm9jdXNhYmxlKCkpCi0gICAgICAgIHJldHVybiBHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAgICAgCi0gICAgcmV0dXJuIFVua25vd25Sb2xlOwor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIH0KIAogdm9pZCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6YWRkQ2hpbGRyZW4oKQpAQCAtMzcwLDIzICszNjUsMjMgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2FuSGF2ZUNoaQogICAgIAogICAgIC8vIEVsZW1l
bnRzIHRoYXQgc2hvdWxkIG5vdCBoYXZlIGNoaWxkcmVuCiAgICAgc3dpdGNoIChyb2xlVmFsdWUo
KSkgewotICAgIGNhc2UgSW1hZ2VSb2xlOgotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNl
IFBvcFVwQnV0dG9uUm9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIFJhZGlv
QnV0dG9uUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xl
OgotICAgIGNhc2UgU3RhdGljVGV4dFJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToK
LSAgICBjYXNlIFNjcm9sbEJhclJvbGU6Ci0gICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6
Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6Ci0g
ICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIFNwbGl0dGVyUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UmFkaW9CdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RC
b3hPcHRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW86Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RG9jdW1lbnRNYXRoOgogI2lmIEVOQUJMRShNQVRITUwpCiAgICAgICAgIHJldHVybiBub2Rl
KCktPmlzTWF0aE1MRWxlbWVudCgpOwogI2VuZGlmCkBAIC00MTcsMTggKzQxMiwxOCBAQCBib29s
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb21wdXRlQWNjCiAgICAgfQogCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24o
KTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24g
PT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCisgICAgaWYg
KGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgLy8gSWYgdGhpcyBlbGVtZW50IGlzIHdpdGhpbiBh
IHBhcmVudCB0aGF0IGNhbm5vdCBoYXZlIGNoaWxkcmVuLCBpdCBzaG91bGQgbm90IGJlIGV4cG9z
ZWQuCiAgICAgaWYgKGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IElnbm9yZWRSb2xlKQorICAgIGlmIChy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCi0gICAgcmV0dXJuIG1fcm9sZSA9PSBVbmtub3duUm9sZTsKKyAgICByZXR1
cm4gbV9yb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogfQogCiBib29sIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdApAQCAt
NDcxLDcgKzQ2Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzU2VhcmNoRmkK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChyb2xlVmFs
dWUoKSA9PSBTZWFyY2hGaWVsZFJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTZWFyY2hGaWVsZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAo
IWlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKSkKQEAgLTUxOCw3ICs1MTMsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc05hdGl2ZUltCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmlzSW1hZ2UoKSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBJ
bWFnZVJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpJ
bWFnZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQYXNzd29yZEZpZWxk
KCkgY29uc3QKQEAgLTUyNyw3ICs1MjIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojppc1Bhc3N3b3JkCiAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93
blJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlVua25vd24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50Pigqbm9kZSkuaXNQYXNzd29yZEZpZWxkKCk7CkBAIC01NTUsNyArNTUw
LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYgogYm9vbCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNJbnB1dEltYWdlKCkgY29uc3QKIHsKICAgICBOb2RlKiBu
b2RlID0gdGhpcy0+bm9kZSgpOwotICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSAm
JiByb2xlVmFsdWUoKSA9PSBCdXR0b25Sb2xlKSB7CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1l
bnQ+KG5vZGUpICYmIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pIHsK
ICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Pigqbm9kZSk7CiAgICAgICAgIHJldHVybiBpbnB1dC5pc0ltYWdlQnV0dG9uKCk7CiAgICAg
fQpAQCAtNTY1LDIzICs1NjAsMjMgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNJ
bnB1dEltYQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Byb2dyZXNzSW5kaWNh
dG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gUHJvZ3Jlc3NJbmRpY2F0
b3JSb2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJv
Z3Jlc3NJbmRpY2F0b3I7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzU2xp
ZGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU2xpZGVyUm9sZTsKKyAg
ICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51UmVsYXRlZCgpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgTWVudVJvbGU6Ci0gICAgY2FzZSBN
ZW51QmFyUm9sZToKLSAgICBjYXNlIE1lbnVCdXR0b25Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1S
b2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJh
ZGlvUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW86CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5MCwyNSArNTg1LDI1IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudVJlbGEKIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNNZW51KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTWVu
dVJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
OwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVCYXIoKSBjb25zdAog
ewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBNZW51QmFyUm9sZTsKKyAgICByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI7CiB9CiAKIGJvb2wgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUJ1dHRvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IE1lbnVCdXR0b25Sb2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNNZW51SXRlbSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkg
ewotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0g
ICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzNiw3
ICs2MzEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0VuYWJsZWQoCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IEhvcml6
b250YWxSdWxlUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
Okhvcml6b250YWxSdWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgTm9kZSog
bm9kZSA9IHRoaXMtPm5vZGUoKTsKQEAgLTY4MiwxMiArNjc3LDEyIEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzQ2hlY2tlZCgKICAgICAvLyBFbHNlLCBpZiB0aGlzIGlzIGFuIEFS
SUEgY2hlY2tib3ggb3IgcmFkaW8sIHJlc3BlY3QgdGhlIGFyaWEtY2hlY2tlZCBhdHRyaWJ1dGUK
ICAgICBib29sIHZhbGlkUm9sZSA9IGZhbHNlOwogICAgIHN3aXRjaCAoYXJpYVJvbGVBdHRyaWJ1
dGUoKSkgewotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgIGNhc2UgQ2hlY2tCb3hSb2xl
OgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIFN3aXRjaFJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlN3aXRjaDoKICAgICAgICAgdmFsaWRSb2xlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKQEAgLTczNiwyNiArNzMxLDI2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmlzUmVxdWlyZWQKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnN1cHBv
cnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkp
IHsKLSAgICBjYXNlIEJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0
dG9uOgogICAgICAgICByZXR1cm4gaXNGaWxlVXBsb2FkQnV0dG9uKCk7Ci0gICAgY2FzZSBDZWxs
Um9sZToKLSAgICBjYXNlIENvbHVtbkhlYWRlclJvbGU6Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6
Ci0gICAgY2FzZSBDb21ib0JveFJvbGU6Ci0gICAgY2FzZSBHcmlkUm9sZToKLSAgICBjYXNlIEdy
aWRDZWxsUm9sZToKLSAgICBjYXNlIEluY3JlbWVudG9yUm9sZToKLSAgICBjYXNlIExpc3RCb3hS
b2xlOgotICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xl
OgotICAgIGNhc2UgUmFkaW9Hcm91cFJvbGU6Ci0gICAgY2FzZSBSb3dIZWFkZXJSb2xlOgotICAg
IGNhc2UgU2xpZGVyUm9sZToKLSAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgotICAgIGNhc2UgVGFi
bGVIZWFkZXJDb250YWluZXJSb2xlOgotICAgIGNhc2UgVGV4dEFyZWFSb2xlOgotICAgIGNhc2Ug
VGV4dEZpZWxkUm9sZToKLSAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q2VsbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5I
ZWFkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbDoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbmNyZW1lbnRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpMaXN0Qm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlJhZGlvR3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVh
ZGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRh
YmxlSGVhZGVyQ29udGFpbmVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVh
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc5NSw3ICs3OTAsNyBAQCBpbnQgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlYWRpbmdMZXZlCiAKICAgICAvLyBUaGUgaW1wbGljaXQg
dmFsdWUgb2YgYXJpYS1sZXZlbCBpcyAyIGZvciB0aGUgaGVhZGluZyByb2xlLgogICAgIC8vIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2hlYWRpbmcKLSAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBIZWFkaW5nUm9sZSkKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZykKICAgICAgICAgcmV0dXJuIDI7CiAKICAg
ICByZXR1cm4gMDsKQEAgLTg3NiwxMiArODcxLDEyIEBAIGZsb2F0IEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjpzdGVwVmFsdWUKIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNIZWFk
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gSGVhZGluZ1JvbGU7Cisg
ICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOwogfQog
CiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0xpbmsoKSBjb25zdAogewotICAgIHJl
dHVybiByb2xlVmFsdWUoKSA9PSBXZWJDb3JlTGlua1JvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazsKIH0KIAogYm9vbCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNDb250cm9sKCkgY29uc3QKQEAgLTkwNSw3ICs5MDAsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0ZpZWxkc2V0CiBib29sIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojppc0dyb3VwKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgcmV0dXJuIHJvbGUgPT0gR3JvdXBSb2xlIHx8IHJvbGUg
PT0gVGV4dEdyb3VwUm9sZSB8fCByb2xlID09IEFwcGxpY2F0aW9uR3JvdXBSb2xlIHx8IHJvbGUg
PT0gQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlOworICAgIHJldHVybiByb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAg
fHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCB8fCByb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cDsKIH0KIAogQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkUmFkaW9CdXR0b24o
KQpAQCAtOTE1LDcgKzkxMCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlO
b2RlT2IKIAogICAgIC8vIEZpbmQgdGhlIGNoaWxkIHJhZGlvIGJ1dHRvbiB0aGF0IGlzIHNlbGVj
dGVkIChpZS4gdGhlIGludFZhbHVlID09IDEpLgogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQg
OiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gUmFkaW9C
dXR0b25Sb2xlICYmIGNoaWxkLT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpID09IEJ1dHRvblN0YXRl
T24pCisgICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlJhZGlvQnV0dG9uICYmIGNoaWxkLT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlCdXR0b25TdGF0ZTo6T24pCiAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CiAg
ICAgfQogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTQxLDcgKzkzNiw3IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2IKIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdAogewog
ICAgIGlmIChpc05hdGl2ZUNoZWNrYm94T3JSYWRpbygpKQotICAgICAgICByZXR1cm4gaXNJbmRl
dGVybWluYXRlKCkgPyBCdXR0b25TdGF0ZU1peGVkIDogaXNDaGVja2VkKCkgPyBCdXR0b25TdGF0
ZU9uIDogQnV0dG9uU3RhdGVPZmY7CisgICAgICAgIHJldHVybiBpc0luZGV0ZXJtaW5hdGUoKSA/
IEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4ZWQgOiBpc0NoZWNrZWQoKSA/IEFjY2Vzc2li
aWxpdHlCdXR0b25TdGF0ZTo6T24gOiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjsKIAog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjaGVja2JveE9yUmFkaW9WYWx1ZSgpOwog
fQpAQCAtMTAwOCwxNCArMTAwMywxNCBAQCBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YWN0aW9uCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKIAogICAg
IHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBQ
b3BVcEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgotICAgIGNhc2UgVGFi
Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hS
b2xlOgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBMaXN0SXRlbVJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2ds
ZUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlv
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgogICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgYXV0aG9yIGlzIGhpZGluZyB0aGUgcmVhbCBjb250cm9sIGVsZW1lbnQgaW5zaWRl
IHRoZSBBUklBIGVsZW1lbnQuCiAgICAgICAgIGlmIChFbGVtZW50KiBuYXRpdmVFbGVtZW50ID0g
bmF0aXZlQWN0aW9uRWxlbWVudChub2RlKSkKICAgICAgICAgICAgIHJldHVybiBuYXRpdmVFbGVt
ZW50OwpAQCAtMTA2Niw3ICsxMDYxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aXNEZXNjZW5kYQogCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlclNsaWRlclZh
bHVlKGJvb2wgaW5jcmVhc2UpCiB7Ci0gICAgaWYgKHJvbGVWYWx1ZSgpICE9IFNsaWRlclJvbGUp
CisgICAgaWYgKHJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXIpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghZ2V0QXR0cmlidXRlKHN0ZXBBdHRyKS5pc0VtcHR5KCkp
CkBAIC0xMTI1LDExICsxMTIwLDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
R2VuZXJpY0YKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKLSAgICBpZiAocm9sZSA9PSBWaWRlb1JvbGUgfHwgcm9s
ZSA9PSBBdWRpb1JvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlZpZGVv
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkF1ZGlvKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBJZiBpdCBoYXMgYW4gYXJpYSByb2xlLCBpdCdzIG5vdCBnZW5lcmljLgot
ICAgIGlmIChtX2FyaWFSb2xlICE9IFVua25vd25Sb2xlKQorICAgIGlmIChtX2FyaWFSb2xlICE9
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBJZiB0aGUgY29udGVudCBlZGl0YWJsZSBhdHRyaWJ1dGUgaXMgc2V0IG9uIHRoaXMgZWxl
bWVudCwgdGhhdCdzIHRoZSByZWFzb24KQEAgLTExNDEsMTQgKzExMzYsMTQgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5lcmljRgogCiAgICAgLy8gVGhlIHdlYiBhcmVhIGFu
ZCBib2R5IGVsZW1lbnQgYXJlIGJvdGggZm9jdXNhYmxlLCBidXQgZXhpc3RpbmcgbG9naWMgaGFu
ZGxlcyB0aGVzZQogICAgIC8vIGNhc2VzIGFscmVhZHksIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5j
bHVkZSB0aGVtIGhlcmUuCi0gICAgaWYgKHJvbGUgPT0gV2ViQXJlYVJvbGUpCisgICAgaWYgKHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAobm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShib2R5VGFnKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQW4gU1ZHIHJvb3QgaXMgZm9jdXNhYmxlIGJ5IGRlZmF1
bHQsIGJ1dCBpdCdzIHByb2JhYmx5IG5vdCBpbnRlcmFjdGl2ZSwgc28gZG9uJ3QKICAgICAvLyBp
bmNsdWRlIGl0LiBJdCBjYW4gc3RpbGwgYmUgbWFkZSBhY2Nlc3NpYmxlIGJ5IGdpdmluZyBpdCBh
biBBUklBIHJvbGUuCi0gICAgaWYgKHJvbGUgPT0gU1ZHUm9vdFJvbGUpCisgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1Jvb3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTE5OSw3ICsxMTk0LDcgQEAgc3RhdGljIEVsZW1lbnQqIHNp
YmxpbmdXaXRoQXJpYVJvbGUoTm9kZQogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6bWVudUVsZW1lbnRGb3JNZW51QnV0dG9uKCkgY29uc3QKIHsKLSAgICBpZiAoYXJpYVJvbGVB
dHRyaWJ1dGUoKSAhPSBNZW51QnV0dG9uUm9sZSkKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUo
KSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICByZXR1cm4gc2libGluZ1dpdGhBcmlhUm9sZShub2RlKCksICJtZW51Iik7CkBA
IC0xMjE0LDcgKzEyMDksNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iCiAKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjptZW51SXRlbUVsZW1lbnRG
b3JNZW51KCkgY29uc3QKIHsKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBNZW51Um9s
ZSkKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0dXJuIHNpYmxpbmdXaXRo
QXJpYVJvbGUobm9kZSgpLCAibWVudWl0ZW0iKTsKQEAgLTEyOTgsMTUgKzEyOTMsMTUgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGVFbGVtZQogICAgICAgICAgICAgU3RyaW5n
IGlubmVyVGV4dCA9IHRleHRGb3JMYWJlbEVsZW1lbnQobGFiZWwpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBPbmx5IHVzZSB0aGUgPGxhYmVsPiB0ZXh0IGlmIHRoZXJlJ3Mgbm8gQVJJ
QSBvdmVycmlkZS4KLSAgICAgICAgICAgIGlmICghaW5uZXJUZXh0LmlzRW1wdHkoKSAmJiAhYXJp
YUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpKQotICAgICAgICAgICAgICAgIHRleHRPcmRlci5h
cHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaW5uZXJUZXh0LCBpc01ldGVyKCkgPyBBbHRlcm5hdGl2
ZVRleHQgOiBMYWJlbEJ5RWxlbWVudFRleHQsIGxhYmVsT2JqZWN0KSk7CisgICAgICAgICAgICBp
ZiAobGFiZWxPYmplY3QgJiYgIWlubmVyVGV4dC5pc0VtcHR5KCkgJiYgIWFyaWFBY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb24oKSkKKyAgICAgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vz
c2liaWxpdHlUZXh0KGlubmVyVGV4dCwgaXNNZXRlcigpID8gQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2U6OkFsdGVybmF0aXZlIDogQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkxhYmVsQnlFbGVtZW50
LCAqbGFiZWxPYmplY3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCA9IHRoaXMtPnRp
dGxlVUlFbGVtZW50KCk7CiAgICAgaWYgKHRpdGxlVUlFbGVtZW50KQotICAgICAgICB0ZXh0T3Jk
ZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KFN0cmluZygpLCBMYWJlbEJ5RWxlbWVudFRleHQs
IHRpdGxlVUlFbGVtZW50KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoU3RyaW5nKCksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCwg
KnRpdGxlVUlFbGVtZW50KSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFs
dGVybmF0aXZlVGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0T3JkZXIpIGNvbnN0
CkBAIC0xMzE0LDcgKzEzMDksNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRl
cm5hdGl2CiAgICAgaWYgKGlzV2ViQXJlYSgpKSB7CiAgICAgICAgIFN0cmluZyB3ZWJBcmVhVGV4
dCA9IGFsdGVybmF0aXZlVGV4dEZvcldlYkFyZWEoKTsKICAgICAgICAgaWYgKCF3ZWJBcmVhVGV4
dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlU
ZXh0KHdlYkFyZWFUZXh0LCBBbHRlcm5hdGl2ZVRleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQod2ViQXJlYVRleHQsIEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAt
MTMyMiw3ICsxMzE3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRp
dgogICAgIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUxhYmVsID0gZ2V0QXR0cmlidXRl
KGFyaWFfbGFiZWxBdHRyKTsKICAgICBpZiAoIWFyaWFMYWJlbC5pc0VtcHR5KCkpCi0gICAgICAg
IHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYXJpYUxhYmVsLCBBbHRlcm5hdGl2
ZVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlh
TGFiZWwsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAgIAogICAg
IGlmICh1c2VzQWx0VGFnRm9yVGV4dENvbXB1dGF0aW9uKCkpIHsKICAgICAgICAgaWYgKGlzPFJl
bmRlckltYWdlPihyZW5kZXJlcigpKSkgewpAQCAtMTMzMCw3ICsxMzI1LDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdgogCiAgICAgICAgICAgICAvLyBSZW5kZXJJ
bWFnZSB3aWxsIHJldHVybiB0aXRsZSBhcyBhIGZhbGxiYWNrIGZyb20gYWx0VGV4dCwgYnV0IHdl
IGRvbid0IHdhbnQgdGl0bGUgaGVyZSBiZWNhdXNlIHdlIGNvbnNpZGVyIHRoYXQgaW4gaGVscFRl
eHQuCiAgICAgICAgICAgICBpZiAoIXJlbmRlckFsdFRleHQuaXNFbXB0eSgpICYmIHJlbmRlckFs
dFRleHQgIT0gZ2V0QXR0cmlidXRlKHRpdGxlQXR0cikpIHsKLSAgICAgICAgICAgICAgICB0ZXh0
T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHJlbmRlckFsdFRleHQsIEFsdGVybmF0aXZl
VGV4dCkpOworICAgICAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQocmVuZGVyQWx0VGV4dCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
MzM4LDcgKzEzMzMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2
CiAgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgc2hvdWxkIGZhbGxiYWNrIHRvIG90aGVyIG1ldGhv
ZHMsIGxpa2UgdGhlIHRpdGxlIGF0dHJpYnV0ZS4KICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhbHQgPSBnZXRBdHRyaWJ1dGUoYWx0QXR0cik7CiAgICAgICAgIGlmICghYWx0LmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWx0LCBB
bHRlcm5hdGl2ZVRleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJp
bGl0eVRleHQoYWx0LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAg
ICB9CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKQEAgLTEzNDksMjMgKzEz
NDQsMjMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdgogICAgIGlm
IChpczxIVE1MRmllbGRTZXRFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShkb3duY2FzdDxI
VE1MRmllbGRTZXRFbGVtZW50Pigqbm9kZSkubGVnZW5kKCkpOwogICAgICAgICBpZiAob2JqZWN0
ICYmICFvYmplY3QtPmlzSGlkZGVuKCkpCi0gICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFj
Y2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2libGVOYW1lRm9yTm9kZShvYmplY3QtPm5vZGUoKSksIEFs
dGVybmF0aXZlVGV4dCkpOworICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmls
aXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUob2JqZWN0LT5ub2RlKCkpLCBBY2Nlc3NpYmls
aXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAgICB9CiAgICAgCiAgICAgLy8gVGhlIGZp
Z3VyZSBlbGVtZW50IGRlcml2ZXMgaXRzIGFsdGVybmF0aXZlIHRleHQgZnJvbSB0aGUgZmlyc3Qg
YXNzb2NpYXRlZCBmaWdjYXB0aW9uIGVsZW1lbnQgaWYgb25lIGlzIGF2YWlsYWJsZS4KICAgICBp
ZiAoaXNGaWd1cmVFbGVtZW50KCkpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2Fw
dGlvbkZvckZpZ3VyZSA9IHRoaXMtPmNhcHRpb25Gb3JGaWd1cmUoKTsKICAgICAgICAgaWYgKGNh
cHRpb25Gb3JGaWd1cmUgJiYgIWNhcHRpb25Gb3JGaWd1cmUtPmlzSGlkZGVuKCkpCi0gICAgICAg
ICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2libGVOYW1lRm9y
Tm9kZShjYXB0aW9uRm9yRmlndXJlLT5ub2RlKCkpLCBBbHRlcm5hdGl2ZVRleHQpKTsKKyAgICAg
ICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJsZU5hbWVG
b3JOb2RlKGNhcHRpb25Gb3JGaWd1cmUtPm5vZGUoKSksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNl
OjpBbHRlcm5hdGl2ZSkpOwogICAgIH0KICAgICAKICAgICAvLyBUcmVlIGl0ZW1zIG1pc3Npbmcg
YSBsYWJlbCBhcmUgbGFiZWxlZCBieSBhbGwgY2hpbGQgZWxlbWVudHMuCiAgICAgaWYgKGlzVHJl
ZUl0ZW0oKSAmJiBhcmlhTGFiZWwuaXNFbXB0eSgpICYmIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUo
KS5pc0VtcHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQo
YWNjZXNzaWJsZU5hbWVGb3JOb2RlKG5vZGUpLCBBbHRlcm5hdGl2ZVRleHQpKTsKKyAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUo
bm9kZSksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAgIAogI2lm
IEVOQUJMRShNQVRITUwpCiAgICAgaWYgKG5vZGUtPmlzTWF0aE1MRWxlbWVudCgpKQotICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGdldEF0dHJpYnV0ZShNYXRoTUxO
YW1lczo6YWx0dGV4dEF0dHIpLCBBbHRlcm5hdGl2ZVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVy
LmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmFsdHRl
eHRBdHRyKSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAjZW5kaWYK
IH0KIApAQCAtMTM3OSw3ICsxMzc0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
dmlzaWJsZVRleAogICAgIGlmIChpc0lucHV0VGFnKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwogICAgICAgICBp
ZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpIHsKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQo
QWNjZXNzaWJpbGl0eVRleHQoaW5wdXQudmFsdWVXaXRoRGVmYXVsdCgpLCBWaXNpYmxlVGV4dCkp
OworICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChpbnB1dC52
YWx1ZVdpdGhEZWZhdWx0KCksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpWaXNpYmxlKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzkxLDI2ICsxMzg2LDI2
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2libGVUZXgKICAgICBib29sIHVz
ZVRleHRVbmRlckVsZW1lbnQgPSBmYWxzZTsKICAgICAKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgp
KSB7Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UG9wVXBCdXR0b246CiAgICAgICAgIC8vIE5hdGl2ZSBwb3B1cCBidXR0b25zIHNob3VsZCBu
b3QgdXNlIHRoZWlyIGJ1dHRvbiBjaGlsZHJlbidzIHRleHQgYXMgYSB0aXRsZS4gVGhhdCB2YWx1
ZSBpcyByZXRyaWV2ZWQgdGhyb3VnaCBzdHJpbmdWYWx1ZSgpLgogICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShzZWxlY3RUYWcpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIEZBTExU
SFJPVUdIOwotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6
Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VG9nZ2xlQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb246CiAgICAgLy8gTWFj
T1MgZG9lcyBub3QgZXhwZWN0IG5hdGl2ZSA8bGk+IGVsZW1lbnRzIHRvIGV4cG9zZSBsYWJlbCBp
bmZvcm1hdGlvbiwgaXQgb25seSBleHBlY3RzIGxlYWYgbm9kZSBlbGVtZW50cyB0byBkbyB0aGF0
LgogI2lmICFQTEFURk9STShDT0NPQSkKLSAgICBjYXNlIExpc3RJdGVtUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKICNlbmRpZgotICAgIGNhc2UgTWVudUJ1dHRv
blJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94
Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25S
b2xlOgotICAgIGNhc2UgU3dpdGNoUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW86CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3dpdGNoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKICAgICAgICAgdXNl
VGV4dFVuZGVyRWxlbWVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBA
IC0xNDM0LDcgKzE0MjksNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2aXNpYmxl
VGV4CiAKICAgICAgICAgU3RyaW5nIHRleHQgPSB0ZXh0VW5kZXJFbGVtZW50KG1vZGUpOwogICAg
ICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChB
Y2Nlc3NpYmlsaXR5VGV4dCh0ZXh0LCBDaGlsZHJlblRleHQpKTsKKyAgICAgICAgICAgIHRleHRP
cmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGV4dCwgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2U6OkNoaWxkcmVuKSk7CiAgICAgfQogfQogCkBAIC0xNDQyLDI4ICsxNDM3LDI4IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlbHBUZXh0KFYKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGFyaWFIZWxwID0gZ2V0QXR0cmlidXRlKGFyaWFfaGVscEF0dHIpOwogICAgIGlmICgh
YXJpYUhlbHAuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxp
dHlUZXh0KGFyaWFIZWxwLCBIZWxwVGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFj
Y2Vzc2liaWxpdHlUZXh0KGFyaWFIZWxwLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCkp
OwogICAgIAogICAgIFN0cmluZyBkZXNjcmliZWRCeSA9IGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0
ZSgpOwogICAgIGlmICghZGVzY3JpYmVkQnkuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0T3JkZXIu
YXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaWJlZEJ5LCBTdW1tYXJ5VGV4dCkpOworICAg
ICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaWJlZEJ5LCBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogCiAgICAgLy8gU3VtbWFyeSBhdHRyaWJ1
dGUgdXNlZCBhcyBoZWxwIHRleHQgb24gdGFibGVzLgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
c3VtbWFyeSA9IGdldEF0dHJpYnV0ZShzdW1tYXJ5QXR0cik7CiAgICAgaWYgKCFzdW1tYXJ5Lmlz
RW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChzdW1t
YXJ5LCBTdW1tYXJ5VGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxp
dHlUZXh0KHN1bW1hcnksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdW1tYXJ5KSk7CiAKICAg
ICAvLyBUaGUgdGl0bGUgYXR0cmlidXRlIHNob3VsZCBiZSB1c2VkIGFzIGhlbHAgdGV4dCB1bmxl
c3MgaXQgaXMgYWxyZWFkeSBiZWluZyB1c2VkIGFzIGRlc2NyaXB0aXZlIHRleHQuCiAgICAgLy8g
SG93ZXZlciwgd2hlbiB0aGUgdGl0bGUgYXR0cmlidXRlIGlzIHRoZSBvbmx5IHRleHQgYWx0ZXJu
YXRpdmUgcHJvdmlkZWQsIGl0IG1heSBiZSBleHBvc2VkIGFzIHRoZQogICAgIC8vIGRlc2NyaXB0
aXZlIHRleHQuIFRoaXMgaXMgcHJvYmxlbWF0aWMgaW4gdGhlIGNhc2Ugb2YgbWV0ZXJzIGJlY2F1
c2UgdGhlIEhUTUwgc3BlYyBzdWdnZXN0cyBhdXRob3JzCiAgICAgLy8gY2FuIGV4cG9zZSB1bml0
cyB0aHJvdWdoIHRoaXMgYXR0cmlidXRlLiBUaGVyZWZvcmUsIGlmIHRoZSBlbGVtZW50IGlzIGEg
bWV0ZXIsIGNoYW5nZSBpdHMgc291cmNlCi0gICAgLy8gdHlwZSB0byBIZWxwVGV4dC4KKyAgICAv
LyB0eXBlIHRvIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwLgogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdGl0bGUgPSBnZXRBdHRyaWJ1dGUodGl0bGVBdHRyKTsKICAgICBpZiAoIXRpdGxl
LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoIWlzTWV0ZXIoKSAmJiAhcm9sZUlnbm9yZXNUaXRs
ZSgpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRs
ZSwgVGl0bGVUYWdUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2li
aWxpdHlUZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VGl0bGVUYWcpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dCh0aXRsZSwgSGVscFRleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNz
aWJpbGl0eVRleHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwKSk7CiAgICAg
fQogfQogCkBAIC0xNDc2LDcgKzE0NzEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjphY2Nlc3NpYmlsCiAgICAgCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJW
YWx1ZSgpOwogICAgIGlmICghcGxhY2Vob2xkZXIuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0T3Jk
ZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHBsYWNlaG9sZGVyLCBQbGFjZWhvbGRlclRleHQp
KTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChwbGFjZWhvbGRl
ciwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlBsYWNlaG9sZGVyKSk7CiB9CiAgICAgCiB2b2lk
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlZEJ5VGV4dChWZWN0b3I8QWNjZXNz
aWJpbGl0eVRleHQ+JiB0ZXh0T3JkZXIpIGNvbnN0CkBAIC0xNDg2LDEzICsxNDgxLDEzIEBAIHZv
aWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFyaWFMYWJlbGUKICAgICAgICAgVmVjdG9yPEVs
ZW1lbnQqPiBlbGVtZW50czsKICAgICAgICAgYXJpYUxhYmVsZWRCeUVsZW1lbnRzKGVsZW1lbnRz
KTsKICAgICAgICAgCi0gICAgICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+
IGF4RWxlbWVudHM7CisgICAgICAgIFZlY3RvcjxSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4+IGF4
RWxlbWVudHM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7
Ci0gICAgICAgICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gYXhFbGVtZW50ID0gYXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVtZW50KTsKLSAgICAgICAgICAgIGF4RWxlbWVu
dHMuYXBwZW5kKGF4RWxlbWVudCk7CisgICAgICAgICAgICBpZiAoYXV0byBheEVsZW1lbnQgPSBh
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIGF4
RWxlbWVudHMuYXBwZW5kKCpheEVsZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFyaWFMYWJlbGVkQnksIEFsdGVy
bmF0aXZlVGV4dCwgV1RGTW92ZShheEVsZW1lbnRzKSkpOworICAgICAgICB0ZXh0T3JkZXIuYXBw
ZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFyaWFMYWJlbGVkQnksIEFjY2Vzc2liaWxpdHlUZXh0U291
cmNlOjpBbHRlcm5hdGl2ZSwgV1RGTW92ZShheEVsZW1lbnRzKSkpOwogICAgIH0KIH0KICAgICAK
QEAgLTE1NDEsNyArMTUzNiw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0
ZXJuYXQKIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCkgY29uc3QKIHsKICAgICAvLyBTdGF0aWMgdGV4dCBzaG91bGQgbm90IGhhdmUgYSBk
ZXNjcmlwdGlvbiwgaXQgc2hvdWxkIG9ubHkgaGF2ZSBhIHN0cmluZ1ZhbHVlLgotICAgIGlmIChy
b2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIFN0cmluZyBhcmlhRGVzY3JpcHRpb24gPSBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9u
KCk7CkBAIC0xNTc2LDEyICsxNTcxLDEyIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YWNjZXNzaWIKIC8vIGFjY2Vzc2liaWxpdHkgaGllcmFyY2h5LiBUaGlzIGFwcGxpZXMgdG8g
Z2VuZXJpYyBncm91cHMgbGlrZSA8ZGl2PidzIHdpdGggbm8gcm9sZSB2YWx1ZSBzZXQuCiBib29s
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpyb2xlSWdub3Jlc1RpdGxlKCkgY29uc3QKIHsKLSAg
ICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgRGl2Um9s
ZToKLSAgICBjYXNlIFVua25vd25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRp
djoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjE5LDcgKzE2
MTQsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlbHBUZXh0CiAgICAgICAg
IC8vIE9ubHkgdGFrZSBoZWxwIHRleHQgZnJvbSBhbiBhbmNlc3RvciBlbGVtZW50IGlmIGl0cyBh
IGdyb3VwIG9yIGFuIHVua25vd24gcm9sZS4gSWYgaGVscCB3YXMgCiAgICAgICAgIC8vIGFkZGVk
IHRvIHRob3NlIGtpbmRzIG9mIGVsZW1lbnRzLCBpdCBpcyBsaWtlbHkgaXQgd2FzIG1lYW50IGZv
ciBhIGNoaWxkIGVsZW1lbnQuCiAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9i
aiA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoYW5jZXN0b3IpKSB7Ci0gICAgICAgICAg
ICBpZiAoIWF4T2JqLT5pc0dyb3VwKCkgJiYgYXhPYmotPnJvbGVWYWx1ZSgpICE9IFVua25vd25S
b2xlKQorICAgICAgICAgICAgaWYgKCFheE9iai0+aXNHcm91cCgpICYmIGF4T2JqLT5yb2xlVmFs
dWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MzgsNyArMTYzMyw3IEBAIHVuc2lnbmVkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXIKICAgICAgICAgcmV0dXJuIGFyaWFMZXZlbC50b0lu
dCgpOwogICAgIAogICAgIC8vIE9ubHkgdHJlZSBpdGVtIHdpbGwgY2FsY3VsYXRlIGl0cyBsZXZl
bCB0aHJvdWdoIHRoZSBET00gY3VycmVudGx5LgotICAgIGlmIChyb2xlVmFsdWUoKSAhPSBUcmVl
SXRlbVJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVl
SXRlbSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgLy8gSGllcmFyY2h5IGxldmVsaW5n
IHN0YXJ0cyBhdCAxLCB0byBtYXRjaCB0aGUgYXJpYS1sZXZlbCBzcGVjLgpAQCAtMTY0Niw5ICsx
NjQxLDkgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhpZXJhcgogICAgIHVu
c2lnbmVkIGxldmVsID0gMTsKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkp
IHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcGFyZW50Um9sZSA9IHBhcmVudC0+YXJpYVJv
bGVBdHRyaWJ1dGUoKTsKLSAgICAgICAgaWYgKHBhcmVudFJvbGUgPT0gQXBwbGljYXRpb25Hcm91
cFJvbGUpCisgICAgICAgIGlmIChwYXJlbnRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvbkdyb3VwKQogICAgICAgICAgICAgbGV2ZWwrKzsKLSAgICAgICAgZWxzZSBpZiAocGFy
ZW50Um9sZSA9PSBUcmVlUm9sZSkKKyAgICAgICAgZWxzZSBpZiAocGFyZW50Um9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VHJlZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKQEAg
LTE4MDUsMjYgKzE4MDAsMjYgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRs
ZSgpIAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgp
KSB7Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UG9wVXBCdXR0b246CiAgICAgICAgIC8vIE5hdGl2ZSBwb3B1cCBidXR0b25zIHNob3VsZCBu
b3QgdXNlIHRoZWlyIGJ1dHRvbiBjaGlsZHJlbidzIHRleHQgYXMgYSB0aXRsZS4gVGhhdCB2YWx1
ZSBpcyByZXRyaWV2ZWQgdGhyb3VnaCBzdHJpbmdWYWx1ZSgpLgogICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShzZWxlY3RUYWcpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
ICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBUb2dnbGVC
dXR0b25Sb2xlOgotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgTGlzdEJveE9wdGlv
blJvbGU6Ci0gICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51QnV0dG9uUm9sZToK
LSAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgot
ICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0g
ICAgY2FzZSBTd2l0Y2hSb2xlOgotICAgIGNhc2UgVGFiUm9sZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0
dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtUmFkaW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlRhYjoKICAgICAgICAgcmV0dXJuIHRleHRVbmRlckVsZW1lbnQoKTsKICAgICAvLyBT
VkdSb290cyBzaG91bGQgbm90IHVzZSB0aGUgdGV4dCB1bmRlciBpdHNlbGYgYXMgYSB0aXRsZS4g
VGhhdCBjb3VsZCBpbmNsdWRlIHRoZSB0ZXh0IG9mIG9iamVjdHMgbGlrZSA8dGV4dD4uCi0gICAg
Y2FzZSBTVkdSb290Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdSb290Ogog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBA
IC0xODQxLDcgKzE4MzYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxl
KCkgCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHQoKSBjb25zdAogewogICAg
IC8vIElmIHRoaXMgaXMgYSB1c2VyIGRlZmluZWQgc3RhdGljIHRleHQsIHVzZSB0aGUgYWNjZXNz
aWJsZSBuYW1lIGNvbXB1dGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gU3RhdGljVGV4dFJvbGUpIHsKKyAg
ICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4
dCkgewogICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKICAgICAg
ICAgYWx0ZXJuYXRpdmVUZXh0KHRleHRPcmRlcik7CiAgICAgICAgIGlmICh0ZXh0T3JkZXIuc2l6
ZSgpID4gMCAmJiB0ZXh0T3JkZXJbMF0udGV4dC5sZW5ndGgoKSkKQEAgLTE4NzAsNyArMTg2NSw3
IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c3RyaW5nVmEKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0
ZSgpID09IFN0YXRpY1RleHRSb2xlKSB7CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsKICAgICAgICAgU3RyaW5nIHN0YXRpY1Rl
eHQgPSB0ZXh0KCk7CiAgICAgICAgIGlmICghc3RhdGljVGV4dC5sZW5ndGgoKSkKICAgICAgICAg
ICAgIHN0YXRpY1RleHQgPSB0ZXh0VW5kZXJFbGVtZW50KCk7CkBAIC0yMTI4LDM3ICsyMTIzLDM3
IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWMKIHsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGFyaWFSb2xlID0gZ2V0QXR0cmlidXRlKHJvbGVBdHRyKTsKICAgICBp
ZiAoYXJpYVJvbGUuaXNOdWxsKCkgfHwgYXJpYVJvbGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gVW5rbm93blJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93
bjsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVUb1dlYkNvcmVS
b2xlKGFyaWFSb2xlKTsKIAogICAgIC8vIEFSSUEgc3RhdGVzIGlmIGFuIGl0ZW0gY2FuIGdldCBm
b2N1cywgaXQgc2hvdWxkIG5vdCBiZSBwcmVzZW50YXRpb25hbC4KLSAgICBpZiAocm9sZSA9PSBQ
cmVzZW50YXRpb25hbFJvbGUgJiYgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0
dXJuIFVua25vd25Sb2xlOworICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVz
ZW50YXRpb25hbCAmJiBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQorICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAKLSAgICBpZiAocm9sZSA9PSBCdXR0b25Sb2xlKQor
ICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24pCiAgICAgICAgIHJvbGUg
PSBidXR0b25Sb2xlVHlwZSgpOwogCi0gICAgaWYgKHJvbGUgPT0gVGV4dEFyZWFSb2xlICYmICFh
cmlhSXNNdWx0aWxpbmUoKSkKLSAgICAgICAgcm9sZSA9IFRleHRGaWVsZFJvbGU7CisgICAgaWYg
KHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhICYmICFhcmlhSXNNdWx0aWxpbmUo
KSkKKyAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAKICAgICBy
b2xlID0gcmVtYXBBcmlhUm9sZUR1ZVRvUGFyZW50KHJvbGUpOwogICAgIAogICAgIC8vIFByZXNl
bnRhdGlvbmFsIHJvbGVzIGFyZSBpbnZhbGlkYXRlZCBieSB0aGUgcHJlc2VuY2Ugb2YgQVJJQSBh
dHRyaWJ1dGVzLgotICAgIGlmIChyb2xlID09IFByZXNlbnRhdGlvbmFsUm9sZSAmJiBzdXBwb3J0
c0FSSUFBdHRyaWJ1dGVzKCkpCi0gICAgICAgIHJvbGUgPSBVbmtub3duUm9sZTsKKyAgICBpZiAo
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgJiYgc3VwcG9ydHNBUklB
QXR0cmlidXRlcygpKQorICAgICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247
CiAgICAgCiAgICAgLy8gVGhlIEFSSUEgc3BlYyBzdGF0ZXMsICJBdXRob3JzIG11c3QgZ2l2ZSBl
YWNoIGVsZW1lbnQgd2l0aCByb2xlIHJlZ2lvbiBhIGJyaWVmIGxhYmVsIHRoYXQKICAgICAvLyBk
ZXNjcmliZXMgdGhlIHB1cnBvc2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIHJlZ2lvbi4iIFRoZSBD
b3JlIEFBTSBzdGF0ZXMsICJTcGVjaWFsIGNhc2U6CiAgICAgLy8gaWYgdGhlIHJlZ2lvbiBkb2Vz
IG5vdCBoYXZlIGFuIGFjY2Vzc2libGUgbmFtZSwgZG8gbm90IGV4cG9zZSB0aGUgZWxlbWVudCBh
cyBhIGxhbmRtYXJrLgogICAgIC8vIFVzZSB0aGUgbmF0aXZlIGhvc3QgbGFuZ3VhZ2Ugcm9sZSBv
ZiB0aGUgZWxlbWVudCBpbnN0ZWFkLiIKLSAgICBpZiAocm9sZSA9PSBMYW5kbWFya1JlZ2lvblJv
bGUgJiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsQXR0cikgJiYgIWhhc0F0dHJpYnV0ZShhcmlh
X2xhYmVsbGVkYnlBdHRyKSkKLSAgICAgICAgcm9sZSA9IFVua25vd25Sb2xlOworICAgIGlmIChy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiAmJiAhaGFzQXR0cmlidXRl
KGFyaWFfbGFiZWxBdHRyKSAmJiAhaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpKQor
ICAgICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAKLSAgICBpZiAocm9s
ZSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pihyb2xlKSkKICAgICAgICAgcmV0dXJuIHJvbGU7
CiAKLSAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpVbmtub3duOwogfQogCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdApAQCAtMjE3MywyMSArMjE2OCwyMSBAQCBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjCiAgICAgLy8gV2hpbGUgaW5zaWRl
IHRoZSBjYWxsIHN0YWNrIG9mIGNyZWF0aW5nIGFuIGVsZW1lbnQsIHdlIG5lZWQgdG8gYXZvaWQg
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTE3NAogCi0gICAgaWYgKHJvbGUgIT0gTGlzdEJveE9wdGlvblJv
bGUgJiYgcm9sZSAhPSBNZW51SXRlbVJvbGUpCisgICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6Okxpc3RCb3hPcHRpb24gJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0
ZW0pCiAgICAgICAgIHJldHVybiByb2xlOwogICAgIAogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudCAmJiAhcGFyZW50LT5hY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCk7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKICAg
ICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcGFyZW50QXJpYVJvbGUgPSBwYXJlbnQtPmFyaWFSb2xl
QXR0cmlidXRlKCk7CiAKICAgICAgICAgLy8gU2VsZWN0cyBhbmQgbGlzdGJveGVzIGJvdGggaGF2
ZSBvcHRpb25zIGFzIGNoaWxkIHJvbGVzLCBidXQgdGhleSBtYXAgdG8gZGlmZmVyZW50IHJvbGVz
IHdpdGhpbiBXZWJDb3JlLgotICAgICAgICBpZiAocm9sZSA9PSBMaXN0Qm94T3B0aW9uUm9sZSAm
JiBwYXJlbnRBcmlhUm9sZSA9PSBNZW51Um9sZSkKLSAgICAgICAgICAgIHJldHVybiBNZW51SXRl
bVJvbGU7CisgICAgICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0
aW9uICYmIHBhcmVudEFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51KQorICAgICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbTsKICAgICAgICAgLy8gQW4g
YXJpYSAibWVudWl0ZW0iIG1heSBtYXAgdG8gTWVudUJ1dHRvbiBvciBNZW51SXRlbSBkZXBlbmRp
bmcgb24gaXRzIHBhcmVudC4KLSAgICAgICAgaWYgKHJvbGUgPT0gTWVudUl0ZW1Sb2xlICYmIHBh
cmVudEFyaWFSb2xlID09IEFwcGxpY2F0aW9uR3JvdXBSb2xlKQotICAgICAgICAgICAgcmV0dXJu
IE1lbnVCdXR0b25Sb2xlOworICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUl0ZW0gJiYgcGFyZW50QXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uR3JvdXApCisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0
b247CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgcGFyZW50IGhhZCBhIGRpZmZlcmVudCBy
b2xlLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY29udGludWUgc2VhcmNoaW5nIHVwIHRoZSBjaGFp
bi4KLSAgICAgICAgaWYgKHBhcmVudEFyaWFSb2xlKQorICAgICAgICBpZiAocGFyZW50QXJpYVJv
bGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgCkBAIC0yMTk4LDE5ICsyMTkzLDE5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmNhblNldFNlbGUKIHsKICAgICAvLyBFbGVtZW50cyB0aGF0IGNhbiBiZSBzZWxlY3Rl
ZAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIENlbGxSb2xlOgotICAgIGNh
c2UgR3JpZENlbGxSb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgIGNhc2UgUm93
SGVhZGVyUm9sZToKLSAgICBjYXNlIFJvd1JvbGU6Ci0gICAgY2FzZSBUYWJMaXN0Um9sZToKLSAg
ICBjYXNlIFRhYlJvbGU6Ci0gICAgY2FzZSBUcmVlR3JpZFJvbGU6Ci0gICAgY2FzZSBUcmVlSXRl
bVJvbGU6Ci0gICAgY2FzZSBUcmVlUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xl
OgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpHcmlkQ2VsbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXI6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Um93OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgogICAgICAgICBy
ZXR1cm4gaXNFbmFibGVkKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsMTAgKzE0NCwxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QoTm9kZSopOwogCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgbV9hcmlh
Um9sZTsKLSAgICBtdXRhYmxlIEFjY2Vzc2liaWxpdHlSb2xlIG1fcm9sZUZvck1TQUE7CisgICAg
QWNjZXNzaWJpbGl0eVJvbGUgbV9hcmlhUm9sZSB7IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3du
IH07CisgICAgbXV0YWJsZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlVua25vd24gfTsKICNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBtX2luaXRp
YWxpemVkOworICAgIGJvb2wgbV9pbml0aWFsaXplZCB7IGZhbHNlIH07CiAjZW5kaWYKIAogICAg
IGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX25vZGU7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMjAgKzg0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci1BY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5T2JqZWN0KCkKLSAgICA6IG1faWQo
MCkKLSAgICAsIG1faGF2ZUNoaWxkcmVuKGZhbHNlKQotICAgICwgbV9yb2xlKFVua25vd25Sb2xl
KQotICAgICwgbV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZShEZWZhdWx0QmVoYXZpb3IpCi0gICAg
LCBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFy
ZW50RGF0YSgpKQotICAgICwgbV9jaGlsZHJlbkRpcnR5KGZhbHNlKQotICAgICwgbV9zdWJ0cmVl
RGlydHkoZmFsc2UpCi0jaWYgUExBVEZPUk0oR1RLKQotICAgICwgbV93cmFwcGVyKG51bGxwdHIp
Ci0jZW5kaWYKLXsKLX0KLQogQWNjZXNzaWJpbGl0eU9iamVjdDo6fkFjY2Vzc2liaWxpdHlPYmpl
Y3QoKQogewogICAgIEFTU0VSVChpc0RldGFjaGVkKCkpOwpAQCAtMTA2LDcgKzkyLDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6fkFjY2Vzc2liaWxpdHlPYmplYwogdm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpkZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRUeXBl
LCBBWE9iamVjdENhY2hlKiBjYWNoZSkKIHsKICAgICAvLyBNZW51IGNsb3NlIGV2ZW50cyBuZWVk
IHRvIG5vdGlmeSB0aGUgcGxhdGZvcm0uIE5vIGVsZW1lbnQgaXMgdXNlZCBpbiB0aGUgbm90aWZp
Y2F0aW9uIGJlY2F1c2UgaXQncyBhIGRlc3RydWN0aW9uIGV2ZW50LgotICAgIGlmIChkZXRhY2ht
ZW50VHlwZSA9PSBFbGVtZW50RGVzdHJveWVkICYmIHJvbGVWYWx1ZSgpID09IE1lbnVSb2xlICYm
IGNhY2hlKQorICAgIGlmIChkZXRhY2htZW50VHlwZSA9PSBBY2Nlc3NpYmlsaXR5RGV0YWNobWVu
dFR5cGU6OkVsZW1lbnREZXN0cm95ZWQgJiYgcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6Ok1lbnUgJiYgY2FjaGUpCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKG51bGxw
dHIsICZjYWNoZS0+ZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhNZW51Q2xvc2VkKTsKICAg
ICAKICAgICAvLyBDbGVhciBhbnkgY2hpbGRyZW4gYW5kIGNhbGwgZGV0YWNoRnJvbVBhcmVudCBv
biB0aGVtIHNvIHRoYXQKQEAgLTEzMCwxNDIgKzExNiwxNDIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc0RldGFjaGVkKCkgYwogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vz
c2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhP
YmplY3QsIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSogY3JpdGVyaWEsIHNpemVfdCBpbmRl
eCkKIHsKICAgICBzd2l0Y2ggKGNyaXRlcmlhLT5zZWFyY2hLZXlzW2luZGV4XSkgewotICAgIC8v
IFRoZSBBbnlUeXBlU2VhcmNoS2V5IG1hdGNoZXMgYW55IG5vbi1udWxsIEFjY2Vzc2liaWxpdHlP
YmplY3QuCi0gICAgY2FzZSBBbnlUeXBlU2VhcmNoS2V5OgorICAgIC8vIFRoZSBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpBbnlUeXBlIG1hdGNoZXMgYW55IG5vbi1udWxsIEFjY2Vzc2liaWxpdHlP
YmplY3QuCisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBbnlUeXBlOgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgY2FzZSBBcnRpY2xlU2VhcmNoS2V5OgotICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPnJvbGVWYWx1ZSgpID09IERvY3VtZW50QXJ0aWNsZVJvbGU7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBcnRpY2xlOgorICAgICAgICByZXR1
cm4gYXhPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFy
dGljbGU7CiAgICAgICAgICAgICAKLSAgICBjYXNlIEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hL
ZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpCbG9ja3F1b3RlU2FtZUxldmVs
OgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiBh
eE9iamVjdC0+aXNCbG9ja3F1b3RlKCkKICAgICAgICAgICAgICYmIGF4T2JqZWN0LT5ibG9ja3F1
b3RlTGV2ZWwoKSA9PSBjcml0ZXJpYS0+c3RhcnRPYmplY3QtPmJsb2NrcXVvdGVMZXZlbCgpOwog
ICAgICAgICAKLSAgICBjYXNlIEJsb2NrcXVvdGVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpCbG9ja3F1b3RlOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlz
QmxvY2txdW90ZSgpOwogICAgICAgICAKLSAgICBjYXNlIEJvbGRGb250U2VhcmNoS2V5OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Qm9sZEZvbnQ6CiAgICAgICAgIHJldHVybiBh
eE9iamVjdC0+aGFzQm9sZEZvbnQoKTsKICAgICAgICAgCi0gICAgY2FzZSBCdXR0b25TZWFyY2hL
ZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpCdXR0b246CiAgICAgICAgIHJl
dHVybiBheE9iamVjdC0+aXNCdXR0b24oKTsKICAgICAgICAgCi0gICAgY2FzZSBDaGVja0JveFNl
YXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkNoZWNrQm94OgogICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPmlzQ2hlY2tib3goKTsKICAgICAgICAgCi0gICAgY2FzZSBD
b250cm9sU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Q29udHJv
bDoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0NvbnRyb2woKTsKICAgICAgICAgCi0gICAg
Y2FzZSBEaWZmZXJlbnRUeXBlU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6RGlmZmVyZW50VHlwZToKICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVj
dAogICAgICAgICAgICAgJiYgYXhPYmplY3QtPnJvbGVWYWx1ZSgpICE9IGNyaXRlcmlhLT5zdGFy
dE9iamVjdC0+cm9sZVZhbHVlKCk7CiAgICAgICAgIAotICAgIGNhc2UgRm9udENoYW5nZVNlYXJj
aEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkZvbnRDaGFuZ2U6CiAgICAg
ICAgIHJldHVybiBjcml0ZXJpYS0+c3RhcnRPYmplY3QKICAgICAgICAgICAgICYmICFheE9iamVj
dC0+aGFzU2FtZUZvbnQoY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKICAgICAg
ICAgCi0gICAgY2FzZSBGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpGb250Q29sb3JDaGFuZ2U6CiAgICAgICAgIHJldHVybiBjcml0ZXJp
YS0+c3RhcnRPYmplY3QKICAgICAgICAgICAgICYmICFheE9iamVjdC0+aGFzU2FtZUZvbnRDb2xv
cihjcml0ZXJpYS0+c3RhcnRPYmplY3QtPnJlbmRlcmVyKCkpOwogICAgICAgICAKLSAgICBjYXNl
IEZyYW1lU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6RnJhbWU6
CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNXZWJBcmVhKCk7CiAgICAgICAgIAotICAgIGNh
c2UgR3JhcGhpY1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okdy
YXBoaWM6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNJbWFnZSgpOwogICAgICAgICAKLSAg
ICBjYXNlIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpIZWFkaW5nTGV2ZWwxOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdM
ZXZlbCgpID09IDE7CiAgICAgICAgIAotICAgIGNhc2UgSGVhZGluZ0xldmVsMlNlYXJjaEtleToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDI6CiAgICAgICAg
IHJldHVybiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0gMjsKICAgICAgICAgCi0gICAgY2Fz
ZSBIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6SGVhZGluZ0xldmVsMzoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwo
KSA9PSAzOwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdMZXZlbDRTZWFyY2hLZXk6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWw0OgogICAgICAgICByZXR1
cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDQ7CiAgICAgICAgIAotICAgIGNhc2UgSGVh
ZGluZ0xldmVsNVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okhl
YWRpbmdMZXZlbDU6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0g
NTsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsNjoKICAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSA2OwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdT
YW1lTGV2ZWxTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFk
aW5nU2FtZUxldmVsOgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0CiAgICAg
ICAgICAgICAmJiBheE9iamVjdC0+aXNIZWFkaW5nKCkKICAgICAgICAgICAgICYmIGF4T2JqZWN0
LT5oZWFkaW5nTGV2ZWwoKSA9PSBjcml0ZXJpYS0+c3RhcnRPYmplY3QtPmhlYWRpbmdMZXZlbCgp
OwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzSGVh
ZGluZygpOwogICAgIAotICAgIGNhc2UgSGlnaGxpZ2h0ZWRTZWFyY2hLZXk6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIaWdobGlnaHRlZDoKICAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5oYXNIaWdobGlnaHRpbmcoKTsKICAgICAgICAgICAgIAotICAgIGNhc2UgSXRhbGljRm9u
dFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okl0YWxpY0ZvbnQ6
CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzSXRhbGljRm9udCgpOwogICAgICAgICAKLSAg
ICBjYXNlIExhbmRtYXJrU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6TGFuZG1hcms6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNMYW5kbWFyaygpOwogICAg
ICAgICAKLSAgICBjYXNlIExpbmtTZWFyY2hLZXk6IHsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXk6Okxpbms6IHsKICAgICAgICAgYm9vbCBpc0xpbmsgPSBheE9iamVjdC0+aXNMaW5r
KCk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBpZiAoIWlzTGluaykKLSAgICAgICAgICAg
IGlzTGluayA9IGF4T2JqZWN0LT5pc0Rlc2NlbmRhbnRPZlJvbGUoV2ViQ29yZUxpbmtSb2xlKTsK
KyAgICAgICAgICAgIGlzTGluayA9IGF4T2JqZWN0LT5pc0Rlc2NlbmRhbnRPZlJvbGUoQWNjZXNz
aWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rKTsKICNlbmRpZgogICAgICAgICByZXR1cm4gaXNMaW5r
OwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBMaXN0U2VhcmNoS2V5OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleTo6TGlzdDoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0xp
c3QoKTsKICAgICAgICAgCi0gICAgY2FzZSBMaXZlUmVnaW9uU2VhcmNoS2V5OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6TGl2ZVJlZ2lvbjoKICAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5zdXBwb3J0c0FSSUFMaXZlUmVnaW9uKCk7CiAgICAgICAgIAotICAgIGNhc2UgTWlzc3Bl
bGxlZFdvcmRTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpNaXNz
cGVsbGVkV29yZDoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oYXNNaXNzcGVsbGluZygpOwog
ICAgICAgICAKLSAgICBjYXNlIE91dGxpbmVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpPdXRsaW5lOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVHJlZSgp
OwogICAgICAgICAKLSAgICBjYXNlIFBsYWluVGV4dFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OlBsYWluVGV4dDoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5o
YXNQbGFpblRleHQoKTsKICAgICAgICAgCi0gICAgY2FzZSBSYWRpb0dyb3VwU2VhcmNoS2V5Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6UmFkaW9Hcm91cDoKICAgICAgICAgcmV0
dXJuIGF4T2JqZWN0LT5pc1JhZGlvR3JvdXAoKTsKICAgICAgICAgCi0gICAgY2FzZSBTYW1lVHlw
ZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlNhbWVUeXBlOgog
ICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiBheE9i
amVjdC0+cm9sZVZhbHVlKCkgPT0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5yb2xlVmFsdWUoKTsK
ICAgICAgICAgCi0gICAgY2FzZSBTdGF0aWNUZXh0U2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6U3RhdGljVGV4dDoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5p
c1N0YXRpY1RleHQoKTsKICAgICAgICAgCi0gICAgY2FzZSBTdHlsZUNoYW5nZVNlYXJjaEtleToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlN0eWxlQ2hhbmdlOgogICAgICAgICBy
ZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhh
c1NhbWVTdHlsZShjcml0ZXJpYS0+c3RhcnRPYmplY3QtPnJlbmRlcmVyKCkpOwogICAgICAgICAK
LSAgICBjYXNlIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6VGFibGVTYW1lTGV2ZWw6CiAgICAgICAgIHJldHVybiBjcml0ZXJpYS0+c3Rh
cnRPYmplY3QKICAgICAgICAgICAgICYmIGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0
KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkuaXNFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eSgpCiAgICAgICAgICAgICAmJiBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGU+KCpheE9iamVjdCkudGFibGVMZXZlbCgpID09IGNyaXRlcmlhLT5zdGFydE9iamVj
dC0+dGFibGVMZXZlbCgpOwogICAgICAgICAKLSAgICBjYXNlIFRhYmxlU2VhcmNoS2V5OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6VGFibGU6CiAgICAgICAgIHJldHVybiBpczxB
Y2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlPigqYXhPYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsKICAgICAg
ICAgCi0gICAgY2FzZSBUZXh0RmllbGRTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5OjpUZXh0RmllbGQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNUZXh0Q29u
dHJvbCgpOwogICAgICAgICAKLSAgICBjYXNlIFVuZGVybGluZVNlYXJjaEtleToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlVuZGVybGluZToKICAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5oYXNVbmRlcmxpbmUoKTsKICAgICAgICAgCi0gICAgY2FzZSBVbnZpc2l0ZWRMaW5rU2Vh
cmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6VW52aXNpdGVkTGluazoK
ICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1VudmlzaXRlZCgpOwogICAgICAgICAKLSAgICBj
YXNlIFZpc2l0ZWRMaW5rU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6VmlzaXRlZExpbms6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNWaXNpdGVkKCk7CiAg
ICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0zMTIsNTEgKzI5OCw1MSBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2libGVOYW1lCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgZm9yIG9i
amVjdHMgc3BlY2lmaWNhbGx5IGlkZW50aWZpZWQgYnkgQVJJQS4KICAgICBzd2l0Y2ggKGFyaWFS
b2xlQXR0cmlidXRlKCkpIHsKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xlOgotICAgIGNh
c2UgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkRpYWxv
Z1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkdyb3VwUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0
aW9uTG9nUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uTWFycXVlZVJvbGU6Ci0gICAgY2FzZSBB
cHBsaWNhdGlvblN0YXR1c1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKLSAg
ICBjYXNlIENvbWJvQm94Um9sZToKLSAgICBjYXNlIERlZmluaXRpb25Sb2xlOgotICAgIGNhc2Ug
RG9jdW1lbnRSb2xlOgotICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xlUm9sZToKLSAgICBjYXNlIERv
Y3VtZW50TWF0aFJvbGU6Ci0gICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgotICAgIGNhc2UgTGFu
ZG1hcmtSZWdpb25Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtEb2NSZWdpb25Sb2xlOgotICAgIGNh
c2UgRm9ybVJvbGU6Ci0gICAgY2FzZSBHcmlkUm9sZToKLSAgICBjYXNlIEdyb3VwUm9sZToKLSAg
ICBjYXNlIEltYWdlUm9sZToKLSAgICBjYXNlIExpc3RSb2xlOgotICAgIGNhc2UgTGlzdEJveFJv
bGU6Ci0gICAgY2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0NvbXBs
ZW1lbnRhcnlSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtDb250ZW50SW5mb1JvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKLSAg
ICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKLSAgICBjYXNlIE1lbnVSb2xlOgotICAgIGNhc2Ug
TWVudUJhclJvbGU6Ci0gICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6Ci0gICAgY2FzZSBS
YWRpb0dyb3VwUm9sZToKLSAgICBjYXNlIFNjcm9sbEJhclJvbGU6Ci0gICAgY2FzZSBTbGlkZXJS
b2xlOgotICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6Ci0gICAgY2FzZSBTcGxpdHRlclJvbGU6Ci0g
ICAgY2FzZSBUYWJsZVJvbGU6Ci0gICAgY2FzZSBUYWJMaXN0Um9sZToKLSAgICBjYXNlIFRhYlBh
bmVsUm9sZToKLSAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6
Ci0gICAgY2FzZSBUb29sYmFyUm9sZToKLSAgICBjYXNlIFRyZWVHcmlkUm9sZToKLSAgICBjYXNl
IFRyZWVSb2xlOgotICAgIGNhc2UgV2ViQXBwbGljYXRpb25Sb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpB
cHBsaWNhdGlvbkRpYWxvZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
bkdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1czoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlZmluaXRpb246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RG9jdW1lbnRBcnRpY2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50
TWF0aDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
Rm9ybToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGlzdEJveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5l
cjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnk6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrU2VhcmNoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpQcm9ncmVzc0luZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dy
b3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
YWJMaXN0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRleHRGaWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGljYXRpb246CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTM2
NCw3ICszNTAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2libGVOYW1lCiAg
ICAgCiAgICAgLy8gTm93IGNoZWNrIGZvciBnZW5lcmljYWxseSBkZXJpdmVkIGVsZW1lbnRzIG5v
dyB0aGF0IHdlIGtub3cgdGhlIGVsZW1lbnQgZG9lcyBub3QgbWF0Y2ggYSBzcGVjaWZpYyBBUklB
IHJvbGUuCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgU2xpZGVyUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTM4OCwxNiArMzc0LDE2IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb21wdXRlZExhYmUKIAogYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0Jsb2NrcXVvdGUoKSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFsdWUo
KSA9PSBCbG9ja3F1b3RlUm9sZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkJsb2NrcXVvdGU7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNU
ZXh0Q29udHJvbCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNh
c2UgQ29tYm9Cb3hSb2xlOgotICAgIGNhc2UgU2VhcmNoRmllbGRSb2xlOgotICAgIGNhc2UgVGV4
dEFyZWFSb2xlOgotICAgIGNhc2UgVGV4dEZpZWxkUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpDb21ib0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVs
ZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQwNiw3ICszOTIsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzVGV4dENvbnRyb2woCiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQVJJQVRleHRDb250cm9sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYXJpYVJvbGVB
dHRyaWJ1dGUoKSA9PSBUZXh0QXJlYVJvbGUgfHwgYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBUZXh0
RmllbGRSb2xlIHx8IGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gU2VhcmNoRmllbGRSb2xlOworICAg
IHJldHVybiBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJl
YSB8fCBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQg
fHwgYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ7
CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNOb25OYXRpdmVUZXh0Q29udHJvbCgp
IGNvbnN0CkBAIC00MTgsMTQgKzQwNCwxNCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
TGFuZG1hcmsoKSBjCiB7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgp
OwogICAgIAotICAgIHJldHVybiByb2xlID09IExhbmRtYXJrQmFubmVyUm9sZQotICAgICAgICB8
fCByb2xlID09IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBM
YW5kbWFya0NvbnRlbnRJbmZvUm9sZQotICAgICAgICB8fCByb2xlID09IExhbmRtYXJrRG9jUmVn
aW9uUm9sZQotICAgICAgICB8fCByb2xlID09IExhbmRtYXJrTWFpblJvbGUKLSAgICAgICAgfHwg
cm9sZSA9PSBMYW5kbWFya05hdmlnYXRpb25Sb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTGFuZG1h
cmtSZWdpb25Sb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTGFuZG1hcmtTZWFyY2hSb2xlOworICAg
IHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcgorICAgICAg
ICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnkKKyAg
ICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbwor
ICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbgor
ICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01haW4KKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uCisgICAg
ICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uCisgICAgICAg
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoOwogfQogCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29uc3QKQEAgLTY3Nyw3ICs2
NjMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRNYXRjaGluZ09iCiAgICAgaWYg
KCFzdGFydE9iamVjdCkKICAgICAgICAgc3RhcnRPYmplY3QgPSB0aGlzOwogICAgIAotICAgIGJv
b2wgaXNGb3J3YXJkID0gY3JpdGVyaWEtPnNlYXJjaERpcmVjdGlvbiA9PSBTZWFyY2hEaXJlY3Rp
b25OZXh0OworICAgIGJvb2wgaXNGb3J3YXJkID0gY3JpdGVyaWEtPnNlYXJjaERpcmVjdGlvbiA9
PSBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpOZXh0OwogICAgIAogICAgIC8vIFRoZSBm
aXJzdCBpdGVyYXRpb24gb2YgdGhlIG91dGVyIGxvb3Agd2lsbCBleGFtaW5lIHRoZSBjaGlsZHJl
biBvZiB0aGUgc3RhcnQgb2JqZWN0IGZvciBtYXRjaGVzLiBIb3dldmVyLCB3aGVuCiAgICAgLy8g
aXRlcmF0aW5nIGJhY2t3YXJkcywgdGhlIHN0YXJ0IG9iamVjdCBjaGlsZHJlbiBzaG91bGQgbm90
IGJlIGNvbnNpZGVyZWQsIHNvIHRoZSBsb29wIGlzIHNraXBwZWQgYWhlYWQuIFdlIG1ha2UgYW4K
QEAgLTc2MCw3ICs3NDYsNyBAQCBSZWZQdHI8UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJh
bmdlCiAgICAgaWYgKCFyZWZlcmVuY2VSYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgCi0gICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGlyZWN0aW9uID09IFNlYXJj
aERpcmVjdGlvblByZXZpb3VzOworICAgIGJvb2wgaXNCYWNrd2FyZFNlYXJjaCA9IHNlYXJjaERp
cmVjdGlvbiA9PSBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91czsKICAgICBG
aW5kT3B0aW9ucyBmaW5kT3B0aW9ucyA9IEF0V29yZFN0YXJ0cyB8IEF0V29yZEVuZHMgfCBDYXNl
SW5zZW5zaXRpdmUgfCBTdGFydEluU2VsZWN0aW9uOwogICAgIGlmIChpc0JhY2t3YXJkU2VhcmNo
KQogICAgICAgICBmaW5kT3B0aW9ucyB8PSBCYWNrd2FyZHM7CkBAIC04MzIsMTEgKzgxOCwxMSBA
QCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0VGV4dChBCiAgICAgUmVmUHRyPFJh
bmdlPiBjbG9zZXN0QWZ0ZXJTdHJpbmdSYW5nZSA9IG51bGxwdHI7CiAgICAgUmVmUHRyPFJhbmdl
PiBjbG9zZXN0QmVmb3JlU3RyaW5nUmFuZ2UgPSBudWxscHRyOwogICAgIC8vIFNlYXJjaCBmb3J3
YXJkIGlmIG5lY2Vzc2FyeS4KLSAgICBpZiAoYW1iaWd1aXR5UmVzb2x1dGlvbiA9PSBDbG9zZXN0
QWZ0ZXJTZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uIHx8IGFtYmlndWl0eVJlc29sdXRpb24g
PT0gQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbikKLSAgICAgICAgY2xvc2Vz
dEFmdGVyU3RyaW5nUmFuZ2UgPSByYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlv
bihzZWxlY3RlZFN0cmluZ1JhbmdlLmdldCgpLCBTZWFyY2hEaXJlY3Rpb25OZXh0LCBzZWFyY2hT
dHJpbmdzKTsKKyAgICBpZiAoYW1iaWd1aXR5UmVzb2x1dGlvbiA9PSBBY2Nlc3NpYmlsaXR5U2Vs
ZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RBZnRlciB8fCBhbWJpZ3VpdHlSZXNv
bHV0aW9uID09IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbjo6Q2xv
c2VzdFRvKQorICAgICAgICBjbG9zZXN0QWZ0ZXJTdHJpbmdSYW5nZSA9IHJhbmdlT2ZTdHJpbmdD
bG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKHNlbGVjdGVkU3RyaW5nUmFuZ2UuZ2V0KCksIEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQsIHNlYXJjaFN0cmluZ3MpOwogICAgIC8vIFNl
YXJjaCBiYWNrd2FyZCBpZiBuZWNlc3NhcnkuCi0gICAgaWYgKGFtYmlndWl0eVJlc29sdXRpb24g
PT0gQ2xvc2VzdEJlZm9yZVNlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24gfHwgYW1iaWd1aXR5
UmVzb2x1dGlvbiA9PSBDbG9zZXN0VG9TZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uKQotICAg
ICAgICBjbG9zZXN0QmVmb3JlU3RyaW5nUmFuZ2UgPSByYW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFu
Z2VJbkRpcmVjdGlvbihzZWxlY3RlZFN0cmluZ1JhbmdlLmdldCgpLCBTZWFyY2hEaXJlY3Rpb25Q
cmV2aW91cywgc2VhcmNoU3RyaW5ncyk7CisgICAgaWYgKGFtYmlndWl0eVJlc29sdXRpb24gPT0g
QWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0QmVmb3Jl
IHx8IGFtYmlndWl0eVJlc29sdXRpb24gPT0gQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJpZ3Vp
dHlSZXNvbHV0aW9uOjpDbG9zZXN0VG8pCisgICAgICAgIGNsb3Nlc3RCZWZvcmVTdHJpbmdSYW5n
ZSA9IHJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKHNlbGVjdGVkU3RyaW5n
UmFuZ2UuZ2V0KCksIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzLCBzZWFy
Y2hTdHJpbmdzKTsKICAgICAKICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggY2FuZGlkYXRlIGlzIGNs
b3Nlc3QgdG8gdGhlIHNlbGVjdGlvbiBhbmQgcGVyZm9ybSB0aGUgYWN0aXZpdHkuCiAgICAgaWYg
KFJlZlB0cjxSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlID0gcmFuZ2VDbG9zZXN0VG9SYW5nZShz
ZWxlY3RlZFN0cmluZ1JhbmdlLmdldCgpLCBXVEZNb3ZlKGNsb3Nlc3RBZnRlclN0cmluZ1Jhbmdl
KSwgV1RGTW92ZShjbG9zZXN0QmVmb3JlU3RyaW5nUmFuZ2UpKSkgewpAQCAtODUwLDIwICs4MzYs
MjAgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQQogICAgICAgICBi
b29sIHJlcGxhY2VTZWxlY3Rpb24gPSBmYWxzZTsKICAgICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKGNsb3Nlc3RTdHJpbmdSYW5nZS5nZXQoKSwgRE9XTlNUUkVB
TSwgdHJ1ZSkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYWN0aXZpdHkpIHsKLSAgICAgICAgICAg
IGNhc2UgRmluZEFuZENhcGl0YWxpemU6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlT
ZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRDYXBpdGFsaXplOgogICAgICAgICAgICAgICAgIHJl
cGxhY2VtZW50U3RyaW5nID0gY2xvc2VzdFN0cmluZzsKICAgICAgICAgICAgICAgICBtYWtlQ2Fw
aXRhbGl6ZWQoJnJlcGxhY2VtZW50U3RyaW5nLCAwKTsKICAgICAgICAgICAgICAgICByZXBsYWNl
U2VsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgRmluZEFuZFVwcGVyY2FzZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlbGVj
dFRleHRBY3Rpdml0eTo6RmluZEFuZFVwcGVyY2FzZToKICAgICAgICAgICAgICAgICByZXBsYWNl
bWVudFN0cmluZyA9IGNsb3Nlc3RTdHJpbmcuY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2Fs
ZSgpOyAvLyBGSVhNRTogTmVlZHMgbG9jYWxlIHRvIHdvcmsgY29ycmVjdGx5LgogICAgICAgICAg
ICAgICAgIHJlcGxhY2VTZWxlY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBGaW5kQW5kTG93ZXJjYXNlOgorICAgICAgICAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5kTG93ZXJjYXNlOgogICAgICAgICAg
ICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gY2xvc2VzdFN0cmluZy5jb252ZXJ0VG9Mb3dlcmNh
c2VXaXRob3V0TG9jYWxlKCk7IC8vIEZJWE1FOiBOZWVkcyBsb2NhbGUgdG8gd29yayBjb3JyZWN0
bHkuCiAgICAgICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbiA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZpbmRBbmRSZXBsYWNlQWN0aXZpdHk6IHsK
KyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFu
ZFJlcGxhY2U6IHsKICAgICAgICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAvLyBXaGVuIGFwcGx5aW5nIGZpbmQgYW5kIHJlcGxhY2UgYWN0aXZpdGll
cywgd2Ugd2FudCB0byBtYXRjaCB0aGUgY2FwaXRhbGl6YXRpb24gb2YgdGhlIHJlcGxhY2VkIHRl
eHQsCiAgICAgICAgICAgICAgICAgLy8gKHVubGVzcyB3ZSdyZSByZXBsYWNpbmcgd2l0aCBhbiBh
YmJyZXZpYXRpb24uKQpAQCAtODc1LDcgKzg2MSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZWxlY3RUZXh0KEEKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIEZpbmRBbmRTZWxlY3RBY3Rpdml0
eToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6Rmlu
ZEFuZFNlbGVjdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtOTEyLDI0ICs4OTgsMjMgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpo
YXNBdHRyaWJ1dGVzUgogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUlucHV0KEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlKQogewotICAgIHJldHVybiBhcmlhUm9sZSA9PSBSYWRp
b0J1dHRvblJvbGUgfHwgYXJpYVJvbGUgPT0gQ2hlY2tCb3hSb2xlIHx8IGFyaWFSb2xlID09IFRl
eHRGaWVsZFJvbGUgfHwgYXJpYVJvbGUgPT0gU3dpdGNoUm9sZSB8fCBhcmlhUm9sZSA9PSBTZWFy
Y2hGaWVsZFJvbGU7CisgICAgcmV0dXJuIGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpS
YWRpb0J1dHRvbiB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3ggfHwg
YXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZCB8fCBhcmlhUm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoIHx8IGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpTZWFyY2hGaWVsZDsKIH0gICAgCiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QVJJQUNvbnRyb2woQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUpCiB7Ci0gICAgcmV0dXJuIGlz
QVJJQUlucHV0KGFyaWFSb2xlKSB8fCBhcmlhUm9sZSA9PSBUZXh0QXJlYVJvbGUgfHwgYXJpYVJv
bGUgPT0gQnV0dG9uUm9sZSAKLSAgICB8fCBhcmlhUm9sZSA9PSBDb21ib0JveFJvbGUgfHwgYXJp
YVJvbGUgPT0gU2xpZGVyUm9sZTsgCisgICAgcmV0dXJuIGlzQVJJQUlucHV0KGFyaWFSb2xlKSB8
fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgfHwgYXJpYVJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbiB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q29tYm9Cb3ggfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjsKIH0K
ICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSYW5nZUNvbnRyb2woKSBjb25zdAog
ewogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIFByb2dyZXNzSW5kaWNhdG9y
Um9sZToKLSAgICBjYXNlIFNsaWRlclJvbGU6Ci0gICAgY2FzZSBTY3JvbGxCYXJSb2xlOgotICAg
IGNhc2UgU3BpbkJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jl
c3NJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpTcGluQnV0dG9uOgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFNwbGl0dGVy
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjoKICAgICAgICAgcmV0
dXJuIGNhblNldEZvY3VzQXR0cmlidXRlKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTQ1OSw3ICsxNDQ0LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnZpcwogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgCiAg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlcy4KLSAg
ICBJbnRQb2ludCBjb3JuZXIgPSAodmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzID09IEZpcnN0Vmlz
aWJsZVBvc2l0aW9uRm9yQm91bmRzKSA/IHJlY3QubWluWE1pbllDb3JuZXIoKSA6IHJlY3QubWF4
WE1heFlDb3JuZXIoKTsKKyAgICBJbnRQb2ludCBjb3JuZXIgPSAodmlzaWJsZVBvc2l0aW9uRm9y
Qm91bmRzID09IEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JCb3VuZHM6OkZpcnN0KSA/
IHJlY3QubWluWE1pbllDb3JuZXIoKSA6IHJlY3QubWF4WE1heFlDb3JuZXIoKTsKICAgICBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb24gPSBtYWluRnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50
KGNvcm5lcik7CiAgICAgCiAgICAgaWYgKHJlY3QuY29udGFpbnMocG9zaXRpb24uYWJzb2x1dGVD
YXJldEJvdW5kcygpLmNlbnRlcigpKSkKQEAgLTE2NTIsMjkgKzE2MzcsMjkgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFSZQogewogICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGUgPSByb2xlVmFsdWUoKTsKIAotICAgIHJldHVybiByb2xlID09IENoZWNrQm94Um9sZQot
ICAgICAgICB8fCByb2xlID09IENvbHVtbkhlYWRlclJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBD
b21ib0JveFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBHcmlkUm9sZQotICAgICAgICB8fCByb2xl
ID09IEdyaWRDZWxsUm9sZQotICAgICAgICB8fCByb2xlID09IExpc3RCb3hSb2xlCi0gICAgICAg
IHx8IHJvbGUgPT0gTWVudUl0ZW1DaGVja2JveFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBNZW51
SXRlbVJhZGlvUm9sZQotICAgICAgICB8fCByb2xlID09IFJhZGlvR3JvdXBSb2xlCi0gICAgICAg
IHx8IHJvbGUgPT0gUm93SGVhZGVyUm9sZQotICAgICAgICB8fCByb2xlID09IFNlYXJjaEZpZWxk
Um9sZQotICAgICAgICB8fCByb2xlID09IFNsaWRlclJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBT
cGluQnV0dG9uUm9sZQotICAgICAgICB8fCByb2xlID09IFN3aXRjaFJvbGUKLSAgICAgICAgfHwg
cm9sZSA9PSBUZXh0RmllbGRSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gVHJlZUdyaWRSb2xlCisg
ICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94CisgICAgICAgIHx8
IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcgorICAgICAgICB8fCByb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveAorICAgICAgICB8fCByb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpHcmlkCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OkdyaWRDZWxsCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3gK
KyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveAor
ICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvCisgICAg
ICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAKKyAgICAgICAgfHwg
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyCisgICAgICAgIHx8IHJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlNsaWRlcgorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpTcGluQnV0dG9uCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRj
aAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQKKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQKICAgICAgICAgfHwgaXNQ
YXNzd29yZEZpZWxkKCk7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUmVh
ZE9ubHlWYWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoYXJpYV9yZWFkb25s
eUF0dHIpKQotICAgICAgICByZXR1cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9s
ZSAmJiBzdXBwb3J0c0FSSUFSZWFkT25seSgpID8gImZhbHNlIiA6IFN0cmluZygpOworICAgICAg
ICByZXR1cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93
biAmJiBzdXBwb3J0c0FSSUFSZWFkT25seSgpID8gImZhbHNlIiA6IFN0cmluZygpOwogCiAgICAg
cmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX3JlYWRvbmx5QXR0cikuc3RyaW5nKCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKTsKIH0KQEAgLTE4OTEsNyArMTg3Niw3IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9i
amVjdCA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKHJlbmRlck9iamVjdCk7CiAgICAgCiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJp
bGl0eU9iamVjdCo+KEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKmF4T2JqZWN0
LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAg
IHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gSGVhZGluZ1JvbGU7CisgICAgICAgIHJldHVy
biBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7CiAgICAg
fSkpOwogfQogCkBAIC0xOTA5LDcgKzE4OTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFyaWFUcmVlUm93cyhBCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVu
KCkpIHsKICAgICAgICAgLy8gQWRkIHRyZWUgaXRlbXMgYXMgdGhlIHJvd3MuCi0gICAgICAgIGlm
IChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gVHJlZUl0ZW1Sb2xlKQorICAgICAgICBpZiAoY2hpbGQt
PnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbSkKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoY2hpbGQpOwogCiAgICAgICAgIC8vIE5vdyBzZWUgaWYgdGhpcyBpdGVt
IGFsc28gaGFzIHJvd3MgaGlkaW5nIGluc2lkZSBvZiBpdC4KQEAgLTE5MjEsNyArMTkwNiw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVJdGVtQ28KIHsKICAgICAvLyBUaGUg
QVJJQSB0cmVlIGl0ZW0gY29udGVudCBhcmUgdGhlIGl0ZW0gdGhhdCBhcmUgbm90IG90aGVyIHRy
ZWUgaXRlbXMgb3IgdGhlaXIgY29udGFpbmluZyBncm91cHMuCiAgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKCFjaGlsZC0+aXNHcm91cCgpICYm
IGNoaWxkLT5yb2xlVmFsdWUoKSAhPSBUcmVlSXRlbVJvbGUpCisgICAgICAgIGlmICghY2hpbGQt
PmlzR3JvdXAoKSAmJiBjaGlsZC0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRy
ZWVJdGVtKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGlsZCk7CiAgICAgfQogfQpAQCAt
MTkzMCw3ICsxOTE1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1E
aQogewogICAgIGZvciAoY29uc3QgYXV0byYgb2JqIDogY2hpbGRyZW4oKSkgewogICAgICAgICAv
LyBBZGQgdHJlZSBpdGVtcyBhcyB0aGUgcm93cy4KLSAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVl
KCkgPT0gVHJlZUl0ZW1Sb2xlKQorICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG9iaik7
CiAgICAgICAgIC8vIElmIGl0J3Mgbm90IGEgdHJlZSBpdGVtLCB0aGVuIGRlc2NlbmQgaW50byB0
aGUgZ3JvdXAgdG8gZmluZCBtb3JlIHRyZWUgaXRlbXMuCiAgICAgICAgIGVsc2UgCkBAIC0xOTQx
LDE0ICsxOTI2LDE0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVJdGVtRGkK
IGNvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1
c0ZvclJvbGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKIHsKICAgICBzd2l0Y2ggKHJvbGUpIHsK
LSAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgotICAgIGNhc2UgQXBwbGljYXRp
b25BbGVydFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVy
dERpYWxvZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0Ogog
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJhc3NlcnRpdmUiKTsKLSAgICBjYXNlIEFwcGxp
Y2F0aW9uTG9nUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1czoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
cG9saXRlIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKLSAgICBjYXNlIEFwcGxp
Y2F0aW9uTWFycXVlZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25UaW1lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWU6
CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm9mZiIpOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiBudWxsQXRvbSgpOwpAQCAtMTk3MSwyNSArMTk1NiwyNSBAQCBjb25zdCBTdHJp
bmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gbGlzdEl0ZW1BY3Rpb24oQVhMaXN0SXRlbUFjdGlvblZlcmIoKSk7CiAK
ICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNh
c2UgVG9nZ2xlQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOgogICAgICAgICByZXR1
cm4gYnV0dG9uQWN0aW9uOwotICAgIGNhc2UgVGV4dEZpZWxkUm9sZToKLSAgICBjYXNlIFRleHRB
cmVhUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CiAgICAgICAgIHJldHVybiB0ZXh0RmllbGRB
Y3Rpb247Ci0gICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UmFkaW9CdXR0b246CiAgICAgICAgIHJldHVybiByYWRpb0J1dHRvbkFjdGlvbjsKLSAg
ICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIFN3aXRjaFJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dp
dGNoOgogICAgICAgICByZXR1cm4gaXNDaGVja2VkKCkgPyBjaGVja2VkQ2hlY2tCb3hBY3Rpb24g
OiB1bmNoZWNrZWRDaGVja0JveEFjdGlvbjsKLSAgICBjYXNlIExpbmtSb2xlOgotICAgIGNhc2Ug
V2ViQ29yZUxpbmtSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpbms6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms6CiAgICAgICAgIHJldHVybiBsaW5r
QWN0aW9uOwotICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlBvcFVwQnV0dG9uOgogICAgICAgICByZXR1cm4gbWVudUxpc3RBY3Rpb247Ci0gICAg
Y2FzZSBNZW51TGlzdFBvcHVwUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
TGlzdFBvcHVwOgogICAgICAgICByZXR1cm4gbWVudUxpc3RQb3B1cEFjdGlvbjsKLSAgICBjYXNl
IExpc3RJdGVtUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKICAg
ICAgICAgcmV0dXJuIGxpc3RJdGVtQWN0aW9uOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBudWxsQXRvbSgpOwpAQCAtMjA1Miw0MCArMjAzNyw0MCBAQCBBY2Nlc3NpYmlsaXR5QVJJQUN1
cnJlbnRTdGF0ZSBBY2Nlc3NpYmlsCiAgICAgCiAgICAgLy8gSWYgImZhbHNlIiwgZW1wdHksIG9y
IG1pc3NpbmcsIHJldHVybiBmYWxzZSBzdGF0ZS4KICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUu
aXNFbXB0eSgpIHx8IGN1cnJlbnRTdGF0ZVZhbHVlID09ICJmYWxzZSIpCi0gICAgICAgIHJldHVy
biBBUklBQ3VycmVudEZhbHNlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJy
ZW50U3RhdGU6OkZhbHNlOwogICAgIAogICAgIGlmIChjdXJyZW50U3RhdGVWYWx1ZSA9PSAicGFn
ZSIpCi0gICAgICAgIHJldHVybiBBUklBQ3VycmVudFBhZ2U7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6UGFnZTsKICAgICBpZiAoY3VycmVudFN0YXRlVmFs
dWUgPT0gInN0ZXAiKQotICAgICAgICByZXR1cm4gQVJJQUN1cnJlbnRTdGVwOworICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlN0ZXA7CiAgICAgaWYgKGN1cnJl
bnRTdGF0ZVZhbHVlID09ICJsb2NhdGlvbiIpCi0gICAgICAgIHJldHVybiBBUklBQ3VycmVudExv
Y2F0aW9uOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6Okxv
Y2F0aW9uOwogICAgIGlmIChjdXJyZW50U3RhdGVWYWx1ZSA9PSAiZGF0ZSIpCi0gICAgICAgIHJl
dHVybiBBUklBQ3VycmVudERhdGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QVJJQUN1
cnJlbnRTdGF0ZTo6RGF0ZTsKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUgPT0gInRpbWUiKQot
ICAgICAgICByZXR1cm4gQVJJQUN1cnJlbnRUaW1lOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU7CiAgICAgCiAgICAgLy8gQW55IHZhbHVlIG5vdCBp
bmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBhbGxvd2VkIHZhbHVlcyBzaG91bGQgYmUgdHJlYXRlZCBh
cyAidHJ1ZSIuCi0gICAgcmV0dXJuIEFSSUFDdXJyZW50VHJ1ZTsKKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRydWU7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhQ3VycmVudFZhbHVlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGFyaWFDdXJy
ZW50U3RhdGUoKSkgewotICAgIGNhc2UgQVJJQUN1cnJlbnRGYWxzZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpGYWxzZToKICAgICAgICAgcmV0dXJuICJmYWxzZSI7
Ci0gICAgY2FzZSBBUklBQ3VycmVudFBhZ2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1
cnJlbnRTdGF0ZTo6UGFnZToKICAgICAgICAgcmV0dXJuICJwYWdlIjsKLSAgICBjYXNlIEFSSUFD
dXJyZW50U3RlcDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpTdGVw
OgogICAgICAgICByZXR1cm4gInN0ZXAiOwotICAgIGNhc2UgQVJJQUN1cnJlbnRMb2NhdGlvbjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpMb2NhdGlvbjoKICAgICAg
ICAgcmV0dXJuICJsb2NhdGlvbiI7Ci0gICAgY2FzZSBBUklBQ3VycmVudFRpbWU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6VGltZToKICAgICAgICAgcmV0dXJuICJ0
aW1lIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50RGF0ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlB
UklBQ3VycmVudFN0YXRlOjpEYXRlOgogICAgICAgICByZXR1cm4gImRhdGUiOwogICAgIGRlZmF1
bHQ6Ci0gICAgY2FzZSBBUklBQ3VycmVudFRydWU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJ
QUN1cnJlbnRTdGF0ZTo6VHJ1ZToKICAgICAgICAgcmV0dXJuICJ0cnVlIjsKICAgICB9CiB9CkBA
IC0yMTY0LDExICsyMTQ5LDExIEBAIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBBY2Nlc3NpYmls
aXR5T2IKIHsKICAgICBMYXlvdXRSZWN0IGJvdW5kcyA9IGVsZW1lbnRSZWN0KCk7CiAgICAgaWYg
KGJvdW5kcy5zaXplKCkud2lkdGgoKSA+IGJvdW5kcy5zaXplKCkuaGVpZ2h0KCkpCi0gICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIGlmIChib3VuZHMu
c2l6ZSgpLmhlaWdodCgpID4gYm91bmRzLnNpemUoKS53aWR0aCgpKQotICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWw7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwogCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvblVuZGVmaW5lZDsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
OjpVbmRlZmluZWQ7CiB9ICAgIAogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGVzY2Vu
ZGFudE9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0KSBjb25zdApA
QCAtMjIxNiwxMTcgKzIyMDEsMTE3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSb2xlTWFwKCkK
ICAgICBBU1NFUlQoIWdBcmlhUmV2ZXJzZVJvbGVNYXApOwogCiAgICAgY29uc3QgUm9sZUVudHJ5
IHJvbGVzW10gPSB7Ci0gICAgICAgIHsgImFsZXJ0IiwgQXBwbGljYXRpb25BbGVydFJvbGUgfSwK
LSAgICAgICAgeyAiYWxlcnRkaWFsb2ciLCBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZSB9LAot
ICAgICAgICB7ICJhcHBsaWNhdGlvbiIsIFdlYkFwcGxpY2F0aW9uUm9sZSB9LAotICAgICAgICB7
ICJhcnRpY2xlIiwgRG9jdW1lbnRBcnRpY2xlUm9sZSB9LAotICAgICAgICB7ICJiYW5uZXIiLCBM
YW5kbWFya0Jhbm5lclJvbGUgfSwKLSAgICAgICAgeyAiYnV0dG9uIiwgQnV0dG9uUm9sZSB9LAot
ICAgICAgICB7ICJjaGVja2JveCIsIENoZWNrQm94Um9sZSB9LAotICAgICAgICB7ICJjb21wbGVt
ZW50YXJ5IiwgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZSB9LAotICAgICAgICB7ICJjb250ZW50
aW5mbyIsIExhbmRtYXJrQ29udGVudEluZm9Sb2xlIH0sCi0gICAgICAgIHsgImRpYWxvZyIsIEFw
cGxpY2F0aW9uRGlhbG9nUm9sZSB9LAotICAgICAgICB7ICJkaXJlY3RvcnkiLCBEaXJlY3RvcnlS
b2xlIH0sCisgICAgICAgIHsgImFsZXJ0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9u
QWxlcnQgfSwKKyAgICAgICAgeyAiYWxlcnRkaWFsb2ciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25BbGVydERpYWxvZyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbiIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpXZWJBcHBsaWNhdGlvbiB9LAorICAgICAgICB7ICJhcnRpY2xlIiwgQWNjZXNz
aWJpbGl0eVJvbGU6OkRvY3VtZW50QXJ0aWNsZSB9LAorICAgICAgICB7ICJiYW5uZXIiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXIgfSwKKyAgICAgICAgeyAiYnV0dG9uIiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbiB9LAorICAgICAgICB7ICJjaGVja2JveCIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpDaGVja0JveCB9LAorICAgICAgICB7ICJjb21wbGVtZW50YXJ5IiwgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeSB9LAorICAgICAgICB7ICJjb250ZW50
aW5mbyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvIH0sCisgICAgICAg
IHsgImRpYWxvZyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZyB9LAorICAg
ICAgICB7ICJkaXJlY3RvcnkiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlyZWN0b3J5IH0sCiAgICAg
ICAgIC8vIFRoZSAnZG9jLSonIHJvbGVzIGFyZSBkZWZpbmVkIHRoZSBBUklBIERQVUIgbW9iaWxl
OiBodHRwczovL3d3dy53My5vcmcvVFIvZHB1Yi1hYW0tMS4wLyAKICAgICAgICAgLy8gRWRpdG9y
J3MgZHJhZnQgaXMgY3VycmVudGx5IGF0IGh0dHBzOi8vcmF3Z2l0LmNvbS93M2MvYXJpYS9tYXN0
ZXIvZHB1Yi1hYW0vZHB1Yi1hYW0uaHRtbCAKLSAgICAgICAgeyAiZG9jLWFic3RyYWN0IiwgQXBw
bGljYXRpb25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1hY2tub3dsZWRnbWVudHMi
LCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWFmdGVyd29yZCIsIExh
bmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtYXBwZW5kaXgiLCBMYW5kbWFy
a0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWJhY2tsaW5rIiwgV2ViQ29yZUxpbmtS
b2xlIH0sCi0gICAgICAgIHsgImRvYy1iaWJsaW9lbnRyeSIsIExpc3RJdGVtUm9sZSB9LAotICAg
ICAgICB7ICJkb2MtYmlibGlvZ3JhcGh5IiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAg
ICAgIHsgImRvYy1iaWJsaW9yZWYiLCBXZWJDb3JlTGlua1JvbGUgfSwKLSAgICAgICAgeyAiZG9j
LWNoYXB0ZXIiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWNvbG9w
aG9uIiwgQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1jb25jbHVz
aW9uIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1jb3ZlciIsIElt
YWdlUm9sZSB9LAotICAgICAgICB7ICJkb2MtY3JlZGl0IiwgQXBwbGljYXRpb25UZXh0R3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgImRvYy1jcmVkaXRzIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0s
Ci0gICAgICAgIHsgImRvYy1kZWRpY2F0aW9uIiwgQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgImRvYy1lbmRub3RlIiwgTGlzdEl0ZW1Sb2xlIH0sCi0gICAgICAgIHsgImRv
Yy1lbmRub3RlcyIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtZXBp
Z3JhcGgiLCBBcHBsaWNhdGlvblRleHRHcm91cFJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWVwaWxv
Z3VlIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1lcnJhdGEiLCBM
YW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWV4YW1wbGUiLCBBcHBsaWNh
dGlvblRleHRHcm91cFJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWZvb3Rub3RlIiwgRm9vdG5vdGVS
b2xlIH0sCi0gICAgICAgIHsgImRvYy1mb3Jld29yZCIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9
LAotICAgICAgICB7ICJkb2MtZ2xvc3NhcnkiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAg
ICAgICAgeyAiZG9jLWdsb3NzcmVmIiwgV2ViQ29yZUxpbmtSb2xlIH0sCi0gICAgICAgIHsgImRv
Yy1pbmRleCIsIExhbmRtYXJrTmF2aWdhdGlvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWludHJv
ZHVjdGlvbiIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2Mtbm90ZXJl
ZiIsIFdlYkNvcmVMaW5rUm9sZSB9LAotICAgICAgICB7ICJkb2Mtbm90aWNlIiwgRG9jdW1lbnRO
b3RlUm9sZSB9LAotICAgICAgICB7ICJkb2MtcGFnZWJyZWFrIiwgU3BsaXR0ZXJSb2xlIH0sCi0g
ICAgICAgIHsgImRvYy1wYWdlbGlzdCIsIExhbmRtYXJrTmF2aWdhdGlvblJvbGUgfSwKLSAgICAg
ICAgeyAiZG9jLXBhcnQiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9j
LXByZWZhY2UiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLXByb2xv
Z3VlIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1wdWxscXVvdGUi
LCBBcHBsaWNhdGlvblRleHRHcm91cFJvbGUgfSwKLSAgICAgICAgeyAiZG9jLXFuYSIsIEFwcGxp
Y2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2Mtc3VidGl0bGUiLCBIZWFkaW5n
Um9sZSB9LAotICAgICAgICB7ICJkb2MtdGlwIiwgRG9jdW1lbnROb3RlUm9sZSB9LAotICAgICAg
ICB7ICJkb2MtdG9jIiwgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZSB9LAotICAgICAgICB7ICJmaWd1
cmUiLCBGaWd1cmVSb2xlIH0sCi0gICAgICAgIHsgImdyaWQiLCBHcmlkUm9sZSB9LAotICAgICAg
ICB7ICJncmlkY2VsbCIsIEdyaWRDZWxsUm9sZSB9LAotICAgICAgICB7ICJ0YWJsZSIsIFRhYmxl
Um9sZSB9LAotICAgICAgICB7ICJjZWxsIiwgQ2VsbFJvbGUgfSwKLSAgICAgICAgeyAiY29sdW1u
aGVhZGVyIiwgQ29sdW1uSGVhZGVyUm9sZSB9LAotICAgICAgICB7ICJjb21ib2JveCIsIENvbWJv
Qm94Um9sZSB9LAotICAgICAgICB7ICJkZWZpbml0aW9uIiwgRGVmaW5pdGlvblJvbGUgfSwKLSAg
ICAgICAgeyAiZG9jdW1lbnQiLCBEb2N1bWVudFJvbGUgfSwKLSAgICAgICAgeyAiZmVlZCIsIEZl
ZWRSb2xlIH0sCi0gICAgICAgIHsgImZvcm0iLCBGb3JtUm9sZSB9LAotICAgICAgICB7ICJyb3do
ZWFkZXIiLCBSb3dIZWFkZXJSb2xlIH0sCi0gICAgICAgIHsgImdyb3VwIiwgQXBwbGljYXRpb25H
cm91cFJvbGUgfSwKLSAgICAgICAgeyAiaGVhZGluZyIsIEhlYWRpbmdSb2xlIH0sCi0gICAgICAg
IHsgImltZyIsIEltYWdlUm9sZSB9LAotICAgICAgICB7ICJsaW5rIiwgV2ViQ29yZUxpbmtSb2xl
IH0sCi0gICAgICAgIHsgImxpc3QiLCBMaXN0Um9sZSB9LCAgICAgICAgCi0gICAgICAgIHsgImxp
c3RpdGVtIiwgTGlzdEl0ZW1Sb2xlIH0sICAgICAgICAKLSAgICAgICAgeyAibGlzdGJveCIsIExp
c3RCb3hSb2xlIH0sCi0gICAgICAgIHsgImxvZyIsIEFwcGxpY2F0aW9uTG9nUm9sZSB9LAotICAg
ICAgICB7ICJtYWluIiwgTGFuZG1hcmtNYWluUm9sZSB9LAotICAgICAgICB7ICJtYXJxdWVlIiwg
QXBwbGljYXRpb25NYXJxdWVlUm9sZSB9LAotICAgICAgICB7ICJtYXRoIiwgRG9jdW1lbnRNYXRo
Um9sZSB9LAotICAgICAgICB7ICJtZW51IiwgTWVudVJvbGUgfSwKLSAgICAgICAgeyAibWVudWJh
ciIsIE1lbnVCYXJSb2xlIH0sCi0gICAgICAgIHsgIm1lbnVpdGVtIiwgTWVudUl0ZW1Sb2xlIH0s
Ci0gICAgICAgIHsgIm1lbnVpdGVtY2hlY2tib3giLCBNZW51SXRlbUNoZWNrYm94Um9sZSB9LAot
ICAgICAgICB7ICJtZW51aXRlbXJhZGlvIiwgTWVudUl0ZW1SYWRpb1JvbGUgfSwKLSAgICAgICAg
eyAibm9uZSIsIFByZXNlbnRhdGlvbmFsUm9sZSB9LAotICAgICAgICB7ICJub3RlIiwgRG9jdW1l
bnROb3RlUm9sZSB9LAotICAgICAgICB7ICJuYXZpZ2F0aW9uIiwgTGFuZG1hcmtOYXZpZ2F0aW9u
Um9sZSB9LAotICAgICAgICB7ICJvcHRpb24iLCBMaXN0Qm94T3B0aW9uUm9sZSB9LAotICAgICAg
ICB7ICJwcmVzZW50YXRpb24iLCBQcmVzZW50YXRpb25hbFJvbGUgfSwKLSAgICAgICAgeyAicHJv
Z3Jlc3NiYXIiLCBQcm9ncmVzc0luZGljYXRvclJvbGUgfSwKLSAgICAgICAgeyAicmFkaW8iLCBS
YWRpb0J1dHRvblJvbGUgfSwKLSAgICAgICAgeyAicmFkaW9ncm91cCIsIFJhZGlvR3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgInJlZ2lvbiIsIExhbmRtYXJrUmVnaW9uUm9sZSB9LAotICAgICAgICB7
ICJyb3ciLCBSb3dSb2xlIH0sCi0gICAgICAgIHsgInJvd2dyb3VwIiwgUm93R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgInNjcm9sbGJhciIsIFNjcm9sbEJhclJvbGUgfSwKLSAgICAgICAgeyAic2Vh
cmNoIiwgTGFuZG1hcmtTZWFyY2hSb2xlIH0sCi0gICAgICAgIHsgInNlYXJjaGJveCIsIFNlYXJj
aEZpZWxkUm9sZSB9LAotICAgICAgICB7ICJzZXBhcmF0b3IiLCBTcGxpdHRlclJvbGUgfSwKLSAg
ICAgICAgeyAic2xpZGVyIiwgU2xpZGVyUm9sZSB9LAotICAgICAgICB7ICJzcGluYnV0dG9uIiwg
U3BpbkJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyAic3RhdHVzIiwgQXBwbGljYXRpb25TdGF0dXNS
b2xlIH0sCi0gICAgICAgIHsgInN3aXRjaCIsIFN3aXRjaFJvbGUgfSwKLSAgICAgICAgeyAidGFi
IiwgVGFiUm9sZSB9LAotICAgICAgICB7ICJ0YWJsaXN0IiwgVGFiTGlzdFJvbGUgfSwKLSAgICAg
ICAgeyAidGFicGFuZWwiLCBUYWJQYW5lbFJvbGUgfSwKLSAgICAgICAgeyAidGV4dCIsIFN0YXRp
Y1RleHRSb2xlIH0sCi0gICAgICAgIHsgInRleHRib3giLCBUZXh0QXJlYVJvbGUgfSwKLSAgICAg
ICAgeyAidGVybSIsIFRlcm1Sb2xlIH0sCi0gICAgICAgIHsgInRpbWVyIiwgQXBwbGljYXRpb25U
aW1lclJvbGUgfSwKLSAgICAgICAgeyAidG9vbGJhciIsIFRvb2xiYXJSb2xlIH0sCi0gICAgICAg
IHsgInRvb2x0aXAiLCBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGUgfSwKLSAgICAgICAgeyAidHJl
ZSIsIFRyZWVSb2xlIH0sCi0gICAgICAgIHsgInRyZWVncmlkIiwgVHJlZUdyaWRSb2xlIH0sCi0g
ICAgICAgIHsgInRyZWVpdGVtIiwgVHJlZUl0ZW1Sb2xlIH0KKyAgICAgICAgeyAiZG9jLWFic3Ry
YWN0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAg
IHsgImRvYy1hY2tub3dsZWRnbWVudHMiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NS
ZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWFmdGVyd29yZCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtYXBwZW5kaXgiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWJhY2tsaW5rIiwg
QWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsgImRvYy1iaWJsaW9l
bnRyeSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSB9LAorICAgICAgICB7ICJkb2MtYmli
bGlvZ3JhcGh5IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAg
ICAgIHsgImRvYy1iaWJsaW9yZWYiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwK
KyAgICAgICAgeyAiZG9jLWNoYXB0ZXIiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NS
ZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWNvbG9waG9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1jb25jbHVzaW9uIiwgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1jb3ZlciIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSB9LAorICAgICAgICB7ICJkb2MtY3JlZGl0IiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1j
cmVkaXRzIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAg
IHsgImRvYy1kZWRpY2F0aW9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdy
b3VwIH0sCisgICAgICAgIHsgImRvYy1lbmRub3RlIiwgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJ
dGVtIH0sCisgICAgICAgIHsgImRvYy1lbmRub3RlcyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZXBpZ3JhcGgiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9jLWVwaWxvZ3VlIiwg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1l
cnJhdGEiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAg
eyAiZG9jLWV4YW1wbGUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAg
fSwKKyAgICAgICAgeyAiZG9jLWZvb3Rub3RlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Rub3Rl
IH0sCisgICAgICAgIHsgImRvYy1mb3Jld29yZCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZ2xvc3NhcnkiLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWdsb3NzcmVmIiwgQWNjZXNz
aWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsgImRvYy1pbmRleCIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24gfSwKKyAgICAgICAgeyAiZG9jLWludHJv
ZHVjdGlvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAg
ICB7ICJkb2Mtbm90ZXJlZiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAg
ICAgICB7ICJkb2Mtbm90aWNlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZSB9LAor
ICAgICAgICB7ICJkb2MtcGFnZWJyZWFrIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyIH0s
CisgICAgICAgIHsgImRvYy1wYWdlbGlzdCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05h
dmlnYXRpb24gfSwKKyAgICAgICAgeyAiZG9jLXBhcnQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLXByZWZhY2UiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLXByb2xvZ3VlIiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wdWxs
cXVvdGUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAg
ICAgeyAiZG9jLXFuYSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9
LAorICAgICAgICB7ICJkb2Mtc3VidGl0bGUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9
LAorICAgICAgICB7ICJkb2MtdGlwIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZSB9
LAorICAgICAgICB7ICJkb2MtdG9jIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdh
dGlvbiB9LAorICAgICAgICB7ICJmaWd1cmUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlIH0s
CisgICAgICAgIHsgImdyaWQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZCB9LAorICAgICAgICB7
ICJncmlkY2VsbCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbCB9LAorICAgICAgICB7ICJ0
YWJsZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZSB9LAorICAgICAgICB7ICJjZWxsIiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OkNlbGwgfSwKKyAgICAgICAgeyAiY29sdW1uaGVhZGVyIiwgQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlciB9LAorICAgICAgICB7ICJjb21ib2JveCIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpDb21ib0JveCB9LAorICAgICAgICB7ICJkZWZpbml0aW9uIiwgQWNjZXNz
aWJpbGl0eVJvbGU6OkRlZmluaXRpb24gfSwKKyAgICAgICAgeyAiZG9jdW1lbnQiLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6RG9jdW1lbnQgfSwKKyAgICAgICAgeyAiZmVlZCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpGZWVkIH0sCisgICAgICAgIHsgImZvcm0iLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9ybSB9
LAorICAgICAgICB7ICJyb3doZWFkZXIiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIH0s
CisgICAgICAgIHsgImdyb3VwIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAg
fSwKKyAgICAgICAgeyAiaGVhZGluZyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nIH0sCisg
ICAgICAgIHsgImltZyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSB9LAorICAgICAgICB7ICJs
aW5rIiwgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAgIHsgImxpc3Qi
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdCB9LAorICAgICAgICB7ICJsaXN0aXRlbSIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0SXRlbSB9LAorICAgICAgICB7ICJsaXN0Ym94IiwgQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RCb3ggfSwKKyAgICAgICAgeyAibG9nIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uTG9nIH0sCisgICAgICAgIHsgIm1haW4iLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtNYWluIH0sCisgICAgICAgIHsgIm1hcnF1ZWUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25NYXJxdWVlIH0sCisgICAgICAgIHsgIm1hdGgiLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RG9jdW1lbnRNYXRoIH0sCisgICAgICAgIHsgIm1lbnUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudSB9LAorICAgICAgICB7ICJtZW51YmFyIiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXIg
fSwKKyAgICAgICAgeyAibWVudWl0ZW0iLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW0gfSwK
KyAgICAgICAgeyAibWVudWl0ZW1jaGVja2JveCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bUNoZWNrYm94IH0sCisgICAgICAgIHsgIm1lbnVpdGVtcmFkaW8iLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUl0ZW1SYWRpbyB9LAorICAgICAgICB7ICJub25lIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OlByZXNlbnRhdGlvbmFsIH0sCisgICAgICAgIHsgIm5vdGUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
RG9jdW1lbnROb3RlIH0sCisgICAgICAgIHsgIm5hdmlnYXRpb24iLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCisgICAgICAgIHsgIm9wdGlvbiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0Qm94T3B0aW9uIH0sCisgICAgICAgIHsgInByZXNlbnRhdGlvbiIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCB9LAorICAgICAgICB7ICJwcm9ncmVzc2JhciIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvciB9LAorICAgICAgICB7ICJyYWRp
byIsIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbiB9LAorICAgICAgICB7ICJyYWRpb2dy
b3VwIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAgfSwKKyAgICAgICAgeyAicmVnaW9u
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uIH0sCisgICAgICAgIHsgInJvdyIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3cgfSwKKyAgICAgICAgeyAicm93Z3JvdXAiLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6Um93R3JvdXAgfSwKKyAgICAgICAgeyAic2Nyb2xsYmFyIiwgQWNjZXNzaWJp
bGl0eVJvbGU6OlNjcm9sbEJhciB9LAorICAgICAgICB7ICJzZWFyY2giLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtTZWFyY2ggfSwKKyAgICAgICAgeyAic2VhcmNoYm94IiwgQWNjZXNzaWJp
bGl0eVJvbGU6OlNlYXJjaEZpZWxkIH0sCisgICAgICAgIHsgInNlcGFyYXRvciIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpTcGxpdHRlciB9LAorICAgICAgICB7ICJzbGlkZXIiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2xpZGVyIH0sCisgICAgICAgIHsgInNwaW5idXR0b24iLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3BpbkJ1dHRvbiB9LAorICAgICAgICB7ICJzdGF0dXMiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25TdGF0dXMgfSwKKyAgICAgICAgeyAic3dpdGNoIiwgQWNjZXNzaWJpbGl0eVJv
bGU6OlN3aXRjaCB9LAorICAgICAgICB7ICJ0YWIiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiIH0s
CisgICAgICAgIHsgInRhYmxpc3QiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdCB9LAorICAg
ICAgICB7ICJ0YWJwYW5lbCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbCB9LAorICAgICAg
ICB7ICJ0ZXh0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgfSwKKyAgICAgICAgeyAi
dGV4dGJveCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSB9LAorICAgICAgICB7ICJ0ZXJt
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRlcm0gfSwKKyAgICAgICAgeyAidGltZXIiLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6QXBwbGljYXRpb25UaW1lciB9LAorICAgICAgICB7ICJ0b29sYmFyIiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXIgfSwKKyAgICAgICAgeyAidG9vbHRpcCIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpVc2VySW50ZXJmYWNlVG9vbHRpcCB9LAorICAgICAgICB7ICJ0cmVlIiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRyZWUgfSwKKyAgICAgICAgeyAidHJlZWdyaWQiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6VHJlZUdyaWQgfSwKKyAgICAgICAgeyAidHJlZWl0ZW0iLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6VHJlZUl0ZW0gfQogICAgIH07CiAKICAgICBnQXJpYVJvbGVNYXAgPSBuZXcgQVJJQVJv
bGVNYXA7CkBAIC0yMzM0LDcgKzIzMTksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUm9sZU1h
cCgpCiAgICAgc2l6ZV90IHJvbGVMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKHJvbGVzKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvbGVMZW5ndGg7ICsraSkgewogICAgICAgICBnQXJp
YVJvbGVNYXAtPnNldChyb2xlc1tpXS5hcmlhUm9sZSwgcm9sZXNbaV0ud2ViY29yZVJvbGUpOwot
ICAgICAgICBnQXJpYVJldmVyc2VSb2xlTWFwLT5zZXQocm9sZXNbaV0ud2ViY29yZVJvbGUsIHJv
bGVzW2ldLmFyaWFSb2xlKTsKKyAgICAgICAgZ0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0KHN0YXRp
Y19jYXN0PGludD4ocm9sZXNbaV0ud2ViY29yZVJvbGUpLCByb2xlc1tpXS5hcmlhUm9sZSk7CiAg
ICAgfQogfQogCkBAIC0yMzU0LDEwICsyMzM5LDExIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmEKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzRW1wdHkoKSk7CiAgICAg
Zm9yIChhdXRvIHJvbGVOYW1lIDogU3RyaW5nVmlldyh2YWx1ZSkuc3BsaXQoJyAnKSkgewotICAg
ICAgICBpZiAoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IGFyaWFSb2xlTWFwKCkuZ2V0PEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlU3RyaW5nVmlld0hhc2hUcmFuc2xhdG9yPihyb2xlTmFtZSkpCisgICAg
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBhcmlhUm9sZU1hcCgpLmdldDxBU0NJSUNhc2VJ
bnNlbnNpdGl2ZVN0cmluZ1ZpZXdIYXNoVHJhbnNsYXRvcj4ocm9sZU5hbWUpOworICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8aW50Pihyb2xlKSkKICAgICAgICAgICAgIHJldHVybiByb2xlOwogICAg
IH0KLSAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpVbmtub3duOwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRSb2xl
U3RyaW5nKCkgY29uc3QKQEAgLTIzNjYsMjMgKzIzNTIsMjMgQEAgU3RyaW5nIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNvbXB1dGVkUm9sZQogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xl
VmFsdWUoKTsKIAogICAgIC8vIFdlIGRvIG5vdCBjb21wdXRlIGEgcm9sZSBzdHJpbmcgZm9yIGdl
bmVyaWMgYmxvY2sgZWxlbWVudHMgd2l0aCB1c2VyLWFnZW50IGFzc2lnbmVkIHJvbGVzLgotICAg
IGlmIChyb2xlID09IEdyb3VwUm9sZSB8fCByb2xlID09IFRleHRHcm91cFJvbGUpCisgICAgaWYg
KHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlRleHRHcm91cCkKICAgICAgICAgcmV0dXJuICIiOwogCiAgICAgLy8gV2UgZG8gY29t
cHV0ZSBhIHJvbGUgc3RyaW5nIGZvciBibG9jayBlbGVtZW50cyB3aXRoIGF1dGhvci1wcm92aWRl
ZCByb2xlcy4KLSAgICBpZiAocm9sZSA9PSBBcHBsaWNhdGlvblRleHRHcm91cFJvbGUgfHwgcm9s
ZSA9PSBGb290bm90ZVJvbGUpCi0gICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5n
ZXQoQXBwbGljYXRpb25Hcm91cFJvbGUpOworICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpG
b290bm90ZSkKKyAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNf
Y2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwKSk7CiAKLSAgICBp
ZiAocm9sZSA9PSBIb3Jpem9udGFsUnVsZVJvbGUpCi0gICAgICAgIHJldHVybiByZXZlcnNlQXJp
YVJvbGVNYXAoKS5nZXQoU3BsaXR0ZXJSb2xlKTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGUpCisgICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVN
YXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIpKTsK
IAotICAgIGlmIChyb2xlID09IFBvcFVwQnV0dG9uUm9sZSB8fCByb2xlID09IFRvZ2dsZUJ1dHRv
blJvbGUpCi0gICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoQnV0dG9uUm9s
ZSk7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uIHx8IHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbikKKyAgICAgICAgcmV0dXJuIHJl
dmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xl
OjpCdXR0b24pKTsKIAotICAgIGlmIChyb2xlID09IExhbmRtYXJrRG9jUmVnaW9uUm9sZSkKLSAg
ICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChMYW5kbWFya1JlZ2lvblJvbGUp
OworICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbikK
KyAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChzdGF0aWNfY2FzdDxpbnQ+
KEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbikpOwogCi0gICAgcmV0dXJuIHJldmVy
c2VBcmlhUm9sZU1hcCgpLmdldChyb2xlKTsKKyAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFw
KCkuZ2V0KHN0YXRpY19jYXN0PGludD4ocm9sZSkpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Omhhc0hpZ2hsaWdodGluZygpIGNvbnN0CkBAIC0yNDA5LDcgKzIzOTUsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUHJlc3NBCiB7CiAgICAgaWYgKGlzQnV0dG9u
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBEZXRhaWxz
Um9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHMp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQg
PSB0aGlzLT5hY3Rpb25FbGVtZW50KCk7CkBAIC0yNDIyLDggKzI0MDgsOCBAQCBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUHJlc3NBCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKICAgICAgICAgICAgIC8vIFNlYXJjaCB3aXRoaW4gZm9y
IGltbWVkaWF0ZSBkZXNjZW5kYW50cyB0aGF0IGFyZSBzdGF0aWMgdGV4dC4gSWYgd2UgZmluZCBt
b3JlIHRoYW4gb25lCiAgICAgICAgICAgICAvLyB0aGVuIHRoaXMgaXMgYW4gZXZlbnQgZGVsZWdh
dG9yIGFjdGlvbkVsZW1lbnQgYW5kIHdlIHNob3VsZCBleHBvc2UgdGhlIHByZXNzIGFjdGlvbi4K
LSAgICAgICAgICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBrZXlzKHsgU3RhdGlj
VGV4dFNlYXJjaEtleSwgQ29udHJvbFNlYXJjaEtleSwgR3JhcGhpY1NlYXJjaEtleSwgSGVhZGlu
Z1NlYXJjaEtleSwgTGlua1NlYXJjaEtleSB9KTsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlT
ZWFyY2hDcml0ZXJpYSBjcml0ZXJpYShheE9iaiwgU2VhcmNoRGlyZWN0aW9uTmV4dCwgZW1wdHlT
dHJpbmcoKSwgMiwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIFZlY3RvcjxBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5PiBrZXlzKHsgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6U3RhdGljVGV4dCwg
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Q29udHJvbCwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6
R3JhcGhpYywgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZywgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6TGluayB9KTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJp
YSBjcml0ZXJpYShheE9iaiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dCwgZW1w
dHlTdHJpbmcoKSwgMiwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgIGNyaXRlcmlhLnNlYXJj
aEtleXMgPSBrZXlzOwogICAgICAgICAgICAgYXhPYmotPmZpbmRNYXRjaGluZ09iamVjdHMoJmNy
aXRlcmlhLCByZXN1bHRzKTsKICAgICAgICAgICAgIGlmIChyZXN1bHRzLnNpemUoKSA+IDEpCkBA
IC0yNTk0LDE4ICsyNTgwLDE4IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlP
YmplY3QKIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNv
cnREaXJlY3Rpb24oKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xl
VmFsdWUoKTsKLSAgICBpZiAocm9sZSAhPSBSb3dIZWFkZXJSb2xlICYmIHJvbGUgIT0gQ29sdW1u
SGVhZGVyUm9sZSkKLSAgICAgICAgcmV0dXJuIFNvcnREaXJlY3Rpb25JbnZhbGlkOworICAgIGlm
IChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXIgJiYgcm9sZSAhPSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNv
cnREaXJlY3Rpb246OkludmFsaWQ7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvcnRBdHRy
aWJ1dGUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9zb3J0QXR0cik7CiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHNvcnRBdHRyaWJ1dGUsICJhc2NlbmRpbmciKSkKLSAgICAgICAg
cmV0dXJuIFNvcnREaXJlY3Rpb25Bc2NlbmRpbmc7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShzb3J0QXR0cmlidXRlLCAiZGVzY2VuZGluZyIpKQotICAgICAgICByZXR1cm4g
U29ydERpcmVjdGlvbkRlc2NlbmRpbmc7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U29y
dERpcmVjdGlvbjo6RGVzY2VuZGluZzsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoc29ydEF0dHJpYnV0ZSwgIm90aGVyIikpCi0gICAgICAgIHJldHVybiBTb3J0RGlyZWN0
aW9uT3RoZXI7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6T3Ro
ZXI7CiAgICAgCi0gICAgcmV0dXJuIFNvcnREaXJlY3Rpb25Ob25lOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9uZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzdXBwb3J0c1JhbmdlVmFsdWUoKSBjb25zdApAQCAtMjY5NSw5ICsyNjgxLDkgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0V4cGFuZAogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShleHBhbmRlZCwgInRydWUiKSB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShleHBhbmRlZCwgImZhbHNlIikpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIENvbWJvQm94Um9sZToKLSAgICBj
YXNlIERpc2Nsb3N1cmVUcmlhbmdsZVJvbGU6Ci0gICAgY2FzZSBEZXRhaWxzUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpEaXNjbG9zdXJlVHJpYW5nbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0
YWlsczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjcxNSw3ICsyNzAxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0V4cGFuZGVkKCkgYwogICAgIC8vIFN1bW1hcnkgZWxlbWVudCBzaG91bGQgdXNlIGl0cyBkZXRh
aWxzIHBhcmVudCdzIGV4cGFuZGVkIHN0YXR1cy4KICAgICBpZiAoaXNTdW1tYXJ5KCkpIHsKICAg
ICAgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxp
dHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKnRoaXMsIGZhbHNlLCBbXSAoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1
ZSgpID09IERldGFpbHNSb2xlOworICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlsczsKICAgICAgICAgfSkpCiAgICAgICAgICAg
ICByZXR1cm4gcGFyZW50LT5pc0V4cGFuZGVkKCk7CiAgICAgfQpAQCAtMjcyNiwxMSArMjcxMiwx
MSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRXhwYW5kZWQoKSBjCiBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQ2hlY2tlZCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChy
b2xlVmFsdWUoKSkgewotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1D
aGVja2JveFJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIFJhZGlv
QnV0dG9uUm9sZToKLSAgICBjYXNlIFN3aXRjaFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q2hlY2tCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVj
a2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlN3aXRjaDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc0NiwyNyArMjczMiwyNyBAQCBBY2Nlc3NpYmlsaXR5QnV0
dG9uU3RhdGUgQWNjZXNzaWJpbGl0eU9iCiAgICAgaWYgKGlzVG9nZ2xlQnV0dG9uKCkpIHsKICAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUHJlc3NlZCA9IGdldEF0dHJpYnV0ZShhcmlh
X3ByZXNzZWRBdHRyKTsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGFyaWFQcmVzc2VkLCAidHJ1ZSIpKQotICAgICAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT247
CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjsKICAgICAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFQcmVzc2VkLCAibWl4ZWQi
KSkKLSAgICAgICAgICAgIHJldHVybiBCdXR0b25TdGF0ZU1peGVkOwotICAgICAgICByZXR1cm4g
QnV0dG9uU3RhdGVPZmY7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0
YXRlOjpNaXhlZDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2Zm
OwogICAgIH0KICAgICAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlc3VsdCA9IGdldEF0dHJp
YnV0ZShhcmlhX2NoZWNrZWRBdHRyKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocmVzdWx0LCAidHJ1ZSIpKQotICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVPbjsKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T247CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3VsdCwgIm1peGVkIikpIHsKICAgICAgICAgLy8g
QVJJQSBzYXlzIHRoYXQgcmFkaW8sIG1lbnVpdGVtcmFkaW8sIGFuZCBzd2l0Y2ggZWxlbWVudHMg
bXVzdCBOT1QgZXhwb3NlIGJ1dHRvbiBzdGF0ZSBtaXhlZC4KICAgICAgICAgQWNjZXNzaWJpbGl0
eVJvbGUgYXJpYVJvbGUgPSBhcmlhUm9sZUF0dHJpYnV0ZSgpOwotICAgICAgICBpZiAoYXJpYVJv
bGUgPT0gUmFkaW9CdXR0b25Sb2xlIHx8IGFyaWFSb2xlID09IE1lbnVJdGVtUmFkaW9Sb2xlIHx8
IGFyaWFSb2xlID09IFN3aXRjaFJvbGUpCi0gICAgICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVP
ZmY7Ci0gICAgICAgIHJldHVybiBCdXR0b25TdGF0ZU1peGVkOworICAgICAgICBpZiAoYXJpYVJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uIHx8IGFyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvIHx8IGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTd2l0Y2gpCisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
OjpPZmY7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkOwog
ICAgIH0KICAgICAKICAgICBpZiAoaXNJbmRldGVybWluYXRlKCkpCi0gICAgICAgIHJldHVybiBC
dXR0b25TdGF0ZU1peGVkOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
OjpNaXhlZDsKICAgICAKLSAgICByZXR1cm4gQnV0dG9uU3RhdGVPZmY7CisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOwogfQogCiAvLyBUaGlzIGlzIGEgMS1kaW1lbnNp
b25hbCBzY3JvbGwgb2Zmc2V0IGhlbHBlciBmdW5jdGlvbiB0aGF0J3MgYXBwbGllZApAQCAtMzA2
NSwzNCArMzA1MSwzMiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJ5UGFnZShT
CiAgICAgSW50U2l6ZSBzY3JvbGxTaXplID0gc2Nyb2xsYWJsZUFyZWEtPmNvbnRlbnRzU2l6ZSgp
OwogICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3JvbGxhYmxlQXJlYS0+dmlzaWJs
ZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0
KTsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgUmlnaHQ6IHsKKyAgICBjYXNl
IFNjcm9sbEJ5UGFnZURpcmVjdGlvbjo6UmlnaHQ6IHsKICAgICAgICAgaW50IHNjcm9sbEFtb3Vu
dCA9IHNjcm9sbFZpc2libGVSZWN0LnNpemUoKS53aWR0aCgpOwogICAgICAgICBpbnQgbmV3WCA9
IHNjcm9sbFBvc2l0aW9uLngoKSAtIHNjcm9sbEFtb3VudDsKICAgICAgICAgbmV3U2Nyb2xsUG9z
aXRpb24uc2V0WChzdGQ6Om1heChuZXdYLCAwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIExlZnQ6IHsKKyAgICBjYXNlIFNjcm9sbEJ5UGFnZURpcmVjdGlvbjo6TGVmdDogewog
ICAgICAgICBpbnQgc2Nyb2xsQW1vdW50ID0gc2Nyb2xsVmlzaWJsZVJlY3Quc2l6ZSgpLndpZHRo
KCk7CiAgICAgICAgIGludCBuZXdYID0gc2Nyb2xsQW1vdW50ICsgc2Nyb2xsUG9zaXRpb24ueCgp
OwogICAgICAgICBpbnQgbWF4WCA9IHNjcm9sbFNpemUud2lkdGgoKSAtIHNjcm9sbEFtb3VudDsK
ICAgICAgICAgbmV3U2Nyb2xsUG9zaXRpb24uc2V0WChzdGQ6Om1pbihuZXdYLCBtYXhYKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFVwOiB7CisgICAgY2FzZSBTY3JvbGxCeVBh
Z2VEaXJlY3Rpb246OlVwOiB7CiAgICAgICAgIGludCBzY3JvbGxBbW91bnQgPSBzY3JvbGxWaXNp
YmxlUmVjdC5zaXplKCkuaGVpZ2h0KCk7CiAgICAgICAgIGludCBuZXdZID0gc2Nyb2xsUG9zaXRp
b24ueSgpIC0gc2Nyb2xsQW1vdW50OwogICAgICAgICBuZXdTY3JvbGxQb3NpdGlvbi5zZXRZKHN0
ZDo6bWF4KG5ld1ksIDApKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRG93bjog
eworICAgIGNhc2UgU2Nyb2xsQnlQYWdlRGlyZWN0aW9uOjpEb3duOiB7CiAgICAgICAgIGludCBz
Y3JvbGxBbW91bnQgPSBzY3JvbGxWaXNpYmxlUmVjdC5zaXplKCkuaGVpZ2h0KCk7CiAgICAgICAg
IGludCBuZXdZID0gc2Nyb2xsQW1vdW50ICsgc2Nyb2xsUG9zaXRpb24ueSgpOwogICAgICAgICBp
bnQgbWF4WSA9IHNjcm9sbFNpemUuaGVpZ2h0KCkgLSBzY3JvbGxBbW91bnQ7CiAgICAgICAgIG5l
d1Njcm9sbFBvc2l0aW9uLnNldFkoc3RkOjptaW4obmV3WSwgbWF4WSkpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAg
IGlmIChuZXdTY3JvbGxQb3NpdGlvbiAhPSBzY3JvbGxQb3NpdGlvbikgewpAQCAtMzEwNywxNSAr
MzA5MSwxNSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbEJ5UGFnZShTCiAKIGJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKQogewotICAg
IGlmIChtX2xhc3RLbm93bklzSWdub3JlZFZhbHVlID09IERlZmF1bHRCZWhhdmlvcikKLSAgICAg
ICAgbV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSA/
IElnbm9yZU9iamVjdCA6IEluY2x1ZGVPYmplY3Q7CisgICAgaWYgKG1fbGFzdEtub3duSXNJZ25v
cmVkVmFsdWUgPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9y
KQorICAgICAgICBtX2xhc3RLbm93bklzSWdub3JlZFZhbHVlID0gYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpID8gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0IDogQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdDsKIAotICAgIHJldHVybiBt
X2xhc3RLbm93bklzSWdub3JlZFZhbHVlID09IElnbm9yZU9iamVjdDsKKyAgICByZXR1cm4gbV9s
YXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJ
Z25vcmVPYmplY3Q7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0TGFzdEtub3du
SXNJZ25vcmVkVmFsdWUoYm9vbCBpc0lnbm9yZWQpCiB7Ci0gICAgbV9sYXN0S25vd25Jc0lnbm9y
ZWRWYWx1ZSA9IGlzSWdub3JlZCA/IElnbm9yZU9iamVjdCA6IEluY2x1ZGVPYmplY3Q7CisgICAg
bV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9IGlzSWdub3JlZCA/IEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
OkluY2x1ZGVPYmplY3Q7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6bm90aWZ5SWZJ
Z25vcmVkVmFsdWVDaGFuZ2VkKCkKQEAgLTMxNTEsMjUgKzMxMzUsMjUgQEAgQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eU9iamVjdDo6YgogICAgIC8vIElmIGFyaWEtcHJlc3NlZCBpcyBw
cmVzZW50LCB0aGVuIGl0IHNob3VsZCBiZSBleHBvc2VkIGFzIGEgdG9nZ2xlIGJ1dHRvbi4KICAg
ICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS9zdGF0ZXNfYW5kX3Byb3BlcnRpZXMj
YXJpYS1wcmVzc2VkCiAgICAgaWYgKGFyaWFQcmVzc2VkSXNQcmVzZW50KCkpCi0gICAgICAgIHJl
dHVybiBUb2dnbGVCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OlRvZ2dsZUJ1dHRvbjsKICAgICBpZiAoYXJpYUhhc1BvcHVwKCkpCi0gICAgICAgIHJldHVybiBQ
b3BVcEJ1dHRvblJvbGU7Ci0gICAgLy8gV2UgZG9uJ3QgY29udGVtcGxhdGUgUmFkaW9CdXR0b25S
b2xlLCBhcyBpdCBkZXBlbmRzIG9uIHRoZSBpbnB1dAorICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OlBvcFVwQnV0dG9uOworICAgIC8vIFdlIGRvbid0IGNvbnRlbXBsYXRlIEFjY2Vz
c2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbiwgYXMgaXQgZGVwZW5kcyBvbiB0aGUgaW5wdXQKICAg
ICAvLyB0eXBlLgogCi0gICAgcmV0dXJuIEJ1dHRvblJvbGU7CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXR0b247CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNCdXR0
b24oKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsK
IAotICAgIHJldHVybiByb2xlID09IEJ1dHRvblJvbGUgfHwgcm9sZSA9PSBQb3BVcEJ1dHRvblJv
bGUgfHwgcm9sZSA9PSBUb2dnbGVCdXR0b25Sb2xlOworICAgIHJldHVybiByb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpCdXR0b24gfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBC
dXR0b24gfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOwogfQogCiBi
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQo
KSBjb25zdAogewotICAgIHJldHVybiBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgPT0gSWdub3Jl
T2JqZWN0OworICAgIHJldHVybiBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgPT0gQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogfQogCiAvLyBBUklBIGNvbXBvbmVu
dCBvZiBoaWRkZW4gZGVmaW5pdGlvbi4KQEAgLTMyMTIsMTMgKzMxOTYsMTMgQEAgQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaQogICAgIGJvb2wgdXNlUGFyZW50RGF0YSA9
ICFtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhLmlzTnVsbCgpOwogICAgIAogICAgIGlmICh1c2VQ
YXJlbnREYXRhID8gbV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YS5pc0FSSUFIaWRkZW4gOiBpc0FS
SUFIaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAKICAgICBp
ZiAoaWdub3JlZEZyb21BUklBTW9kYWxQcmVzZW5jZSgpKQotICAgICAgICByZXR1cm4gSWdub3Jl
T2JqZWN0OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdu
b3JlT2JqZWN0OwogICAgIAogICAgIGlmICh1c2VQYXJlbnREYXRhID8gbV9pc0lnbm9yZWRGcm9t
UGFyZW50RGF0YS5pc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIDogaXNQcmVzZW50YXRp
b25hbENoaWxkT2ZBcmlhUm9sZSgpKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0Owog
ICAgIAogICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpOwog
fQpAQCAtMzIzMywxMSArMzIxNywxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vz
c2liaWxpdHlJCiAgICAgaWYgKGF0dHJpYnV0ZUNhY2hlKSB7CiAgICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gaWdub3JlZCA9IGF0dHJpYnV0ZUNhY2hlLT5nZXRJZ25vcmVkKGF4
T2JqZWN0SUQoKSk7CiAgICAgICAgIHN3aXRjaCAoaWdub3JlZCkgewotICAgICAgICBjYXNlIEln
bm9yZU9iamVjdDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJ
Z25vcmVPYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBJbmNs
dWRlT2JqZWN0OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklu
Y2x1ZGVPYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgRGVm
YXVsdEJlaGF2aW9yOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
OkRlZmF1bHRCZWhhdmlvcjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpA
QCAtMzI0Niw3ICszMjMwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5SQogCiAgICAgLy8gSW4gY2FzZSBjb21wdXRpbmcgYXhJc0lnbm9yZWQgZGlzYWJsZXMgYXR0
cmlidXRlIGNhY2hpbmcsIHdlIHNob3VsZCByZWZldGNoIHRoZSBvYmplY3QgdG8gc2VlIGlmIGl0
IGV4aXN0cy4KICAgICBpZiAoY2FjaGUgJiYgKGF0dHJpYnV0ZUNhY2hlID0gY2FjaGUtPmNvbXB1
dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUoKSkpCi0gICAgICAgIGF0dHJpYnV0ZUNhY2hlLT5zZXRJ
Z25vcmVkKGF4T2JqZWN0SUQoKSwgcmVzdWx0ID8gSWdub3JlT2JqZWN0IDogSW5jbHVkZU9iamVj
dCk7CisgICAgICAgIGF0dHJpYnV0ZUNhY2hlLT5zZXRJZ25vcmVkKGF4T2JqZWN0SUQoKSwgcmVz
dWx0ID8gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0IDogQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMzM2OSw3ICszMzUzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c0NvbnRhaW5lZEJ5UAogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlKQorICAgIGlmIChh
cmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbm9kZS0+c2hhZG93SG9z
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxODcg
KzkyLDE4NyBAQCBjbGFzcyBXaWRnZXQ7CiAKIHR5cGVkZWYgdW5zaWduZWQgQVhJRDsKIAotZW51
bSBBY2Nlc3NpYmlsaXR5Um9sZSB7Ci0gICAgQW5ub3RhdGlvblJvbGUgPSAxLAotICAgIEFwcGxp
Y2F0aW9uUm9sZSwKLSAgICBBcHBsaWNhdGlvbkFsZXJ0Um9sZSwKLSAgICBBcHBsaWNhdGlvbkFs
ZXJ0RGlhbG9nUm9sZSwKLSAgICBBcHBsaWNhdGlvbkRpYWxvZ1JvbGUsCi0gICAgQXBwbGljYXRp
b25Hcm91cFJvbGUsCi0gICAgQXBwbGljYXRpb25Mb2dSb2xlLAotICAgIEFwcGxpY2F0aW9uTWFy
cXVlZVJvbGUsCi0gICAgQXBwbGljYXRpb25TdGF0dXNSb2xlLAotICAgIEFwcGxpY2F0aW9uVGV4
dEdyb3VwUm9sZSwKLSAgICBBcHBsaWNhdGlvblRpbWVyUm9sZSwKLSAgICBBdWRpb1JvbGUsCi0g
ICAgQmxvY2txdW90ZVJvbGUsCi0gICAgQnJvd3NlclJvbGUsCi0gICAgQnVzeUluZGljYXRvclJv
bGUsCi0gICAgQnV0dG9uUm9sZSwKLSAgICBDYW52YXNSb2xlLAotICAgIENhcHRpb25Sb2xlLAot
ICAgIENlbGxSb2xlLCAKLSAgICBDaGVja0JveFJvbGUsCi0gICAgQ29sb3JXZWxsUm9sZSwKLSAg
ICBDb2x1bW5Sb2xlLAotICAgIENvbHVtbkhlYWRlclJvbGUsCi0gICAgQ29tYm9Cb3hSb2xlLAot
ICAgIERlZmluaXRpb25Sb2xlLAotICAgIERlc2NyaXB0aW9uTGlzdFJvbGUsCi0gICAgRGVzY3Jp
cHRpb25MaXN0VGVybVJvbGUsCi0gICAgRGVzY3JpcHRpb25MaXN0RGV0YWlsUm9sZSwKLSAgICBE
ZXRhaWxzUm9sZSwKLSAgICBEaXJlY3RvcnlSb2xlLAotICAgIERpc2Nsb3N1cmVUcmlhbmdsZVJv
bGUsCi0gICAgRGl2Um9sZSwKLSAgICBEb2N1bWVudFJvbGUsCi0gICAgRG9jdW1lbnRBcnRpY2xl
Um9sZSwKLSAgICBEb2N1bWVudE1hdGhSb2xlLAotICAgIERvY3VtZW50Tm90ZVJvbGUsCi0gICAg
RHJhd2VyUm9sZSwKLSAgICBFZGl0YWJsZVRleHRSb2xlLAotICAgIEZlZWRSb2xlLAotICAgIEZp
Z3VyZVJvbGUsCi0gICAgRm9vdGVyUm9sZSwKLSAgICBGb290bm90ZVJvbGUsCi0gICAgRm9ybVJv
bGUsCi0gICAgR3JpZFJvbGUsCi0gICAgR3JpZENlbGxSb2xlLAotICAgIEdyb3VwUm9sZSwKLSAg
ICBHcm93QXJlYVJvbGUsCi0gICAgSGVhZGluZ1JvbGUsCi0gICAgSGVscFRhZ1JvbGUsCi0gICAg
SG9yaXpvbnRhbFJ1bGVSb2xlLAotICAgIElnbm9yZWRSb2xlLAotICAgIElubGluZVJvbGUsCi0g
ICAgSW1hZ2VSb2xlLAotICAgIEltYWdlTWFwUm9sZSwKLSAgICBJbWFnZU1hcExpbmtSb2xlLAot
ICAgIEluY3JlbWVudG9yUm9sZSwKLSAgICBMYWJlbFJvbGUsCi0gICAgTGFuZG1hcmtCYW5uZXJS
b2xlLAotICAgIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUsCi0gICAgTGFuZG1hcmtDb250ZW50
SW5mb1JvbGUsCi0gICAgTGFuZG1hcmtEb2NSZWdpb25Sb2xlLAotICAgIExhbmRtYXJrTWFpblJv
bGUsCi0gICAgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZSwKLSAgICBMYW5kbWFya1JlZ2lvblJvbGUs
Ci0gICAgTGFuZG1hcmtTZWFyY2hSb2xlLAotICAgIExlZ2VuZFJvbGUsCi0gICAgTGlua1JvbGUs
Ci0gICAgTGlzdFJvbGUsCi0gICAgTGlzdEJveFJvbGUsCi0gICAgTGlzdEJveE9wdGlvblJvbGUs
Ci0gICAgTGlzdEl0ZW1Sb2xlLAotICAgIExpc3RNYXJrZXJSb2xlLAotICAgIE1hcmtSb2xlLAot
ICAgIE1hdGhFbGVtZW50Um9sZSwKLSAgICBNYXR0ZVJvbGUsCi0gICAgTWVudVJvbGUsCi0gICAg
TWVudUJhclJvbGUsCi0gICAgTWVudUJ1dHRvblJvbGUsCi0gICAgTWVudUl0ZW1Sb2xlLAotICAg
IE1lbnVJdGVtQ2hlY2tib3hSb2xlLAotICAgIE1lbnVJdGVtUmFkaW9Sb2xlLAotICAgIE1lbnVM
aXN0UG9wdXBSb2xlLAotICAgIE1lbnVMaXN0T3B0aW9uUm9sZSwKLSAgICBPdXRsaW5lUm9sZSwK
LSAgICBQYXJhZ3JhcGhSb2xlLAotICAgIFBvcFVwQnV0dG9uUm9sZSwKLSAgICBQcmVSb2xlLAot
ICAgIFByZXNlbnRhdGlvbmFsUm9sZSwKLSAgICBQcm9ncmVzc0luZGljYXRvclJvbGUsCi0gICAg
UmFkaW9CdXR0b25Sb2xlLAotICAgIFJhZGlvR3JvdXBSb2xlLAotICAgIFJvd0hlYWRlclJvbGUs
Ci0gICAgUm93Um9sZSwKLSAgICBSb3dHcm91cFJvbGUsCi0gICAgUnVieUJhc2VSb2xlLAotICAg
IFJ1YnlCbG9ja1JvbGUsCi0gICAgUnVieUlubGluZVJvbGUsCi0gICAgUnVieVJ1blJvbGUsCi0g
ICAgUnVieVRleHRSb2xlLAotICAgIFJ1bGVyUm9sZSwKLSAgICBSdWxlck1hcmtlclJvbGUsCi0g
ICAgU2Nyb2xsQXJlYVJvbGUsCi0gICAgU2Nyb2xsQmFyUm9sZSwKLSAgICBTZWFyY2hGaWVsZFJv
bGUsCi0gICAgU2hlZXRSb2xlLAotICAgIFNsaWRlclJvbGUsCi0gICAgU2xpZGVyVGh1bWJSb2xl
LAotICAgIFNwaW5CdXR0b25Sb2xlLAotICAgIFNwaW5CdXR0b25QYXJ0Um9sZSwKLSAgICBTcGxp
dEdyb3VwUm9sZSwKLSAgICBTcGxpdHRlclJvbGUsCi0gICAgU3RhdGljVGV4dFJvbGUsCi0gICAg
U3VtbWFyeVJvbGUsCi0gICAgU3dpdGNoUm9sZSwKLSAgICBTeXN0ZW1XaWRlUm9sZSwKLSAgICBT
VkdSb290Um9sZSwKLSAgICBTVkdUZXh0Um9sZSwKLSAgICBTVkdUU3BhblJvbGUsCi0gICAgU1ZH
VGV4dFBhdGhSb2xlLAotICAgIFRhYkdyb3VwUm9sZSwKLSAgICBUYWJMaXN0Um9sZSwKLSAgICBU
YWJQYW5lbFJvbGUsICAgICAgICAgICAgCi0gICAgVGFiUm9sZSwKLSAgICBUYWJsZVJvbGUsCi0g
ICAgVGFibGVIZWFkZXJDb250YWluZXJSb2xlLAotICAgIFRleHRBcmVhUm9sZSwKLSAgICBUZXh0
R3JvdXBSb2xlLAotICAgIFRlcm1Sb2xlLAotICAgIFRpbWVSb2xlLAotICAgIFRyZWVSb2xlLAot
ICAgIFRyZWVHcmlkUm9sZSwKLSAgICBUcmVlSXRlbVJvbGUsCi0gICAgVGV4dEZpZWxkUm9sZSwK
LSAgICBUb2dnbGVCdXR0b25Sb2xlLAotICAgIFRvb2xiYXJSb2xlLAotICAgIFVua25vd25Sb2xl
LAotICAgIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZSwKLSAgICBWYWx1ZUluZGljYXRvclJvbGUs
Ci0gICAgVmlkZW9Sb2xlLAotICAgIFdlYkFwcGxpY2F0aW9uUm9sZSwKLSAgICBXZWJBcmVhUm9s
ZSwKLSAgICBXZWJDb3JlTGlua1JvbGUsCi0gICAgV2luZG93Um9sZSwKK2VudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eVJvbGUgeworICAgIEFubm90YXRpb24gPSAxLAorICAgIEFwcGxpY2F0aW9uLAor
ICAgIEFwcGxpY2F0aW9uQWxlcnQsCisgICAgQXBwbGljYXRpb25BbGVydERpYWxvZywKKyAgICBB
cHBsaWNhdGlvbkRpYWxvZywKKyAgICBBcHBsaWNhdGlvbkdyb3VwLAorICAgIEFwcGxpY2F0aW9u
TG9nLAorICAgIEFwcGxpY2F0aW9uTWFycXVlZSwKKyAgICBBcHBsaWNhdGlvblN0YXR1cywKKyAg
ICBBcHBsaWNhdGlvblRleHRHcm91cCwKKyAgICBBcHBsaWNhdGlvblRpbWVyLAorICAgIEF1ZGlv
LAorICAgIEJsb2NrcXVvdGUsCisgICAgQnJvd3NlciwKKyAgICBCdXN5SW5kaWNhdG9yLAorICAg
IEJ1dHRvbiwKKyAgICBDYW52YXMsCisgICAgQ2FwdGlvbiwKKyAgICBDZWxsLAorICAgIENoZWNr
Qm94LAorICAgIENvbG9yV2VsbCwKKyAgICBDb2x1bW4sCisgICAgQ29sdW1uSGVhZGVyLAorICAg
IENvbWJvQm94LAorICAgIERlZmluaXRpb24sCisgICAgRGVzY3JpcHRpb25MaXN0LAorICAgIERl
c2NyaXB0aW9uTGlzdFRlcm0sCisgICAgRGVzY3JpcHRpb25MaXN0RGV0YWlsLAorICAgIERldGFp
bHMsCisgICAgRGlyZWN0b3J5LAorICAgIERpc2Nsb3N1cmVUcmlhbmdsZSwKKyAgICBEaXYsCisg
ICAgRG9jdW1lbnQsCisgICAgRG9jdW1lbnRBcnRpY2xlLAorICAgIERvY3VtZW50TWF0aCwKKyAg
ICBEb2N1bWVudE5vdGUsCisgICAgRHJhd2VyLAorICAgIEVkaXRhYmxlVGV4dCwKKyAgICBGZWVk
LAorICAgIEZpZ3VyZSwKKyAgICBGb290ZXIsCisgICAgRm9vdG5vdGUsCisgICAgRm9ybSwKKyAg
ICBHcmlkLAorICAgIEdyaWRDZWxsLAorICAgIEdyb3VwLAorICAgIEdyb3dBcmVhLAorICAgIEhl
YWRpbmcsCisgICAgSGVscFRhZywKKyAgICBIb3Jpem9udGFsUnVsZSwKKyAgICBJZ25vcmVkLAor
ICAgIElubGluZSwKKyAgICBJbWFnZSwKKyAgICBJbWFnZU1hcCwKKyAgICBJbWFnZU1hcExpbmss
CisgICAgSW5jcmVtZW50b3IsCisgICAgTGFiZWwsCisgICAgTGFuZG1hcmtCYW5uZXIsCisgICAg
TGFuZG1hcmtDb21wbGVtZW50YXJ5LAorICAgIExhbmRtYXJrQ29udGVudEluZm8sCisgICAgTGFu
ZG1hcmtEb2NSZWdpb24sCisgICAgTGFuZG1hcmtNYWluLAorICAgIExhbmRtYXJrTmF2aWdhdGlv
biwKKyAgICBMYW5kbWFya1JlZ2lvbiwKKyAgICBMYW5kbWFya1NlYXJjaCwKKyAgICBMZWdlbmQs
CisgICAgTGluaywKKyAgICBMaXN0LAorICAgIExpc3RCb3gsCisgICAgTGlzdEJveE9wdGlvbiwK
KyAgICBMaXN0SXRlbSwKKyAgICBMaXN0TWFya2VyLAorICAgIE1hcmssCisgICAgTWF0aEVsZW1l
bnQsCisgICAgTWF0dGUsCisgICAgTWVudSwKKyAgICBNZW51QmFyLAorICAgIE1lbnVCdXR0b24s
CisgICAgTWVudUl0ZW0sCisgICAgTWVudUl0ZW1DaGVja2JveCwKKyAgICBNZW51SXRlbVJhZGlv
LAorICAgIE1lbnVMaXN0UG9wdXAsCisgICAgTWVudUxpc3RPcHRpb24sCisgICAgT3V0bGluZSwK
KyAgICBQYXJhZ3JhcGgsCisgICAgUG9wVXBCdXR0b24sCisgICAgUHJlLAorICAgIFByZXNlbnRh
dGlvbmFsLAorICAgIFByb2dyZXNzSW5kaWNhdG9yLAorICAgIFJhZGlvQnV0dG9uLAorICAgIFJh
ZGlvR3JvdXAsCisgICAgUm93SGVhZGVyLAorICAgIFJvdywKKyAgICBSb3dHcm91cCwKKyAgICBS
dWJ5QmFzZSwKKyAgICBSdWJ5QmxvY2ssCisgICAgUnVieUlubGluZSwKKyAgICBSdWJ5UnVuLAor
ICAgIFJ1YnlUZXh0LAorICAgIFJ1bGVyLAorICAgIFJ1bGVyTWFya2VyLAorICAgIFNjcm9sbEFy
ZWEsCisgICAgU2Nyb2xsQmFyLAorICAgIFNlYXJjaEZpZWxkLAorICAgIFNoZWV0LAorICAgIFNs
aWRlciwKKyAgICBTbGlkZXJUaHVtYiwKKyAgICBTcGluQnV0dG9uLAorICAgIFNwaW5CdXR0b25Q
YXJ0LAorICAgIFNwbGl0R3JvdXAsCisgICAgU3BsaXR0ZXIsCisgICAgU3RhdGljVGV4dCwKKyAg
ICBTdW1tYXJ5LAorICAgIFN3aXRjaCwKKyAgICBTeXN0ZW1XaWRlLAorICAgIFNWR1Jvb3QsCisg
ICAgU1ZHVGV4dCwKKyAgICBTVkdUU3BhbiwKKyAgICBTVkdUZXh0UGF0aCwKKyAgICBUYWJHcm91
cCwKKyAgICBUYWJMaXN0LAorICAgIFRhYlBhbmVsLAorICAgIFRhYiwKKyAgICBUYWJsZSwKKyAg
ICBUYWJsZUhlYWRlckNvbnRhaW5lciwKKyAgICBUZXh0QXJlYSwKKyAgICBUZXh0R3JvdXAsCisg
ICAgVGVybSwKKyAgICBUaW1lLAorICAgIFRyZWUsCisgICAgVHJlZUdyaWQsCisgICAgVHJlZUl0
ZW0sCisgICAgVGV4dEZpZWxkLAorICAgIFRvZ2dsZUJ1dHRvbiwKKyAgICBUb29sYmFyLAorICAg
IFVua25vd24sCisgICAgVXNlckludGVyZmFjZVRvb2x0aXAsCisgICAgVmFsdWVJbmRpY2F0b3Is
CisgICAgVmlkZW8sCisgICAgV2ViQXBwbGljYXRpb24sCisgICAgV2ViQXJlYSwKKyAgICBXZWJD
b3JlTGluaywKKyAgICBXaW5kb3csCiB9OwogCi1lbnVtIEFjY2Vzc2liaWxpdHlUZXh0U291cmNl
IHsKLSAgICBBbHRlcm5hdGl2ZVRleHQsCi0gICAgQ2hpbGRyZW5UZXh0LAotICAgIFN1bW1hcnlU
ZXh0LAotICAgIEhlbHBUZXh0LAotICAgIFZpc2libGVUZXh0LAotICAgIFRpdGxlVGFnVGV4dCwK
LSAgICBQbGFjZWhvbGRlclRleHQsCi0gICAgTGFiZWxCeUVsZW1lbnRUZXh0LAotICAgIFRpdGxl
VGV4dCwKLSAgICBTdWJ0aXRsZVRleHQsCi0gICAgQWN0aW9uVGV4dCwKK2VudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eVRleHRTb3VyY2UgeworICAgIEFsdGVybmF0aXZlLAorICAgIENoaWxkcmVuLAor
ICAgIFN1bW1hcnksCisgICAgSGVscCwKKyAgICBWaXNpYmxlLAorICAgIFRpdGxlVGFnLAorICAg
IFBsYWNlaG9sZGVyLAorICAgIExhYmVsQnlFbGVtZW50LAorICAgIFRpdGxlLAorICAgIFN1YnRp
dGxlLAorICAgIEFjdGlvbiwKIH07CiAgICAgCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eVRleHQgewog
ICAgIFN0cmluZyB0ZXh0OwogICAgIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlIHRleHRTb3VyY2U7
Ci0gICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gdGV4dEVsZW1lbnRzOwor
ICAgIFZlY3RvcjxSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4+IHRleHRFbGVtZW50czsKICAgICAK
ICAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxp
dHlUZXh0U291cmNlJiBzKQotICAgIDogdGV4dCh0KQotICAgICwgdGV4dFNvdXJjZShzKQorICAg
ICAgICA6IHRleHQodCkKKyAgICAgICAgLCB0ZXh0U291cmNlKHMpCiAgICAgeyB9CiAKLSAgICBB
Y2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlJiBzLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBlbGVtZW50cykK
LSAgICA6IHRleHQodCkKLSAgICAsIHRleHRTb3VyY2UocykKLSAgICAsIHRleHRFbGVtZW50cyhX
VEZNb3ZlKGVsZW1lbnRzKSkKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcmIHQs
IGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlJiBzLCBWZWN0b3I8UmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+PiBlbGVtZW50cykKKyAgICAgICAgOiB0ZXh0KHQpCisgICAgICAgICwgdGV4dFNv
dXJjZShzKQorICAgICAgICAsIHRleHRFbGVtZW50cyhXVEZNb3ZlKGVsZW1lbnRzKSkKICAgICB7
IH0KIAotICAgIEFjY2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNz
aWJpbGl0eVRleHRTb3VyY2UmIHMsIGNvbnN0IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBl
bGVtZW50KQotICAgIDogdGV4dCh0KQotICAgICwgdGV4dFNvdXJjZShzKQorICAgIEFjY2Vzc2li
aWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2Um
IHMsIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYmIGVsZW1lbnQpCisgICAgICAgIDogdGV4dCh0
KQorICAgICAgICAsIHRleHRTb3VyY2UocykKICAgICB7Ci0gICAgICAgIHRleHRFbGVtZW50cy5h
cHBlbmQoZWxlbWVudCk7CisgICAgICAgIHRleHRFbGVtZW50cy5hcHBlbmQoV1RGTW92ZShlbGVt
ZW50KSk7CiAgICAgfQogfTsKIApAQCAtMjk3LDk4ICsyOTcsOTUgQEAgc3RydWN0IEFjY2Vzc2li
aWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZQogLy8gVXNlIHRoaXMgc3RydWN0IHRvIHN0b3JlIHRo
ZSBpc0lnbm9yZWQgZGF0YSB0aGF0IGRlcGVuZHMgb24gdGhlIHBhcmVudHMsIHNvIHRoYXQgaW4g
YWRkQ2hpbGRyZW4oKQogLy8gd2UgYXZvaWQgZ29pbmcgdXAgdGhlIHBhcmVudCBjaGFpbiBmb3Ig
ZWFjaCBlbGVtZW50IHdoaWxlIHRyYXZlcnNpbmcgdGhlIHRyZWUgd2l0aCB1c2VmdWwgaW5mb3Jt
YXRpb24gYWxyZWFkeS4KIHN0cnVjdCBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEgewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudDsKLSAgICBib29sIGlzQVJJQUhp
ZGRlbjsKLSAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGU7Ci0gICAgYm9v
bCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnQgeyBudWxscHRyIH07CisgICAgYm9vbCBpc0FSSUFIaWRkZW4geyBmYWxzZSB9OworICAg
IGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSB7IGZhbHNlIH07CisgICAgYm9v
bCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCB7IGZhbHNlIH07CiAgICAgCiAgICAgQWNjZXNz
aWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCA9IG51bGxwdHIpCiAgICAgICAgIDogcGFyZW50KHBhcmVudCkKLSAgICAgICAgLCBpc0FSSUFI
aWRkZW4oZmFsc2UpCi0gICAgICAgICwgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZShm
YWxzZSkKLSAgICAgICAgLCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudChmYWxzZSkKLSAgICAg
ICAgeyB9Ci0gICAgCisgICAgeyB9CisKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
ICFwYXJlbnQ7IH0KIH07CiAgICAgCi1lbnVtIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiB7Ci0g
ICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWwsCi0gICAgQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uSG9yaXpvbnRhbCwKLSAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25VbmRlZmlu
ZWQsCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiB7CisgICAgVmVydGljYWws
CisgICAgSG9yaXpvbnRhbCwKKyAgICBVbmRlZmluZWQsCiB9OwogICAgIAotZW51bSBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uIHsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbiB7CiAgICAgSW5jbHVkZU9iamVjdCwKICAgICBJZ25vcmVPYmplY3QsCiAgICAgRGVm
YXVsdEJlaGF2aW9yLAogfTsKICAgICAKLWVudW0gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIHsK
LSAgICBCdXR0b25TdGF0ZU9mZiA9IDAsCi0gICAgQnV0dG9uU3RhdGVPbiwgCi0gICAgQnV0dG9u
U3RhdGVNaXhlZCwKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIHsKKyAgICBP
ZmYgPSAwLAorICAgIE9uLAorICAgIE1peGVkLAogfTsKICAgICAKLWVudW0gQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb24gewotICAgIFNvcnREaXJlY3Rpb25Ob25lLAotICAgIFNvcnREaXJlY3Rp
b25Bc2NlbmRpbmcsCi0gICAgU29ydERpcmVjdGlvbkRlc2NlbmRpbmcsCi0gICAgU29ydERpcmVj
dGlvbk90aGVyLAotICAgIFNvcnREaXJlY3Rpb25JbnZhbGlkCitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlTb3J0RGlyZWN0aW9uIHsKKyAgICBOb25lLAorICAgIEFzY2VuZGluZywKKyAgICBEZXNj
ZW5kaW5nLAorICAgIE90aGVyLAorICAgIEludmFsaWQsCiB9OwogCi1lbnVtIEFjY2Vzc2liaWxp
dHlTZWFyY2hEaXJlY3Rpb24gewotICAgIFNlYXJjaERpcmVjdGlvbk5leHQgPSAxLAotICAgIFNl
YXJjaERpcmVjdGlvblByZXZpb3VzCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJl
Y3Rpb24geworICAgIE5leHQgPSAxLAorICAgIFByZXZpb3VzLAogfTsKIAotZW51bSBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5IHsKLSAgICBBbnlUeXBlU2VhcmNoS2V5ID0gMSwKLSAgICBBcnRpY2xl
U2VhcmNoS2V5LAotICAgIEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXksCi0gICAgQmxvY2tx
dW90ZVNlYXJjaEtleSwKLSAgICBCb2xkRm9udFNlYXJjaEtleSwKLSAgICBCdXR0b25TZWFyY2hL
ZXksCi0gICAgQ2hlY2tCb3hTZWFyY2hLZXksCi0gICAgQ29udHJvbFNlYXJjaEtleSwKLSAgICBE
aWZmZXJlbnRUeXBlU2VhcmNoS2V5LAotICAgIEZvbnRDaGFuZ2VTZWFyY2hLZXksCi0gICAgRm9u
dENvbG9yQ2hhbmdlU2VhcmNoS2V5LAotICAgIEZyYW1lU2VhcmNoS2V5LAotICAgIEdyYXBoaWNT
ZWFyY2hLZXksCi0gICAgSGVhZGluZ0xldmVsMVNlYXJjaEtleSwKLSAgICBIZWFkaW5nTGV2ZWwy
U2VhcmNoS2V5LAotICAgIEhlYWRpbmdMZXZlbDNTZWFyY2hLZXksCi0gICAgSGVhZGluZ0xldmVs
NFNlYXJjaEtleSwKLSAgICBIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5LAotICAgIEhlYWRpbmdMZXZl
bDZTZWFyY2hLZXksCi0gICAgSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSwKLSAgICBIZWFkaW5n
U2VhcmNoS2V5LAotICAgIEhpZ2hsaWdodGVkU2VhcmNoS2V5LAotICAgIEl0YWxpY0ZvbnRTZWFy
Y2hLZXksCi0gICAgTGFuZG1hcmtTZWFyY2hLZXksCi0gICAgTGlua1NlYXJjaEtleSwKLSAgICBM
aXN0U2VhcmNoS2V5LAotICAgIExpdmVSZWdpb25TZWFyY2hLZXksCi0gICAgTWlzc3BlbGxlZFdv
cmRTZWFyY2hLZXksCi0gICAgT3V0bGluZVNlYXJjaEtleSwKLSAgICBQbGFpblRleHRTZWFyY2hL
ZXksCi0gICAgUmFkaW9Hcm91cFNlYXJjaEtleSwKLSAgICBTYW1lVHlwZVNlYXJjaEtleSwKLSAg
ICBTdGF0aWNUZXh0U2VhcmNoS2V5LAotICAgIFN0eWxlQ2hhbmdlU2VhcmNoS2V5LAotICAgIFRh
YmxlU2FtZUxldmVsU2VhcmNoS2V5LAotICAgIFRhYmxlU2VhcmNoS2V5LAotICAgIFRleHRGaWVs
ZFNlYXJjaEtleSwKLSAgICBVbmRlcmxpbmVTZWFyY2hLZXksCi0gICAgVW52aXNpdGVkTGlua1Nl
YXJjaEtleSwKLSAgICBWaXNpdGVkTGlua1NlYXJjaEtleQorZW51bSBjbGFzcyBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5IHsKKyAgICBBbnlUeXBlID0gMSwKKyAgICBBcnRpY2xlLAorICAgIEJsb2Nr
cXVvdGVTYW1lTGV2ZWwsCisgICAgQmxvY2txdW90ZSwKKyAgICBCb2xkRm9udCwKKyAgICBCdXR0
b24sCisgICAgQ2hlY2tCb3gsCisgICAgQ29udHJvbCwKKyAgICBEaWZmZXJlbnRUeXBlLAorICAg
IEZvbnRDaGFuZ2UsCisgICAgRm9udENvbG9yQ2hhbmdlLAorICAgIEZyYW1lLAorICAgIEdyYXBo
aWMsCisgICAgSGVhZGluZ0xldmVsMSwKKyAgICBIZWFkaW5nTGV2ZWwyLAorICAgIEhlYWRpbmdM
ZXZlbDMsCisgICAgSGVhZGluZ0xldmVsNCwKKyAgICBIZWFkaW5nTGV2ZWw1LAorICAgIEhlYWRp
bmdMZXZlbDYsCisgICAgSGVhZGluZ1NhbWVMZXZlbCwKKyAgICBIZWFkaW5nLAorICAgIEhpZ2hs
aWdodGVkLAorICAgIEl0YWxpY0ZvbnQsCisgICAgTGFuZG1hcmssCisgICAgTGluaywKKyAgICBM
aXN0LAorICAgIExpdmVSZWdpb24sCisgICAgTWlzc3BlbGxlZFdvcmQsCisgICAgT3V0bGluZSwK
KyAgICBQbGFpblRleHQsCisgICAgUmFkaW9Hcm91cCwKKyAgICBTYW1lVHlwZSwKKyAgICBTdGF0
aWNUZXh0LAorICAgIFN0eWxlQ2hhbmdlLAorICAgIFRhYmxlU2FtZUxldmVsLAorICAgIFRhYmxl
LAorICAgIFRleHRGaWVsZCwKKyAgICBVbmRlcmxpbmUsCisgICAgVW52aXNpdGVkTGluaywKKyAg
ICBWaXNpdGVkTGluaywKIH07CiAKLWVudW0gQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZv
ckJvdW5kcyB7Ci0gICAgRmlyc3RWaXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMsCi0gICAgTGFzdFZp
c2libGVQb3NpdGlvbkZvckJvdW5kcworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBv
c2l0aW9uRm9yQm91bmRzIHsKKyAgICBGaXJzdCwKKyAgICBMYXN0LAogfTsKIAogc3RydWN0IEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7CkBAIC00MTAsNyArNDA3LDcgQEAgc3RydWN0IEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7CiAgICAgeyB9CiB9OwogICAgIAotZW51bSBBY2Nl
c3NpYmlsaXR5RGV0YWNobWVudFR5cGUgeyBDYWNoZURlc3Ryb3llZCwgRWxlbWVudERlc3Ryb3ll
ZCB9OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgeyBDYWNoZURlc3Ry
b3llZCwgRWxlbWVudERlc3Ryb3llZCB9OwogCiBzdHJ1Y3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
ewogCkBAIC00NTAsMTggKzQ0NywxOCBAQCBzdHJ1Y3QgUGxhaW5UZXh0UmFuZ2UgewogICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXN0YXJ0ICYmICFsZW5ndGg7IH0KIH07CiAKLWVu
dW0gQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eSB7Ci0gICAgRmluZEFuZFJlcGxhY2VB
Y3Rpdml0eSwKLSAgICBGaW5kQW5kU2VsZWN0QWN0aXZpdHksCitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlTZWxlY3RUZXh0QWN0aXZpdHkgeworICAgIEZpbmRBbmRSZXBsYWNlLAorICAgIEZpbmRB
bmRTZWxlY3QsCiAgICAgRmluZEFuZENhcGl0YWxpemUsCiAgICAgRmluZEFuZExvd2VyY2FzZSwK
ICAgICBGaW5kQW5kVXBwZXJjYXNlCiB9OwogCi1lbnVtIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0
QW1iaWd1aXR5UmVzb2x1dGlvbiB7Ci0gICAgQ2xvc2VzdEFmdGVyU2VsZWN0aW9uQW1iaWd1aXR5
UmVzb2x1dGlvbiwKLSAgICBDbG9zZXN0QmVmb3JlU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlv
biwKLSAgICBDbG9zZXN0VG9TZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uCitlbnVtIGNsYXNz
IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbiB7CisgICAgQ2xvc2Vz
dEFmdGVyLAorICAgIENsb3Nlc3RCZWZvcmUsCisgICAgQ2xvc2VzdFRvCiB9OwogCiBzdHJ1Y3Qg
QWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSB7CkBAIC00NzcsMTYgKzQ3NCwxNiBAQCBz
dHJ1Y3QgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSB7CiAgICAgeyB9CiB9OwogCi1l
bnVtIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1YnNjcmlwdCwgU3VwZXJz
Y3JpcHQgfTsKLWVudW0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgeyBQ
cmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vic2NyaXB0LCBQb3N0U3VwZXJzY3Jp
cHQgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vi
c2NyaXB0LCBTdXBlcnNjcmlwdCB9OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJz
Y3JpcHQsIFBvc3RTdXBlcnNjcmlwdCB9OwogCi1lbnVtIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVu
dFN0YXRlIHsgQVJJQUN1cnJlbnRGYWxzZSwgQVJJQUN1cnJlbnRUcnVlLCBBUklBQ3VycmVudFBh
Z2UsIEFSSUFDdXJyZW50U3RlcCwgQVJJQUN1cnJlbnRMb2NhdGlvbiwgQVJJQUN1cnJlbnREYXRl
LCBBUklBQ3VycmVudFRpbWUgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3RlcCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsK
ICAgICAKIGJvb2wgbm9kZUhhc1ByZXNlbnRhdGlvblJvbGUoTm9kZSopOwogICAgIAogY2xhc3Mg
QWNjZXNzaWJpbGl0eU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IHsKIHByb3RlY3RlZDoKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCgpID0gZGVmYXVsdDsKICAgICAKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5B
Y2Nlc3NpYmlsaXR5T2JqZWN0KCk7CkBAIC01MTcsNyArNTE0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEltYWdlTWFwUm9sZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlTWFwKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOyB9CiAgICAgdmlydHVhbCBib29sIGlzTmF0
aXZlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0lt
YWdlQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQ
YXNzd29yZEZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTUyNSwxMSArNTIyLDEx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhc3N3b3JkRmll
bGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgYm9vbCBpc1dlYkFyZWEoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBXZWJB
cmVhUm9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQ2hlY2tCb3hSb2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmFkaW9C
dXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBSYWRpb0J1dHRvblJvbGU7IH0K
KyAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpXZWJBcmVhOyB9CisgICAgdmlydHVhbCBib29sIGlzQ2hlY2tib3goKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc05hdGl2ZUxpc3RCb3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wg
aXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTGlzdEJveFJvbGU7IH0K
KyAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlzdEJveE9wdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFUaW1l
bGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01NTksNDMgKzU1Niw0MyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzTWVudUxpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gU3BpbkJ1dHRvblJvbGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGlu
QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlNwaW5CdXR0b247IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGluQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFydCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTW9ja09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9s
TGFiZWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlh
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3dpdGNoKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU3dpdGNoUm9sZTsgfQotICAgIGJvb2wgaXNUb2dn
bGVCdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBUb2dnbGVCdXR0b25Sb2xl
OyB9CisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2g7IH0KKyAgICBib29sIGlzVG9nZ2xlQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRv
bjsgfQogICAgIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNBUklBVGV4
dENvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSBjb25z
dDsKLSAgICBib29sIGlzVGFiTGlzdCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRh
Ykxpc3RSb2xlOyB9Ci0gICAgYm9vbCBpc1RhYkl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBUYWJSb2xlOyB9Ci0gICAgYm9vbCBpc1JhZGlvR3JvdXAoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBSYWRpb0dyb3VwUm9sZTsgfQotICAgIGJvb2wgaXNDb21ib0JveCgp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IENvbWJvQm94Um9sZTsgfQotICAgIGJvb2wg
aXNUcmVlKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVHJlZVJvbGU7IH0KLSAgICBi
b29sIGlzVHJlZUdyaWQoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBUcmVlR3JpZFJv
bGU7IH0KLSAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBUcmVlSXRlbVJvbGU7IH0KLSAgICBib29sIGlzU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gU2Nyb2xsQmFyUm9sZTsgfQorICAgIGJvb2wgaXNUYWJMaXN0KCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q7IH0K
KyAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpUYWI7IH0KKyAgICBib29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOyB9CisgICAg
Ym9vbCBpc0NvbWJvQm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNvbWJvQm94OyB9CisgICAgYm9vbCBpc1RyZWUoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZTsgfQorICAgIGJvb2wgaXNUcmVl
R3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpU
cmVlR3JpZDsgfQorICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQorICAgIGJvb2wgaXNTY3JvbGxi
YXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Ny
b2xsQmFyOyB9CiAgICAgYm9vbCBpc0J1dHRvbigpIGNvbnN0OwotICAgIGJvb2wgaXNMaXN0SXRl
bSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IExpc3RJdGVtUm9sZTsgfQorICAgIGJv
b2wgaXNMaXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0SXRlbTsgfQogICAgIGJvb2wgaXNDaGVja2JveE9yUmFkaW8oKSBjb25zdCB7
IHJldHVybiBpc0NoZWNrYm94KCkgfHwgaXNSYWRpb0J1dHRvbigpOyB9Ci0gICAgYm9vbCBpc1Nj
cm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBTY3JvbGxBcmVhUm9sZTsg
fQotICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBDYW52
YXNSb2xlOyB9Ci0gICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gUG9wVXBCdXR0b25Sb2xlOyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsg
fQorICAgIGJvb2wgaXNDYW52YXMoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q2FudmFzOyB9CisgICAgYm9vbCBpc1BvcFVwQnV0dG9uKCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOyB9
CiAgICAgYm9vbCBpc0Jsb2NrcXVvdGUoKSBjb25zdDsKICAgICBib29sIGlzTGFuZG1hcmsoKSBj
b25zdDsKLSAgICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gQ29sb3JXZWxsUm9sZTsgfQorICAgIGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCB7IHJldHVy
biByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsOyB9CiAgICAgYm9v
bCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0OwotICAg
IGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNwbGl0dGVy
Um9sZTsgfQotICAgIGJvb2wgaXNUb29sYmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gVG9vbGJhclJvbGU7IH0KKyAgICBib29sIGlzU3BsaXR0ZXIoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI7IH0KKyAgICBib29sIGlz
VG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpUb29sYmFyOyB9CiAgICAgYm9vbCBpc1N0eWxlRm9ybWF0R3JvdXAoKSBjb25zdDsKICAgICBi
b29sIGlzU3Vic2NyaXB0U3R5bGVHcm91cCgpIGNvbnN0OwogICAgIGJvb2wgaXNTdXBlcnNjcmlw
dFN0eWxlR3JvdXAoKSBjb25zdDsKICAgICBib29sIGlzRmlndXJlRWxlbWVudCgpIGNvbnN0Owot
ICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU3VtbWFy
eVJvbGU7IH0KKyAgICBib29sIGlzU3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OyB9CiAgICAgYm9vbCBpc091dHB1dCgpIGNv
bnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpAQCAtNjI4LDcgKzYyNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFz
U2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaGFzU2FtZUZvbnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzU3RhdGljVGV4dCgpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IFN0YXRpY1RleHRSb2xlOyB9CisgICAgYm9vbCBpc1N0YXRpY1Rl
eHQoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Rh
dGljVGV4dDsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNVbmRlcmxpbmUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIGJvb2wgaGFzSGlnaGxpZ2h0aW5nKCkgY29uc3Q7CiAKQEAgLTc1OSw3
ICs3NTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jy
ZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24pIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gVW5rbm93
blJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRl
KCkgY29uc3QgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGls
ZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGluaGVyaXRz
UHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEwMDgsNyAr
MTAwNSw3IEBAIHB1YmxpYzoKICAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBw
b2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
ICAgICAKLSAgICBlbnVtIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBS
aWdodCB9OworICAgIGVudW0gY2xhc3MgU2Nyb2xsQnlQYWdlRGlyZWN0aW9uIHsgVXAsIERvd24s
IExlZnQsIFJpZ2h0IH07CiAgICAgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdlRGlyZWN0
aW9uKSBjb25zdDsKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OwogICAgIElu
dFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Q7ICAgIApAQCAtMTEwMiw3ICsxMDk5LDcg
QEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdDsKICNlbHNlCiAgICAgYm9vbCBhY2Nlc3Np
YmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOyB9CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlv
cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMTM1LDE0ICsxMTMyLDE0IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hpbGQoQWNj
ZXNzaWJpbGl0eU9iamVjdCopOwogICAgIAogcHJvdGVjdGVkOgotICAgIEFYSUQgbV9pZDsKKyAg
ICBBWElEIG1faWQgeyAwIH07CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fY2hp
bGRyZW47Ci0gICAgbXV0YWJsZSBib29sIG1faGF2ZUNoaWxkcmVuOwotICAgIEFjY2Vzc2liaWxp
dHlSb2xlIG1fcm9sZTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIG1fbGFzdEtu
b3duSXNJZ25vcmVkVmFsdWU7Ci0gICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnRE
YXRhIG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGE7Ci0gICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7
Ci0gICAgYm9vbCBtX3N1YnRyZWVEaXJ0eTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXZlQ2hpbGRy
ZW4geyBmYWxzZSB9OworICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1fcm9sZSB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duIH07CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBtX2xh
c3RLbm93bklzSWdub3JlZFZhbHVlIHsgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVm
YXVsdEJlaGF2aW9yIH07CisgICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRh
IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgeyB9OworICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fc3VidHJlZURpcnR5IHsgZmFsc2UgfTsKIAogICAgIHZv
aWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21Q
YXJlbnREYXRhJiBkYXRhKSB7IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBkYXRhOyB9CiAK
QEAgLTExODAsNyArMTE3Nyw3IEBAIHByb3RlY3RlZDoKICNlbGlmIFBMQVRGT1JNKFdJTikKICAg
ICBDT01QdHI8QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IG1fd3JhcHBlcjsKICNlbGlmIFBM
QVRGT1JNKEdUSykKLSAgICBBdGtPYmplY3QqIG1fd3JhcHBlcjsKKyAgICBBdGtPYmplY3QqIG1f
d3JhcHBlciB7IG51bGxwdHIgfTsKICNlbGlmIFBMQVRGT1JNKFdQRSkKICAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IG1fd3JhcHBlcjsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQ
cm9ncmVzc0luZGljYXRvci5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBlbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOyB9CisgICAg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yOyB9CiAKICAgICBib29sIGlzUHJvZ3Jl
c3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDkxLDExICs0OTEsMTEgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlcgogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudUJhclJvbGUpCisgICAgaWYgKGFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXIpCiAgICAgICAg
IHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG1fcmVuZGVyZXItPnBhcmVudCgp
KTsKIAogICAgIC8vIG1lbnVCdXR0b24gYW5kIGl0cyBjb3JyZXNwb25kaW5nIG1lbnUgYXJlIERP
TSBzaWJsaW5ncywgYnV0IEFjY2Vzc2liaWxpdHkgbmVlZHMgdGhlbSB0byBiZSBwYXJlbnQvY2hp
bGQKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51Um9sZSkgeworICAgIGlmIChh
cmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51KSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG1lbnVCdXR0b25Gb3JNZW51KCk7CiAgICAg
ICAgIGlmIChwYXJlbnQpCiAgICAgICAgICAgICByZXR1cm4gcGFyZW50OwpAQCAtNTI0LDcgKzUy
NCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBdHRhY2gKICAgICAvLyBX
aWRnZXRzIGFyZSB0aGUgcmVwbGFjZWQgZWxlbWVudHMgdGhhdCB3ZSByZXByZXNlbnQgdG8gQVgg
YXMgYXR0YWNobWVudHMKICAgICBib29sIGlzV2lkZ2V0ID0gcmVuZGVyZXItPmlzV2lkZ2V0KCk7
CiAKLSAgICByZXR1cm4gaXNXaWRnZXQgJiYgYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBVbmtub3du
Um9sZTsKKyAgICByZXR1cm4gaXNXaWRnZXQgJiYgYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdApAQCAtNjEyLDcgKzYxMiw3IEBAIFN0cmlu
ZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoZWxwVGUKICAgICAgICAgLy8gT25seSB0YWtl
IGhlbHAgdGV4dCBmcm9tIGFuIGFuY2VzdG9yIGVsZW1lbnQgaWYgaXRzIGEgZ3JvdXAgb3IgYW4g
dW5rbm93biByb2xlLiBJZiBoZWxwIHdhcyAKICAgICAgICAgLy8gYWRkZWQgdG8gdGhvc2Uga2lu
ZHMgb2YgZWxlbWVudHMsIGl0IGlzIGxpa2VseSBpdCB3YXMgbWVhbnQgZm9yIGEgY2hpbGQgZWxl
bWVudC4KICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqID0gYXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShhbmNlc3RvcikpIHsKLSAgICAgICAgICAgIGlmICghYXhPYmot
PmlzR3JvdXAoKSAmJiBheE9iai0+cm9sZVZhbHVlKCkgIT0gVW5rbm93blJvbGUpCisgICAgICAg
ICAgICBpZiAoIWF4T2JqLT5pc0dyb3VwKCkgJiYgYXhPYmotPnJvbGVWYWx1ZSgpICE9IEFjY2Vz
c2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQpAQCAtNzQzLDcgKzc0Myw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpzdHJpbmcKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjc3NCb3ggPSByZW5kZXJC
b3hNb2RlbE9iamVjdCgpOwogCi0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gU3RhdGlj
VGV4dFJvbGUpIHsKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3RhdGljVGV4dCkgewogICAgICAgICBTdHJpbmcgc3RhdGljVGV4dCA9IHRleHQoKTsK
ICAgICAgICAgaWYgKCFzdGF0aWNUZXh0Lmxlbmd0aCgpKQogICAgICAgICAgICAgc3RhdGljVGV4
dCA9IHRleHRVbmRlckVsZW1lbnQoKTsKQEAgLTk2MSw3ICs5NjEsNyBAQCBFU3BlYWsgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6c3BlYWtQCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnQsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGlua2VkVUlFbGVtZW50cykgY29uc3QK
IHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50LT5jaGlsZHJlbigpKSB7Ci0g
ICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gUmFkaW9CdXR0b25Sb2xlKQorICAgICAg
ICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRv
bikKICAgICAgICAgICAgIGxpbmtlZFVJRWxlbWVudHMuYXBwZW5kKGNoaWxkKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKGNoaWxkLmdldCgp
LCBsaW5rZWRVSUVsZW1lbnRzKTsKQEAgLTk3MCw3ICs5NzAsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvCiAgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBNZW1iZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgbGlua2VkVUlFbGVtZW50cykgY29uc3QKIHsKLSAgICBpZiAocm9sZVZhbHVlKCkgIT0g
UmFkaW9CdXR0b25Sb2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UmFkaW9CdXR0b24pCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBOb2RlKiBub2RlID0g
dGhpcy0+bm9kZSgpOwpAQCAtOTgzLDcgKzk4Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWRkUmFkaW8KICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB3ZSBkaWRuJ3Qg
ZmluZCBhbnkgcmFkaW8gYnV0dG9uIHNpYmxpbmdzIHdpdGggdGhlIHRyYWRpdGlvbmFsIG5hbWlu
ZywgbGV0cyBzZWFyY2ggZm9yIGEgcmFkaW8gZ3JvdXAgcm9sZSBhbmQgZmluZCBpdHMgY2hpbGRy
ZW4uCiAgICAgICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewotICAgICAg
ICAgICAgaWYgKHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gUmFkaW9Hcm91cFJvbGUpCisgICAgICAg
ICAgICBpZiAocGFyZW50LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9H
cm91cCkKICAgICAgICAgICAgICAgICBhZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4ocGFyZW50
LCBsaW5rZWRVSUVsZW1lbnRzKTsKICAgICAgICAgfQogICAgIH0KQEAgLTEwMDEsNyArMTAwMSw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGlua2VkVUkKICAgICAgICAgICAg
IGxpbmtlZFVJRWxlbWVudHMuYXBwZW5kKGxpbmtlZEFYRWxlbWVudCk7CiAgICAgfQogCi0gICAg
aWYgKHJvbGVWYWx1ZSgpID09IFJhZGlvQnV0dG9uUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uKQogICAgICAgICBhZGRSYWRpb0J1dHRv
bkdyb3VwTWVtYmVycyhsaW5rZWRVSUVsZW1lbnRzKTsKIH0KIApAQCAtMTEwNiw3ICsxMTA2LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FsbG93ZQogICAgIGJvb2wgaXNJ
blRyZWUgPSBmYWxzZTsKICAgICBib29sIGlzVHJlZUl0ZW1EZXNjZW5kYW50ID0gZmFsc2U7CiAg
ICAgd2hpbGUgKGF4T2JqKSB7Ci0gICAgICAgIGlmIChheE9iai0+cm9sZVZhbHVlKCkgPT0gVHJl
ZUl0ZW1Sb2xlKQorICAgICAgICBpZiAoYXhPYmotPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpUcmVlSXRlbSkKICAgICAgICAgICAgIGlzVHJlZUl0ZW1EZXNjZW5kYW50ID0gdHJ1
ZTsKICAgICAgICAgaWYgKGF4T2JqLT5pc1RyZWUoKSkgewogICAgICAgICAgICAgaXNJblRyZWUg
PSB0cnVlOwpAQCAtMTExOCw3ICsxMTE4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc0FsbG93ZQogICAgIC8vIElmIHRoZSBvYmplY3QgaXMgaW4gYSB0cmVlLCBvbmx5IHRy
ZWUgaXRlbXMgc2hvdWxkIGJlIGV4cG9zZWQgKGFuZCB0aGUgY2hpbGRyZW4gb2YgdHJlZSBpdGVt
cykuCiAgICAgaWYgKGlzSW5UcmVlKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUg
PSByb2xlVmFsdWUoKTsKLSAgICAgICAgaWYgKHJvbGUgIT0gVHJlZUl0ZW1Sb2xlICYmIHJvbGUg
IT0gU3RhdGljVGV4dFJvbGUgJiYgIWlzVHJlZUl0ZW1EZXNjZW5kYW50KQorICAgICAgICBpZiAo
cm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0gJiYgcm9sZSAhPSBBY2Nlc3NpYmls
aXR5Um9sZTo6U3RhdGljVGV4dCAmJiAhaXNUcmVlSXRlbURlc2NlbmRhbnQpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTEyOCwxMyArMTEy
OCwxMyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBvYmplCiB7CiAgICAg
Ly8gRG9uJ3QgaWdub3JlIGFuIGltYWdlIHRoYXQgaGFzIGFuIGFsdCB0YWcuCiAgICAgaWYgKCFh
bHRUZXh0LmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKLSAgICAgICAgcmV0dXJuIEluY2x1ZGVP
YmplY3Q7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNs
dWRlT2JqZWN0OwogICAgIAogICAgIC8vIFRoZSBpbmZvcm1hbCBzdGFuZGFyZCBpcyB0byBpZ25v
cmUgaW1hZ2VzIHdpdGggemVyby1sZW5ndGggYWx0IHN0cmluZ3MuCiAgICAgaWYgKCFhbHRUZXh0
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogICAgIAotICAgIHJl
dHVybiBEZWZhdWx0QmVoYXZpb3I7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb246OkRlZmF1bHRCZWhhdmlvcjsKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lv
biBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgY29u
c3QKQEAgLTExNDIsMTQgKzExNDIsMTQgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBB
Y2Nlc3NpYmlsaQogICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FzZXMgY2FuIGFwcGx5IHRvIGFueSBl
bGVtZW50IHRoYXQncyBhIHN1YmNsYXNzIG9mIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCiAg
ICAgCiAgICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0Owor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0
OwogCiAgICAgaWYgKG1fcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUp
IHsKICAgICAgICAgLy8gYXJpYS1oaWRkZW4gaXMgbWVhbnQgdG8gb3ZlcnJpZGUgdmlzaWJpbGl0
eSBhcyB0aGUgZGV0ZXJtaW5hbnQgaW4gQVggaGllcmFyY2h5IGluY2x1c2lvbi4KICAgICAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2hpZGRl
bkF0dHIpLCAiZmFsc2UiKSkKLSAgICAgICAgICAgIHJldHVybiBEZWZhdWx0QmVoYXZpb3I7Cisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJl
aGF2aW9yOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICB9
CiAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lv
bigpOwpAQCAtMTE3OSwxOSArMTE3OSwxOSBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVBCiAgICAgLy8gVGhlbiBwcm9jZXNzIG90aGVyIHVzZSBjYXNlcyB0aGF0IG5l
ZWQgdG8gYmUgYXBwbGllZCB0byBhbGwgdGhlIHZhcmlvdXMgcm9sZXMKICAgICAvLyB0aGF0IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3RzIHRha2Ugb24uCiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsKLSAgICBpZiAo
ZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09
IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgCiAgICAgLy8gSWYgdGhpcyBlbGVtZW50IGlzIHdpdGhpbiBhIHBhcmVu
dCB0aGF0IGNhbm5vdCBoYXZlIGNoaWxkcmVuLCBpdCBzaG91bGQgbm90IGJlIGV4cG9zZWQuCiAg
ICAgaWYgKGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVl
OyAgICAKICAgICAKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gSWdub3JlZFJvbGUpCisgICAgaWYg
KHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gUHJlc2VudGF0aW9uYWxSb2xl
IHx8IGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCB8fCBpbmhlcml0c1ByZXNlbnRhdGlv
bmFsUm9sZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBXZWJBcmVhcyBz
aG91bGQgYmUgaWdub3JlZCBpZiB0aGVpciBpZnJhbWUgY29udGFpbmVyIGlzIG1hcmtlZCBhcyBw
cmVzZW50YXRpb25hbC4KQEAgLTEyMjYsNyArMTIyNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Y29tcHV0ZUEKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIp
KSB7CiAgICAgICAgIC8vIHN0YXRpYyB0ZXh0IGJlbmVhdGggTWVudUl0ZW1zIGFuZCBNZW51QnV0
dG9ucyBhcmUganVzdCByZXBvcnRlZCBhbG9uZyB3aXRoIHRoZSBtZW51IGl0ZW0sIHNvIGl0J3Mg
aWdub3JlZCBvbiBhbiBpbmRpdmlkdWFsIGxldmVsCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgICAgICBpZiAocGFyZW50
ICYmIChwYXJlbnQtPmlzTWVudUl0ZW0oKSB8fCBwYXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCkg
PT0gTWVudUJ1dHRvblJvbGUpKQorICAgICAgICBpZiAocGFyZW50ICYmIChwYXJlbnQtPmlzTWVu
dUl0ZW0oKSB8fCBwYXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6Ok1lbnVCdXR0b24pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGF1dG8m
IHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcik7CiAgICAgICAg
IGlmICghcmVuZGVyVGV4dC5oYXNSZW5kZXJlZFRleHQoKSkKQEAgLTEyMzQsNyArMTIzNCw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUEKIAogICAgICAgICAvLyBz
dGF0aWMgdGV4dCBiZW5lYXRoIFRleHRDb250cm9scyBpcyByZXBvcnRlZCBhbG9uZyB3aXRoIHRo
ZSB0ZXh0IGNvbnRyb2wgdGV4dCBzbyBpdCdzIGlnbm9yZWQuCiAgICAgICAgIGZvciAoQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0g
cGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeyAKLSAgICAgICAgICAgIGlmIChwYXJlbnQtPnJvbGVW
YWx1ZSgpID09IFRleHRGaWVsZFJvbGUpCisgICAgICAgICAgICBpZiAocGFyZW50LT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTI0NSw5ICsxMjQ1LDkgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQQogICAgICAgICAvLyBUaGUgYWx0
IGF0dHJpYnV0ZSBtYXkgYmUgc2V0IG9uIGEgdGV4dCBmcmFnbWVudCB0aHJvdWdoIENTUywgd2hp
Y2ggc2hvdWxkIGJlIGhvbm9yZWQuCiAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0RnJhZ21lbnQ+
KHJlbmRlclRleHQpKSB7CiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
IGFsdFRleHRJbmNsdXNpb24gPSBvYmplY3RJbmNsdXNpb25Gcm9tQWx0VGV4dChkb3duY2FzdDxS
ZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlclRleHQpLmFsdFRleHQoKSk7Ci0gICAgICAgICAgICBp
ZiAoYWx0VGV4dEluY2x1c2lvbiA9PSBJZ25vcmVPYmplY3QpCisgICAgICAgICAgICBpZiAoYWx0
VGV4dEluY2x1c2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmpl
Y3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBpZiAoYWx0VGV4
dEluY2x1c2lvbiA9PSBJbmNsdWRlT2JqZWN0KQorICAgICAgICAgICAgaWYgKGFsdFRleHRJbmNs
dXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoZG93bmNhc3Q8UmVu
ZGVyVGV4dEZyYWdtZW50PihyZW5kZXJUZXh0KS5maXJzdExldHRlcigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTI3NCwyNCArMTI3NCwyNCBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3
aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEF1ZGlvUm9sZToKLSAgICBjYXNlIERlc2Ny
aXB0aW9uTGlzdFRlcm1Sb2xlOgotICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0RGV0YWlsUm9sZToK
LSAgICBjYXNlIERldGFpbHNSb2xlOgotICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xlUm9sZToKLSAg
ICBjYXNlIExhbmRtYXJrUmVnaW9uUm9sZToKLSAgICBjYXNlIExpc3RJdGVtUm9sZToKLSAgICBj
YXNlIFRpbWVSb2xlOgotICAgIGNhc2UgVmlkZW9Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkF1ZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlz
dFRlcm06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0RGV0YWls
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRpbWU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VmlkZW86CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgCi0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5r
bm93blJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAocm9sZVZh
bHVlKCkgPT0gSG9yaXpvbnRhbFJ1bGVSb2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICAvLyBkb24ndCBpZ25vcmUgbGFiZWxzLCBiZWNhdXNlIHRoZXkgc2VydmUgYXMgVGl0
bGVVSUVsZW1lbnRzCkBAIC0xMzMxLDE2ICsxMzMxLDE2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Y29tcHV0ZUEKICAgICAgICAgCiAgICAgICAgIC8vIEZpcnN0IGNoZWNrIHRo
ZSBSZW5kZXJJbWFnZSdzIGFsdFRleHQgKHdoaWNoIGNhbiBiZSBzZXQgdGhyb3VnaCBhIHN0eWxl
IHNoZWV0LCBvciBjb21lIGZyb20gdGhlIEVsZW1lbnQpLgogICAgICAgICAvLyBIb3dldmVyLCBp
ZiB0aGlzIGlzIG5vdCBhIG5hdGl2ZSBpbWFnZSwgZmFsbGJhY2sgdG8gdGhlIGF0dHJpYnV0ZSBv
biB0aGUgRWxlbWVudC4KLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhbHRU
ZXh0SW5jbHVzaW9uID0gRGVmYXVsdEJlaGF2aW9yOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGFsdFRleHRJbmNsdXNpb24gPSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uOjpEZWZhdWx0QmVoYXZpb3I7CiAgICAgICAgIGJvb2wgaXNSZW5kZXJJbWFnZSA9IGlzPFJl
bmRlckltYWdlPihyZW5kZXJlcigpKTsKICAgICAgICAgaWYgKGlzUmVuZGVySW1hZ2UpCiAgICAg
ICAgICAgICBhbHRUZXh0SW5jbHVzaW9uID0gb2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQoZG93
bmNhc3Q8UmVuZGVySW1hZ2U+KCptX3JlbmRlcmVyKS5hbHRUZXh0KCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBhbHRUZXh0SW5jbHVzaW9uID0gb2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRl
eHQoZ2V0QXR0cmlidXRlKGFsdEF0dHIpLnN0cmluZygpKTsKIAotICAgICAgICBpZiAoYWx0VGV4
dEluY2x1c2lvbiA9PSBJZ25vcmVPYmplY3QpCisgICAgICAgIGlmIChhbHRUZXh0SW5jbHVzaW9u
ID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoYWx0VGV4dEluY2x1c2lvbiA9PSBJbmNsdWRl
T2JqZWN0KQorICAgICAgICBpZiAoYWx0VGV4dEluY2x1c2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKICAgICAgICAgLy8gSWYgYW4gaW1hZ2UgaGFzIGEgdGl0bGUgYXR0cmlidXRlIG9u
IGl0LCBhY2Nlc3NpYmlsaXR5IHNob3VsZCBiZSBsZW5pZW50IGFuZCBhbGxvdyBpdCB0byBhcHBl
YXIgaW4gdGhlIGhpZXJhcmNoeSAoYWNjb3JkaW5nIHRvIFdBSS1BUklBKS4KQEAgLTE0MDMsNyAr
MTQwMyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUEKIAogICAg
IC8vIDxzcGFuPiB0YWdzIGFyZSBpbmxpbmUgdGFncyBhbmQgbm90IG1lYW50IHRvIGNvbnZleSBp
bmZvcm1hdGlvbiBpZiB0aGV5IGhhdmUgbm8gb3RoZXIgYXJpYQogICAgIC8vIGluZm9ybWF0aW9u
IG9uIHRoZW0uIElmIHdlIGRvbid0IGlnbm9yZSB0aGVtLCB0aGV5IG1heSBlbWl0IHNpZ25hbHMg
ZXhwZWN0ZWQgdG8gY29tZSBmcm9tCi0gICAgLy8gdGhlaXIgcGFyZW50LiBJbiBhZGRpdGlvbiwg
YmVjYXVzZSBpbmNsdWRlZCBzcGFucyBhcmUgR3JvdXBSb2xlIG9iamVjdHMsIGFuZCBHcm91cFJv
bGUKKyAgICAvLyB0aGVpciBwYXJlbnQuIEluIGFkZGl0aW9uLCBiZWNhdXNlIGluY2x1ZGVkIHNw
YW5zIGFyZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAgb2JqZWN0cywgYW5kIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcm91cAogICAgIC8vIG9iamVjdHMgYXJlIG9mdGVuIGNvbnRhaW5lcnMgd2l0aCBt
ZWFuaW5nZnVsIGluZm9ybWF0aW9uLCB0aGUgaW5jbHVzaW9uIG9mIGEgc3BhbiBjYW4gaGF2ZQog
ICAgIC8vIHRoZSBzaWRlIGVmZmVjdCBvZiBjYXVzaW5nIHRoZSBpbW1lZGlhdGUgcGFyZW50IGFj
Y2Vzc2libGUgdG8gYmUgaWdub3JlZC4gVGhpcyBpcyBlc3BlY2lhbGx5CiAgICAgLy8gcHJvYmxl
bWF0aWMgZm9yIHBsYXRmb3JtcyB3aGljaCBoYXZlIGRpc3RpbmN0IHJvbGVzIGZvciB0ZXh0dWFs
IGJsb2NrIGVsZW1lbnRzLgpAQCAtMTUyOCw3ICsxNTI4LDcgQEAgUGxhaW5UZXh0UmFuZ2UgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdAogICAgIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFS
b2xlID0gYXJpYVJvbGVBdHRyaWJ1dGUoKTsKICAgICAvLyBVc2UgdGhlIHRleHQgY29udHJvbCBu
YXRpdmUgcmFuZ2UgaWYgaXQncyBhIG5hdGl2ZSBvYmplY3QgYW5kIGl0IGhhcyBubyBBUklBIHJv
bGUgKG9yIGhhcyBhIHRleHQgYmFzZWQgQVJJQSByb2xlKS4KLSAgICBpZiAoaXNOYXRpdmVUZXh0
Q29udHJvbCgpICYmIChhcmlhUm9sZSA9PSBVbmtub3duUm9sZSB8fCBpc0FSSUFUZXh0Q29udHJv
bCgpKSkgeworICAgIGlmIChpc05hdGl2ZVRleHRDb250cm9sKCkgJiYgKGFyaWFSb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpVbmtub3duIHx8IGlzQVJJQVRleHRDb250cm9sKCkpKSB7CiAgICAg
ICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0Q29udHJvbCA9IGRvd25jYXN0PFJl
bmRlclRleHRDb250cm9sPigqbV9yZW5kZXJlcikudGV4dEZvcm1Db250cm9sRWxlbWVudCgpOwog
ICAgICAgICByZXR1cm4gUGxhaW5UZXh0UmFuZ2UodGV4dENvbnRyb2wuc2VsZWN0aW9uU3RhcnQo
KSwgdGV4dENvbnRyb2wuc2VsZWN0aW9uRW5kKCkgLSB0ZXh0Q29udHJvbC5zZWxlY3Rpb25TdGFy
dCgpKTsKICAgICB9CkBAIC0xNjc1LDcgKzE2NzUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzVGFiSXRlCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhYlBhbmVs
ID0gY2FjaGUtPmdldE9yQ3JlYXRlKGVsZW1lbnQpOwogCiAgICAgICAgIC8vIEEgdGFiIGl0ZW0g
c2hvdWxkIG9ubHkgY29udHJvbCB0YWIgcGFuZWxzLgotICAgICAgICBpZiAoIXRhYlBhbmVsIHx8
IHRhYlBhbmVsLT5yb2xlVmFsdWUoKSAhPSBUYWJQYW5lbFJvbGUpCisgICAgICAgIGlmICghdGFi
UGFuZWwgfHwgdGFiUGFuZWwtPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQ
YW5lbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogY2hlY2tGb2N1c0VsZW1lbnQgPSBmb2N1c2VkRWxlbWVudDsKQEAgLTE3MDQs
NyArMTcwNCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGb2N1c2UKICAg
ICAvLyBBIHdlYiBhcmVhIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBEb2N1bWVudCBub2RlIGluIHRo
ZSBET00gdHJlZSwgd2hpY2ggaXNuJ3QgZm9jdXNhYmxlLgogICAgIC8vIENoZWNrIGluc3RlYWQg
aWYgdGhlIGZyYW1lJ3Mgc2VsZWN0aW9uIGNvbnRyb2xsZXIgaXMgZm9jdXNlZAogICAgIGlmIChm
b2N1c2VkRWxlbWVudCA9PSBtX3JlbmRlcmVyLT5ub2RlKCkKLSAgICAgICAgfHwgKHJvbGVWYWx1
ZSgpID09IFdlYkFyZWFSb2xlICYmIGRvY3VtZW50LmZyYW1lKCktPnNlbGVjdGlvbigpLmlzRm9j
dXNlZEFuZEFjdGl2ZSgpKSkKKyAgICAgICAgfHwgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpXZWJBcmVhICYmIGRvY3VtZW50LmZyYW1lKCktPnNlbGVjdGlvbigpLmlzRm9jdXNl
ZEFuZEFjdGl2ZSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzZXRTZWxlYwogewogICAgIC8vIFNldHRpbmcgc2VsZWN0ZWQgb25seSBtYWtlcyBzZW5zZSBp
biB0cmVlcyBhbmQgdGFibGVzIChhbmQgdHJlZS10YWJsZXMpLgogICAgIEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKLSAgICBpZiAocm9sZSAhPSBUcmVlUm9sZSAmJiByb2xl
ICE9IFRyZWVHcmlkUm9sZSAmJiByb2xlICE9IFRhYmxlUm9sZSAmJiByb2xlICE9IEdyaWRSb2xl
KQorICAgIGlmIChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlICYmIHJvbGUgIT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRh
YmxlICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBib29sIGlzTXVsdGkgPSBpc011bHRpU2VsZWN0YWJsZSgpOwpAQCAtMTgzNSw3
ICsxODM1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXREb2N1bQogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgYXV0byogcGFyZW50ID0gY3VycmVudC0+cGFyZW50
Tm9kZSgpOwogICAgICAgICAgICAgaWYgKGlzPEhUTUxBcmVhRWxlbWVudD4oKmN1cnJlbnQpICYm
IGlzPEhUTUxNYXBFbGVtZW50PihwYXJlbnQpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgYXJl
YU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKEltYWdlTWFwTGlua1JvbGUpKTsKKyAgICAgICAgICAgICAgICBh
dXRvJiBhcmVhT2JqZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluaz4oKmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwTGlu
aykpOwogICAgICAgICAgICAgICAgIEhUTUxNYXBFbGVtZW50JiBtYXAgPSBkb3duY2FzdDxIVE1M
TWFwRWxlbWVudD4oKnBhcmVudCk7CiAgICAgICAgICAgICAgICAgYXJlYU9iamVjdC5zZXRIVE1M
QXJlYUVsZW1lbnQoZG93bmNhc3Q8SFRNTEFyZWFFbGVtZW50PihjdXJyZW50KSk7CiAgICAgICAg
ICAgICAgICAgYXJlYU9iamVjdC5zZXRIVE1MTWFwRWxlbWVudCgmbWFwKTsKQEAgLTI0MTEsMTgg
KzI0MTEsMTggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzaG91bGRObwogYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQo
KSBjb25zdAogewogICAgIHN3aXRjaCAoYXJpYVJvbGVBdHRyaWJ1dGUoKSkgewotICAgIGNhc2Ug
QXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToKLSAgICBjYXNlIE1l
bnVSb2xlOgotICAgIGNhc2UgTWVudUJhclJvbGU6Ci0gICAgY2FzZSBSYWRpb0dyb3VwUm9sZToK
LSAgICBjYXNlIFJvd1JvbGU6Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBQ
cm9ncmVzc0luZGljYXRvclJvbGU6Ci0gICAgY2FzZSBUb29sYmFyUm9sZToKLSAgICBjYXNlIE91
dGxpbmVSb2xlOgotICAgIGNhc2UgVHJlZVJvbGU6Ci0gICAgY2FzZSBHcmlkUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlJhZGlvR3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRvb2xiYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6T3V0bGluZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkdyaWQ6CiAgICAgLyogRklYTUU6IHJlcGxhY2UgdGhlc2Ugd2l0aCBhY3R1YWwgcm9sZXMgd2hl
biB0aGV5IGFyZSBhZGRlZCB0byBBY2Nlc3NpYmlsaXR5Um9sZQogICAgIGNvbXBvc2l0ZQogICAg
IGFsZXJ0CkBAIC0yNDc0LDExICsyNDc0LDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aGFuZGxlQXIKICAgICAgICAgYm9vbCBmb3VuZFBhcmVudCA9IGZhbHNlOwogICAgICAg
ICAKICAgICAgICAgc3dpdGNoIChjb250YWluZXJQYXJlbnQtPnJvbGVWYWx1ZSgpKSB7Ci0gICAg
ICAgIGNhc2UgVHJlZVJvbGU6Ci0gICAgICAgIGNhc2UgVHJlZUdyaWRSb2xlOgotICAgICAgICBj
YXNlIEdyaWRSb2xlOgotICAgICAgICBjYXNlIFRhYmxlUm9sZToKLSAgICAgICAgY2FzZSBCcm93
c2VyUm9sZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ6CisgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkdyaWQ6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlOgor
ICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCcm93c2VyOgogICAgICAgICAgICAgZm91
bmRQYXJlbnQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBA
IC0yNTAwLDcgKzI1MDAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhhbmRs
ZUFyCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNvbnRhaW5lclBhcmVudCwgZG9j
dW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhSb3dDb3VudENoYW5nZWQpOwogCiAgICAgLy8gUG9z
dCB0aGF0IHRoZSBzcGVjaWZpYyByb3cgZWl0aGVyIGNvbGxhcHNlZCBvciBleHBhbmRlZC4KLSAg
ICBpZiAocm9sZVZhbHVlKCkgPT0gUm93Um9sZSB8fCByb2xlVmFsdWUoKSA9PSBUcmVlSXRlbVJv
bGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3cgfHwgcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtKQogICAgICAgICBjYWNoZS0+
cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBkb2N1bWVudCgpLCBpc0V4cGFuZGVkKCkgPyBBWE9iamVj
dENhY2hlOjpBWFJvd0V4cGFuZGVkIDogQVhPYmplY3RDYWNoZTo6QVhSb3dDb2xsYXBzZWQpOwog
ICAgIGVsc2UKICAgICAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24odGhpcywgZG9jdW1lbnQo
KSwgQVhPYmplY3RDYWNoZTo6QVhFeHBhbmRlZENoYW5nZWQpOwpAQCAtMjYwOSw3ICsyNjA5LDcg
QEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmV4cGFuZAogCiBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdAog
ewotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZSkgeworICAgIGlmIChyb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCkgewogICAgICAgICBpZiAo
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCkpCiAgICAgICAgICAg
ICByZXR1cm4gcGFyZW50LT5oYXNUYWdOYW1lKGFiYnJUYWcpIHx8IHBhcmVudC0+aGFzVGFnTmFt
ZShhY3JvbnltVGFnKTsKICAgICB9CkBAIC0yNjIwLDI1MSArMjYyMCwyNTEgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0cwogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQogewogICAg
IGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAKICAgICAvLyBTb21ldGltZXMgd2Ug
bmVlZCB0byBpZ25vcmUgdGhlIGF0dHJpYnV0ZSByb2xlLiBMaWtlIGlmIGEgdHJlZSBpcyBtYWxm
b3JtZWQsCiAgICAgLy8gd2Ugd2FudCB0byBpZ25vcmUgdGhlIHRyZWVpdGVtJ3MgYXR0cmlidXRl
IHJvbGUuCi0gICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUo
KSkgIT0gVW5rbm93blJvbGUgJiYgIXNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSkKKyAgICBp
ZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VW5rbm93biAmJiAhc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpKQogICAg
ICAgICByZXR1cm4gbV9hcmlhUm9sZTsKICAgICAKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJl
ci0+bm9kZSgpOwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjc3NCb3ggPSByZW5kZXJCb3hN
b2RlbE9iamVjdCgpOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNMaW5rKCkpCi0gICAgICAg
IHJldHVybiBXZWJDb3JlTGlua1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6V2ViQ29yZUxpbms7CiAgICAgaWYgKG5vZGUgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oKm5v
ZGUpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKS5oYXNBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIpKQotICAgICAgICByZXR1cm4gSW1hZ2VNYXBS
b2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOwogICAgIGlm
ICgoY3NzQm94ICYmIGNzc0JveC0+aXNMaXN0SXRlbSgpKSB8fCAobm9kZSAmJiBub2RlLT5oYXNU
YWdOYW1lKGxpVGFnKSkpCi0gICAgICAgIHJldHVybiBMaXN0SXRlbVJvbGU7CisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW07CiAgICAgaWYgKG1fcmVuZGVyZXItPmlz
TGlzdE1hcmtlcigpKQotICAgICAgICByZXR1cm4gTGlzdE1hcmtlclJvbGU7CisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdE1hcmtlcjsKICAgICBpZiAobm9kZSAmJiBub2Rl
LT5oYXNUYWdOYW1lKGJ1dHRvblRhZykpCiAgICAgICAgIHJldHVybiBidXR0b25Sb2xlVHlwZSgp
OwogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUobGVnZW5kVGFnKSkKLSAgICAgICAg
cmV0dXJuIExlZ2VuZFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGVn
ZW5kOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIFN0YXRp
Y1RleHRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7
CiAgICAgaWYgKGNzc0JveCAmJiBjc3NCb3gtPmlzSW1hZ2UoKSkgewogICAgICAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4obm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gYXJpYUhhc1BvcHVw
KCkgPyBQb3BVcEJ1dHRvblJvbGUgOiBCdXR0b25Sb2xlOworICAgICAgICAgICAgcmV0dXJuIGFy
aWFIYXNQb3B1cCgpID8gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uIDogQWNjZXNzaWJp
bGl0eVJvbGU6OkJ1dHRvbjsKICAgICAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKLSAgICAgICAgICAg
IHJldHVybiBTVkdSb290Um9sZTsKLSAgICAgICAgcmV0dXJuIEltYWdlUm9sZTsKKyAgICAgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9vdDsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbWFnZTsKICAgICB9CiAgICAgCiAgICAgaWYgKG5vZGUgJiYgbm9k
ZS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKQotICAgICAgICByZXR1cm4gQ2FudmFzUm9sZTsKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDYW52YXM7CiAKICAgICBpZiAoY3NzQm94
ICYmIGNzc0JveC0+aXNSZW5kZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBXZWJBcmVhUm9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOwogICAgIAogICAgIGlm
IChjc3NCb3ggJiYgY3NzQm94LT5pc1RleHRGaWVsZCgpKSB7CiAgICAgICAgIGlmIChpczxIVE1M
SW5wdXRFbGVtZW50Pihub2RlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50Pigqbm9kZSkuaXNTZWFyY2hGaWVsZCgpID8gU2VhcmNoRmllbGRSb2xlIDogVGV4
dEZpZWxkUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
Pigqbm9kZSkuaXNTZWFyY2hGaWVsZCgpID8gQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxk
IDogQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZDsKICAgICB9CiAgICAgCiAgICAgaWYgKGNz
c0JveCAmJiBjc3NCb3gtPmlzVGV4dEFyZWEoKSkKLSAgICAgICAgcmV0dXJuIFRleHRBcmVhUm9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYTsKIAogICAgIGlm
IChpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgaWYg
KGlucHV0LmlzQ2hlY2tib3goKSkKLSAgICAgICAgICAgIHJldHVybiBDaGVja0JveFJvbGU7Cisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OwogICAgICAgICBp
ZiAoaW5wdXQuaXNSYWRpb0J1dHRvbigpKQotICAgICAgICAgICAgcmV0dXJuIFJhZGlvQnV0dG9u
Um9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b247
CiAgICAgICAgIGlmIChpbnB1dC5pc1RleHRCdXR0b24oKSkKICAgICAgICAgICAgIHJldHVybiBi
dXR0b25Sb2xlVHlwZSgpOwogICAgICAgICAvLyBPbiBpT1MsIHRoZSBkYXRlIGZpZWxkIGFuZCB0
aW1lIGZpZWxkIGFyZSBwb3B1cCBidXR0b25zLiBPbiBvdGhlciBwbGF0Zm9ybXMgdGhleSBhcmUg
dGV4dCBmaWVsZHMuCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBpZiAoaW5wdXQuaXNEYXRl
RmllbGQoKSB8fCBpbnB1dC5pc1RpbWVGaWVsZCgpKQotICAgICAgICAgICAgcmV0dXJuIFBvcFVw
QnV0dG9uUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBC
dXR0b247CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICAgICAgaWYg
KGlucHV0LmlzQ29sb3JDb250cm9sKCkpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3JXZWxsUm9s
ZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsOwogI2Vu
ZGlmCiAgICAgfQogICAgIAogICAgIGlmIChoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQo
KSkKLSAgICAgICAgcmV0dXJuIFRleHRBcmVhUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpUZXh0QXJlYTsKICAgICAKICAgICBpZiAoaXNGaWxlVXBsb2FkQnV0dG9uKCkp
Ci0gICAgICAgIHJldHVybiBCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OkJ1dHRvbjsKICAgICAKICAgICBpZiAoY3NzQm94ICYmIGNzc0JveC0+aXNNZW51TGlz
dCgpKQotICAgICAgICByZXR1cm4gUG9wVXBCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOwogICAgIAogICAgIGlmIChoZWFkaW5nTGV2ZWwo
KSkKLSAgICAgICAgcmV0dXJuIEhlYWRpbmdSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OkhlYWRpbmc7CiAgICAgCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHUm9vdCgp
KQotICAgICAgICByZXR1cm4gU1ZHUm9vdFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6U1ZHUm9vdDsKICAgICAKICAgICBpZiAoaXNTdHlsZUZvcm1hdEdyb3VwKCkpCi0g
ICAgICAgIHJldHVybiBpczxSZW5kZXJJbmxpbmU+KCptX3JlbmRlcmVyKSA/IElubGluZVJvbGUg
OiBUZXh0R3JvdXBSb2xlOworICAgICAgICByZXR1cm4gaXM8UmVuZGVySW5saW5lPigqbV9yZW5k
ZXJlcikgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5lIDogQWNjZXNzaWJpbGl0eVJvbGU6OlRl
eHRHcm91cDsKICAgICAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRkVGFnKSkK
LSAgICAgICAgcmV0dXJuIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0RGV0YWlsOwogICAgIAogICAgIGlm
IChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZHRUYWcpKQotICAgICAgICByZXR1cm4gRGVzY3Jp
cHRpb25MaXN0VGVybVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVz
Y3JpcHRpb25MaXN0VGVybTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGxU
YWcpKQotICAgICAgICByZXR1cm4gRGVzY3JpcHRpb25MaXN0Um9sZTsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3Q7CiAKICAgICBpZiAobm9kZSAmJiBu
b2RlLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSkKLSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsKIAogICAgIGlmIChub2Rl
ICYmIG5vZGUtPmhhc1RhZ05hbWUoZmlndXJlVGFnKSkKLSAgICAgICAgcmV0dXJuIEZpZ3VyZVJv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlOwogCiAgICAgLy8g
Q2hlY2sgZm9yIFJ1YnkgZWxlbWVudHMKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5VGV4dCgp
KQotICAgICAgICByZXR1cm4gUnVieVRleHRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OlJ1YnlUZXh0OwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1J1YnlCYXNlKCkpCi0g
ICAgICAgIHJldHVybiBSdWJ5QmFzZVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6UnVieUJhc2U7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieVJ1bigpKQotICAgICAg
ICByZXR1cm4gUnVieVJ1blJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
UnVieVJ1bjsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5QmxvY2soKSkKLSAgICAgICAgcmV0
dXJuIFJ1YnlCbG9ja1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVi
eUJsb2NrOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1J1YnlJbmxpbmUoKSkKLSAgICAgICAgcmV0
dXJuIFJ1YnlJbmxpbmVSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJ1
YnlJbmxpbmU7CiAgICAgCiAgICAgLy8gVGhpcyByZXR1cm4gdmFsdWUgaXMgd2hhdCB3aWxsIGJl
IHVzZWQgaWYgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCBkZXRlcm1pbmVzCiAgICAgLy8gdGhlIGNl
bGwgc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgY2VsbCAoZS5nLiBiZWNhdXNlIGl0IGlzIGEg
bGF5b3V0IHRhYmxlLgogICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQot
ICAgICAgICByZXR1cm4gVGV4dEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpUZXh0R3JvdXA7CiAKICAgICAvLyBUYWJsZSBzZWN0aW9ucyBzaG91bGQgYmUgaWdu
b3JlZC4KICAgICBpZiAobV9yZW5kZXJlci0+aXNUYWJsZVNlY3Rpb24oKSkKLSAgICAgICAgcmV0
dXJuIElnbm9yZWRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9y
ZWQ7CiAKICAgICBpZiAobV9yZW5kZXJlci0+aXNIUigpKQotICAgICAgICByZXR1cm4gSG9yaXpv
bnRhbFJ1bGVSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250
YWxSdWxlOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShwVGFnKSkKLSAgICAg
ICAgcmV0dXJuIFBhcmFncmFwaFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UGFyYWdyYXBoOwogCiAgICAgaWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KG5vZGUpKQotICAg
ICAgICByZXR1cm4gTGFiZWxSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OkxhYmVsOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkZm5UYWcpKQotICAg
ICAgICByZXR1cm4gRGVmaW5pdGlvblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6RGVmaW5pdGlvbjsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGl2
VGFnKSkKLSAgICAgICAgcmV0dXJuIERpdlJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6RGl2OwogCiAgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4obm9kZSkpCi0gICAg
ICAgIHJldHVybiBGb3JtUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpG
b3JtOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhcnRpY2xlVGFnKSkKLSAg
ICAgICAgcmV0dXJuIERvY3VtZW50QXJ0aWNsZVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFz
VGFnTmFtZShtYWluVGFnKSkKLSAgICAgICAgcmV0dXJuIExhbmRtYXJrTWFpblJvbGU7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOwogCiAgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShuYXZUYWcpKQotICAgICAgICByZXR1cm4gTGFuZG1hcmtO
YXZpZ2F0aW9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a05hdmlnYXRpb247CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGFzaWRlVGFn
KSkKLSAgICAgICAgcmV0dXJuIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU7CisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5OwogCiAgICAgLy8g
VGhlIGRlZmF1bHQgcm9sZSBhdHRyaWJ1dGUgdmFsdWUgZm9yIHRoZSBzZWN0aW9uIGVsZW1lbnQs
IHJlZ2lvbiwgYmVjYW1lIGEgbGFuZG1hcmsgaW4gQVJJQSAxLjEuCiAgICAgLy8gVGhlIEhUTUwg
QUFNIHNwZWMgc2F5cyBpdCBpcyAic3Ryb25nbHkgcmVjb21tZW5kZWQiIHRoYXQgQVRzIG9ubHkg
Y29udmV5IGFuZCBwcm92aWRlIG5hdmlnYXRpb24KICAgICAvLyBmb3Igc2VjdGlvbiBlbGVtZW50
cyB3aGljaCBoYXZlIG5hbWVzLgogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoc2Vj
dGlvblRhZykpCi0gICAgICAgIHJldHVybiBoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbEF0dHIpIHx8
IGhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKSA/IExhbmRtYXJrUmVnaW9uUm9sZSA6
IFRleHRHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbEF0
dHIpIHx8IGhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKSA/IEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya1JlZ2lvbiA6IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXA7CiAKICAg
ICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGFkZHJlc3NUYWcpKQotICAgICAgICByZXR1
cm4gTGFuZG1hcmtDb250ZW50SW5mb1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1Rh
Z05hbWUoYmxvY2txdW90ZVRhZykpCi0gICAgICAgIHJldHVybiBCbG9ja3F1b3RlUm9sZTsKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpCbG9ja3F1b3RlOwogCiAgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShjYXB0aW9uVGFnKSkKLSAgICAgICAgcmV0dXJuIENhcHRp
b25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNhcHRpb247CiAgICAg
CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShtYXJrVGFnKSkKLSAgICAgICAgcmV0
dXJuIE1hcmtSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Ok1hcms7CiAK
ICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHByZVRhZykpCi0gICAgICAgIHJldHVy
biBQcmVSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlByZTsKIAogICAg
IGlmIChpczxIVE1MRGV0YWlsc0VsZW1lbnQ+KG5vZGUpKQotICAgICAgICByZXR1cm4gRGV0YWls
c1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlsczsKICAgICBp
ZiAoaXM8SFRNTFN1bW1hcnlFbGVtZW50Pihub2RlKSkKLSAgICAgICAgcmV0dXJuIFN1bW1hcnlS
b2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7CiAgICAgCiAg
ICAgLy8gaHR0cDovL3Jhd2dpdC5jb20vdzNjL2FyaWEvbWFzdGVyL2h0bWwtYWFtL2h0bWwtYWFt
Lmh0bWwKICAgICAvLyBPdXRwdXQgZWxlbWVudHMgc2hvdWxkIGJlIG1hcHBlZCB0byBzdGF0dXMg
cm9sZS4KICAgICBpZiAoaXNPdXRwdXQoKSkKLSAgICAgICAgcmV0dXJuIEFwcGxpY2F0aW9uU3Rh
dHVzUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0
YXR1czsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoaXM8SFRNTFZpZGVvRWxlbWVudD4o
bm9kZSkpCi0gICAgICAgIHJldHVybiBWaWRlb1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6VmlkZW87CiAgICAgaWYgKGlzPEhUTUxBdWRpb0VsZW1lbnQ+KG5vZGUpKQot
ICAgICAgICByZXR1cm4gQXVkaW9Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OkF1ZGlvOwogI2VuZGlmCiAgICAgCiAgICAgLy8gVGhlIEhUTUwgZWxlbWVudCBzaG91bGQg
bm90IGJlIGV4cG9zZWQgYXMgYW4gZWxlbWVudC4gVGhhdCdzIHdoYXQgdGhlIFJlbmRlclZpZXcg
ZWxlbWVudCBkb2VzLgogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRhZykp
Ci0gICAgICAgIHJldHVybiBJZ25vcmVkUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpJZ25vcmVkOwogCiAgICAgLy8gVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGJhbm5l
ci9jb250ZW50SW5mbyBwZXIgcGFnZS4gSWYgaGVhZGVyL2Zvb3RlciBhcmUgYmVpbmcgdXNlZCB3
aXRoaW4gYW4gYXJ0aWNsZSBvciBzZWN0aW9uCiAgICAgLy8gdGhlbiBpdCBzaG91bGQgbm90IGJl
IGV4cG9zZWQgYXMgd2hvbGUgcGFnZSdzIGJhbm5lci9jb250ZW50SW5mbwogICAgIGlmIChub2Rl
ICYmIG5vZGUtPmhhc1RhZ05hbWUoaGVhZGVyVGFnKSAmJiAhaXNEZXNjZW5kYW50T2ZFbGVtZW50
VHlwZShhcnRpY2xlVGFnKSAmJiAhaXNEZXNjZW5kYW50T2ZFbGVtZW50VHlwZShzZWN0aW9uVGFn
KSkKLSAgICAgICAgcmV0dXJuIExhbmRtYXJrQmFubmVyUm9sZTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjsKICAgICBpZiAobm9kZSAmJiBub2RlLT5o
YXNUYWdOYW1lKGZvb3RlclRhZykgJiYgIWlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoYXJ0aWNs
ZVRhZykgJiYgIWlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoc2VjdGlvblRhZykpCi0gICAgICAg
IHJldHVybiBGb290ZXJSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkZv
b3RlcjsKICAgICAKICAgICAvLyBtZW51IHRhZ3Mgd2l0aCB0b29sYmFyIHR5cGUgc2hvdWxkIGhh
dmUgVG9vbGJhciByb2xlLgogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUobWVudVRh
ZykgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ2V0QXR0cmlidXRlKHR5cGVBdHRy
KSwgInRvb2xiYXIiKSkKLSAgICAgICAgcmV0dXJuIFRvb2xiYXJSb2xlOworICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI7CiAgICAgCiAgICAgaWYgKG5vZGUgJiYgbm9k
ZS0+aGFzVGFnTmFtZSh0aW1lVGFnKSkKLSAgICAgICAgcmV0dXJuIFRpbWVSb2xlOworICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlRpbWU7CiAgICAgCiAgICAgLy8gSWYgdGhlIGVs
ZW1lbnQgZG9lcyBub3QgaGF2ZSByb2xlLCBidXQgaXQgaGFzIEFSSUEgYXR0cmlidXRlcywgb3Ig
YWNjZXB0cyB0YWIgZm9jdXMsIGFjY2Vzc2liaWxpdHkgc2hvdWxkIGZhbGxiYWNrIHRvIGV4cG9z
aW5nIGl0IGFzIGEgZ3JvdXAuCiAgICAgaWYgKHN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSB8fCBj
YW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gR3JvdXBSb2xlOworICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwOwogCiAgICAgaWYgKG1fcmVuZGVyZXIt
PmlzUmVuZGVyQmxvY2tGbG93KCkpCi0gICAgICAgIHJldHVybiBtX3JlbmRlcmVyLT5pc0Fub255
bW91c0Jsb2NrKCkgPyBUZXh0R3JvdXBSb2xlIDogR3JvdXBSb2xlOworICAgICAgICByZXR1cm4g
bV9yZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpID8gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRH
cm91cCA6IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsKICAgICAKLSAgICAvLyBJbmxpbmVSb2xl
IGlzIHRoZSBmaW5hbCBmYWxsYmFjayBiZWZvcmUgYXNzaWduaW5nIFVua25vd25Sb2xlIHRvIGFu
IG9iamVjdC4gSXQgbWFrZXMgaXQKKyAgICAvLyBJbmxpbmVSb2xlIGlzIHRoZSBmaW5hbCBmYWxs
YmFjayBiZWZvcmUgYXNzaWduaW5nIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duIHRvIGFuIG9i
amVjdC4gSXQgbWFrZXMgaXQKICAgICAvLyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCB0cnVseSB1
bmtub3duIG9iamVjdHMgZnJvbSBub24tZm9jdXNhYmxlIGlubGluZSB0ZXh0IGVsZW1lbnRzCiAg
ICAgLy8gd2hpY2ggaGF2ZSBhbiBldmVudCBoYW5kbGVyIG9yIGF0dHJpYnV0ZSBzdWdnZXN0aW5n
IHBvc3NpYmxlIGluY2x1c2lvbiBieSB0aGUgcGxhdGZvcm0uCiAgICAgaWYgKGlzPFJlbmRlcklu
bGluZT4oKm1fcmVuZGVyZXIpCiAgICAgICAgICYmIChoYXNBdHRyaWJ1dGVzUmVxdWlyZWRGb3JJ
bmNsdXNpb24oKQogICAgICAgICAgICAgfHwgKG5vZGUgJiYgbm9kZS0+aGFzRXZlbnRMaXN0ZW5l
cnMoKSkKICAgICAgICAgICAgIHx8IChzdXBwb3J0c0RhdGV0aW1lQXR0cmlidXRlKCkgJiYgIWdl
dEF0dHJpYnV0ZShkYXRldGltZUF0dHIpLmlzRW1wdHkoKSkpKQotICAgICAgICByZXR1cm4gSW5s
aW5lUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpJbmxpbmU7CiAKLSAg
ICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtu
b3duOwogfQogCiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6b3JpZW50YXRpb24oKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJp
YU9yaWVudGF0aW9uID0gZ2V0QXR0cmlidXRlKGFyaWFfb3JpZW50YXRpb25BdHRyKTsKICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU9yaWVudGF0aW9uLCAiaG9yaXpv
bnRhbCIpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRh
bDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU9yaWVudGF0aW9uLCAi
dmVydGljYWwiKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRp
Y2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU9yaWVudGF0aW9uLCAi
dW5kZWZpbmVkIikpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25VbmRl
ZmluZWQ7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlVuZGVmaW5l
ZDsKIAogICAgIC8vIEluIEFSSUEgMS4xLCB0aGUgaW1wbGljaXQgdmFsdWUgb2YgYXJpYS1vcmll
bnRhdGlvbiBjaGFuZ2VkIGZyb20gaG9yaXpvbnRhbAogICAgIC8vIHRvIHVuZGVmaW5lZCBvbiBh
bGwgcm9sZXMgdGhhdCBkb24ndCBoYXZlIHRoZWlyIG93biByb2xlLXNwZWNpZmljIHZhbHVlcy4g
SW4KICAgICAvLyBhZGRpdGlvbiwgdGhlIGltcGxpY2l0IHZhbHVlIG9mIGNvbWJvYm94IGJlY2Ft
ZSB1bmRlZmluZWQuCiAgICAgaWYgKGlzQ29tYm9Cb3goKSB8fCBpc1JhZGlvR3JvdXAoKSB8fCBp
c1RyZWVHcmlkKCkpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25VbmRl
ZmluZWQ7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlVuZGVmaW5l
ZDsKIAogICAgIGlmIChpc1Njcm9sbGJhcigpIHx8IGlzTGlzdEJveCgpIHx8IGlzTWVudSgpIHx8
IGlzVHJlZSgpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGlj
YWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwog
ICAgIAogICAgIGlmIChpc01lbnVCYXIoKSB8fCBpc1NwbGl0dGVyKCkgfHwgaXNUYWJMaXN0KCkg
fHwgaXNUb29sYmFyKCkgfHwgaXNTbGlkZXIoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb246Okhvcml6b250YWw7CiAgICAgCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Om9yaWVudGF0aW9uKCk7CiB9CkBAIC0yODgxLDE0ICsyODgxLDE0IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aW5oZXJpdHMKIAogICAgIGNvbnN0IFZlY3Rvcjxjb25zdCBI
VE1MUXVhbGlmaWVkTmFtZSo+KiBwYXJlbnRUYWdzOwogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkp
IHsKLSAgICBjYXNlIExpc3RJdGVtUm9sZToKLSAgICBjYXNlIExpc3RNYXJrZXJSb2xlOiB7Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdE1hcmtlcjogewogICAgICAgICBzdGF0aWMgY29uc3QgYXV0byBsaXN0SXRl
bVBhcmVudHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPGNvbnN0IEhUTUxRdWFsaWZpZWRO
YW1lKj4geyAmZGxUYWcsICZvbFRhZywgJnVsVGFnIH0pOwogICAgICAgICBwYXJlbnRUYWdzID0g
Jmxpc3RJdGVtUGFyZW50cy5nZXQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
R3JpZENlbGxSb2xlOgotICAgIGNhc2UgQ2VsbFJvbGU6IHsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcmlkQ2VsbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsOiB7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBhdXRvIHRhYmxlQ2VsbFBhcmVudHMgPSBtYWtlTmV2ZXJEZXN0
cm95ZWQoVmVjdG9yPGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lKj4geyAmdGFibGVUYWcgfSk7CiAg
ICAgICAgIHBhcmVudFRhZ3MgPSAmdGFibGVDZWxsUGFyZW50cy5nZXQoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0yOTEwLDcgKzI5MTAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmluaGVyaXRzCiAgICAgICAgIC8vIGJhc2VkIG9uIGl0cyBwcmVzZW50YXRpb25hbCBzdGF0dXMu
CiAgICAgICAgIGF1dG8mIG5hbWUgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkudGFnUU5hbWUo
KTsKICAgICAgICAgaWYgKHN0ZDo6YW55X29mKHBhcmVudFRhZ3MtPmJlZ2luKCksIHBhcmVudFRh
Z3MtPmVuZCgpLCBbJm5hbWVdIChhdXRvKiBwb3NzaWJsZU5hbWUpIHsgcmV0dXJuICpwb3NzaWJs
ZU5hbWUgPT0gbmFtZTsgfSkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50LT5yb2xlVmFsdWUo
KSA9PSBQcmVzZW50YXRpb25hbFJvbGU7CisgICAgICAgICAgICByZXR1cm4gcGFyZW50LT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWw7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjkyOSwxMSArMjkyOSwxMSBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzUHJlc2VuCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJlbigpIGNvbnN0CiB7CiAgICAgc3dpdGNo
IChtX2FyaWFSb2xlKSB7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgU2xpZGVyUm9s
ZToKLSAgICBjYXNlIEltYWdlUm9sZToKLSAgICBjYXNlIFByb2dyZXNzSW5kaWNhdG9yUm9sZToK
LSAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1
dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6SW1hZ2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jl
c3NJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKICAg
ICAvLyBjYXNlIFNlcGFyYXRvclJvbGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1
bHQ6CkBAIC0yOTQzLDcgKzI5NDMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFyaWFSb2xlCiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0RXhwYW5k
ZWRBdHRyaWJ1dGUoKSBjb25zdAogewotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBEZXRhaWxzUm9s
ZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHMpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIEFuIG9iamVjdCBjYW4gYmUgZXhwYW5k
ZWQgaWYgaXQgYXJpYS1leHBhbmRlZCBpcyB0cnVlIG9yIGZhbHNlLgpAQCAtMjk5Nyw3ICsyOTk3
LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRJbWFnZQogICAgICAgICAv
LyBhZGQgYW4gPGFyZWE+IGVsZW1lbnQgZm9yIHRoaXMgY2hpbGQgaWYgaXQgaGFzIGEgbGluawog
ICAgICAgICBpZiAoIWFyZWEuaXNMaW5rKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgYXV0byYgYXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+
KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEltYWdlTWFwTGlua1JvbGUpKTsKKyAgICAg
ICAgYXV0byYgYXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+
KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1h
cExpbmspKTsKICAgICAgICAgYXJlYU9iamVjdC5zZXRIVE1MQXJlYUVsZW1lbnQoJmFyZWEpOwog
ICAgICAgICBhcmVhT2JqZWN0LnNldEhUTUxNYXBFbGVtZW50KG1hcCk7CiAgICAgICAgIGFyZWFP
YmplY3Quc2V0UGFyZW50KHRoaXMpOwpAQCAtMzAzMiw3ICszMDMyLDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RgogICAgIGlmICghaXM8U3BpbkJ1dHRvbkVsZW1l
bnQ+KHNwaW5CdXR0b25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgYXhT
cGluQnV0dG9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24+KCpheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKFNwaW5CdXR0b25Sb2xlKSk7CisgICAgYXV0byYgYXhTcGluQnV0
dG9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24+KCpheE9iamVjdENhY2hlKCkt
PmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uKSk7CiAgICAgYXhTcGlu
QnV0dG9uLnNldFNwaW5CdXR0b25FbGVtZW50KGRvd25jYXN0PFNwaW5CdXR0b25FbGVtZW50Pihz
cGluQnV0dG9uRWxlbWVudCkpOwogICAgIGF4U3BpbkJ1dHRvbi5zZXRQYXJlbnQodGhpcyk7CiAg
ICAgbV9jaGlsZHJlbi5hcHBlbmQoJmF4U3BpbkJ1dHRvbik7CkBAIC0zMjA1LDcgKzMyMDUsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEhpZGRlCiB2b2lkIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24oKQogewog
ICAgIC8vIElmIGEgbWVudSBkb2VzIG5vdCBoYXZlIHZhbGlkIG1lbnVpdGVtIGNoaWxkcmVuLCBp
dCBzaG91bGQgbm90IGJlIGV4cG9zZWQgYXMgYSBtZW51LgotICAgIGlmIChyb2xlVmFsdWUoKSA9
PSBNZW51Um9sZSkgeworICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudSkgewogICAgICAgICAvLyBFbGVtZW50cyBtYXJrZWQgYXMgbWVudXMgbXVzdCBoYXZlIGF0
IGxlYXN0IG9uZSBtZW51IGl0ZW0gY2hpbGQuCiAgICAgICAgIHNpemVfdCBtZW51SXRlbUNvdW50
ID0gMDsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKQEAg
LTMyMTYsNyArMzIxNiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRl
Um8KICAgICAgICAgfQogCiAgICAgICAgIGlmICghbWVudUl0ZW1Db3VudCkKLSAgICAgICAgICAg
IG1fcm9sZSA9IEdyb3VwUm9sZTsKKyAgICAgICAgICAgIG1fcm9sZSA9IEFjY2Vzc2liaWxpdHlS
b2xlOjpHcm91cDsKICAgICB9CiB9CiAgICAgCkBAIC0zMjkwLDggKzMyOTAsOCBAQCBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlCiAKICAgICAvLyBXQUktQVJJQSAiYWxl
cnQiIGFuZCAic3RhdHVzIiByb2xlcyBoYXZlIGFuIGltcGxpY2l0IGFyaWEtYXRvbWljIHZhbHVl
IG9mIHRydWUuCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQXBwbGljYXRp
b25BbGVydFJvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1czoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzMwNywxNiArMzMwNywxNiBAQCBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhbkhhdmVTCiB7CiAgICAgc3dpdGNoIChyb2xl
VmFsdWUoKSkgewogICAgIC8vIFRoZXNlIHJvbGVzIGFyZSBjb250YWluZXJzIHdob3NlIGNoaWxk
cmVuIHN1cHBvcnQgYXJpYS1zZWxlY3RlZDoKLSAgICBjYXNlIEdyaWRSb2xlOgotICAgIGNhc2Ug
TGlzdEJveFJvbGU6Ci0gICAgY2FzZSBUYWJMaXN0Um9sZToKLSAgICBjYXNlIFRyZWVSb2xlOgot
ICAgIGNhc2UgVHJlZUdyaWRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQ6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUYWJMaXN0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ6CiAgICAgLy8gVGhlc2Ugcm9sZXMg
YXJlIGNvbnRhaW5lcnMgd2hvc2UgY2hpbGRyZW4gYXJlIHRyZWF0ZWQgYXMgc2VsZWN0ZWQgYnkg
YXNzaXN0aXZlCiAgICAgLy8gdGVjaG5vbG9naWVzLiBXZSBjYW4gZ2V0IHRoZSAic2VsZWN0ZWQi
IGl0ZW0gdmlhIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBvciB0aGUKICAgICAvLyBmb2N1c2VkIGVs
ZW1lbnQuCi0gICAgY2FzZSBNZW51Um9sZToKLSAgICBjYXNlIE1lbnVCYXJSb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUJhcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzM2Myw3ICszMzYzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphcmlhTGlzdAogCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVu
KCkpIHsKICAgICAgICAgLy8gRXZlcnkgY2hpbGQgc2hvdWxkIGhhdmUgYXJpYS1yb2xlIG9wdGlv
biwgYW5kIGlmIHNvLCBjaGVjayBmb3Igc2VsZWN0ZWQgYXR0cmlidXRlL3N0YXRlLgotICAgICAg
ICBpZiAoY2hpbGQtPmlzU2VsZWN0ZWQoKSAmJiBjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9
PSBMaXN0Qm94T3B0aW9uUm9sZSkgeworICAgICAgICBpZiAoY2hpbGQtPmlzU2VsZWN0ZWQoKSAm
JiBjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJv
eE9wdGlvbikgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGlsZCk7CiAgICAgICAgICAg
ICBpZiAoIWlzTXVsdGkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzM3OSwyMSArMzM3
OSwyMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkCiAgICAgICAg
IHJldHVybjsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIExpc3RCb3hS
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CiAgICAgICAgIC8vIG5h
dGl2ZSBsaXN0IGJveGVzIHdvdWxkIGJlIEFjY2Vzc2liaWxpdHlMaXN0Qm94ZXMsIHNvIG9ubHkg
Y2hlY2sgZm9yIGFyaWEgbGlzdCBib3hlcwogICAgICAgICBhcmlhTGlzdGJveFNlbGVjdGVkQ2hp
bGRyZW4ocmVzdWx0KTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAg
Y2FzZSBUcmVlUm9sZToKLSAgICBjYXNlIFRyZWVHcmlkUm9sZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ6CiAgICAgICAgIGFyaWFTZWxlY3RlZFJv
d3MocmVzdWx0KTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVGFiTGlzdFJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDoKICAgICAgICAgaWYgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHNlbGVjdGVkVGFiID0gc2VsZWN0ZWRUYWJJdGVtKCkpCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHNlbGVjdGVkVGFiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWVu
dVJvbGU6Ci0gICAgY2FzZSBNZW51QmFyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpNZW51OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CiAgICAgICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBkZXNjZW5kYW50ID0gYWN0aXZlRGVzY2VuZGFudCgpKSB7
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRlc2NlbmRhbnQpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzQyNCw3ICszNDI0LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp2aXNpYmxlQwogICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKICAgICAgICAgCiAgICAg
Ly8gb25seSBsaXN0Ym94ZXMgYXJlIGFza2VkIGZvciB0aGVpciB2aXNpYmxlIGNoaWxkcmVuLiAK
LSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBMaXN0Qm94Um9sZSkgeyAvLyBuYXRpdmUg
bGlzdCBib3hlcyB3b3VsZCBiZSBBY2Nlc3NpYmlsaXR5TGlzdEJveGVzLCBzbyBvbmx5IGNoZWNr
IGZvciBhcmlhIGxpc3QgYm94ZXMKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGlzdEJveCkgeworICAgICAgICAvLyBuYXRpdmUgbGlzdCBib3hlcyB3
b3VsZCBiZSBBY2Nlc3NpYmlsaXR5TGlzdEJveGVzLCBzbyBvbmx5IGNoZWNrIGZvciBhcmlhIGxp
c3QgYm94ZXMKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0zNDMzLDcgKzM0MzQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnZpc2libGVDCiAgCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRhYkNoaWxk
cmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0KQogewotICAgIEFTU0VSVChy
b2xlVmFsdWUoKSA9PSBUYWJMaXN0Um9sZSk7CisgICAgQVNTRVJUKHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0KTsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkIDogY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzVGFiSXRlbSgpKQpAQCAt
MzQ1MywxOCArMzQ1NCwxOCBAQCBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gbGlua0FjdGlvbihB
WExpbmtBY3Rpb25WZXJiKCkpOwogCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNh
c2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2ds
ZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuIGJ1dHRvbkFjdGlvbjsKLSAgICBjYXNlIFRleHRGaWVs
ZFJvbGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgogICAg
ICAgICByZXR1cm4gdGV4dEZpZWxkQWN0aW9uOwotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgogICAgICAgICByZXR1cm4g
cmFkaW9CdXR0b25BY3Rpb247Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CiAgICAgICAgIHJldHVybiBpc0NoZWNrZWQoKSA/IGNo
ZWNrZWRDaGVja0JveEFjdGlvbiA6IHVuY2hlY2tlZENoZWNrQm94QWN0aW9uOwotICAgIGNhc2Ug
TGlua1JvbGU6Ci0gICAgY2FzZSBXZWJDb3JlTGlua1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazoK
ICAgICAgICAgcmV0dXJuIGxpbmtBY3Rpb247CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IG51bGxBdG9tKCk7CkBAIC0zNjU1LDI1ICszNjU2LDI1IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpkZXNjcmkKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBtc2FhUm9sZUZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6OlVua25vd247CiAKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oKnJlbmRlcmVy
KSkKLSAgICAgICAgcmV0dXJuIEVkaXRhYmxlVGV4dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6RWRpdGFibGVUZXh0OwogCiAgICAgaWYgKGlzPFJlbmRlckxpc3RJdGVt
PigqcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gTGlzdEl0ZW1Sb2xlOworICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOwogCi0gICAgcmV0dXJuIFVua25vd25Sb2xl
OworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIH0KIAogQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9sZVZhbHVlRm9yTVNBQSgpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fcm9sZUZvck1TQUEgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKG1f
cm9sZUZvck1TQUEgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVy
biBtX3JvbGVGb3JNU0FBOwogCiAgICAgbV9yb2xlRm9yTVNBQSA9IG1zYWFSb2xlRm9yUmVuZGVy
ZXIocmVuZGVyZXIoKSk7CiAKLSAgICBpZiAobV9yb2xlRm9yTVNBQSA9PSBVbmtub3duUm9sZSkK
KyAgICBpZiAobV9yb2xlRm9yTVNBQSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAg
ICAgICAgbV9yb2xlRm9yTVNBQSA9IHJvbGVWYWx1ZSgpOwogCiAgICAgcmV0dXJuIG1fcm9sZUZv
ck1TQUE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
VkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMSwxMSArMTExLDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNWR0VsZW1l
bnQ6OmFjY2Vzc2liaWwKIHsKICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBhY2Nlc3NpYmlsaXR5
RGVzY3JpcHRpb24oKTsKICAgICBpZiAoIWRlc2NyaXB0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmlwdGlvbiwgQWx0ZXJuYXRp
dmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoZGVz
Y3JpcHRpb24sIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogCiAgICAg
U3RyaW5nIGhlbHB0ZXh0ID0gaGVscFRleHQoKTsKICAgICBpZiAoIWhlbHB0ZXh0LmlzRW1wdHko
KSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChoZWxwdGV4dCwg
SGVscFRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCho
ZWxwdGV4dCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHApKTsKIH0KIAogU3RyaW5nIEFj
Y2Vzc2liaWxpdHlTVkdFbGVtZW50OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdApA
QCAtMjE3LDcgKzIxNyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmNvbXB1dGVB
Y2MKICAgICAvLyAqIFRoZXkgaGF2ZSBhbiBhbmNlc3RvciB3aXRoIENoaWxkcmVuIFByZXNlbnRh
dGlvbmFsOiBUcnVlIChjb3ZlcmVkIGJ5IENvcmUgQUFNKQogCiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsKLSAgICBp
ZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHSGlkZGVuQ29udGFpbmVyKCkpCkBAIC0yMzAs
MTAgKzIzMCwxMCBAQCBib29sIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojpjb21wdXRlQWNjCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09
IFByZXNlbnRhdGlvbmFsUm9sZSB8fCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpKQorICAg
IGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfHwg
aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gVGhlIFNWRyBBQU0gc3RhdGVzIHRleHQgZWxlbWVudHMgc2hv
dWxkIGFsc28gYmUgaW5jbHVkZWQsIGlmIHRoZXkgaGF2ZSBjb250ZW50LgpAQCAtMjU4LDEyICsy
NTgsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6aW5oZXJpdHNQcgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVl
KCk7Ci0gICAgaWYgKHJvbGUgIT0gU1ZHVGV4dFBhdGhSb2xlICYmIHJvbGUgIT0gU1ZHVFNwYW5S
b2xlKQorICAgIGlmIChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUZXh0UGF0aCAmJiBy
b2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUU3BhbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3Qo
KTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAgIGlm
IChpczxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0PigqcGFyZW50KSAmJiBwYXJlbnQtPmVsZW1l
bnQoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFRhZykpCi0gICAgICAgICAgICByZXR1cm4g
cGFyZW50LT5yb2xlVmFsdWUoKSA9PSBQcmVzZW50YXRpb25hbFJvbGU7CisgICAgICAgICAgICBy
ZXR1cm4gcGFyZW50LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0
aW9uYWw7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjcyLDcgKzI3Miw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmluaGVyaXRzUHIKIEFjY2Vzc2liaWxpdHlSb2xl
IEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNv
bnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCk7Ci0gICAgaWYgKHJvbGUgIT0gUHJl
c2VudGF0aW9uYWxSb2xlKQorICAgIGlmIChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVz
ZW50YXRpb25hbCkKICAgICAgICAgcmV0dXJuIHJvbGU7CiAKICAgICAvLyBUaGUgcHJlc2VuY2Ug
b2YgYSAndGl0bGUnIG9yICdkZXNjJyBjaGlsZCBlbGVtZW50IHRydW1wcyBQcmVzZW50YXRpb25h
bFJvbGUuCkBAIC0yODAsNyArMjgwLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0
eVNWR0VsZW1lbgogICAgIC8vIEF0IHRoaXMgdGltZSwgdGhlIHByZXNlbmNlIG9mIGEgbWF0Y2hp
bmcgJ2xhbmcnIGF0dHJpYnV0ZSBpcyBub3QgbWVudGlvbmVkLgogICAgIGZvciAoY29uc3QgYXV0
byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxTVkdFbGVtZW50PigqZWxlbWVudCgpKSkgewogICAg
ICAgICBpZiAoKGlzPFNWR1RpdGxlRWxlbWVudD4oY2hpbGQpIHx8IGlzPFNWR0Rlc2NFbGVtZW50
PihjaGlsZCkpKQotICAgICAgICAgICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgICAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogICAgIH0KIAogICAgIHJldHVybiBy
b2xlOwpAQCAtMjg4LDIzICsyODgsMjMgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0
eVNWR0VsZW1lbgogCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6
ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQogewotICAgIGlmICgobV9hcmlhUm9sZSA9IGRl
dGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IFVua25vd25Sb2xlKQorICAgIGlmICgobV9h
cmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IEFjY2Vzc2liaWxpdHlS
b2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gbV9hcmlhUm9sZTsKIAogICAgIEVsZW1lbnQq
IHN2Z0VsZW1lbnQgPSBlbGVtZW50KCk7CiAKICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdTaGFw
ZSgpIHx8IG1fcmVuZGVyZXItPmlzU1ZHUGF0aCgpIHx8IG1fcmVuZGVyZXItPmlzU1ZHSW1hZ2Uo
KSB8fCBpczxTVkdVc2VFbGVtZW50PihzdmdFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIEltYWdl
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZTsKICAgICBpZiAo
bV9yZW5kZXJlci0+aXNTVkdGb3JlaWduT2JqZWN0KCkgfHwgaXM8U1ZHR0VsZW1lbnQ+KHN2Z0Vs
ZW1lbnQpKQotICAgICAgICByZXR1cm4gR3JvdXBSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1RleHQoKSkKLSAg
ICAgICAgcmV0dXJuIFNWR1RleHRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlNWR1RleHQ7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHVGV4dFBhdGgoKSkKLSAgICAg
ICAgcmV0dXJuIFNWR1RleHRQYXRoUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpTVkdUZXh0UGF0aDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdUU3BhbigpKQotICAg
ICAgICByZXR1cm4gU1ZHVFNwYW5Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlNWR1RTcGFuOwogICAgIGlmIChpczxTVkdBRWxlbWVudD4oc3ZnRWxlbWVudCkpCi0gICAg
ICAgIHJldHVybiBXZWJDb3JlTGlua1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6V2ViQ29yZUxpbms7CiAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgJKHJldmlzaW9u
IDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNW
R1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIFdlYWtQdHI8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4gbV9wYXJlbnQ7Ci0g
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
R3JvdXBSb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwOyB9CiB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZSAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCShyZXZpc2lvbiAyMjM5
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTAgKzY1LDEwIEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGwKICAgICAKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9u
KSB7CiAgICAgLy8gQVJJQSAxLjEgRWxlbWVudHMgd2l0aCB0aGUgcm9sZSBzY3JvbGxiYXIgaGF2
ZSBhbiBpbXBsaWNpdCBhcmlhLW9yaWVudGF0aW9uIHZhbHVlIG9mIHZlcnRpY2FsLgotICAgIGNh
c2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVkOgotICAgIGNhc2UgQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uVmVydGljYWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b246OlVuZGVmaW5lZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGlj
YWw6CiAgICAgICAgIHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyID8gbV92ZXJ0aWNhbFNjcm9s
bGJhci5nZXQoKSA6IG51bGxwdHI7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25I
b3Jpem9udGFsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFs
OgogICAgICAgICByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyID8gbV9ob3Jpem9udGFsU2Ny
b2xsYmFyLmdldCgpIDogbnVsbHB0cjsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCShy
ZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
U2Nyb2xsVmlldzsKIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGZpbmFsIDogcHVibGlj
IEFjY2Vzc2liaWxpdHlPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc+IGNyZWF0ZShTY3JvbGxWaWV3Kik7Ci0gICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsQXJlYVJvbGU7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYTsgfQogICAgIFNjcm9sbFZpZXcqIHNjcm9s
bFZpZXcoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFZpZXc7IH0KIAogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAJKHJldmlzaW9uIDIy
Mzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDE0ICs2NywxNCBAQCBBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVNjCiB7CiAgICAgLy8gQVJJQSAxLjEgRWxlbWVudHMg
d2l0aCB0aGUgcm9sZSBzY3JvbGxiYXIgaGF2ZSBhbiBpbXBsaWNpdCBhcmlhLW9yaWVudGF0aW9u
IHZhbHVlIG9mIHZlcnRpY2FsLgogICAgIGlmICghbV9zY3JvbGxiYXIpCi0gICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7CiAKICAgICBpZiAobV9zY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAgaWYgKG1fc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uVmVydGljYWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb246OlZlcnRpY2FsOwogCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZl
cnRpY2FsOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwog
fQogCiBib29sIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OmlzRW5hYmxlZCgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsQmFyUm9sZTsgfQorICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpTY3JvbGxCYXI7IH0KICAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCBvdmVycmlkZTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3Bw
CShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5U2wKIHsKICAgICAvLyBEZWZhdWx0IHRv
IGhvcml6b250YWwgaW4gdGhlIHVua25vd24gY2FzZS4KICAgICBpZiAoIW1fcmVuZGVyZXIpCi0g
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIAogICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IG1fcmVuZGVyZXItPnN0eWxlKCk7CiAKQEAgLTY0
LDE1ICs2NCwxNSBAQCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVNsCiAg
ICAgY2FzZSBTbGlkZXJIb3Jpem9udGFsUGFydDoKICAgICBjYXNlIE1lZGlhU2xpZGVyUGFydDoK
ICAgICBjYXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlclBhcnQ6Ci0gICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIAogICAgIGNhc2UgU2xpZGVy
VGh1bWJWZXJ0aWNhbFBhcnQ6IAogICAgIGNhc2UgU2xpZGVyVmVydGljYWxQYXJ0OgogICAgIGNh
c2UgTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OgotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uVmVydGljYWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b246OlZlcnRpY2FsOwogICAgICAgICAKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICB9CiB9CiAgICAgCkBAIC04NCw3ICs4
NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4oKQogCiAgICAgQVhP
YmplY3RDYWNoZSogY2FjaGUgPSBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUo
KTsKIAotICAgIGF1dG8mIHRodW1iID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1i
PigqY2FjaGUtPmdldE9yQ3JlYXRlKFNsaWRlclRodW1iUm9sZSkpOworICAgIGF1dG8mIHRodW1i
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPigqY2FjaGUtPmdldE9yQ3JlYXRl
KEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYikpOwogICAgIHRodW1iLnNldFBhcmVudCh0
aGlzKTsKIAogICAgIC8vIEJlZm9yZSBhY3R1YWxseSBhZGRpbmcgdGhlIHZhbHVlIGluZGljYXRv
ciB0byB0aGUgaGllcmFyY2h5LApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2xpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5w
dXRFbGVtZW50KCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTbGlk
ZXJSb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjsgfQogICAgIGJvb2wgaXNTbGlk
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0lucHV0U2xpZGVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNDb250cm9sKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI+IGNyZWF0ZSgpOwogICAg
IHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYigpID0gZGVmYXVsdDsKIAotICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNsaWRl
clRodW1iUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjsgfQogICAgIExh
eW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNwaW5CdXR0b24uY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODgsMTIgKzg4LDEyIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmFkZENoaWxkcmUK
ICAgICAKICAgICBtX2hhdmVDaGlsZHJlbiA9IHRydWU7CiAgICAgCi0gICAgYXV0byYgaW5jcmVt
ZW50b3IgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Z2V0
T3JDcmVhdGUoU3BpbkJ1dHRvblBhcnRSb2xlKSk7CisgICAgYXV0byYgaW5jcmVtZW50b3IgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Z2V0T3JDcmVhdGUo
QWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0KSk7CiAgICAgaW5jcmVtZW50b3Iuc2V0
SXNJbmNyZW1lbnRvcih0cnVlKTsKICAgICBpbmNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7CiAg
ICAgbV9jaGlsZHJlbi5hcHBlbmQoJmluY3JlbWVudG9yKTsKIAotICAgIGF1dG8mIGRlY3JlbWVu
dG9yID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9y
Q3JlYXRlKFNwaW5CdXR0b25QYXJ0Um9sZSkpOworICAgIGF1dG8mIGRlY3JlbWVudG9yID0gZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3JlYXRlKEFj
Y2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOwogICAgIGRlY3JlbWVudG9yLnNldElz
SW5jcmVtZW50b3IoZmFsc2UpOwogICAgIGRlY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKICAg
ICBtX2NoaWxkcmVuLmFwcGVuZCgmZGVjcmVtZW50b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAkocmV2
aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKTsKIAotICAgIEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNwaW5CdXR0b25S
b2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b247IH0KICAgICBib29sIGlzU3Bp
bkJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzTmF0
aXZlU3BpbkJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lk
IGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAg
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0KCk7CiAgICAgCiAgICAgYm9vbCBwcmVzcygpIG92
ZXJyaWRlOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEJ1dHRvblJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOyB9CiAg
ICAgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpoYXNBUklBUm9sZSgpIGMKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlID0gYXJpYVJvbGVBdHRy
aWJ1dGUoKTsKLSAgICBpZiAoYXJpYVJvbGUgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKGFyaWFS
b2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24g
dGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gbWF4Q29sdW1uQ291bnQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdldE9yQ3JlYXRlKENvbHVtblJvbGUpKTsKKyAgICAgICAg
YXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqYXhDYWNo
ZS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikpOwogICAgICAgICBjb2x1
bW4uc2V0Q29sdW1uSW5kZXgoKGludClpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlz
KTsKICAgICAgICAgbV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKQEAgLTUwNSw3ICs1MDUsNyBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGU6CiAgICAgaWYgKG1faGVh
ZGVyQ29udGFpbmVyKQogICAgICAgICByZXR1cm4gbV9oZWFkZXJDb250YWluZXIuZ2V0KCk7CiAg
ICAgCi0gICAgYXV0byYgdGFibGVIZWFkZXIgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TW9ja09i
amVjdD4oKmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoVGFibGVIZWFkZXJDb250YWluZXJS
b2xlKSk7CisgICAgYXV0byYgdGFibGVIZWFkZXIgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TW9j
a09iamVjdD4oKmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYmxlSGVhZGVyQ29udGFpbmVyKSk7CiAgICAgdGFibGVIZWFkZXIuc2V0UGFyZW50KHRoaXMp
OwogCiAgICAgbV9oZWFkZXJDb250YWluZXIgPSAmdGFibGVIZWFkZXI7CkBAIC02NDcsMTggKzY0
NywxOCBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGU6OnJvCiAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpyb2xlVmFsdWUoKTsKICAgICAKICAg
ICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9IGFyaWFSb2xlQXR0cmlidXRlKCk7Ci0gICAg
aWYgKGFyaWFSb2xlID09IEdyaWRSb2xlIHx8IGFyaWFSb2xlID09IFRyZWVHcmlkUm9sZSkKKyAg
ICBpZiAoYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQgfHwgYXJpYVJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkKQogICAgICAgICByZXR1cm4gYXJpYVJvbGU7CiAK
LSAgICByZXR1cm4gVGFibGVSb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFi
bGU7CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24g
ZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRlY2lzaW9uID09
IEluY2x1ZGVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
ZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAogICAgIGlmICghaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpKQpAQCAtNjcx
LDcgKzY3MSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZUVsZW1lbnRUZXgKIHsK
ICAgICBTdHJpbmcgdGl0bGUgPSB0aGlzLT50aXRsZSgpOwogICAgIGlmICghdGl0bGUuaXNFbXB0
eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlLCBM
YWJlbEJ5RWxlbWVudFRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmls
aXR5VGV4dCh0aXRsZSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkxhYmVsQnlFbGVtZW50KSk7
CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsLmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsOSAr
NTgsOSBAQCBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4gQWNjZXNzaWJpbGl0CiBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gZGVmYXVs
dE9iamVjdEluY2x1c2lvbigpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQor
ICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRl
T2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lzaW9uID09IElnbm9y
ZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lv
bjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBJZ25v
cmUgYW5vbnltb3VzIHRhYmxlIGNlbGxzIGFzIGxvbmcgYXMgdGhleSdyZSBub3QgaW4gYSB0YWJs
ZSAoaWUuIHdoZW4gZGlzcGxheTp0YWJsZSBpcyB1c2VkKS4KQEAgLTEyOCwxNyArMTI4LDE3IEBA
IEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwKICAgICAvLyByb2xlLCBm
YWxsaW5nIGJhY2sgb24gdGhlIHJvbGUgdG8gYmUgdXNlZCBpZiB3ZSBkZXRlcm1pbmUgaGVyZSB0
aGF0IHRoZSBlbGVtZW50CiAgICAgLy8gc2hvdWxkIG5vdCBiZSBleHBvc2VkIGFzIGEgY2VsbC4g
VGh1cyBpZiB3ZSBhbHJlYWR5IGtub3cgaXQncyBhIGNlbGwsIHJldHVybiB0aGF0LgogICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIGRlZmF1bHRSb2xlID0gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKTsKLSAgICBpZiAoZGVmYXVsdFJvbGUgPT0gQ29s
dW1uSGVhZGVyUm9sZSB8fCBkZWZhdWx0Um9sZSA9PSBSb3dIZWFkZXJSb2xlIHx8IGRlZmF1bHRS
b2xlID09IENlbGxSb2xlIHx8IGRlZmF1bHRSb2xlID09IEdyaWRDZWxsUm9sZSkKKyAgICBpZiAo
ZGVmYXVsdFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlciB8fCBkZWZhdWx0
Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIHx8IGRlZmF1bHRSb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpDZWxsIHx8IGRlZmF1bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpHcmlkQ2VsbCkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlOwogCiAgICAgaWYgKCFpc1Rh
YmxlQ2VsbCgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdFJvbGU7CiAgICAgaWYgKGlzQ29sdW1u
SGVhZGVyQ2VsbCgpKQotICAgICAgICByZXR1cm4gQ29sdW1uSGVhZGVyUm9sZTsKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXI7CiAgICAgaWYgKGlzUm93SGVh
ZGVyQ2VsbCgpKQotICAgICAgICByZXR1cm4gUm93SGVhZGVyUm9sZTsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXI7CiAKLSAgICByZXR1cm4gQ2VsbFJvbGU7Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsOwogfQogICAgIAogYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjppc1RhYmxlSGVhZGVyQ2VsbCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4uY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcg
Kzg3LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQwogICAgIAog
ICAgIGlmIChwYXJlbnRUYWJsZS5pc0FyaWFUYWJsZSgpKSB7CiAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgY2VsbCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgICAgIGlmIChjZWxsLT5hcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IENvbHVtbkhlYWRlclJvbGUpCisgICAgICAgICAgICBpZiAoY2VsbC0+
YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyKQog
ICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbi5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBo
ZWFkZXJPYmplY3QoKTsKICAgICAgICAgCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29sdW1uUm9sZTsgfQorICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2x1bW47IH0KICAgICAKICAgICB2b2lkIHNldENvbHVtbkluZGV4KGludCBjb2x1bW5J
bmRleCkgeyBtX2NvbHVtbkluZGV4ID0gY29sdW1uSW5kZXg7IH0KICAgICBpbnQgY29sdW1uSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbkluZGV4OyB9ICAgIApJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUhlYWRlckNvbnRhaW5lci5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcj4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+QWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyKCk7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVGFibGVIZWFkZXJDb250
YWluZXJSb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOyB9
CiAgICAgCiAgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwogICAgIApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMCArNTks
MTAgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlUm93OgogICAgIGlmICgh
aXNUYWJsZVJvdygpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKTsKIAotICAgIGlmICgobV9hcmlhUm9sZSA9IGRl
dGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IFVua25vd25Sb2xlKQorICAgIGlmICgobV9h
cmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IEFjY2Vzc2liaWxpdHlS
b2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gbV9hcmlhUm9sZTsKIAotICAgIHJldHVybiBS
b3dSb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93OwogfQogCiBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdzo6aXNUYWJsZVJvdygpIGNvbnN0CkBAIC04MCw5ICs4MCw5IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVIKIGJvb2wgQWNjZXNzaWJp
bGl0eVRhYmxlUm93Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7ICAg
IAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2Jq
ZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3QpCisgICAg
aWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2Jq
ZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJ
Z25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGlmICghaXNUYWJs
ZVJvdygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VHJlZS5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSwx
MCArNTksMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VHJlZTo6Y29tcHV0ZUFjY2Vzc2liaQogCiBB
Y2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VHJlZTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0
eVJvbGUoKQogewotICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmli
dXRlKCkpICE9IFRyZWVSb2xlKQorICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFS
b2xlQXR0cmlidXRlKCkpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlKQogICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KTsKIAotICAgIHJldHVybiBpc1RyZWVWYWxpZCgpID8gVHJlZVJvbGUgOiBHcm91cFJvbGU7Cisg
ICAgcmV0dXJuIGlzVHJlZVZhbGlkKCkgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSA6IEFjY2Vz
c2liaWxpdHlSb2xlOjpHcm91cDsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VHJlZTo6bm9kZUhh
c1RyZWVJdGVtQ2hpbGQoTm9kZSYgbm9kZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5t
bQkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJCiAgICAgCiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQ
bGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVmYXVsdEJlaGF2
aW9yOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVo
YXZpb3I7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzVG91Y2hFdmVudExpc3Rl
bmVyKCkgY29uc3QKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpo
YXNUb3VjaEV2ZW50TAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0lucHV0VHlwZVBvcHVw
QnV0dG9uKCkgY29uc3QKIHsKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSgpKSkK
LSAgICAgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFBvcFVwQnV0dG9uUm9sZTsKKyAgICAgICAg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzQyLDMwICszNDIsMzAgQEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5Q2FuRnV6enlIaXRU
ZXN0CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1fb2JqZWN0LT5yb2xlVmFsdWUoKTsK
ICAgICAvLyBFbGVtZW50cyB0aGF0IGNhbiBiZSByZXR1cm5lZCB3aGVuIHBlcmZvcm1pbmcgZnV6
enkgaGl0IHRlc3RpbmcuCiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgY2FzZSBCdXR0b25Sb2xl
OgotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgQ29tYm9Cb3hSb2xlOgotICAgIGNh
c2UgRGlzY2xvc3VyZVRyaWFuZ2xlUm9sZToKLSAgICBjYXNlIEhlYWRpbmdSb2xlOgotICAgIGNh
c2UgSW1hZ2VNYXBMaW5rUm9sZToKLSAgICBjYXNlIEltYWdlUm9sZToKLSAgICBjYXNlIExpbmtS
b2xlOgotICAgIGNhc2UgTGlzdEJveFJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToK
LSAgICBjYXNlIE1lbnVCdXR0b25Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNh
c2UgTWVudUl0ZW1DaGVja2JveFJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAg
ICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBj
YXNlIFNjcm9sbEJhclJvbGU6Ci0gICAgY2FzZSBTZWFyY2hGaWVsZFJvbGU6Ci0gICAgY2FzZSBT
bGlkZXJSb2xlOgotICAgIGNhc2UgU3RhdGljVGV4dFJvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xl
OgotICAgIGNhc2UgVGFiUm9sZToKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgY2FzZSBU
b2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpDb21ib0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXNjbG9zdXJl
VHJpYW5nbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6SW1hZ2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluazoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3RCb3hPcHRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVJdGVtUmFkaW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNl
YXJjaEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRvZ2dsZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuICFtX29iamVjdC0+YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyMCwx
OCArNTIwLDE4IEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzRGlhbG9nCiAtIChCT09MKV9hY2Nl
c3NpYmlsaXR5SXNMYW5kbWFya1JvbGU6KEFjY2Vzc2liaWxpdHlSb2xlKXJvbGUKIHsKICAgICBz
d2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNlIERvY3VtZW50Um9sZToKLSAgICBjYXNlIERvY3VtZW50
QXJ0aWNsZVJvbGU6Ci0gICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgotICAgIGNhc2UgRm9vdGVy
Um9sZToKLSAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKLSAgICBjYXNlIExhbmRtYXJrQ29t
cGxlbWVudGFyeVJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZToKLSAgICBj
YXNlIExhbmRtYXJrRG9jUmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0g
ICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtSZWdpb25S
b2xlOgotICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50QXJ0
aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrQmFubmVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29t
cGxlbWVudGFyeToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJ
bmZvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtT
ZWFyY2g6CiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IE5POwpAQCAtNTQyLDcgKzU0Miw3IEBAIC0gKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilf
YWNjZXNzaWIKIHsKICAgICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG9iamVj
dC5yb2xlVmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIHJvbGUgPT0gVHJlZVJvbGU7CisgICAgICAg
IHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOwogICAgIH07CiAgICAgCiAg
ICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMp
KSkKQEAgLTU1NCw3ICs1NTQsNyBAQCAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2Fj
Y2Vzc2liCiB7CiAgICAgYXV0byBtYXRjaEZ1bmMgPSBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdCYgb2JqZWN0KSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBvYmplY3Qu
cm9sZVZhbHVlKCk7Ci0gICAgICAgIHJldHVybiByb2xlID09IExpc3RSb2xlIHx8IHJvbGUgPT0g
TGlzdEJveFJvbGU7CisgICAgICAgIHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7CiAgICAgfTsKICAgICAK
ICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIGZhbHNlLCBXVEZNb3ZlKG1hdGNoRnVu
YykpKQpAQCAtNTY1LDcgKzU2NSw3IEBAIC0gKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilf
YWNjZXNzaWIKIC0gKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilfYWNjZXNzaWJpbGl0eUFy
dGljbGVBbmNlc3RvcgogewogICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwgZmFsc2Us
IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKLSAgICAgICAgcmV0dXJu
IG9iamVjdC5yb2xlVmFsdWUoKSA9PSBEb2N1bWVudEFydGljbGVSb2xlOworICAgICAgICByZXR1
cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGlj
bGU7CiAgICAgfSkpCiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKICAgICByZXR1
cm4gbmlsOwpAQCAtNjE4LDQ4ICs2MTgsNDcgQEAgLSAodWludDY0X3QpX2FjY2Vzc2liaWxpdHlU
cmFpdHNGcm9tQW5jZQogICAgIC8vIFRoZSBwYXJlbnRPYmplY3QgaXMgbmVlZGVkIGluc3RlYWQg
b2YgdGhlIHVuaWdub3JlZFBhcmVudE9iamVjdCwgYmVjYXVzZSBhIHRhYmxlIG1pZ2h0IGJlIGln
bm9yZWQsIGJ1dCBpbmZvcm1hdGlvbiBzdGlsbCBuZWVkcyB0byBiZSBnYXRoZXJlZCBmcm9tIGl0
LiAgICAKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5w
YXJlbnRPYmplY3QoKTsgcGFyZW50ICE9IG5pbDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmpl
Y3QoKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBwYXJlbnRSb2xlID0gcGFyZW50LT5y
b2xlVmFsdWUoKTsKLSAgICAgICAgaWYgKHBhcmVudFJvbGUgPT0gV2ViQXJlYVJvbGUpCisgICAg
ICAgIGlmIChwYXJlbnRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHBhcmVudFJvbGUpIHsKLSAg
ICAgICAgICAgIGNhc2UgTGlua1JvbGU6Ci0gICAgICAgICAgICBjYXNlIFdlYkNvcmVMaW5rUm9s
ZToKLSAgICAgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4TGlua1RyYWl0XTsKLSAgICAg
ICAgICAgICAgICBpZiAocGFyZW50LT5pc1Zpc2l0ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
dHJhaXRzIHw9IFtzZWxmIF9heFZpc2l0ZWRUcmFpdF07Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIEhlYWRpbmdSb2xlOgotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhIZWFkZXJUcmFpdF07Ci0gICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBvYmplY3QgaGFzIHRoZSBoZWFkZXIgdHJhaXQsIHdlIHNob3VsZCBzZXQgdGhl
IHZhbHVlCi0gICAgICAgICAgICAgICAgLy8gdG8gdGhlIGhlYWRpbmcgbGV2ZWwuIElmIGl0IHdh
cyBhIHN0YXRpYyB0ZXh0IGVsZW1lbnQsIHdlIG5lZWQgdG8gc3RvcmUKLSAgICAgICAgICAgICAg
ICAvLyB0aGUgdmFsdWUgYXMgdGhlIGxhYmVsLCBiZWNhdXNlIHRoZSBoZWFkaW5nIGxldmVsIG5l
ZWRzIHRvIHRoZSB2YWx1ZS4KLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciogd3JhcHBlciA9IHBhcmVudC0+d3JhcHBlcigpOwotICAgICAgICAgICAgICAgIGlmIChy
b2xlID09IFN0YXRpY1RleHRSb2xlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IHNldCB0aGUgdGV4dCB2YWx1ZSBhcyB0aGUgbGFiZWwgd2hlbiB0aGVyZSdzIG5vCi0g
ICAgICAgICAgICAgICAgICAgIC8vIGFsdGVybmF0ZSB0ZXh0IG9uIHRoZSBoZWFkaW5nIHBhcmVu
dC4KLSAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmhlYWRpbmdMYWJlbCA9IFt3cmFwcGVy
IGJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25dOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IVtoZWFkaW5nTGFiZWwgbGVuZ3RoXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHNl
dEFjY2Vzc2liaWxpdHlMYWJlbDptX29iamVjdC0+c3RyaW5nVmFsdWUoKV07Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmIHNldEFjY2Vzc2li
aWxpdHlMYWJlbDpoZWFkaW5nTGFiZWxdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBbc2VsZiBzZXRBY2Nlc3NpYmlsaXR5VmFsdWU6W3dyYXBwZXIgYWNjZXNzaWJpbGl0eVZh
bHVlXV07Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Okxpbms6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5r
OgorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heExpbmtUcmFpdF07CisgICAgICAgICAg
ICBpZiAocGFyZW50LT5pc1Zpc2l0ZWQoKSkKKyAgICAgICAgICAgICAgICB0cmFpdHMgfD0gW3Nl
bGYgX2F4VmlzaXRlZFRyYWl0XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOiB7CisgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYg
X2F4SGVhZGVyVHJhaXRdOworICAgICAgICAgICAgLy8gSWYgdGhpcyBvYmplY3QgaGFzIHRoZSBo
ZWFkZXIgdHJhaXQsIHdlIHNob3VsZCBzZXQgdGhlIHZhbHVlCisgICAgICAgICAgICAvLyB0byB0
aGUgaGVhZGluZyBsZXZlbC4gSWYgaXQgd2FzIGEgc3RhdGljIHRleHQgZWxlbWVudCwgd2UgbmVl
ZCB0byBzdG9yZQorICAgICAgICAgICAgLy8gdGhlIHZhbHVlIGFzIHRoZSBsYWJlbCwgYmVjYXVz
ZSB0aGUgaGVhZGluZyBsZXZlbCBuZWVkcyB0byB0aGUgdmFsdWUuCisgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IHBhcmVudC0+d3JhcHBlcigpOworICAg
ICAgICAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBzZXQgdGhlIHRleHQgdmFsdWUgYXMgdGhl
IGxhYmVsIHdoZW4gdGhlcmUncyBubworICAgICAgICAgICAgICAgIC8vIGFsdGVybmF0ZSB0ZXh0
IG9uIHRoZSBoZWFkaW5nIHBhcmVudC4KKyAgICAgICAgICAgICAgICBOU1N0cmluZyAqaGVhZGlu
Z0xhYmVsID0gW3dyYXBwZXIgYmFzZUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbl07CisgICAgICAg
ICAgICAgICAgaWYgKCFbaGVhZGluZ0xhYmVsIGxlbmd0aF0pCisgICAgICAgICAgICAgICAgICAg
IFtzZWxmIHNldEFjY2Vzc2liaWxpdHlMYWJlbDptX29iamVjdC0+c3RyaW5nVmFsdWUoKV07Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBbc2VsZiBzZXRBY2Nlc3Np
YmlsaXR5TGFiZWw6aGVhZGluZ0xhYmVsXTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNh
c2UgTGlzdEJveFJvbGU6Ci0gICAgICAgICAgICBjYXNlIExpc3RSb2xlOgotICAgICAgICAgICAg
ICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeUxpc3RUcmFpdF07Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdyaWRSb2xlOgotICAgICAgICAgICAgY2Fz
ZSBUYWJsZVJvbGU6Ci0gICAgICAgICAgICBjYXNlIFRyZWVHcmlkUm9sZToKLSAgICAgICAgICAg
ICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4Q29udGFpbmVkQnlUYWJsZVRyYWl0XTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYg
KFtzZWxmIF9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFya1JvbGU6cGFyZW50Um9sZV0pCi0gICAgICAg
ICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeUxhbmRtYXJrVHJhaXRd
OwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgW3NlbGYgc2V0QWNjZXNzaWJp
bGl0eVZhbHVlOlt3cmFwcGVyIGFjY2Vzc2liaWxpdHlWYWx1ZV1dOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDoK
KyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdDoKKyAgICAgICAgICAgIHRyYWl0
cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeUxpc3RUcmFpdF07CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAgICAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFibGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRy
ZWVHcmlkOgorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENvbnRhaW5lZEJ5VGFibGVU
cmFpdF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGlmIChbc2VsZiBfYWNjZXNzaWJpbGl0eUlzTGFuZG1hcmtSb2xlOnBhcmVudFJvbGVdKQorICAg
ICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeUxhbmRtYXJrVHJhaXRd
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIElm
IHRoaXMgb2JqZWN0IGhhcyBmaWVsZHNldCBwYXJlbnQsIHdlIHNob3VsZCBhZGQgY29udGFpbmVk
QnlGaWVsZHNldFRyYWl0IHRvIGl0LgpAQCAtNzQxLDkgKzc0MCw5IEBAIC0gKHVpbnQ2NF90KV9h
Y2Nlc3NpYmlsaXR5VGV4dEVudHJ5VHJhaXQKICAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBfYXhI
YXNUZXh0Q3Vyc29yVHJhaXRdIHwgW3NlbGYgX2F4VGV4dE9wZXJhdGlvbnNBdmFpbGFibGVUcmFp
dF0pOwogICAgIGlmIChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHRyYWl0
cyB8PSBbc2VsZiBfYXhTZWN1cmVUZXh0RmllbGRUcmFpdF07Ci0gICAgaWYgKG1fb2JqZWN0LT5y
b2xlVmFsdWUoKSA9PSBTZWFyY2hGaWVsZFJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQpCiAgICAgICAgIHRyYWl0cyB8
PSBbc2VsZiBfYXhTZWFyY2hGaWVsZFRyYWl0XTsKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1
ZSgpID09IFRleHRBcmVhUm9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSkKICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRl
eHRBcmVhVHJhaXRdOwogICAgIHJldHVybiB0cmFpdHM7CiB9CkBAIC03NTYsNTggKzc1NSw1OCBA
QCAtICh1aW50NjRfdClhY2Nlc3NpYmlsaXR5VHJhaXRzCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSA9IG1fb2JqZWN0LT5yb2xlVmFsdWUoKTsKICAgICB1aW50NjRfdCB0cmFpdHMgPSBbc2Vs
ZiBfYXhXZWJDb250ZW50VHJhaXRdOwogICAgIHN3aXRjaCAocm9sZSkgewotICAgICAgICBjYXNl
IExpbmtSb2xlOgotICAgICAgICBjYXNlIFdlYkNvcmVMaW5rUm9sZToKLSAgICAgICAgICAgIHRy
YWl0cyB8PSBbc2VsZiBfYXhMaW5rVHJhaXRdOwotICAgICAgICAgICAgaWYgKG1fb2JqZWN0LT5p
c1Zpc2l0ZWQoKSkKLSAgICAgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VmlzaXRlZFRy
YWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0g
ICAgICAgIGNhc2UgU2VhcmNoRmllbGRSb2xlOgotICAgICAgICBjYXNlIFRleHRBcmVhUm9sZToK
LSAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYWNjZXNzaWJpbGl0eVRleHRFbnRyeVRyYWl0
c107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbWFnZVJvbGU6Ci0gICAgICAg
ICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4SW1hZ2VUcmFpdF07Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBUYWJSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRh
YkJ1dHRvblRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJ1dHRvblJv
bGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4QnV0dG9uVHJhaXRdOwotICAgICAg
ICAgICAgaWYgKG1fb2JqZWN0LT5pc1ByZXNzZWQoKSkKLSAgICAgICAgICAgICAgICB0cmFpdHMg
fD0gW3NlbGYgX2F4VG9nZ2xlVHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgUG9wVXBCdXR0b25Sb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFBvcHVw
QnV0dG9uVHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmFkaW9CdXR0
b25Sb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFJhZGlvQnV0dG9uVHJhaXRd
IHwgW3NlbGYgX2F4VG9nZ2xlVHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgVG9nZ2xlQnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgICAg
IGNhc2UgU3dpdGNoUm9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSAoW3NlbGYgX2F4QnV0dG9u
VHJhaXRdIHwgW3NlbGYgX2F4VG9nZ2xlVHJhaXRdKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEhlYWRpbmdSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEhl
YWRlclRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRpY1RleHRS
b2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFN0YXRpY1RleHRUcmFpdF07Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTbGlkZXJSb2xlOgotICAgICAgICAgICAg
dHJhaXRzIHw9IFtzZWxmIF9heEFkanVzdGFibGVUcmFpdF07Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBNZW51QnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBNZW51SXRlbVJvbGU6
Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4TWVudUl0ZW1UcmFpdF07Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICAgICAg
Y2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSAoW3NlbGYgX2F4
TWVudUl0ZW1UcmFpdF0gfCBbc2VsZiBfYXhUb2dnbGVUcmFpdF0pOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMaW5rOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVM
aW5rOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4TGlua1RyYWl0XTsKKyAgICAgICAgaWYg
KG1fb2JqZWN0LT5pc1Zpc2l0ZWQoKSkKKyAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhW
aXNpdGVkVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpUZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CisgICAgICAgIHRyYWl0cyB8PSBb
c2VsZiBfYWNjZXNzaWJpbGl0eVRleHRFbnRyeVRyYWl0c107CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYg
X2F4SW1hZ2VUcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRhYjoKKyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRhYkJ1dHRvblRyYWl0XTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgICAg
ICB0cmFpdHMgfD0gW3NlbGYgX2F4QnV0dG9uVHJhaXRdOworICAgICAgICBpZiAobV9vYmplY3Qt
PmlzUHJlc3NlZCgpKQorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRvZ2dsZVRyYWl0
XTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0
b246CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhQb3B1cEJ1dHRvblRyYWl0XTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAg
ICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhSYWRpb0J1dHRvblRyYWl0XSB8IFtzZWxmIF9heFRvZ2ds
ZVRyYWl0XTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9n
Z2xlQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBf
YXhCdXR0b25UcmFpdF0gfCBbc2VsZiBfYXhUb2dnbGVUcmFpdF0pOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOgorICAgICAgICB0cmFpdHMgfD0g
W3NlbGYgX2F4SGVhZGVyVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0OgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4U3RhdGlj
VGV4dFRyYWl0XTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U2xpZGVyOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4QWRqdXN0YWJsZVRyYWl0XTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICAgICAgdHJhaXRzIHw9IFtz
ZWxmIF9heE1lbnVJdGVtVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVJdGVtUmFkaW86CisgICAgICAgIHRyYWl0cyB8PSAoW3NlbGYgX2F4TWVudUl0ZW1UcmFp
dF0gfCBbc2VsZiBfYXhUb2dnbGVUcmFpdF0pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVu
dEVsZW1lbnQoKSkKQEAgLTg0OSwxNzggKzg0OCwxNzcgQEAgLSAoQk9PTClkZXRlcm1pbmVJc0Fj
Y2Vzc2liaWxpdHlFbGVtZW50CiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwog
ICAgIAogICAgIHN3aXRjaCAobV9vYmplY3QtPnJvbGVWYWx1ZSgpKSB7Ci0gICAgICAgIGNhc2Ug
VGV4dEZpZWxkUm9sZToKLSAgICAgICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAgICAgIGNhc2Ug
QnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgotICAgICAgICBjYXNl
IFBvcFVwQnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgICAgIGNh
c2UgUmFkaW9CdXR0b25Sb2xlOgotICAgICAgICBjYXNlIFNsaWRlclJvbGU6Ci0gICAgICAgIGNh
c2UgTWVudUJ1dHRvblJvbGU6Ci0gICAgICAgIGNhc2UgVmFsdWVJbmRpY2F0b3JSb2xlOgotICAg
ICAgICBjYXNlIEltYWdlUm9sZToKLSAgICAgICAgY2FzZSBJbWFnZU1hcExpbmtSb2xlOgotICAg
ICAgICBjYXNlIFByb2dyZXNzSW5kaWNhdG9yUm9sZToKLSAgICAgICAgY2FzZSBNZW51SXRlbVJv
bGU6Ci0gICAgICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6Ci0gICAgICAgIGNhc2UgTWVu
dUl0ZW1SYWRpb1JvbGU6Ci0gICAgICAgIGNhc2UgSW5jcmVtZW50b3JSb2xlOgotICAgICAgICBj
YXNlIENvbWJvQm94Um9sZToKLSAgICAgICAgY2FzZSBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlOgot
ICAgICAgICBjYXNlIEltYWdlTWFwUm9sZToKLSAgICAgICAgY2FzZSBMaXN0TWFya2VyUm9sZToK
LSAgICAgICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToKLSAgICAgICAgY2FzZSBUYWJSb2xlOgot
ICAgICAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6Ci0gICAgICAgIGNhc2UgSG9yaXpvbnRhbFJ1
bGVSb2xlOgotICAgICAgICBjYXNlIFNsaWRlclRodW1iUm9sZToKLSAgICAgICAgY2FzZSBTd2l0
Y2hSb2xlOgotICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUm9sZToKLSAgICAgICAgY2FzZSBTcGlu
QnV0dG9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIFN0YXRp
Y1RleHRSb2xlOgotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBNYW55IHRleHQgZWxlbWVudHMg
b25seSBjb250YWluIGEgc3BhY2UuCi0gICAgICAgICAgICBpZiAoIVtbW3NlbGYgYWNjZXNzaWJp
bGl0eUxhYmVsXSBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNl
dCB3aGl0ZXNwYWNlQ2hhcmFjdGVyU2V0XV0gbGVuZ3RoXSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIC8vIFRleHQgZWxlbWVudHMgdGhhdCBhcmUganVzdCBw
aWVjZXMgb2YgbGlua3Mgb3IgaGVhZGVycyBzaG91bGQgbm90IGJlIGV4cG9zZWQuCi0gICAgICAg
ICAgICBpZiAoW0FjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3Rvcihbc2VsZiBhY2Nlc3NpYmls
aXR5Q29udGFpbmVyXSkgY29udGFpbnNVbm5hdHVyYWxseVNlZ21lbnRlZENoaWxkcmVuXSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIC8vIERvbid0IGV4cG9zZSBoZWFkZXJzIGFz
IGVsZW1lbnRzOyBpbnN0ZWFkIGV4cG9zZSB0aGVpciBjaGlsZHJlbiBhcyBlbGVtZW50cywgd2l0
aCB0aGUgaGVhZGVyIHRyYWl0ICh1bmxlc3MgdGhleSBoYXZlIG5vIGNoaWxkcmVuKQotICAgICAg
ICBjYXNlIEhlYWRpbmdSb2xlOgotICAgICAgICAgICAgaWYgKCFbc2VsZiBhY2Nlc3NpYmlsaXR5
RWxlbWVudENvdW50XSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGV4dEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1
dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpWYWx1ZUluZGljYXRvcjoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpJbWFnZU1hcExpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRp
Y2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkluY3Jl
bWVudG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkRpc2Nsb3N1cmVUcmlhbmdsZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpJbWFnZU1hcDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0TWFy
a2VyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTd2l0Y2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNo
RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDogewor
ICAgICAgICAvLyBNYW55IHRleHQgZWxlbWVudHMgb25seSBjb250YWluIGEgc3BhY2UuCisgICAg
ICAgIGlmICghW1tbc2VsZiBhY2Nlc3NpYmlsaXR5TGFiZWxdIHN0cmluZ0J5VHJpbW1pbmdDaGFy
YWN0ZXJzSW5TZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VDaGFyYWN0ZXJTZXRdXSBsZW5n
dGhdKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgVmlkZW9Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlJc1dl
YkludGVyYWN0aXZlVmlkZW9dOwotICAgICAgICAgICAgCi0gICAgICAgIC8vIExpbmtzIGNhbiBz
b21ldGltZXMgYmUgZWxlbWVudHMgKHdoZW4gdGhleSBvbmx5IGNvbnRhaW4gc3RhdGljIHRleHQg
b3IgZG9uJ3QgY29udGFpbiBhbnl0aGluZykuCi0gICAgICAgIC8vIFRoZXkgc2hvdWxkIG5vdCBi
ZSBlbGVtZW50cyB3aGVuIGNvbnRhaW5pbmcgdGV4dCBhbmQgb3RoZXIgdHlwZXMuCi0gICAgICAg
IGNhc2UgV2ViQ29yZUxpbmtSb2xlOgotICAgICAgICBjYXNlIExpbmtSb2xlOgotICAgICAgICAg
ICAgaWYgKFtzZWxmIGNvbnRhaW5zVW5uYXR1cmFsbHlTZWdtZW50ZWRDaGlsZHJlbl0gfHwgIVtz
ZWxmIGFjY2Vzc2liaWxpdHlFbGVtZW50Q291bnRdKQotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEdyb3VwUm9sZToK
LSAgICAgICAgICAgIGlmIChbc2VsZiBpc1NWR0dyb3VwRWxlbWVudF0pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgLy8gQWxs
IG90aGVyIGVsZW1lbnRzIGFyZSBpZ25vcmVkIG9uIHRoZSBpcGhvbmUuCi0gICAgICAgIGNhc2Ug
QW5ub3RhdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25Sb2xlOgotICAgICAgICBj
YXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnRE
aWFsb2dSb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKLSAgICAgICAg
Y2FzZSBBcHBsaWNhdGlvbkdyb3VwUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkxvZ1Jv
bGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToKLSAgICAgICAgY2FzZSBB
cHBsaWNhdGlvblN0YXR1c1JvbGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25UZXh0R3JvdXBS
b2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xlOgotICAgICAgICBjYXNlIEF1
ZGlvUm9sZToKLSAgICAgICAgY2FzZSBCbG9ja3F1b3RlUm9sZToKLSAgICAgICAgY2FzZSBCcm93
c2VyUm9sZToKLSAgICAgICAgY2FzZSBCdXN5SW5kaWNhdG9yUm9sZToKLSAgICAgICAgY2FzZSBD
YW52YXNSb2xlOgotICAgICAgICBjYXNlIENhcHRpb25Sb2xlOgotICAgICAgICBjYXNlIENlbGxS
b2xlOgotICAgICAgICBjYXNlIENvbG9yV2VsbFJvbGU6Ci0gICAgICAgIGNhc2UgQ29sdW1uUm9s
ZToKLSAgICAgICAgY2FzZSBDb2x1bW5IZWFkZXJSb2xlOgotICAgICAgICBjYXNlIERlZmluaXRp
b25Sb2xlOgotICAgICAgICBjYXNlIERlc2NyaXB0aW9uTGlzdFJvbGU6Ci0gICAgICAgIGNhc2Ug
RGVzY3JpcHRpb25MaXN0VGVybVJvbGU6Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0RGV0
YWlsUm9sZToKLSAgICAgICAgY2FzZSBEZXRhaWxzUm9sZToKLSAgICAgICAgY2FzZSBEaXJlY3Rv
cnlSb2xlOgotICAgICAgICBjYXNlIERpdlJvbGU6Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRSb2xl
OgotICAgICAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgICAgIGNhc2UgRG9jdW1l
bnROb3RlUm9sZToKLSAgICAgICAgY2FzZSBEcmF3ZXJSb2xlOgotICAgICAgICBjYXNlIEVkaXRh
YmxlVGV4dFJvbGU6Ci0gICAgICAgIGNhc2UgRmVlZFJvbGU6Ci0gICAgICAgIGNhc2UgRmlndXJl
Um9sZToKLSAgICAgICAgY2FzZSBGb290ZXJSb2xlOgotICAgICAgICBjYXNlIEZvb3Rub3RlUm9s
ZToKLSAgICAgICAgY2FzZSBGb3JtUm9sZToKLSAgICAgICAgY2FzZSBHcmlkUm9sZToKLSAgICAg
ICAgY2FzZSBHcmlkQ2VsbFJvbGU6Ci0gICAgICAgIGNhc2UgR3Jvd0FyZWFSb2xlOgotICAgICAg
ICBjYXNlIEhlbHBUYWdSb2xlOgotICAgICAgICBjYXNlIElnbm9yZWRSb2xlOgotICAgICAgICBj
YXNlIElubGluZVJvbGU6Ci0gICAgICAgIGNhc2UgTGFiZWxSb2xlOgotICAgICAgICBjYXNlIExh
bmRtYXJrQmFubmVyUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xl
OgotICAgICAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAgICAgICBjYXNlIExh
bmRtYXJrRG9jUmVnaW9uUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgotICAg
ICAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtS
ZWdpb25Sb2xlOgotICAgICAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKLSAgICAgICAgY2Fz
ZSBMZWdlbmRSb2xlOgotICAgICAgICBjYXNlIExpc3RSb2xlOgotICAgICAgICBjYXNlIExpc3RC
b3hSb2xlOgotICAgICAgICBjYXNlIExpc3RJdGVtUm9sZToKLSAgICAgICAgY2FzZSBNYXJrUm9s
ZToKLSAgICAgICAgY2FzZSBNYXRoRWxlbWVudFJvbGU6Ci0gICAgICAgIGNhc2UgTWF0dGVSb2xl
OgotICAgICAgICBjYXNlIE1lbnVSb2xlOgotICAgICAgICBjYXNlIE1lbnVCYXJSb2xlOgotICAg
ICAgICBjYXNlIE1lbnVMaXN0UG9wdXBSb2xlOgotICAgICAgICBjYXNlIE1lbnVMaXN0T3B0aW9u
Um9sZToKLSAgICAgICAgY2FzZSBPdXRsaW5lUm9sZToKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhS
b2xlOgotICAgICAgICBjYXNlIFByZVJvbGU6Ci0gICAgICAgIGNhc2UgUHJlc2VudGF0aW9uYWxS
b2xlOgotICAgICAgICBjYXNlIFJhZGlvR3JvdXBSb2xlOgotICAgICAgICBjYXNlIFJvd0hlYWRl
clJvbGU6Ci0gICAgICAgIGNhc2UgUm93Um9sZToKLSAgICAgICAgY2FzZSBSdWJ5QmFzZVJvbGU6
Ci0gICAgICAgIGNhc2UgUnVieUJsb2NrUm9sZToKLSAgICAgICAgY2FzZSBSdWJ5SW5saW5lUm9s
ZToKLSAgICAgICAgY2FzZSBSdWJ5UnVuUm9sZToKLSAgICAgICAgY2FzZSBSdWJ5VGV4dFJvbGU6
Ci0gICAgICAgIGNhc2UgUnVsZXJSb2xlOgotICAgICAgICBjYXNlIFJ1bGVyTWFya2VyUm9sZToK
LSAgICAgICAgY2FzZSBTY3JvbGxBcmVhUm9sZToKLSAgICAgICAgY2FzZSBTY3JvbGxCYXJSb2xl
OgotICAgICAgICBjYXNlIFNoZWV0Um9sZToKLSAgICAgICAgY2FzZSBTcGluQnV0dG9uUGFydFJv
bGU6Ci0gICAgICAgIGNhc2UgU3BsaXRHcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgU3BsaXR0ZXJS
b2xlOgotICAgICAgICBjYXNlIFN1bW1hcnlSb2xlOgotICAgICAgICBjYXNlIFN5c3RlbVdpZGVS
b2xlOgotICAgICAgICBjYXNlIFNWR1Jvb3RSb2xlOgotICAgICAgICBjYXNlIFNWR1RleHRQYXRo
Um9sZToKLSAgICAgICAgY2FzZSBTVkdUZXh0Um9sZToKLSAgICAgICAgY2FzZSBTVkdUU3BhblJv
bGU6Ci0gICAgICAgIGNhc2UgVGFiR3JvdXBSb2xlOgotICAgICAgICBjYXNlIFRhYkxpc3RSb2xl
OgotICAgICAgICBjYXNlIFRhYlBhbmVsUm9sZToKLSAgICAgICAgY2FzZSBUYWJsZVJvbGU6Ci0g
ICAgICAgIGNhc2UgVGFibGVIZWFkZXJDb250YWluZXJSb2xlOgotICAgICAgICBjYXNlIFRlcm1S
b2xlOgotICAgICAgICBjYXNlIFRleHRHcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgVGltZVJvbGU6
Ci0gICAgICAgIGNhc2UgVHJlZVJvbGU6Ci0gICAgICAgIGNhc2UgVHJlZUl0ZW1Sb2xlOgotICAg
ICAgICBjYXNlIFRyZWVHcmlkUm9sZToKLSAgICAgICAgY2FzZSBUb29sYmFyUm9sZToKLSAgICAg
ICAgY2FzZSBVbmtub3duUm9sZToKLSAgICAgICAgY2FzZSBVc2VySW50ZXJmYWNlVG9vbHRpcFJv
bGU6Ci0gICAgICAgIGNhc2UgV2ViQXBwbGljYXRpb25Sb2xlOgotICAgICAgICBjYXNlIFdlYkFy
ZWFSb2xlOgotICAgICAgICBjYXNlIFdpbmRvd1JvbGU6Ci0gICAgICAgIGNhc2UgUm93R3JvdXBS
b2xlOgorCisgICAgICAgIC8vIFRleHQgZWxlbWVudHMgdGhhdCBhcmUganVzdCBwaWVjZXMgb2Yg
bGlua3Mgb3IgaGVhZGVycyBzaG91bGQgbm90IGJlIGV4cG9zZWQuCisgICAgICAgIGlmIChbQWNj
ZXNzaWJpbGl0eVVuaWdub3JlZEFuY2VzdG9yKFtzZWxmIGFjY2Vzc2liaWxpdHlDb250YWluZXJd
KSBjb250YWluc1VubmF0dXJhbGx5U2VnbWVudGVkQ2hpbGRyZW5dKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgICAgIAorICAgIC8v
IERvbid0IGV4cG9zZSBoZWFkZXJzIGFzIGVsZW1lbnRzOyBpbnN0ZWFkIGV4cG9zZSB0aGVpciBj
aGlsZHJlbiBhcyBlbGVtZW50cywgd2l0aCB0aGUgaGVhZGVyIHRyYWl0ICh1bmxlc3MgdGhleSBo
YXZlIG5vIGNoaWxkcmVuKQorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc6Cisg
ICAgICAgIGlmICghW3NlbGYgYWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0pCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpWaWRlbzoKKyAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2li
aWxpdHlJc1dlYkludGVyYWN0aXZlVmlkZW9dOworICAgICAgICAKKyAgICAvLyBMaW5rcyBjYW4g
c29tZXRpbWVzIGJlIGVsZW1lbnRzICh3aGVuIHRoZXkgb25seSBjb250YWluIHN0YXRpYyB0ZXh0
IG9yIGRvbid0IGNvbnRhaW4gYW55dGhpbmcpLgorICAgIC8vIFRoZXkgc2hvdWxkIG5vdCBiZSBl
bGVtZW50cyB3aGVuIGNvbnRhaW5pbmcgdGV4dCBhbmQgb3RoZXIgdHlwZXMuCisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGluazoKKyAgICAgICAgaWYgKFtzZWxmIGNvbnRhaW5zVW5uYXR1cmFsbHlTZWdtZW50ZWRD
aGlsZHJlbl0gfHwgIVtzZWxmIGFjY2Vzc2liaWxpdHlFbGVtZW50Q291bnRdKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpHcm91cDoKKyAgICAgICAgaWYgKFtzZWxmIGlzU1ZHR3JvdXBFbGVtZW50XSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAvLyBB
bGwgb3RoZXIgZWxlbWVudHMgYXJlIGlnbm9yZWQgb24gdGhlIGlwaG9uZS4KKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBbm5vdGF0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxl
cnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uTWFycXVlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
blN0YXR1czoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91
cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkF1ZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkJsb2NrcXVvdGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnJvd3NlcjoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXN5SW5kaWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNhbnZhczoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDYXB0aW9uOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q29sb3JXZWxsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXI6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6RGVmaW5pdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNj
cmlwdGlvbkxpc3Q6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0
VGVybToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3REZXRhaWw6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlsczoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpEaXJlY3Rvcnk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGl2Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkRvY3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudE5vdGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RHJhd2VyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkVkaXRhYmxlVGV4dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpGZWVkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Rm9vdG5vdGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9ybToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okdy
aWRDZWxsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3dBcmVhOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkhlbHBUYWc6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
SWdub3JlZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbmxpbmU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFiZWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtCYW5uZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVt
ZW50YXJ5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm86
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJj
aDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMZWdlbmQ6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1hcms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0aEVsZW1lbnQ6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0dGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0UG9wdXA6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
T3V0bGluZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGg6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBy
ZXNlbnRhdGlvbmFsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlJvdzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5QmFzZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5QmxvY2s6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UnVieUlubGluZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5UnVu
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlUZXh0OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJ1bGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1bGVyTWFy
a2VyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlNoZWV0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6U3BsaXR0ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTeXN0ZW1XaWRlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlNWR1Jvb3Q6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4
dFBhdGg6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dDoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTVkdUU3BhbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
YWJHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYmxlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVy
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRlcm06CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGV4dEdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRpbWU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlSXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlVua25vd246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVyZmFj
ZVRvb2x0aXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGljYXRpb246Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpXaW5kb3c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93R3JvdXA6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0xMDQyLDcgKzEwNDAsNyBAQCAtIChCT09MKXN0cmluZ1ZhbHVlU2hvdWxkQmVVc2Vk
SW5MYWJlbAogewogICAgIGlmIChtX29iamVjdC0+aXNUZXh0Q29udHJvbCgpKQogICAgICAgICBy
ZXR1cm4gTk87Ci0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBQb3BVcEJ1dHRvblJv
bGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
UG9wVXBCdXR0b24pCiAgICAgICAgIHJldHVybiBOTzsKICAgICBpZiAobV9vYmplY3QtPmlzRmls
ZVVwbG9hZEJ1dHRvbigpKQogICAgICAgICByZXR1cm4gTk87CkBAIC0xMTMwLDkgKzExMjgsOSBA
QCAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlMYWJlbAogICAgICAgICBsYW5kbWFya0Rlc2Ny
aXB0aW9uID0gQVhGb290ZXJSb2xlRGVzY3JpcHRpb25UZXh0KCk7CiAKICAgICBOU011dGFibGVT
dHJpbmcgKnJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKLSAgICBpZiAobV9vYmpl
Y3QtPnJvbGVWYWx1ZSgpID09IEhvcml6b250YWxSdWxlUm9sZSkKKyAgICBpZiAobV9vYmplY3Qt
PnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZSkKICAgICAg
ICAgYXBwZW5kU3RyaW5nVG9SZXN1bHQocmVzdWx0LCBBWEhvcml6b250YWxSdWxlRGVzY3JpcHRp
b25UZXh0KCkpOwotICAgICAgICAKKwogICAgIGFwcGVuZFN0cmluZ1RvUmVzdWx0KHJlc3VsdCwg
YXhUaXRsZSk7CiAgICAgYXBwZW5kU3RyaW5nVG9SZXN1bHQocmVzdWx0LCBheERlc2NyaXB0aW9u
KTsKICAgICBpZiAoW3NlbGYgc3RyaW5nVmFsdWVTaG91bGRCZVVzZWRJbkxhYmVsXSkgewpAQCAt
MTM5MCwxMyArMTM4OCwxMyBAQCAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlWYWx1ZQogICAg
ICAgICByZXR1cm4gdmFsdWU7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1f
b2JqZWN0LT5yb2xlVmFsdWUoKTsKLSAgICBpZiAobV9vYmplY3QtPmlzQ2hlY2tib3hPclJhZGlv
KCkgfHwgcm9sZSA9PSBNZW51SXRlbUNoZWNrYm94Um9sZSB8fCByb2xlID09IE1lbnVJdGVtUmFk
aW9Sb2xlKSB7CisgICAgaWYgKG1fb2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3ggfHwgcm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbykgewogICAgICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5j
aGVja2JveE9yUmFkaW9WYWx1ZSgpKSB7Ci0gICAgICAgIGNhc2UgQnV0dG9uU3RhdGVPZmY6Cisg
ICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY6CiAgICAgICAgICAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZCIsIDBdOwotICAgICAgICBjYXNl
IEJ1dHRvblN0YXRlT246CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpP
bjoKICAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVkIiwg
MV07Ci0gICAgICAgIGNhc2UgQnV0dG9uU3RhdGVNaXhlZDoKKyAgICAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkOgogICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJWQiLCAyXTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTE0NTAsNyArMTQ0OCw3IEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlz
Q29tYm9Cb3gKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAg
ICAgICByZXR1cm4gTk87CiAKLSAgICByZXR1cm4gbV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IENv
bWJvQm94Um9sZTsKKyAgICByZXR1cm4gbV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpDb21ib0JveDsKIH0KIAogLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5SGlu
dApAQCAtMTY3MCw3ICsxNjY4LDcgQEAgLSAoQk9PTCljb250YWluc1VubmF0dXJhbGx5U2VnbWVu
dGVkQ2hpbAogICAgICAgICByZXR1cm4gTk87CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSA9IG1fb2JqZWN0LT5yb2xlVmFsdWUoKTsKLSAgICBpZiAocm9sZSAhPSBMaW5rUm9sZSAm
JiByb2xlICE9IFdlYkNvcmVMaW5rUm9sZSkKKyAgICBpZiAocm9sZSAhPSBMaW5rUm9sZSAmJiBy
b2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluaykKICAgICAgICAgcmV0dXJuIE5P
OwogICAgIAogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7
CkBAIC0xNjgyLDcgKzE2ODAsNyBAQCAtIChCT09MKWNvbnRhaW5zVW5uYXR1cmFsbHlTZWdtZW50
ZWRDaGlsCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuU2l6ZTsg
KytpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBjaGlsZHJlbltpXS0+cm9s
ZVZhbHVlKCk7Ci0gICAgICAgIGlmIChyb2xlICE9IFN0YXRpY1RleHRSb2xlICYmIHJvbGUgIT0g
SW1hZ2VSb2xlICYmIHJvbGUgIT0gR3JvdXBSb2xlICYmIHJvbGUgIT0gVGV4dEdyb3VwUm9sZSkK
KyAgICAgICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgcm9s
ZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UgJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JvdXAgJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwKQogICAgICAg
ICAgICAgcmV0dXJuIE5POwogICAgIH0KICAgICAKQEAgLTE4MjYsNyArMTgyNCw3IEBAIC0gKGlk
KWFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50CiAgICAgCiAgICAgLy8gSWYgdGhpcyBzdGF0aWMg
dGV4dCBpbnNpZGUgb2YgYSBsaW5rLCBpdCBzaG91bGQgdXNlIGl0cyBwYXJlbnQncyBsaW5rZWQg
ZWxlbWVudC4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7Ci0g
ICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZSAmJiBtX29iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmlzTGluaygpKQorICAgIGlmIChtX29iamVjdC0+
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgbV9vYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5pc0xpbmsoKSkKICAgICAgICAgZWxlbWVudCA9IG1f
b2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW47CkBAIC0yMDAwLDcg
KzE5OTgsNyBAQCAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0Kil0cmVlSXRlbVBhcmVudEZvCiB7CiAg
ICAgLy8gVXNlIHRoaXMgdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIGluc2lkZSBhIHRyZWVpdGVt
IG9iamVjdC4KICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNj
ZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqb2JqZWN0LCB0cnVlLCBbXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAgIHJldHVybiBvYmplY3Qucm9s
ZVZhbHVlKCkgPT0gVHJlZUl0ZW1Sb2xlOworICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsKICAgICB9KSkKICAgICAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KHBhcmVudCk7CiAgICAgcmV0dXJu
IG5pbDsKQEAgLTIwMjIsNyArMjAyMCw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eUVsZW1lbnRE
aWRCZWNvbWVGb2MKICAgICAvLyBUaGUgZm9jdXNlZCBWb2ljZU92ZXIgZWxlbWVudCBtaWdodCBi
ZSB0aGUgdGV4dCBpbnNpZGUgYSBsaW5rLgogICAgIC8vIEluIHRob3NlIGNhc2VzIHdlIHNob3Vs
ZCBmb2N1cyBvbiB0aGUgbGluayBpdHNlbGYuCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QgPSBtX29iamVjdDsgb2JqZWN0ICE9IG5pbDsgb2JqZWN0ID0gb2JqZWN0LT5wYXJl
bnRPYmplY3QoKSkgewotICAgICAgICBpZiAob2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBXZWJBcmVh
Um9sZSkKKyAgICAgICAgaWYgKG9iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OldlYkFyZWEpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRGb2N1c0F0dHJpYnV0ZSgpKSB7CkBAIC0yOTk1LDE0ICsyOTkzLDE0IEBAIC0gKE5TU3Ry
aW5nICopYWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24KICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICAKICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5zb3J0RGlyZWN0aW9uKCkpIHsKLSAgICBjYXNlIFNv
cnREaXJlY3Rpb25Bc2NlbmRpbmc6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlv
bjo6QXNjZW5kaW5nOgogICAgICAgICByZXR1cm4gQCJhc2NlbmRpbmciOwotICAgIGNhc2UgU29y
dERpcmVjdGlvbkRlc2NlbmRpbmc6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlv
bjo6RGVzY2VuZGluZzoKICAgICAgICAgcmV0dXJuIEAiZGVzY2VuZGluZyI7Ci0gICAgY2FzZSBT
b3J0RGlyZWN0aW9uT3RoZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6
T3RoZXI6CiAgICAgICAgIHJldHVybiBAIm90aGVyIjsKLSAgICBkZWZhdWx0OgotICAgIGNhc2Ug
U29ydERpcmVjdGlvbk5vbmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6
SW52YWxpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpOb25lOgogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQkocmV2
aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODIsMzIgKzgyLDMyIEBAIGJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUkKIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5j
bHVkZXNPYmplY3QoKSBjb25zdAogewogICAgIGlmIChpc01lbnVMaXN0UG9wdXAoKSB8fCBpc01l
bnVMaXN0T3B0aW9uKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAKLSAgICBp
ZiAocm9sZVZhbHVlKCkgPT0gQ2FwdGlvblJvbGUpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmpl
Y3Q7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDYXB0aW9uKQor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0
OwogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBNYXJrUm9sZSkKLSAgICAgICAgcmV0dXJu
IEluY2x1ZGVPYmplY3Q7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpNYXJrKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5j
bHVkZU9iamVjdDsKIAogICAgIC8vIE5ldmVyIGV4cG9zZSBhbiB1bmtub3duIG9iamVjdCBvbiB0
aGUgTWFjLiBDbGllbnRzIG9mIHRoZSBBWCBBUEkgd2lsbCBub3Qga25vdyB3aGF0IHRvIGRvIHdp
dGggaXQuCiAgICAgLy8gU3BlY2lhbCBjYXNlIGlzIHdoZW4gdGhlIHVua25vd24gb2JqZWN0IGlz
IGFjdHVhbGx5IGFuIGF0dGFjaG1lbnQuCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IFVua25vd25S
b2xlICYmICFpc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAg
ICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gJiYgIWlzQXR0
YWNobWVudCgpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
SWdub3JlT2JqZWN0OwogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBJbmxpbmVSb2xlICYm
ICFpc1N0eWxlRm9ybWF0R3JvdXAoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAg
ICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OklubGluZSAmJiAhaXNTdHls
ZUZvcm1hdEdyb3VwKCkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uOjpJZ25vcmVPYmplY3Q7CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gVGhlIGxlZ2VuZCBlbGVtZW50IGlzIGlnbm9y
ZWQgaWYgaXQgbGl2ZXMgaW5zaWRlIG9mIGEgZmllbGRzZXQgZWxlbWVudCB0aGF0IHVzZXMgaXQg
dG8gZ2VuZXJhdGUgYWx0ZXJuYXRpdmUgdGV4dC4KICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0xl
Z2VuZCgpKSB7CiAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgp
OwogICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgYW5jZXN0b3JzT2ZUeXBlPEhUTUxGaWVsZFNl
dEVsZW1lbnQ+KCplbGVtZW50KS5maXJzdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBJZ25v
cmVPYmplY3Q7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb246Oklnbm9yZU9iamVjdDsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4g
RGVmYXVsdEJlaGF2aW9yOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
OjpEZWZhdWx0QmVoYXZpb3I7CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNh
cmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UubW0JKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIC0gKEJPT0wpZmlsZVVwbG9hZEJ1dHRvblJl
dHVybnNWYWx1ZUluVGkKIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2liaWxpdHlUaXRsZQogewog
ICAgIC8vIFN0YXRpYyB0ZXh0IG9iamVjdHMgc2hvdWxkIG5vdCBoYXZlIGEgdGl0bGUuIEl0cyBj
b250ZW50IGlzIGNvbW11bmljYXRlZCBpbiBpdHMgQVhWYWx1ZS4KLSAgICBpZiAobV9vYmplY3Qt
PnJvbGVWYWx1ZSgpID09IFN0YXRpY1RleHRSb2xlKQorICAgIGlmIChtX29iamVjdC0+cm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpCiAgICAgICAgIHJldHVybiBb
TlNTdHJpbmcgc3RyaW5nXTsKIAogICAgIC8vIEEgZmlsZSB1cGxvYWQgYnV0dG9uIHByZXNlbnRz
IGEgY2hhbGxlbmdlIGJlY2F1c2UgaXQgaGFzIGJ1dHRvbiB0ZXh0IGFuZCBhIHZhbHVlLCBidXQg
dGhlCkBAIC0zNDAsMTYgKzM0MCwxNiBAQCAtIChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5
VGl0bGUKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRleHQgOiB0ZXh0T3JkZXIpIHsKICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBhbHRlcm5hdGl2ZSB0ZXh0LCB0aGVuIHdlIHNob3VsZCBub3Qg
ZXhwb3NlIGEgdGl0bGUuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWx0ZXJuYXRp
dmVUZXh0KQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlOjpBbHRlcm5hdGl2ZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICAg
ICAgLy8gT25jZSB3ZSBlbmNvdW50ZXIgdmlzaWJsZSB0ZXh0LCBvciB0aGUgdGV4dCBmcm9tIG91
ciBjaGlsZHJlbiB0aGF0IHNob3VsZCBiZSB1c2VkIGZvcmVtb3N0LgotICAgICAgICBpZiAodGV4
dC50ZXh0U291cmNlID09IFZpc2libGVUZXh0IHx8IHRleHQudGV4dFNvdXJjZSA9PSBDaGlsZHJl
blRleHQpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRT
b3VyY2U6OlZpc2libGUgfHwgdGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291
cmNlOjpDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRleHQ7CiAgICAgICAgIAog
ICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGVsZW1lbnQgdGhhdCBsYWJlbHMgdGhpcyBvYmplY3Qg
YW5kIGl0J3Mgbm90IGV4cG9zZWQsIHRoZW4gd2Ugc2hvdWxkIHVzZQogICAgICAgICAvLyB0aGF0
IHRleHQgYXMgb3VyIHRpdGxlLgotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IExhYmVs
QnlFbGVtZW50VGV4dCAmJiAhbV9vYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQorICAg
ICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJl
bEJ5RWxlbWVudCAmJiAhbV9vYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAg
ICAgICAgcmV0dXJuIHRleHQudGV4dDsKICAgICB9CiAgICAgCkBAIC0zNjAsNyArMzYwLDcgQEAg
LSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eURlc2NyaXB0aQogewogICAgIC8vIFN0YXRp
YyB0ZXh0IG9iamVjdHMgc2hvdWxkIG5vdCBoYXZlIGEgZGVzY3JpcHRpb24uIEl0cyBjb250ZW50
IGlzIGNvbW11bmljYXRlZCBpbiBpdHMgQVhWYWx1ZS4KICAgICAvLyBPbmUgZXhjZXB0aW9uIGlz
IHRoZSBtZWRpYSBjb250cm9sIGxhYmVscyB0aGF0IGhhdmUgYSB2YWx1ZSBhbmQgYSBkZXNjcmlw
dGlvbi4gVGhvc2UgYXJlIHNldCBwcm9ncmFtYXRpY2FsbHkuCi0gICAgaWYgKG1fb2JqZWN0LT5y
b2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZSAmJiAhbV9vYmplY3QtPmlzTWVkaWFDb250cm9s
TGFiZWwoKSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTdGF0aWNUZXh0ICYmICFtX29iamVjdC0+aXNNZWRpYUNvbnRyb2xMYWJlbCgpKQogICAg
ICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107CiAgICAgCiAgICAgVmVjdG9yPEFjY2Vzc2li
aWxpdHlUZXh0PiB0ZXh0T3JkZXI7CkBAIC0zNjksMTYgKzM2OSwxNiBAQCAtIChOU1N0cmluZyAq
KWJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpCiAgICAgTlNNdXRhYmxlU3RyaW5nICpyZXR1cm5U
ZXh0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwogICAgIGJvb2wgdmlzaWJsZVRleHRBdmFp
bGFibGUgPSBmYWxzZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRleHQgOiB0ZXh0T3JkZXIpIHsK
LSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBbHRlcm5hdGl2ZVRleHQpIHsKKyAgICAg
ICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJu
YXRpdmUpIHsKICAgICAgICAgICAgIFtyZXR1cm5UZXh0IGFwcGVuZFN0cmluZzp0ZXh0LnRleHRd
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN3aXRj
aCAodGV4dC50ZXh0U291cmNlKSB7CiAgICAgICAgIC8vIFRoZXNlIGFyZSBzdWItY29tcG9uZW50
cyBvZiBvbmUgZWxlbWVudCAoQXR0YWNobWVudCkgdGhhdCBhcmUgcmUtY29tYmluZWQgaW4gT1NY
IGFuZCBpT1MuCi0gICAgICAgIGNhc2UgVGl0bGVUZXh0OgotICAgICAgICBjYXNlIFN1YnRpdGxl
VGV4dDoKLSAgICAgICAgY2FzZSBBY3Rpb25UZXh0OiB7CisgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVRleHRTb3VyY2U6OlRpdGxlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291
cmNlOjpTdWJ0aXRsZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWN0
aW9uOiB7CiAgICAgICAgICAgICBpZiAoIXRleHQudGV4dC5sZW5ndGgoKSkKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChbcmV0dXJuVGV4dCBsZW5ndGhdKQpAQCAtMzg2
LDE2ICszODYsMTYgQEAgLSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eURlc2NyaXB0aQog
ICAgICAgICAgICAgW3JldHVyblRleHQgYXBwZW5kU3RyaW5nOnRleHQudGV4dF07CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZpc2libGVUZXh0OgotICAgICAg
ICBjYXNlIENoaWxkcmVuVGV4dDoKLSAgICAgICAgY2FzZSBMYWJlbEJ5RWxlbWVudFRleHQ6Cisg
ICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlZpc2libGU6CisgICAgICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkNoaWxkcmVuOgorICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudDoKICAgICAgICAgICAgIHZpc2libGVU
ZXh0QXZhaWxhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICh0
ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmICF2aXNpYmxlVGV4dEF2YWlsYWJsZSkg
eworICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNl
OjpUaXRsZVRhZyAmJiAhdmlzaWJsZVRleHRBdmFpbGFibGUpIHsKICAgICAgICAgICAgIFtyZXR1
cm5UZXh0IGFwcGVuZFN0cmluZzp0ZXh0LnRleHRdOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTQxMSwyMyArNDExLDIzIEBAIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2liaWxp
dHlIZWxwVGV4dAogICAgIAogICAgIGJvb2wgZGVzY3JpcHRpdmVUZXh0QXZhaWxhYmxlID0gZmFs
c2U7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXh0IDogdGV4dE9yZGVyKSB7Ci0gICAgICAgIGlm
ICh0ZXh0LnRleHRTb3VyY2UgPT0gSGVscFRleHQgfHwgdGV4dC50ZXh0U291cmNlID09IFN1bW1h
cnlUZXh0KQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlOjpIZWxwIHx8IHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6U3VtbWFyeSkKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRleHQ7CiAgICAgICAgIAogICAg
ICAgICAvLyBJZiBhbiBlbGVtZW50IGRvZXMgTk9UIGhhdmUgb3RoZXIgZGVzY3JpcHRpdmUgdGV4
dCB0aGUgdGl0bGUgdGFnIHNob3VsZCBiZSB1c2VkIGFzIGl0cyBkZXNjcmlwdGl2ZSB0ZXh0Lgog
ICAgICAgICAvLyBCdXQsIGlmIHRob3NlIEFSRSBhdmFpbGFibGUsIHRoZW4gdGhlIHRpdGxlIHRh
ZyBzaG91bGQgYmUgdXNlZCBmb3IgaGVscCB0ZXh0IGluc3RlYWQuCiAgICAgICAgIHN3aXRjaCAo
dGV4dC50ZXh0U291cmNlKSB7Ci0gICAgICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0OgotICAgICAg
ICBjYXNlIFZpc2libGVUZXh0OgotICAgICAgICBjYXNlIENoaWxkcmVuVGV4dDoKLSAgICAgICAg
Y2FzZSBMYWJlbEJ5RWxlbWVudFRleHQ6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRT
b3VyY2U6OkFsdGVybmF0aXZlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNl
OjpWaXNpYmxlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpDaGlsZHJl
bjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQ6
CiAgICAgICAgICAgICBkZXNjcmlwdGl2ZVRleHRBdmFpbGFibGUgPSB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBUaXRsZVRhZ1RleHQg
JiYgZGVzY3JpcHRpdmVUZXh0QXZhaWxhYmxlKQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNl
ID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiBkZXNjcmlwdGl2ZVRleHRB
dmFpbGFibGUpCiAgICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwogICAgIH0KICAgICAKQEAg
LTQ5OCw0OCArNDk4LDQ4IEBAIC0gKENHUG9pbnQpY29udmVydFBvaW50VG9TY3JlZW5TcGFjZToo
RmwKIC0gKE5TU3RyaW5nICopYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uCiB7CiAgICAgc3dp
dGNoIChtX29iamVjdC0+cm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9s
ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjoKICAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtCYW5uZXIiKTsKLSAg
ICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5OgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVu
dEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0NvbXBsZW1lbnRhcnkiKTsKLSAgICBjYXNlIExhbmRt
YXJrQ29udGVudEluZm9Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
Q29udGVudEluZm86CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJ
QUxhbmRtYXJrQ29udGVudEluZm8iKTsKLSAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgogICAgICAgICByZXR1cm4gQVhB
UklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya01haW4iKTsKLSAgICBjYXNlIExhbmRt
YXJrTmF2aWdhdGlvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtO
YXZpZ2F0aW9uOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFM
YW5kbWFya05hdmlnYXRpb24iKTsKLSAgICBjYXNlIExhbmRtYXJrRG9jUmVnaW9uUm9sZToKLSAg
ICBjYXNlIExhbmRtYXJrUmVnaW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1Jl
Z2lvbjoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1h
cmtSZWdpb24iKTsKLSAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaDoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRl
bnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtTZWFyY2giKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9u
QWxlcnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6
CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9u
QWxlcnQiKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2c6CiAgICAgICAgIHJldHVy
biBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uQWxlcnREaWFsb2ciKTsK
LSAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvbkRpYWxvZzoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91
cFRleHQoQCJBUklBQXBwbGljYXRpb25EaWFsb2ciKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uTG9n
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZzoKICAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25Mb2ciKTsK
LSAgICBjYXNlIEFwcGxpY2F0aW9uTWFycXVlZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdy
b3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvbk1hcnF1ZWUiKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9u
U3RhdHVzUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1
czoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRp
b25TdGF0dXMiKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXI6CiAgICAgICAgIHJldHVybiBBWEFSSUFD
b250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uVGltZXIiKTsKLSAgICBjYXNlIERvY3Vt
ZW50Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudDoKICAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBRG9jdW1lbnQiKTsKLSAgICBjYXNl
IERvY3VtZW50QXJ0aWNsZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1l
bnRBcnRpY2xlOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFE
b2N1bWVudEFydGljbGUiKTsKLSAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoOgogICAgICAgICByZXR1cm4gQVhBUklBQ29u
dGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudE1hdGgiKTsKLSAgICBjYXNlIERvY3VtZW50Tm90
ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlOgogICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudE5vdGUiKTsKLSAg
ICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpVc2VySW50ZXJmYWNlVG9vbHRpcDoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRH
cm91cFRleHQoQCJBUklBVXNlckludGVyZmFjZVRvb2x0aXAiKTsKLSAgICBjYXNlIFRhYlBhbmVs
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbDoKICAgICAgICAgcmV0
dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBVGFiUGFuZWwiKTsKLSAgICBjYXNlIFdl
YkFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBsaWNh
dGlvbjoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBV2ViQXBw
bGljYXRpb24iKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNjUyLDQ2
ICs2NTIsNDYgQEAgc3RydWN0IFNlYXJjaEtleUVudHJ5IHsKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5TWFwKiBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKCkKIHsKICAgICBj
b25zdCBTZWFyY2hLZXlFbnRyeSBzZWFyY2hLZXlzW10gPSB7Ci0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5QW55VHlwZVNlYXJjaEtleSwgQW55VHlwZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUFydGljbGVTZWFyY2hLZXksIEFydGljbGVTZWFyY2hLZXkgfSwKLSAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LCBCbG9ja3F1
b3RlU2FtZUxldmVsU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2tx
dW90ZVNlYXJjaEtleSwgQmxvY2txdW90ZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUJvbGRGb250U2VhcmNoS2V5LCBCb2xkRm9udFNlYXJjaEtleSB9LAotICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSwgQnV0dG9uU2VhcmNoS2V5IH0sCi0gICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXksIENoZWNrQm94U2VhcmNoS2V5
IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSwgQ29udHJvbFNl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hL
ZXksIERpZmZlcmVudFR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlG
b250Q2hhbmdlU2VhcmNoS2V5LCBGb250Q2hhbmdlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5LCBGb250Q29sb3JDaGFuZ2VTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJjaEtleSwgRnJhbWVT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5LCBH
cmFwaGljU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVs
MVNlYXJjaEtleSwgSGVhZGluZ0xldmVsMVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkgfSwK
LSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5LCBIZWFkaW5n
TGV2ZWwzU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVs
NFNlYXJjaEtleSwgSGVhZGluZ0xldmVsNFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkgfSwK
LSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5LCBIZWFkaW5n
TGV2ZWw2U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVM
ZXZlbFNlYXJjaEtleSwgSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSB9LAotICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXksIEhlYWRpbmdTZWFyY2hLZXkgfSwKLSAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlIaWdobGlnaHRlZFNlYXJjaEtleSwgSGlnaGxpZ2h0ZWRTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5LCBJ
dGFsaWNGb250U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtT
ZWFyY2hLZXksIExhbmRtYXJrU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
TGlua1NlYXJjaEtleSwgTGlua1NlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUxpc3RTZWFyY2hLZXksIExpc3RTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlMaXZlUmVnaW9uU2VhcmNoS2V5LCBMaXZlUmVnaW9uU2VhcmNoS2V5IH0sCi0gICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXksIE1pc3NwZWxsZWRXb3JkU2Vh
cmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVNlYXJjaEtleSwgT3V0
bGluZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJj
aEtleSwgUGxhaW5UZXh0U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5UmFk
aW9Hcm91cFNlYXJjaEtleSwgUmFkaW9Hcm91cFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5LCBTYW1lVHlwZVNlYXJjaEtleSB9LAotICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXksIFN0YXRpY1RleHRTZWFyY2hL
ZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSwgU3R5
bGVDaGFuZ2VTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVM
ZXZlbFNlYXJjaEtleSwgVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleSwgVGFibGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlUZXh0RmllbGRTZWFyY2hLZXksIFRleHRGaWVsZFNlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSwgVW5kZXJsaW5lU2Vh
cmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtl
eSwgVW52aXNpdGVkTGlua1NlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVZp
c2l0ZWRMaW5rU2VhcmNoS2V5LCBWaXNpdGVkTGlua1NlYXJjaEtleSB9CisgICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55
VHlwZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUFydGljbGVTZWFyY2hLZXksIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkFydGljbGUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlC
bG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpCbG9j
a3F1b3RlU2FtZUxldmVsIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNl
YXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QmxvY2txdW90ZSB9LAorICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
OjpCb2xkRm9udCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSwg
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QnV0dG9uIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5Q2hlY2tCb3hTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkNoZWNrQm94IH0s
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6Q29udHJvbCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eURpZmZlcmVu
dFR5cGVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkRpZmZlcmVudFR5cGUgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5LCBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpGb250Q2hhbmdlIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9u
dENvbG9yQ2hhbmdlU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpGb250Q29sb3JD
aGFuZ2UgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJjaEtleSwgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6RnJhbWUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlHcmFw
aGljU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpHcmFwaGljIH0sCisgICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6SGVhZGluZ0xldmVsMSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDJTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDIg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWwzIH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsNFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVh
ZGluZ0xldmVsNCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFy
Y2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDUgfSwKKyAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpIZWFkaW5nTGV2ZWw2IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGlu
Z1NhbWVMZXZlbFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ1NhbWVM
ZXZlbCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXksIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmcgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlI
aWdobGlnaHRlZFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGlnaGxpZ2h0ZWQg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpJdGFsaWNGb250IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
TGFuZG1hcmtTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkxhbmRtYXJrIH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6TGluayB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpc3RTZWFyY2hLZXksIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6Okxpc3QgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlM
aXZlUmVnaW9uU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpMaXZlUmVnaW9uIH0s
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXksIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6Ok1pc3NwZWxsZWRXb3JkIH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5T3V0bGluZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6T3V0bGluZSB9
LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSwgQWNjZXNzaWJp
bGl0eVNlYXJjaEtleTo6UGxhaW5UZXh0IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5UmFk
aW9Hcm91cFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6UmFkaW9Hcm91cCB9LAor
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5OjpTYW1lVHlwZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVN0YXRpY1Rl
eHRTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlN0YXRpY1RleHQgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6U3R5bGVDaGFuZ2UgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNh
bWVMZXZlbFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6VGFibGVTYW1lTGV2ZWwg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6VGFibGUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRT
ZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlRleHRGaWVsZCB9LAorICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6VW5kZXJsaW5lIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1Nl
YXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6VW52aXNpdGVkTGluayB9LAorICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpWaXNpdGVkTGluayB9CiAgICAgfTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBuZXcgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcDsK
QEAgLTcwNCwxMSArNzA0LDExIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBj
cmVhdGUKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJjaEtleTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGU7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAqIHNlYXJjaEtleU1hcCA9IGNyZWF0ZUFjY2Vzc2liaWxp
dHlTZWFyY2hLZXlNYXAoKTsKICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHNlYXJjaEtleSA9
IHNlYXJjaEtleU1hcC0+Z2V0KHZhbHVlKTsgICAgCi0gICAgcmV0dXJuIHNlYXJjaEtleSA/IHNl
YXJjaEtleSA6IEFueVR5cGVTZWFyY2hLZXk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
c2VhcmNoS2V5KSA/IHNlYXJjaEtleSA6IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGU7
CiB9CiAKIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3Jp
dGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGlj
dGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSkKQEAgLTcyMSw5ICs3MjEsOSBAQCBBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0CiAgICAgTlNOdW1iZXIgKnZpc2li
bGVPbmx5UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAi
QVhWaXNpYmxlT25seSJdOwogICAgIGlkIHNlYXJjaEtleVBhcmFtZXRlciA9IFtwYXJhbWV0ZXJp
emVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYU2VhcmNoS2V5Il07CiAgICAgCi0gICAgQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBkaXJlY3Rpb24gPSBTZWFyY2hEaXJlY3Rpb25OZXh0
OworICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gZGlyZWN0aW9uID0gQWNjZXNzaWJp
bGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dDsKICAgICBpZiAoW2RpcmVjdGlvblBhcmFtZXRlciBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkaXJlY3Rpb24gPSBbZGly
ZWN0aW9uUGFyYW1ldGVyIGlzRXF1YWxUb1N0cmluZzpAIkFYRGlyZWN0aW9uTmV4dCJdID8gU2Vh
cmNoRGlyZWN0aW9uTmV4dCA6IFNlYXJjaERpcmVjdGlvblByZXZpb3VzOworICAgICAgICBkaXJl
Y3Rpb24gPSBbZGlyZWN0aW9uUGFyYW1ldGVyIGlzRXF1YWxUb1N0cmluZzpAIkFYRGlyZWN0aW9u
TmV4dCJdID8gQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dCA6IEFjY2Vzc2liaWxp
dHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwogICAgIAogICAgIGJvb2wgaW1tZWRpYXRlRGVz
Y2VuZGFudHNPbmx5ID0gZmFsc2U7CiAgICAgaWYgKFtpbW1lZGlhdGVEZXNjZW5kYW50c09ubHlQ
YXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDk0LDI0ICs0OTQsMjQgQEAgc3RhdGljIEFjY2Vz
c2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgYQogICAgIE5TU3RyaW5nICpyZXBsYWNlbWVudFN0
cmluZ1BhcmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RUZXh0UmVwbGFjZW1lbnRTdHJpbmddOwogICAgIE5TQXJyYXkgKnNl
YXJjaFN0cmluZ3NQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JL
ZXk6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dFNlYXJjaFN0cmluZ3NdOwogICAgIAotICAgIEFj
Y2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHkgYWN0aXZpdHkgPSBGaW5kQW5kU2VsZWN0QWN0
aXZpdHk7CisgICAgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eSBhY3Rpdml0eSA9IEFj
Y2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRTZWxlY3Q7CiAgICAgaWYgKFth
Y3Rpdml0eVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CiAgICAg
ICAgIGlmIChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVNlbGVjdFRleHRBY3Rpdml0eUZpbmRBbmRSZXBsYWNlXSkKLSAgICAgICAgICAgIGFjdGl2aXR5
ID0gRmluZEFuZFJlcGxhY2VBY3Rpdml0eTsKKyAgICAgICAgICAgIGFjdGl2aXR5ID0gQWNjZXNz
aWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZFJlcGxhY2U7CiAgICAgICAgIGVsc2Ug
aWYgKFthY3Rpdml0eVBhcmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6a0FYU2VsZWN0VGV4dEFjdGl2
aXR5RmluZEFuZENhcGl0YWxpemVdKQotICAgICAgICAgICAgYWN0aXZpdHkgPSBGaW5kQW5kQ2Fw
aXRhbGl6ZTsKKyAgICAgICAgICAgIGFjdGl2aXR5ID0gQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRB
Y3Rpdml0eTo6RmluZEFuZENhcGl0YWxpemU7CiAgICAgICAgIGVsc2UgaWYgKFthY3Rpdml0eVBh
cmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6a0FYU2VsZWN0VGV4dEFjdGl2aXR5RmluZEFuZExvd2Vy
Y2FzZV0pCi0gICAgICAgICAgICBhY3Rpdml0eSA9IEZpbmRBbmRMb3dlcmNhc2U7CisgICAgICAg
ICAgICBhY3Rpdml0eSA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRM
b3dlcmNhc2U7CiAgICAgICAgIGVsc2UgaWYgKFthY3Rpdml0eVBhcmFtZXRlciBpc0VxdWFsVG9T
dHJpbmc6a0FYU2VsZWN0VGV4dEFjdGl2aXR5RmluZEFuZFVwcGVyY2FzZV0pCi0gICAgICAgICAg
ICBhY3Rpdml0eSA9IEZpbmRBbmRVcHBlcmNhc2U7CisgICAgICAgICAgICBhY3Rpdml0eSA9IEFj
Y2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRVcHBlcmNhc2U7CiAgICAgfQog
ICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbiBhbWJp
Z3VpdHlSZXNvbHV0aW9uID0gQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbjsK
KyAgICBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb24gYW1iaWd1aXR5
UmVzb2x1dGlvbiA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbjo6
Q2xvc2VzdFRvOwogICAgIGlmIChbYW1iaWd1aXR5UmVzb2x1dGlvblBhcmFtZXRlciBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CiAgICAgICAgIGlmIChbYW1iaWd1aXR5UmVzb2x1
dGlvblBhcmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFt
YmlndWl0eVJlc29sdXRpb25DbG9zZXN0QWZ0ZXJTZWxlY3Rpb25dKQotICAgICAgICAgICAgYW1i
aWd1aXR5UmVzb2x1dGlvbiA9IENsb3Nlc3RBZnRlclNlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRp
b247CisgICAgICAgICAgICBhbWJpZ3VpdHlSZXNvbHV0aW9uID0gQWNjZXNzaWJpbGl0eVNlbGVj
dFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0QWZ0ZXI7CiAgICAgICAgIGVsc2UgaWYg
KFthbWJpZ3VpdHlSZXNvbHV0aW9uUGFyYW1ldGVyIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbkNsb3Nlc3RCZWZvcmVTZWxlY3Rpb25d
KQotICAgICAgICAgICAgYW1iaWd1aXR5UmVzb2x1dGlvbiA9IENsb3Nlc3RCZWZvcmVTZWxlY3Rp
b25BbWJpZ3VpdHlSZXNvbHV0aW9uOworICAgICAgICAgICAgYW1iaWd1aXR5UmVzb2x1dGlvbiA9
IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbjo6Q2xvc2VzdEJlZm9y
ZTsKICAgICB9CiAgICAgCiAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nOwpAQCAtMTE5OCw3
ICsxMTk4LDcgQEAgLSAoTlNBcnJheSopYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaQogICAg
ICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVBvc0luU2V0QXR0
cmlidXRlXTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0
aW9uID0gbV9vYmplY3QtPnNvcnREaXJlY3Rpb24oKTsKLSAgICBpZiAoc29ydERpcmVjdGlvbiAh
PSBTb3J0RGlyZWN0aW9uTm9uZSAmJiBzb3J0RGlyZWN0aW9uICE9IFNvcnREaXJlY3Rpb25JbnZh
bGlkKQorICAgIGlmIChzb3J0RGlyZWN0aW9uICE9IEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9u
OjpOb25lICYmIHNvcnREaXJlY3Rpb24gIT0gQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Oklu
dmFsaWQpCiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTb3J0
RGlyZWN0aW9uQXR0cmlidXRlXTsKICAgICAKICAgICAvLyBJZiBhbiBvYmplY3QgaXMgYSBjaGls
ZCBvZiBhIGxpdmUgcmVnaW9uLCB0aGVuIGFkZCB0aGVzZQpAQCAtMTY2MSw3ICsxNjYxLDcgQEAg
LSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCiAgICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSBbb2JqZWN0QXR0cmlidXRlcyBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJh
eTphZGRpdGlvbmFsQXR0cmlidXRlc107CiAgICAgCiAgICAgLy8gT25seSBleHBvc2UgQVhBUklB
Q3VycmVudCBhdHRyaWJ1dGUgd2hlbiB0aGUgZWxlbWVudCBpcyBzZXQgdG8gYmUgY3VycmVudCBp
dGVtLgotICAgIGlmIChtX29iamVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgpICE9IEFSSUFDdXJyZW50
RmFsc2UpCisgICAgaWYgKG1fb2JqZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQWNjZXNzaWJp
bGl0eUFSSUFDdXJyZW50U3RhdGU6OkZhbHNlKQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0g
W29iamVjdEF0dHJpYnV0ZXMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6QFsgTlNBY2Nl
c3NpYmlsaXR5QVJJQUN1cnJlbnRBdHRyaWJ1dGUgXV07CiAgICAgCiAgICAgcmV0dXJuIG9iamVj
dEF0dHJpYnV0ZXM7CkBAIC0xODQ5LDE1NCArMTg0OSwxNTQgQEAgc3RhdGljIGNvbnN0IEFjY2Vz
c2liaWxpdHlSb2xlTWFwJiBjcmVhdAogICAgIH07CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IFJv
bGVFbnRyeSByb2xlc1tdID0gewotICAgICAgICB7IFVua25vd25Sb2xlLCBOU0FjY2Vzc2liaWxp
dHlVbmtub3duUm9sZSB9LAotICAgICAgICB7IEJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1
dHRvblJvbGUgfSwKLSAgICAgICAgeyBSYWRpb0J1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eVJh
ZGlvQnV0dG9uUm9sZSB9LAotICAgICAgICB7IENoZWNrQm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
Q2hlY2tCb3hSb2xlIH0sCi0gICAgICAgIHsgU2xpZGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U2xp
ZGVyUm9sZSB9LAotICAgICAgICB7IFRhYkdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGFiR3Jv
dXBSb2xlIH0sCi0gICAgICAgIHsgVGV4dEZpZWxkUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGV4dEZp
ZWxkUm9sZSB9LAotICAgICAgICB7IFN0YXRpY1RleHRSb2xlLCBOU0FjY2Vzc2liaWxpdHlTdGF0
aWNUZXh0Um9sZSB9LAotICAgICAgICB7IFRleHRBcmVhUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGV4
dEFyZWFSb2xlIH0sCi0gICAgICAgIHsgU2Nyb2xsQXJlYVJvbGUsIE5TQWNjZXNzaWJpbGl0eVNj
cm9sbEFyZWFSb2xlIH0sCi0gICAgICAgIHsgUG9wVXBCdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxp
dHlQb3BVcEJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBNZW51QnV0dG9uUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5TWVudUJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBUYWJsZVJvbGUsIE5TQWNjZXNzaWJp
bGl0eVRhYmxlUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uUm9sZSwgTlNBY2Nlc3NpYmls
aXR5QXBwbGljYXRpb25Sb2xlIH0sCi0gICAgICAgIHsgR3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUZXh0R3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKLSAgICAgICAgeyBSYWRpb0dyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UmFk
aW9Hcm91cFJvbGUgfSwKLSAgICAgICAgeyBMaXN0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJv
bGUgfSwKLSAgICAgICAgeyBEaXJlY3RvcnlSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9
LAotICAgICAgICB7IFNjcm9sbEJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eVNjcm9sbEJhclJvbGUg
fSwKLSAgICAgICAgeyBWYWx1ZUluZGljYXRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eVZhbHVlSW5k
aWNhdG9yUm9sZSB9LAotICAgICAgICB7IEltYWdlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5SW1hZ2VS
b2xlIH0sCi0gICAgICAgIHsgTWVudUJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVCYXJSb2xl
IH0sCi0gICAgICAgIHsgTWVudVJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVSb2xlIH0sCi0gICAg
ICAgIHsgTWVudUl0ZW1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51SXRlbVJvbGUgfSwKLSAgICAg
ICAgeyBNZW51SXRlbUNoZWNrYm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0s
Ci0gICAgICAgIHsgTWVudUl0ZW1SYWRpb1JvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVtUm9s
ZSB9LAotICAgICAgICB7IENvbHVtblJvbGUsIE5TQWNjZXNzaWJpbGl0eUNvbHVtblJvbGUgfSwK
LSAgICAgICAgeyBSb3dSb2xlLCBOU0FjY2Vzc2liaWxpdHlSb3dSb2xlIH0sCi0gICAgICAgIHsg
VG9vbGJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eVRvb2xiYXJSb2xlIH0sCi0gICAgICAgIHsgQnVz
eUluZGljYXRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1c3lJbmRpY2F0b3JSb2xlIH0sCi0gICAg
ICAgIHsgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlLCBOU0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGlj
YXRvclJvbGUgfSwKLSAgICAgICAgeyBXaW5kb3dSb2xlLCBOU0FjY2Vzc2liaWxpdHlXaW5kb3dS
b2xlIH0sCi0gICAgICAgIHsgRHJhd2VyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5RHJhd2VyUm9sZSB9
LAotICAgICAgICB7IFN5c3RlbVdpZGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlTeXN0ZW1XaWRlUm9s
ZSB9LAotICAgICAgICB7IE91dGxpbmVSb2xlLCBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm9sZSB9
LAotICAgICAgICB7IEluY3JlbWVudG9yUm9sZSwgTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50b3JS
b2xlIH0sCi0gICAgICAgIHsgQnJvd3NlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUJyb3dzZXJSb2xl
IH0sCi0gICAgICAgIHsgQ29tYm9Cb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlDb21ib0JveFJvbGUg
fSwKLSAgICAgICAgeyBTcGxpdEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3BsaXRHcm91cFJv
bGUgfSwKLSAgICAgICAgeyBTcGxpdHRlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0dGVyUm9s
ZSB9LAotICAgICAgICB7IENvbG9yV2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNvbG9yV2VsbFJv
bGUgfSwKLSAgICAgICAgeyBHcm93QXJlYVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3dBcmVhUm9s
ZSB9LAotICAgICAgICB7IFNoZWV0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5U2hlZXRSb2xlIH0sCi0g
ICAgICAgIHsgSGVscFRhZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUhlbHBUYWdSb2xlIH0sCi0gICAg
ICAgIHsgTWF0dGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlNYXR0ZVJvbGUgfSwKLSAgICAgICAgeyBS
dWxlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVJ1bGVyUm9sZSB9LAotICAgICAgICB7IFJ1bGVyTWFy
a2VyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UnVsZXJNYXJrZXJSb2xlIH0sCi0gICAgICAgIHsgTGlu
a1JvbGUsIE5TQWNjZXNzaWJpbGl0eUxpbmtSb2xlIH0sCi0gICAgICAgIHsgRGlzY2xvc3VyZVRy
aWFuZ2xlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZVRyaWFuZ2xlUm9sZSB9LAotICAg
ICAgICB7IEdyaWRSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGUgfSwKLSAgICAgICAgeyBU
cmVlR3JpZFJvbGUsIE5TQWNjZXNzaWJpbGl0eVRhYmxlUm9sZSB9LAotICAgICAgICB7IFdlYkNv
cmVMaW5rUm9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlua1JvbGUgfSwKLSAgICAgICAgeyBJbWFnZU1h
cExpbmtSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LAotICAgICAgICB7IEltYWdlTWFw
Um9sZSwgQCJBWEltYWdlTWFwIiB9LAotICAgICAgICB7IExpc3RNYXJrZXJSb2xlLCBAIkFYTGlz
dE1hcmtlciIgfSwKLSAgICAgICAgeyBXZWJBcmVhUm9sZSwgQCJBWFdlYkFyZWEiIH0sCi0gICAg
ICAgIHsgSGVhZGluZ1JvbGUsIEAiQVhIZWFkaW5nIiB9LAotICAgICAgICB7IExpc3RCb3hSb2xl
LCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7IExpc3RCb3hPcHRpb25Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAotICAgICAgICB7IENlbGxSb2xlLCBO
U0FjY2Vzc2liaWxpdHlDZWxsUm9sZSB9LAotICAgICAgICB7IEdyaWRDZWxsUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5Q2VsbFJvbGUgfSwKLSAgICAgICAgeyBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IENvbHVtbkhlYWRlclJvbGUs
IE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCi0gICAgICAgIHsgUm93SGVhZGVyUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwKLSAgICAgICAgeyBEZWZpbml0aW9uUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRGVzY3JpcHRpb25MaXN0RGV0YWlsUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRGVzY3JpcHRpb25MaXN0
VGVybVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFRlcm1Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEZXNjcmlwdGlvbkxpc3RS
b2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7IFNsaWRlclRodW1iUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5VmFsdWVJbmRpY2F0b3JSb2xlIH0sCi0gICAgICAgIHsgV2ViQXBw
bGljYXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5k
bWFya0Jhbm5lclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExh
bmRtYXJrQ29tcGxlbWVudGFyeVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IExhbmRtYXJrRG9jUmVnaW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgTGFuZG1hcmtDb250ZW50SW5mb1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IExhbmRtYXJrTWFpblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IExhbmRtYXJrTmF2aWdhdGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrUmVnaW9uUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFuZG1hcmtTZWFyY2hSb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkFsZXJ0Um9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25BbGVydERpYWxvZ1Jv
bGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uRGlh
bG9nUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRp
b25Hcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxp
Y2F0aW9uVGV4dEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgQXBwbGljYXRpb25Mb2dSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAg
ICAgeyBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
LSAgICAgICAgeyBBcHBsaWNhdGlvblN0YXR1c1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uVGltZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBEb2N1bWVudFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IERvY3VtZW50QXJ0aWNsZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IERvY3VtZW50TWF0aFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IERvY3VtZW50Tm90ZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVGFiUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UmFkaW9C
dXR0b25Sb2xlIH0sCi0gICAgICAgIHsgVGFiTGlzdFJvbGUsIE5TQWNjZXNzaWJpbGl0eVRhYkdy
b3VwUm9sZSB9LAotICAgICAgICB7IFRhYlBhbmVsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgVHJlZVJvbGUsIE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb2xlIH0s
Ci0gICAgICAgIHsgVHJlZUl0ZW1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlSb3dSb2xlIH0sCi0gICAg
ICAgIHsgTGlzdEl0ZW1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAg
eyBQYXJhZ3JhcGhSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBM
YWJlbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERpdlJvbGUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEZvcm1Sb2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTcGluQnV0dG9uUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5SW5jcmVtZW50b3JSb2xlIH0sCi0gICAgICAgIHsgRm9vdGVyUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVG9nZ2xlQnV0dG9uUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5Q2hlY2tCb3hSb2xlIH0sCi0gICAgICAgIHsgQ2FudmFzUm9sZSwgTlNBY2Nlc3NpYmls
aXR5SW1hZ2VSb2xlIH0sCi0gICAgICAgIHsgU1ZHUm9vdFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAotICAgICAgICB7IExlZ2VuZFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IE1hdGhFbGVtZW50Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgQXVkaW9Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAg
ICAgICAgeyBWaWRlb1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7
IEhvcml6b250YWxSdWxlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3BsaXR0ZXJSb2xlIH0sCi0gICAg
ICAgIHsgQmxvY2txdW90ZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAg
ICB7IFN3aXRjaFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9sZSB9LAotICAgICAgICB7
IFNlYXJjaEZpZWxkUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkUm9sZSB9LAotICAgICAg
ICB7IFByZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFJ1YnlC
YXNlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUnVieUJsb2Nr
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUnVieUlubGluZVJv
bGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFJ1YnlSdW5Sb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBSdWJ5VGV4dFJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERldGFpbHNSb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTdW1tYXJ5Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
QnV0dG9uUm9sZSB9LAotICAgICAgICB7IFNWR1RleHRQYXRoUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgU1ZHVGV4dFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IFNWR1RTcGFuUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgSW5saW5lUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0g
ICAgICAgIHsgTWFya1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7
IFRpbWVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBGZWVkUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRmlndXJlUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRm9vdG5vdGVSb2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93
biwgTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6QnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlSYWRpb0J1dHRvblJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3gsIE5TQWNjZXNzaWJp
bGl0eUNoZWNrQm94Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXIs
IE5TQWNjZXNzaWJpbGl0eVNsaWRlclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGFiR3JvdXAsIE5TQWNjZXNzaWJpbGl0eVRhYkdyb3VwUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQsIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCwgTlNBY2Nlc3NpYmls
aXR5U3RhdGljVGV4dFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFy
ZWEsIE5TQWNjZXNzaWJpbGl0eVRleHRBcmVhUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpTY3JvbGxBcmVhLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxBcmVhUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiwgTlNBY2Nlc3NpYmlsaXR5UG9w
VXBCdXR0b25Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b24s
IE5TQWNjZXNzaWJpbGl0eU1lbnVCdXR0b25Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlRhYmxlLCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb24sIE5TQWNjZXNzaWJpbGl0eUFwcGxpY2F0aW9uUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cCwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJh
ZGlvR3JvdXAsIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3QsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCisgICAgICAg
IHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyLCBOU0FjY2Vzc2liaWxp
dHlTY3JvbGxCYXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlZhbHVlSW5k
aWNhdG9yLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUluZGljYXRvclJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyLCBOU0FjY2Vzc2liaWxpdHlNZW51QmFy
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51LCBOU0FjY2Vzc2liaWxp
dHlNZW51Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbSwgTlNB
Y2Nlc3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVJdGVtQ2hlY2tib3gsIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVtUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvLCBOU0FjY2Vzc2liaWxpdHlNZW51
SXRlbVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uLCBOU0FjY2Vz
c2liaWxpdHlDb2x1bW5Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdywg
TlNBY2Nlc3NpYmlsaXR5Um93Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpU
b29sYmFyLCBOU0FjY2Vzc2liaWxpdHlUb29sYmFyUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXN5SW5kaWNhdG9yLCBOU0FjY2Vzc2liaWxpdHlCdXN5SW5kaWNhdG9yUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvciwgTlNB
Y2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OldpbmRvdywgTlNBY2Nlc3NpYmlsaXR5V2luZG93Um9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpEcmF3ZXIsIE5TQWNjZXNzaWJpbGl0eURyYXdlclJvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3lzdGVtV2lkZSwgTlNBY2Nlc3NpYmlsaXR5
U3lzdGVtV2lkZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6T3V0bGluZSwg
TlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SW5jcmVtZW50b3IsIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpCcm93c2VyLCBOU0FjY2Vzc2liaWxpdHlCcm93c2VyUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveCwgTlNBY2Nlc3NpYmls
aXR5Q29tYm9Cb3hSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0R3Jv
dXAsIE5TQWNjZXNzaWJpbGl0eVNwbGl0R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OlNwbGl0dGVyLCBOU0FjY2Vzc2liaWxpdHlTcGxpdHRlclJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsLCBOU0FjY2Vzc2liaWxpdHlDb2xvcldl
bGxSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3dBcmVhLCBOU0FjY2Vz
c2liaWxpdHlHcm93QXJlYVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2hl
ZXQsIE5TQWNjZXNzaWJpbGl0eVNoZWV0Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlS
b2xlOjpIZWxwVGFnLCBOU0FjY2Vzc2liaWxpdHlIZWxwVGFnUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpNYXR0ZSwgTlNBY2Nlc3NpYmlsaXR5TWF0dGVSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1bGVyLCBOU0FjY2Vzc2liaWxpdHlSdWxlclJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVsZXJNYXJrZXIsIE5TQWNjZXNzaWJp
bGl0eVJ1bGVyTWFya2VyUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5r
LCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpEaXNjbG9zdXJlVHJpYW5nbGUsIE5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVUcmlhbmdsZVJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZCwgTlNBY2Nlc3NpYmlsaXR5
VGFibGVSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkLCBOU0Fj
Y2Vzc2liaWxpdHlUYWJsZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6V2Vi
Q29yZUxpbmssIE5TQWNjZXNzaWJpbGl0eUxpbmtSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlTWFwTGluaywgTlNBY2Nlc3NpYmlsaXR5TGlua1JvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXAsIEAiQVhJbWFnZU1hcCIgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdE1hcmtlciwgQCJBWExpc3RNYXJrZXIiIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWEsIEAiQVhXZWJBcmVhIiB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nLCBAIkFYSGVhZGluZyIgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveCwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbiwgTlNBY2Nlc3Np
YmlsaXR5U3RhdGljVGV4dFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2Vs
bCwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JpZENlbGwsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyLCBOU0FjY2Vz
c2liaWxpdHlDZWxsUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFk
ZXIsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OkRlZmluaXRpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3REZXRhaWwsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RU
ZXJtLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGVybSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdCwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIsIE5TQWNjZXNzaWJpbGl0
eVZhbHVlSW5kaWNhdG9yUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJB
cHBsaWNhdGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5LCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtEb2NSZWdpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtOYXZpZ2F0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uQWxlcnQsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvbkdyb3VwLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxv
ZywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OkFwcGxpY2F0aW9uTWFycXVlZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25U
aW1lciwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1l
bnROb3RlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6VXNlckludGVyZmFjZVRvb2x0aXAsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWIsIE5TQWNjZXNzaWJpbGl0eVJhZGlv
QnV0dG9uUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0LCBOU0Fj
Y2Vzc2liaWxpdHlUYWJHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGFiUGFuZWwsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlLCBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbSwgTlNBY2Nlc3NpYmlsaXR5Um93Um9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVs
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RGl2LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6Rm9ybSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b24sIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXIsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b24s
IE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlS
b2xlOjpDYW52YXMsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpTVkdSb290LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGVnZW5kLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0aEVsZW1lbnQsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBdWRpbywgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlZp
ZGVvLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6SG9yaXpvbnRhbFJ1bGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0dGVyUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpCbG9ja3F1b3RlLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoLCBOU0FjY2Vzc2li
aWxpdHlDaGVja0JveFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNo
RmllbGQsIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6UHJlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UnVieUJhc2UsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5QmxvY2ssIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5SW5saW5lLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVi
eVJ1biwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlJ1YnlUZXh0LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlscywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnksIE5TQWNjZXNzaWJpbGl0eUJ1dHRv
blJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dFBhdGgsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdU
ZXh0LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6U1ZHVFNwYW4sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbmxpbmUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNYXJrLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZSwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkZlZWQsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpG
b290bm90ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgfTsKICAgICBBY2Nlc3Np
YmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9ICpuZXcgQWNjZXNzaWJpbGl0eVJvbGVNYXA7CiAgICAg
CiAgICAgY29uc3QgdW5zaWduZWQgbnVtUm9sZXMgPSBzaXplb2Yocm9sZXMpIC8gc2l6ZW9mKHJv
bGVzWzBdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUm9sZXM7ICsraSkKLSAg
ICAgICAgcm9sZU1hcC5zZXQocm9sZXNbaV0udmFsdWUsIHJvbGVzW2ldLnN0cmluZyk7CisgICAg
ICAgIHJvbGVNYXAuc2V0KHN0YXRpY19jYXN0PGludD4ocm9sZXNbaV0udmFsdWUpLCByb2xlc1tp
XS5zdHJpbmcpOwogICAgIHJldHVybiByb2xlTWFwOwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIHJv
bGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiB7Ci0gICAgQVNTRVJU
KHZhbHVlKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpOwogICAgIHN0YXRp
YyBjb25zdCBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9IGNyZWF0ZUFjY2Vzc2liaWxp
dHlSb2xlTWFwKCk7Ci0gICAgcmV0dXJuIHJvbGVNYXAuZ2V0KHZhbHVlKTsKKyAgICByZXR1cm4g
cm9sZU1hcC5nZXQoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpOwogfQogCiAtIChOU1N0cmluZyop
cm9sZQpAQCAtMjAwOCwxNyArMjAwOCwxNyBAQCAtIChOU1N0cmluZyopcm9sZQogI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBtX29iamVj
dC0+cm9sZVZhbHVlKCk7CiAKLSAgICBpZiAocm9sZSA9PSBMYWJlbFJvbGUgJiYgaXM8QWNjZXNz
aWJpbGl0eUxhYmVsPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlMYWJlbD4o
Km1fb2JqZWN0KS5jb250YWluc09ubHlTdGF0aWNUZXh0KCkpCi0gICAgICAgIHJvbGUgPSBTdGF0
aWNUZXh0Um9sZTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFiZWwgJiYg
aXM8QWNjZXNzaWJpbGl0eUxhYmVsPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlMYWJlbD4oKm1fb2JqZWN0KS5jb250YWluc09ubHlTdGF0aWNUZXh0KCkpCisgICAgICAgIHJv
bGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsKIAogICAgIC8vIFRoZSBtZmVuY2Vk
IGVsZW1lbnQgY3JlYXRlcyBhbm9ueW1vdXMgUmVuZGVyTWF0aE1MT3BlcmF0b3JzIHdpdGggbm8g
UmVuZGVyVGV4dAogICAgIC8vIGRlc2NlbmRhbnRzLiBCZWNhdXNlIHRoZXNlIGFub255bW91cyBy
ZW5kZXJlcnMgYXJlIHRoZSBvbmx5IGFjY2Vzc2libGUgb2JqZWN0cwotICAgIC8vIGNvbnRhaW5p
bmcgdGhlIG9wZXJhdG9yLCBhc3NpZ24gU3RhdGljVGV4dFJvbGUuCisgICAgLy8gY29udGFpbmlu
ZyB0aGUgb3BlcmF0b3IsIGFzc2lnbiBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dC4KICAg
ICBpZiAobV9vYmplY3QtPmlzQW5vbnltb3VzTWF0aE9wZXJhdG9yKCkpCi0gICAgICAgIHJvbGUg
PSBTdGF0aWNUZXh0Um9sZTsKKyAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0
aWNUZXh0OwogCi0gICAgaWYgKHJvbGUgPT0gQ2FudmFzUm9sZSAmJiBtX29iamVjdC0+Y2FudmFz
SGFzRmFsbGJhY2tDb250ZW50KCkpCi0gICAgICAgIHJvbGUgPSBHcm91cFJvbGU7CisgICAgaWYg
KHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhcyAmJiBtX29iamVjdC0+Y2FudmFzSGFz
RmFsbGJhY2tDb250ZW50KCkpCisgICAgICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jv
dXA7CiAgICAgTlNTdHJpbmcqIHN0cmluZyA9IHJvbGVWYWx1ZVRvTlNTdHJpbmcocm9sZSk7CiAg
ICAgaWYgKHN0cmluZyAhPSBuaWwpCiAgICAgICAgIHJldHVybiBzdHJpbmc7CkBAIC0yMDQxLDkg
KzIwNDEsOSBAQCAtIChOU1N0cmluZyopc3Vicm9sZQogICAgIH0KICAgICAKICAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwotICAgIGlmIChyb2xlID09
IEhvcml6b250YWxSdWxlUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
SG9yaXpvbnRhbFJ1bGUpCiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlDb250ZW50U2Vw
YXJhdG9yU3Vicm9sZTsKLSAgICBpZiAocm9sZSA9PSBUb2dnbGVCdXR0b25Sb2xlKQorICAgIGlm
IChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b24pCiAgICAgICAgIHJldHVy
biBOU0FjY2Vzc2liaWxpdHlUb2dnbGVTdWJyb2xlOwogICAgIAogICAgIGlmIChpczxBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCptX29iamVjdCkpIHsKQEAgLTIwNzMsNjkgKzIwNzMsNjkg
QEAgLSAoTlNTdHJpbmcqKXN1YnJvbGUKICAgICAKICAgICAvLyBBUklBIGNvbnRlbnQgc3Vicm9s
ZXMuCiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0Jhbm5lciI7Ci0gICAgICAgIGNhc2Ug
TGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1h
cmtDb21wbGVtZW50YXJ5IjsKLSAgICAgICAgICAgIC8vIEZvb3RlciByb2xlcyBzaG91bGQgYXBw
ZWFyIGFzIGNvbnRlbnQgaW5mbyB0eXBlcy4KLSAgICAgICAgY2FzZSBGb290ZXJSb2xlOgotICAg
ICAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAi
QVhMYW5kbWFya0NvbnRlbnRJbmZvIjsKLSAgICAgICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgot
ICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya01haW4iOwotICAgICAgICBjYXNlIExhbmRt
YXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrTmF2aWdh
dGlvbiI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtEb2NSZWdpb25Sb2xlOgotICAgICAgICBjYXNl
IExhbmRtYXJrUmVnaW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtSZWdp
b24iOwotICAgICAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKLSAgICAgICAgICAgIHJldHVy
biBAIkFYTGFuZG1hcmtTZWFyY2giOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0IjsKLSAgICAgICAgY2Fz
ZSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYQXBw
bGljYXRpb25BbGVydERpYWxvZyI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkRpYWxvZyI7Ci0gICAgICAgIGNh
c2UgQXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25UZXh0R3Jv
dXBSb2xlOgotICAgICAgICBjYXNlIEZlZWRSb2xlOgotICAgICAgICBjYXNlIEZvb3Rub3RlUm9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25Hcm91cCI7Ci0gICAgICAgIGNh
c2UgQXBwbGljYXRpb25Mb2dSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlv
bkxvZyI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToKLSAgICAgICAgICAg
IHJldHVybiBAIkFYQXBwbGljYXRpb25NYXJxdWVlIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlv
blN0YXR1c1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uU3RhdHVzIjsK
LSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKLSAgICAgICAgICAgIHJldHVybiBA
IkFYQXBwbGljYXRpb25UaW1lciI7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRSb2xlOgotICAgICAg
ICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudCI7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xl
Um9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnRBcnRpY2xlIjsKLSAgICAgICAg
Y2FzZSBEb2N1bWVudE1hdGhSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudE1h
dGgiOwotICAgICAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6Ci0gICAgICAgICAgICByZXR1cm4g
QCJBWERvY3VtZW50Tm90ZSI7Ci0gICAgICAgIGNhc2UgVXNlckludGVyZmFjZVRvb2x0aXBSb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhVc2VySW50ZXJmYWNlVG9vbHRpcCI7Ci0gICAgICAg
IGNhc2UgVGFiUGFuZWxSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhUYWJQYW5lbCI7Ci0g
ICAgICAgIGNhc2UgRGVmaW5pdGlvblJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERlZmlu
aXRpb24iOwotICAgICAgICBjYXNlIERlc2NyaXB0aW9uTGlzdFRlcm1Sb2xlOgotICAgICAgICBj
YXNlIFRlcm1Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhUZXJtIjsKLSAgICAgICAgY2Fz
ZSBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEZXNj
cmlwdGlvbiI7Ci0gICAgICAgIGNhc2UgV2ViQXBwbGljYXRpb25Sb2xlOgotICAgICAgICAgICAg
cmV0dXJuIEAiQVhXZWJBcHBsaWNhdGlvbiI7Ci0gICAgICAgICAgICAvLyBEZWZhdWx0IGRvZXNu
J3QgcmV0dXJuIGFueXRoaW5nLCBzbyByb2xlcyBkZWZpbmVkIGJlbG93IGNhbiBiZSBjaG9zZW4u
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjoKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0Jh
bm5lciI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5
OgorICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrQ29tcGxlbWVudGFyeSI7CisgICAgLy8gRm9v
dGVyIHJvbGVzIHNob3VsZCBhcHBlYXIgYXMgY29udGVudCBpbmZvIHR5cGVzLgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkZvb3RlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0NvbnRlbnRJbmZvOgorICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrQ29udGVudElu
Zm8iOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAgICAgICAg
cmV0dXJuIEAiQVhMYW5kbWFya01haW4iOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrTmF2aWdhdGlvbjoKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya05hdmlnYXRpb24i
OworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgorICAgICAgICByZXR1cm4gQCJB
WExhbmRtYXJrUmVnaW9uIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1Nl
YXJjaDoKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya1NlYXJjaCI7CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKKyAgICAgICAgcmV0dXJuIEAiQVhBcHBs
aWNhdGlvbkFsZXJ0IjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFs
ZXJ0RGlhbG9nOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uQWxlcnREaWFsb2ciOwor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nOgorICAgICAgICBy
ZXR1cm4gQCJBWEFwcGxpY2F0aW9uRGlhbG9nIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvbkdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uVGV4dEdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZlZWQ6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGU6CisgICAgICAgIHJldHVybiBAIkFYQXBwbGlj
YXRpb25Hcm91cCI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6
CisgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25Mb2ciOworICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToKKyAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNh
dGlvbk1hcnF1ZWUiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3Rh
dHVzOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uU3RhdHVzIjsKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgorICAgICAgICByZXR1cm4gQCJBWEFw
cGxpY2F0aW9uVGltZXIiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Ogor
ICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50IjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpEb2N1bWVudEFydGljbGU6CisgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnRBcnRpY2xlIjsK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6CisgICAgICAgIHJldHVy
biBAIkFYRG9jdW1lbnRNYXRoIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVu
dE5vdGU6CisgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnROb3RlIjsKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpVc2VySW50ZXJmYWNlVG9vbHRpcDoKKyAgICAgICAgcmV0dXJuIEAiQVhV
c2VySW50ZXJmYWNlVG9vbHRpcCI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFu
ZWw6CisgICAgICAgIHJldHVybiBAIkFYVGFiUGFuZWwiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkRlZmluaXRpb246CisgICAgICAgIHJldHVybiBAIkFYRGVmaW5pdGlvbiI7CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0VGVybToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXJtOgorICAgICAgICByZXR1cm4gQCJBWFRlcm0iOworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDoKKyAgICAgICAgcmV0
dXJuIEAiQVhEZXNjcmlwdGlvbiI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBw
bGljYXRpb246CisgICAgICAgIHJldHVybiBAIkFYV2ViQXBwbGljYXRpb24iOworICAgICAgICAv
LyBEZWZhdWx0IGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nLCBzbyByb2xlcyBkZWZpbmVkIGJlbG93
IGNhbiBiZSBjaG9zZW4uCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IAotICAgIGlmIChyb2xlID09IE1hdGhFbGVtZW50Um9sZSkgeworICAgIGlmIChyb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudCkgewogICAgICAgICBpZiAobV9vYmplY3QtPmlz
TWF0aEZyYWN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhGcmFjdGlvbiI7CiAg
ICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoRmVuY2VkKCkpCkBAIC0yMTcyLDE1ICsyMTcyLDE1
IEBAIC0gKE5TU3RyaW5nKilzdWJyb2xlCiAgICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhNdWx0
aXNjcmlwdCI7CiAgICAgfQogICAgIAotICAgIGlmIChyb2xlID09IFZpZGVvUm9sZSkKKyAgICBp
ZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VmlkZW8pCiAgICAgICAgIHJldHVybiBAIkFY
VmlkZW8iOwotICAgIGlmIChyb2xlID09IEF1ZGlvUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXVkaW8pCiAgICAgICAgIHJldHVybiBAIkFYQXVkaW8iOwotICAgIGlm
IChyb2xlID09IERldGFpbHNSb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpEZXRhaWxzKQogICAgICAgICByZXR1cm4gQCJBWERldGFpbHMiOwotICAgIGlmIChyb2xlID09
IFN1bW1hcnlSb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5
KQogICAgICAgICByZXR1cm4gQCJBWFN1bW1hcnkiOwotICAgIGlmIChyb2xlID09IFRpbWVSb2xl
KQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1lKQogICAgICAgICByZXR1
cm4gQCJBWFRpbWVHcm91cCI7CiAKICAgICBpZiAobV9vYmplY3QtPmlzTWVkaWFUaW1lbGluZSgp
KQpAQCAtMjIxNiwxNSArMjIxNiwxNSBAQCAtIChOU1N0cmluZyopc3Vicm9sZQogICAgIAogICAg
IC8vIFJ1Ynkgc3Vicm9sZXMKICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNlIFJ1YnlCYXNl
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5QmFzZToKICAgICAgICAgcmV0
dXJuIE5TQWNjZXNzaWJpbGl0eVJ1YnlCYXNlU3Vicm9sZTsKLSAgICBjYXNlIFJ1YnlCbG9ja1Jv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVieUJsb2NrOgogICAgICAgICByZXR1
cm4gTlNBY2Nlc3NpYmlsaXR5UnVieUJsb2NrU3Vicm9sZTsKLSAgICBjYXNlIFJ1YnlJbmxpbmVS
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlJbmxpbmU6CiAgICAgICAgIHJl
dHVybiBOU0FjY2Vzc2liaWxpdHlSdWJ5SW5saW5lU3Vicm9sZTsKLSAgICBjYXNlIFJ1YnlSdW5S
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlSdW46CiAgICAgICAgIHJldHVy
biBOU0FjY2Vzc2liaWxpdHlSdWJ5UnVuU3Vicm9sZTsKLSAgICBjYXNlIFJ1YnlUZXh0Um9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5VGV4dDoKICAgICAgICAgcmV0dXJuIE5T
QWNjZXNzaWJpbGl0eVJ1YnlUZXh0U3Vicm9sZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKQEAgLTIyNjIsMjYgKzIyNjIsMjYgQEAgLSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlvbgog
ICAgICAgICAgICAgcmV0dXJuIGFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbjsKICAgICAgICAg
CiAgICAgICAgIHN3aXRjaCAobV9vYmplY3QtPnJvbGVWYWx1ZSgpKSB7Ci0gICAgICAgIGNhc2Ug
QXVkaW9Sb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBdWRpbzoKICAgICAg
ICAgICAgIHJldHVybiBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKCJBdWRpb0Vs
ZW1lbnQiKTsKLSAgICAgICAgY2FzZSBEZWZpbml0aW9uUm9sZToKKyAgICAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6RGVmaW5pdGlvbjoKICAgICAgICAgICAgIHJldHVybiBBWERlZmluaXRp
b25UZXh0KCk7Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0VGVybVJvbGU6Ci0gICAgICAg
IGNhc2UgVGVybVJvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0
aW9uTGlzdFRlcm06CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRlcm06CiAgICAg
ICAgICAgICByZXR1cm4gQVhEZXNjcmlwdGlvbkxpc3RUZXJtVGV4dCgpOwotICAgICAgICBjYXNl
IERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDoKICAgICAgICAgICAgIHJldHVybiBBWERlc2NyaXB0
aW9uTGlzdERldGFpbFRleHQoKTsKLSAgICAgICAgY2FzZSBEZXRhaWxzUm9sZToKKyAgICAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlsczoKICAgICAgICAgICAgIHJldHVybiBBWERl
dGFpbHNUZXh0KCk7Ci0gICAgICAgIGNhc2UgRmVlZFJvbGU6CisgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkZlZWQ6CiAgICAgICAgICAgICByZXR1cm4gQVhGZWVkVGV4dCgpOwotICAg
ICAgICBjYXNlIEZpZ3VyZVJvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZp
Z3VyZToKICAgICAgICAgICAgIHJldHVybiBBWEZpZ3VyZVRleHQoKTsKLSAgICAgICAgY2FzZSBG
b290ZXJSb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI6CiAgICAg
ICAgICAgICByZXR1cm4gQVhGb290ZXJSb2xlRGVzY3JpcHRpb25UZXh0KCk7Ci0gICAgICAgIGNh
c2UgTWFya1JvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1hcms6CiAgICAg
ICAgICAgICByZXR1cm4gQVhNYXJrVGV4dCgpOwotICAgICAgICBjYXNlIFZpZGVvUm9sZToKKyAg
ICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VmlkZW86CiAgICAgICAgICAgICByZXR1cm4g
bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZygiVmlkZW9FbGVtZW50Iik7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2Ny
aXB0aW9uKE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSwgW3NlbGYgc3Vicm9sZV0pOwpAQCAtMjM0
MSw3ICsyMzQxLDcgQEAgLSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlvbgogICAgICAgICAgICAg
cmV0dXJuIEFYRGVzY3JpcHRpb25MaXN0VGV4dCgpOwogICAgIH0KICAgICAKLSAgICBpZiAobV9v
YmplY3QtPnJvbGVWYWx1ZSgpID09IEhvcml6b250YWxSdWxlUm9sZSkKKyAgICBpZiAobV9vYmpl
Y3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZSkKICAg
ICAgICAgcmV0dXJuIEFYSG9yaXpvbnRhbFJ1bGVEZXNjcmlwdGlvblRleHQoKTsKICAgICAKICAg
ICAvLyBBcHBLaXQgYWxzbyByZXR1cm5zIEFYVGFiIGZvciB0aGUgcm9sZSBkZXNjcmlwdGlvbiBm
b3IgYSB0YWIgaXRlbS4KQEAgLTI2MTgsMTkgKzI2MTgsMTkgQEAgLSAoaWQpYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgICAgICB9CiAgICAgICAgIGlmIChtX29iamVjdC0+
c3VwcG9ydHNSYW5nZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDptX29iamVjdC0+dmFsdWVGb3JSYW5nZSgpXTsKLSAgICAgICAgaWYgKG1fb2Jq
ZWN0LT5yb2xlVmFsdWUoKSA9PSBTbGlkZXJUaHVtYlJvbGUpCisgICAgICAgIGlmIChtX29iamVj
dC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iKQogICAgICAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPnBhcmVudE9i
amVjdCgpLT52YWx1ZUZvclJhbmdlKCldOwogICAgICAgICBpZiAobV9vYmplY3QtPmlzSGVhZGlu
ZygpKQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0
LT5oZWFkaW5nTGV2ZWwoKV07CiAgICAgICAgIAogICAgICAgICBpZiAobV9vYmplY3QtPmlzQ2hl
Y2tib3hPclJhZGlvKCkgfHwgbV9vYmplY3QtPmlzTWVudUl0ZW0oKSB8fCBtX29iamVjdC0+aXNT
d2l0Y2goKSB8fCBtX29iamVjdC0+aXNUb2dnbGVCdXR0b24oKSkgewogICAgICAgICAgICAgc3dp
dGNoIChtX29iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSkgewotICAgICAgICAgICAgICAg
IGNhc2UgQnV0dG9uU3RhdGVPZmY6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDowXTsKLSAgICAgICAgICAgICAgICBjYXNlIEJ1dHRvblN0YXRlT246
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXTsK
LSAgICAgICAgICAgICAgICBjYXNlIEJ1dHRvblN0YXRlTWl4ZWQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoyXTsKKyAgICAgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoSW50OjBdOworICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGU6Ok9uOgorICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDoxXTsKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpN
aXhlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml07
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yNjY4LDE0ICsyNjY4LDE0
IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICAKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlNaW5WYWx1
ZUF0dHJpYnV0ZV0pIHsKICAgICAgICAgLy8gSW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBpbmRpY2F0
b3Igc2hvdWxkIHJldHVybiAwLgotICAgICAgICBpZiAobV9vYmplY3QtPmFyaWFSb2xlQXR0cmli
dXRlKCkgPT0gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlICYmICFtX29iamVjdC0+aGFzQXR0cmlidXRl
KGFyaWFfdmFsdWVub3dBdHRyKSkKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvciAmJiAhbV9vYmpl
Y3QtPmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikpCiAgICAgICAgICAgICByZXR1cm4g
QDA7CiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Om1fb2JqZWN0LT5t
aW5WYWx1ZUZvclJhbmdlKCldOwogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV0pIHsKICAg
ICAgICAgLy8gSW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBpbmRpY2F0b3Igc2hvdWxkIHJldHVybiAw
LgotICAgICAgICBpZiAobV9vYmplY3QtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gUHJvZ3Jlc3NJ
bmRpY2F0b3JSb2xlICYmICFtX29iamVjdC0+aGFzQXR0cmlidXRlKGFyaWFfdmFsdWVub3dBdHRy
KSkKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvciAmJiAhbV9vYmplY3QtPmhhc0F0dHJpYnV0ZShh
cmlhX3ZhbHVlbm93QXR0cikpCiAgICAgICAgICAgICByZXR1cm4gQDA7CiAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Om1fb2JqZWN0LT5tYXhWYWx1ZUZvclJhbmdlKCld
OwogICAgIH0KQEAgLTMwMDUsMjMgKzMwMDUsMjMgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOihOU1N0cgogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdKSB7CiAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbiBlbGVtZW50T3JpZW50YXRpb24gPSBtX29iamVjdC0+b3Jp
ZW50YXRpb24oKTsKLSAgICAgICAgaWYgKGVsZW1lbnRPcmllbnRhdGlvbiA9PSBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25WZXJ0aWNhbCkKKyAgICAgICAgaWYgKGVsZW1lbnRPcmllbnRhdGlvbiA9
PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICAgICAgcmV0dXJu
IE5TQWNjZXNzaWJpbGl0eVZlcnRpY2FsT3JpZW50YXRpb25WYWx1ZTsKLSAgICAgICAgaWYgKGVs
ZW1lbnRPcmllbnRhdGlvbiA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsKQor
ICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlv
bjo6SG9yaXpvbnRhbCkKICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlIb3Jpem9u
dGFsT3JpZW50YXRpb25WYWx1ZTsKLSAgICAgICAgaWYgKGVsZW1lbnRPcmllbnRhdGlvbiA9PSBB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb25VbmRlZmluZWQpCisgICAgICAgIGlmIChlbGVtZW50T3Jp
ZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQpCiAgICAgICAg
ICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93bk9yaWVudGF0aW9uVmFsdWU7CiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9sbEJhckF0dHJpYnV0ZV0p
IHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNj
cm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsKTsKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWwpOwogICAgICAgICBpZiAoc2Nyb2xsQmFyKQog
ICAgICAgICAgICAgcmV0dXJuIHNjcm9sbEJhci0+d3JhcHBlcigpOwogICAgICAgICByZXR1cm4g
bmlsOwogICAgIH0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eVZlcnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIgPSBtX29iamVjdC0+c2Nyb2xsQmFyKEFjY2Vzc2liaWxp
dHlPcmllbnRhdGlvblZlcnRpY2FsKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Ny
b2xsQmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZl
cnRpY2FsKTsKICAgICAgICAgaWYgKHNjcm9sbEJhcikKICAgICAgICAgICAgIHJldHVybiBzY3Jv
bGxCYXItPndyYXBwZXIoKTsKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTMwMjksMTIgKzMwMjks
MTIgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIAogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U29ydERp
cmVjdGlvbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgc3dpdGNoIChtX29iamVjdC0+c29ydERpcmVj
dGlvbigpKSB7Ci0gICAgICAgICAgICBjYXNlIFNvcnREaXJlY3Rpb25Bc2NlbmRpbmc6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUFzY2VuZGluZ1NvcnREaXJlY3Rpb25W
YWx1ZTsKLSAgICAgICAgICAgIGNhc2UgU29ydERpcmVjdGlvbkRlc2NlbmRpbmc6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eURlc2NlbmRpbmdTb3J0RGlyZWN0aW9uVmFs
dWU7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vz
c2liaWxpdHlVbmtub3duU29ydERpcmVjdGlvblZhbHVlOworICAgICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlTb3J0RGlyZWN0aW9uOjpBc2NlbmRpbmc6CisgICAgICAgICAgICByZXR1cm4gTlNBY2Nl
c3NpYmlsaXR5QXNjZW5kaW5nU29ydERpcmVjdGlvblZhbHVlOworICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTb3J0RGlyZWN0aW9uOjpEZXNjZW5kaW5nOgorICAgICAgICAgICAgcmV0dXJuIE5T
QWNjZXNzaWJpbGl0eURlc2NlbmRpbmdTb3J0RGlyZWN0aW9uVmFsdWU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blNvcnREaXJlY3Rp
b25WYWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTM0ODEsNyArMzQ4MSw3IEBAIC0g
KHZvaWQpYWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3QKIAogLSAodm9pZClhY2Nlc3Np
YmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uCiB7Ci0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFs
dWUoKSA9PSBDb21ib0JveFJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3gpCiAgICAgICAgIG1fb2JqZWN0LT5zZXRJc0V4cGFu
ZGVkKHRydWUpOwogICAgIGVsc2UgewogICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIHBlcmZv
cm1lZCBpbiBhbiBpdGVyYXRpb24gb2YgdGhlIHJ1biBsb29wIHRoYXQgZGlkIG5vdCBzdGFydCBm
cm9tIGFuIEFYIGNhbGwuCkBAIC0zNjI5LDcgKzM2MjksOSBAQCAtICh2b2lkKV9hY2Nlc3NpYmls
aXR5U2V0VmFsdWU6KGlkKXZhbHVlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fb2Jq
ZWN0LT5zZXRTZWxlY3RlZChbbnVtYmVyIGJvb2xWYWx1ZV0pOwogICAgIH0gZWxzZSBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxk
cmVuQXR0cmlidXRlXSkgewotICAgICAgICBpZiAoIWFycmF5IHx8IG1fb2JqZWN0LT5yb2xlVmFs
dWUoKSAhPSBMaXN0Qm94Um9sZSkKKyAgICAgICAgaWYgKCFhcnJheSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGlzdEJveCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CiAg
ICAgICAgIGNvbnZlcnRUb1ZlY3RvcihhcnJheSwgc2VsZWN0ZWRDaGlsZHJlbik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJldmlz
aW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OTMsMTAgKzE2OTMsMTAgQEAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaQogCiAgICAgICAgICAgICBzdXBwb3J0c0NoZWNr
ZWQgPSBheE9iamVjdC0+c3VwcG9ydHNDaGVja2VkKCk7CiAgICAgICAgICAgICBpZiAoc3VwcG9y
dHNDaGVja2VkKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNoZWNrVmFsdWUgPSBheE9iamVjdC0+
Y2hlY2tib3hPclJhZGlvVmFsdWUoKTsgLy8gRWxlbWVudCB1c2luZyBhcmlhLWNoZWNrZWQuCi0g
ICAgICAgICAgICAgICAgaWYgKGNoZWNrVmFsdWUgPT0gMSkKKyAgICAgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hlY2tWYWx1ZSA9IGF4T2JqZWN0LT5jaGVja2JveE9yUmFk
aW9WYWx1ZSgpOyAvLyBFbGVtZW50IHVzaW5nIGFyaWEtY2hlY2tlZC4KKyAgICAgICAgICAgICAg
ICBpZiAoY2hlY2tWYWx1ZSA9PSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9uKQogICAgICAg
ICAgICAgICAgICAgICBjaGVja2VkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllczo6Q2hlY2tlZDo6VHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGlm
IChjaGVja1ZhbHVlID09IDIpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2tWYWx1ZSA9
PSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkKQogICAgICAgICAgICAgICAgICAgICBj
aGVja2VkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGll
czo6Q2hlY2tlZDo6TWl4ZWQ7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXhPYmplY3QtPmlz
Q2hlY2tlZCgpKSAvLyBOYXRpdmUgY2hlY2tib3guCiAgICAgICAgICAgICAgICAgICAgIGNoZWNr
ZWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpD
aGVja2VkOjpUcnVlOwpAQCAtMTcxMywyNiArMTcxMywyNSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpBY2Nlc3NpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHN3aXRjaCAoYXhPYmplY3QtPmFyaWFDdXJyZW50U3RhdGUoKSkgewotICAgICAgICAg
ICAgY2FzZSBBUklBQ3VycmVudEZhbHNlOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
QVJJQUN1cnJlbnRTdGF0ZTo6RmFsc2U6CiAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVu
dDo6RmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFSSUFD
dXJyZW50UGFnZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3Rh
dGU6OlBhZ2U6CiAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVudDo6UGFnZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQVJJQUN1cnJlbnRTdGVwOgorICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6U3RlcDoKICAgICAg
ICAgICAgICAgICBjdXJyZW50U3RhdGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJyZW50OjpTdGVwOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVudExvY2F0aW9uOgorICAgICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6TG9jYXRpb246CiAgICAgICAgICAgICAg
ICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5
UHJvcGVydGllczo6Q3VycmVudDo6TG9jYXRpb247CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIEFSSUFDdXJyZW50RGF0ZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkRhdGU6CiAgICAgICAgICAgICAgICAgY3VycmVudFN0
YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6
Q3VycmVudDo6RGF0ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
QVJJQUN1cnJlbnRUaW1lOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJl
bnRTdGF0ZTo6VGltZToKICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJyZW50OjpUaW1lOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGNhc2UgQVJJQUN1cnJlbnRUcnVlOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJ
QUN1cnJlbnRTdGF0ZTo6VHJ1ZToKICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJyZW50OjpU
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325080</attachid>
            <date>2017-10-26 16:52:00 -0700</date>
            <delta_ts>2017-10-26 17:09:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178892-20171026165200.patch</filename>
            <type>text/plain</type>
            <size>335811</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDA2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBAQAorMjAxNy0xMC0yNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODg5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgVGhlIGVudW1zIGluIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBhcmUgY2F1c2lu
ZyBuYW1pbmcgY29sbGlzaW9ucyB3aXRoIHVuaWZpZWQgYnVpbGRzLgorICAgICAgICBUaGlzIGlz
IHdoYXQgZW51bSBjbGFzc2VzIGFyZSBmb3IuCisgICAgICAgIEhhc2hNYXBzIG9mIGVudW0gY2xh
c3NlcyBzdGlsbCBuZWVkIGEgZmV3IGNhc3RzIHRvL2Zyb20gaW50LgorICAgICAgICAKKyAgICAg
ICAgSSBhbHNvIG1hZGUgc29tZSBSZWZQdHIncyBSZWYncywgdXNlIHNvbWUgaW5pdGlhbGl6ZXIg
bGlzdHMgaW5zdGVhZCBvZiB2YWx1ZXMgaW4gdGhlIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9u
LCBhbmQgaW5kZW50YXRpb24gZml4aW5nLgorICAgICAgICAKKyAgICAgICAgTm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6Z2V0SWdu
b3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp+QVhPYmplY3RD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhDb21w
dXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpDYWNoZWRBWE9iamVjdEF0dHJpYnV0ZXM6OkNhY2hl
ZEFYT2JqZWN0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWENvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGU6OmdldElnbm9yZWQgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91cCBjb25zdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQ6OmFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50Lmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnJvbGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjphY2Nlc3NpYmlsaXR5VGV4dCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2hpbGRyZW5Db250YWluT25seVN0YXRpY1RleHQpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlz
dDo6aXNVbm9yZGVyZWRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlMaXN0Ojppc09yZGVyZWRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlMaXN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5TGlzdDo6cm9sZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlMaXN0Qm94OjpzZXRTZWxlY3RlZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBj
b25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdCBjb25zdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjphY2Nlc3NpYmlsaXR5
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpyb2xl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbHMuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxk
cmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6bWVudUxpc3RPcHRp
b25BY2Nlc3NpYmlsaXR5T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0ltYWdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcm9n
cmVzc0luZGljYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNTbGlkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUl0ZW0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRW5hYmxlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNDaGVja2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdXBw
b3J0c1JlcXVpcmVkQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpoZWFkaW5nTGV2ZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNMaW5rIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dyb3VwIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGVja2JveE9yUmFk
aW9WYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YWN0aW9uRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6YWx0ZXJTbGlkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUVsZW1lbnRGb3JNZW51
QnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjptZW51SXRlbUVsZW1lbnRGb3JNZW51IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1lbnRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2ZVRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2libGVUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNj
ZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmFyaWFMYWJlbGVkQnlUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnJvbGVJZ25vcmVzVGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhpZXJhcmNo
aWNhbExldmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6c3RyaW5nVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpyZW1hcEFyaWFSb2xlRHVlVG9QYXJl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNh
blNldFNlbGVjdGVkQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vz
c2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNCbG9ja3F1b3RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENvbnRy
b2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklB
VGV4dENvbnRyb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMYW5kbWFyayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1JhbmdlQ29udHJvbCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JC
b3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3Vw
cG9ydHNBUklBUmVhZE9ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYVJlYWRPbmx5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25T
dGF0dXNGb3JSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFj
dGlvblZlcmIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUN1cnJlbnRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhQ3VycmVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVSb2xlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFyaWFSb2xlVG9XZWJDb3JlUm9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb21wdXRlZFJvbGVTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc0FjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpzb3J0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzRXhwYW5kZWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0NoZWNr
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2ti
b3hPclJhZGlvVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsQnlQYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6Omxhc3RLbm93bklzSWdub3JlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJ1dHRvblJvbGVUeXBlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQnV0dG9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWRCeURlZmF1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29udGFpbmVkQnlQYXNzd29yZEZpZWxk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHQ6OkFjY2Vz
c2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRG
cm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW1hZ2VNYXAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNXZWJBcmVhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ2hlY2tib3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSYWRpb0J1dHRvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3gg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGluQnV0
dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3dp
dGNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9n
Z2xlQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzVGFiTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc1RhYkl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNSYWRpb0dyb3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQ29tYm9Cb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUcmVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzVHJlZUdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUcmVlSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Njcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0xpc3RJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzU2Nyb2xsVmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NhbnZhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1BvcFVwQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29sb3JXZWxsIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BsaXR0ZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUb29sYmFyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3VtbWFyeSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N0YXRpY1RleHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVBdHRyaWJ1dGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0F0dGFjaG1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRleHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFs
dWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBNZW1iZXJzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmtlZFVJ
RWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b2Jq
ZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpzZWxlY3RlZFRleHRSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZvY3VzZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWN0ZWRSb3dz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3Vt
ZW50TGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNFeHBhbmRl
ZFRleHRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFs
Um9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRk
SW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp1cGRhdGVSb2xlQWZ0ZXJDaGlsZHJlbkNyZWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9u
QXRvbWljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZENoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2li
bGVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp0YWJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphY3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1zYWFSb2xlRm9yUmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9s
ZVZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudDo6YWNjZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojppbmhlcml0c1ByZXNlbnRhdGlv
bmFsUm9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsQmFyKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlTY3JvbGxiYXI6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNsaWRlcjo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246
OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpoYXNBUklBUm9sZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojp0aXRsZUVsZW1lbnRUZXh0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJv
bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUcmVlOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5wdXRU
eXBlUG9wdXBCdXR0b24gY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q2FuRnV6enlIaXRUZXN0XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFy
a1JvbGU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nl
c3NpYmlsaXR5VHJlZUFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5TGlzdEFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5QXJ0aWNsZUFuY2VzdG9yXSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5
VHJhaXRzRnJvbUFuY2VzdG9yc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfYWNjZXNzaWJpbGl0eVRleHRFbnRyeVRyYWl0c10pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VHJhaXRzXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRldGVybWluZUlzQWNjZXNzaWJpbGl0
eUVsZW1lbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Ry
aW5nVmFsdWVTaG91bGRCZVVzZWRJbkxhYmVsXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMYWJlbF0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VmFsdWVdKToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUlzQ29tYm9Cb3hdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udGFpbnNVbm5hdHVy
YWxseVNlZ21lbnRlZENoaWxkcmVuXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50XSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRyZWVJdGVtUGFyZW50Rm9yT2JqZWN0Ol0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5RWxlbWVu
dERpZEJlY29tZUZvY3VzZWRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25dKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29u
c3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlIGJhc2VBY2Nlc3NpYmlsaXR5VGl0bGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25dKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VBY2Nlc3NpYmlsaXR5
SGVscFRleHRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
IGFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbl0pOgorICAgICAgICAoY3JlYXRlQWNjZXNzaWJp
bGl0eVNlYXJjaEtleU1hcCk6CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRp
Y2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoYWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRDcml0ZXJpYUZvckNyaXRlcmlhUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgIChjcmVh
dGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCk6CisgICAgICAgIChyb2xlVmFsdWVUb05TU3RyaW5nKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdWJyb2xlXSk6CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJvbGVEZXNjcmlwdGlvbl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb25dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzKToKKwogMjAxNy0xMC0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHNlcnZpY2Ugd29ya2VyIGhhbmRsZSBmZXRjaCBzdXBwb3J0IGZvciBh
bGwgc3VicmVzb3VyY2UgcmVxdWVzdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDggKzEyMCw4IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGFjY2Vzc2liaWxpdHlGb2N1c0EK
IAogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRl
Q2FjaGU6OmdldElnbm9yZWQoQVhJRCBpZCkgY29uc3QKIHsKLSAgICBIYXNoTWFwPEFYSUQsIENh
Y2hlZEFYT2JqZWN0QXR0cmlidXRlcz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pZE1hcHBpbmcu
ZmluZChpZCk7Ci0gICAgcmV0dXJuIGl0ICE9IG1faWRNYXBwaW5nLmVuZCgpID8gaXQtPnZhbHVl
Lmlnbm9yZWQgOiBEZWZhdWx0QmVoYXZpb3I7CisgICAgYXV0byBpdCA9IG1faWRNYXBwaW5nLmZp
bmQoaWQpOworICAgIHJldHVybiBpdCAhPSBtX2lkTWFwcGluZy5lbmQoKSA/IGl0LT52YWx1ZS5p
Z25vcmVkIDogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOwog
fQogCiB2b2lkIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6c2V0SWdub3JlZChBWElE
IGlkLCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGluY2x1c2lvbikKQEAgLTIwMyw4ICsy
MDMsOCBAQCBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiAgICAgbV9mb2N1c0FyaWFN
b2RhbE5vZGVUaW1lci5zdG9wKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iamVjdCA6IG1f
b2JqZWN0cy52YWx1ZXMoKSkgewotICAgICAgICBkZXRhY2hXcmFwcGVyKG9iamVjdC5nZXQoKSwg
Q2FjaGVEZXN0cm95ZWQpOwotICAgICAgICBvYmplY3QtPmRldGFjaChDYWNoZURlc3Ryb3llZCk7
CisgICAgICAgIGRldGFjaFdyYXBwZXIob2JqZWN0LmdldCgpLCBBY2Nlc3NpYmlsaXR5RGV0YWNo
bWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsKKyAgICAgICAgb2JqZWN0LT5kZXRhY2goQWNjZXNz
aWJpbGl0eURldGFjaG1lbnRUeXBlOjpDYWNoZURlc3Ryb3llZCk7CiAgICAgICAgIHJlbW92ZUFY
SUQob2JqZWN0LmdldCgpKTsKICAgICB9CiB9CkBAIC02NDcsMzEgKzY0NywzMSBAQCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPCiAgICAgCiAgICAgLy8gd2lsbCBiZSBm
aWxsZWQgaW4uLi4KICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNlIExpc3RCb3hPcHRpb25S
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb246CiAgICAgICAg
IG9iaiA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJbWFnZU1hcExpbmtSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkltYWdlTWFwTGluazoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
azo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sdW1uUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW46CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAotICAg
IGNhc2UgVGFibGVIZWFkZXJDb250YWluZXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXI6OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsgICAKLSAgICBjYXNl
IFNsaWRlclRodW1iUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVt
YjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjpjcmVhdGUoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZW51TGlzdFBvcHVwUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cDo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVudUxp
c3RPcHRpb25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0T3B0aW9u
OgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmNyZWF0ZSgpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlNwaW5CdXR0b246CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTcGluQnV0dG9uUGFy
dFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQ6CiAgICAg
ICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydDo6Y3JlYXRlKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC02OTksOCArNjk5LDggQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpyZW1vdmUoQVhJRCBheElEKQogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgZGV0YWNoV3JhcHBlcihvYmosIEVsZW1lbnREZXN0cm95ZWQpOwotICAgIG9iai0+
ZGV0YWNoKEVsZW1lbnREZXN0cm95ZWQsIHRoaXMpOworICAgIGRldGFjaFdyYXBwZXIob2JqLCBB
Y2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnREZXN0cm95ZWQpOworICAgIG9iai0+
ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCwgdGhp
cyk7CiAgICAgcmVtb3ZlQVhJRChvYmopOwogICAgIAogICAgIC8vIGZpbmFsbHkgcmVtb3ZlIHRo
ZSBvYmplY3QKQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNh
dGlvblBvc3RUaW1lCiAgICAgICAgIC8vIHRoZSBheENoaWxkcmVuIHdoZW4gdGhlIG1lbnUgaXMg
bWFya2VkIGFzIG9wZW5pbmcuCiAgICAgICAgIGlmIChub3RpZmljYXRpb24gPT0gQVhNZW51T3Bl
bmVkKSB7CiAgICAgICAgICAgICBvYmotPnVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpICE9IE1lbnVSb2xlKQorICAgICAgICAgICAg
aWYgKG9iai0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gMjIzOTQwKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkxLDcgKzkxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0cnVjdCBD
YWNoZWRBWE9iamVjdEF0dHJpYnV0ZXMgewotICAgICAgICBDYWNoZWRBWE9iamVjdEF0dHJpYnV0
ZXMoKSA6IGlnbm9yZWQoRGVmYXVsdEJlaGF2aW9yKSB7IH0KKyAgICAgICAgQ2FjaGVkQVhPYmpl
Y3RBdHRyaWJ1dGVzKCkKKyAgICAgICAgICAgIDogaWdub3JlZChBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3IpCisgICAgICAgIHsgfQogCiAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb24gaWdub3JlZDsKICAgICB9OwpAQCAtNDY2LDcgKzQ2OCw3
IEBAIGJvb2wgbm9kZUhhc1JvbGUoTm9kZSosIGNvbnN0IFN0cmluZyYgcm8KIGJvb2wgaXNOb2Rl
QXJpYVZpc2libGUoTm9kZSopOwogICAgIAogI2lmICFIQVZFKEFDQ0VTU0lCSUxJVFkpCi1pbmxp
bmUgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRl
Q2FjaGU6OmdldElnbm9yZWQoQVhJRCkgY29uc3QgeyByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOyB9
CitpbmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBWENvbXB1dGVkT2JqZWN0QXR0
cmlidXRlQ2FjaGU6OmdldElnbm9yZWQoQVhJRCkgY29uc3QgeyByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9CiBpbmxpbmUgQWNjZXNzaWJpbGl0
eVJlcGxhY2VkVGV4dDo6QWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4dChjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9pZCBBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0Ojpwb3N0
VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKEFYT2JqZWN0Q2FjaGUqLCBBWFRleHRFZGl0VHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogaW5saW5lIHZv
aWQgQVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpzZXRJZ25vcmVkKEFYSUQsIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb24pIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAkocmV2aXNpb24g
MjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKAogICAgIAogICAgIC8vIG1ha2UgdGhlIGNvbHVt
bnMgYmFzZWQgb24gdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbHVtbkNvdW50OyArK2kpIHsKLSAgICAgICAgYXV0
byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+
Z2V0T3JDcmVhdGUoQ29sdW1uUm9sZSkpOworICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4+KCpheENhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZTo6Q29sdW1uKSk7CiAgICAgICAgIGNvbHVtbi5zZXRDb2x1bW5JbmRleChzdGF0
aWNfY2FzdDxpbnQ+KGkpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsKICAgICAg
ICAgbV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAko
cmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW4KIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFJvd0dyb3VwKCkgY29uc3QK
IHsKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKLSAgICAgICAgaWYg
KHBhcmVudC0+aGFzVGFnTmFtZSh0aGVhZFRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKHRib2R5
VGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUodGZvb3RUYWcpIHx8IHBhcmVudC0+cm9sZVZhbHVl
KCkgPT0gUm93R3JvdXBSb2xlKQorICAgICAgICBpZiAocGFyZW50LT5oYXNUYWdOYW1lKHRoZWFk
VGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IHBhcmVudC0+aGFzVGFnTmFt
ZSh0Zm9vdFRhZykgfHwgcGFyZW50LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
Um93R3JvdXApCiAgICAgICAgICAgICByZXR1cm4gcGFyZW50OwogICAgIH0KICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdy5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM2LDcgKzEzNiw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFH
cmkKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6aGVhZGVy
T2JqZWN0KCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkgewot
ICAgICAgICBpZiAoY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gUm93SGVhZGVyUm9sZSkK
KyAgICAgICAgaWYgKGNoaWxkLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpSb3dIZWFkZXIpCiAgICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CiAgICAgfQog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QXR0
YWNobWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QXR0YWNobWVudC5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NSwxMyArOTUsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QXR0YWNobWVudDo6
YWNjZXNzaWJpbAogICAgIGF1dG8mIGFjdGlvbiA9IGdldEF0dHJpYnV0ZShhY3Rpb25BdHRyKTsK
ICAgICAKICAgICBpZiAoYWN0aW9uLmxlbmd0aCgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5k
KEFjY2Vzc2liaWxpdHlUZXh0KGFjdGlvbiwgQWN0aW9uVGV4dCkpOworICAgICAgICB0ZXh0T3Jk
ZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjdGlvbiwgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2U6OkFjdGlvbikpOwogCiAgICAgaWYgKHRpdGxlLmxlbmd0aCgpKQotICAgICAgICB0ZXh0T3Jk
ZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlLCBUaXRsZVRleHQpKTsKKyAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZSwgQWNjZXNzaWJpbGl0eVRl
eHRTb3VyY2U6OlRpdGxlKSk7CiAKICAgICBpZiAoc3VidGl0bGUubGVuZ3RoKCkpCi0gICAgICAg
IHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VidGl0bGUsIFN1YnRpdGxlVGV4
dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHN1YnRpdGxl
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VidGl0bGUpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QXR0YWNobWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QXR0YWNobWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Byb2dyZXNzKGZs
b2F0KiBwcm9ncmVzcyA9IG51bGxwdHIpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICBBY2Nl
c3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCdXR0b25S
b2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjsgfQogICAgIGJvb2wgaXNBdHRhY2ht
ZW50RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFN0cmlu
ZyByb2xlRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTMgKzY2
LDEzIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlJbWFnZU0KIEFjY2Vzc2li
aWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnJvbGVWYWx1ZSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2FyZWFFbGVtZW50KQotICAgICAgICByZXR1cm4gV2ViQ29yZUxpbmtSb2xl
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOwogICAgIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYVJvbGUgPSBnZXRBdHRyaWJ1dGUocm9sZUF0dHIp
OwogICAgIGlmICghYXJpYVJvbGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eU9iamVjdDo6YXJpYVJvbGVUb1dlYkNvcmVSb2xlKGFyaWFSb2xlKTsKIAotICAgIHJldHVy
biBXZWJDb3JlTGlua1JvbGU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3Jl
TGluazsKIH0KICAgICAKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmFjdGlv
bkVsZW1lbnQoKSBjb25zdApAQCAtOTcsMTUgKzk3LDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluazo6YWNjZXNzaWIKIHsKICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBhY2Nlc3Np
YmlsaXR5RGVzY3JpcHRpb24oKTsKICAgICBpZiAoIWRlc2NyaXB0aW9uLmlzRW1wdHkoKSkKLSAg
ICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmlwdGlvbiwgQWx0
ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQoZGVzY3JpcHRpb24sIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwog
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0aXRsZVRleHQgPSBnZXRBdHRyaWJ1dGUodGl0bGVB
dHRyKTsKICAgICBpZiAoIXRpdGxlVGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5h
cHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGVUZXh0LCBUaXRsZVRhZ1RleHQpKTsKKyAgICAg
ICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZVRleHQsIEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZykpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBz
dW1tYXJ5ID0gZ2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsKICAgICBpZiAoIXN1bW1hcnkuaXNF
bXB0eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHN1bW1h
cnksIFN1bW1hcnlUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoc3VtbWFyeSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpKTsKIH0KICAg
ICAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjphY2Nlc3NpYmlsaXR5RGVzY3Jp
cHRpb24oKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGFiZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxhYmVsLmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw5ICs2NSw5IEBAIHN0YXRpYyBib29sIGNoaWxkcmVuQ29udGFpbk9ubHlTdGF0aWNU
ZXgKICAgICBpZiAoIWNoaWxkcmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbikgewotICAgICAgICBpZiAoY2hpbGQt
PnJvbGVWYWx1ZSgpID09IFN0YXRpY1RleHRSb2xlKQorICAgICAgICBpZiAoY2hpbGQtPnJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0KQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gR3JvdXBSb2xlKSB7Cisg
ICAgICAgIGlmIChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3Vw
KSB7CiAgICAgICAgICAgICBpZiAoIWNoaWxkcmVuQ29udGFpbk9ubHlTdGF0aWNUZXh0KGNoaWxk
LT5jaGlsZHJlbigpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0g
ZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFi
ZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMYWJlbC5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUxhYmVsKFJl
bmRlck9iamVjdCopOwogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdCBmaW5hbDsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBMYWJlbFJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFiZWw7IH0KICAgICBi
b29sIGlzTGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgU3RyaW5nIHN0
cmluZ1ZhbHVlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNz
YXJ5KCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDcgKzY3LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdDo6aXNVbm9yZGVyZWRMaXN0KAog
ICAgIC8vIFRoZSBBUklBIHNwZWMgc2F5cyB0aGUgImxpc3QiIHJvbGUgaXMgc3VwcG9zZWQgdG8g
bWltaWMgYSBVTCBvciBPTCB0YWcuCiAgICAgLy8gU2luY2UgaXQgY2FuJ3QgYmUgYm90aCwgaXQn
cyBwcm9iYWJseSBPSyB0byBzYXkgdGhhdCBpdCdzIGFuIHVuLW9yZGVyZWQgbGlzdC4KICAgICAv
LyBPbiB0aGUgTWFjLCB0aGVyZSdzIG5vIGRpc3RpbmN0aW9uIHRvIHRoZSBjbGllbnQuCi0gICAg
aWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTGlzdFJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3QpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAogICAgIHJldHVybiBub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUodWxUYWcpOwpAQCAt
NzksNyArNzksNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0Ojppc09yZGVyZWRMaXN0KCkgCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEFSSUEgc2F5cyBhIGRpcmVjdG9yeSBpcyBs
aWtlIGEgc3RhdGljIHRhYmxlIG9mIGNvbnRlbnRzLCB3aGljaCBzb3VuZHMgbGlrZSBhbiBvcmRl
cmVkIGxpc3QuCi0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gRGlyZWN0b3J5Um9sZSkK
KyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlyZWN0
b3J5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVy
LT5ub2RlKCk7CkBAIC0xMjksOCArMTI5LDggQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJp
bGl0eUxpc3Q6OmRldAogICAgIG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0
ZSgpOwogICAgIAogICAgIC8vIERpcmVjdG9yeSBpcyBtYXBwZWQgdG8gbGlzdCBmb3Igbm93LCBi
dXQgZG9lcyBub3QgYWRoZXJlIHRvIHRoZSBzYW1lIGhldXJpc3RpY3MuCi0gICAgaWYgKGFyaWFS
b2xlQXR0cmlidXRlKCkgPT0gRGlyZWN0b3J5Um9sZSkKLSAgICAgICAgcmV0dXJuIExpc3RSb2xl
OworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEaXJl
Y3RvcnkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdDsKICAgICAKICAg
ICAvLyBIZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgbGlzdCBpcyBiZWluZyB1c2VkIGZv
ciBsYXlvdXQgb3IgZm9yIGNvbnRlbnQuCiAgICAgLy8gICAxLiBJZiBpdCdzIGEgbmFtZWQgbGlz
dCwgbGlrZSBvbCBvciBhcmlhPWxpc3QsIHRoZW4gaXQncyBhIGxpc3QuCkBAIC0xNDAsNyArMTQw
LDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eUxpc3Q6OmRldAogICAgIC8vICAg
NC4gSWYgaXQgZG9lcyBub3QgaGF2ZSBhbnkgbGlzdGl0ZW0gY2hpbGRyZW4sIGl0J3Mgbm90IGEg
bGlzdC4KICAgICAvLyAgIDUuIE90aGVyd2lzZSBpdCdzIGEgbGlzdCAoZm9yIG5vdykuCiAgICAg
Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IExpc3RSb2xlOworICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdDsKICAgICAKICAgICAvLyBUZW1w
b3JhcmlseSBzZXQgcm9sZSBzbyB0aGF0IHdlIGNhbiBxdWVyeSBjaGlsZHJlbiAob3RoZXJ3aXNl
IGNhbkhhdmVDaGlsZHJlbiByZXR1cm5zIGZhbHNlKS4KICAgICBtX3JvbGUgPSByb2xlOwpAQCAt
MTUxLDEyICsxNTEsMTIgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eUxpc3Q6OmRl
dAogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKICAgICAvLyBE
ZXNjcmlwdGlvbkxpc3RzIGFyZSBhbHdheXMgc2VtYW50aWNhbGx5IGEgZGVzY3JpcHRpb24gbGlz
dCwgc28gZG8gbm90IGFwcGx5IGhldXJpc3RpY3MuCiAgICAgaWYgKGlzRGVzY3JpcHRpb25MaXN0
KCkgJiYgY2hpbGRyZW4uc2l6ZSgpKQotICAgICAgICByZXR1cm4gRGVzY3JpcHRpb25MaXN0Um9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3Q7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKLSAgICAgICAgaWYgKGNo
aWxkLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IExpc3RJdGVtUm9sZSkKKyAgICAgICAgaWYgKGNo
aWxkLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSkK
ICAgICAgICAgICAgIGxpc3RJdGVtQ291bnQrKzsKLSAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnJv
bGVWYWx1ZSgpID09IExpc3RJdGVtUm9sZSkgeworICAgICAgICBlbHNlIGlmIChjaGlsZC0+cm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtKSB7CiAgICAgICAgICAgICBS
ZW5kZXJPYmplY3QqIGxpc3RJdGVtID0gY2hpbGQtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBp
ZiAoIWxpc3RJdGVtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTY4LDcgKzE2OCw3
IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlMaXN0OjpkZXQKICAgICAgICAgICAg
ICAgICBsaXN0SXRlbUNvdW50Kys7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpc3RJdGVtLT5u
b2RlKCkgJiYgbGlzdEl0ZW0tPm5vZGUoKS0+aGFzVGFnTmFtZShsaVRhZykpIHsKICAgICAgICAg
ICAgICAgICAvLyBJbmxpbmUgZWxlbWVudHMgdGhhdCBhcmUgaW4gYSBsaXN0IHdpdGggYW4gZXhw
bGljaXQgcm9sZSBzaG91bGQgYWxzbyBjb3VudC4KLSAgICAgICAgICAgICAgICBpZiAobV9hcmlh
Um9sZSA9PSBMaXN0Um9sZSkKKyAgICAgICAgICAgICAgICBpZiAobV9hcmlhUm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGlzdCkKICAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW1Db3VudCsr
OwogCiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkSGFzUHNldWRvVmlzaWJsZUxpc3RJdGVtTWFy
a2VycyhsaXN0SXRlbSkpIHsKQEAgLTE4MSwxOCArMTgxLDE4IEBAIEFjY2Vzc2liaWxpdHlSb2xl
IEFjY2Vzc2liaWxpdHlMaXN0OjpkZXQKICAgICAKICAgICAvLyBOb24gPHVsPiBsaXN0cyBhbmQg
QVJJQSBsaXN0cyBvbmx5IG5lZWQgdG8gaGF2ZSBvbmUgY2hpbGQuCiAgICAgLy8gPHVsPiwgPG9s
PiBsaXN0cyBuZWVkIHRvIGhhdmUgdmlzaWJsZSBtYXJrZXJzLgotICAgIGlmIChhcmlhUm9sZUF0
dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlKSB7CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pIHsKICAgICAgICAgaWYgKCFsaXN0SXRlbUNv
dW50KQotICAgICAgICAgICAgcm9sZSA9IEFwcGxpY2F0aW9uR3JvdXBSb2xlOworICAgICAgICAg
ICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwOwogICAgIH0gZWxz
ZSBpZiAoIWhhc1Zpc2libGVNYXJrZXJzKQotICAgICAgICByb2xlID0gR3JvdXBSb2xlOworICAg
ICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwOwogCiAgICAgcmV0dXJuIHJvbGU7
CiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6cm9sZVZhbHVl
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9yb2xlICE9IFVua25vd25Sb2xlKTsKKyAgICBBU1NF
UlQobV9yb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKTsKICAgICByZXR1cm4gbV9y
b2xlOwogfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw5ICs5Niw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OnNldFNl
bGVjdGVkQ2gKICAgICB9CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBvYmogOiBjaGlsZHJl
bikgewotICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSAhPSBMaXN0Qm94T3B0aW9uUm9sZSkK
KyAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RC
b3hPcHRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAg
ICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbj4oKm9iaikuc2V0U2VsZWN0
ZWQodHJ1ZSk7CiAgICAgfQogfQpAQCAtMTM2LDcgKzEzNiw3IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm8KICAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC0+aGFz
VGFnTmFtZShoclRhZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QmIGxpc3RCb3hPYmplY3QgPSAqbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5h
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKExpc3RCb3hPcHRpb25Sb2xlKTsKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBsaXN0Qm94T2JqZWN0ID0gKm1fcmVuZGVyZXItPmRvY3VtZW50KCku
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9w
dGlvbik7CiAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24+KGxpc3RCb3hP
YmplY3QpLnNldEhUTUxFbGVtZW50KGVsZW1lbnQpOwogICAgIAogICAgIHJldHVybiAmbGlzdEJv
eE9iamVjdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlMaXN0Qm94LmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxk
cmVuQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTZWxlY3RlZENoaWxk
cmVuKGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExpc3RCb3hSb2xlOyB9
CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7IH0KICAgICAgICAgCiAgICAgdm9pZCBzZWxl
Y3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dEJveE9wdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEhU
TUxFbGVtZW50KEhUTUxFbGVtZW50KiBlbGVtZW50KSB7IG1fb3B0aW9uRWxlbWVudCA9IGVsZW1l
bnQ7IH0KICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBMaXN0Qm94T3B0aW9uUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0Qm94T3B0aW9uOyB9CiAgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzU2VsZWN0ZWRP
cHRpb25BY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTggKzUxLDE4
IEBAIFJlZjxBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudD4gQWNjZXNzaWIKIEFjY2Vzc2liaWxp
dHlSb2xlIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5
Um9sZSgpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gVW5rbm93blJv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIAotICAgIGlm
ICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IFVua25vd25S
b2xlKQorICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkp
ICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gbV9hcmlhUm9s
ZTsKIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CiAgICAgaWYgKG5vZGUg
JiYgbm9kZS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bWF0aFRhZykpCi0gICAgICAgIHJldHVy
biBEb2N1bWVudE1hdGhSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aDsKIAogICAgIC8vIEl0J3Mgbm90IGNsZWFyIHdoaWNoIHJvbGUgYSBwbGF0Zm9y
bSBzaG91bGQgY2hvb3NlIGZvciBhIG1hdGggZWxlbWVudC4KICAgICAvLyBEZWNsYXJpbmcgYSBt
YXRoIGVsZW1lbnQgcm9sZSBzaG91bGQgZ2l2ZSBmbGV4aWJpbGl0eSB0byBwbGF0Zm9ybXMgdG8g
Y2hvb3NlLgotICAgIHJldHVybiBNYXRoRWxlbWVudFJvbGU7CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpNYXRoRWxlbWVudDsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlNYXRoTUxF
bGVtZW50Ojp0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9k
ZSBtb2RlKSBjb25zdApAQCAtMjA2LDcgKzIwNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhN
TEVsZW1lbnQ6OmlzTWF0aFMKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIHR5cGUgPT0gU3Vic2NyaXB0ID8gdGhpcyA9PSBwYXJlbnQtPm1hdGhT
dWJzY3JpcHRPYmplY3QoKSA6IHRoaXMgPT0gcGFyZW50LT5tYXRoU3VwZXJzY3JpcHRPYmplY3Qo
KTsKKyAgICByZXR1cm4gdHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGU6
OlN1YnNjcmlwdCA/IHRoaXMgPT0gcGFyZW50LT5tYXRoU3Vic2NyaXB0T2JqZWN0KCkgOiB0aGlz
ID09IHBhcmVudC0+bWF0aFN1cGVyc2NyaXB0T2JqZWN0KCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJp
bGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlIHR5cGUpIGNvbnN0CkBAIC0yMjEsMTYgKzIyMSwxNiBA
QCBib29sIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNCiAgICAgLy8gdGhpcyB0
b2tlbiBpcyBwcmVzZW50IGFuZCBpbiB0aGUgcG9zaXRpb24gY29ycmVzcG9uZGluZyB3aXRoIHRo
ZSB0eXBlLgogCiAgICAgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzIHBhaXJzOwot
ICAgIGlmICh0eXBlID09IFByZVN1YnNjcmlwdCB8fCB0eXBlID09IFByZVN1cGVyc2NyaXB0KQor
ICAgIGlmICh0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQ
cmVTdWJzY3JpcHQgfHwgdHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0
VHlwZTo6UHJlU3VwZXJzY3JpcHQpCiAgICAgICAgIHBhcmVudC0+bWF0aFByZXNjcmlwdHMocGFp
cnMpOwogICAgIGVsc2UKICAgICAgICAgcGFyZW50LT5tYXRoUG9zdHNjcmlwdHMocGFpcnMpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogcGFpcnMpIHsKICAgICAgICAgaWYgKHRoaXMg
PT0gcGFpci5maXJzdCkKLSAgICAgICAgICAgIHJldHVybiAodHlwZSA9PSBQcmVTdWJzY3JpcHQg
fHwgdHlwZSA9PSBQb3N0U3Vic2NyaXB0KTsKKyAgICAgICAgICAgIHJldHVybiAodHlwZSA9PSBB
Y2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0IHx8IHR5
cGUgPT0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBvc3RTdWJzY3Jp
cHQpOwogICAgICAgICBpZiAodGhpcyA9PSBwYWlyLnNlY29uZCkKLSAgICAgICAgICAgIHJldHVy
biAodHlwZSA9PSBQcmVTdXBlcnNjcmlwdCB8fCB0eXBlID09IFBvc3RTdXBlcnNjcmlwdCk7Cisg
ICAgICAgICAgICByZXR1cm4gKHR5cGUgPT0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9i
amVjdFR5cGU6OlByZVN1cGVyc2NyaXB0IHx8IHR5cGUgPT0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0
aXNjcmlwdE9iamVjdFR5cGU6OlBvc3RTdXBlcnNjcmlwdCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVkaWFDb250cm9scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsMTUgKzE0MiwxNSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlNZWRpYUNvbnRyb2w6OmFjY2Vzc2liCiB7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCFkZXNjcmlwdGlvbi5pc0VtcHR5KCkp
Ci0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoZGVzY3JpcHRpb24s
IEFsdGVybmF0aXZlVGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxp
dHlUZXh0KGRlc2NyaXB0aW9uLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUp
KTsKIAogICAgIFN0cmluZyB0aXRsZSA9IHRoaXMtPnRpdGxlKCk7CiAgICAgaWYgKCF0aXRsZS5p
c0VtcHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0
bGUsIEFsdGVybmF0aXZlVGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2li
aWxpdHlUZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsK
IAogICAgIFN0cmluZyBoZWxwdGV4dCA9IGhlbHBUZXh0KCk7CiAgICAgaWYgKCFoZWxwdGV4dC5p
c0VtcHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaGVs
cHRleHQsIEhlbHBUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoaGVscHRleHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwKSk7CiB9CiAgICAg
CiAKQEAgLTE5NywyMyArMTk3LDIyIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlN
ZWRpYUNvbnQKICAgICBjYXNlIE1lZGlhUGF1c2VCdXR0b246CiAgICAgY2FzZSBNZWRpYVNob3dD
bG9zZWRDYXB0aW9uc0J1dHRvbjoKICAgICBjYXNlIE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0
dG9uOgotICAgICAgICByZXR1cm4gQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXR0b247CiAKICAgICBjYXNlIE1lZGlhU3RhdHVzRGlzcGxheToKLSAgICAg
ICAgcmV0dXJuIFN0YXRpY1RleHRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlN0YXRpY1RleHQ7CiAKICAgICBjYXNlIE1lZGlhVGltZWxpbmVDb250YWluZXI6Ci0gICAg
ICAgIHJldHVybiBHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JvdXA7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1
cm4gVW5rbm93blJvbGU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwog
fQogCiAKLQogLy8KIC8vIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJv
bHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZWRpYUNvbnRyb2xzLmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaAkod29ya2luZyBjb3B5
KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0
eU1lZGlhQ29udHJvbHNDb250YWluZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUb29sYmFyUm9sZTsgfQor
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOyB9CiAKICAgICBTdHJpbmcgaGVscFRleHQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5B
Y2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxheSgpID0gZGVmYXVsdDsKIAotICAgIEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFwcGxpY2F0aW9u
VGltZXJSb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXI7IH0KIAog
ICAgIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBhY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAJ
KHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlNZW51TGlzdDo6YWRkQ2hpbGRyZW4oCiAgICAgaWYgKCFjYWNoZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3QgPSBjYWNo
ZS0+Z2V0T3JDcmVhdGUoTWVudUxpc3RQb3B1cFJvbGUpOworICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGxpc3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0
UG9wdXApOwogICAgIGlmICghbGlzdCkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgJ
KHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0
ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVudUxpc3QoUmVuZGVyTWVudUxpc3QqKTsK
IAogICAgIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBQb3BVcEJ1dHRvblJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0K
ICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgJKHJl
dmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIE1lbnVMaXN0T3B0aW9uUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpNZW51TGlzdE9wdGlvbjsgfQogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCShyZXZpc2lvbiAyMjM5
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBBY2Nlc3NpYmlsaXR5
TWVudUxpc3RPcHRpb24qIEFjY2Vzc2liaWxpCiAgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVu
dD4oZWxlbWVudCkgfHwgIWVsZW1lbnQtPmluUmVuZGVyZWREb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8mIG9wdGlvbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbj4oKmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVh
dGUoTWVudUxpc3RPcHRpb25Sb2xlKSk7CisgICAgYXV0byYgb3B0aW9uID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uPigqZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb24pKTsKICAgICBvcHRp
b24uc2V0RWxlbWVudChlbGVtZW50KTsKIAogICAgIHJldHVybiAmb3B0aW9uOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAuaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01lbnVMaXN0UG9wdXAoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVudUxpc3RQb3B1cFJv
bGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cDsgfQogCiAgICAgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHByZXNzKCkgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDExICs4Myw2IEBAIHN0YXRpYyBTdHJpbmcgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKE5v
ZGUKIAogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KE5v
ZGUqIG5vZGUpCiAgICAgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0KCkKLSAgICAsIG1fYXJpYVJvbGUo
VW5rbm93blJvbGUpCi0gICAgLCBtX3JvbGVGb3JNU0FBKFVua25vd25Sb2xlKQotI2lmbmRlZiBO
REVCVUcKLSAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCi0jZW5kaWYKICAgICAsIG1fbm9kZShu
b2RlKQogewogfQpAQCAtMjgyLDU3ICsyNzcsNTcgQEAgRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojpkb2N1bQogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKICAgICBpZiAoIW5vZGUoKSkKLSAg
ICAgICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlVua25vd247CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0
dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAg
ICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAgICAgCiAgICAgaWYgKG5vZGUoKS0+aXNMaW5rKCkp
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlTGlua1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CiAgICAgaWYgKG5vZGUoKS0+aXNUZXh0Tm9kZSgpKQot
ICAgICAgICByZXR1cm4gU3RhdGljVGV4dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6U3RhdGljVGV4dDsKICAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGJ1dHRvblRh
ZykpCiAgICAgICAgIHJldHVybiBidXR0b25Sb2xlVHlwZSgpOwogICAgIGlmIChpczxIVE1MSW5w
dXRFbGVtZW50Pigqbm9kZSgpKSkgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9
IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKCkpOwogICAgICAgICBpZiAoaW5wdXQu
aXNDaGVja2JveCgpKQotICAgICAgICAgICAgcmV0dXJuIENoZWNrQm94Um9sZTsKKyAgICAgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7CiAgICAgICAgIGlmIChpbnB1
dC5pc1JhZGlvQnV0dG9uKCkpCi0gICAgICAgICAgICByZXR1cm4gUmFkaW9CdXR0b25Sb2xlOwor
ICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjsKICAgICAg
ICAgaWYgKGlucHV0LmlzVGV4dEJ1dHRvbigpKQogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvblJv
bGVUeXBlKCk7CiAgICAgICAgIGlmIChpbnB1dC5pc1JhbmdlQ29udHJvbCgpKQotICAgICAgICAg
ICAgcmV0dXJuIFNsaWRlclJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlNsaWRlcjsKICAgICAgICAgaWYgKGlucHV0LmlzSW5wdXRUeXBlSGlkZGVuKCkpCi0gICAg
ICAgICAgICByZXR1cm4gSWdub3JlZFJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6Oklnbm9yZWQ7CiAgICAgICAgIGlmIChpbnB1dC5pc1NlYXJjaEZpZWxkKCkpCi0g
ICAgICAgICAgICByZXR1cm4gU2VhcmNoRmllbGRSb2xlOworICAgICAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZDsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKICAgICAgICAgaWYgKGlucHV0LmlzQ29sb3JDb250cm9sKCkpCi0gICAgICAgICAgICByZXR1
cm4gQ29sb3JXZWxsUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
Q29sb3JXZWxsOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBUZXh0RmllbGRSb2xlOworICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZDsKICAgICB9CiAgICAgaWYgKG5v
ZGUoKS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7CiAgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50
JiBzZWxlY3RFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCpub2RlKCkpOwot
ICAgICAgICByZXR1cm4gc2VsZWN0RWxlbWVudC5tdWx0aXBsZSgpID8gTGlzdEJveFJvbGUgOiBQ
b3BVcEJ1dHRvblJvbGU7CisgICAgICAgIHJldHVybiBzZWxlY3RFbGVtZW50Lm11bHRpcGxlKCkg
PyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveCA6IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1
dHRvbjsKICAgICB9CiAgICAgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCpub2RlKCkpKQot
ICAgICAgICByZXR1cm4gVGV4dEFyZWFSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OlRleHRBcmVhOwogICAgIGlmIChoZWFkaW5nTGV2ZWwoKSkKLSAgICAgICAgcmV0dXJu
IEhlYWRpbmdSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7
CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSkKLSAgICAgICAgcmV0
dXJuIEJsb2NrcXVvdGVSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkJs
b2NrcXVvdGU7CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShkaXZUYWcpKQotICAgICAgICBy
ZXR1cm4gRGl2Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXY7CiAg
ICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShwVGFnKSkKLSAgICAgICAgcmV0dXJuIFBhcmFncmFw
aFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UGFyYWdyYXBoOwogICAg
IGlmIChpczxIVE1MTGFiZWxFbGVtZW50Pigqbm9kZSgpKSkKLSAgICAgICAgcmV0dXJuIExhYmVs
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJlbDsKICAgICBpZiAo
aXM8RWxlbWVudD4oKm5vZGUoKSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUoKSkuaXNGb2N1
c2FibGUoKSkKLSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpHcm91cDsKICAgICAKLSAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogfQogCiB2b2lkIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjphZGRDaGlsZHJlbigpCkBAIC0zNzAsMjMgKzM2NSwyMyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5IYXZlQ2hpCiAgICAgCiAgICAgLy8gRWxlbWVudHMg
dGhhdCBzaG91bGQgbm90IGhhdmUgY2hpbGRyZW4KICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7
Ci0gICAgY2FzZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgUG9w
VXBCdXR0b25Sb2xlOgotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0
b25Sb2xlOgotICAgIGNhc2UgVGFiUm9sZToKLSAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6Ci0g
ICAgY2FzZSBTdGF0aWNUZXh0Um9sZToKLSAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xlOgotICAg
IGNhc2UgU2Nyb2xsQmFyUm9sZToKLSAgICBjYXNlIFByb2dyZXNzSW5kaWNhdG9yUm9sZToKLSAg
ICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICBj
YXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgU3BsaXR0ZXJSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1
dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlN0YXRpY1RleHQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9w
dGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6U3dpdGNoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hl
Y2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudE1hdGg6CiAjaWYgRU5BQkxFKE1BVEhNTCkKICAgICAgICAgcmV0dXJuIG5vZGUoKS0+
aXNNYXRoTUxFbGVtZW50KCk7CiAjZW5kaWYKQEAgLTQxNywxOCArNDEyLDE4IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbXB1dGVBY2MKICAgICB9CiAKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpOwot
ICAgIGlmIChkZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkKKyAgICBpZiAoZGVj
aXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgd2l0aGluIGEgcGFy
ZW50IHRoYXQgY2Fubm90IGhhdmUgY2hpbGRyZW4sIGl0IHNob3VsZCBub3QgYmUgZXhwb3NlZC4K
ICAgICBpZiAoaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gSWdub3JlZFJvbGUpCisgICAgaWYgKHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKLSAgICByZXR1cm4gbV9yb2xlID09IFVua25vd25Sb2xlOworICAgIHJldHVybiBt
X3JvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0CkBAIC00NzEs
NyArNDY2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTZWFyY2hGaQogICAg
IGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHJvbGVWYWx1ZSgp
ID09IFNlYXJjaEZpZWxkUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlNlYXJjaEZpZWxkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghaXM8
SFRNTElucHV0RWxlbWVudD4oKm5vZGUpKQpAQCAtNTE4LDcgKzUxMyw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmlzTmF0aXZlSW0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6aXNJbWFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEltYWdl
Um9sZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdl
OwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQoKSBj
b25zdApAQCAtNTI3LDcgKzUyMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
UGFzc3dvcmQKICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9s
ZSkKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCpub2RlKS5pc1Bhc3N3b3JkRmllbGQoKTsKQEAgLTU1NSw3ICs1NTAsNyBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iCiBib29sIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc0lucHV0SW1hZ2UoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUg
PSB0aGlzLT5ub2RlKCk7Ci0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYmIHJv
bGVWYWx1ZSgpID09IEJ1dHRvblJvbGUpIHsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4o
bm9kZSkgJiYgcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbikgewogICAg
ICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCpub2RlKTsKICAgICAgICAgcmV0dXJuIGlucHV0LmlzSW1hZ2VCdXR0b24oKTsKICAgICB9CkBA
IC01NjUsMjMgKzU2MCwyMyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0lucHV0
SW1hCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUHJvZ3Jlc3NJbmRpY2F0b3Io
KSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBQcm9ncmVzc0luZGljYXRvclJv
bGU7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVz
c0luZGljYXRvcjsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTbGlkZXIo
KSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBTbGlkZXJSb2xlOworICAgIHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOwogfQogCiBib29s
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVSZWxhdGVkKCkgY29uc3QKIHsKICAgICBz
d2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBNZW51Um9sZToKLSAgICBjYXNlIE1lbnVC
YXJSb2xlOgotICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtUmFkaW9S
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TWVudUJhcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0
dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUl0ZW1SYWRpbzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTkwLDI1ICs1ODUsMjUgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51UmVsYQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc01lbnUoKSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBNZW51Um9s
ZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU7CiB9
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUJhcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IE1lbnVCYXJSb2xlOworICAgIHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcjsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aXNNZW51QnV0dG9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gTWVudUJ1dHRvblJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc01lbnVJdGVtKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0g
ICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBj
YXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW86CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM2LDcgKzYz
MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRW5hYmxlZCgKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gSG9yaXpvbnRh
bFJ1bGVSb2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SG9y
aXpvbnRhbFJ1bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBOb2RlKiBub2Rl
ID0gdGhpcy0+bm9kZSgpOwpAQCAtNjgyLDEyICs2NzcsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNDaGVja2VkKAogICAgIC8vIEVsc2UsIGlmIHRoaXMgaXMgYW4gQVJJQSBj
aGVja2JveCBvciByYWRpbywgcmVzcGVjdCB0aGUgYXJpYS1jaGVja2VkIGF0dHJpYnV0ZQogICAg
IGJvb2wgdmFsaWRSb2xlID0gZmFsc2U7CiAgICAgc3dpdGNoIChhcmlhUm9sZUF0dHJpYnV0ZSgp
KSB7Ci0gICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0g
ICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAg
ICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgU3dpdGNoUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3dpdGNoOgogICAgICAgICB2YWxpZFJvbGUgPSB0cnVlOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgpAQCAtNzM2LDI2ICs3MzEsMjYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6aXNSZXF1aXJlZAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c3VwcG9ydHNS
ZXF1aXJlZEF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewot
ICAgIGNhc2UgQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246
CiAgICAgICAgIHJldHVybiBpc0ZpbGVVcGxvYWRCdXR0b24oKTsKLSAgICBjYXNlIENlbGxSb2xl
OgotICAgIGNhc2UgQ29sdW1uSGVhZGVyUm9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAg
ICBjYXNlIENvbWJvQm94Um9sZToKLSAgICBjYXNlIEdyaWRSb2xlOgotICAgIGNhc2UgR3JpZENl
bGxSb2xlOgotICAgIGNhc2UgSW5jcmVtZW50b3JSb2xlOgotICAgIGNhc2UgTGlzdEJveFJvbGU6
Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0g
ICAgY2FzZSBSYWRpb0dyb3VwUm9sZToKLSAgICBjYXNlIFJvd0hlYWRlclJvbGU6Ci0gICAgY2Fz
ZSBTbGlkZXJSb2xlOgotICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6Ci0gICAgY2FzZSBUYWJsZUhl
YWRlckNvbnRhaW5lclJvbGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAgY2FzZSBUZXh0
RmllbGRSb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpDZWxsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRl
cjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpDb21ib0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWRDZWxsOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkluY3JlbWVudG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UmFkaW9Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXI6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlNwaW5CdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVI
ZWFkZXJDb250YWluZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzk1LDcgKzc5MCw3IEBAIGludCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aGVhZGluZ0xldmUKIAogICAgIC8vIFRoZSBpbXBsaWNpdCB2YWx1
ZSBvZiBhcmlhLWxldmVsIGlzIDIgZm9yIHRoZSBoZWFkaW5nIHJvbGUuCiAgICAgLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jaGVhZGluZwotICAgIGlmIChhcmlhUm9sZUF0
dHJpYnV0ZSgpID09IEhlYWRpbmdSb2xlKQorICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nKQogICAgICAgICByZXR1cm4gMjsKIAogICAgIHJl
dHVybiAwOwpAQCAtODc2LDEyICs4NzEsMTIgQEAgZmxvYXQgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnN0ZXBWYWx1ZQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0hlYWRpbmco
KSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBIZWFkaW5nUm9sZTsKKyAgICBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc7CiB9CiAKIGJv
b2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTGluaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IFdlYkNvcmVMaW5rUm9sZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOwogfQogCiBib29sIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojppc0NvbnRyb2woKSBjb25zdApAQCAtOTA1LDcgKzkwMCw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRmllbGRzZXQKIGJvb2wgQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmlzR3JvdXAoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUg
PSByb2xlVmFsdWUoKTsKLSAgICByZXR1cm4gcm9sZSA9PSBHcm91cFJvbGUgfHwgcm9sZSA9PSBU
ZXh0R3JvdXBSb2xlIHx8IHJvbGUgPT0gQXBwbGljYXRpb25Hcm91cFJvbGUgfHwgcm9sZSA9PSBB
cHBsaWNhdGlvblRleHRHcm91cFJvbGU7CisgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6Okdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cCB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwIHx8IHJvbGUgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwOwogfQogCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6c2VsZWN0ZWRSYWRpb0J1dHRvbigpCkBA
IC05MTUsNyArOTEwLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVP
YgogCiAgICAgLy8gRmluZCB0aGUgY2hpbGQgcmFkaW8gYnV0dG9uIHRoYXQgaXMgc2VsZWN0ZWQg
KGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNo
aWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBSYWRpb0J1dHRv
blJvbGUgJiYgY2hpbGQtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgPT0gQnV0dG9uU3RhdGVPbikK
KyAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFk
aW9CdXR0b24gJiYgY2hpbGQtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0
eUJ1dHRvblN0YXRlOjpPbikKICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKICAgICB9
CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NDEsNyArOTM2LDcgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYgogQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpjaGVja2JveE9yUmFkaW9WYWx1ZSgpIGNvbnN0CiB7CiAgICAg
aWYgKGlzTmF0aXZlQ2hlY2tib3hPclJhZGlvKCkpCi0gICAgICAgIHJldHVybiBpc0luZGV0ZXJt
aW5hdGUoKSA/IEJ1dHRvblN0YXRlTWl4ZWQgOiBpc0NoZWNrZWQoKSA/IEJ1dHRvblN0YXRlT24g
OiBCdXR0b25TdGF0ZU9mZjsKKyAgICAgICAgcmV0dXJuIGlzSW5kZXRlcm1pbmF0ZSgpID8gQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpNaXhlZCA6IGlzQ2hlY2tlZCgpID8gQWNjZXNzaWJpbGl0
eUJ1dHRvblN0YXRlOjpPbiA6IEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOwogCiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlKCk7CiB9CkBA
IC0xMDA4LDE0ICsxMDAzLDE0IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojph
Y3Rpb24KICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwogCiAgICAgc3dp
dGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFBvcFVw
QnV0dG9uUm9sZToKLSAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6Ci0gICAgY2FzZSBUYWJSb2xl
OgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIExpc3RJdGVtUm9sZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UG9wVXBCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0
dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW86Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAgICAgICAgIC8vIENoZWNrIGlm
IHRoZSBhdXRob3IgaXMgaGlkaW5nIHRoZSByZWFsIGNvbnRyb2wgZWxlbWVudCBpbnNpZGUgdGhl
IEFSSUEgZWxlbWVudC4KICAgICAgICAgaWYgKEVsZW1lbnQqIG5hdGl2ZUVsZW1lbnQgPSBuYXRp
dmVBY3Rpb25FbGVtZW50KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUVsZW1lbnQ7
CkBAIC0xMDY2LDcgKzEwNjEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0Rl
c2NlbmRhCiAKIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVyU2xpZGVyVmFsdWUo
Ym9vbCBpbmNyZWFzZSkKIHsKLSAgICBpZiAocm9sZVZhbHVlKCkgIT0gU2xpZGVyUm9sZSkKKyAg
ICBpZiAocm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFnZXRBdHRyaWJ1dGUoc3RlcEF0dHIpLmlzRW1wdHkoKSkKQEAg
LTExMjUsMTEgKzExMjAsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5l
cmljRgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSA9IHJvbGVWYWx1ZSgpOwotICAgIGlmIChyb2xlID09IFZpZGVvUm9sZSB8fCByb2xlID09
IEF1ZGlvUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VmlkZW8gfHwg
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVkaW8pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIElmIGl0IGhhcyBhbiBhcmlhIHJvbGUsIGl0J3Mgbm90IGdlbmVyaWMuCi0gICAg
aWYgKG1fYXJpYVJvbGUgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKG1fYXJpYVJvbGUgIT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IElmIHRoZSBjb250ZW50IGVkaXRhYmxlIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhpcyBlbGVtZW50
LCB0aGF0J3MgdGhlIHJlYXNvbgpAQCAtMTE0MSwxNCArMTEzNiwxNCBAQCBib29sIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc0dlbmVyaWNGCiAKICAgICAvLyBUaGUgd2ViIGFyZWEgYW5kIGJv
ZHkgZWxlbWVudCBhcmUgYm90aCBmb2N1c2FibGUsIGJ1dCBleGlzdGluZyBsb2dpYyBoYW5kbGVz
IHRoZXNlCiAgICAgLy8gY2FzZXMgYWxyZWFkeSwgc28gd2UgZG9uJ3QgbmVlZCB0byBpbmNsdWRl
IHRoZW0gaGVyZS4KLSAgICBpZiAocm9sZSA9PSBXZWJBcmVhUm9sZSkKKyAgICBpZiAocm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBBbiBTVkcgcm9vdCBpcyBmb2N1c2FibGUgYnkgZGVmYXVsdCwg
YnV0IGl0J3MgcHJvYmFibHkgbm90IGludGVyYWN0aXZlLCBzbyBkb24ndAogICAgIC8vIGluY2x1
ZGUgaXQuIEl0IGNhbiBzdGlsbCBiZSBtYWRlIGFjY2Vzc2libGUgYnkgZ2l2aW5nIGl0IGFuIEFS
SUEgcm9sZS4KLSAgICBpZiAocm9sZSA9PSBTVkdSb290Um9sZSkKKyAgICBpZiAocm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9vdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuIHRydWU7CkBAIC0xMTk5LDcgKzExOTQsNyBAQCBzdGF0aWMgRWxlbWVudCogc2libGlu
Z1dpdGhBcmlhUm9sZShOb2RlCiAKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpt
ZW51RWxlbWVudEZvck1lbnVCdXR0b24oKSBjb25zdAogewotICAgIGlmIChhcmlhUm9sZUF0dHJp
YnV0ZSgpICE9IE1lbnVCdXR0b25Sb2xlKQorICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHJldHVybiBzaWJsaW5nV2l0aEFyaWFSb2xlKG5vZGUoKSwgIm1lbnUiKTsKQEAgLTEy
MTQsNyArMTIwOSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2IK
IAogRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1lbnVJdGVtRWxlbWVudEZvck1l
bnUoKSBjb25zdAogewotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IE1lbnVSb2xlKQor
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gc2libGluZ1dpdGhBcmlh
Um9sZShub2RlKCksICJtZW51aXRlbSIpOwpAQCAtMTI5OCwxNSArMTI5MywxNSBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1lCiAgICAgICAgICAgICBTdHJpbmcgaW5u
ZXJUZXh0ID0gdGV4dEZvckxhYmVsRWxlbWVudChsYWJlbCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIC8vIE9ubHkgdXNlIHRoZSA8bGFiZWw+IHRleHQgaWYgdGhlcmUncyBubyBBUklBIG92
ZXJyaWRlLgotICAgICAgICAgICAgaWYgKCFpbm5lclRleHQuaXNFbXB0eSgpICYmICFhcmlhQWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVu
ZChBY2Nlc3NpYmlsaXR5VGV4dChpbm5lclRleHQsIGlzTWV0ZXIoKSA/IEFsdGVybmF0aXZlVGV4
dCA6IExhYmVsQnlFbGVtZW50VGV4dCwgbGFiZWxPYmplY3QpKTsKKyAgICAgICAgICAgIGlmIChs
YWJlbE9iamVjdCAmJiAhaW5uZXJUZXh0LmlzRW1wdHkoKSAmJiAhYXJpYUFjY2Vzc2liaWxpdHlE
ZXNjcmlwdGlvbigpKQorICAgICAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJp
bGl0eVRleHQoaW5uZXJUZXh0LCBpc01ldGVyKCkgPyBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
QWx0ZXJuYXRpdmUgOiBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQsICps
YWJlbE9iamVjdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50ID0gdGhpcy0+dGl0bGVV
SUVsZW1lbnQoKTsKICAgICBpZiAodGl0bGVVSUVsZW1lbnQpCi0gICAgICAgIHRleHRPcmRlci5h
cHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoU3RyaW5nKCksIExhYmVsQnlFbGVtZW50VGV4dCwgdGl0
bGVVSUVsZW1lbnQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChTdHJpbmcoKSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkxhYmVsQnlFbGVtZW50LCAqdGl0
bGVVSUVsZW1lbnQpKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJu
YXRpdmVUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRlcikgY29uc3QKQEAg
LTEzMTQsNyArMTMwOSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0
aXYKICAgICBpZiAoaXNXZWJBcmVhKCkpIHsKICAgICAgICAgU3RyaW5nIHdlYkFyZWFUZXh0ID0g
YWx0ZXJuYXRpdmVUZXh0Rm9yV2ViQXJlYSgpOwogICAgICAgICBpZiAoIXdlYkFyZWFUZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQo
d2ViQXJlYVRleHQsIEFsdGVybmF0aXZlVGV4dCkpOworICAgICAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh3ZWJBcmVhVGV4dCwgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2U6OkFsdGVybmF0aXZlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xMzIy
LDcgKzEzMTcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2CiAg
ICAgCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhTGFiZWwgPSBnZXRBdHRyaWJ1dGUoYXJp
YV9sYWJlbEF0dHIpOwogICAgIGlmICghYXJpYUxhYmVsLmlzRW1wdHkoKSkKLSAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWwsIEFsdGVybmF0aXZlVGV4
dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFyaWFMYWJl
bCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAgICAgCiAgICAgaWYg
KHVzZXNBbHRUYWdGb3JUZXh0Q29tcHV0YXRpb24oKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVy
SW1hZ2U+KHJlbmRlcmVyKCkpKSB7CkBAIC0xMzMwLDcgKzEzMjUsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2CiAKICAgICAgICAgICAgIC8vIFJlbmRlckltYWdl
IHdpbGwgcmV0dXJuIHRpdGxlIGFzIGEgZmFsbGJhY2sgZnJvbSBhbHRUZXh0LCBidXQgd2UgZG9u
J3Qgd2FudCB0aXRsZSBoZXJlIGJlY2F1c2Ugd2UgY29uc2lkZXIgdGhhdCBpbiBoZWxwVGV4dC4K
ICAgICAgICAgICAgIGlmICghcmVuZGVyQWx0VGV4dC5pc0VtcHR5KCkgJiYgcmVuZGVyQWx0VGV4
dCAhPSBnZXRBdHRyaWJ1dGUodGl0bGVBdHRyKSkgewotICAgICAgICAgICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQocmVuZGVyQWx0VGV4dCwgQWx0ZXJuYXRpdmVUZXh0
KSk7CisgICAgICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChy
ZW5kZXJBbHRUZXh0LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEzMzgs
NyArMTMzMyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKICAg
ICAgICAgLy8gT3RoZXJ3aXNlLCBpdCBzaG91bGQgZmFsbGJhY2sgdG8gb3RoZXIgbWV0aG9kcywg
bGlrZSB0aGUgdGl0bGUgYXR0cmlidXRlLgogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFs
dCA9IGdldEF0dHJpYnV0ZShhbHRBdHRyKTsKICAgICAgICAgaWYgKCFhbHQuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhbHQsIEFsdGVy
bmF0aXZlVGV4dCkpOworICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dChhbHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAgIH0K
ICAgICAKICAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwpAQCAtMTM0OSwyMyArMTM0NCwy
MyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2CiAgICAgaWYgKGlz
PEhUTUxGaWVsZFNldEVsZW1lbnQ+KCpub2RlKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGRvd25jYXN0PEhUTUxG
aWVsZFNldEVsZW1lbnQ+KCpub2RlKS5sZWdlbmQoKSk7CiAgICAgICAgIGlmIChvYmplY3QgJiYg
IW9iamVjdC0+aXNIaWRkZW4oKSkKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNz
aWJpbGl0eVRleHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG9iamVjdC0+bm9kZSgpKSwgQWx0ZXJu
YXRpdmVUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlU
ZXh0KGFjY2Vzc2libGVOYW1lRm9yTm9kZShvYmplY3QtPm5vZGUoKSksIEFjY2Vzc2liaWxpdHlU
ZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAgIH0KICAgICAKICAgICAvLyBUaGUgZmlndXJl
IGVsZW1lbnQgZGVyaXZlcyBpdHMgYWx0ZXJuYXRpdmUgdGV4dCBmcm9tIHRoZSBmaXJzdCBhc3Nv
Y2lhdGVkIGZpZ2NhcHRpb24gZWxlbWVudCBpZiBvbmUgaXMgYXZhaWxhYmxlLgogICAgIGlmIChp
c0ZpZ3VyZUVsZW1lbnQoKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjYXB0aW9u
Rm9yRmlndXJlID0gdGhpcy0+Y2FwdGlvbkZvckZpZ3VyZSgpOwogICAgICAgICBpZiAoY2FwdGlv
bkZvckZpZ3VyZSAmJiAhY2FwdGlvbkZvckZpZ3VyZS0+aXNIaWRkZW4oKSkKLSAgICAgICAgICAg
IHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJsZU5hbWVGb3JOb2Rl
KGNhcHRpb25Gb3JGaWd1cmUtPm5vZGUoKSksIEFsdGVybmF0aXZlVGV4dCkpOworICAgICAgICAg
ICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5v
ZGUoY2FwdGlvbkZvckZpZ3VyZS0+bm9kZSgpKSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFs
dGVybmF0aXZlKSk7CiAgICAgfQogICAgIAogICAgIC8vIFRyZWUgaXRlbXMgbWlzc2luZyBhIGxh
YmVsIGFyZSBsYWJlbGVkIGJ5IGFsbCBjaGlsZCBlbGVtZW50cy4KICAgICBpZiAoaXNUcmVlSXRl
bSgpICYmIGFyaWFMYWJlbC5pc0VtcHR5KCkgJiYgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpLmlz
RW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY2Nl
c3NpYmxlTmFtZUZvck5vZGUobm9kZSksIEFsdGVybmF0aXZlVGV4dCkpOworICAgICAgICB0ZXh0
T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2libGVOYW1lRm9yTm9kZShub2Rl
KSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAgICAgCiAjaWYgRU5B
QkxFKE1BVEhNTCkKICAgICBpZiAobm9kZS0+aXNNYXRoTUxFbGVtZW50KCkpCi0gICAgICAgIHRl
eHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVz
OjphbHR0ZXh0QXR0ciksIEFsdGVybmF0aXZlVGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBw
ZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6YWx0dGV4dEF0
dHIpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICNlbmRpZgogfQog
CkBAIC0xMzc5LDcgKzEzNzQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2aXNp
YmxlVGV4CiAgICAgaWYgKGlzSW5wdXRUYWcpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYg
aW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIGlmIChp
bnB1dC5pc1RleHRCdXR0b24oKSkgewotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nl
c3NpYmlsaXR5VGV4dChpbnB1dC52YWx1ZVdpdGhEZWZhdWx0KCksIFZpc2libGVUZXh0KSk7Cisg
ICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGlucHV0LnZhbHVl
V2l0aERlZmF1bHQoKSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlZpc2libGUpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTEzOTEsMjYgKzEzODYsMjYgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmlzaWJsZVRleAogICAgIGJvb2wgdXNlVGV4
dFVuZGVyRWxlbWVudCA9IGZhbHNlOwogICAgIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsK
LSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQ
b3BVcEJ1dHRvbjoKICAgICAgICAgLy8gTmF0aXZlIHBvcHVwIGJ1dHRvbnMgc2hvdWxkIG5vdCB1
c2UgdGhlaXIgYnV0dG9uIGNoaWxkcmVuJ3MgdGV4dCBhcyBhIHRpdGxlLiBUaGF0IHZhbHVlIGlz
IHJldHJpZXZlZCB0aHJvdWdoIHN0cmluZ1ZhbHVlKCkuCiAgICAgICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKHNlbGVjdFRhZykpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgRkFMTFRIUk9V
R0g7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKLSAg
ICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpUb2dnbGVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKICAgICAvLyBNYWNPUyBk
b2VzIG5vdCBleHBlY3QgbmF0aXZlIDxsaT4gZWxlbWVudHMgdG8gZXhwb3NlIGxhYmVsIGluZm9y
bWF0aW9uLCBpdCBvbmx5IGV4cGVjdHMgbGVhZiBub2RlIGVsZW1lbnRzIHRvIGRvIHRoYXQuCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQotICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgogI2VuZGlmCi0gICAgY2FzZSBNZW51QnV0dG9uUm9s
ZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xl
OgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6
Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgotICAgIGNhc2UgVGFiUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpT
d2l0Y2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgogICAgICAgICB1c2VUZXh0
VW5kZXJFbGVtZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE0
MzQsNyArMTQyOSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2libGVUZXgK
IAogICAgICAgICBTdHJpbmcgdGV4dCA9IHRleHRVbmRlckVsZW1lbnQobW9kZSk7CiAgICAgICAg
IGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vz
c2liaWxpdHlUZXh0KHRleHQsIENoaWxkcmVuVGV4dCkpOworICAgICAgICAgICAgdGV4dE9yZGVy
LmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0ZXh0LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
Q2hpbGRyZW4pKTsKICAgICB9CiB9CiAKQEAgLTE0NDIsMjggKzE0MzcsMjggQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVscFRleHQoVgogewogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXJpYUhlbHAgPSBnZXRBdHRyaWJ1dGUoYXJpYV9oZWxwQXR0cik7CiAgICAgaWYgKCFhcmlh
SGVscC5pc0VtcHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQoYXJpYUhlbHAsIEhlbHBUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNz
aWJpbGl0eVRleHQoYXJpYUhlbHAsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwKSk7CiAg
ICAgCiAgICAgU3RyaW5nIGRlc2NyaWJlZEJ5ID0gYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCk7
CiAgICAgaWYgKCFkZXNjcmliZWRCeS5pc0VtcHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBl
bmQoQWNjZXNzaWJpbGl0eVRleHQoZGVzY3JpYmVkQnksIFN1bW1hcnlUZXh0KSk7CisgICAgICAg
IHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoZGVzY3JpYmVkQnksIEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpTdW1tYXJ5KSk7CiAKICAgICAvLyBTdW1tYXJ5IGF0dHJpYnV0ZSB1
c2VkIGFzIGhlbHAgdGV4dCBvbiB0YWJsZXMuCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdW1t
YXJ5ID0gZ2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsKICAgICBpZiAoIXN1bW1hcnkuaXNFbXB0
eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHN1bW1hcnks
IFN1bW1hcnlUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQoc3VtbWFyeSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpKTsKIAogICAgIC8v
IFRoZSB0aXRsZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIHVzZWQgYXMgaGVscCB0ZXh0IHVubGVzcyBp
dCBpcyBhbHJlYWR5IGJlaW5nIHVzZWQgYXMgZGVzY3JpcHRpdmUgdGV4dC4KICAgICAvLyBIb3dl
dmVyLCB3aGVuIHRoZSB0aXRsZSBhdHRyaWJ1dGUgaXMgdGhlIG9ubHkgdGV4dCBhbHRlcm5hdGl2
ZSBwcm92aWRlZCwgaXQgbWF5IGJlIGV4cG9zZWQgYXMgdGhlCiAgICAgLy8gZGVzY3JpcHRpdmUg
dGV4dC4gVGhpcyBpcyBwcm9ibGVtYXRpYyBpbiB0aGUgY2FzZSBvZiBtZXRlcnMgYmVjYXVzZSB0
aGUgSFRNTCBzcGVjIHN1Z2dlc3RzIGF1dGhvcnMKICAgICAvLyBjYW4gZXhwb3NlIHVuaXRzIHRo
cm91Z2ggdGhpcyBhdHRyaWJ1dGUuIFRoZXJlZm9yZSwgaWYgdGhlIGVsZW1lbnQgaXMgYSBtZXRl
ciwgY2hhbmdlIGl0cyBzb3VyY2UKLSAgICAvLyB0eXBlIHRvIEhlbHBUZXh0LgorICAgIC8vIHR5
cGUgdG8gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHAuCiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB0aXRsZSA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOwogICAgIGlmICghdGl0bGUuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGlmICghaXNNZXRlcigpICYmICFyb2xlSWdub3Jlc1RpdGxlKCkp
Ci0gICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlLCBU
aXRsZVRhZ1RleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZykpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRp
dGxlLCBIZWxwVGV4dCkpOworICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmls
aXR5VGV4dCh0aXRsZSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHApKTsKICAgICB9CiB9
CiAKQEAgLTE0NzYsNyArMTQ3MSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFj
Y2Vzc2liaWwKICAgICAKICAgICBTdHJpbmcgcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlclZhbHVl
KCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5h
cHBlbmQoQWNjZXNzaWJpbGl0eVRleHQocGxhY2Vob2xkZXIsIFBsYWNlaG9sZGVyVGV4dCkpOwor
ICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHBsYWNlaG9sZGVyLCBB
Y2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6UGxhY2Vob2xkZXIpKTsKIH0KICAgICAKIHZvaWQgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFyaWFMYWJlbGVkQnlUZXh0KFZlY3RvcjxBY2Nlc3NpYmls
aXR5VGV4dD4mIHRleHRPcmRlcikgY29uc3QKQEAgLTE0ODYsMTMgKzE0ODEsMTMgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZQogICAgICAgICBWZWN0b3I8RWxlbWVu
dCo+IGVsZW1lbnRzOwogICAgICAgICBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoZWxlbWVudHMpOwog
ICAgICAgICAKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gYXhF
bGVtZW50czsKKyAgICAgICAgVmVjdG9yPFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gYXhFbGVt
ZW50czsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBheEVsZW1lbnQgPSBheE9iamVj
dENhY2hlKCktPmdldE9yQ3JlYXRlKGVsZW1lbnQpOwotICAgICAgICAgICAgYXhFbGVtZW50cy5h
cHBlbmQoYXhFbGVtZW50KTsKKyAgICAgICAgICAgIGlmIChhdXRvIGF4RWxlbWVudCA9IGF4T2Jq
ZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpCisgICAgICAgICAgICAgICAgYXhFbGVt
ZW50cy5hcHBlbmQoKmF4RWxlbWVudCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHRl
eHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYXJpYUxhYmVsZWRCeSwgQWx0ZXJuYXRp
dmVUZXh0LCBXVEZNb3ZlKGF4RWxlbWVudHMpKSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQo
QWNjZXNzaWJpbGl0eVRleHQoYXJpYUxhYmVsZWRCeSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6
OkFsdGVybmF0aXZlLCBXVEZNb3ZlKGF4RWxlbWVudHMpKSk7CiAgICAgfQogfQogICAgIApAQCAt
MTU0MSw3ICsxNTM2LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5h
dAogU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRp
b24oKSBjb25zdAogewogICAgIC8vIFN0YXRpYyB0ZXh0IHNob3VsZCBub3QgaGF2ZSBhIGRlc2Ny
aXB0aW9uLCBpdCBzaG91bGQgb25seSBoYXZlIGEgc3RyaW5nVmFsdWUuCi0gICAgaWYgKHJvbGVW
YWx1ZSgpID09IFN0YXRpY1RleHRSb2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3RhdGljVGV4dCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAg
U3RyaW5nIGFyaWFEZXNjcmlwdGlvbiA9IGFyaWFBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKTsK
QEAgLTE1NzYsMTIgKzE1NzEsMTIgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojph
Y2Nlc3NpYgogLy8gYWNjZXNzaWJpbGl0eSBoaWVyYXJjaHkuIFRoaXMgYXBwbGllcyB0byBnZW5l
cmljIGdyb3VwcyBsaWtlIDxkaXY+J3Mgd2l0aCBubyByb2xlIHZhbHVlIHNldC4KIGJvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnJvbGVJZ25vcmVzVGl0bGUoKSBjb25zdAogewotICAgIGlm
IChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlKQorICAgIGlmIChhcmlhUm9sZUF0
dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBEaXZSb2xlOgot
ICAgIGNhc2UgVW5rbm93blJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGl2Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd246CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2MTksNyArMTYxNCw3
IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGVscFRleHQKICAgICAgICAgLy8g
T25seSB0YWtlIGhlbHAgdGV4dCBmcm9tIGFuIGFuY2VzdG9yIGVsZW1lbnQgaWYgaXRzIGEgZ3Jv
dXAgb3IgYW4gdW5rbm93biByb2xlLiBJZiBoZWxwIHdhcyAKICAgICAgICAgLy8gYWRkZWQgdG8g
dGhvc2Uga2luZHMgb2YgZWxlbWVudHMsIGl0IGlzIGxpa2VseSBpdCB3YXMgbWVhbnQgZm9yIGEg
Y2hpbGQgZWxlbWVudC4KICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqID0g
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShhbmNlc3RvcikpIHsKLSAgICAgICAgICAgIGlm
ICghYXhPYmotPmlzR3JvdXAoKSAmJiBheE9iai0+cm9sZVZhbHVlKCkgIT0gVW5rbm93blJvbGUp
CisgICAgICAgICAgICBpZiAoIWF4T2JqLT5pc0dyb3VwKCkgJiYgYXhPYmotPnJvbGVWYWx1ZSgp
ICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTYzOCw3ICsxNjMzLDcgQEAgdW5zaWduZWQgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmhpZXJhcgogICAgICAgICByZXR1cm4gYXJpYUxldmVsLnRvSW50KCk7
CiAgICAgCiAgICAgLy8gT25seSB0cmVlIGl0ZW0gd2lsbCBjYWxjdWxhdGUgaXRzIGxldmVsIHRo
cm91Z2ggdGhlIERPTSBjdXJyZW50bHkuCi0gICAgaWYgKHJvbGVWYWx1ZSgpICE9IFRyZWVJdGVt
Um9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVt
KQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICAvLyBIaWVyYXJjaHkgbGV2ZWxpbmcgc3Rh
cnRzIGF0IDEsIHRvIG1hdGNoIHRoZSBhcmlhLWxldmVsIHNwZWMuCkBAIC0xNjQ2LDkgKzE2NDEs
OSBAQCB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGllcmFyCiAgICAgdW5zaWdu
ZWQgbGV2ZWwgPSAxOwogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewog
ICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBwYXJlbnRSb2xlID0gcGFyZW50LT5hcmlhUm9sZUF0
dHJpYnV0ZSgpOwotICAgICAgICBpZiAocGFyZW50Um9sZSA9PSBBcHBsaWNhdGlvbkdyb3VwUm9s
ZSkKKyAgICAgICAgaWYgKHBhcmVudFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uR3JvdXApCiAgICAgICAgICAgICBsZXZlbCsrOwotICAgICAgICBlbHNlIGlmIChwYXJlbnRS
b2xlID09IFRyZWVSb2xlKQorICAgICAgICBlbHNlIGlmIChwYXJlbnRSb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIApAQCAtMTgw
NSwyNiArMTgwMCwyNiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlKCkg
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsK
LSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQ
b3BVcEJ1dHRvbjoKICAgICAgICAgLy8gTmF0aXZlIHBvcHVwIGJ1dHRvbnMgc2hvdWxkIG5vdCB1
c2UgdGhlaXIgYnV0dG9uIGNoaWxkcmVuJ3MgdGV4dCBhcyBhIHRpdGxlLiBUaGF0IHZhbHVlIGlz
IHJldHJpZXZlZCB0aHJvdWdoIHN0cmluZ1ZhbHVlKCkuCiAgICAgICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKHNlbGVjdFRhZykpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAg
IEZBTExUSFJPVUdIOwotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFRvZ2dsZUJ1dHRv
blJvbGU6Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9s
ZToKLSAgICBjYXNlIExpc3RJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVCdXR0b25Sb2xlOgotICAg
IGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6Ci0gICAg
Y2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBj
YXNlIFN3aXRjaFJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Ok1lbnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0
ZW1SYWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGFiOgogICAgICAgICByZXR1cm4gdGV4dFVuZGVyRWxlbWVudCgpOwogICAgIC8vIFNWR1Jv
b3RzIHNob3VsZCBub3QgdXNlIHRoZSB0ZXh0IHVuZGVyIGl0c2VsZiBhcyBhIHRpdGxlLiBUaGF0
IGNvdWxkIGluY2x1ZGUgdGhlIHRleHQgb2Ygb2JqZWN0cyBsaWtlIDx0ZXh0Pi4KLSAgICBjYXNl
IFNWR1Jvb3RSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1Jvb3Q6CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTE4
NDEsNyArMTgzNiw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGUoKSAK
IFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dCgpIGNvbnN0CiB7CiAgICAgLy8g
SWYgdGhpcyBpcyBhIHVzZXIgZGVmaW5lZCBzdGF0aWMgdGV4dCwgdXNlIHRoZSBhY2Nlc3NpYmxl
IG5hbWUgY29tcHV0YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBTdGF0aWNUZXh0Um9sZSkgeworICAgIGlm
IChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0KSB7
CiAgICAgICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4gdGV4dE9yZGVyOwogICAgICAgICBh
bHRlcm5hdGl2ZVRleHQodGV4dE9yZGVyKTsKICAgICAgICAgaWYgKHRleHRPcmRlci5zaXplKCkg
PiAwICYmIHRleHRPcmRlclswXS50ZXh0Lmxlbmd0aCgpKQpAQCAtMTg3MCw3ICsxODY1LDcgQEAg
U3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdHJpbmdWYQogICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkg
PT0gU3RhdGljVGV4dFJvbGUpIHsKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCkgewogICAgICAgICBTdHJpbmcgc3RhdGljVGV4dCA9
IHRleHQoKTsKICAgICAgICAgaWYgKCFzdGF0aWNUZXh0Lmxlbmd0aCgpKQogICAgICAgICAgICAg
c3RhdGljVGV4dCA9IHRleHRVbmRlckVsZW1lbnQoKTsKQEAgLTIxMjgsMzcgKzIxMjMsMzcgQEAg
QWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplYwogewogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgYXJpYVJvbGUgPSBnZXRBdHRyaWJ1dGUocm9sZUF0dHIpOwogICAgIGlmIChh
cmlhUm9sZS5pc051bGwoKSB8fCBhcmlhUm9sZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBV
bmtub3duUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwog
ICAgIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBhcmlhUm9sZVRvV2ViQ29yZVJvbGUo
YXJpYVJvbGUpOwogCiAgICAgLy8gQVJJQSBzdGF0ZXMgaWYgYW4gaXRlbSBjYW4gZ2V0IGZvY3Vz
LCBpdCBzaG91bGQgbm90IGJlIHByZXNlbnRhdGlvbmFsLgotICAgIGlmIChyb2xlID09IFByZXNl
bnRhdGlvbmFsUm9sZSAmJiBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4g
VW5rbm93blJvbGU7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRh
dGlvbmFsICYmIGNhblNldEZvY3VzQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6VW5rbm93bjsKIAotICAgIGlmIChyb2xlID09IEJ1dHRvblJvbGUpCisgICAg
aWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbikKICAgICAgICAgcm9sZSA9IGJ1
dHRvblJvbGVUeXBlKCk7CiAKLSAgICBpZiAocm9sZSA9PSBUZXh0QXJlYVJvbGUgJiYgIWFyaWFJ
c011bHRpbGluZSgpKQotICAgICAgICByb2xlID0gVGV4dEZpZWxkUm9sZTsKKyAgICBpZiAocm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgJiYgIWFyaWFJc011bHRpbGluZSgpKQor
ICAgICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZDsKIAogICAgIHJvbGUg
PSByZW1hcEFyaWFSb2xlRHVlVG9QYXJlbnQocm9sZSk7CiAgICAgCiAgICAgLy8gUHJlc2VudGF0
aW9uYWwgcm9sZXMgYXJlIGludmFsaWRhdGVkIGJ5IHRoZSBwcmVzZW5jZSBvZiBBUklBIGF0dHJp
YnV0ZXMuCi0gICAgaWYgKHJvbGUgPT0gUHJlc2VudGF0aW9uYWxSb2xlICYmIHN1cHBvcnRzQVJJ
QUF0dHJpYnV0ZXMoKSkKLSAgICAgICAgcm9sZSA9IFVua25vd25Sb2xlOworICAgIGlmIChyb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCAmJiBzdXBwb3J0c0FSSUFBdHRy
aWJ1dGVzKCkpCisgICAgICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKICAg
ICAKICAgICAvLyBUaGUgQVJJQSBzcGVjIHN0YXRlcywgIkF1dGhvcnMgbXVzdCBnaXZlIGVhY2gg
ZWxlbWVudCB3aXRoIHJvbGUgcmVnaW9uIGEgYnJpZWYgbGFiZWwgdGhhdAogICAgIC8vIGRlc2Ny
aWJlcyB0aGUgcHVycG9zZSBvZiB0aGUgY29udGVudCBpbiB0aGUgcmVnaW9uLiIgVGhlIENvcmUg
QUFNIHN0YXRlcywgIlNwZWNpYWwgY2FzZToKICAgICAvLyBpZiB0aGUgcmVnaW9uIGRvZXMgbm90
IGhhdmUgYW4gYWNjZXNzaWJsZSBuYW1lLCBkbyBub3QgZXhwb3NlIHRoZSBlbGVtZW50IGFzIGEg
bGFuZG1hcmsuCiAgICAgLy8gVXNlIHRoZSBuYXRpdmUgaG9zdCBsYW5ndWFnZSByb2xlIG9mIHRo
ZSBlbGVtZW50IGluc3RlYWQuIgotICAgIGlmIChyb2xlID09IExhbmRtYXJrUmVnaW9uUm9sZSAm
JiAhaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKSAmJiAhaGFzQXR0cmlidXRlKGFyaWFfbGFi
ZWxsZWRieUF0dHIpKQotICAgICAgICByb2xlID0gVW5rbm93blJvbGU7CisgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uICYmICFoYXNBdHRyaWJ1dGUoYXJp
YV9sYWJlbEF0dHIpICYmICFoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbGxlZGJ5QXR0cikpCisgICAg
ICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIAotICAgIGlmIChyb2xlKQor
ICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKQogICAgICAgICByZXR1cm4gcm9sZTsKIAot
ICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVu
a25vd247CiB9CiAKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojph
cmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0CkBAIC0yMTczLDIxICsyMTY4LDIxIEBAIEFjY2Vzc2li
aWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWMKICAgICAvLyBXaGlsZSBpbnNpZGUgdGhl
IGNhbGwgc3RhY2sgb2YgY3JlYXRpbmcgYW4gZWxlbWVudCwgd2UgbmVlZCB0byBhdm9pZCBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1MTc0CiAKLSAgICBpZiAocm9sZSAhPSBMaXN0Qm94T3B0aW9uUm9sZSAm
JiByb2xlICE9IE1lbnVJdGVtUm9sZSkKKyAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEJveE9wdGlvbiAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbSkK
ICAgICAgICAgcmV0dXJuIHJvbGU7CiAgICAgCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50ICYmICFwYXJlbnQtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKTsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAg
ICBBY2Nlc3NpYmlsaXR5Um9sZSBwYXJlbnRBcmlhUm9sZSA9IHBhcmVudC0+YXJpYVJvbGVBdHRy
aWJ1dGUoKTsKIAogICAgICAgICAvLyBTZWxlY3RzIGFuZCBsaXN0Ym94ZXMgYm90aCBoYXZlIG9w
dGlvbnMgYXMgY2hpbGQgcm9sZXMsIGJ1dCB0aGV5IG1hcCB0byBkaWZmZXJlbnQgcm9sZXMgd2l0
aGluIFdlYkNvcmUuCi0gICAgICAgIGlmIChyb2xlID09IExpc3RCb3hPcHRpb25Sb2xlICYmIHBh
cmVudEFyaWFSb2xlID09IE1lbnVSb2xlKQotICAgICAgICAgICAgcmV0dXJuIE1lbnVJdGVtUm9s
ZTsKKyAgICAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb24g
JiYgcGFyZW50QXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUpCisgICAgICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOwogICAgICAgICAvLyBBbiBhcmlh
ICJtZW51aXRlbSIgbWF5IG1hcCB0byBNZW51QnV0dG9uIG9yIE1lbnVJdGVtIGRlcGVuZGluZyBv
biBpdHMgcGFyZW50LgotICAgICAgICBpZiAocm9sZSA9PSBNZW51SXRlbVJvbGUgJiYgcGFyZW50
QXJpYVJvbGUgPT0gQXBwbGljYXRpb25Hcm91cFJvbGUpCi0gICAgICAgICAgICByZXR1cm4gTWVu
dUJ1dHRvblJvbGU7CisgICAgICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
SXRlbSAmJiBwYXJlbnRBcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25H
cm91cCkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjsK
ICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBwYXJlbnQgaGFkIGEgZGlmZmVyZW50IHJvbGUs
IHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjb250aW51ZSBzZWFyY2hpbmcgdXAgdGhlIGNoYWluLgot
ICAgICAgICBpZiAocGFyZW50QXJpYVJvbGUpCisgICAgICAgIGlmIChwYXJlbnRBcmlhUm9sZSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAKQEAgLTIxOTgsMTkgKzIxOTMsMTkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6Y2FuU2V0U2VsZQogewogICAgIC8vIEVsZW1lbnRzIHRoYXQgY2FuIGJlIHNlbGVjdGVkCiAg
ICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQ2VsbFJvbGU6Ci0gICAgY2FzZSBH
cmlkQ2VsbFJvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0gICAgY2FzZSBSb3dIZWFk
ZXJSb2xlOgotICAgIGNhc2UgUm93Um9sZToKLSAgICBjYXNlIFRhYkxpc3RSb2xlOgotICAgIGNh
c2UgVGFiUm9sZToKLSAgICBjYXNlIFRyZWVHcmlkUm9sZToKLSAgICBjYXNlIFRyZWVJdGVtUm9s
ZToKLSAgICBjYXNlIFRyZWVSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6Ci0g
ICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkdyaWRDZWxsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSb3c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VHJlZUdyaWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW06CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFk
aW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CiAgICAgICAgIHJldHVy
biBpc0VuYWJsZWQoKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwx
MCArMTQ0LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdChOb2RlKik7CiAKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX2FyaWFSb2xl
OwotICAgIG11dGFibGUgQWNjZXNzaWJpbGl0eVJvbGUgbV9yb2xlRm9yTVNBQTsKKyAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBtX2FyaWFSb2xlIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gfTsK
KyAgICBtdXRhYmxlIEFjY2Vzc2liaWxpdHlSb2xlIG1fcm9sZUZvck1TQUEgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6VW5rbm93biB9OwogI2lmbmRlZiBOREVCVUcKLSAgICBib29sIG1faW5pdGlhbGl6
ZWQ7CisgICAgYm9vbCBtX2luaXRpYWxpemVkIHsgZmFsc2UgfTsKICNlbmRpZgogCiAgICAgYm9v
bCBpc0RldGFjaGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbm9kZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwyMCArODQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlPYmplY3QoKQotICAgIDogbV9pZCgwKQot
ICAgICwgbV9oYXZlQ2hpbGRyZW4oZmFsc2UpCi0gICAgLCBtX3JvbGUoVW5rbm93blJvbGUpCi0g
ICAgLCBtX2xhc3RLbm93bklzSWdub3JlZFZhbHVlKERlZmF1bHRCZWhhdmlvcikKLSAgICAsIG1f
aXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnRE
YXRhKCkpCi0gICAgLCBtX2NoaWxkcmVuRGlydHkoZmFsc2UpCi0gICAgLCBtX3N1YnRyZWVEaXJ0
eShmYWxzZSkKLSNpZiBQTEFURk9STShHVEspCi0gICAgLCBtX3dyYXBwZXIobnVsbHB0cikKLSNl
bmRpZgotewotfQotCiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp+QWNjZXNzaWJpbGl0eU9iamVjdCgp
CiB7CiAgICAgQVNTRVJUKGlzRGV0YWNoZWQoKSk7CkBAIC0xMDYsNyArOTIsNyBAQCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojp+QWNjZXNzaWJpbGl0eU9iamVjCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgZGV0YWNobWVudFR5cGUsIEFY
T2JqZWN0Q2FjaGUqIGNhY2hlKQogewogICAgIC8vIE1lbnUgY2xvc2UgZXZlbnRzIG5lZWQgdG8g
bm90aWZ5IHRoZSBwbGF0Zm9ybS4gTm8gZWxlbWVudCBpcyB1c2VkIGluIHRoZSBub3RpZmljYXRp
b24gYmVjYXVzZSBpdCdzIGEgZGVzdHJ1Y3Rpb24gZXZlbnQuCi0gICAgaWYgKGRldGFjaG1lbnRU
eXBlID09IEVsZW1lbnREZXN0cm95ZWQgJiYgcm9sZVZhbHVlKCkgPT0gTWVudVJvbGUgJiYgY2Fj
aGUpCisgICAgaWYgKGRldGFjaG1lbnRUeXBlID09IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlw
ZTo6RWxlbWVudERlc3Ryb3llZCAmJiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudSAmJiBjYWNoZSkKICAgICAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24obnVsbHB0ciwg
JmNhY2hlLT5kb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVDbG9zZWQpOwogICAgIAog
ICAgIC8vIENsZWFyIGFueSBjaGlsZHJlbiBhbmQgY2FsbCBkZXRhY2hGcm9tUGFyZW50IG9uIHRo
ZW0gc28gdGhhdApAQCAtMTMwLDE0MiArMTE2LDE0MiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzRGV0YWNoZWQoKSBjCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJp
bGl0eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiBjcml0ZXJpYSwgc2l6ZV90IGluZGV4KQog
ewogICAgIHN3aXRjaCAoY3JpdGVyaWEtPnNlYXJjaEtleXNbaW5kZXhdKSB7Ci0gICAgLy8gVGhl
IEFueVR5cGVTZWFyY2hLZXkgbWF0Y2hlcyBhbnkgbm9uLW51bGwgQWNjZXNzaWJpbGl0eU9iamVj
dC4KLSAgICBjYXNlIEFueVR5cGVTZWFyY2hLZXk6CisgICAgLy8gVGhlIEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXk6OkFueVR5cGUgbWF0Y2hlcyBhbnkgbm9uLW51bGwgQWNjZXNzaWJpbGl0eU9iamVj
dC4KKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKLSAgICBjYXNlIEFydGljbGVTZWFyY2hLZXk6Ci0gICAgICAg
IHJldHVybiBheE9iamVjdC0+cm9sZVZhbHVlKCkgPT0gRG9jdW1lbnRBcnRpY2xlUm9sZTsKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFydGljbGU6CisgICAgICAgIHJldHVybiBh
eE9iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50QXJ0aWNs
ZTsKICAgICAgICAgICAgIAotICAgIGNhc2UgQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkJsb2NrcXVvdGVTYW1lTGV2ZWw6CiAg
ICAgICAgIHJldHVybiBjcml0ZXJpYS0+c3RhcnRPYmplY3QKICAgICAgICAgICAgICYmIGF4T2Jq
ZWN0LT5pc0Jsb2NrcXVvdGUoKQogICAgICAgICAgICAgJiYgYXhPYmplY3QtPmJsb2NrcXVvdGVM
ZXZlbCgpID09IGNyaXRlcmlhLT5zdGFydE9iamVjdC0+YmxvY2txdW90ZUxldmVsKCk7CiAgICAg
ICAgIAotICAgIGNhc2UgQmxvY2txdW90ZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OkJsb2NrcXVvdGU6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNCbG9j
a3F1b3RlKCk7CiAgICAgICAgIAotICAgIGNhc2UgQm9sZEZvbnRTZWFyY2hLZXk6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpCb2xkRm9udDoKICAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5oYXNCb2xkRm9udCgpOwogICAgICAgICAKLSAgICBjYXNlIEJ1dHRvblNlYXJjaEtleToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkJ1dHRvbjoKICAgICAgICAgcmV0dXJu
IGF4T2JqZWN0LT5pc0J1dHRvbigpOwogICAgICAgICAKLSAgICBjYXNlIENoZWNrQm94U2VhcmNo
S2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Q2hlY2tCb3g6CiAgICAgICAg
IHJldHVybiBheE9iamVjdC0+aXNDaGVja2JveCgpOwogICAgICAgICAKLSAgICBjYXNlIENvbnRy
b2xTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpDb250cm9sOgog
ICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzQ29udHJvbCgpOwogICAgICAgICAKLSAgICBjYXNl
IERpZmZlcmVudFR5cGVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
OjpEaWZmZXJlbnRUeXBlOgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0CiAg
ICAgICAgICAgICAmJiBheE9iamVjdC0+cm9sZVZhbHVlKCkgIT0gY3JpdGVyaWEtPnN0YXJ0T2Jq
ZWN0LT5yb2xlVmFsdWUoKTsKICAgICAgICAgCi0gICAgY2FzZSBGb250Q2hhbmdlU2VhcmNoS2V5
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Rm9udENoYW5nZToKICAgICAgICAg
cmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5o
YXNTYW1lRm9udChjcml0ZXJpYS0+c3RhcnRPYmplY3QtPnJlbmRlcmVyKCkpOwogICAgICAgICAK
LSAgICBjYXNlIEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OkZvbnRDb2xvckNoYW5nZToKICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLT5z
dGFydE9iamVjdAogICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5oYXNTYW1lRm9udENvbG9yKGNy
aXRlcmlhLT5zdGFydE9iamVjdC0+cmVuZGVyZXIoKSk7CiAgICAgICAgIAotICAgIGNhc2UgRnJh
bWVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpGcmFtZToKICAg
ICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1dlYkFyZWEoKTsKICAgICAgICAgCi0gICAgY2FzZSBH
cmFwaGljU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6R3JhcGhp
YzoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0ltYWdlKCk7CiAgICAgICAgIAotICAgIGNh
c2UgSGVhZGluZ0xldmVsMVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXk6OkhlYWRpbmdMZXZlbDE6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGVhZGluZ0xldmVs
KCkgPT0gMTsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsMjoKICAgICAgICAgcmV0
dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSAyOwogICAgICAgICAKLSAgICBjYXNlIEhl
YWRpbmdMZXZlbDNTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpI
ZWFkaW5nTGV2ZWwzOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09
IDM7CiAgICAgICAgIAotICAgIGNhc2UgSGVhZGluZ0xldmVsNFNlYXJjaEtleToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDQ6CiAgICAgICAgIHJldHVybiBh
eE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0gNDsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5n
TGV2ZWw1U2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGlu
Z0xldmVsNToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSA1Owog
ICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdMZXZlbDZTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWw2OgogICAgICAgICByZXR1cm4gYXhPYmpl
Y3QtPmhlYWRpbmdMZXZlbCgpID09IDY7CiAgICAgICAgIAotICAgIGNhc2UgSGVhZGluZ1NhbWVM
ZXZlbFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdT
YW1lTGV2ZWw6CiAgICAgICAgIHJldHVybiBjcml0ZXJpYS0+c3RhcnRPYmplY3QKICAgICAgICAg
ICAgICYmIGF4T2JqZWN0LT5pc0hlYWRpbmcoKQogICAgICAgICAgICAgJiYgYXhPYmplY3QtPmhl
YWRpbmdMZXZlbCgpID09IGNyaXRlcmlhLT5zdGFydE9iamVjdC0+aGVhZGluZ0xldmVsKCk7CiAg
ICAgICAgIAotICAgIGNhc2UgSGVhZGluZ1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OkhlYWRpbmc6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNIZWFkaW5n
KCk7CiAgICAgCi0gICAgY2FzZSBIaWdobGlnaHRlZFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkhpZ2hsaWdodGVkOgogICAgICAgICByZXR1cm4gYXhPYmplY3Qt
Pmhhc0hpZ2hsaWdodGluZygpOwogICAgICAgICAgICAgCi0gICAgY2FzZSBJdGFsaWNGb250U2Vh
cmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SXRhbGljRm9udDoKICAg
ICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oYXNJdGFsaWNGb250KCk7CiAgICAgICAgIAotICAgIGNh
c2UgTGFuZG1hcmtTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpM
YW5kbWFyazoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0xhbmRtYXJrKCk7CiAgICAgICAg
IAotICAgIGNhc2UgTGlua1NlYXJjaEtleTogeworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6TGluazogewogICAgICAgICBib29sIGlzTGluayA9IGF4T2JqZWN0LT5pc0xpbmsoKTsK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGlmICghaXNMaW5rKQotICAgICAgICAgICAgaXNM
aW5rID0gYXhPYmplY3QtPmlzRGVzY2VuZGFudE9mUm9sZShXZWJDb3JlTGlua1JvbGUpOworICAg
ICAgICAgICAgaXNMaW5rID0gYXhPYmplY3QtPmlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmls
aXR5Um9sZTo6V2ViQ29yZUxpbmspOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBpc0xpbms7CiAg
ICAgfQogICAgICAgICAKLSAgICBjYXNlIExpc3RTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpMaXN0OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzTGlzdCgp
OwogICAgICAgICAKLSAgICBjYXNlIExpdmVSZWdpb25TZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpMaXZlUmVnaW9uOgogICAgICAgICByZXR1cm4gYXhPYmplY3Qt
PnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKTsKICAgICAgICAgCi0gICAgY2FzZSBNaXNzcGVsbGVk
V29yZFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Ok1pc3NwZWxs
ZWRXb3JkOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhhc01pc3NwZWxsaW5nKCk7CiAgICAg
ICAgIAotICAgIGNhc2UgT3V0bGluZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXk6Ok91dGxpbmU6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNUcmVlKCk7CiAg
ICAgICAgIAotICAgIGNhc2UgUGxhaW5UZXh0U2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVNlYXJjaEtleTo6UGxhaW5UZXh0OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhhc1Bs
YWluVGV4dCgpOwogICAgICAgICAKLSAgICBjYXNlIFJhZGlvR3JvdXBTZWFyY2hLZXk6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpSYWRpb0dyb3VwOgogICAgICAgICByZXR1cm4g
YXhPYmplY3QtPmlzUmFkaW9Hcm91cCgpOwogICAgICAgICAKLSAgICBjYXNlIFNhbWVUeXBlU2Vh
cmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6U2FtZVR5cGU6CiAgICAg
ICAgIHJldHVybiBjcml0ZXJpYS0+c3RhcnRPYmplY3QKICAgICAgICAgICAgICYmIGF4T2JqZWN0
LT5yb2xlVmFsdWUoKSA9PSBjcml0ZXJpYS0+c3RhcnRPYmplY3QtPnJvbGVWYWx1ZSgpOwogICAg
ICAgICAKLSAgICBjYXNlIFN0YXRpY1RleHRTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpTdGF0aWNUZXh0OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzU3Rh
dGljVGV4dCgpOwogICAgICAgICAKLSAgICBjYXNlIFN0eWxlQ2hhbmdlU2VhcmNoS2V5OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6U3R5bGVDaGFuZ2U6CiAgICAgICAgIHJldHVy
biBjcml0ZXJpYS0+c3RhcnRPYmplY3QKICAgICAgICAgICAgICYmICFheE9iamVjdC0+aGFzU2Ft
ZVN0eWxlKGNyaXRlcmlhLT5zdGFydE9iamVjdC0+cmVuZGVyZXIoKSk7CiAgICAgICAgIAotICAg
IGNhc2UgVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpUYWJsZVNhbWVMZXZlbDoKICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9i
amVjdAogICAgICAgICAgICAgJiYgaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpICYm
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KS5pc0V4cG9zYWJsZVRocm91
Z2hBY2Nlc3NpYmlsaXR5KCkKICAgICAgICAgICAgICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZT4oKmF4T2JqZWN0KS50YWJsZUxldmVsKCkgPT0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT50
YWJsZUxldmVsKCk7CiAgICAgICAgIAotICAgIGNhc2UgVGFibGVTZWFyY2hLZXk6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpUYWJsZToKICAgICAgICAgcmV0dXJuIGlzPEFjY2Vz
c2liaWxpdHlUYWJsZT4oKmF4T2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpheE9iamVjdCkuaXNFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpOwogICAgICAgICAK
LSAgICBjYXNlIFRleHRGaWVsZFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk6OlRleHRGaWVsZDoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1RleHRDb250cm9s
KCk7CiAgICAgICAgIAotICAgIGNhc2UgVW5kZXJsaW5lU2VhcmNoS2V5OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleTo6VW5kZXJsaW5lOgogICAgICAgICByZXR1cm4gYXhPYmplY3Qt
Pmhhc1VuZGVybGluZSgpOwogICAgICAgICAKLSAgICBjYXNlIFVudmlzaXRlZExpbmtTZWFyY2hL
ZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpVbnZpc2l0ZWRMaW5rOgogICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPmlzVW52aXNpdGVkKCk7CiAgICAgICAgIAotICAgIGNhc2Ug
VmlzaXRlZExpbmtTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpW
aXNpdGVkTGluazoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1Zpc2l0ZWQoKTsKICAgICAg
ICAgCiAgICAgZGVmYXVsdDoKQEAgLTMxMiw1MSArMjk4LDUxIEBAIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YWNjZXNzaWJsZU5hbWUKIHsKICAgICAvLyBGaXJzdCBjaGVjayBmb3Igb2JqZWN0
cyBzcGVjaWZpY2FsbHkgaWRlbnRpZmllZCBieSBBUklBLgogICAgIHN3aXRjaCAoYXJpYVJvbGVB
dHRyaWJ1dGUoKSkgewotICAgIGNhc2UgQXBwbGljYXRpb25BbGVydFJvbGU6Ci0gICAgY2FzZSBB
cHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9s
ZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uR3JvdXBSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25M
b2dSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToKLSAgICBjYXNlIEFwcGxp
Y2F0aW9uU3RhdHVzUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xlOgotICAgIGNh
c2UgQ29tYm9Cb3hSb2xlOgotICAgIGNhc2UgRGVmaW5pdGlvblJvbGU6Ci0gICAgY2FzZSBEb2N1
bWVudFJvbGU6Ci0gICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgotICAgIGNhc2UgRG9jdW1l
bnRNYXRoUm9sZToKLSAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6Ci0gICAgY2FzZSBMYW5kbWFy
a1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0RvY1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBG
b3JtUm9sZToKLSAgICBjYXNlIEdyaWRSb2xlOgotICAgIGNhc2UgR3JvdXBSb2xlOgotICAgIGNh
c2UgSW1hZ2VSb2xlOgotICAgIGNhc2UgTGlzdFJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToK
LSAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKLSAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVu
dGFyeVJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZToKLSAgICBjYXNlIExh
bmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgotICAgIGNh
c2UgTGFuZG1hcmtTZWFyY2hSb2xlOgotICAgIGNhc2UgTWVudVJvbGU6Ci0gICAgY2FzZSBNZW51
QmFyUm9sZToKLSAgICBjYXNlIFByb2dyZXNzSW5kaWNhdG9yUm9sZToKLSAgICBjYXNlIFJhZGlv
R3JvdXBSb2xlOgotICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKLSAgICBjYXNlIFNsaWRlclJvbGU6
Ci0gICAgY2FzZSBTcGluQnV0dG9uUm9sZToKLSAgICBjYXNlIFNwbGl0dGVyUm9sZToKLSAgICBj
YXNlIFRhYmxlUm9sZToKLSAgICBjYXNlIFRhYkxpc3RSb2xlOgotICAgIGNhc2UgVGFiUGFuZWxS
b2xlOgotICAgIGNhc2UgVGV4dEFyZWFSb2xlOgotICAgIGNhc2UgVGV4dEZpZWxkUm9sZToKLSAg
ICBjYXNlIFRvb2xiYXJSb2xlOgotICAgIGNhc2UgVHJlZUdyaWRSb2xlOgotICAgIGNhc2UgVHJl
ZVJvbGU6Ci0gICAgY2FzZSBXZWJBcHBsaWNhdGlvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpB
cHBsaWNhdGlvbkFsZXJ0RGlhbG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uRGlhbG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3Jv
dXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkFwcGxpY2F0aW9uVGltZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9C
b3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVmaW5pdGlvbjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudEFydGljbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRo
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3Jt
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQ6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpMaXN0Qm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya01haW46CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtTZWFyY2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBy
b2dyZXNzSW5kaWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0
dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRhYmxlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxp
c3Q6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWw6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4
dEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VHJlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBsaWNhdGlvbjoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMzY0LDcg
KzM1MCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU5hbWUKICAgICAK
ICAgICAvLyBOb3cgY2hlY2sgZm9yIGdlbmVyaWNhbGx5IGRlcml2ZWQgZWxlbWVudHMgbm93IHRo
YXQgd2Uga25vdyB0aGUgZWxlbWVudCBkb2VzIG5vdCBtYXRjaCBhIHNwZWNpZmljIEFSSUEgcm9s
ZS4KICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBTbGlkZXJSb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMzg4LDE2ICszNzQsMTYgQEAgU3RyaW5n
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkTGFiZQogCiBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQmxvY2txdW90ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09
IEJsb2NrcXVvdGVSb2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6QmxvY2txdW90ZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1RleHRD
b250cm9sKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBD
b21ib0JveFJvbGU6Ci0gICAgY2FzZSBTZWFyY2hGaWVsZFJvbGU6Ci0gICAgY2FzZSBUZXh0QXJl
YVJvbGU6Ci0gICAgY2FzZSBUZXh0RmllbGRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlRleHRGaWVsZDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDA2LDcgKzM5Miw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNUZXh0Q29udHJvbCgKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNBUklBVGV4dENvbnRyb2woKSBjb25zdAogewotICAgIHJldHVybiBhcmlhUm9sZUF0dHJp
YnV0ZSgpID09IFRleHRBcmVhUm9sZSB8fCBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFRleHRGaWVs
ZFJvbGUgfHwgYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBTZWFyY2hGaWVsZFJvbGU7CisgICAgcmV0
dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhIHx8
IGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZCB8fCBh
cmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZDsKIH0K
IAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29u
c3QKQEAgLTQxOCwxNCArNDA0LDE0IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNMYW5k
bWFyaygpIGMKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVlKCk7CiAg
ICAgCi0gICAgcmV0dXJuIHJvbGUgPT0gTGFuZG1hcmtCYW5uZXJSb2xlCi0gICAgICAgIHx8IHJv
bGUgPT0gTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZQotICAgICAgICB8fCByb2xlID09IExhbmRt
YXJrQ29udGVudEluZm9Sb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTGFuZG1hcmtEb2NSZWdpb25S
b2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTGFuZG1hcmtNYWluUm9sZQotICAgICAgICB8fCByb2xl
ID09IExhbmRtYXJrTmF2aWdhdGlvblJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya1Jl
Z2lvblJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya1NlYXJjaFJvbGU7CisgICAgcmV0
dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyCisgICAgICAgIHx8
IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeQorICAgICAg
ICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvCisgICAg
ICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uCisgICAg
ICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbgorICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24KKyAgICAgICAg
fHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24KKyAgICAgICAgfHwg
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2g7CiB9CiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdApAQCAtNjc3LDcgKzY2Myw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZE1hdGNoaW5nT2IKICAgICBpZiAoIXN0
YXJ0T2JqZWN0KQogICAgICAgICBzdGFydE9iamVjdCA9IHRoaXM7CiAgICAgCi0gICAgYm9vbCBp
c0ZvcndhcmQgPSBjcml0ZXJpYS0+c2VhcmNoRGlyZWN0aW9uID09IFNlYXJjaERpcmVjdGlvbk5l
eHQ7CisgICAgYm9vbCBpc0ZvcndhcmQgPSBjcml0ZXJpYS0+c2VhcmNoRGlyZWN0aW9uID09IEFj
Y2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQ7CiAgICAgCiAgICAgLy8gVGhlIGZpcnN0
IGl0ZXJhdGlvbiBvZiB0aGUgb3V0ZXIgbG9vcCB3aWxsIGV4YW1pbmUgdGhlIGNoaWxkcmVuIG9m
IHRoZSBzdGFydCBvYmplY3QgZm9yIG1hdGNoZXMuIEhvd2V2ZXIsIHdoZW4KICAgICAvLyBpdGVy
YXRpbmcgYmFja3dhcmRzLCB0aGUgc3RhcnQgb2JqZWN0IGNoaWxkcmVuIHNob3VsZCBub3QgYmUg
Y29uc2lkZXJlZCwgc28gdGhlIGxvb3AgaXMgc2tpcHBlZCBhaGVhZC4gV2UgbWFrZSBhbgpAQCAt
NzYwLDcgKzc0Niw3IEBAIFJlZlB0cjxSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2UK
ICAgICBpZiAoIXJlZmVyZW5jZVJhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
LSAgICBib29sIGlzQmFja3dhcmRTZWFyY2ggPSBzZWFyY2hEaXJlY3Rpb24gPT0gU2VhcmNoRGly
ZWN0aW9uUHJldmlvdXM7CisgICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGlyZWN0
aW9uID09IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwogICAgIEZpbmRP
cHRpb25zIGZpbmRPcHRpb25zID0gQXRXb3JkU3RhcnRzIHwgQXRXb3JkRW5kcyB8IENhc2VJbnNl
bnNpdGl2ZSB8IFN0YXJ0SW5TZWxlY3Rpb247CiAgICAgaWYgKGlzQmFja3dhcmRTZWFyY2gpCiAg
ICAgICAgIGZpbmRPcHRpb25zIHw9IEJhY2t3YXJkczsKQEAgLTgzMiwxMSArODE4LDExIEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RUZXh0KEEKICAgICBSZWZQdHI8UmFuZ2U+
IGNsb3Nlc3RBZnRlclN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICBSZWZQdHI8UmFuZ2U+IGNs
b3Nlc3RCZWZvcmVTdHJpbmdSYW5nZSA9IG51bGxwdHI7CiAgICAgLy8gU2VhcmNoIGZvcndhcmQg
aWYgbmVjZXNzYXJ5LgotICAgIGlmIChhbWJpZ3VpdHlSZXNvbHV0aW9uID09IENsb3Nlc3RBZnRl
clNlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24gfHwgYW1iaWd1aXR5UmVzb2x1dGlvbiA9PSBD
bG9zZXN0VG9TZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uKQotICAgICAgICBjbG9zZXN0QWZ0
ZXJTdHJpbmdSYW5nZSA9IHJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uKHNl
bGVjdGVkU3RyaW5nUmFuZ2UuZ2V0KCksIFNlYXJjaERpcmVjdGlvbk5leHQsIHNlYXJjaFN0cmlu
Z3MpOworICAgIGlmIChhbWJpZ3VpdHlSZXNvbHV0aW9uID09IEFjY2Vzc2liaWxpdHlTZWxlY3RU
ZXh0QW1iaWd1aXR5UmVzb2x1dGlvbjo6Q2xvc2VzdEFmdGVyIHx8IGFtYmlndWl0eVJlc29sdXRp
b24gPT0gQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0
VG8pCisgICAgICAgIGNsb3Nlc3RBZnRlclN0cmluZ1JhbmdlID0gcmFuZ2VPZlN0cmluZ0Nsb3Nl
c3RUb1JhbmdlSW5EaXJlY3Rpb24oc2VsZWN0ZWRTdHJpbmdSYW5nZS5nZXQoKSwgQWNjZXNzaWJp
bGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dCwgc2VhcmNoU3RyaW5ncyk7CiAgICAgLy8gU2VhcmNo
IGJhY2t3YXJkIGlmIG5lY2Vzc2FyeS4KLSAgICBpZiAoYW1iaWd1aXR5UmVzb2x1dGlvbiA9PSBD
bG9zZXN0QmVmb3JlU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbiB8fCBhbWJpZ3VpdHlSZXNv
bHV0aW9uID09IENsb3Nlc3RUb1NlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24pCi0gICAgICAg
IGNsb3Nlc3RCZWZvcmVTdHJpbmdSYW5nZSA9IHJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUlu
RGlyZWN0aW9uKHNlbGVjdGVkU3RyaW5nUmFuZ2UuZ2V0KCksIFNlYXJjaERpcmVjdGlvblByZXZp
b3VzLCBzZWFyY2hTdHJpbmdzKTsKKyAgICBpZiAoYW1iaWd1aXR5UmVzb2x1dGlvbiA9PSBBY2Nl
c3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RCZWZvcmUgfHwg
YW1iaWd1aXR5UmVzb2x1dGlvbiA9PSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJl
c29sdXRpb246OkNsb3Nlc3RUbykKKyAgICAgICAgY2xvc2VzdEJlZm9yZVN0cmluZ1JhbmdlID0g
cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oc2VsZWN0ZWRTdHJpbmdSYW5n
ZS5nZXQoKSwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6UHJldmlvdXMsIHNlYXJjaFN0
cmluZ3MpOwogICAgIAogICAgIC8vIERldGVybWluZSB3aGljaCBjYW5kaWRhdGUgaXMgY2xvc2Vz
dCB0byB0aGUgc2VsZWN0aW9uIGFuZCBwZXJmb3JtIHRoZSBhY3Rpdml0eS4KICAgICBpZiAoUmVm
UHRyPFJhbmdlPiBjbG9zZXN0U3RyaW5nUmFuZ2UgPSByYW5nZUNsb3Nlc3RUb1JhbmdlKHNlbGVj
dGVkU3RyaW5nUmFuZ2UuZ2V0KCksIFdURk1vdmUoY2xvc2VzdEFmdGVyU3RyaW5nUmFuZ2UpLCBX
VEZNb3ZlKGNsb3Nlc3RCZWZvcmVTdHJpbmdSYW5nZSkpKSB7CkBAIC04NTAsMjAgKzgzNiwyMCBA
QCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0VGV4dChBCiAgICAgICAgIGJvb2wg
cmVwbGFjZVNlbGVjdGlvbiA9IGZhbHNlOwogICAgICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2UoY2xvc2VzdFN0cmluZ1JhbmdlLmdldCgpLCBET1dOU1RSRUFNLCB0
cnVlKSkgewogICAgICAgICAgICAgc3dpdGNoIChhY3Rpdml0eSkgewotICAgICAgICAgICAgY2Fz
ZSBGaW5kQW5kQ2FwaXRhbGl6ZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlbGVj
dFRleHRBY3Rpdml0eTo6RmluZEFuZENhcGl0YWxpemU6CiAgICAgICAgICAgICAgICAgcmVwbGFj
ZW1lbnRTdHJpbmcgPSBjbG9zZXN0U3RyaW5nOwogICAgICAgICAgICAgICAgIG1ha2VDYXBpdGFs
aXplZCgmcmVwbGFjZW1lbnRTdHJpbmcsIDApOwogICAgICAgICAgICAgICAgIHJlcGxhY2VTZWxl
Y3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBG
aW5kQW5kVXBwZXJjYXNlOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4
dEFjdGl2aXR5OjpGaW5kQW5kVXBwZXJjYXNlOgogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50
U3RyaW5nID0gY2xvc2VzdFN0cmluZy5jb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7
IC8vIEZJWE1FOiBOZWVkcyBsb2NhbGUgdG8gd29yayBjb3JyZWN0bHkuCiAgICAgICAgICAgICAg
ICAgcmVwbGFjZVNlbGVjdGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIEZpbmRBbmRMb3dlcmNhc2U6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRMb3dlcmNhc2U6CiAgICAgICAgICAgICAg
ICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjbG9zZXN0U3RyaW5nLmNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGUoKTsgLy8gRklYTUU6IE5lZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4K
ICAgICAgICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgRmluZEFuZFJlcGxhY2VBY3Rpdml0eTogeworICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5kUmVw
bGFjZTogewogICAgICAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb24gPSB0cnVlOwogICAgICAg
ICAgICAgICAgIC8vIFdoZW4gYXBwbHlpbmcgZmluZCBhbmQgcmVwbGFjZSBhY3Rpdml0aWVzLCB3
ZSB3YW50IHRvIG1hdGNoIHRoZSBjYXBpdGFsaXphdGlvbiBvZiB0aGUgcmVwbGFjZWQgdGV4dCwK
ICAgICAgICAgICAgICAgICAvLyAodW5sZXNzIHdlJ3JlIHJlcGxhY2luZyB3aXRoIGFuIGFiYnJl
dmlhdGlvbi4pCkBAIC04NzUsNyArODYxLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnNlbGVjdFRleHQoQQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgRmluZEFuZFNlbGVjdEFjdGl2aXR5Ogor
ICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5k
U2VsZWN0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC05MTIsMjQgKzg5OCwyMyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0F0
dHJpYnV0ZXNSCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQoQWNjZXNz
aWJpbGl0eVJvbGUgYXJpYVJvbGUpCiB7Ci0gICAgcmV0dXJuIGFyaWFSb2xlID09IFJhZGlvQnV0
dG9uUm9sZSB8fCBhcmlhUm9sZSA9PSBDaGVja0JveFJvbGUgfHwgYXJpYVJvbGUgPT0gVGV4dEZp
ZWxkUm9sZSB8fCBhcmlhUm9sZSA9PSBTd2l0Y2hSb2xlIHx8IGFyaWFSb2xlID09IFNlYXJjaEZp
ZWxkUm9sZTsKKyAgICByZXR1cm4gYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlv
QnV0dG9uIHx8IGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveCB8fCBhcmlh
Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkIHx8IGFyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTd2l0Y2ggfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNl
YXJjaEZpZWxkOwogfSAgICAKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklB
Q29udHJvbChBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSkKIHsKLSAgICByZXR1cm4gaXNBUklB
SW5wdXQoYXJpYVJvbGUpIHx8IGFyaWFSb2xlID09IFRleHRBcmVhUm9sZSB8fCBhcmlhUm9sZSA9
PSBCdXR0b25Sb2xlIAotICAgIHx8IGFyaWFSb2xlID09IENvbWJvQm94Um9sZSB8fCBhcmlhUm9s
ZSA9PSBTbGlkZXJSb2xlOyAKKyAgICByZXR1cm4gaXNBUklBSW5wdXQoYXJpYVJvbGUpIHx8IGFy
aWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSB8fCBhcmlhUm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QnV0dG9uIHx8IGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpD
b21ib0JveCB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOwogfQogICAg
IAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1JhbmdlQ29udHJvbCgpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xl
OgotICAgIGNhc2UgU2xpZGVyUm9sZToKLSAgICBjYXNlIFNjcm9sbEJhclJvbGU6Ci0gICAgY2Fz
ZSBTcGluQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0lu
ZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlNwaW5CdXR0b246CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgU3BsaXR0ZXJSb2xl
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOgogICAgICAgICByZXR1cm4g
Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xNDU5LDcgKzE0NDQsNyBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNzaWJpbGl0eU9i
amVjdDo6dmlzCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAKICAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzLgotICAgIElu
dFBvaW50IGNvcm5lciA9ICh2aXNpYmxlUG9zaXRpb25Gb3JCb3VuZHMgPT0gRmlyc3RWaXNpYmxl
UG9zaXRpb25Gb3JCb3VuZHMpID8gcmVjdC5taW5YTWluWUNvcm5lcigpIDogcmVjdC5tYXhYTWF4
WUNvcm5lcigpOworICAgIEludFBvaW50IGNvcm5lciA9ICh2aXNpYmxlUG9zaXRpb25Gb3JCb3Vu
ZHMgPT0gQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kczo6Rmlyc3QpID8gcmVj
dC5taW5YTWluWUNvcm5lcigpIDogcmVjdC5tYXhYTWF4WUNvcm5lcigpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbiA9IG1haW5GcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29y
bmVyKTsKICAgICAKICAgICBpZiAocmVjdC5jb250YWlucyhwb3NpdGlvbi5hYnNvbHV0ZUNhcmV0
Qm91bmRzKCkuY2VudGVyKCkpKQpAQCAtMTY1MiwyOSArMTYzNywyOSBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQVJlCiB7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9s
ZSA9IHJvbGVWYWx1ZSgpOwogCi0gICAgcmV0dXJuIHJvbGUgPT0gQ2hlY2tCb3hSb2xlCi0gICAg
ICAgIHx8IHJvbGUgPT0gQ29sdW1uSGVhZGVyUm9sZQotICAgICAgICB8fCByb2xlID09IENvbWJv
Qm94Um9sZQotICAgICAgICB8fCByb2xlID09IEdyaWRSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0g
R3JpZENlbGxSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTGlzdEJveFJvbGUKLSAgICAgICAgfHwg
cm9sZSA9PSBNZW51SXRlbUNoZWNrYm94Um9sZQotICAgICAgICB8fCByb2xlID09IE1lbnVJdGVt
UmFkaW9Sb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gUmFkaW9Hcm91cFJvbGUKLSAgICAgICAgfHwg
cm9sZSA9PSBSb3dIZWFkZXJSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gU2VhcmNoRmllbGRSb2xl
Ci0gICAgICAgIHx8IHJvbGUgPT0gU2xpZGVyUm9sZQotICAgICAgICB8fCByb2xlID09IFNwaW5C
dXR0b25Sb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gU3dpdGNoUm9sZQotICAgICAgICB8fCByb2xl
ID09IFRleHRGaWVsZFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBUcmVlR3JpZFJvbGUKKyAgICBy
ZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3gKKyAgICAgICAgfHwgcm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyCisgICAgICAgIHx8IHJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94CisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkdyaWQKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jp
ZENlbGwKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveAorICAg
ICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94CisgICAg
ICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW8KKyAgICAgICAg
fHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cAorICAgICAgICB8fCByb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXIKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6U2xpZGVyCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNw
aW5CdXR0b24KKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoCisg
ICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZAorICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZAogICAgICAgICB8fCBpc1Bhc3N3
b3JkRmllbGQoKTsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFSZWFkT25s
eVZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAoIWhhc0F0dHJpYnV0ZShhcmlhX3JlYWRvbmx5QXR0
cikpCi0gICAgICAgIHJldHVybiBhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlICYm
IHN1cHBvcnRzQVJJQVJlYWRPbmx5KCkgPyAiZmFsc2UiIDogU3RyaW5nKCk7CisgICAgICAgIHJl
dHVybiBhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYm
IHN1cHBvcnRzQVJJQVJlYWRPbmx5KCkgPyAiZmFsc2UiIDogU3RyaW5nKCk7CiAKICAgICByZXR1
cm4gZ2V0QXR0cmlidXRlKGFyaWFfcmVhZG9ubHlBdHRyKS5zdHJpbmcoKS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpOwogfQpAQCAtMTg5MSw3ICsxODc2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eU9iamVjdAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0
ID0gcmVuZGVyT2JqZWN0LT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
cmVuZGVyT2JqZWN0KTsKICAgICAKICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4oQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqYXhPYmplY3QsIHRy
dWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKLSAgICAgICAgcmV0
dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBIZWFkaW5nUm9sZTsKKyAgICAgICAgcmV0dXJuIG9i
amVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsKICAgICB9KSk7
CiB9CiAKQEAgLTE5MDksNyArMTg5NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJp
YVRyZWVSb3dzKEEKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkg
ewogICAgICAgICAvLyBBZGQgdHJlZSBpdGVtcyBhcyB0aGUgcm93cy4KLSAgICAgICAgaWYgKGNo
aWxkLT5yb2xlVmFsdWUoKSA9PSBUcmVlSXRlbVJvbGUpCisgICAgICAgIGlmIChjaGlsZC0+cm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtKQogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChjaGlsZCk7CiAKICAgICAgICAgLy8gTm93IHNlZSBpZiB0aGlzIGl0ZW0gYWxz
byBoYXMgcm93cyBoaWRpbmcgaW5zaWRlIG9mIGl0LgpAQCAtMTkyMSw3ICsxOTA2LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1DbwogewogICAgIC8vIFRoZSBBUklB
IHRyZWUgaXRlbSBjb250ZW50IGFyZSB0aGUgaXRlbSB0aGF0IGFyZSBub3Qgb3RoZXIgdHJlZSBp
dGVtcyBvciB0aGVpciBjb250YWluaW5nIGdyb3Vwcy4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkIDogY2hpbGRyZW4oKSkgewotICAgICAgICBpZiAoIWNoaWxkLT5pc0dyb3VwKCkgJiYgY2hp
bGQtPnJvbGVWYWx1ZSgpICE9IFRyZWVJdGVtUm9sZSkKKyAgICAgICAgaWYgKCFjaGlsZC0+aXNH
cm91cCgpICYmIGNoaWxkLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0
ZW0pCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkKTsKICAgICB9CiB9CkBAIC0xOTMw
LDcgKzE5MTUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURpCiB7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBvYmogOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIC8vIEFk
ZCB0cmVlIGl0ZW1zIGFzIHRoZSByb3dzLgotICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSA9
PSBUcmVlSXRlbVJvbGUpCisgICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlSXRlbSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQob2JqKTsKICAg
ICAgICAgLy8gSWYgaXQncyBub3QgYSB0cmVlIGl0ZW0sIHRoZW4gZGVzY2VuZCBpbnRvIHRoZSBn
cm91cCB0byBmaW5kIG1vcmUgdHJlZSBpdGVtcy4KICAgICAgICAgZWxzZSAKQEAgLTE5NDEsMTQg
KzE5MjYsMTQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1EaQogY29u
c3QgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9y
Um9sZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogewogICAgIHN3aXRjaCAocm9sZSkgewotICAg
IGNhc2UgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFs
ZXJ0Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlh
bG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6CiAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImFzc2VydGl2ZSIpOwotICAgIGNhc2UgQXBwbGljYXRp
b25Mb2dSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkFwcGxpY2F0aW9uU3RhdHVzOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJwb2xp
dGUiKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xlOgotICAgIGNhc2UgQXBwbGljYXRp
b25NYXJxdWVlUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRp
bWVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToKICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgib2ZmIik7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
cmV0dXJuIG51bGxBdG9tKCk7CkBAIC0xOTcxLDI1ICsxOTU2LDI1IEBAIGNvbnN0IFN0cmluZyYg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aW8KICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBsaXN0SXRlbUFjdGlvbihBWExpc3RJdGVtQWN0aW9uVmVyYigpKTsKIAogICAg
IHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBU
b2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CiAgICAgICAgIHJldHVybiBi
dXR0b25BY3Rpb247Ci0gICAgY2FzZSBUZXh0RmllbGRSb2xlOgotICAgIGNhc2UgVGV4dEFyZWFS
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZDoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKICAgICAgICAgcmV0dXJuIHRleHRGaWVsZEFjdGlv
bjsKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpSYWRpb0J1dHRvbjoKICAgICAgICAgcmV0dXJuIHJhZGlvQnV0dG9uQWN0aW9uOwotICAgIGNh
c2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgU3dpdGNoUm9sZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2g6
CiAgICAgICAgIHJldHVybiBpc0NoZWNrZWQoKSA/IGNoZWNrZWRDaGVja0JveEFjdGlvbiA6IHVu
Y2hlY2tlZENoZWNrQm94QWN0aW9uOwotICAgIGNhc2UgTGlua1JvbGU6Ci0gICAgY2FzZSBXZWJD
b3JlTGlua1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluazoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazoKICAgICAgICAgcmV0dXJuIGxpbmtBY3Rp
b247Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UG9wVXBCdXR0b246CiAgICAgICAgIHJldHVybiBtZW51TGlzdEFjdGlvbjsKLSAgICBjYXNl
IE1lbnVMaXN0UG9wdXBSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0
UG9wdXA6CiAgICAgICAgIHJldHVybiBtZW51TGlzdFBvcHVwQWN0aW9uOwotICAgIGNhc2UgTGlz
dEl0ZW1Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgogICAgICAg
ICByZXR1cm4gbGlzdEl0ZW1BY3Rpb247CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51
bGxBdG9tKCk7CkBAIC0yMDUyLDQwICsyMDM3LDQwIEBAIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVu
dFN0YXRlIEFjY2Vzc2liaWwKICAgICAKICAgICAvLyBJZiAiZmFsc2UiLCBlbXB0eSwgb3IgbWlz
c2luZywgcmV0dXJuIGZhbHNlIHN0YXRlLgogICAgIGlmIChjdXJyZW50U3RhdGVWYWx1ZS5pc0Vt
cHR5KCkgfHwgY3VycmVudFN0YXRlVmFsdWUgPT0gImZhbHNlIikKLSAgICAgICAgcmV0dXJuIEFS
SUFDdXJyZW50RmFsc2U7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRT
dGF0ZTo6RmFsc2U7CiAgICAgCiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09ICJwYWdlIikK
LSAgICAgICAgcmV0dXJuIEFSSUFDdXJyZW50UGFnZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlBUklBQ3VycmVudFN0YXRlOjpQYWdlOwogICAgIGlmIChjdXJyZW50U3RhdGVWYWx1ZSA9
PSAic3RlcCIpCi0gICAgICAgIHJldHVybiBBUklBQ3VycmVudFN0ZXA7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6U3RlcDsKICAgICBpZiAoY3VycmVudFN0
YXRlVmFsdWUgPT0gImxvY2F0aW9uIikKLSAgICAgICAgcmV0dXJuIEFSSUFDdXJyZW50TG9jYXRp
b247CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6TG9jYXRp
b247CiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09ICJkYXRlIikKLSAgICAgICAgcmV0dXJu
IEFSSUFDdXJyZW50RGF0ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVu
dFN0YXRlOjpEYXRlOwogICAgIGlmIChjdXJyZW50U3RhdGVWYWx1ZSA9PSAidGltZSIpCi0gICAg
ICAgIHJldHVybiBBUklBQ3VycmVudFRpbWU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
QVJJQUN1cnJlbnRTdGF0ZTo6VGltZTsKICAgICAKICAgICAvLyBBbnkgdmFsdWUgbm90IGluY2x1
ZGVkIGluIHRoZSBsaXN0IG9mIGFsbG93ZWQgdmFsdWVzIHNob3VsZCBiZSB0cmVhdGVkIGFzICJ0
cnVlIi4KLSAgICByZXR1cm4gQVJJQUN1cnJlbnRUcnVlOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5QVJJQUN1cnJlbnRTdGF0ZTo6VHJ1ZTsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFDdXJyZW50VmFsdWUoKSBjb25zdAogewogICAgIHN3aXRjaCAoYXJpYUN1cnJlbnRT
dGF0ZSgpKSB7Ci0gICAgY2FzZSBBUklBQ3VycmVudEZhbHNlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eUFSSUFDdXJyZW50U3RhdGU6OkZhbHNlOgogICAgICAgICByZXR1cm4gImZhbHNlIjsKLSAg
ICBjYXNlIEFSSUFDdXJyZW50UGFnZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVu
dFN0YXRlOjpQYWdlOgogICAgICAgICByZXR1cm4gInBhZ2UiOwotICAgIGNhc2UgQVJJQUN1cnJl
bnRTdGVwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlN0ZXA6CiAg
ICAgICAgIHJldHVybiAic3RlcCI7Ci0gICAgY2FzZSBBUklBQ3VycmVudExvY2F0aW9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkxvY2F0aW9uOgogICAgICAgICBy
ZXR1cm4gImxvY2F0aW9uIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50VGltZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpUaW1lOgogICAgICAgICByZXR1cm4gInRpbWUi
OwotICAgIGNhc2UgQVJJQUN1cnJlbnREYXRlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFD
dXJyZW50U3RhdGU6OkRhdGU6CiAgICAgICAgIHJldHVybiAiZGF0ZSI7CiAgICAgZGVmYXVsdDoK
LSAgICBjYXNlIEFSSUFDdXJyZW50VHJ1ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3Vy
cmVudFN0YXRlOjpUcnVlOgogICAgICAgICByZXR1cm4gInRydWUiOwogICAgIH0KIH0KQEAgLTIx
NjQsMTEgKzIxNDksMTEgQEAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlP
YgogewogICAgIExheW91dFJlY3QgYm91bmRzID0gZWxlbWVudFJlY3QoKTsKICAgICBpZiAoYm91
bmRzLnNpemUoKS53aWR0aCgpID4gYm91bmRzLnNpemUoKS5oZWlnaHQoKSkKLSAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAgaWYgKGJvdW5kcy5zaXpl
KCkuaGVpZ2h0KCkgPiBib3VuZHMuc2l6ZSgpLndpZHRoKCkpCi0gICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPcmllbnRhdGlvbjo6VmVydGljYWw7CiAKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uVW5kZWZpbmVkOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlVu
ZGVmaW5lZDsKIH0gICAgCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50
T2ZPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIGNvbnN0CkBAIC0y
MjE2LDExNyArMjIwMSwxMTcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJvbGVNYXAoKQogICAg
IEFTU0VSVCghZ0FyaWFSZXZlcnNlUm9sZU1hcCk7CiAKICAgICBjb25zdCBSb2xlRW50cnkgcm9s
ZXNbXSA9IHsKLSAgICAgICAgeyAiYWxlcnQiLCBBcHBsaWNhdGlvbkFsZXJ0Um9sZSB9LAotICAg
ICAgICB7ICJhbGVydGRpYWxvZyIsIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlIH0sCi0gICAg
ICAgIHsgImFwcGxpY2F0aW9uIiwgV2ViQXBwbGljYXRpb25Sb2xlIH0sCi0gICAgICAgIHsgImFy
dGljbGUiLCBEb2N1bWVudEFydGljbGVSb2xlIH0sCi0gICAgICAgIHsgImJhbm5lciIsIExhbmRt
YXJrQmFubmVyUm9sZSB9LAotICAgICAgICB7ICJidXR0b24iLCBCdXR0b25Sb2xlIH0sCi0gICAg
ICAgIHsgImNoZWNrYm94IiwgQ2hlY2tCb3hSb2xlIH0sCi0gICAgICAgIHsgImNvbXBsZW1lbnRh
cnkiLCBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlIH0sCi0gICAgICAgIHsgImNvbnRlbnRpbmZv
IiwgTGFuZG1hcmtDb250ZW50SW5mb1JvbGUgfSwKLSAgICAgICAgeyAiZGlhbG9nIiwgQXBwbGlj
YXRpb25EaWFsb2dSb2xlIH0sCi0gICAgICAgIHsgImRpcmVjdG9yeSIsIERpcmVjdG9yeVJvbGUg
fSwKKyAgICAgICAgeyAiYWxlcnQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVy
dCB9LAorICAgICAgICB7ICJhbGVydGRpYWxvZyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvbkFsZXJ0RGlhbG9nIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OldlYkFwcGxpY2F0aW9uIH0sCisgICAgICAgIHsgImFydGljbGUiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlIH0sCisgICAgICAgIHsgImJhbm5lciIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lciB9LAorICAgICAgICB7ICJidXR0b24iLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6QnV0dG9uIH0sCisgICAgICAgIHsgImNoZWNrYm94IiwgQWNjZXNzaWJpbGl0
eVJvbGU6OkNoZWNrQm94IH0sCisgICAgICAgIHsgImNvbXBsZW1lbnRhcnkiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5IH0sCisgICAgICAgIHsgImNvbnRlbnRpbmZv
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm8gfSwKKyAgICAgICAgeyAi
ZGlhbG9nIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nIH0sCisgICAgICAg
IHsgImRpcmVjdG9yeSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXJlY3RvcnkgfSwKICAgICAgICAg
Ly8gVGhlICdkb2MtKicgcm9sZXMgYXJlIGRlZmluZWQgdGhlIEFSSUEgRFBVQiBtb2JpbGU6IGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9kcHViLWFhbS0xLjAvIAogICAgICAgICAvLyBFZGl0b3IncyBk
cmFmdCBpcyBjdXJyZW50bHkgYXQgaHR0cHM6Ly9yYXdnaXQuY29tL3czYy9hcmlhL21hc3Rlci9k
cHViLWFhbS9kcHViLWFhbS5odG1sIAotICAgICAgICB7ICJkb2MtYWJzdHJhY3QiLCBBcHBsaWNh
dGlvblRleHRHcm91cFJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWFja25vd2xlZGdtZW50cyIsIExh
bmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtYWZ0ZXJ3b3JkIiwgTGFuZG1h
cmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1hcHBlbmRpeCIsIExhbmRtYXJrRG9j
UmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtYmFja2xpbmsiLCBXZWJDb3JlTGlua1JvbGUg
fSwKLSAgICAgICAgeyAiZG9jLWJpYmxpb2VudHJ5IiwgTGlzdEl0ZW1Sb2xlIH0sCi0gICAgICAg
IHsgImRvYy1iaWJsaW9ncmFwaHkiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAg
eyAiZG9jLWJpYmxpb3JlZiIsIFdlYkNvcmVMaW5rUm9sZSB9LAotICAgICAgICB7ICJkb2MtY2hh
cHRlciIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtY29sb3Bob24i
LCBBcHBsaWNhdGlvblRleHRHcm91cFJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWNvbmNsdXNpb24i
LCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWNvdmVyIiwgSW1hZ2VS
b2xlIH0sCi0gICAgICAgIHsgImRvYy1jcmVkaXQiLCBBcHBsaWNhdGlvblRleHRHcm91cFJvbGUg
fSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdHMiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAg
ICAgICAgeyAiZG9jLWRlZGljYXRpb24iLCBBcHBsaWNhdGlvblRleHRHcm91cFJvbGUgfSwKLSAg
ICAgICAgeyAiZG9jLWVuZG5vdGUiLCBMaXN0SXRlbVJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWVu
ZG5vdGVzIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1lcGlncmFw
aCIsIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtZXBpbG9ndWUi
LCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWVycmF0YSIsIExhbmRt
YXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtZXhhbXBsZSIsIEFwcGxpY2F0aW9u
VGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtZm9vdG5vdGUiLCBGb290bm90ZVJvbGUg
fSwKLSAgICAgICAgeyAiZG9jLWZvcmV3b3JkIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0g
ICAgICAgIHsgImRvYy1nbG9zc2FyeSIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAg
ICB7ICJkb2MtZ2xvc3NyZWYiLCBXZWJDb3JlTGlua1JvbGUgfSwKLSAgICAgICAgeyAiZG9jLWlu
ZGV4IiwgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtaW50cm9kdWN0
aW9uIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1ub3RlcmVmIiwg
V2ViQ29yZUxpbmtSb2xlIH0sCi0gICAgICAgIHsgImRvYy1ub3RpY2UiLCBEb2N1bWVudE5vdGVS
b2xlIH0sCi0gICAgICAgIHsgImRvYy1wYWdlYnJlYWsiLCBTcGxpdHRlclJvbGUgfSwKLSAgICAg
ICAgeyAiZG9jLXBhZ2VsaXN0IiwgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZSB9LAotICAgICAgICB7
ICJkb2MtcGFydCIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtcHJl
ZmFjZSIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtcHJvbG9ndWUi
LCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLXB1bGxxdW90ZSIsIEFw
cGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtcW5hIiwgQXBwbGljYXRp
b25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1zdWJ0aXRsZSIsIEhlYWRpbmdSb2xl
IH0sCi0gICAgICAgIHsgImRvYy10aXAiLCBEb2N1bWVudE5vdGVSb2xlIH0sCi0gICAgICAgIHsg
ImRvYy10b2MiLCBMYW5kbWFya05hdmlnYXRpb25Sb2xlIH0sCi0gICAgICAgIHsgImZpZ3VyZSIs
IEZpZ3VyZVJvbGUgfSwKLSAgICAgICAgeyAiZ3JpZCIsIEdyaWRSb2xlIH0sCi0gICAgICAgIHsg
ImdyaWRjZWxsIiwgR3JpZENlbGxSb2xlIH0sCi0gICAgICAgIHsgInRhYmxlIiwgVGFibGVSb2xl
IH0sCi0gICAgICAgIHsgImNlbGwiLCBDZWxsUm9sZSB9LAotICAgICAgICB7ICJjb2x1bW5oZWFk
ZXIiLCBDb2x1bW5IZWFkZXJSb2xlIH0sCi0gICAgICAgIHsgImNvbWJvYm94IiwgQ29tYm9Cb3hS
b2xlIH0sCi0gICAgICAgIHsgImRlZmluaXRpb24iLCBEZWZpbml0aW9uUm9sZSB9LAotICAgICAg
ICB7ICJkb2N1bWVudCIsIERvY3VtZW50Um9sZSB9LAotICAgICAgICB7ICJmZWVkIiwgRmVlZFJv
bGUgfSwKLSAgICAgICAgeyAiZm9ybSIsIEZvcm1Sb2xlIH0sCi0gICAgICAgIHsgInJvd2hlYWRl
ciIsIFJvd0hlYWRlclJvbGUgfSwKLSAgICAgICAgeyAiZ3JvdXAiLCBBcHBsaWNhdGlvbkdyb3Vw
Um9sZSB9LAotICAgICAgICB7ICJoZWFkaW5nIiwgSGVhZGluZ1JvbGUgfSwKLSAgICAgICAgeyAi
aW1nIiwgSW1hZ2VSb2xlIH0sCi0gICAgICAgIHsgImxpbmsiLCBXZWJDb3JlTGlua1JvbGUgfSwK
LSAgICAgICAgeyAibGlzdCIsIExpc3RSb2xlIH0sICAgICAgICAKLSAgICAgICAgeyAibGlzdGl0
ZW0iLCBMaXN0SXRlbVJvbGUgfSwgICAgICAgIAotICAgICAgICB7ICJsaXN0Ym94IiwgTGlzdEJv
eFJvbGUgfSwKLSAgICAgICAgeyAibG9nIiwgQXBwbGljYXRpb25Mb2dSb2xlIH0sCi0gICAgICAg
IHsgIm1haW4iLCBMYW5kbWFya01haW5Sb2xlIH0sCi0gICAgICAgIHsgIm1hcnF1ZWUiLCBBcHBs
aWNhdGlvbk1hcnF1ZWVSb2xlIH0sCi0gICAgICAgIHsgIm1hdGgiLCBEb2N1bWVudE1hdGhSb2xl
IH0sCi0gICAgICAgIHsgIm1lbnUiLCBNZW51Um9sZSB9LAotICAgICAgICB7ICJtZW51YmFyIiwg
TWVudUJhclJvbGUgfSwKLSAgICAgICAgeyAibWVudWl0ZW0iLCBNZW51SXRlbVJvbGUgfSwKLSAg
ICAgICAgeyAibWVudWl0ZW1jaGVja2JveCIsIE1lbnVJdGVtQ2hlY2tib3hSb2xlIH0sCi0gICAg
ICAgIHsgIm1lbnVpdGVtcmFkaW8iLCBNZW51SXRlbVJhZGlvUm9sZSB9LAotICAgICAgICB7ICJu
b25lIiwgUHJlc2VudGF0aW9uYWxSb2xlIH0sCi0gICAgICAgIHsgIm5vdGUiLCBEb2N1bWVudE5v
dGVSb2xlIH0sCi0gICAgICAgIHsgIm5hdmlnYXRpb24iLCBMYW5kbWFya05hdmlnYXRpb25Sb2xl
IH0sCi0gICAgICAgIHsgIm9wdGlvbiIsIExpc3RCb3hPcHRpb25Sb2xlIH0sCi0gICAgICAgIHsg
InByZXNlbnRhdGlvbiIsIFByZXNlbnRhdGlvbmFsUm9sZSB9LAotICAgICAgICB7ICJwcm9ncmVz
c2JhciIsIFByb2dyZXNzSW5kaWNhdG9yUm9sZSB9LAotICAgICAgICB7ICJyYWRpbyIsIFJhZGlv
QnV0dG9uUm9sZSB9LAotICAgICAgICB7ICJyYWRpb2dyb3VwIiwgUmFkaW9Hcm91cFJvbGUgfSwK
LSAgICAgICAgeyAicmVnaW9uIiwgTGFuZG1hcmtSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgInJv
dyIsIFJvd1JvbGUgfSwKLSAgICAgICAgeyAicm93Z3JvdXAiLCBSb3dHcm91cFJvbGUgfSwKLSAg
ICAgICAgeyAic2Nyb2xsYmFyIiwgU2Nyb2xsQmFyUm9sZSB9LAotICAgICAgICB7ICJzZWFyY2gi
LCBMYW5kbWFya1NlYXJjaFJvbGUgfSwKLSAgICAgICAgeyAic2VhcmNoYm94IiwgU2VhcmNoRmll
bGRSb2xlIH0sCi0gICAgICAgIHsgInNlcGFyYXRvciIsIFNwbGl0dGVyUm9sZSB9LAotICAgICAg
ICB7ICJzbGlkZXIiLCBTbGlkZXJSb2xlIH0sCi0gICAgICAgIHsgInNwaW5idXR0b24iLCBTcGlu
QnV0dG9uUm9sZSB9LAotICAgICAgICB7ICJzdGF0dXMiLCBBcHBsaWNhdGlvblN0YXR1c1JvbGUg
fSwKLSAgICAgICAgeyAic3dpdGNoIiwgU3dpdGNoUm9sZSB9LAotICAgICAgICB7ICJ0YWIiLCBU
YWJSb2xlIH0sCi0gICAgICAgIHsgInRhYmxpc3QiLCBUYWJMaXN0Um9sZSB9LAotICAgICAgICB7
ICJ0YWJwYW5lbCIsIFRhYlBhbmVsUm9sZSB9LAotICAgICAgICB7ICJ0ZXh0IiwgU3RhdGljVGV4
dFJvbGUgfSwKLSAgICAgICAgeyAidGV4dGJveCIsIFRleHRBcmVhUm9sZSB9LAotICAgICAgICB7
ICJ0ZXJtIiwgVGVybVJvbGUgfSwKLSAgICAgICAgeyAidGltZXIiLCBBcHBsaWNhdGlvblRpbWVy
Um9sZSB9LAotICAgICAgICB7ICJ0b29sYmFyIiwgVG9vbGJhclJvbGUgfSwKLSAgICAgICAgeyAi
dG9vbHRpcCIsIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZSB9LAotICAgICAgICB7ICJ0cmVlIiwg
VHJlZVJvbGUgfSwKLSAgICAgICAgeyAidHJlZWdyaWQiLCBUcmVlR3JpZFJvbGUgfSwKLSAgICAg
ICAgeyAidHJlZWl0ZW0iLCBUcmVlSXRlbVJvbGUgfQorICAgICAgICB7ICJkb2MtYWJzdHJhY3Qi
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAi
ZG9jLWFja25vd2xlZGdtZW50cyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lv
biB9LAorICAgICAgICB7ICJkb2MtYWZ0ZXJ3b3JkIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1hcHBlbmRpeCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtYmFja2xpbmsiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb2VudHJ5
IiwgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtIH0sCisgICAgICAgIHsgImRvYy1iaWJsaW9n
cmFwaHkiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAg
eyAiZG9jLWJpYmxpb3JlZiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAg
ICAgICB7ICJkb2MtY2hhcHRlciIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lv
biB9LAorICAgICAgICB7ICJkb2MtY29sb3Bob24iLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9jLWNvbmNsdXNpb24iLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWNvdmVyIiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OkltYWdlIH0sCisgICAgICAgIHsgImRvYy1jcmVkaXQiLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAgICAgICAgeyAiZG9jLWNyZWRp
dHMiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAi
ZG9jLWRlZGljYXRpb24iLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAg
fSwKKyAgICAgICAgeyAiZG9jLWVuZG5vdGUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0g
fSwKKyAgICAgICAgeyAiZG9jLWVuZG5vdGVzIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
RG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1lcGlncmFwaCIsIEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtZXBpbG9ndWUiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWVycmF0
YSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJk
b2MtZXhhbXBsZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAor
ICAgICAgICB7ICJkb2MtZm9vdG5vdGUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGUgfSwK
KyAgICAgICAgeyAiZG9jLWZvcmV3b3JkIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9j
UmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1nbG9zc2FyeSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZ2xvc3NyZWYiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAiZG9jLWluZGV4IiwgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiB9LAorICAgICAgICB7ICJkb2MtaW50cm9kdWN0
aW9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsg
ImRvYy1ub3RlcmVmIiwgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAgICAg
IHsgImRvYy1ub3RpY2UiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlIH0sCisgICAg
ICAgIHsgImRvYy1wYWdlYnJlYWsiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXIgfSwKKyAg
ICAgICAgeyAiZG9jLXBhZ2VsaXN0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdh
dGlvbiB9LAorICAgICAgICB7ICJkb2MtcGFydCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtcHJlZmFjZSIsIEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtcHJvbG9ndWUiLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLXB1bGxxdW90
ZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7
ICJkb2MtcW5hIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisg
ICAgICAgIHsgImRvYy1zdWJ0aXRsZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nIH0sCisg
ICAgICAgIHsgImRvYy10aXAiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlIH0sCisg
ICAgICAgIHsgImRvYy10b2MiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9u
IH0sCisgICAgICAgIHsgImZpZ3VyZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmUgfSwKKyAg
ICAgICAgeyAiZ3JpZCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkIH0sCisgICAgICAgIHsgImdy
aWRjZWxsIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWRDZWxsIH0sCisgICAgICAgIHsgInRhYmxl
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlIH0sCisgICAgICAgIHsgImNlbGwiLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q2VsbCB9LAorICAgICAgICB7ICJjb2x1bW5oZWFkZXIiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6Q29sdW1uSGVhZGVyIH0sCisgICAgICAgIHsgImNvbWJvYm94IiwgQWNjZXNzaWJp
bGl0eVJvbGU6OkNvbWJvQm94IH0sCisgICAgICAgIHsgImRlZmluaXRpb24iLCBBY2Nlc3NpYmls
aXR5Um9sZTo6RGVmaW5pdGlvbiB9LAorICAgICAgICB7ICJkb2N1bWVudCIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudCB9LAorICAgICAgICB7ICJmZWVkIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkZlZWQgfSwKKyAgICAgICAgeyAiZm9ybSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtIH0sCisg
ICAgICAgIHsgInJvd2hlYWRlciIsIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXIgfSwKKyAg
ICAgICAgeyAiZ3JvdXAiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCB9LAor
ICAgICAgICB7ICJoZWFkaW5nIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKKyAgICAg
ICAgeyAiaW1nIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlIH0sCisgICAgICAgIHsgImxpbmsi
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAgeyAibGlzdCIsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0IH0sCisgICAgICAgIHsgImxpc3RpdGVtIiwgQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RJdGVtIH0sCisgICAgICAgIHsgImxpc3Rib3giLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGlzdEJveCB9LAorICAgICAgICB7ICJsb2ciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25Mb2cgfSwKKyAgICAgICAgeyAibWFpbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya01haW4gfSwKKyAgICAgICAgeyAibWFycXVlZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvbk1hcnF1ZWUgfSwKKyAgICAgICAgeyAibWF0aCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudE1hdGggfSwKKyAgICAgICAgeyAibWVudSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
IH0sCisgICAgICAgIHsgIm1lbnViYXIiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhciB9LAor
ICAgICAgICB7ICJtZW51aXRlbSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbSB9LAorICAg
ICAgICB7ICJtZW51aXRlbWNoZWNrYm94IiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hl
Y2tib3ggfSwKKyAgICAgICAgeyAibWVudWl0ZW1yYWRpbyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51SXRlbVJhZGlvIH0sCisgICAgICAgIHsgIm5vbmUiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJl
c2VudGF0aW9uYWwgfSwKKyAgICAgICAgeyAibm90ZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1
bWVudE5vdGUgfSwKKyAgICAgICAgeyAibmF2aWdhdGlvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya05hdmlnYXRpb24gfSwKKyAgICAgICAgeyAib3B0aW9uIiwgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RCb3hPcHRpb24gfSwKKyAgICAgICAgeyAicHJlc2VudGF0aW9uIiwgQWNjZXNzaWJp
bGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsIH0sCisgICAgICAgIHsgInByb2dyZXNzYmFyIiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yIH0sCisgICAgICAgIHsgInJhZGlvIiwg
QWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uIH0sCisgICAgICAgIHsgInJhZGlvZ3JvdXAi
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cCB9LAorICAgICAgICB7ICJyZWdpb24iLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gfSwKKyAgICAgICAgeyAicm93IiwgQWNj
ZXNzaWJpbGl0eVJvbGU6OlJvdyB9LAorICAgICAgICB7ICJyb3dncm91cCIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpSb3dHcm91cCB9LAorICAgICAgICB7ICJzY3JvbGxiYXIiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2Nyb2xsQmFyIH0sCisgICAgICAgIHsgInNlYXJjaCIsIEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya1NlYXJjaCB9LAorICAgICAgICB7ICJzZWFyY2hib3giLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2VhcmNoRmllbGQgfSwKKyAgICAgICAgeyAic2VwYXJhdG9yIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OlNwbGl0dGVyIH0sCisgICAgICAgIHsgInNsaWRlciIsIEFjY2Vzc2liaWxpdHlSb2xl
OjpTbGlkZXIgfSwKKyAgICAgICAgeyAic3BpbmJ1dHRvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpT
cGluQnV0dG9uIH0sCisgICAgICAgIHsgInN0YXR1cyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvblN0YXR1cyB9LAorICAgICAgICB7ICJzd2l0Y2giLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3dpdGNoIH0sCisgICAgICAgIHsgInRhYiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWIgfSwKKyAg
ICAgICAgeyAidGFibGlzdCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0IH0sCisgICAgICAg
IHsgInRhYnBhbmVsIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsIH0sCisgICAgICAgIHsg
InRleHQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCB9LAorICAgICAgICB7ICJ0ZXh0
Ym94IiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhIH0sCisgICAgICAgIHsgInRlcm0iLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGVybSB9LAorICAgICAgICB7ICJ0aW1lciIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyIH0sCisgICAgICAgIHsgInRvb2xiYXIiLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6VG9vbGJhciB9LAorICAgICAgICB7ICJ0b29sdGlwIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OlVzZXJJbnRlcmZhY2VUb29sdGlwIH0sCisgICAgICAgIHsgInRyZWUiLCBBY2Nlc3Np
YmlsaXR5Um9sZTo6VHJlZSB9LAorICAgICAgICB7ICJ0cmVlZ3JpZCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlR3JpZCB9LAorICAgICAgICB7ICJ0cmVlaXRlbSIsIEFjY2Vzc2liaWxpdHlSb2xl
OjpUcmVlSXRlbSB9CiAgICAgfTsKIAogICAgIGdBcmlhUm9sZU1hcCA9IG5ldyBBUklBUm9sZU1h
cDsKQEAgLTIzMzQsNyArMjMxOSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSb2xlTWFwKCkK
ICAgICBzaXplX3Qgcm9sZUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgocm9sZXMpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9sZUxlbmd0aDsgKytpKSB7CiAgICAgICAgIGdBcmlhUm9s
ZU1hcC0+c2V0KHJvbGVzW2ldLmFyaWFSb2xlLCByb2xlc1tpXS53ZWJjb3JlUm9sZSk7Ci0gICAg
ICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAtPnNldChyb2xlc1tpXS53ZWJjb3JlUm9sZSwgcm9sZXNb
aV0uYXJpYVJvbGUpOworICAgICAgICBnQXJpYVJldmVyc2VSb2xlTWFwLT5zZXQoc3RhdGljX2Nh
c3Q8aW50Pihyb2xlc1tpXS53ZWJjb3JlUm9sZSksIHJvbGVzW2ldLmFyaWFSb2xlKTsKICAgICB9
CiB9CiAKQEAgLTIzNTQsMTAgKzIzMzksMTEgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJp
bGl0eU9iamVjdDo6YQogewogICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgpKTsKICAgICBmb3Ig
KGF1dG8gcm9sZU5hbWUgOiBTdHJpbmdWaWV3KHZhbHVlKS5zcGxpdCgnICcpKSB7Ci0gICAgICAg
IGlmIChBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVNYXAoKS5nZXQ8QVNDSUlDYXNl
SW5zZW5zaXRpdmVTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I+KHJvbGVOYW1lKSkKKyAgICAgICAg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IGFyaWFSb2xlTWFwKCkuZ2V0PEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlU3RyaW5nVmlld0hhc2hUcmFuc2xhdG9yPihyb2xlTmFtZSk7CisgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQ+KHJvbGUpKQogICAgICAgICAgICAgcmV0dXJuIHJvbGU7CiAgICAgfQot
ICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVu
a25vd247CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb21wdXRlZFJvbGVTdHJp
bmcoKSBjb25zdApAQCAtMjM2NiwyMyArMjM1MiwyMyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9i
amVjdDo6Y29tcHV0ZWRSb2xlCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1
ZSgpOwogCiAgICAgLy8gV2UgZG8gbm90IGNvbXB1dGUgYSByb2xlIHN0cmluZyBmb3IgZ2VuZXJp
YyBibG9jayBlbGVtZW50cyB3aXRoIHVzZXItYWdlbnQgYXNzaWduZWQgcm9sZXMuCi0gICAgaWYg
KHJvbGUgPT0gR3JvdXBSb2xlIHx8IHJvbGUgPT0gVGV4dEdyb3VwUm9sZSkKKyAgICBpZiAocm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGV4dEdyb3VwKQogICAgICAgICByZXR1cm4gIiI7CiAKICAgICAvLyBXZSBkbyBjb21wdXRl
IGEgcm9sZSBzdHJpbmcgZm9yIGJsb2NrIGVsZW1lbnRzIHdpdGggYXV0aG9yLXByb3ZpZGVkIHJv
bGVzLgotICAgIGlmIChyb2xlID09IEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB8fCByb2xlID09
IEZvb3Rub3RlUm9sZSkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChB
cHBsaWNhdGlvbkdyb3VwUm9sZSk7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uVGV4dEdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Ru
b3RlKQorICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0
PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXApKTsKIAotICAgIGlmIChy
b2xlID09IEhvcml6b250YWxSdWxlUm9sZSkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9s
ZU1hcCgpLmdldChTcGxpdHRlclJvbGUpOworICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpIb3Jpem9udGFsUnVsZSkKKyAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgp
LmdldChzdGF0aWNfY2FzdDxpbnQ+KEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcikpOwogCi0g
ICAgaWYgKHJvbGUgPT0gUG9wVXBCdXR0b25Sb2xlIHx8IHJvbGUgPT0gVG9nZ2xlQnV0dG9uUm9s
ZSkKLSAgICAgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdldChCdXR0b25Sb2xlKTsK
KyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b24gfHwgcm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uKQorICAgICAgICByZXR1cm4gcmV2ZXJz
ZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OkJ1
dHRvbikpOwogCi0gICAgaWYgKHJvbGUgPT0gTGFuZG1hcmtEb2NSZWdpb25Sb2xlKQotICAgICAg
ICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KExhbmRtYXJrUmVnaW9uUm9sZSk7Cisg
ICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uKQorICAg
ICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KHN0YXRpY19jYXN0PGludD4oQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uKSk7CiAKLSAgICByZXR1cm4gcmV2ZXJzZUFy
aWFSb2xlTWFwKCkuZ2V0KHJvbGUpOworICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5n
ZXQoc3RhdGljX2Nhc3Q8aW50Pihyb2xlKSk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aGFzSGlnaGxpZ2h0aW5nKCkgY29uc3QKQEAgLTI0MDksNyArMjM5NSw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc0EKIHsKICAgICBpZiAoaXNCdXR0b24oKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJvbGVWYWx1ZSgpID09IERldGFpbHNSb2xl
KQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlscykKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCA9IHRo
aXMtPmFjdGlvbkVsZW1lbnQoKTsKQEAgLTI0MjIsOCArMjQwOCw4IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc0EKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciByZXN1bHRzOwogICAgICAgICAgICAgLy8gU2VhcmNoIHdpdGhpbiBmb3IgaW1t
ZWRpYXRlIGRlc2NlbmRhbnRzIHRoYXQgYXJlIHN0YXRpYyB0ZXh0LiBJZiB3ZSBmaW5kIG1vcmUg
dGhhbiBvbmUKICAgICAgICAgICAgIC8vIHRoZW4gdGhpcyBpcyBhbiBldmVudCBkZWxlZ2F0b3Ig
YWN0aW9uRWxlbWVudCBhbmQgd2Ugc2hvdWxkIGV4cG9zZSB0aGUgcHJlc3MgYWN0aW9uLgotICAg
ICAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IGtleXMoeyBTdGF0aWNUZXh0
U2VhcmNoS2V5LCBDb250cm9sU2VhcmNoS2V5LCBHcmFwaGljU2VhcmNoS2V5LCBIZWFkaW5nU2Vh
cmNoS2V5LCBMaW5rU2VhcmNoS2V5IH0pOwotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJj
aENyaXRlcmlhIGNyaXRlcmlhKGF4T2JqLCBTZWFyY2hEaXJlY3Rpb25OZXh0LCBlbXB0eVN0cmlu
ZygpLCAyLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXk+IGtleXMoeyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTdGF0aWNUZXh0LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpDb250cm9sLCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpHcmFw
aGljLCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nLCBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5OjpMaW5rIH0pOworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNy
aXRlcmlhKGF4T2JqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpOZXh0LCBlbXB0eVN0
cmluZygpLCAyLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5
cyA9IGtleXM7CiAgICAgICAgICAgICBheE9iai0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVy
aWEsIHJlc3VsdHMpOwogICAgICAgICAgICAgaWYgKHJlc3VsdHMuc2l6ZSgpID4gMSkKQEAgLTI1
OTQsMTggKzI1ODAsMTggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVj
dAogQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6c29ydERp
cmVjdGlvbigpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1
ZSgpOwotICAgIGlmIChyb2xlICE9IFJvd0hlYWRlclJvbGUgJiYgcm9sZSAhPSBDb2x1bW5IZWFk
ZXJSb2xlKQotICAgICAgICByZXR1cm4gU29ydERpcmVjdGlvbkludmFsaWQ7CisgICAgaWYgKHJv
bGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciAmJiByb2xlICE9IEFjY2Vzc2liaWxp
dHlSb2xlOjpDb2x1bW5IZWFkZXIpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U29ydERp
cmVjdGlvbjo6SW52YWxpZDsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc29ydEF0dHJpYnV0
ZSA9IGdldEF0dHJpYnV0ZShhcmlhX3NvcnRBdHRyKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc29ydEF0dHJpYnV0ZSwgImFzY2VuZGluZyIpKQotICAgICAgICByZXR1
cm4gU29ydERpcmVjdGlvbkFzY2VuZGluZzsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlT
b3J0RGlyZWN0aW9uOjpBc2NlbmRpbmc7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHNvcnRBdHRyaWJ1dGUsICJkZXNjZW5kaW5nIikpCi0gICAgICAgIHJldHVybiBTb3J0
RGlyZWN0aW9uRGVzY2VuZGluZzsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uOjpEZXNjZW5kaW5nOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShzb3J0QXR0cmlidXRlLCAib3RoZXIiKSkKLSAgICAgICAgcmV0dXJuIFNvcnREaXJlY3Rpb25P
dGhlcjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpPdGhlcjsK
ICAgICAKLSAgICByZXR1cm4gU29ydERpcmVjdGlvbk5vbmU7CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlTb3J0RGlyZWN0aW9uOjpOb25lOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnN1cHBvcnRzUmFuZ2VWYWx1ZSgpIGNvbnN0CkBAIC0yNjk1LDkgKzI2ODEsOSBAQCBib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzRXhwYW5kCiAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGV4cGFuZGVkLCAiZmFsc2UiKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
c3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQ29tYm9Cb3hSb2xlOgotICAgIGNhc2Ug
RGlzY2xvc3VyZVRyaWFuZ2xlUm9sZToKLSAgICBjYXNlIERldGFpbHNSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkRpc2Nsb3N1cmVUcmlhbmdsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxz
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yNzE1LDcgKzI3MDEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRXhw
YW5kZWQoKSBjCiAgICAgLy8gU3VtbWFyeSBlbGVtZW50IHNob3VsZCB1c2UgaXRzIGRldGFpbHMg
cGFyZW50J3MgZXhwYW5kZWQgc3RhdHVzLgogICAgIGlmIChpc1N1bW1hcnkoKSkgewogICAgICAg
ICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9i
amVjdDo6bWF0Y2hlZFBhcmVudCgqdGhpcywgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0JiBvYmplY3QpIHsKLSAgICAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkg
PT0gRGV0YWlsc1JvbGU7CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzOwogICAgICAgICB9KSkKICAgICAgICAgICAgIHJl
dHVybiBwYXJlbnQtPmlzRXhwYW5kZWQoKTsKICAgICB9CkBAIC0yNzI2LDExICsyNzEyLDExIEBA
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCgpIGMKIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c3VwcG9ydHNDaGVja2VkKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHJvbGVW
YWx1ZSgpKSB7Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNr
Ym94Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0
b25Sb2xlOgotICAgIGNhc2UgU3dpdGNoUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW86CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3dpdGNoOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yNzQ2LDI3ICsyNzMyLDI3IEBAIEFjY2Vzc2liaWxpdHlCdXR0b25T
dGF0ZSBBY2Nlc3NpYmlsaXR5T2IKICAgICBpZiAoaXNUb2dnbGVCdXR0b24oKSkgewogICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFQcmVzc2VkID0gZ2V0QXR0cmlidXRlKGFyaWFfcHJl
c3NlZEF0dHIpOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJp
YVByZXNzZWQsICJ0cnVlIikpCi0gICAgICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVPbjsKKyAg
ICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9uOwogICAgICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYVByZXNzZWQsICJtaXhlZCIpKQot
ICAgICAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlTWl4ZWQ7Ci0gICAgICAgIHJldHVybiBCdXR0
b25TdGF0ZU9mZjsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6
Ok1peGVkOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY7CiAg
ICAgfQogICAgIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzdWx0ID0gZ2V0QXR0cmlidXRl
KGFyaWFfY2hlY2tlZEF0dHIpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZXN1bHQsICJ0cnVlIikpCi0gICAgICAgIHJldHVybiBCdXR0b25TdGF0ZU9uOworICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjsKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdWx0LCAibWl4ZWQiKSkgewogICAgICAgICAvLyBBUklB
IHNheXMgdGhhdCByYWRpbywgbWVudWl0ZW1yYWRpbywgYW5kIHN3aXRjaCBlbGVtZW50cyBtdXN0
IE5PVCBleHBvc2UgYnV0dG9uIHN0YXRlIG1peGVkLgogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSBhcmlhUm9sZSA9IGFyaWFSb2xlQXR0cmlidXRlKCk7Ci0gICAgICAgIGlmIChhcmlhUm9sZSA9
PSBSYWRpb0J1dHRvblJvbGUgfHwgYXJpYVJvbGUgPT0gTWVudUl0ZW1SYWRpb1JvbGUgfHwgYXJp
YVJvbGUgPT0gU3dpdGNoUm9sZSkKLSAgICAgICAgICAgIHJldHVybiBCdXR0b25TdGF0ZU9mZjsK
LSAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlTWl4ZWQ7CisgICAgICAgIGlmIChhcmlhUm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW8gfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlN3aXRjaCkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9m
ZjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4ZWQ7CiAgICAg
fQogICAgIAogICAgIGlmIChpc0luZGV0ZXJtaW5hdGUoKSkKLSAgICAgICAgcmV0dXJuIEJ1dHRv
blN0YXRlTWl4ZWQ7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1p
eGVkOwogICAgIAotICAgIHJldHVybiBCdXR0b25TdGF0ZU9mZjsKKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY7CiB9CiAKIC8vIFRoaXMgaXMgYSAxLWRpbWVuc2lvbmFs
IHNjcm9sbCBvZmZzZXQgaGVscGVyIGZ1bmN0aW9uIHRoYXQncyBhcHBsaWVkCkBAIC0zMDY1LDM0
ICszMDUxLDMyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsQnlQYWdlKFMKICAg
ICBJbnRTaXplIHNjcm9sbFNpemUgPSBzY3JvbGxhYmxlQXJlYS0+Y29udGVudHNTaXplKCk7CiAg
ICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlUmVjdCA9IHNjcm9sbGFibGVBcmVhLT52aXNpYmxlQ29u
dGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOwog
ICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBSaWdodDogeworICAgIGNhc2UgU2Ny
b2xsQnlQYWdlRGlyZWN0aW9uOjpSaWdodDogewogICAgICAgICBpbnQgc2Nyb2xsQW1vdW50ID0g
c2Nyb2xsVmlzaWJsZVJlY3Quc2l6ZSgpLndpZHRoKCk7CiAgICAgICAgIGludCBuZXdYID0gc2Ny
b2xsUG9zaXRpb24ueCgpIC0gc2Nyb2xsQW1vdW50OwogICAgICAgICBuZXdTY3JvbGxQb3NpdGlv
bi5zZXRYKHN0ZDo6bWF4KG5ld1gsIDApKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNh
c2UgTGVmdDogeworICAgIGNhc2UgU2Nyb2xsQnlQYWdlRGlyZWN0aW9uOjpMZWZ0OiB7CiAgICAg
ICAgIGludCBzY3JvbGxBbW91bnQgPSBzY3JvbGxWaXNpYmxlUmVjdC5zaXplKCkud2lkdGgoKTsK
ICAgICAgICAgaW50IG5ld1ggPSBzY3JvbGxBbW91bnQgKyBzY3JvbGxQb3NpdGlvbi54KCk7CiAg
ICAgICAgIGludCBtYXhYID0gc2Nyb2xsU2l6ZS53aWR0aCgpIC0gc2Nyb2xsQW1vdW50OwogICAg
ICAgICBuZXdTY3JvbGxQb3NpdGlvbi5zZXRYKHN0ZDo6bWluKG5ld1gsIG1heFgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgVXA6IHsKKyAgICBjYXNlIFNjcm9sbEJ5UGFnZURp
cmVjdGlvbjo6VXA6IHsKICAgICAgICAgaW50IHNjcm9sbEFtb3VudCA9IHNjcm9sbFZpc2libGVS
ZWN0LnNpemUoKS5oZWlnaHQoKTsKICAgICAgICAgaW50IG5ld1kgPSBzY3JvbGxQb3NpdGlvbi55
KCkgLSBzY3JvbGxBbW91bnQ7CiAgICAgICAgIG5ld1Njcm9sbFBvc2l0aW9uLnNldFkoc3RkOjpt
YXgobmV3WSwgMCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBEb3duOiB7Cisg
ICAgY2FzZSBTY3JvbGxCeVBhZ2VEaXJlY3Rpb246OkRvd246IHsKICAgICAgICAgaW50IHNjcm9s
bEFtb3VudCA9IHNjcm9sbFZpc2libGVSZWN0LnNpemUoKS5oZWlnaHQoKTsKICAgICAgICAgaW50
IG5ld1kgPSBzY3JvbGxBbW91bnQgKyBzY3JvbGxQb3NpdGlvbi55KCk7CiAgICAgICAgIGludCBt
YXhZID0gc2Nyb2xsU2l6ZS5oZWlnaHQoKSAtIHNjcm9sbEFtb3VudDsKICAgICAgICAgbmV3U2Ny
b2xsUG9zaXRpb24uc2V0WShzdGQ6Om1pbihuZXdZLCBtYXhZKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgaWYg
KG5ld1Njcm9sbFBvc2l0aW9uICE9IHNjcm9sbFBvc2l0aW9uKSB7CkBAIC0zMTA3LDE1ICszMDkx
LDE1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsQnlQYWdlKFMKIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSgpCiB7Ci0gICAgaWYg
KG1fbGFzdEtub3duSXNJZ25vcmVkVmFsdWUgPT0gRGVmYXVsdEJlaGF2aW9yKQotICAgICAgICBt
X2xhc3RLbm93bklzSWdub3JlZFZhbHVlID0gYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpID8gSWdu
b3JlT2JqZWN0IDogSW5jbHVkZU9iamVjdDsKKyAgICBpZiAobV9sYXN0S25vd25Jc0lnbm9yZWRW
YWx1ZSA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3IpCisg
ICAgICAgIG1fbGFzdEtub3duSXNJZ25vcmVkVmFsdWUgPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0OwogCi0gICAgcmV0dXJuIG1fbGFz
dEtub3duSXNJZ25vcmVkVmFsdWUgPT0gSWdub3JlT2JqZWN0OworICAgIHJldHVybiBtX2xhc3RL
bm93bklzSWdub3JlZFZhbHVlID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9y
ZU9iamVjdDsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0S25vd25Jc0ln
bm9yZWRWYWx1ZShib29sIGlzSWdub3JlZCkKIHsKLSAgICBtX2xhc3RLbm93bklzSWdub3JlZFZh
bHVlID0gaXNJZ25vcmVkID8gSWdub3JlT2JqZWN0IDogSW5jbHVkZU9iamVjdDsKKyAgICBtX2xh
c3RLbm93bklzSWdub3JlZFZhbHVlID0gaXNJZ25vcmVkID8gQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbjo6SWdub3JlT2JqZWN0IDogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5j
bHVkZU9iamVjdDsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpub3RpZnlJZklnbm9y
ZWRWYWx1ZUNoYW5nZWQoKQpAQCAtMzE1MSwyNSArMzEzNSwyNSBAQCBBY2Nlc3NpYmlsaXR5Um9s
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpiCiAgICAgLy8gSWYgYXJpYS1wcmVzc2VkIGlzIHByZXNl
bnQsIHRoZW4gaXQgc2hvdWxkIGJlIGV4cG9zZWQgYXMgYSB0b2dnbGUgYnV0dG9uLgogICAgIC8v
IGh0dHA6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhL3N0YXRlc19hbmRfcHJvcGVydGllcyNhcmlh
LXByZXNzZWQKICAgICBpZiAoYXJpYVByZXNzZWRJc1ByZXNlbnQoKSkKLSAgICAgICAgcmV0dXJu
IFRvZ2dsZUJ1dHRvblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9n
Z2xlQnV0dG9uOwogICAgIGlmIChhcmlhSGFzUG9wdXAoKSkKLSAgICAgICAgcmV0dXJuIFBvcFVw
QnV0dG9uUm9sZTsKLSAgICAvLyBXZSBkb24ndCBjb250ZW1wbGF0ZSBSYWRpb0J1dHRvblJvbGUs
IGFzIGl0IGRlcGVuZHMgb24gdGhlIGlucHV0CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6UG9wVXBCdXR0b247CisgICAgLy8gV2UgZG9uJ3QgY29udGVtcGxhdGUgQWNjZXNzaWJp
bGl0eVJvbGU6OlJhZGlvQnV0dG9uLCBhcyBpdCBkZXBlbmRzIG9uIHRoZSBpbnB1dAogICAgIC8v
IHR5cGUuCiAKLSAgICByZXR1cm4gQnV0dG9uUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OkJ1dHRvbjsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1dHRvbigp
IGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgpOwogCi0g
ICAgcmV0dXJuIHJvbGUgPT0gQnV0dG9uUm9sZSB8fCByb2xlID09IFBvcFVwQnV0dG9uUm9sZSB8
fCByb2xlID09IFRvZ2dsZUJ1dHRvblJvbGU7CisgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkJ1dHRvbiB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRv
biB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSA9PSBJZ25vcmVPYmpl
Y3Q7CisgICAgcmV0dXJuIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSA9PSBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiB9CiAKIC8vIEFSSUEgY29tcG9uZW50IG9m
IGhpZGRlbiBkZWZpbml0aW9uLgpAQCAtMzIxMiwxMyArMzE5NiwxMyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpCiAgICAgYm9vbCB1c2VQYXJlbnREYXRhID0gIW1f
aXNJZ25vcmVkRnJvbVBhcmVudERhdGEuaXNOdWxsKCk7CiAgICAgCiAgICAgaWYgKHVzZVBhcmVu
dERhdGEgPyBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhLmlzQVJJQUhpZGRlbiA6IGlzQVJJQUhp
ZGRlbigpKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogICAgIAogICAgIGlmIChp
Z25vcmVkRnJvbUFSSUFNb2RhbFByZXNlbmNlKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmpl
Y3Q7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVP
YmplY3Q7CiAgICAgCiAgICAgaWYgKHVzZVBhcmVudERhdGEgPyBtX2lzSWdub3JlZEZyb21QYXJl
bnREYXRhLmlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUgOiBpc1ByZXNlbnRhdGlvbmFs
Q2hpbGRPZkFyaWFSb2xlKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAg
CiAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCk7CiB9CkBA
IC0zMjMzLDExICszMjE3LDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJp
bGl0eUkKICAgICBpZiAoYXR0cmlidXRlQ2FjaGUpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBpZ25vcmVkID0gYXR0cmlidXRlQ2FjaGUtPmdldElnbm9yZWQoYXhPYmpl
Y3RJRCgpKTsKICAgICAgICAgc3dpdGNoIChpZ25vcmVkKSB7Ci0gICAgICAgIGNhc2UgSWdub3Jl
T2JqZWN0OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9y
ZU9iamVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIEluY2x1ZGVP
YmplY3Q6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVk
ZU9iamVjdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBEZWZhdWx0
QmVoYXZpb3I6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVm
YXVsdEJlaGF2aW9yOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
MjQ2LDcgKzMyMzAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJ
CiAKICAgICAvLyBJbiBjYXNlIGNvbXB1dGluZyBheElzSWdub3JlZCBkaXNhYmxlcyBhdHRyaWJ1
dGUgY2FjaGluZywgd2Ugc2hvdWxkIHJlZmV0Y2ggdGhlIG9iamVjdCB0byBzZWUgaWYgaXQgZXhp
c3RzLgogICAgIGlmIChjYWNoZSAmJiAoYXR0cmlidXRlQ2FjaGUgPSBjYWNoZS0+Y29tcHV0ZWRP
YmplY3RBdHRyaWJ1dGVDYWNoZSgpKSkKLSAgICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9y
ZWQoYXhPYmplY3RJRCgpLCByZXN1bHQgPyBJZ25vcmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0KTsK
KyAgICAgICAgYXR0cmlidXRlQ2FjaGUtPnNldElnbm9yZWQoYXhPYmplY3RJRCgpLCByZXN1bHQg
PyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KTsKIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CkBAIC0zMzY5LDcgKzMzNTMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29u
dGFpbmVkQnlQCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKGFyaWFS
b2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBub2RlLT5zaGFkb3dIb3N0KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDE4NyArOTIs
MTg3IEBAIGNsYXNzIFdpZGdldDsKIAogdHlwZWRlZiB1bnNpZ25lZCBBWElEOwogCi1lbnVtIEFj
Y2Vzc2liaWxpdHlSb2xlIHsKLSAgICBBbm5vdGF0aW9uUm9sZSA9IDEsCi0gICAgQXBwbGljYXRp
b25Sb2xlLAotICAgIEFwcGxpY2F0aW9uQWxlcnRSb2xlLAotICAgIEFwcGxpY2F0aW9uQWxlcnRE
aWFsb2dSb2xlLAotICAgIEFwcGxpY2F0aW9uRGlhbG9nUm9sZSwKLSAgICBBcHBsaWNhdGlvbkdy
b3VwUm9sZSwKLSAgICBBcHBsaWNhdGlvbkxvZ1JvbGUsCi0gICAgQXBwbGljYXRpb25NYXJxdWVl
Um9sZSwKLSAgICBBcHBsaWNhdGlvblN0YXR1c1JvbGUsCi0gICAgQXBwbGljYXRpb25UZXh0R3Jv
dXBSb2xlLAotICAgIEFwcGxpY2F0aW9uVGltZXJSb2xlLAotICAgIEF1ZGlvUm9sZSwKLSAgICBC
bG9ja3F1b3RlUm9sZSwKLSAgICBCcm93c2VyUm9sZSwKLSAgICBCdXN5SW5kaWNhdG9yUm9sZSwK
LSAgICBCdXR0b25Sb2xlLAotICAgIENhbnZhc1JvbGUsCi0gICAgQ2FwdGlvblJvbGUsCi0gICAg
Q2VsbFJvbGUsIAotICAgIENoZWNrQm94Um9sZSwKLSAgICBDb2xvcldlbGxSb2xlLAotICAgIENv
bHVtblJvbGUsCi0gICAgQ29sdW1uSGVhZGVyUm9sZSwKLSAgICBDb21ib0JveFJvbGUsCi0gICAg
RGVmaW5pdGlvblJvbGUsCi0gICAgRGVzY3JpcHRpb25MaXN0Um9sZSwKLSAgICBEZXNjcmlwdGlv
bkxpc3RUZXJtUm9sZSwKLSAgICBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlLAotICAgIERldGFp
bHNSb2xlLAotICAgIERpcmVjdG9yeVJvbGUsCi0gICAgRGlzY2xvc3VyZVRyaWFuZ2xlUm9sZSwK
LSAgICBEaXZSb2xlLAotICAgIERvY3VtZW50Um9sZSwKLSAgICBEb2N1bWVudEFydGljbGVSb2xl
LAotICAgIERvY3VtZW50TWF0aFJvbGUsCi0gICAgRG9jdW1lbnROb3RlUm9sZSwKLSAgICBEcmF3
ZXJSb2xlLAotICAgIEVkaXRhYmxlVGV4dFJvbGUsCi0gICAgRmVlZFJvbGUsCi0gICAgRmlndXJl
Um9sZSwKLSAgICBGb290ZXJSb2xlLAotICAgIEZvb3Rub3RlUm9sZSwKLSAgICBGb3JtUm9sZSwK
LSAgICBHcmlkUm9sZSwKLSAgICBHcmlkQ2VsbFJvbGUsCi0gICAgR3JvdXBSb2xlLAotICAgIEdy
b3dBcmVhUm9sZSwKLSAgICBIZWFkaW5nUm9sZSwKLSAgICBIZWxwVGFnUm9sZSwKLSAgICBIb3Jp
em9udGFsUnVsZVJvbGUsCi0gICAgSWdub3JlZFJvbGUsCi0gICAgSW5saW5lUm9sZSwKLSAgICBJ
bWFnZVJvbGUsCi0gICAgSW1hZ2VNYXBSb2xlLAotICAgIEltYWdlTWFwTGlua1JvbGUsCi0gICAg
SW5jcmVtZW50b3JSb2xlLAotICAgIExhYmVsUm9sZSwKLSAgICBMYW5kbWFya0Jhbm5lclJvbGUs
Ci0gICAgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZSwKLSAgICBMYW5kbWFya0NvbnRlbnRJbmZv
Um9sZSwKLSAgICBMYW5kbWFya0RvY1JlZ2lvblJvbGUsCi0gICAgTGFuZG1hcmtNYWluUm9sZSwK
LSAgICBMYW5kbWFya05hdmlnYXRpb25Sb2xlLAotICAgIExhbmRtYXJrUmVnaW9uUm9sZSwKLSAg
ICBMYW5kbWFya1NlYXJjaFJvbGUsCi0gICAgTGVnZW5kUm9sZSwKLSAgICBMaW5rUm9sZSwKLSAg
ICBMaXN0Um9sZSwKLSAgICBMaXN0Qm94Um9sZSwKLSAgICBMaXN0Qm94T3B0aW9uUm9sZSwKLSAg
ICBMaXN0SXRlbVJvbGUsCi0gICAgTGlzdE1hcmtlclJvbGUsCi0gICAgTWFya1JvbGUsCi0gICAg
TWF0aEVsZW1lbnRSb2xlLAotICAgIE1hdHRlUm9sZSwKLSAgICBNZW51Um9sZSwKLSAgICBNZW51
QmFyUm9sZSwKLSAgICBNZW51QnV0dG9uUm9sZSwKLSAgICBNZW51SXRlbVJvbGUsCi0gICAgTWVu
dUl0ZW1DaGVja2JveFJvbGUsCi0gICAgTWVudUl0ZW1SYWRpb1JvbGUsCi0gICAgTWVudUxpc3RQ
b3B1cFJvbGUsCi0gICAgTWVudUxpc3RPcHRpb25Sb2xlLAotICAgIE91dGxpbmVSb2xlLAotICAg
IFBhcmFncmFwaFJvbGUsCi0gICAgUG9wVXBCdXR0b25Sb2xlLAotICAgIFByZVJvbGUsCi0gICAg
UHJlc2VudGF0aW9uYWxSb2xlLAotICAgIFByb2dyZXNzSW5kaWNhdG9yUm9sZSwKLSAgICBSYWRp
b0J1dHRvblJvbGUsCi0gICAgUmFkaW9Hcm91cFJvbGUsCi0gICAgUm93SGVhZGVyUm9sZSwKLSAg
ICBSb3dSb2xlLAotICAgIFJvd0dyb3VwUm9sZSwKLSAgICBSdWJ5QmFzZVJvbGUsCi0gICAgUnVi
eUJsb2NrUm9sZSwKLSAgICBSdWJ5SW5saW5lUm9sZSwKLSAgICBSdWJ5UnVuUm9sZSwKLSAgICBS
dWJ5VGV4dFJvbGUsCi0gICAgUnVsZXJSb2xlLAotICAgIFJ1bGVyTWFya2VyUm9sZSwKLSAgICBT
Y3JvbGxBcmVhUm9sZSwKLSAgICBTY3JvbGxCYXJSb2xlLAotICAgIFNlYXJjaEZpZWxkUm9sZSwK
LSAgICBTaGVldFJvbGUsCi0gICAgU2xpZGVyUm9sZSwKLSAgICBTbGlkZXJUaHVtYlJvbGUsCi0g
ICAgU3BpbkJ1dHRvblJvbGUsCi0gICAgU3BpbkJ1dHRvblBhcnRSb2xlLAotICAgIFNwbGl0R3Jv
dXBSb2xlLAotICAgIFNwbGl0dGVyUm9sZSwKLSAgICBTdGF0aWNUZXh0Um9sZSwKLSAgICBTdW1t
YXJ5Um9sZSwKLSAgICBTd2l0Y2hSb2xlLAotICAgIFN5c3RlbVdpZGVSb2xlLAotICAgIFNWR1Jv
b3RSb2xlLAotICAgIFNWR1RleHRSb2xlLAotICAgIFNWR1RTcGFuUm9sZSwKLSAgICBTVkdUZXh0
UGF0aFJvbGUsCi0gICAgVGFiR3JvdXBSb2xlLAotICAgIFRhYkxpc3RSb2xlLAotICAgIFRhYlBh
bmVsUm9sZSwgICAgICAgICAgICAKLSAgICBUYWJSb2xlLAotICAgIFRhYmxlUm9sZSwKLSAgICBU
YWJsZUhlYWRlckNvbnRhaW5lclJvbGUsCi0gICAgVGV4dEFyZWFSb2xlLAotICAgIFRleHRHcm91
cFJvbGUsCi0gICAgVGVybVJvbGUsCi0gICAgVGltZVJvbGUsCi0gICAgVHJlZVJvbGUsCi0gICAg
VHJlZUdyaWRSb2xlLAotICAgIFRyZWVJdGVtUm9sZSwKLSAgICBUZXh0RmllbGRSb2xlLAotICAg
IFRvZ2dsZUJ1dHRvblJvbGUsCi0gICAgVG9vbGJhclJvbGUsCi0gICAgVW5rbm93blJvbGUsCi0g
ICAgVXNlckludGVyZmFjZVRvb2x0aXBSb2xlLAotICAgIFZhbHVlSW5kaWNhdG9yUm9sZSwKLSAg
ICBWaWRlb1JvbGUsCi0gICAgV2ViQXBwbGljYXRpb25Sb2xlLAotICAgIFdlYkFyZWFSb2xlLAot
ICAgIFdlYkNvcmVMaW5rUm9sZSwKLSAgICBXaW5kb3dSb2xlLAorZW51bSBjbGFzcyBBY2Nlc3Np
YmlsaXR5Um9sZSB7CisgICAgQW5ub3RhdGlvbiA9IDEsCisgICAgQXBwbGljYXRpb24sCisgICAg
QXBwbGljYXRpb25BbGVydCwKKyAgICBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nLAorICAgIEFwcGxp
Y2F0aW9uRGlhbG9nLAorICAgIEFwcGxpY2F0aW9uR3JvdXAsCisgICAgQXBwbGljYXRpb25Mb2cs
CisgICAgQXBwbGljYXRpb25NYXJxdWVlLAorICAgIEFwcGxpY2F0aW9uU3RhdHVzLAorICAgIEFw
cGxpY2F0aW9uVGV4dEdyb3VwLAorICAgIEFwcGxpY2F0aW9uVGltZXIsCisgICAgQXVkaW8sCisg
ICAgQmxvY2txdW90ZSwKKyAgICBCcm93c2VyLAorICAgIEJ1c3lJbmRpY2F0b3IsCisgICAgQnV0
dG9uLAorICAgIENhbnZhcywKKyAgICBDYXB0aW9uLAorICAgIENlbGwsCisgICAgQ2hlY2tCb3gs
CisgICAgQ29sb3JXZWxsLAorICAgIENvbHVtbiwKKyAgICBDb2x1bW5IZWFkZXIsCisgICAgQ29t
Ym9Cb3gsCisgICAgRGVmaW5pdGlvbiwKKyAgICBEZXNjcmlwdGlvbkxpc3QsCisgICAgRGVzY3Jp
cHRpb25MaXN0VGVybSwKKyAgICBEZXNjcmlwdGlvbkxpc3REZXRhaWwsCisgICAgRGV0YWlscywK
KyAgICBEaXJlY3RvcnksCisgICAgRGlzY2xvc3VyZVRyaWFuZ2xlLAorICAgIERpdiwKKyAgICBE
b2N1bWVudCwKKyAgICBEb2N1bWVudEFydGljbGUsCisgICAgRG9jdW1lbnRNYXRoLAorICAgIERv
Y3VtZW50Tm90ZSwKKyAgICBEcmF3ZXIsCisgICAgRWRpdGFibGVUZXh0LAorICAgIEZlZWQsCisg
ICAgRmlndXJlLAorICAgIEZvb3RlciwKKyAgICBGb290bm90ZSwKKyAgICBGb3JtLAorICAgIEdy
aWQsCisgICAgR3JpZENlbGwsCisgICAgR3JvdXAsCisgICAgR3Jvd0FyZWEsCisgICAgSGVhZGlu
ZywKKyAgICBIZWxwVGFnLAorICAgIEhvcml6b250YWxSdWxlLAorICAgIElnbm9yZWQsCisgICAg
SW5saW5lLAorICAgIEltYWdlLAorICAgIEltYWdlTWFwLAorICAgIEltYWdlTWFwTGluaywKKyAg
ICBJbmNyZW1lbnRvciwKKyAgICBMYWJlbCwKKyAgICBMYW5kbWFya0Jhbm5lciwKKyAgICBMYW5k
bWFya0NvbXBsZW1lbnRhcnksCisgICAgTGFuZG1hcmtDb250ZW50SW5mbywKKyAgICBMYW5kbWFy
a0RvY1JlZ2lvbiwKKyAgICBMYW5kbWFya01haW4sCisgICAgTGFuZG1hcmtOYXZpZ2F0aW9uLAor
ICAgIExhbmRtYXJrUmVnaW9uLAorICAgIExhbmRtYXJrU2VhcmNoLAorICAgIExlZ2VuZCwKKyAg
ICBMaW5rLAorICAgIExpc3QsCisgICAgTGlzdEJveCwKKyAgICBMaXN0Qm94T3B0aW9uLAorICAg
IExpc3RJdGVtLAorICAgIExpc3RNYXJrZXIsCisgICAgTWFyaywKKyAgICBNYXRoRWxlbWVudCwK
KyAgICBNYXR0ZSwKKyAgICBNZW51LAorICAgIE1lbnVCYXIsCisgICAgTWVudUJ1dHRvbiwKKyAg
ICBNZW51SXRlbSwKKyAgICBNZW51SXRlbUNoZWNrYm94LAorICAgIE1lbnVJdGVtUmFkaW8sCisg
ICAgTWVudUxpc3RQb3B1cCwKKyAgICBNZW51TGlzdE9wdGlvbiwKKyAgICBPdXRsaW5lLAorICAg
IFBhcmFncmFwaCwKKyAgICBQb3BVcEJ1dHRvbiwKKyAgICBQcmUsCisgICAgUHJlc2VudGF0aW9u
YWwsCisgICAgUHJvZ3Jlc3NJbmRpY2F0b3IsCisgICAgUmFkaW9CdXR0b24sCisgICAgUmFkaW9H
cm91cCwKKyAgICBSb3dIZWFkZXIsCisgICAgUm93LAorICAgIFJvd0dyb3VwLAorICAgIFJ1YnlC
YXNlLAorICAgIFJ1YnlCbG9jaywKKyAgICBSdWJ5SW5saW5lLAorICAgIFJ1YnlSdW4sCisgICAg
UnVieVRleHQsCisgICAgUnVsZXIsCisgICAgUnVsZXJNYXJrZXIsCisgICAgU2Nyb2xsQXJlYSwK
KyAgICBTY3JvbGxCYXIsCisgICAgU2VhcmNoRmllbGQsCisgICAgU2hlZXQsCisgICAgU2xpZGVy
LAorICAgIFNsaWRlclRodW1iLAorICAgIFNwaW5CdXR0b24sCisgICAgU3BpbkJ1dHRvblBhcnQs
CisgICAgU3BsaXRHcm91cCwKKyAgICBTcGxpdHRlciwKKyAgICBTdGF0aWNUZXh0LAorICAgIFN1
bW1hcnksCisgICAgU3dpdGNoLAorICAgIFN5c3RlbVdpZGUsCisgICAgU1ZHUm9vdCwKKyAgICBT
VkdUZXh0LAorICAgIFNWR1RTcGFuLAorICAgIFNWR1RleHRQYXRoLAorICAgIFRhYkdyb3VwLAor
ICAgIFRhYkxpc3QsCisgICAgVGFiUGFuZWwsCisgICAgVGFiLAorICAgIFRhYmxlLAorICAgIFRh
YmxlSGVhZGVyQ29udGFpbmVyLAorICAgIFRleHRBcmVhLAorICAgIFRleHRHcm91cCwKKyAgICBU
ZXJtLAorICAgIFRpbWUsCisgICAgVHJlZSwKKyAgICBUcmVlR3JpZCwKKyAgICBUcmVlSXRlbSwK
KyAgICBUZXh0RmllbGQsCisgICAgVG9nZ2xlQnV0dG9uLAorICAgIFRvb2xiYXIsCisgICAgVW5r
bm93biwKKyAgICBVc2VySW50ZXJmYWNlVG9vbHRpcCwKKyAgICBWYWx1ZUluZGljYXRvciwKKyAg
ICBWaWRlbywKKyAgICBXZWJBcHBsaWNhdGlvbiwKKyAgICBXZWJBcmVhLAorICAgIFdlYkNvcmVM
aW5rLAorICAgIFdpbmRvdywKIH07CiAKLWVudW0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2Ugewot
ICAgIEFsdGVybmF0aXZlVGV4dCwKLSAgICBDaGlsZHJlblRleHQsCi0gICAgU3VtbWFyeVRleHQs
Ci0gICAgSGVscFRleHQsCi0gICAgVmlzaWJsZVRleHQsCi0gICAgVGl0bGVUYWdUZXh0LAotICAg
IFBsYWNlaG9sZGVyVGV4dCwKLSAgICBMYWJlbEJ5RWxlbWVudFRleHQsCi0gICAgVGl0bGVUZXh0
LAotICAgIFN1YnRpdGxlVGV4dCwKLSAgICBBY3Rpb25UZXh0LAorZW51bSBjbGFzcyBBY2Nlc3Np
YmlsaXR5VGV4dFNvdXJjZSB7CisgICAgQWx0ZXJuYXRpdmUsCisgICAgQ2hpbGRyZW4sCisgICAg
U3VtbWFyeSwKKyAgICBIZWxwLAorICAgIFZpc2libGUsCisgICAgVGl0bGVUYWcsCisgICAgUGxh
Y2Vob2xkZXIsCisgICAgTGFiZWxCeUVsZW1lbnQsCisgICAgVGl0bGUsCisgICAgU3VidGl0bGUs
CisgICAgQWN0aW9uLAogfTsKICAgICAKIHN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dCB7CiAgICAg
U3RyaW5nIHRleHQ7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2UgdGV4dFNvdXJjZTsKLSAg
ICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiB0ZXh0RWxlbWVudHM7CisgICAg
VmVjdG9yPFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gdGV4dEVsZW1lbnRzOwogICAgIAogICAg
IEFjY2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRl
eHRTb3VyY2UmIHMpCi0gICAgOiB0ZXh0KHQpCi0gICAgLCB0ZXh0U291cmNlKHMpCisgICAgICAg
IDogdGV4dCh0KQorICAgICAgICAsIHRleHRTb3VyY2UocykKICAgICB7IH0KIAotICAgIEFjY2Vz
c2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2UmIHMsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IGVsZW1lbnRzKQotICAg
IDogdGV4dCh0KQotICAgICwgdGV4dFNvdXJjZShzKQotICAgICwgdGV4dEVsZW1lbnRzKFdURk1v
dmUoZWxlbWVudHMpKQorICAgIEFjY2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0cmluZyYgdCwgY29u
c3QgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2UmIHMsIFZlY3RvcjxSZWY8QWNjZXNzaWJpbGl0eU9i
amVjdD4+IGVsZW1lbnRzKQorICAgICAgICA6IHRleHQodCkKKyAgICAgICAgLCB0ZXh0U291cmNl
KHMpCisgICAgICAgICwgdGV4dEVsZW1lbnRzKFdURk1vdmUoZWxlbWVudHMpKQogICAgIHsgfQog
Ci0gICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3NpYmls
aXR5VGV4dFNvdXJjZSYgcywgY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGVsZW1l
bnQpCi0gICAgOiB0ZXh0KHQpCi0gICAgLCB0ZXh0U291cmNlKHMpCisgICAgQWNjZXNzaWJpbGl0
eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSYgcywg
UmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiYgZWxlbWVudCkKKyAgICAgICAgOiB0ZXh0KHQpCisg
ICAgICAgICwgdGV4dFNvdXJjZShzKQogICAgIHsKLSAgICAgICAgdGV4dEVsZW1lbnRzLmFwcGVu
ZChlbGVtZW50KTsKKyAgICAgICAgdGV4dEVsZW1lbnRzLmFwcGVuZChXVEZNb3ZlKGVsZW1lbnQp
KTsKICAgICB9CiB9OwogCkBAIC0yOTcsOTggKzI5Nyw5NSBAQCBzdHJ1Y3QgQWNjZXNzaWJpbGl0
eVRleHRVbmRlckVsZW1lbnRNb2RlCiAvLyBVc2UgdGhpcyBzdHJ1Y3QgdG8gc3RvcmUgdGhlIGlz
SWdub3JlZCBkYXRhIHRoYXQgZGVwZW5kcyBvbiB0aGUgcGFyZW50cywgc28gdGhhdCBpbiBhZGRD
aGlsZHJlbigpCiAvLyB3ZSBhdm9pZCBnb2luZyB1cCB0aGUgcGFyZW50IGNoYWluIGZvciBlYWNo
IGVsZW1lbnQgd2hpbGUgdHJhdmVyc2luZyB0aGUgdHJlZSB3aXRoIHVzZWZ1bCBpbmZvcm1hdGlv
biBhbHJlYWR5Lgogc3RydWN0IEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSB7
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50OwotICAgIGJvb2wgaXNBUklBSGlkZGVu
OwotICAgIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZTsKLSAgICBib29sIGlz
RGVzY2VuZGFudE9mQmFycmVuUGFyZW50OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCB7IG51bGxwdHIgfTsKKyAgICBib29sIGlzQVJJQUhpZGRlbiB7IGZhbHNlIH07CisgICAgYm9v
bCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlIHsgZmFsc2UgfTsKKyAgICBib29sIGlz
RGVzY2VuZGFudE9mQmFycmVuUGFyZW50IHsgZmFsc2UgfTsKICAgICAKICAgICBBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0g
bnVsbHB0cikKICAgICAgICAgOiBwYXJlbnQocGFyZW50KQotICAgICAgICAsIGlzQVJJQUhpZGRl
bihmYWxzZSkKLSAgICAgICAgLCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKGZhbHNl
KQotICAgICAgICAsIGlzRGVzY2VuZGFudE9mQmFycmVuUGFyZW50KGZhbHNlKQotICAgICAgICB7
IH0KLSAgICAKKyAgICB7IH0KKwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXBh
cmVudDsgfQogfTsKICAgICAKLWVudW0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKLSAgICBB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbCwKLSAgICBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25Ib3Jpem9udGFsLAotICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblVuZGVmaW5lZCwK
K2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsKKyAgICBWZXJ0aWNhbCwKKyAg
ICBIb3Jpem9udGFsLAorICAgIFVuZGVmaW5lZCwKIH07CiAgICAgCi1lbnVtIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24geworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uIHsKICAgICBJbmNsdWRlT2JqZWN0LAogICAgIElnbm9yZU9iamVjdCwKICAgICBEZWZhdWx0
QmVoYXZpb3IsCiB9OwogICAgIAotZW51bSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgewotICAg
IEJ1dHRvblN0YXRlT2ZmID0gMCwKLSAgICBCdXR0b25TdGF0ZU9uLCAKLSAgICBCdXR0b25TdGF0
ZU1peGVkLAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgeworICAgIE9mZiA9
IDAsCisgICAgT24sCisgICAgTWl4ZWQsCiB9OwogICAgIAotZW51bSBBY2Nlc3NpYmlsaXR5U29y
dERpcmVjdGlvbiB7Ci0gICAgU29ydERpcmVjdGlvbk5vbmUsCi0gICAgU29ydERpcmVjdGlvbkFz
Y2VuZGluZywKLSAgICBTb3J0RGlyZWN0aW9uRGVzY2VuZGluZywKLSAgICBTb3J0RGlyZWN0aW9u
T3RoZXIsCi0gICAgU29ydERpcmVjdGlvbkludmFsaWQKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb24geworICAgIE5vbmUsCisgICAgQXNjZW5kaW5nLAorICAgIERlc2NlbmRp
bmcsCisgICAgT3RoZXIsCisgICAgSW52YWxpZCwKIH07CiAKLWVudW0gQWNjZXNzaWJpbGl0eVNl
YXJjaERpcmVjdGlvbiB7Ci0gICAgU2VhcmNoRGlyZWN0aW9uTmV4dCA9IDEsCi0gICAgU2VhcmNo
RGlyZWN0aW9uUHJldmlvdXMKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlv
biB7CisgICAgTmV4dCA9IDEsCisgICAgUHJldmlvdXMsCiB9OwogCi1lbnVtIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXkgewotICAgIEFueVR5cGVTZWFyY2hLZXkgPSAxLAotICAgIEFydGljbGVTZWFy
Y2hLZXksCi0gICAgQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSwKLSAgICBCbG9ja3F1b3Rl
U2VhcmNoS2V5LAotICAgIEJvbGRGb250U2VhcmNoS2V5LAotICAgIEJ1dHRvblNlYXJjaEtleSwK
LSAgICBDaGVja0JveFNlYXJjaEtleSwKLSAgICBDb250cm9sU2VhcmNoS2V5LAotICAgIERpZmZl
cmVudFR5cGVTZWFyY2hLZXksCi0gICAgRm9udENoYW5nZVNlYXJjaEtleSwKLSAgICBGb250Q29s
b3JDaGFuZ2VTZWFyY2hLZXksCi0gICAgRnJhbWVTZWFyY2hLZXksCi0gICAgR3JhcGhpY1NlYXJj
aEtleSwKLSAgICBIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5LAotICAgIEhlYWRpbmdMZXZlbDJTZWFy
Y2hLZXksCi0gICAgSGVhZGluZ0xldmVsM1NlYXJjaEtleSwKLSAgICBIZWFkaW5nTGV2ZWw0U2Vh
cmNoS2V5LAotICAgIEhlYWRpbmdMZXZlbDVTZWFyY2hLZXksCi0gICAgSGVhZGluZ0xldmVsNlNl
YXJjaEtleSwKLSAgICBIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5LAotICAgIEhlYWRpbmdTZWFy
Y2hLZXksCi0gICAgSGlnaGxpZ2h0ZWRTZWFyY2hLZXksCi0gICAgSXRhbGljRm9udFNlYXJjaEtl
eSwKLSAgICBMYW5kbWFya1NlYXJjaEtleSwKLSAgICBMaW5rU2VhcmNoS2V5LAotICAgIExpc3RT
ZWFyY2hLZXksCi0gICAgTGl2ZVJlZ2lvblNlYXJjaEtleSwKLSAgICBNaXNzcGVsbGVkV29yZFNl
YXJjaEtleSwKLSAgICBPdXRsaW5lU2VhcmNoS2V5LAotICAgIFBsYWluVGV4dFNlYXJjaEtleSwK
LSAgICBSYWRpb0dyb3VwU2VhcmNoS2V5LAotICAgIFNhbWVUeXBlU2VhcmNoS2V5LAotICAgIFN0
YXRpY1RleHRTZWFyY2hLZXksCi0gICAgU3R5bGVDaGFuZ2VTZWFyY2hLZXksCi0gICAgVGFibGVT
YW1lTGV2ZWxTZWFyY2hLZXksCi0gICAgVGFibGVTZWFyY2hLZXksCi0gICAgVGV4dEZpZWxkU2Vh
cmNoS2V5LAotICAgIFVuZGVybGluZVNlYXJjaEtleSwKLSAgICBVbnZpc2l0ZWRMaW5rU2VhcmNo
S2V5LAotICAgIFZpc2l0ZWRMaW5rU2VhcmNoS2V5CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXkgeworICAgIEFueVR5cGUgPSAxLAorICAgIEFydGljbGUsCisgICAgQmxvY2txdW90
ZVNhbWVMZXZlbCwKKyAgICBCbG9ja3F1b3RlLAorICAgIEJvbGRGb250LAorICAgIEJ1dHRvbiwK
KyAgICBDaGVja0JveCwKKyAgICBDb250cm9sLAorICAgIERpZmZlcmVudFR5cGUsCisgICAgRm9u
dENoYW5nZSwKKyAgICBGb250Q29sb3JDaGFuZ2UsCisgICAgRnJhbWUsCisgICAgR3JhcGhpYywK
KyAgICBIZWFkaW5nTGV2ZWwxLAorICAgIEhlYWRpbmdMZXZlbDIsCisgICAgSGVhZGluZ0xldmVs
MywKKyAgICBIZWFkaW5nTGV2ZWw0LAorICAgIEhlYWRpbmdMZXZlbDUsCisgICAgSGVhZGluZ0xl
dmVsNiwKKyAgICBIZWFkaW5nU2FtZUxldmVsLAorICAgIEhlYWRpbmcsCisgICAgSGlnaGxpZ2h0
ZWQsCisgICAgSXRhbGljRm9udCwKKyAgICBMYW5kbWFyaywKKyAgICBMaW5rLAorICAgIExpc3Qs
CisgICAgTGl2ZVJlZ2lvbiwKKyAgICBNaXNzcGVsbGVkV29yZCwKKyAgICBPdXRsaW5lLAorICAg
IFBsYWluVGV4dCwKKyAgICBSYWRpb0dyb3VwLAorICAgIFNhbWVUeXBlLAorICAgIFN0YXRpY1Rl
eHQsCisgICAgU3R5bGVDaGFuZ2UsCisgICAgVGFibGVTYW1lTGV2ZWwsCisgICAgVGFibGUsCisg
ICAgVGV4dEZpZWxkLAorICAgIFVuZGVybGluZSwKKyAgICBVbnZpc2l0ZWRMaW5rLAorICAgIFZp
c2l0ZWRMaW5rLAogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91
bmRzIHsKLSAgICBGaXJzdFZpc2libGVQb3NpdGlvbkZvckJvdW5kcywKLSAgICBMYXN0VmlzaWJs
ZVBvc2l0aW9uRm9yQm91bmRzCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRp
b25Gb3JCb3VuZHMgeworICAgIEZpcnN0LAorICAgIExhc3QsCiB9OwogCiBzdHJ1Y3QgQWNjZXNz
aWJpbGl0eVNlYXJjaENyaXRlcmlhIHsKQEAgLTQxMCw3ICs0MDcsNyBAQCBzdHJ1Y3QgQWNjZXNz
aWJpbGl0eVNlYXJjaENyaXRlcmlhIHsKICAgICB7IH0KIH07CiAgICAgCi1lbnVtIEFjY2Vzc2li
aWxpdHlEZXRhY2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVkLCBFbGVtZW50RGVzdHJveWVkIH07
CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSB7IENhY2hlRGVzdHJveWVk
LCBFbGVtZW50RGVzdHJveWVkIH07CiAKIHN0cnVjdCBWaXNpYmxlUG9zaXRpb25SYW5nZSB7CiAK
QEAgLTQ1MCwxOCArNDQ3LDE4IEBAIHN0cnVjdCBQbGFpblRleHRSYW5nZSB7CiAgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiAhc3RhcnQgJiYgIWxlbmd0aDsgfQogfTsKIAotZW51bSBB
Y2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5IHsKLSAgICBGaW5kQW5kUmVwbGFjZUFjdGl2
aXR5LAotICAgIEZpbmRBbmRTZWxlY3RBY3Rpdml0eSwKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0
eVNlbGVjdFRleHRBY3Rpdml0eSB7CisgICAgRmluZEFuZFJlcGxhY2UsCisgICAgRmluZEFuZFNl
bGVjdCwKICAgICBGaW5kQW5kQ2FwaXRhbGl6ZSwKICAgICBGaW5kQW5kTG93ZXJjYXNlLAogICAg
IEZpbmRBbmRVcHBlcmNhc2UKIH07CiAKLWVudW0gQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJp
Z3VpdHlSZXNvbHV0aW9uIHsKLSAgICBDbG9zZXN0QWZ0ZXJTZWxlY3Rpb25BbWJpZ3VpdHlSZXNv
bHV0aW9uLAotICAgIENsb3Nlc3RCZWZvcmVTZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uLAot
ICAgIENsb3Nlc3RUb1NlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24KK2VudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uIHsKKyAgICBDbG9zZXN0QWZ0
ZXIsCisgICAgQ2xvc2VzdEJlZm9yZSwKKyAgICBDbG9zZXN0VG8KIH07CiAKIHN0cnVjdCBBY2Nl
c3NpYmlsaXR5U2VsZWN0VGV4dENyaXRlcmlhIHsKQEAgLTQ3NywxNiArNDc0LDE2IEBAIHN0cnVj
dCBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dENyaXRlcmlhIHsKICAgICB7IH0KIH07CiAKLWVudW0g
QWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlw
dCB9OwotZW51bSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFByZVN1
YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlwdCB9
OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUgeyBTdWJzY3Jp
cHQsIFN1cGVyc2NyaXB0IH07CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3Jp
cHRPYmplY3RUeXBlIHsgUHJlU3Vic2NyaXB0LCBQcmVTdXBlcnNjcmlwdCwgUG9zdFN1YnNjcmlw
dCwgUG9zdFN1cGVyc2NyaXB0IH07CiAKLWVudW0gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3Rh
dGUgeyBBUklBQ3VycmVudEZhbHNlLCBBUklBQ3VycmVudFRydWUsIEFSSUFDdXJyZW50UGFnZSwg
QVJJQUN1cnJlbnRTdGVwLCBBUklBQ3VycmVudExvY2F0aW9uLCBBUklBQ3VycmVudERhdGUsIEFS
SUFDdXJyZW50VGltZSB9OworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0
ZSB7IEZhbHNlLCBUcnVlLCBQYWdlLCBTdGVwLCBMb2NhdGlvbiwgRGF0ZSwgVGltZSB9OwogICAg
IAogYm9vbCBub2RlSGFzUHJlc2VudGF0aW9uUm9sZShOb2RlKik7CiAgICAgCiBjbGFzcyBBY2Nl
c3NpYmlsaXR5T2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0eU9iamVjdD4g
ewogcHJvdGVjdGVkOgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QoKTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KCkgPSBkZWZhdWx0OwogICAgIAogcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vz
c2liaWxpdHlPYmplY3QoKTsKQEAgLTUxNyw3ICs1MTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdl
TWFwKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gSW1hZ2VNYXBSb2xlOyB9CisgICAg
dmlydHVhbCBib29sIGlzSW1hZ2VNYXAoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VC
dXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Bhc3N3
b3JkRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTI1LDExICs1MjIsMTEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFzc3dvcmRGaWVsZE9y
Q29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVh
bCBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFdlYkFyZWFS
b2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tib3goKSBjb25zdCB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBDaGVja0JveFJvbGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSYWRpb0J1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFJhZGlvQnV0dG9uUm9sZTsgfQorICAg
IGJvb2wgaXNXZWJBcmVhKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OldlYkFyZWE7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0
IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1JhZGlvQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOyB9CiAgICAgdmlydHVhbCBib29s
IGlzTmF0aXZlTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0xp
c3RCb3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBMaXN0Qm94Um9sZTsgfQorICAg
IGJvb2wgaXNMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RCb3g7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5l
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU1OSw0MyArNTU2LDQzIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzTWVudUxpc3RPcHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBTcGluQnV0dG9uUm9sZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0
b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvbjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJl
bCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBTd2l0Y2hSb2xlOyB9Ci0gICAgYm9vbCBpc1RvZ2dsZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRvZ2dsZUJ1dHRvblJvbGU7IH0K
KyAgICBib29sIGlzU3dpdGNoKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaDsgfQorICAgIGJvb2wgaXNUb2dnbGVCdXR0b24oKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOyB9
CiAgICAgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc0FSSUFUZXh0Q29u
dHJvbCgpIGNvbnN0OwogICAgIGJvb2wgaXNOb25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0Owot
ICAgIGJvb2wgaXNUYWJMaXN0KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVGFiTGlz
dFJvbGU7IH0KLSAgICBib29sIGlzVGFiSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IFRhYlJvbGU7IH0KLSAgICBib29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IFJhZGlvR3JvdXBSb2xlOyB9Ci0gICAgYm9vbCBpc0NvbWJvQm94KCkgY29u
c3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQ29tYm9Cb3hSb2xlOyB9Ci0gICAgYm9vbCBpc1Ry
ZWUoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBUcmVlUm9sZTsgfQotICAgIGJvb2wg
aXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRyZWVHcmlkUm9sZTsg
fQotICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRy
ZWVJdGVtUm9sZTsgfQotICAgIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBTY3JvbGxCYXJSb2xlOyB9CisgICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDsgfQorICAg
IGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRhYjsgfQorICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA7IH0KKyAgICBib29s
IGlzQ29tYm9Cb3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q29tYm9Cb3g7IH0KKyAgICBib29sIGlzVHJlZSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOyB9CisgICAgYm9vbCBpc1RyZWVHcmlk
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVH
cmlkOyB9CisgICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOyB9CisgICAgYm9vbCBpc1Njcm9sbGJhcigp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxC
YXI7IH0KICAgICBib29sIGlzQnV0dG9uKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpc3RJdGVtKCkg
Y29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTGlzdEl0ZW1Sb2xlOyB9CisgICAgYm9vbCBp
c0xpc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RJdGVtOyB9CiAgICAgYm9vbCBpc0NoZWNrYm94T3JSYWRpbygpIGNvbnN0IHsgcmV0
dXJuIGlzQ2hlY2tib3goKSB8fCBpc1JhZGlvQnV0dG9uKCk7IH0KLSAgICBib29sIGlzU2Nyb2xs
VmlldygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNjcm9sbEFyZWFSb2xlOyB9Ci0g
ICAgYm9vbCBpc0NhbnZhcygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IENhbnZhc1Jv
bGU7IH0KLSAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBQb3BVcEJ1dHRvblJvbGU7IH0KKyAgICBib29sIGlzU2Nyb2xsVmlldygpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Cisg
ICAgYm9vbCBpc0NhbnZhcygpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpDYW52YXM7IH0KKyAgICBib29sIGlzUG9wVXBCdXR0b24oKSBjb25zdCB7IHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247IH0KICAg
ICBib29sIGlzQmxvY2txdW90ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0
OwotICAgIGJvb2wgaXNDb2xvcldlbGwoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBD
b2xvcldlbGxSb2xlOyB9CisgICAgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0IHsgcmV0dXJuIHJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2xvcldlbGw7IH0KICAgICBib29sIGlz
UmFuZ2VDb250cm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc01ldGVyKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc1NwbGl0dGVyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU3BsaXR0ZXJSb2xl
OyB9Ci0gICAgYm9vbCBpc1Rvb2xiYXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBU
b29sYmFyUm9sZTsgfQorICAgIGJvb2wgaXNTcGxpdHRlcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjsgfQorICAgIGJvb2wgaXNUb29s
YmFyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRv
b2xiYXI7IH0KICAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0OwogICAgIGJvb2wg
aXNTdWJzY3JpcHRTdHlsZUdyb3VwKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N1cGVyc2NyaXB0U3R5
bGVHcm91cCgpIGNvbnN0OwogICAgIGJvb2wgaXNGaWd1cmVFbGVtZW50KCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBTdW1tYXJ5Um9s
ZTsgfQorICAgIGJvb2wgaXNTdW1tYXJ5KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnk7IH0KICAgICBib29sIGlzT3V0cHV0KCkgY29uc3Q7
CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC02MjgsNyArNjI1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1l
Rm9udChSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkgY29uc3QgeyByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGU7IH0KKyAgICBib29sIGlzU3RhdGljVGV4dCgp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNU
ZXh0OyB9CiAgICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgYm9vbCBoYXNIaWdobGlnaHRpbmcoKSBjb25zdDsKIApAQCAtNzU5LDcgKzc1
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3Bv
bmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIAotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBVbmtub3duUm9s
ZTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBj
b25zdCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaW5oZXJpdHNQcmVz
ZW50YXRpb25hbFJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTAwOCw3ICsxMDA1
LDcgQEAgcHVibGljOgogICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0byBhIGdpdmVuIHBvaW50
IGluIGdsb2JhbCBjb29yZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KICAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAg
IAotICAgIGVudW0gU2Nyb2xsQnlQYWdlRGlyZWN0aW9uIHsgVXAsIERvd24sIExlZnQsIFJpZ2h0
IH07CisgICAgZW51bSBjbGFzcyBTY3JvbGxCeVBhZ2VEaXJlY3Rpb24geyBVcCwgRG93biwgTGVm
dCwgUmlnaHQgfTsKICAgICBib29sIHNjcm9sbEJ5UGFnZShTY3JvbGxCeVBhZ2VEaXJlY3Rpb24p
IGNvbnN0OwogICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgSW50U2l6
ZSBzY3JvbGxDb250ZW50c1NpemUoKSBjb25zdDsgICAgCkBAIC0xMTAyLDcgKzEwOTksNyBAQCBw
dWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxh
dGZvcm1JbmNsdWRlc09iamVjdCgpIGNvbnN0OwogI2Vsc2UKICAgICBib29sIGFjY2Vzc2liaWxp
dHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBEZWZhdWx0QmVoYXZpb3I7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOyB9
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTExMzUsMTQgKzExMzIsMTQgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBY2Nlc3Np
YmlsaXR5T2JqZWN0Kik7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgQVhJRCBtX2lkOworICAgIEFY
SUQgbV9pZCB7IDAgfTsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJl
bjsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXZlQ2hpbGRyZW47Ci0gICAgQWNjZXNzaWJpbGl0eVJv
bGUgbV9yb2xlOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gbV9sYXN0S25vd25J
c0lnbm9yZWRWYWx1ZTsKLSAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEg
bV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YTsKLSAgICBib29sIG1fY2hpbGRyZW5EaXJ0eTsKLSAg
ICBib29sIG1fc3VidHJlZURpcnR5OworICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGlsZHJlbiB7
IGZhbHNlIH07CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgbV9yb2xlIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OlVua25vd24gfTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIG1fbGFzdEtu
b3duSXNJZ25vcmVkVmFsdWUgeyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0
QmVoYXZpb3IgfTsKKyAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgbV9p
c0lnbm9yZWRGcm9tUGFyZW50RGF0YSB7IH07CisgICAgYm9vbCBtX2NoaWxkcmVuRGlydHkgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9zdWJ0cmVlRGlydHkgeyBmYWxzZSB9OwogCiAgICAgdm9pZCBz
ZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEmIGRhdGEpIHsgbV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YSA9IGRhdGE7IH0KIApAQCAt
MTE4MCw3ICsxMTc3LDcgQEAgcHJvdGVjdGVkOgogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIENP
TVB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4gbV93cmFwcGVyOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIEF0a09iamVjdCogbV93cmFwcGVyOworICAgIEF0a09iamVjdCogbV93cmFw
cGVyIHsgbnVsbHB0ciB9OwogI2VsaWYgUExBVEZPUk0oV1BFKQogICAgIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcj4gbV93cmFwcGVyOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dy
ZXNzSW5kaWNhdG9yLmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBQcm9ncmVzc0luZGljYXRvclJvbGU7IH0KKyAgICBBY2Nl
c3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3I7IH0KIAogICAgIGJvb2wgaXNQcm9ncmVzc0lu
ZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTEsMTEgKzQ5MSwxMSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVy
CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAg
ICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51QmFyUm9sZSkKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcikKICAgICAgICAgcmV0
dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUobV9yZW5kZXJlci0+cGFyZW50KCkpOwog
CiAgICAgLy8gbWVudUJ1dHRvbiBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgbWVudSBhcmUgRE9NIHNp
YmxpbmdzLCBidXQgQWNjZXNzaWJpbGl0eSBuZWVkcyB0aGVtIHRvIGJlIHBhcmVudC9jaGlsZAot
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVSb2xlKSB7CisgICAgaWYgKGFyaWFS
b2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUpIHsKICAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbWVudUJ1dHRvbkZvck1lbnUoKTsKICAgICAgICAg
aWYgKHBhcmVudCkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CkBAIC01MjQsNyArNTI0LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0F0dGFjaAogICAgIC8vIFdpZGdl
dHMgYXJlIHRoZSByZXBsYWNlZCBlbGVtZW50cyB0aGF0IHdlIHJlcHJlc2VudCB0byBBWCBhcyBh
dHRhY2htZW50cwogICAgIGJvb2wgaXNXaWRnZXQgPSByZW5kZXJlci0+aXNXaWRnZXQoKTsKIAot
ICAgIHJldHVybiBpc1dpZGdldCAmJiBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFVua25vd25Sb2xl
OworICAgIHJldHVybiBpc1dpZGdldCAmJiBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpVbmtub3duOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzRmlsZVVwbG9hZEJ1dHRvbigpIGNvbnN0CkBAIC02MTIsNyArNjEyLDcgQEAgU3RyaW5nIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlbHBUZQogICAgICAgICAvLyBPbmx5IHRha2UgaGVs
cCB0ZXh0IGZyb20gYW4gYW5jZXN0b3IgZWxlbWVudCBpZiBpdHMgYSBncm91cCBvciBhbiB1bmtu
b3duIHJvbGUuIElmIGhlbHAgd2FzIAogICAgICAgICAvLyBhZGRlZCB0byB0aG9zZSBraW5kcyBv
ZiBlbGVtZW50cywgaXQgaXMgbGlrZWx5IGl0IHdhcyBtZWFudCBmb3IgYSBjaGlsZCBlbGVtZW50
LgogICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmogPSBheE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKGFuY2VzdG9yKSkgewotICAgICAgICAgICAgaWYgKCFheE9iai0+aXNH
cm91cCgpICYmIGF4T2JqLT5yb2xlVmFsdWUoKSAhPSBVbmtub3duUm9sZSkKKyAgICAgICAgICAg
IGlmICghYXhPYmotPmlzR3JvdXAoKSAmJiBheE9iai0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CkBAIC03NDMsNyArNzQzLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnN0cmluZwogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNzc0JveCA9IHJlbmRlckJveE1v
ZGVsT2JqZWN0KCk7CiAKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBTdGF0aWNUZXh0
Um9sZSkgeworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpTdGF0aWNUZXh0KSB7CiAgICAgICAgIFN0cmluZyBzdGF0aWNUZXh0ID0gdGV4dCgpOwogICAg
ICAgICBpZiAoIXN0YXRpY1RleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICBzdGF0aWNUZXh0ID0g
dGV4dFVuZGVyRWxlbWVudCgpOwpAQCAtOTYxLDcgKzk2MSw3IEBAIEVTcGVhayBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzcGVha1AKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBsaW5rZWRVSUVsZW1lbnRzKSBjb25zdAogewog
ICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBwYXJlbnQtPmNoaWxkcmVuKCkpIHsKLSAgICAg
ICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBSYWRpb0J1dHRvblJvbGUpCisgICAgICAgIGlm
IChjaGlsZC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uKQog
ICAgICAgICAgICAgbGlua2VkVUlFbGVtZW50cy5hcHBlbmQoY2hpbGQpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBhZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oY2hpbGQuZ2V0KCksIGxp
bmtlZFVJRWxlbWVudHMpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkUmFkaW8KICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YWRkUmFkaW9CdXR0b25Hcm91cE1lbWJlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBsaW5rZWRVSUVsZW1lbnRzKSBjb25zdAogewotICAgIGlmIChyb2xlVmFsdWUoKSAhPSBSYWRp
b0J1dHRvblJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpS
YWRpb0J1dHRvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSB0aGlz
LT5ub2RlKCk7CkBAIC05ODMsNyArOTgzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRSYWRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5k
IGFueSByYWRpbyBidXR0b24gc2libGluZ3Mgd2l0aCB0aGUgdHJhZGl0aW9uYWwgbmFtaW5nLCBs
ZXRzIHNlYXJjaCBmb3IgYSByYWRpbyBncm91cCByb2xlIGFuZCBmaW5kIGl0cyBjaGlsZHJlbi4K
ICAgICAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3Qo
KTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAgICAg
ICBpZiAocGFyZW50LT5yb2xlVmFsdWUoKSA9PSBSYWRpb0dyb3VwUm9sZSkKKyAgICAgICAgICAg
IGlmIChwYXJlbnQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3Vw
KQogICAgICAgICAgICAgICAgIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihwYXJlbnQsIGxp
bmtlZFVJRWxlbWVudHMpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTAwMSw3ICsxMDAxLDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpsaW5rZWRVSQogICAgICAgICAgICAgbGlu
a2VkVUlFbGVtZW50cy5hcHBlbmQobGlua2VkQVhFbGVtZW50KTsKICAgICB9CiAKLSAgICBpZiAo
cm9sZVZhbHVlKCkgPT0gUmFkaW9CdXR0b25Sb2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24pCiAgICAgICAgIGFkZFJhZGlvQnV0dG9uR3Jv
dXBNZW1iZXJzKGxpbmtlZFVJRWxlbWVudHMpOwogfQogCkBAIC0xMTA2LDcgKzExMDYsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQWxsb3dlCiAgICAgYm9vbCBpc0luVHJl
ZSA9IGZhbHNlOwogICAgIGJvb2wgaXNUcmVlSXRlbURlc2NlbmRhbnQgPSBmYWxzZTsKICAgICB3
aGlsZSAoYXhPYmopIHsKLSAgICAgICAgaWYgKGF4T2JqLT5yb2xlVmFsdWUoKSA9PSBUcmVlSXRl
bVJvbGUpCisgICAgICAgIGlmIChheE9iai0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVJdGVtKQogICAgICAgICAgICAgaXNUcmVlSXRlbURlc2NlbmRhbnQgPSB0cnVlOwog
ICAgICAgICBpZiAoYXhPYmotPmlzVHJlZSgpKSB7CiAgICAgICAgICAgICBpc0luVHJlZSA9IHRy
dWU7CkBAIC0xMTE4LDcgKzExMTgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzQWxsb3dlCiAgICAgLy8gSWYgdGhlIG9iamVjdCBpcyBpbiBhIHRyZWUsIG9ubHkgdHJlZSBp
dGVtcyBzaG91bGQgYmUgZXhwb3NlZCAoYW5kIHRoZSBjaGlsZHJlbiBvZiB0cmVlIGl0ZW1zKS4K
ICAgICBpZiAoaXNJblRyZWUpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJv
bGVWYWx1ZSgpOwotICAgICAgICBpZiAocm9sZSAhPSBUcmVlSXRlbVJvbGUgJiYgcm9sZSAhPSBT
dGF0aWNUZXh0Um9sZSAmJiAhaXNUcmVlSXRlbURlc2NlbmRhbnQpCisgICAgICAgIGlmIChyb2xl
ICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbSAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlS
b2xlOjpTdGF0aWNUZXh0ICYmICFpc1RyZWVJdGVtRGVzY2VuZGFudCkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTI4LDEzICsxMTI4LDEz
IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIG9iamUKIHsKICAgICAvLyBE
b24ndCBpZ25vcmUgYW4gaW1hZ2UgdGhhdCBoYXMgYW4gYWx0IHRhZy4KICAgICBpZiAoIWFsdFRl
eHQuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKQotICAgICAgICByZXR1cm4gSW5jbHVkZU9iamVj
dDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVP
YmplY3Q7CiAgICAgCiAgICAgLy8gVGhlIGluZm9ybWFsIHN0YW5kYXJkIGlzIHRvIGlnbm9yZSBp
bWFnZXMgd2l0aCB6ZXJvLWxlbmd0aCBhbHQgc3RyaW5ncy4KICAgICBpZiAoIWFsdFRleHQuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAgCi0gICAgcmV0dXJu
IERlZmF1bHRCZWhhdmlvcjsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lv
bjo6RGVmYXVsdEJlaGF2aW9yOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdApA
QCAtMTE0MiwxNCArMTE0MiwxNCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFjY2Vz
c2liaWxpCiAgICAgLy8gVGhlIGZvbGxvd2luZyBjYXNlcyBjYW4gYXBwbHkgdG8gYW55IGVsZW1l
bnQgdGhhdCdzIGEgc3ViY2xhc3Mgb2YgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KICAgICAK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAK
ICAgICBpZiAobV9yZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkgewog
ICAgICAgICAvLyBhcmlhLWhpZGRlbiBpcyBtZWFudCB0byBvdmVycmlkZSB2aXNpYmlsaXR5IGFz
IHRoZSBkZXRlcm1pbmFudCBpbiBBWCBoaWVyYXJjaHkgaW5jbHVzaW9uLgogICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0
ciksICJmYWxzZSIpKQotICAgICAgICAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKKyAgICAg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZp
b3I7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogICAgIH0KIAog
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7
CkBAIC0xMTc5LDE5ICsxMTc5LDE5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
Y29tcHV0ZUEKICAgICAvLyBUaGVuIHByb2Nlc3Mgb3RoZXIgdXNlIGNhc2VzIHRoYXQgbmVlZCB0
byBiZSBhcHBsaWVkIHRvIGFsbCB0aGUgdmFyaW91cyByb2xlcwogICAgIC8vIHRoYXQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdHMgdGFrZSBvbi4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uIGRlY2lzaW9uID0gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpOwotICAgIGlmIChkZWNp
c2lvbiA9PSBJbmNsdWRlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgd2l0aGluIGEgcGFyZW50IHRo
YXQgY2Fubm90IGhhdmUgY2hpbGRyZW4sIGl0IHNob3VsZCBub3QgYmUgZXhwb3NlZC4KICAgICBp
ZiAoaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7ICAg
IAogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBJZ25vcmVkUm9sZSkKKyAgICBpZiAocm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBQcmVzZW50YXRpb25hbFJvbGUgfHwg
aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsIHx8IGluaGVyaXRzUHJlc2VudGF0aW9uYWxS
b2xlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIFdlYkFyZWFzIHNob3Vs
ZCBiZSBpZ25vcmVkIGlmIHRoZWlyIGlmcmFtZSBjb250YWluZXIgaXMgbWFya2VkIGFzIHByZXNl
bnRhdGlvbmFsLgpAQCAtMTIyNiw3ICsxMjI2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojpjb21wdXRlQQogICAgIGlmIChpczxSZW5kZXJUZXh0PigqbV9yZW5kZXJlcikpIHsK
ICAgICAgICAgLy8gc3RhdGljIHRleHQgYmVuZWF0aCBNZW51SXRlbXMgYW5kIE1lbnVCdXR0b25z
IGFyZSBqdXN0IHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIG1lbnUgaXRlbSwgc28gaXQncyBpZ25v
cmVkIG9uIGFuIGluZGl2aWR1YWwgbGV2ZWwKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgICAgIGlmIChwYXJlbnQgJiYg
KHBhcmVudC0+aXNNZW51SXRlbSgpIHx8IHBhcmVudC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBN
ZW51QnV0dG9uUm9sZSkpCisgICAgICAgIGlmIChwYXJlbnQgJiYgKHBhcmVudC0+aXNNZW51SXRl
bSgpIHx8IHBhcmVudC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUJ1dHRvbikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYXV0byYgcmVu
ZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKTsKICAgICAgICAgaWYg
KCFyZW5kZXJUZXh0Lmhhc1JlbmRlcmVkVGV4dCgpKQpAQCAtMTIzNCw3ICsxMjM0LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQQogCiAgICAgICAgIC8vIHN0YXRp
YyB0ZXh0IGJlbmVhdGggVGV4dENvbnRyb2xzIGlzIHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIHRl
eHQgY29udHJvbCB0ZXh0IHNvIGl0J3MgaWdub3JlZC4KICAgICAgICAgZm9yIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJl
bnQtPnBhcmVudE9iamVjdCgpKSB7IAotICAgICAgICAgICAgaWYgKHBhcmVudC0+cm9sZVZhbHVl
KCkgPT0gVGV4dEZpZWxkUm9sZSkKKyAgICAgICAgICAgIGlmIChwYXJlbnQtPnJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMjQ1LDkgKzEyNDUsOSBAQCBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAgICAgICAgIC8vIFRoZSBhbHQgYXR0
cmlidXRlIG1heSBiZSBzZXQgb24gYSB0ZXh0IGZyYWdtZW50IHRocm91Z2ggQ1NTLCB3aGljaCBz
aG91bGQgYmUgaG9ub3JlZC4KICAgICAgICAgaWYgKGlzPFJlbmRlclRleHRGcmFnbWVudD4ocmVu
ZGVyVGV4dCkpIHsKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWx0
VGV4dEluY2x1c2lvbiA9IG9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KGRvd25jYXN0PFJlbmRl
clRleHRGcmFnbWVudD4ocmVuZGVyVGV4dCkuYWx0VGV4dCgpKTsKLSAgICAgICAgICAgIGlmIChh
bHRUZXh0SW5jbHVzaW9uID09IElnbm9yZU9iamVjdCkKKyAgICAgICAgICAgIGlmIChhbHRUZXh0
SW5jbHVzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChhbHRUZXh0SW5j
bHVzaW9uID09IEluY2x1ZGVPYmplY3QpCisgICAgICAgICAgICBpZiAoYWx0VGV4dEluY2x1c2lv
biA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJU
ZXh0RnJhZ21lbnQ+KHJlbmRlclRleHQpLmZpcnN0TGV0dGVyKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xMjc0LDI0ICsxMjc0LDI0IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Y29tcHV0ZUEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNo
IChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQXVkaW9Sb2xlOgotICAgIGNhc2UgRGVzY3JpcHRp
b25MaXN0VGVybVJvbGU6Ci0gICAgY2FzZSBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlOgotICAg
IGNhc2UgRGV0YWlsc1JvbGU6Ci0gICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgotICAgIGNh
c2UgTGFuZG1hcmtSZWdpb25Sb2xlOgotICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgotICAgIGNhc2Ug
VGltZVJvbGU6Ci0gICAgY2FzZSBWaWRlb1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXVkaW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0VGVy
bToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3REZXRhaWw6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlsczoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudEFydGljbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpWaWRlbzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3du
Um9sZSkKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChyb2xlVmFsdWUo
KSA9PSBIb3Jpem9udGFsUnVsZVJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIC8vIGRvbid0IGlnbm9yZSBsYWJlbHMsIGJlY2F1c2UgdGhleSBzZXJ2ZSBhcyBUaXRsZVVJ
RWxlbWVudHMKQEAgLTEzMzEsMTYgKzEzMzEsMTYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojpjb21wdXRlQQogICAgICAgICAKICAgICAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIFJl
bmRlckltYWdlJ3MgYWx0VGV4dCAod2hpY2ggY2FuIGJlIHNldCB0aHJvdWdoIGEgc3R5bGUgc2hl
ZXQsIG9yIGNvbWUgZnJvbSB0aGUgRWxlbWVudCkuCiAgICAgICAgIC8vIEhvd2V2ZXIsIGlmIHRo
aXMgaXMgbm90IGEgbmF0aXZlIGltYWdlLCBmYWxsYmFjayB0byB0aGUgYXR0cmlidXRlIG9uIHRo
ZSBFbGVtZW50LgotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFsdFRleHRJ
bmNsdXNpb24gPSBEZWZhdWx0QmVoYXZpb3I7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb24gYWx0VGV4dEluY2x1c2lvbiA9IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
OkRlZmF1bHRCZWhhdmlvcjsKICAgICAgICAgYm9vbCBpc1JlbmRlckltYWdlID0gaXM8UmVuZGVy
SW1hZ2U+KHJlbmRlcmVyKCkpOwogICAgICAgICBpZiAoaXNSZW5kZXJJbWFnZSkKICAgICAgICAg
ICAgIGFsdFRleHRJbmNsdXNpb24gPSBvYmplY3RJbmNsdXNpb25Gcm9tQWx0VGV4dChkb3duY2Fz
dDxSZW5kZXJJbWFnZT4oKm1fcmVuZGVyZXIpLmFsdFRleHQoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGFsdFRleHRJbmNsdXNpb24gPSBvYmplY3RJbmNsdXNpb25Gcm9tQWx0VGV4dChn
ZXRBdHRyaWJ1dGUoYWx0QXR0cikuc3RyaW5nKCkpOwogCi0gICAgICAgIGlmIChhbHRUZXh0SW5j
bHVzaW9uID09IElnbm9yZU9iamVjdCkKKyAgICAgICAgaWYgKGFsdFRleHRJbmNsdXNpb24gPT0g
QWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChhbHRUZXh0SW5jbHVzaW9uID09IEluY2x1ZGVPYmpl
Y3QpCisgICAgICAgIGlmIChhbHRUZXh0SW5jbHVzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIAogICAgICAgICAvLyBJZiBhbiBpbWFnZSBoYXMgYSB0aXRsZSBhdHRyaWJ1dGUgb24gaXQs
IGFjY2Vzc2liaWxpdHkgc2hvdWxkIGJlIGxlbmllbnQgYW5kIGFsbG93IGl0IHRvIGFwcGVhciBp
biB0aGUgaGllcmFyY2h5IChhY2NvcmRpbmcgdG8gV0FJLUFSSUEpLgpAQCAtMTQwMyw3ICsxNDAz
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQQogCiAgICAgLy8g
PHNwYW4+IHRhZ3MgYXJlIGlubGluZSB0YWdzIGFuZCBub3QgbWVhbnQgdG8gY29udmV5IGluZm9y
bWF0aW9uIGlmIHRoZXkgaGF2ZSBubyBvdGhlciBhcmlhCiAgICAgLy8gaW5mb3JtYXRpb24gb24g
dGhlbS4gSWYgd2UgZG9uJ3QgaWdub3JlIHRoZW0sIHRoZXkgbWF5IGVtaXQgc2lnbmFscyBleHBl
Y3RlZCB0byBjb21lIGZyb20KLSAgICAvLyB0aGVpciBwYXJlbnQuIEluIGFkZGl0aW9uLCBiZWNh
dXNlIGluY2x1ZGVkIHNwYW5zIGFyZSBHcm91cFJvbGUgb2JqZWN0cywgYW5kIEdyb3VwUm9sZQor
ICAgIC8vIHRoZWlyIHBhcmVudC4gSW4gYWRkaXRpb24sIGJlY2F1c2UgaW5jbHVkZWQgc3BhbnMg
YXJlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCBvYmplY3RzLCBhbmQgQWNjZXNzaWJpbGl0eVJv
bGU6Okdyb3VwCiAgICAgLy8gb2JqZWN0cyBhcmUgb2Z0ZW4gY29udGFpbmVycyB3aXRoIG1lYW5p
bmdmdWwgaW5mb3JtYXRpb24sIHRoZSBpbmNsdXNpb24gb2YgYSBzcGFuIGNhbiBoYXZlCiAgICAg
Ly8gdGhlIHNpZGUgZWZmZWN0IG9mIGNhdXNpbmcgdGhlIGltbWVkaWF0ZSBwYXJlbnQgYWNjZXNz
aWJsZSB0byBiZSBpZ25vcmVkLiBUaGlzIGlzIGVzcGVjaWFsbHkKICAgICAvLyBwcm9ibGVtYXRp
YyBmb3IgcGxhdGZvcm1zIHdoaWNoIGhhdmUgZGlzdGluY3Qgcm9sZXMgZm9yIHRleHR1YWwgYmxv
Y2sgZWxlbWVudHMuCkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUg
PSBhcmlhUm9sZUF0dHJpYnV0ZSgpOwogICAgIC8vIFVzZSB0aGUgdGV4dCBjb250cm9sIG5hdGl2
ZSByYW5nZSBpZiBpdCdzIGEgbmF0aXZlIG9iamVjdCBhbmQgaXQgaGFzIG5vIEFSSUEgcm9sZSAo
b3IgaGFzIGEgdGV4dCBiYXNlZCBBUklBIHJvbGUpLgotICAgIGlmIChpc05hdGl2ZVRleHRDb250
cm9sKCkgJiYgKGFyaWFSb2xlID09IFVua25vd25Sb2xlIHx8IGlzQVJJQVRleHRDb250cm9sKCkp
KSB7CisgICAgaWYgKGlzTmF0aXZlVGV4dENvbnRyb2woKSAmJiAoYXJpYVJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlVua25vd24gfHwgaXNBUklBVGV4dENvbnRyb2woKSkpIHsKICAgICAgICAg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250cm9sID0gZG93bmNhc3Q8UmVuZGVy
VGV4dENvbnRyb2w+KCptX3JlbmRlcmVyKS50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCk7CiAgICAg
ICAgIHJldHVybiBQbGFpblRleHRSYW5nZSh0ZXh0Q29udHJvbC5zZWxlY3Rpb25TdGFydCgpLCB0
ZXh0Q29udHJvbC5zZWxlY3Rpb25FbmQoKSAtIHRleHRDb250cm9sLnNlbGVjdGlvblN0YXJ0KCkp
OwogICAgIH0KQEAgLTE2NzUsNyArMTY3NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNUYWJJdGUKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFiUGFuZWwgPSBj
YWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7CiAKICAgICAgICAgLy8gQSB0YWIgaXRlbSBzaG91
bGQgb25seSBjb250cm9sIHRhYiBwYW5lbHMuCi0gICAgICAgIGlmICghdGFiUGFuZWwgfHwgdGFi
UGFuZWwtPnJvbGVWYWx1ZSgpICE9IFRhYlBhbmVsUm9sZSkKKyAgICAgICAgaWYgKCF0YWJQYW5l
bCB8fCB0YWJQYW5lbC0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVs
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjaGVja0ZvY3VzRWxlbWVudCA9IGZvY3VzZWRFbGVtZW50OwpAQCAtMTcwNCw3ICsx
NzA0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZvY3VzZQogICAgIC8v
IEEgd2ViIGFyZWEgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIERvY3VtZW50IG5vZGUgaW4gdGhlIERP
TSB0cmVlLCB3aGljaCBpc24ndCBmb2N1c2FibGUuCiAgICAgLy8gQ2hlY2sgaW5zdGVhZCBpZiB0
aGUgZnJhbWUncyBzZWxlY3Rpb24gY29udHJvbGxlciBpcyBmb2N1c2VkCiAgICAgaWYgKGZvY3Vz
ZWRFbGVtZW50ID09IG1fcmVuZGVyZXItPm5vZGUoKQotICAgICAgICB8fCAocm9sZVZhbHVlKCkg
PT0gV2ViQXJlYVJvbGUgJiYgZG9jdW1lbnQuZnJhbWUoKS0+c2VsZWN0aW9uKCkuaXNGb2N1c2Vk
QW5kQWN0aXZlKCkpKQorICAgICAgICB8fCAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OldlYkFyZWEgJiYgZG9jdW1lbnQuZnJhbWUoKS0+c2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5k
QWN0aXZlKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xNzQ2LDcgKzE3NDYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNl
dFNlbGVjCiB7CiAgICAgLy8gU2V0dGluZyBzZWxlY3RlZCBvbmx5IG1ha2VzIHNlbnNlIGluIHRy
ZWVzIGFuZCB0YWJsZXMgKGFuZCB0cmVlLXRhYmxlcykuCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSA9IHJvbGVWYWx1ZSgpOwotICAgIGlmIChyb2xlICE9IFRyZWVSb2xlICYmIHJvbGUgIT0g
VHJlZUdyaWRSb2xlICYmIHJvbGUgIT0gVGFibGVSb2xlICYmIHJvbGUgIT0gR3JpZFJvbGUpCisg
ICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWUgJiYgcm9sZSAhPSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VHJlZUdyaWQgJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGUg
JiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZCkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGJvb2wgaXNNdWx0aSA9IGlzTXVsdGlTZWxlY3RhYmxlKCk7CkBAIC0xODM1LDcgKzE4
MzUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3VtCiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRvKiBwYXJlbnQgPSBjdXJyZW50LT5wYXJlbnROb2Rl
KCk7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEFyZWFFbGVtZW50PigqY3VycmVudCkgJiYgaXM8
SFRNTE1hcEVsZW1lbnQ+KHBhcmVudCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBhcmVhT2Jq
ZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluaz4oKmF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUoSW1hZ2VNYXBMaW5rUm9sZSkpOworICAgICAgICAgICAgICAgIGF1dG8m
IGFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5rKSk7
CiAgICAgICAgICAgICAgICAgSFRNTE1hcEVsZW1lbnQmIG1hcCA9IGRvd25jYXN0PEhUTUxNYXBF
bGVtZW50PigqcGFyZW50KTsKICAgICAgICAgICAgICAgICBhcmVhT2JqZWN0LnNldEhUTUxBcmVh
RWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGN1cnJlbnQpKTsKICAgICAgICAgICAg
ICAgICBhcmVhT2JqZWN0LnNldEhUTUxNYXBFbGVtZW50KCZtYXApOwpAQCAtMjQxMSwxOCArMjQx
MSwxOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNob3VsZE5vCiBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNv
bnN0CiB7CiAgICAgc3dpdGNoIChhcmlhUm9sZUF0dHJpYnV0ZSgpKSB7Ci0gICAgY2FzZSBBcHBs
aWNhdGlvbkdyb3VwUm9sZToKLSAgICBjYXNlIExpc3RCb3hSb2xlOgotICAgIGNhc2UgTWVudVJv
bGU6Ci0gICAgY2FzZSBNZW51QmFyUm9sZToKLSAgICBjYXNlIFJhZGlvR3JvdXBSb2xlOgotICAg
IGNhc2UgUm93Um9sZToKLSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICBjYXNlIFByb2dy
ZXNzSW5kaWNhdG9yUm9sZToKLSAgICBjYXNlIFRvb2xiYXJSb2xlOgotICAgIGNhc2UgT3V0bGlu
ZVJvbGU6Ci0gICAgY2FzZSBUcmVlUm9sZToKLSAgICBjYXNlIEdyaWRSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEJveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UmFkaW9Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VG9vbGJhcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpPdXRsaW5lOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jp
ZDoKICAgICAvKiBGSVhNRTogcmVwbGFjZSB0aGVzZSB3aXRoIGFjdHVhbCByb2xlcyB3aGVuIHRo
ZXkgYXJlIGFkZGVkIHRvIEFjY2Vzc2liaWxpdHlSb2xlCiAgICAgY29tcG9zaXRlCiAgICAgYWxl
cnQKQEAgLTI0NzQsMTEgKzI0NzQsMTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpoYW5kbGVBcgogICAgICAgICBib29sIGZvdW5kUGFyZW50ID0gZmFsc2U7CiAgICAgICAgIAog
ICAgICAgICBzd2l0Y2ggKGNvbnRhaW5lclBhcmVudC0+cm9sZVZhbHVlKCkpIHsKLSAgICAgICAg
Y2FzZSBUcmVlUm9sZToKLSAgICAgICAgY2FzZSBUcmVlR3JpZFJvbGU6Ci0gICAgICAgIGNhc2Ug
R3JpZFJvbGU6Ci0gICAgICAgIGNhc2UgVGFibGVSb2xlOgotICAgICAgICBjYXNlIEJyb3dzZXJS
b2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JpZDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGU6CisgICAg
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJyb3dzZXI6CiAgICAgICAgICAgICBmb3VuZFBh
cmVudCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTI1
MDAsNyArMjUwMCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFuZGxlQXIK
ICAgICAgICAgY2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY29udGFpbmVyUGFyZW50LCBkb2N1bWVu
dCgpLCBBWE9iamVjdENhY2hlOjpBWFJvd0NvdW50Q2hhbmdlZCk7CiAKICAgICAvLyBQb3N0IHRo
YXQgdGhlIHNwZWNpZmljIHJvdyBlaXRoZXIgY29sbGFwc2VkIG9yIGV4cGFuZGVkLgotICAgIGlm
IChyb2xlVmFsdWUoKSA9PSBSb3dSb2xlIHx8IHJvbGVWYWx1ZSgpID09IFRyZWVJdGVtUm9sZSkK
KyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvdyB8fCByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pCiAgICAgICAgIGNhY2hlLT5wb3N0
Tm90aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50KCksIGlzRXhwYW5kZWQoKSA/IEFYT2JqZWN0Q2Fj
aGU6OkFYUm93RXhwYW5kZWQgOiBBWE9iamVjdENhY2hlOjpBWFJvd0NvbGxhcHNlZCk7CiAgICAg
ZWxzZQogICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBkb2N1bWVudCgpLCBB
WE9iamVjdENhY2hlOjpBWEV4cGFuZGVkQ2hhbmdlZCk7CkBAIC0yNjA5LDcgKzI2MDksNyBAQCBT
dHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZXhwYW5kCiAKIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKHJvbGVWYWx1ZSgpID09IFN0YXRpY1RleHRSb2xlKSB7CisgICAgaWYgKHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0KSB7CiAgICAgICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKSkKICAgICAgICAgICAgIHJl
dHVybiBwYXJlbnQtPmhhc1RhZ05hbWUoYWJiclRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKGFj
cm9ueW1UYWcpOwogICAgIH0KQEAgLTI2MjAsMjUxICsyNjIwLDI1MSBAQCBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiB7CiAgICAgaWYg
KCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIAogICAgIC8vIFNvbWV0aW1lcyB3ZSBuZWVk
IHRvIGlnbm9yZSB0aGUgYXR0cmlidXRlIHJvbGUuIExpa2UgaWYgYSB0cmVlIGlzIG1hbGZvcm1l
ZCwKICAgICAvLyB3ZSB3YW50IHRvIGlnbm9yZSB0aGUgdHJlZWl0ZW0ncyBhdHRyaWJ1dGUgcm9s
ZS4KLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAh
PSBVbmtub3duUm9sZSAmJiAhc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpKQorICAgIGlmICgo
bV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duICYmICFzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkpCiAgICAgICAg
IHJldHVybiBtX2FyaWFSb2xlOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5u
b2RlKCk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNzc0JveCA9IHJlbmRlckJveE1vZGVs
T2JqZWN0KCk7CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5pc0xpbmsoKSkKLSAgICAgICAgcmV0
dXJuIFdlYkNvcmVMaW5rUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpX
ZWJDb3JlTGluazsKICAgICBpZiAobm9kZSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50Pigqbm9kZSkg
JiYgZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKm5vZGUpLmhhc0F0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24odXNlbWFwQXR0cikpCi0gICAgICAgIHJldHVybiBJbWFnZU1hcFJvbGU7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA7CiAgICAgaWYgKChj
c3NCb3ggJiYgY3NzQm94LT5pc0xpc3RJdGVtKCkpIHx8IChub2RlICYmIG5vZGUtPmhhc1RhZ05h
bWUobGlUYWcpKSkKLSAgICAgICAgcmV0dXJuIExpc3RJdGVtUm9sZTsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsKICAgICBpZiAobV9yZW5kZXJlci0+aXNMaXN0
TWFya2VyKCkpCi0gICAgICAgIHJldHVybiBMaXN0TWFya2VyUm9sZTsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0TWFya2VyOwogICAgIGlmIChub2RlICYmIG5vZGUtPmhh
c1RhZ05hbWUoYnV0dG9uVGFnKSkKICAgICAgICAgcmV0dXJuIGJ1dHRvblJvbGVUeXBlKCk7CiAg
ICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShsZWdlbmRUYWcpKQotICAgICAgICByZXR1
cm4gTGVnZW5kUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMZWdlbmQ7
CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzVGV4dCgpKQotICAgICAgICByZXR1cm4gU3RhdGljVGV4
dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsKICAg
ICBpZiAoY3NzQm94ICYmIGNzc0JveC0+aXNJbWFnZSgpKSB7CiAgICAgICAgIGlmIChpczxIVE1M
SW5wdXRFbGVtZW50Pihub2RlKSkKLSAgICAgICAgICAgIHJldHVybiBhcmlhSGFzUG9wdXAoKSA/
IFBvcFVwQnV0dG9uUm9sZSA6IEJ1dHRvblJvbGU7CisgICAgICAgICAgICByZXR1cm4gYXJpYUhh
c1BvcHVwKCkgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b24gOiBBY2Nlc3NpYmlsaXR5
Um9sZTo6QnV0dG9uOwogICAgICAgICBpZiAoaXNTVkdJbWFnZSgpKQotICAgICAgICAgICAgcmV0
dXJuIFNWR1Jvb3RSb2xlOwotICAgICAgICByZXR1cm4gSW1hZ2VSb2xlOworICAgICAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdSb290OworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6OkltYWdlOwogICAgIH0KICAgICAKICAgICBpZiAobm9kZSAmJiBub2RlLT5o
YXNUYWdOYW1lKGNhbnZhc1RhZykpCi0gICAgICAgIHJldHVybiBDYW52YXNSb2xlOworICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhczsKIAogICAgIGlmIChjc3NCb3ggJiYg
Y3NzQm94LT5pc1JlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFdlYkFyZWFSb2xlOworICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWE7CiAgICAgCiAgICAgaWYgKGNz
c0JveCAmJiBjc3NCb3gtPmlzVGV4dEZpZWxkKCkpIHsKICAgICAgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCpub2RlKS5pc1NlYXJjaEZpZWxkKCkgPyBTZWFyY2hGaWVsZFJvbGUgOiBUZXh0Rmll
bGRSb2xlOworICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpu
b2RlKS5pc1NlYXJjaEZpZWxkKCkgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQgOiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOwogICAgIH0KICAgICAKICAgICBpZiAoY3NzQm94
ICYmIGNzc0JveC0+aXNUZXh0QXJlYSgpKQotICAgICAgICByZXR1cm4gVGV4dEFyZWFSb2xlOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOwogCiAgICAgaWYgKGlz
PEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlu
cHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwogICAgICAgICBpZiAoaW5w
dXQuaXNDaGVja2JveCgpKQotICAgICAgICAgICAgcmV0dXJuIENoZWNrQm94Um9sZTsKKyAgICAg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g7CiAgICAgICAgIGlmIChp
bnB1dC5pc1JhZGlvQnV0dG9uKCkpCi0gICAgICAgICAgICByZXR1cm4gUmFkaW9CdXR0b25Sb2xl
OworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjsKICAg
ICAgICAgaWYgKGlucHV0LmlzVGV4dEJ1dHRvbigpKQogICAgICAgICAgICAgcmV0dXJuIGJ1dHRv
blJvbGVUeXBlKCk7CiAgICAgICAgIC8vIE9uIGlPUywgdGhlIGRhdGUgZmllbGQgYW5kIHRpbWUg
ZmllbGQgYXJlIHBvcHVwIGJ1dHRvbnMuIE9uIG90aGVyIHBsYXRmb3JtcyB0aGV5IGFyZSB0ZXh0
IGZpZWxkcy4KICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIGlmIChpbnB1dC5pc0RhdGVGaWVs
ZCgpIHx8IGlucHV0LmlzVGltZUZpZWxkKCkpCi0gICAgICAgICAgICByZXR1cm4gUG9wVXBCdXR0
b25Sb2xlOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRv
bjsKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgICAgICBpZiAoaW5w
dXQuaXNDb2xvckNvbnRyb2woKSkKLSAgICAgICAgICAgIHJldHVybiBDb2xvcldlbGxSb2xlOwor
ICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2xvcldlbGw7CiAjZW5kaWYK
ICAgICB9CiAgICAgCiAgICAgaWYgKGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpKQot
ICAgICAgICByZXR1cm4gVGV4dEFyZWFSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OlRleHRBcmVhOwogICAgIAogICAgIGlmIChpc0ZpbGVVcGxvYWRCdXR0b24oKSkKLSAg
ICAgICAgcmV0dXJuIEJ1dHRvblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QnV0dG9uOwogICAgIAogICAgIGlmIChjc3NCb3ggJiYgY3NzQm94LT5pc01lbnVMaXN0KCkp
Ci0gICAgICAgIHJldHVybiBQb3BVcEJ1dHRvblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6UG9wVXBCdXR0b247CiAgICAgCiAgICAgaWYgKGhlYWRpbmdMZXZlbCgpKQot
ICAgICAgICByZXR1cm4gSGVhZGluZ1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6SGVhZGluZzsKICAgICAKICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdSb290KCkpCi0g
ICAgICAgIHJldHVybiBTVkdSb290Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpTVkdSb290OwogICAgIAogICAgIGlmIChpc1N0eWxlRm9ybWF0R3JvdXAoKSkKLSAgICAg
ICAgcmV0dXJuIGlzPFJlbmRlcklubGluZT4oKm1fcmVuZGVyZXIpID8gSW5saW5lUm9sZSA6IFRl
eHRHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBpczxSZW5kZXJJbmxpbmU+KCptX3JlbmRlcmVy
KSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpJbmxpbmUgOiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdy
b3VwOwogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGRUYWcpKQotICAg
ICAgICByZXR1cm4gRGVzY3JpcHRpb25MaXN0RGV0YWlsUm9sZTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3REZXRhaWw7CiAgICAgCiAgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkdFRhZykpCi0gICAgICAgIHJldHVybiBEZXNjcmlwdGlv
bkxpc3RUZXJtUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlw
dGlvbkxpc3RUZXJtOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkbFRhZykp
Ci0gICAgICAgIHJldHVybiBEZXNjcmlwdGlvbkxpc3RSb2xlOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdDsKIAogICAgIGlmIChub2RlICYmIG5vZGUt
Pmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKQotICAgICAgICByZXR1cm4gR3JvdXBSb2xlOworICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwOwogCiAgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aGFzVGFnTmFtZShmaWd1cmVUYWcpKQotICAgICAgICByZXR1cm4gRmlndXJlUm9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmU7CiAKICAgICAvLyBDaGVj
ayBmb3IgUnVieSBlbGVtZW50cwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1J1YnlUZXh0KCkpCi0g
ICAgICAgIHJldHVybiBSdWJ5VGV4dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6UnVieVRleHQ7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieUJhc2UoKSkKLSAgICAg
ICAgcmV0dXJuIFJ1YnlCYXNlUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpSdWJ5QmFzZTsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5UnVuKCkpCi0gICAgICAgIHJl
dHVybiBSdWJ5UnVuUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5
UnVuOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1J1YnlCbG9jaygpKQotICAgICAgICByZXR1cm4g
UnVieUJsb2NrUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5Qmxv
Y2s7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieUlubGluZSgpKQotICAgICAgICByZXR1cm4g
UnVieUlubGluZVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVieUlu
bGluZTsKICAgICAKICAgICAvLyBUaGlzIHJldHVybiB2YWx1ZSBpcyB3aGF0IHdpbGwgYmUgdXNl
ZCBpZiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIGRldGVybWluZXMKICAgICAvLyB0aGUgY2VsbCBz
aG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBjZWxsIChlLmcuIGJlY2F1c2UgaXQgaXMgYSBsYXlv
dXQgdGFibGUuCiAgICAgaWYgKGlzPFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSkpCi0gICAg
ICAgIHJldHVybiBUZXh0R3JvdXBSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlRleHRHcm91cDsKIAogICAgIC8vIFRhYmxlIHNlY3Rpb25zIHNob3VsZCBiZSBpZ25vcmVk
LgogICAgIGlmIChtX3JlbmRlcmVyLT5pc1RhYmxlU2VjdGlvbigpKQotICAgICAgICByZXR1cm4g
SWdub3JlZFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDsK
IAogICAgIGlmIChtX3JlbmRlcmVyLT5pc0hSKCkpCi0gICAgICAgIHJldHVybiBIb3Jpem9udGFs
UnVsZVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SG9yaXpvbnRhbFJ1
bGU7CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHBUYWcpKQotICAgICAgICBy
ZXR1cm4gUGFyYWdyYXBoUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQ
YXJhZ3JhcGg7CiAKICAgICBpZiAoaXM8SFRNTExhYmVsRWxlbWVudD4obm9kZSkpCi0gICAgICAg
IHJldHVybiBMYWJlbFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFi
ZWw7CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRmblRhZykpCi0gICAgICAg
IHJldHVybiBEZWZpbml0aW9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpEZWZpbml0aW9uOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcp
KQotICAgICAgICByZXR1cm4gRGl2Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpEaXY7CiAKICAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50Pihub2RlKSkKLSAgICAgICAg
cmV0dXJuIEZvcm1Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm07
CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGFydGljbGVUYWcpKQotICAgICAg
ICByZXR1cm4gRG9jdW1lbnRBcnRpY2xlUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudEFydGljbGU7CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdO
YW1lKG1haW5UYWcpKQotICAgICAgICByZXR1cm4gTGFuZG1hcmtNYWluUm9sZTsKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01haW47CiAKICAgICBpZiAobm9kZSAm
JiBub2RlLT5oYXNUYWdOYW1lKG5hdlRhZykpCi0gICAgICAgIHJldHVybiBMYW5kbWFya05hdmln
YXRpb25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2
aWdhdGlvbjsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYXNpZGVUYWcpKQot
ICAgICAgICByZXR1cm4gTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZTsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnk7CiAKICAgICAvLyBUaGUg
ZGVmYXVsdCByb2xlIGF0dHJpYnV0ZSB2YWx1ZSBmb3IgdGhlIHNlY3Rpb24gZWxlbWVudCwgcmVn
aW9uLCBiZWNhbWUgYSBsYW5kbWFyayBpbiBBUklBIDEuMS4KICAgICAvLyBUaGUgSFRNTCBBQU0g
c3BlYyBzYXlzIGl0IGlzICJzdHJvbmdseSByZWNvbW1lbmRlZCIgdGhhdCBBVHMgb25seSBjb252
ZXkgYW5kIHByb3ZpZGUgbmF2aWdhdGlvbgogICAgIC8vIGZvciBzZWN0aW9uIGVsZW1lbnRzIHdo
aWNoIGhhdmUgbmFtZXMuCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShzZWN0aW9u
VGFnKSkKLSAgICAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsQXR0cikgfHwgaGFz
QXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpID8gTGFuZG1hcmtSZWdpb25Sb2xlIDogVGV4
dEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsQXR0cikg
fHwgaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpID8gQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrUmVnaW9uIDogQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cDsKIAogICAgIGlm
IChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYWRkcmVzc1RhZykpCi0gICAgICAgIHJldHVybiBM
YW5kbWFya0NvbnRlbnRJbmZvUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya0NvbnRlbnRJbmZvOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFt
ZShibG9ja3F1b3RlVGFnKSkKLSAgICAgICAgcmV0dXJuIEJsb2NrcXVvdGVSb2xlOworICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkJsb2NrcXVvdGU7CiAKICAgICBpZiAobm9kZSAm
JiBub2RlLT5oYXNUYWdOYW1lKGNhcHRpb25UYWcpKQotICAgICAgICByZXR1cm4gQ2FwdGlvblJv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FwdGlvbjsKICAgICAKICAg
ICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKG1hcmtUYWcpKQotICAgICAgICByZXR1cm4g
TWFya1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TWFyazsKIAogICAg
IGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUocHJlVGFnKSkKLSAgICAgICAgcmV0dXJuIFBy
ZVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlOwogCiAgICAgaWYg
KGlzPEhUTUxEZXRhaWxzRWxlbWVudD4obm9kZSkpCi0gICAgICAgIHJldHVybiBEZXRhaWxzUm9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzOwogICAgIGlmIChp
czxIVE1MU3VtbWFyeUVsZW1lbnQ+KG5vZGUpKQotICAgICAgICByZXR1cm4gU3VtbWFyeVJvbGU7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsKICAgICAKICAgICAv
LyBodHRwOi8vcmF3Z2l0LmNvbS93M2MvYXJpYS9tYXN0ZXIvaHRtbC1hYW0vaHRtbC1hYW0uaHRt
bAogICAgIC8vIE91dHB1dCBlbGVtZW50cyBzaG91bGQgYmUgbWFwcGVkIHRvIHN0YXR1cyByb2xl
LgogICAgIGlmIChpc091dHB1dCgpKQotICAgICAgICByZXR1cm4gQXBwbGljYXRpb25TdGF0dXNS
b2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVz
OwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChpczxIVE1MVmlkZW9FbGVtZW50Pihub2Rl
KSkKLSAgICAgICAgcmV0dXJuIFZpZGVvUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpWaWRlbzsKICAgICBpZiAoaXM8SFRNTEF1ZGlvRWxlbWVudD4obm9kZSkpCi0gICAg
ICAgIHJldHVybiBBdWRpb1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXVkaW87CiAjZW5kaWYKICAgICAKICAgICAvLyBUaGUgSFRNTCBlbGVtZW50IHNob3VsZCBub3Qg
YmUgZXhwb3NlZCBhcyBhbiBlbGVtZW50LiBUaGF0J3Mgd2hhdCB0aGUgUmVuZGVyVmlldyBlbGVt
ZW50IGRvZXMuCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSkKLSAg
ICAgICAgcmV0dXJuIElnbm9yZWRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6Oklnbm9yZWQ7CiAKICAgICAvLyBUaGVyZSBzaG91bGQgb25seSBiZSBvbmUgYmFubmVyL2Nv
bnRlbnRJbmZvIHBlciBwYWdlLiBJZiBoZWFkZXIvZm9vdGVyIGFyZSBiZWluZyB1c2VkIHdpdGhp
biBhbiBhcnRpY2xlIG9yIHNlY3Rpb24KICAgICAvLyB0aGVuIGl0IHNob3VsZCBub3QgYmUgZXhw
b3NlZCBhcyB3aG9sZSBwYWdlJ3MgYmFubmVyL2NvbnRlbnRJbmZvCiAgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aGFzVGFnTmFtZShoZWFkZXJUYWcpICYmICFpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBl
KGFydGljbGVUYWcpICYmICFpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKHNlY3Rpb25UYWcpKQot
ICAgICAgICByZXR1cm4gTGFuZG1hcmtCYW5uZXJSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyOwogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1Rh
Z05hbWUoZm9vdGVyVGFnKSAmJiAhaXNEZXNjZW5kYW50T2ZFbGVtZW50VHlwZShhcnRpY2xlVGFn
KSAmJiAhaXNEZXNjZW5kYW50T2ZFbGVtZW50VHlwZShzZWN0aW9uVGFnKSkKLSAgICAgICAgcmV0
dXJuIEZvb3RlclJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdGVy
OwogICAgIAogICAgIC8vIG1lbnUgdGFncyB3aXRoIHRvb2xiYXIgdHlwZSBzaG91bGQgaGF2ZSBU
b29sYmFyIHJvbGUuCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShtZW51VGFnKSAm
JiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShnZXRBdHRyaWJ1dGUodHlwZUF0dHIpLCAi
dG9vbGJhciIpKQotICAgICAgICByZXR1cm4gVG9vbGJhclJvbGU7CisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjsKICAgICAKICAgICBpZiAobm9kZSAmJiBub2RlLT5o
YXNUYWdOYW1lKHRpbWVUYWcpKQotICAgICAgICByZXR1cm4gVGltZVJvbGU7CisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZTsKICAgICAKICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBkb2VzIG5vdCBoYXZlIHJvbGUsIGJ1dCBpdCBoYXMgQVJJQSBhdHRyaWJ1dGVzLCBvciBhY2Nl
cHRzIHRhYiBmb2N1cywgYWNjZXNzaWJpbGl0eSBzaG91bGQgZmFsbGJhY2sgdG8gZXhwb3Npbmcg
aXQgYXMgYSBncm91cC4KICAgICBpZiAoc3VwcG9ydHNBUklBQXR0cmlidXRlcygpIHx8IGNhblNl
dEZvY3VzQXR0cmlidXRlKCkpCi0gICAgICAgIHJldHVybiBHcm91cFJvbGU7CisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAKICAgICBpZiAobV9yZW5kZXJlci0+aXNS
ZW5kZXJCbG9ja0Zsb3coKSkKLSAgICAgICAgcmV0dXJuIG1fcmVuZGVyZXItPmlzQW5vbnltb3Vz
QmxvY2soKSA/IFRleHRHcm91cFJvbGUgOiBHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBtX3Jl
bmRlcmVyLT5pc0Fub255bW91c0Jsb2NrKCkgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3Vw
IDogQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwOwogICAgIAotICAgIC8vIElubGluZVJvbGUgaXMg
dGhlIGZpbmFsIGZhbGxiYWNrIGJlZm9yZSBhc3NpZ25pbmcgVW5rbm93blJvbGUgdG8gYW4gb2Jq
ZWN0LiBJdCBtYWtlcyBpdAorICAgIC8vIElubGluZVJvbGUgaXMgdGhlIGZpbmFsIGZhbGxiYWNr
IGJlZm9yZSBhc3NpZ25pbmcgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gdG8gYW4gb2JqZWN0
LiBJdCBtYWtlcyBpdAogICAgIC8vIHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIHRydWx5IHVua25v
d24gb2JqZWN0cyBmcm9tIG5vbi1mb2N1c2FibGUgaW5saW5lIHRleHQgZWxlbWVudHMKICAgICAv
LyB3aGljaCBoYXZlIGFuIGV2ZW50IGhhbmRsZXIgb3IgYXR0cmlidXRlIHN1Z2dlc3RpbmcgcG9z
c2libGUgaW5jbHVzaW9uIGJ5IHRoZSBwbGF0Zm9ybS4KICAgICBpZiAoaXM8UmVuZGVySW5saW5l
PigqbV9yZW5kZXJlcikKICAgICAgICAgJiYgKGhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1
c2lvbigpCiAgICAgICAgICAgICB8fCAobm9kZSAmJiBub2RlLT5oYXNFdmVudExpc3RlbmVycygp
KQogICAgICAgICAgICAgfHwgKHN1cHBvcnRzRGF0ZXRpbWVBdHRyaWJ1dGUoKSAmJiAhZ2V0QXR0
cmlidXRlKGRhdGV0aW1lQXR0cikuaXNFbXB0eSgpKSkpCi0gICAgICAgIHJldHVybiBJbmxpbmVS
b2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OklubGluZTsKIAotICAgIHJl
dHVybiBVbmtub3duUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247
CiB9CiAKIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpvcmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhT3Jp
ZW50YXRpb24gPSBnZXRBdHRyaWJ1dGUoYXJpYV9vcmllbnRhdGlvbkF0dHIpOwogICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhT3JpZW50YXRpb24sICJob3Jpem9udGFs
IikpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhT3JpZW50YXRpb24sICJ2ZXJ0
aWNhbCIpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWw7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhT3JpZW50YXRpb24sICJ1bmRl
ZmluZWQiKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblVuZGVmaW5l
ZDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkOwog
CiAgICAgLy8gSW4gQVJJQSAxLjEsIHRoZSBpbXBsaWNpdCB2YWx1ZSBvZiBhcmlhLW9yaWVudGF0
aW9uIGNoYW5nZWQgZnJvbSBob3Jpem9udGFsCiAgICAgLy8gdG8gdW5kZWZpbmVkIG9uIGFsbCBy
b2xlcyB0aGF0IGRvbid0IGhhdmUgdGhlaXIgb3duIHJvbGUtc3BlY2lmaWMgdmFsdWVzLiBJbgog
ICAgIC8vIGFkZGl0aW9uLCB0aGUgaW1wbGljaXQgdmFsdWUgb2YgY29tYm9ib3ggYmVjYW1lIHVu
ZGVmaW5lZC4KICAgICBpZiAoaXNDb21ib0JveCgpIHx8IGlzUmFkaW9Hcm91cCgpIHx8IGlzVHJl
ZUdyaWQoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblVuZGVmaW5l
ZDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkOwog
CiAgICAgaWYgKGlzU2Nyb2xsYmFyKCkgfHwgaXNMaXN0Qm94KCkgfHwgaXNNZW51KCkgfHwgaXNU
cmVlKCkpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbDsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7CiAgICAg
CiAgICAgaWYgKGlzTWVudUJhcigpIHx8IGlzU3BsaXR0ZXIoKSB8fCBpc1RhYkxpc3QoKSB8fCBp
c1Rvb2xiYXIoKSB8fCBpc1NsaWRlcigpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRh
dGlvbjo6SG9yaXpvbnRhbDsKICAgICAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6
b3JpZW50YXRpb24oKTsKIH0KQEAgLTI4ODEsMTQgKzI4ODEsMTQgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0cwogCiAgICAgY29uc3QgVmVjdG9yPGNvbnN0IEhUTUxR
dWFsaWZpZWROYW1lKj4qIHBhcmVudFRhZ3M7CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewot
ICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgotICAgIGNhc2UgTGlzdE1hcmtlclJvbGU6IHsKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0TWFya2VyOiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBhdXRvIGxpc3RJdGVtUGFy
ZW50cyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8Y29uc3QgSFRNTFF1YWxpZmllZE5hbWUq
PiB7ICZkbFRhZywgJm9sVGFnLCAmdWxUYWcgfSk7CiAgICAgICAgIHBhcmVudFRhZ3MgPSAmbGlz
dEl0ZW1QYXJlbnRzLmdldCgpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBHcmlk
Q2VsbFJvbGU6Ci0gICAgY2FzZSBDZWxsUm9sZTogeworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkdyaWRDZWxsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGw6IHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IGF1dG8gdGFibGVDZWxsUGFyZW50cyA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChWZWN0b3I8Y29uc3QgSFRNTFF1YWxpZmllZE5hbWUqPiB7ICZ0YWJsZVRhZyB9KTsKICAgICAg
ICAgcGFyZW50VGFncyA9ICZ0YWJsZUNlbGxQYXJlbnRzLmdldCgpOwogICAgICAgICBicmVhazsK
QEAgLTI5MTAsNyArMjkxMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5o
ZXJpdHMKICAgICAgICAgLy8gYmFzZWQgb24gaXRzIHByZXNlbnRhdGlvbmFsIHN0YXR1cy4KICAg
ICAgICAgYXV0byYgbmFtZSA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS50YWdRTmFtZSgpOwog
ICAgICAgICBpZiAoc3RkOjphbnlfb2YocGFyZW50VGFncy0+YmVnaW4oKSwgcGFyZW50VGFncy0+
ZW5kKCksIFsmbmFtZV0gKGF1dG8qIHBvc3NpYmxlTmFtZSkgeyByZXR1cm4gKnBvc3NpYmxlTmFt
ZSA9PSBuYW1lOyB9KSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPnJvbGVWYWx1ZSgpID09
IFByZXNlbnRhdGlvbmFsUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbDsKICAgICB9CiAKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yOTI5LDExICsyOTI5LDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNQcmVzZW4KIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJp
YVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1f
YXJpYVJvbGUpIHsKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBTbGlkZXJSb2xlOgot
ICAgIGNhc2UgSW1hZ2VSb2xlOgotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgotICAg
IGNhc2UgU3BpbkJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9u
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpJbWFnZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0lu
ZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOgogICAgIC8v
IGNhc2UgU2VwYXJhdG9yUm9sZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoK
QEAgLTI5NDMsNyArMjk0Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJp
YVJvbGUKIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5TZXRFeHBhbmRlZEF0
dHJpYnV0ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHJvbGVWYWx1ZSgpID09IERldGFpbHNSb2xlKQor
ICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlscykKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gQW4gb2JqZWN0IGNhbiBiZSBleHBhbmRlZCBp
ZiBpdCBhcmlhLWV4cGFuZGVkIGlzIHRydWUgb3IgZmFsc2UuCkBAIC0yOTk3LDcgKzI5OTcsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEltYWdlCiAgICAgICAgIC8vIGFk
ZCBhbiA8YXJlYT4gZWxlbWVudCBmb3IgdGhpcyBjaGlsZCBpZiBpdCBoYXMgYSBsaW5rCiAgICAg
ICAgIGlmICghYXJlYS5pc0xpbmsoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBh
dXRvJiBhcmVhT2JqZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluaz4oKmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoSW1hZ2VNYXBMaW5rUm9sZSkpOworICAgICAgICBh
dXRvJiBhcmVhT2JqZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluaz4oKmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwTGlu
aykpOwogICAgICAgICBhcmVhT2JqZWN0LnNldEhUTUxBcmVhRWxlbWVudCgmYXJlYSk7CiAgICAg
ICAgIGFyZWFPYmplY3Quc2V0SFRNTE1hcEVsZW1lbnQobWFwKTsKICAgICAgICAgYXJlYU9iamVj
dC5zZXRQYXJlbnQodGhpcyk7CkBAIC0zMDMyLDcgKzMwMzIsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFkZFRleHRGCiAgICAgaWYgKCFpczxTcGluQnV0dG9uRWxlbWVudD4o
c3BpbkJ1dHRvbkVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBheFNwaW5C
dXR0b24gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbj4oKmF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUoU3BpbkJ1dHRvblJvbGUpKTsKKyAgICBhdXRvJiBheFNwaW5CdXR0b24g
PSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbj4oKmF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b24pKTsKICAgICBheFNwaW5CdXR0
b24uc2V0U3BpbkJ1dHRvbkVsZW1lbnQoZG93bmNhc3Q8U3BpbkJ1dHRvbkVsZW1lbnQ+KHNwaW5C
dXR0b25FbGVtZW50KSk7CiAgICAgYXhTcGluQnV0dG9uLnNldFBhcmVudCh0aGlzKTsKICAgICBt
X2NoaWxkcmVuLmFwcGVuZCgmYXhTcGluQnV0dG9uKTsKQEAgLTMyMDUsNyArMzIwNSw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSGlkZGUKIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6dXBkYXRlUm9sZUFmdGVyQ2hpbGRyZW5DcmVhdGlvbigpCiB7CiAgICAg
Ly8gSWYgYSBtZW51IGRvZXMgbm90IGhhdmUgdmFsaWQgbWVudWl0ZW0gY2hpbGRyZW4sIGl0IHNo
b3VsZCBub3QgYmUgZXhwb3NlZCBhcyBhIG1lbnUuCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IE1l
bnVSb2xlKSB7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
KSB7CiAgICAgICAgIC8vIEVsZW1lbnRzIG1hcmtlZCBhcyBtZW51cyBtdXN0IGhhdmUgYXQgbGVh
c3Qgb25lIG1lbnUgaXRlbSBjaGlsZC4KICAgICAgICAgc2l6ZV90IG1lbnVJdGVtQ291bnQgPSAw
OwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkgewpAQCAtMzIx
Niw3ICszMjE2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1cGRhdGVSbwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtZW51SXRlbUNvdW50KQotICAgICAgICAgICAgbV9y
b2xlID0gR3JvdXBSb2xlOworICAgICAgICAgICAgbV9yb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6
Okdyb3VwOwogICAgIH0KIH0KICAgICAKQEAgLTMyOTAsOCArMzI5MCw4IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxpdmUKIAogICAgIC8vIFdBSS1BUklBICJhbGVydCIg
YW5kICJzdGF0dXMiIHJvbGVzIGhhdmUgYW4gaW1wbGljaXQgYXJpYS1hdG9taWMgdmFsdWUgb2Yg
dHJ1ZS4KICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFs
ZXJ0Um9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkFwcGxpY2F0aW9uU3RhdHVzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzA3LDE2ICszMzA3LDE2IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuSGF2ZVMKIHsKICAgICBzd2l0Y2ggKHJvbGVWYWx1
ZSgpKSB7CiAgICAgLy8gVGhlc2Ugcm9sZXMgYXJlIGNvbnRhaW5lcnMgd2hvc2UgY2hpbGRyZW4g
c3VwcG9ydCBhcmlhLXNlbGVjdGVkOgotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBMaXN0
Qm94Um9sZToKLSAgICBjYXNlIFRhYkxpc3RSb2xlOgotICAgIGNhc2UgVHJlZVJvbGU6Ci0gICAg
Y2FzZSBUcmVlR3JpZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlRhYkxpc3Q6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKICAgICAvLyBUaGVzZSByb2xlcyBhcmUg
Y29udGFpbmVycyB3aG9zZSBjaGlsZHJlbiBhcmUgdHJlYXRlZCBhcyBzZWxlY3RlZCBieSBhc3Np
c3RpdmUKICAgICAvLyB0ZWNobm9sb2dpZXMuIFdlIGNhbiBnZXQgdGhlICJzZWxlY3RlZCIgaXRl
bSB2aWEgYXJpYS1hY3RpdmVkZXNjZW5kYW50IG9yIHRoZQogICAgIC8vIGZvY3VzZWQgZWxlbWVu
dC4KLSAgICBjYXNlIE1lbnVSb2xlOgotICAgIGNhc2UgTWVudUJhclJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
QmFyOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zMzYzLDcgKzMzNjMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFyaWFMaXN0CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkg
ewogICAgICAgICAvLyBFdmVyeSBjaGlsZCBzaG91bGQgaGF2ZSBhcmlhLXJvbGUgb3B0aW9uLCBh
bmQgaWYgc28sIGNoZWNrIGZvciBzZWxlY3RlZCBhdHRyaWJ1dGUvc3RhdGUuCi0gICAgICAgIGlm
IChjaGlsZC0+aXNTZWxlY3RlZCgpICYmIGNoaWxkLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IExp
c3RCb3hPcHRpb25Sb2xlKSB7CisgICAgICAgIGlmIChjaGlsZC0+aXNTZWxlY3RlZCgpICYmIGNo
aWxkLT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0
aW9uKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkKTsKICAgICAgICAgICAgIGlm
ICghaXNNdWx0aSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzc5LDIxICszMzc5LDIx
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0ZWQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgTGlzdEJveFJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDoKICAgICAgICAgLy8gbmF0aXZl
IGxpc3QgYm94ZXMgd291bGQgYmUgQWNjZXNzaWJpbGl0eUxpc3RCb3hlcywgc28gb25seSBjaGVj
ayBmb3IgYXJpYSBsaXN0IGJveGVzCiAgICAgICAgIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJl
bihyZXN1bHQpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBHcmlkUm9sZToKLSAgICBjYXNl
IFRyZWVSb2xlOgotICAgIGNhc2UgVHJlZUdyaWRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkdyaWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKICAgICAgICAgYXJpYVNlbGVjdGVkUm93cyhy
ZXN1bHQpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBUYWJMaXN0Um9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OgogICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9i
amVjdCogc2VsZWN0ZWRUYWIgPSBzZWxlY3RlZFRhYkl0ZW0oKSkKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoc2VsZWN0ZWRUYWIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBNZW51Um9s
ZToKLSAgICBjYXNlIE1lbnVCYXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcjoKICAgICAgICAgaWYgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGRlc2NlbmRhbnQgPSBhY3RpdmVEZXNjZW5kYW50KCkpIHsKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGVzY2VuZGFudCk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNDI0LDcgKzM0MjQsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZp
c2libGVDCiAgICAgQVNTRVJUKHJlc3VsdC5pc0VtcHR5KCkpOwogICAgICAgICAKICAgICAvLyBv
bmx5IGxpc3Rib3hlcyBhcmUgYXNrZWQgZm9yIHRoZWlyIHZpc2libGUgY2hpbGRyZW4uIAotICAg
IGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IExpc3RCb3hSb2xlKSB7IC8vIG5hdGl2ZSBsaXN0
IGJveGVzIHdvdWxkIGJlIEFjY2Vzc2liaWxpdHlMaXN0Qm94ZXMsIHNvIG9ubHkgY2hlY2sgZm9y
IGFyaWEgbGlzdCBib3hlcworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0Qm94KSB7CisgICAgICAgIC8vIG5hdGl2ZSBsaXN0IGJveGVzIHdvdWxk
IGJlIEFjY2Vzc2liaWxpdHlMaXN0Qm94ZXMsIHNvIG9ubHkgY2hlY2sgZm9yIGFyaWEgbGlzdCBi
b3hlcwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTM0MzMsNyArMzQzNCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
dmlzaWJsZUMKICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGFiQ2hpbGRyZW4o
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKHJvbGVW
YWx1ZSgpID09IFRhYkxpc3RSb2xlKTsKKyAgICBBU1NFUlQocm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYkxpc3QpOwogICAgIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQg
OiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNUYWJJdGVtKCkpCkBAIC0zNDUz
LDE4ICszNDU0LDE4IEBAIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDoK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBsaW5rQWN0aW9uKEFYTGlu
a0FjdGlvblZlcmIoKSk7CiAKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBC
dXR0b25Sb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0
dG9uOgogICAgICAgICByZXR1cm4gYnV0dG9uQWN0aW9uOwotICAgIGNhc2UgVGV4dEZpZWxkUm9s
ZToKLSAgICBjYXNlIFRleHRBcmVhUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
ZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CiAgICAgICAg
IHJldHVybiB0ZXh0RmllbGRBY3Rpb247Ci0gICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CiAgICAgICAgIHJldHVybiByYWRp
b0J1dHRvbkFjdGlvbjsKLSAgICBjYXNlIENoZWNrQm94Um9sZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpDaGVja0JveDoKICAgICAgICAgcmV0dXJuIGlzQ2hlY2tlZCgpID8gY2hlY2tl
ZENoZWNrQm94QWN0aW9uIDogdW5jaGVja2VkQ2hlY2tCb3hBY3Rpb247Ci0gICAgY2FzZSBMaW5r
Um9sZToKLSAgICBjYXNlIFdlYkNvcmVMaW5rUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaW5rOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOgogICAg
ICAgICByZXR1cm4gbGlua0FjdGlvbjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVs
bEF0b20oKTsKQEAgLTM2NTUsMjUgKzM2NTYsMjUgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmRlc2NyaQogc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIG1zYWFSb2xlRm9yUmVu
ZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVy
KQotICAgICAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6VW5rbm93bjsKIAogICAgIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQot
ICAgICAgICByZXR1cm4gRWRpdGFibGVUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpFZGl0YWJsZVRleHQ7CiAKICAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KCpy
ZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBMaXN0SXRlbVJvbGU7CisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW07CiAKLSAgICByZXR1cm4gVW5rbm93blJvbGU7Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogfQogCiBBY2Nlc3NpYmlsaXR5
Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpyb2xlVmFsdWVGb3JNU0FBKCkgY29uc3QK
IHsKLSAgICBpZiAobV9yb2xlRm9yTVNBQSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAobV9yb2xl
Rm9yTVNBQSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIG1f
cm9sZUZvck1TQUE7CiAKICAgICBtX3JvbGVGb3JNU0FBID0gbXNhYVJvbGVGb3JSZW5kZXJlcihy
ZW5kZXJlcigpKTsKIAotICAgIGlmIChtX3JvbGVGb3JNU0FBID09IFVua25vd25Sb2xlKQorICAg
IGlmIChtX3JvbGVGb3JNU0FBID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAg
ICBtX3JvbGVGb3JNU0FBID0gcm9sZVZhbHVlKCk7CiAKICAgICByZXR1cm4gbV9yb2xlRm9yTVNB
QTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTExLDExICsxMTEsMTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6
YWNjZXNzaWJpbAogewogICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGFjY2Vzc2liaWxpdHlEZXNj
cmlwdGlvbigpOwogICAgIGlmICghZGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICB0ZXh0
T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaXB0aW9uLCBBbHRlcm5hdGl2ZVRl
eHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmlw
dGlvbiwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAKICAgICBTdHJp
bmcgaGVscHRleHQgPSBoZWxwVGV4dCgpOwogICAgIGlmICghaGVscHRleHQuaXNFbXB0eSgpKQot
ICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGhlbHB0ZXh0LCBIZWxw
VGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGhlbHB0
ZXh0LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCkpOwogfQogCiBTdHJpbmcgQWNjZXNz
aWJpbGl0eVNWR0VsZW1lbnQ6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0y
MTcsNyArMjE3LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6Y29tcHV0ZUFjYwog
ICAgIC8vICogVGhleSBoYXZlIGFuIGFuY2VzdG9yIHdpdGggQ2hpbGRyZW4gUHJlc2VudGF0aW9u
YWw6IFRydWUgKGNvdmVyZWQgYnkgQ29yZSBBQU0pCiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uIGRlY2lzaW9uID0gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpOwotICAgIGlmIChk
ZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdIaWRkZW5Db250YWluZXIoKSkKQEAgLTIzMCwxMCAr
MjMwLDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2MKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gUHJl
c2VudGF0aW9uYWxSb2xlIHx8IGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkpCisgICAgaWYg
KHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbCB8fCBpbmhl
cml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlKQorICAgIGlmIChhcmlhUm9sZUF0
dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBUaGUgU1ZHIEFBTSBzdGF0ZXMgdGV4dCBlbGVtZW50cyBzaG91bGQg
YWxzbyBiZSBpbmNsdWRlZCwgaWYgdGhleSBoYXZlIGNvbnRlbnQuCkBAIC0yNTgsMTIgKzI1OCwx
MiBAQCBib29sIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojppbmhlcml0c1ByCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsK
LSAgICBpZiAocm9sZSAhPSBTVkdUZXh0UGF0aFJvbGUgJiYgcm9sZSAhPSBTVkdUU3BhblJvbGUp
CisgICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RleHRQYXRoICYmIHJvbGUg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RTcGFuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBw
YXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKICAgICAgICAgaWYgKGlz
PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+KCpwYXJlbnQpICYmIHBhcmVudC0+ZWxlbWVudCgp
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJl
bnQtPnJvbGVWYWx1ZSgpID09IFByZXNlbnRhdGlvbmFsUm9sZTsKKyAgICAgICAgICAgIHJldHVy
biBwYXJlbnQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25h
bDsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzIsNyArMjcyLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6aW5oZXJpdHNQcgogQWNjZXNzaWJpbGl0eVJvbGUgQWNj
ZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QK
IHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKTsKLSAgICBpZiAocm9sZSAhPSBQcmVzZW50
YXRpb25hbFJvbGUpCisgICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRh
dGlvbmFsKQogICAgICAgICByZXR1cm4gcm9sZTsKIAogICAgIC8vIFRoZSBwcmVzZW5jZSBvZiBh
ICd0aXRsZScgb3IgJ2Rlc2MnIGNoaWxkIGVsZW1lbnQgdHJ1bXBzIFByZXNlbnRhdGlvbmFsUm9s
ZS4KQEAgLTI4MCw3ICsyODAsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5U1ZH
RWxlbWVuCiAgICAgLy8gQXQgdGhpcyB0aW1lLCB0aGUgcHJlc2VuY2Ugb2YgYSBtYXRjaGluZyAn
bGFuZycgYXR0cmlidXRlIGlzIG5vdCBtZW50aW9uZWQuCiAgICAgZm9yIChjb25zdCBhdXRvJiBj
aGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0VsZW1lbnQ+KCplbGVtZW50KCkpKSB7CiAgICAgICAg
IGlmICgoaXM8U1ZHVGl0bGVFbGVtZW50PihjaGlsZCkgfHwgaXM8U1ZHRGVzY0VsZW1lbnQ+KGNo
aWxkKSkpCi0gICAgICAgICAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAgICAgfQogCiAgICAgcmV0dXJuIHJvbGU7
CkBAIC0yODgsMjMgKzI4OCwyMyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5U1ZH
RWxlbWVuCiAKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50OjpkZXRl
cm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiB7Ci0gICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJt
aW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKChtX2FyaWFS
b2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlVua25vd24pCiAgICAgICAgIHJldHVybiBtX2FyaWFSb2xlOwogCiAgICAgRWxlbWVudCogc3Zn
RWxlbWVudCA9IGVsZW1lbnQoKTsKIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1NoYXBlKCkg
fHwgbV9yZW5kZXJlci0+aXNTVkdQYXRoKCkgfHwgbV9yZW5kZXJlci0+aXNTVkdJbWFnZSgpIHx8
IGlzPFNWR1VzZUVsZW1lbnQ+KHN2Z0VsZW1lbnQpKQotICAgICAgICByZXR1cm4gSW1hZ2VSb2xl
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlOwogICAgIGlmIChtX3Jl
bmRlcmVyLT5pc1NWR0ZvcmVpZ25PYmplY3QoKSB8fCBpczxTVkdHRWxlbWVudD4oc3ZnRWxlbWVu
dCkpCi0gICAgICAgIHJldHVybiBHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JvdXA7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHVGV4dCgpKQotICAgICAg
ICByZXR1cm4gU1ZHVGV4dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U1ZHVGV4dDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdUZXh0UGF0aCgpKQotICAgICAgICBy
ZXR1cm4gU1ZHVGV4dFBhdGhSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OlNWR1RleHRQYXRoOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1RTcGFuKCkpCi0gICAgICAg
IHJldHVybiBTVkdUU3BhblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U1ZHVFNwYW47CiAgICAgaWYgKGlzPFNWR0FFbGVtZW50PihzdmdFbGVtZW50KSkKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmVMaW5rUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpXZWJDb3JlTGluazsKIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpk
ZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaAkocmV2aXNpb24gMjIz
OTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9v
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgV2Vha1B0cjxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0PiBtX3BhcmVudDsKLSAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBHcm91
cFJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7IH0KIH07CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDIyMzk0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMCArNjUsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVNjcm9sbAogICAgIAogICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsK
ICAgICAvLyBBUklBIDEuMSBFbGVtZW50cyB3aXRoIHRoZSByb2xlIHNjcm9sbGJhciBoYXZlIGFu
IGltcGxpY2l0IGFyaWEtb3JpZW50YXRpb24gdmFsdWUgb2YgdmVydGljYWwuCi0gICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb25VbmRlZmluZWQ6Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb25WZXJ0aWNhbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6
VW5kZWZpbmVkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDoK
ICAgICAgICAgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxiYXIgPyBtX3ZlcnRpY2FsU2Nyb2xsYmFy
LmdldCgpIDogbnVsbHB0cjsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6
b250YWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWw6CiAg
ICAgICAgIHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIgPyBtX2hvcml6b250YWxTY3JvbGxi
YXIuZ2V0KCkgOiBudWxscHRyOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgJKHJldmlz
aW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTY3Jv
bGxWaWV3OwogY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcgZmluYWwgOiBwdWJsaWMgQWNj
ZXNzaWJpbGl0eU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldz4gY3JlYXRlKFNjcm9sbFZpZXcqKTsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxBcmVhUm9sZTsgfQorICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9CiAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmll
dygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsVmlldzsgfQogCiAgICAgdmlydHVhbCB+QWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcAkocmV2aXNpb24gMjIzOTQw
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTQgKzY3LDE0IEBAIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbiBBY2Nlc3NpYmlsaXR5U2MKIHsKICAgICAvLyBBUklBIDEuMSBFbGVtZW50cyB3aXRo
IHRoZSByb2xlIHNjcm9sbGJhciBoYXZlIGFuIGltcGxpY2l0IGFyaWEtb3JpZW50YXRpb24gdmFs
dWUgb2YgdmVydGljYWwuCiAgICAgaWYgKCFtX3Njcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIAogICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICBpZiAobV9zY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb25WZXJ0aWNhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlv
bjo6VmVydGljYWw7CiAKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGlj
YWw7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbGJhcjo6aXNFbmFibGVkKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5oCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25z
dCBvdmVycmlkZTsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxCYXJSb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OlNjcm9sbEJhcjsgfQogICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAJKHJl
dmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNsaWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlTbAogewogICAgIC8vIERlZmF1bHQgdG8gaG9y
aXpvbnRhbCBpbiB0aGUgdW5rbm93biBjYXNlLgogICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAgCiAgICAgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gbV9yZW5kZXJlci0+c3R5bGUoKTsKIApAQCAtNjQsMTUg
KzY0LDE1IEBAIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBBY2Nlc3NpYmlsaXR5U2wKICAgICBj
YXNlIFNsaWRlckhvcml6b250YWxQYXJ0OgogICAgIGNhc2UgTWVkaWFTbGlkZXJQYXJ0OgogICAg
IGNhc2UgTWVkaWFGdWxsU2NyZWVuVm9sdW1lU2xpZGVyUGFydDoKLSAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAgCiAgICAgY2FzZSBTbGlkZXJUaHVt
YlZlcnRpY2FsUGFydDogCiAgICAgY2FzZSBTbGlkZXJWZXJ0aWNhbFBhcnQ6CiAgICAgY2FzZSBN
ZWRpYVZvbHVtZVNsaWRlclBhcnQ6Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25WZXJ0aWNhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6
VmVydGljYWw7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIH0KIH0KICAgICAKQEAgLTg0LDcgKzg0LDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjphZGRDaGlsZHJlbigpCiAKICAgICBBWE9iamVj
dENhY2hlKiBjYWNoZSA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwog
Ci0gICAgYXV0byYgdGh1bWIgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI+KCpj
YWNoZS0+Z2V0T3JDcmVhdGUoU2xpZGVyVGh1bWJSb2xlKSk7CisgICAgYXV0byYgdGh1bWIgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI+KCpjYWNoZS0+Z2V0T3JDcmVhdGUoQWNj
ZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iKSk7CiAgICAgdGh1bWIuc2V0UGFyZW50KHRoaXMp
OwogCiAgICAgLy8gQmVmb3JlIGFjdHVhbGx5IGFkZGluZyB0aGUgdmFsdWUgaW5kaWNhdG9yIHRv
IHRoZSBoaWVyYXJjaHksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTbGlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNsaWRlclJv
bGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOyB9CiAgICAgYm9vbCBpc1NsaWRlcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzSW5wdXRTbGlkZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0NvbnRyb2woKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4gY3JlYXRlKCk7CiAgICAgdmly
dHVhbCB+QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKCkgPSBkZWZhdWx0OwogCi0gICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2xpZGVyVGh1
bWJSb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iOyB9CiAgICAgTGF5b3V0
UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3Bp
bkJ1dHRvbi5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwx
MiArODgsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6YWRkQ2hpbGRyZQogICAg
IAogICAgIG1faGF2ZUNoaWxkcmVuID0gdHJ1ZTsKICAgICAKLSAgICBhdXRvJiBpbmNyZW1lbnRv
ciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNy
ZWF0ZShTcGluQnV0dG9uUGFydFJvbGUpKTsKKyAgICBhdXRvJiBpbmNyZW1lbnRvciA9IGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBpbmNyZW1lbnRvci5zZXRJc0lu
Y3JlbWVudG9yKHRydWUpOwogICAgIGluY3JlbWVudG9yLnNldFBhcmVudCh0aGlzKTsKICAgICBt
X2NoaWxkcmVuLmFwcGVuZCgmaW5jcmVtZW50b3IpOwogCi0gICAgYXV0byYgZGVjcmVtZW50b3Ig
PSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Z2V0T3JDcmVh
dGUoU3BpbkJ1dHRvblBhcnRSb2xlKSk7CisgICAgYXV0byYgZGVjcmVtZW50b3IgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCpjYWNoZS0+Z2V0T3JDcmVhdGUoQWNjZXNz
aWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0KSk7CiAgICAgZGVjcmVtZW50b3Iuc2V0SXNJbmNy
ZW1lbnRvcihmYWxzZSk7CiAgICAgZGVjcmVtZW50b3Iuc2V0UGFyZW50KHRoaXMpOwogICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZkZWNyZW1lbnRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCShyZXZpc2lv
biAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
cGluQnV0dG9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpOwogCi0gICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3BpbkJ1dHRvblJvbGU7
IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjsgfQogICAgIGJvb2wgaXNTcGluQnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNOYXRpdmVT
cGluQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWRk
Q2hpbGRyZW4oKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQoKTsKICAgICAKICAgICBib29sIHByZXNzKCkgb3ZlcnJp
ZGU7Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gQnV0dG9uUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b247IH0KICAgICBi
b29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
CShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5VGFibGU6Omhhc0FSSUFSb2xlKCkgYwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBhcmlhUm9sZUF0dHJpYnV0
ZSgpOwotICAgIGlmIChhcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoYXJpYVJvbGUg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRh
YmxlOjphZGRDaGlsZHJlbigpCiAgICAgLy8gbWFrZSB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUg
bnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZpcnN0IGJvZHkKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBtYXhDb2x1bW5Db3VudDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uPigqYXhDYWNoZS0+Z2V0T3JDcmVhdGUoQ29sdW1uUm9sZSkpOworICAgICAgICBhdXRv
JiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4+KCpheENhY2hlLT5n
ZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CiAgICAgICAgIGNvbHVtbi5z
ZXRDb2x1bW5JbmRleCgoaW50KWkpOwogICAgICAgICBjb2x1bW4uc2V0UGFyZW50KHRoaXMpOwog
ICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwpAQCAtNTA1LDcgKzUwNSw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZToKICAgICBpZiAobV9oZWFkZXJD
b250YWluZXIpCiAgICAgICAgIHJldHVybiBtX2hlYWRlckNvbnRhaW5lci5nZXQoKTsKICAgICAK
LSAgICBhdXRvJiB0YWJsZUhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
PigqYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShUYWJsZUhlYWRlckNvbnRhaW5lclJvbGUp
KTsKKyAgICBhdXRvJiB0YWJsZUhlYWRlciA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2Jq
ZWN0PigqYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6VGFi
bGVIZWFkZXJDb250YWluZXIpKTsKICAgICB0YWJsZUhlYWRlci5zZXRQYXJlbnQodGhpcyk7CiAK
ICAgICBtX2hlYWRlckNvbnRhaW5lciA9ICZ0YWJsZUhlYWRlcjsKQEAgLTY0NywxOCArNjQ3LDE4
IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZTo6cm8KICAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvbGVWYWx1ZSgpOwogICAgIAogICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlID0gYXJpYVJvbGVBdHRyaWJ1dGUoKTsKLSAgICBpZiAo
YXJpYVJvbGUgPT0gR3JpZFJvbGUgfHwgYXJpYVJvbGUgPT0gVHJlZUdyaWRSb2xlKQorICAgIGlm
IChhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZCB8fCBhcmlhUm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQpCiAgICAgICAgIHJldHVybiBhcmlhUm9sZTsKIAotICAg
IHJldHVybiBUYWJsZVJvbGU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZTsK
IH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNp
c2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5j
bHVkZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1
c2lvbjo6SW5jbHVkZU9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNp
c2lvbiA9PSBJZ25vcmVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
CiAgICAgaWYgKCFpc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkpCkBAIC02NzEsNyAr
NjcxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlRWxlbWVudFRleAogewogICAg
IFN0cmluZyB0aXRsZSA9IHRoaXMtPnRpdGxlKCk7CiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIExhYmVs
QnlFbGVtZW50VGV4dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlU
ZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQpKTsKIH0K
IAogU3RyaW5nIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5
IEBAIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPiBBY2Nlc3NpYmlsaXQKIGJvb2wgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAog
ewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2Jq
ZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3QpCisgICAg
aWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2Jq
ZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJ
Z25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIElnbm9yZSBh
bm9ueW1vdXMgdGFibGUgY2VsbHMgYXMgbG9uZyBhcyB0aGV5J3JlIG5vdCBpbiBhIHRhYmxlIChp
ZS4gd2hlbiBkaXNwbGF5OnRhYmxlIGlzIHVzZWQpLgpAQCAtMTI4LDE3ICsxMjgsMTcgQEAgQWNj
ZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbAogICAgIC8vIHJvbGUsIGZhbGxp
bmcgYmFjayBvbiB0aGUgcm9sZSB0byBiZSB1c2VkIGlmIHdlIGRldGVybWluZSBoZXJlIHRoYXQg
dGhlIGVsZW1lbnQKICAgICAvLyBzaG91bGQgbm90IGJlIGV4cG9zZWQgYXMgYSBjZWxsLiBUaHVz
IGlmIHdlIGFscmVhZHkga25vdyBpdCdzIGEgY2VsbCwgcmV0dXJuIHRoYXQuCiAgICAgQWNjZXNz
aWJpbGl0eVJvbGUgZGVmYXVsdFJvbGUgPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRl
cm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpOwotICAgIGlmIChkZWZhdWx0Um9sZSA9PSBDb2x1bW5I
ZWFkZXJSb2xlIHx8IGRlZmF1bHRSb2xlID09IFJvd0hlYWRlclJvbGUgfHwgZGVmYXVsdFJvbGUg
PT0gQ2VsbFJvbGUgfHwgZGVmYXVsdFJvbGUgPT0gR3JpZENlbGxSb2xlKQorICAgIGlmIChkZWZh
dWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyIHx8IGRlZmF1bHRSb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXIgfHwgZGVmYXVsdFJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkNlbGwgfHwgZGVmYXVsdFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okdy
aWRDZWxsKQogICAgICAgICByZXR1cm4gZGVmYXVsdFJvbGU7CiAKICAgICBpZiAoIWlzVGFibGVD
ZWxsKCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Um9sZTsKICAgICBpZiAoaXNDb2x1bW5IZWFk
ZXJDZWxsKCkpCi0gICAgICAgIHJldHVybiBDb2x1bW5IZWFkZXJSb2xlOworICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcjsKICAgICBpZiAoaXNSb3dIZWFkZXJD
ZWxsKCkpCi0gICAgICAgIHJldHVybiBSb3dIZWFkZXJSb2xlOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcjsKIAotICAgIHJldHVybiBDZWxsUm9sZTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGw7CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmlzVGFibGVIZWFkZXJDZWxsKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcs
NyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDCiAgICAgCiAgICAg
aWYgKHBhcmVudFRhYmxlLmlzQXJpYVRhYmxlKCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBjZWxsIDogY2hpbGRyZW4oKSkgewotICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFSb2xlQXR0
cmlidXRlKCkgPT0gQ29sdW1uSGVhZGVyUm9sZSkKKyAgICAgICAgICAgIGlmIChjZWxsLT5hcmlh
Um9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNlbGwuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uLmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDcgQEAgcHVibGljOgogICAgIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRl
ck9iamVjdCgpOwogICAgICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBDb2x1bW5Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OkNvbHVtbjsgfQogICAgIAogICAgIHZvaWQgc2V0Q29sdW1uSW5kZXgoaW50IGNvbHVtbkluZGV4
KSB7IG1fY29sdW1uSW5kZXggPSBjb2x1bW5JbmRleDsgfQogICAgIGludCBjb2x1bW5JbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uSW5kZXg7IH0gICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
SGVhZGVyQ29udGFpbmVyLmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJp
bGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIoKTsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUYWJsZUhlYWRlckNvbnRhaW5l
clJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI7IH0KICAg
ICAKICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cu
Y3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSwxMCBA
QCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6CiAgICAgaWYgKCFpc1Rh
YmxlUm93KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRl
cm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpOwogCi0gICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJt
aW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKChtX2FyaWFS
b2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlVua25vd24pCiAgICAgICAgIHJldHVybiBtX2FyaWFSb2xlOwogCi0gICAgcmV0dXJuIFJvd1Jv
bGU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c7CiB9CiAKIGJvb2wgQWNjZXNz
aWJpbGl0eVRhYmxlUm93Ojppc1RhYmxlUm93KCkgY29uc3QKQEAgLTgwLDkgKzgwLDkgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUgogYm9vbCBBY2Nlc3NpYmlsaXR5
VGFibGVSb3c6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsgICAgCiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJ
bmNsdXNpb24oKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICBpZiAo
ZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3Qp
CisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9y
ZU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKCFpc1RhYmxlUm93
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUcmVlLmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEwICs1
OSwxMCBAQCBib29sIEFjY2Vzc2liaWxpdHlUcmVlOjpjb21wdXRlQWNjZXNzaWJpCiAKIEFjY2Vz
c2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUcmVlOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9s
ZSgpCiB7Ci0gICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUo
KSkgIT0gVHJlZVJvbGUpCisgICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVB
dHRyaWJ1dGUoKSkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWUpCiAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpOwog
Ci0gICAgcmV0dXJuIGlzVHJlZVZhbGlkKCkgPyBUcmVlUm9sZSA6IEdyb3VwUm9sZTsKKyAgICBy
ZXR1cm4gaXNUcmVlVmFsaWQoKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlIDogQWNjZXNzaWJp
bGl0eVJvbGU6Okdyb3VwOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlUcmVlOjpub2RlSGFzVHJl
ZUl0ZW1DaGlsZChOb2RlJiBub2RlKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAkocmV2
aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZVV0aWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwyMSArOTYsMjEgQEAgU3Ry
aW5nIGFjY2Vzc2liaWxpdHlUaXRsZShBY2Nlc3NpYmlsaXR5TwogCiAgICAgZm9yIChjb25zdCBB
Y2Nlc3NpYmlsaXR5VGV4dCYgdGV4dCA6IHRleHRPcmRlcikgewogICAgICAgICAvLyBPbmNlIHdl
IGVuY291bnRlciB2aXNpYmxlIHRleHQsIG9yIHRoZSB0ZXh0IGZyb20gb3VyIGNoaWxkcmVuIHRo
YXQgc2hvdWxkIGJlIHVzZWQgZm9yZW1vc3QuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2Ug
PT0gVmlzaWJsZVRleHQgfHwgdGV4dC50ZXh0U291cmNlID09IENoaWxkcmVuVGV4dCkKKyAgICAg
ICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VmlzaWJs
ZSB8fCB0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkNoaWxkcmVu
KQogICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsKIAogICAgICAgICAvLyBJZiB0aGVyZSdz
IGFuIGVsZW1lbnQgdGhhdCBsYWJlbHMgdGhpcyBvYmplY3QgYW5kIGl0J3Mgbm90IGV4cG9zZWQs
IHRoZW4gd2Ugc2hvdWxkIHVzZQogICAgICAgICAvLyB0aGF0IHRleHQgYXMgb3VyIHRpdGxlLgot
ICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IExhYmVsQnlFbGVtZW50VGV4dCAmJiAhY29y
ZU9iamVjdC0+ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkpCisgICAgICAgIGlmICh0ZXh0LnRleHRT
b3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkxhYmVsQnlFbGVtZW50ICYmICFjb3Jl
T2JqZWN0LT5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiB0ZXh0
LnRleHQ7CiAKLSAgICAgICAgLy8gRWxlbWVudHMgb2Ygcm9sZSBUb29sYmFyUm9sZSB3aWxsIHJl
dHVybiBpdHMgdGl0bGUgYXMgQWx0ZXJuYXRpdmVUZXh0LgotICAgICAgICBpZiAoY29yZU9iamVj
dC0+cm9sZVZhbHVlKCkgPT0gVG9vbGJhclJvbGUgJiYgdGV4dC50ZXh0U291cmNlID09IEFsdGVy
bmF0aXZlVGV4dCkKKyAgICAgICAgLy8gRWxlbWVudHMgb2Ygcm9sZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VG9vbGJhciB3aWxsIHJldHVybiBpdHMgdGl0bGUgYXMgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2U6OkFsdGVybmF0aXZlLgorICAgICAgICBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXIgJiYgdGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRl
eHQ7CiAKICAgICAgICAgLy8gRklYTUU6IFRoZSB0aXRsZSB0YWcgaXMgdXNlZCBpbiBjZXJ0YWlu
IGNhc2VzIGZvciB0aGUgdGl0bGUuIFRoaXMgdXNhZ2Ugc2hvdWxkCiAgICAgICAgIC8vIHByb2Jh
Ymx5IGJlIGluIHRoZSBkZXNjcmlwdGlvbiBmaWVsZCBzaW5jZSBpdCdzIG5vdCAidmlzaWJsZSIu
Ci0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmICF0aXRsZVRh
Z1Nob3VsZEJlVXNlZEluRGVzY3JpcHRpb25GaWVsZChjb3JlT2JqZWN0KSkKKyAgICAgICAgaWYg
KHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VGl0bGVUYWcgJiYg
IXRpdGxlVGFnU2hvdWxkQmVVc2VkSW5EZXNjcmlwdGlvbkZpZWxkKGNvcmVPYmplY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsKICAgICB9CiAKQEAgLTEyNCwxOSArMTI0LDE5IEBA
IFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oQWNjZXNzaWIKIAogICAgIGJvb2wgdmlz
aWJsZVRleHRBdmFpbGFibGUgPSBmYWxzZTsKICAgICBmb3IgKGNvbnN0IEFjY2Vzc2liaWxpdHlU
ZXh0JiB0ZXh0IDogdGV4dE9yZGVyKSB7Ci0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0g
QWx0ZXJuYXRpdmVUZXh0KQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRl
eHQ7CiAKICAgICAgICAgc3dpdGNoICh0ZXh0LnRleHRTb3VyY2UpIHsKLSAgICAgICAgY2FzZSBW
aXNpYmxlVGV4dDoKLSAgICAgICAgY2FzZSBDaGlsZHJlblRleHQ6Ci0gICAgICAgIGNhc2UgTGFi
ZWxCeUVsZW1lbnRUZXh0OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpW
aXNpYmxlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpDaGlsZHJlbjoK
KyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQ6CiAg
ICAgICAgICAgICB2aXNpYmxlVGV4dEF2YWlsYWJsZSA9IHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0ZXh0LnRleHRT
b3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmICF2aXNpYmxlVGV4dEF2YWlsYWJsZSkKKyAgICAgICAg
aWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VGl0bGVUYWcg
JiYgIXZpc2libGVUZXh0QXZhaWxhYmxlKQogICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVXcmFwcGVyQXRrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAJKHJldmlzaW9uIDIy
Mzk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVXcmFwcGVyQXRrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRp
YyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldE4KICAgICAgICAgLy8gV2ViQ29yZSBB
Y2Nlc3NpYmlsaXR5IHNob3VsZCBwcm92aWRlIHVzIHdpdGggdGhlIHRleHQgYWx0ZXJuYXRpdmUg
Y29tcHV0YXRpb24KICAgICAgICAgLy8gaW4gdGhlIG9yZGVyIGRlZmluZWQgYnkgdGhhdCBzcGVj
LiBTbyB0YWtlIHRoZSBmaXJzdCB0aGluZyB0aGF0IG91ciBwbGF0Zm9ybQogICAgICAgICAvLyBk
b2VzIG5vdCBleHBvc2UgdmlhIHRoZSBBdGtPYmplY3QgZGVzY3JpcHRpb24uCi0gICAgICAgIGlm
ICh0ZXh0LnRleHRTb3VyY2UgIT0gSGVscFRleHQgJiYgdGV4dC50ZXh0U291cmNlICE9IFN1bW1h
cnlUZXh0KQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlICE9IEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlOjpIZWxwICYmIHRleHQudGV4dFNvdXJjZSAhPSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6U3VtbWFyeSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5
KG9iamVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJsZU5hbWUsIHRleHQudGV4dCk7CiAgICAgfQogCkBA
IC0xNDYsMTIgKzE0NiwxMiBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVH
ZXRECiAgICAgICAgIC8vIFdlYkNvcmUgQWNjZXNzaWJpbGl0eSBzaG91bGQgcHJvdmlkZSB1cyB3
aXRoIHRoZSB0ZXh0IGFsdGVybmF0aXZlIGNvbXB1dGF0aW9uCiAgICAgICAgIC8vIGluIHRoZSBv
cmRlciBkZWZpbmVkIGJ5IHRoYXQgc3BlYy4gU28gdGFrZSB0aGUgZmlyc3QgdGhpbmcgdGhhdCBv
dXIgcGxhdGZvcm0KICAgICAgICAgLy8gZG9lcyBub3QgZXhwb3NlIHZpYSB0aGUgQXRrT2JqZWN0
IG5hbWUuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gSGVscFRleHQgfHwgdGV4dC50
ZXh0U291cmNlID09IFN1bW1hcnlUZXh0KQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09
IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwIHx8IHRleHQudGV4dFNvdXJjZSA9PSBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZUFu
ZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJsZURlc2NyaXB0aW9u
LCB0ZXh0LnRleHQpOwogCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgYWx0
ZXJuYXRpdmUsIHRoZSB0aXRsZSB0YWcgY29udGVudHMgd2lsbCBoYXZlIGJlZW4KICAgICAgICAg
Ly8gdXNlZCBmb3IgdGhlIEF0a09iamVjdCBuYW1lLiBXZSBkb24ndCB3YW50IHRvIGR1cGxpY2F0
ZSBpdCBoZXJlLgotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IFRpdGxlVGFnVGV4dCAm
JiBuYW1lVGV4dEF2YWlsYWJsZSkKKyAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZTo6VGl0bGVUYWcgJiYgbmFtZVRleHRBdmFpbGFibGUpCiAgICAg
ICAgICAgICByZXR1cm4gY2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShvYmplY3QsIEF0a0NhY2hl
ZEFjY2Vzc2libGVEZXNjcmlwdGlvbiwgdGV4dC50ZXh0KTsKIAogICAgICAgICBuYW1lVGV4dEF2
YWlsYWJsZSA9IHRydWU7CkBAIC02MTMsMjAyICs2MTMsMjAyIEBAIHN0YXRpYyBBdGtSb2xlIGF0
a1JvbGUoQWNjZXNzaWJpbGl0eU9iamUKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0g
Y29yZU9iamVjdC0+cm9sZVZhbHVlKCk7CiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgY2FzZSBB
cHBsaWNhdGlvbkFsZXJ0Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvbkFsZXJ0OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQUxFUlQ7Ci0gICAgY2FzZSBBcHBs
aWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nOgogICAgICAgICByZXR1
cm4gQVRLX1JPTEVfRElBTE9HOwotICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzOgogICAgICAgICByZXR1
cm4gQVRLX1JPTEVfU1RBVFVTQkFSOwotICAgIGNhc2UgVW5rbm93blJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1VOS05P
V047Ci0gICAgY2FzZSBBdWRpb1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVk
aW86CiAjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTEsIDMpCiAgICAgICAgIHJldHVybiBBVEtf
Uk9MRV9BVURJTzsKICNlbmRpZgotICAgIGNhc2UgVmlkZW9Sb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlZpZGVvOgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDExLCAzKQogICAg
ICAgICByZXR1cm4gQVRLX1JPTEVfVklERU87CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIEFUS19S
T0xFX0VNQkVEREVEOwotICAgIGNhc2UgQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpCdXR0b246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9QVVNIX0JVVFRPTjsKLSAg
ICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
b2dnbGVCdXR0b246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9UT0dHTEVfQlVUVE9OOwotICAg
IGNhc2UgUmFkaW9CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlv
QnV0dG9uOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUkFESU9fQlVUVE9OOwotICAgIGNhc2Ug
Q2hlY2tCb3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgogICAg
ICAgICByZXR1cm4gQVRLX1JPTEVfQ0hFQ0tfQk9YOwotICAgIGNhc2UgU2xpZGVyUm9sZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9TTElERVI7Ci0gICAgY2FzZSBUYWJHcm91cFJvbGU6Ci0gICAgY2FzZSBUYWJMaXN0Um9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUYWJMaXN0OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUEFHRV9UQUJfTElT
VDsKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAg
Y2FzZSBTZWFyY2hGaWVsZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZp
ZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRU5U
Ulk7Ci0gICAgY2FzZSBTdGF0aWNUZXh0Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTdGF0aWNUZXh0OgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDE1LCAyKQogICAgICAgICBy
ZXR1cm4gQVRLX1JPTEVfU1RBVElDOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RF
WFQ7CiAjZW5kaWYKLSAgICBjYXNlIE91dGxpbmVSb2xlOgotICAgIGNhc2UgVHJlZVJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6T3V0bGluZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpUcmVlOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVFJFRTsKLSAgICBjYXNlIFRy
ZWVJdGVtUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbToKICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX1RSRUVfSVRFTTsKLSAgICBjYXNlIE1lbnVCYXJSb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9NRU5VX0JBUjsKLSAgICBjYXNlIE1lbnVMaXN0UG9wdXBSb2xlOgotICAgIGNhc2UgTWVudVJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfTUVOVTsK
LSAgICBjYXNlIE1lbnVMaXN0T3B0aW9uUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAg
ICBjYXNlIE1lbnVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVM
aXN0T3B0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9NRU5VX0lURU07Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgogICAgICAgICByZXR1cm4gQVRLX1JP
TEVfQ0hFQ0tfTUVOVV9JVEVNOwotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKICAgICAgICAgcmV0dXJuIEFUS19S
T0xFX1JBRElPX01FTlVfSVRFTTsKLSAgICBjYXNlIENvbHVtblJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29sdW1uOgogICAgICAgICAvLyByZXR1cm4gQVRLX1JPTEVfVEFCTEVf
Q09MVU1OX0hFQURFUjsgLy8gSXMgdGhpcyByaWdodD8KICAgICAgICAgcmV0dXJuIEFUS19ST0xF
X1VOS05PV047IC8vIE1hdGNoZXMgTW96aWxsYQotICAgIGNhc2UgUm93Um9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9UQUJMRV9S
T1c7Ci0gICAgY2FzZSBUb29sYmFyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
b29sYmFyOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVE9PTF9CQVI7Ci0gICAgY2FzZSBCdXN5
SW5kaWNhdG9yUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXN5SW5kaWNhdG9y
OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUFJPR1JFU1NfQkFSOyAvLyBJcyB0aGlzIHJpZ2h0
PwotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yOgogICAgICAgICByZXR1cm4gY29yZU9iamVjdC0+aXNN
ZXRlcigpID8gQVRLX1JPTEVfTEVWRUxfQkFSIDogQVRLX1JPTEVfUFJPR1JFU1NfQkFSOwotICAg
IGNhc2UgV2luZG93Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXaW5kb3c6CiAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9XSU5ET1c7Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246CiAgICAgICAgIHJldHVy
biBjb3JlT2JqZWN0LT5hcmlhSGFzUG9wdXAoKSA/IEFUS19ST0xFX1BVU0hfQlVUVE9OIDogQVRL
X1JPTEVfQ09NQk9fQk9YOwotICAgIGNhc2UgQ29tYm9Cb3hSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbWJvQm94OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ09NQk9fQk9Y
OwotICAgIGNhc2UgU3BsaXRHcm91cFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3BsaXRHcm91cDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NQTElUX1BBTkU7Ci0gICAgY2Fz
ZSBTcGxpdHRlclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CiAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9TRVBBUkFUT1I7Ci0gICAgY2FzZSBDb2xvcldlbGxSb2xl
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDoKICNpZiBQTEFURk9STShH
VEspCiAgICAgICAgIC8vIEFUS19ST0xFX0NPTE9SX0NIT09TRVIgaXMgZGVmaW5lZCBhcyBhIGRp
YWxvZyAoaS5lLiBpdCdzIHdoYXQgYXBwZWFycyB3aGVuIHlvdSBwdXNoIHRoZSBidXR0b24pLgog
ICAgICAgICByZXR1cm4gQVRLX1JPTEVfUFVTSF9CVVRUT047CiAjZW5kaWYKLSAgICBjYXNlIExp
c3RSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q6CiAgICAgICAgIHJldHVy
biBBVEtfUk9MRV9MSVNUOwotICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TQ1JPTExf
QkFSOwotICAgIGNhc2UgU2Nyb2xsQXJlYVJvbGU6Ci0gICAgY2FzZSBUYWJQYW5lbFJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUYWJQYW5lbDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NDUk9MTF9QQU5F
OwotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBUYWJsZVJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToK
ICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RBQkxFOwotICAgIGNhc2UgVHJlZUdyaWRSb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgogICAgICAgICByZXR1cm4gQVRL
X1JPTEVfVFJFRV9UQUJMRTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0FQ
UExJQ0FUSU9OOwotICAgIGNhc2UgQXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgY2FzZSBGZWVk
Um9sZToKLSAgICBjYXNlIEZpZ3VyZVJvbGU6Ci0gICAgY2FzZSBHcm91cFJvbGU6Ci0gICAgY2Fz
ZSBSYWRpb0dyb3VwUm9sZToKLSAgICBjYXNlIFNWR1Jvb3RSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RmVlZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFk
aW9Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdSb290OgogICAgICAgICBy
ZXR1cm4gQVRLX1JPTEVfUEFORUw7Ci0gICAgY2FzZSBSb3dIZWFkZXJSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1JP
V19IRUFERVI7Ci0gICAgY2FzZSBDb2x1bW5IZWFkZXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNvbHVtbkhlYWRlcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0NPTFVNTl9I
RUFERVI7Ci0gICAgY2FzZSBDYXB0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpDYXB0aW9uOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ0FQVElPTjsKLSAgICBjYXNlIENl
bGxSb2xlOgotICAgIGNhc2UgR3JpZENlbGxSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGw6CiAgICAgICAg
IHJldHVybiBjb3JlT2JqZWN0LT5pbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpID8gQVRLX1JP
TEVfU0VDVElPTiA6IEFUS19ST0xFX1RBQkxFX0NFTEw7Ci0gICAgY2FzZSBMaW5rUm9sZToKLSAg
ICBjYXNlIFdlYkNvcmVMaW5rUm9sZToKLSAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpXZWJDb3JlTGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbms6
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9MSU5LOwotICAgIGNhc2UgSW1hZ2VNYXBSb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOgogICAgICAgICByZXR1cm4gQVRL
X1JPTEVfSU1BR0VfTUFQOwotICAgIGNhc2UgSW1hZ2VSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfSU1BR0U7Ci0gICAgY2Fz
ZSBMaXN0TWFya2VyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0TWFya2Vy
OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVEVYVDsKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNs
ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgogI2lm
IEFUS19DSEVDS19WRVJTSU9OKDIsIDExLCAzKQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQVJU
SUNMRTsKICNlbmRpZgotICAgIGNhc2UgRG9jdW1lbnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkRvY3VtZW50OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRE9DVU1FTlRfRlJB
TUU7Ci0gICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkRvY3VtZW50Tm90ZToKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0NPTU1FTlQ7Ci0gICAg
Y2FzZSBIZWFkaW5nUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOgog
ICAgICAgICByZXR1cm4gQVRLX1JPTEVfSEVBRElORzsKLSAgICBjYXNlIExpc3RCb3hSb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CiAgICAgICAgIC8vIGh0dHBzOi8v
cmF3Z2l0LmNvbS93M2MvYXJpYS9tYXN0ZXIvY29yZS1hYW0vY29yZS1hYW0uaHRtbCNyb2xlLW1h
cC1saXN0Ym94CiAgICAgICAgIHJldHVybiBjb3JlT2JqZWN0LT5pc0Rlc2NlbmRhbnRPZlJvbGUo
Q29tYm9Cb3hSb2xlKSA/IEFUS19ST0xFX01FTlUgOiBBVEtfUk9MRV9MSVNUX0JPWDsKLSAgICBj
YXNlIExpc3RJdGVtUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToK
ICAgICAgICAgcmV0dXJuIGNvcmVPYmplY3QtPmluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkg
PyBBVEtfUk9MRV9TRUNUSU9OIDogQVRLX1JPTEVfTElTVF9JVEVNOwotICAgIGNhc2UgTGlzdEJv
eE9wdGlvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoK
ICAgICAgICAgcmV0dXJuIGNvcmVPYmplY3QtPmlzRGVzY2VuZGFudE9mUm9sZShDb21ib0JveFJv
bGUpID8gQVRLX1JPTEVfTUVOVV9JVEVNIDogQVRLX1JPTEVfTElTVF9JVEVNOwotICAgIGNhc2Ug
UGFyYWdyYXBoUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGg6CiAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9QQVJBR1JBUEg7Ci0gICAgY2FzZSBMYWJlbFJvbGU6Ci0g
ICAgY2FzZSBMZWdlbmRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxlZ2VuZDoKICAgICAgICAgcmV0dXJuIEFUS19S
T0xFX0xBQkVMOwotICAgIGNhc2UgQmxvY2txdW90ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6QmxvY2txdW90ZToKICNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMSwgMykKICAg
ICAgICAgcmV0dXJuIEFUS19ST0xFX0JMT0NLX1FVT1RFOwogI2VuZGlmCi0gICAgY2FzZSBGb290
bm90ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGU6CiAjaWYgQVRL
X0NIRUNLX1ZFUlNJT04oMiwgMjUsIDIpCiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9GT09UTk9U
RTsKICNlbmRpZgotICAgIGNhc2UgQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlOgotICAgIGNhc2Ug
RGl2Um9sZToKLSAgICBjYXNlIFByZVJvbGU6Ci0gICAgY2FzZSBTVkdUZXh0Um9sZToKLSAgICBj
YXNlIFRleHRHcm91cFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25UZXh0R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGl2OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlByZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdU
ZXh0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cDoKICAgICAgICAgcmV0
dXJuIEFUS19ST0xFX1NFQ1RJT047Ci0gICAgY2FzZSBGb290ZXJSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkZvb3RlcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0ZPT1RFUjsK
LSAgICBjYXNlIEZvcm1Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm06CiAj
aWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTEsIDMpCiAgICAgICAgIGlmIChjb3JlT2JqZWN0LT5h
cmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlKQogICAgICAgICAgICAgcmV0dXJuIEFU
S19ST0xFX0xBTkRNQVJLOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9GT1JNOwot
ICAgIGNhc2UgQ2FudmFzUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDYW52YXM6
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9DQU5WQVM7Ci0gICAgY2FzZSBIb3Jpem9udGFsUnVs
ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGU6CiAgICAg
ICAgIHJldHVybiBBVEtfUk9MRV9TRVBBUkFUT1I7Ci0gICAgY2FzZSBTcGluQnV0dG9uUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOgogICAgICAgICByZXR1cm4g
QVRLX1JPTEVfU1BJTl9CVVRUT047Ci0gICAgY2FzZSBUYWJSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1BBR0VfVEFCOwotICAg
IGNhc2UgVXNlckludGVyZmFjZVRvb2x0aXBSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlVzZXJJbnRlcmZhY2VUb29sdGlwOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVE9PTF9U
SVA7Ci0gICAgY2FzZSBXZWJBcmVhUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpX
ZWJBcmVhOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRE9DVU1FTlRfV0VCOwotICAgIGNhc2Ug
V2ViQXBwbGljYXRpb25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxp
Y2F0aW9uOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRU1CRURERUQ7CiAjaWYgQVRLX0NIRUNL
X1ZFUlNJT04oMiwgMTEsIDMpCi0gICAgY2FzZSBBcHBsaWNhdGlvbkxvZ1JvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6CiAgICAgICAgIHJldHVybiBBVEtf
Uk9MRV9MT0c7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToKICAgICAgICAgcmV0dXJuIEFUS19S
T0xFX01BUlFVRUU7Ci0gICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgogICAgICAgICByZXR1cm4gQVRLX1JP
TEVfVElNRVI7Ci0gICAgY2FzZSBEZWZpbml0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpEZWZpbml0aW9uOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfREVGSU5JVElPTjsK
LSAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RG9jdW1lbnRNYXRoOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfTUFUSDsKLSAgICBjYXNlIE1h
dGhFbGVtZW50Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudDoK
ICAgICAgICAgaWYgKGNvcmVPYmplY3QtPmlzTWF0aFJvdygpKQogICAgICAgICAgICAgcmV0dXJu
IEFUS19ST0xFX1BBTkVMOwogICAgICAgICBpZiAoY29yZU9iamVjdC0+aXNNYXRoVGFibGUoKSkK
QEAgLTgzNiwyNiArODM2LDI2IEBAIHN0YXRpYyBBdGtSb2xlIGF0a1JvbGUoQWNjZXNzaWJpbGl0
eU9iamUKICAgICAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TVEFUSUM7CiAjZW5kaWYKICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX1VOS05PV047Ci0gICAgY2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6
Ci0gICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtD
b250ZW50SW5mb1JvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0RvY1JlZ2lvblJvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya01haW5Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZToKLSAg
ICBjYXNlIExhbmRtYXJrUmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnk6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya01haW46CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9u
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoOgogICAgICAgICByZXR1cm4gQVRLX1JP
TEVfTEFORE1BUks7CiAjZW5kaWYKICNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMSwgNCkKLSAg
ICBjYXNlIERlc2NyaXB0aW9uTGlzdFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RGVzY3JpcHRpb25MaXN0OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfREVTQ1JJUFRJT05fTElT
VDsKLSAgICBjYXNlIFRlcm1Sb2xlOgotICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0VGVybVJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGVybToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJtOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfREVT
Q1JJUFRJT05fVEVSTTsKLSAgICBjYXNlIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0RGV0YWlsOgogICAgICAgICBy
ZXR1cm4gQVRLX1JPTEVfREVTQ1JJUFRJT05fVkFMVUU7CiAjZW5kaWYKLSAgICBjYXNlIElubGlu
ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5lOgogI2lmIEFUS19DSEVD
S19WRVJTSU9OKDIsIDE1LCA0KQogICAgICAgICBpZiAoY29yZU9iamVjdC0+aXNTdWJzY3JpcHRT
dHlsZUdyb3VwKCkpCiAgICAgICAgICAgICByZXR1cm4gQVRLX1JPTEVfU1VCU0NSSVBUOwpAQCAt
ODY0LDkgKzg2NCw5IEBAIHN0YXRpYyBBdGtSb2xlIGF0a1JvbGUoQWNjZXNzaWJpbGl0eU9iamUK
ICNlbmRpZgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDE1LCAyKQogICAgICAgICByZXR1cm4g
QVRLX1JPTEVfU1RBVElDOwotICAgIGNhc2UgU1ZHVGV4dFBhdGhSb2xlOgotICAgIGNhc2UgU1ZH
VFNwYW5Sb2xlOgotICAgIGNhc2UgVGltZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U1ZHVGV4dFBhdGg6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVFNwYW46Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZToKICAgICAgICAgcmV0dXJuIEFUS19ST0xF
X1NUQVRJQzsKICNlbmRpZgogICAgIGRlZmF1bHQ6CkBAIC05MzAsNyArOTMwLDcgQEAgc3RhdGlj
IHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdAogCiAgICAgLy8gUGxlYXNlIGtlZXAg
dGhlIHN0YXRlIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCiAgICAgaWYgKChpc0xpc3RCb3hP
cHRpb24gJiYgY29yZU9iamVjdC0+aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpKQotICAgICAgICB8
fCBjb3JlT2JqZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQVJJQUN1cnJlbnRGYWxzZSkKKyAg
ICAgICAgfHwgY29yZU9iamVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgpICE9IEFjY2Vzc2liaWxpdHlB
UklBQ3VycmVudFN0YXRlOjpGYWxzZSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUo
c3RhdGVTZXQsIEFUS19TVEFURV9BQ1RJVkUpOwogCiAgICAgaWYgKGNvcmVPYmplY3QtPmlzQnVz
eSgpKQpAQCAtOTcyLDkgKzk3Miw5IEBAIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJvbUNv
cmVPYmplY3QKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19T
VEFURV9GT0NVU0VEKTsKICAgICB9CiAKLSAgICBpZiAoY29yZU9iamVjdC0+b3JpZW50YXRpb24o
KSA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsKQorICAgIGlmIChjb3JlT2Jq
ZWN0LT5vcmllbnRhdGlvbigpID09IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRh
bCkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9I
T1JJWk9OVEFMKTsKLSAgICBlbHNlIGlmIChjb3JlT2JqZWN0LT5vcmllbnRhdGlvbigpID09IEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsKQorICAgIGVsc2UgaWYgKGNvcmVPYmplY3Qt
Pm9yaWVudGF0aW9uKCkgPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCkKICAg
ICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9WRVJUSUNB
TCk7CiAKICAgICBpZiAoY29yZU9iamVjdC0+YXJpYUhhc1BvcHVwKCkpCkBAIC05ODMsNyArOTgz
LDcgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdAogICAgIGlmIChj
b3JlT2JqZWN0LT5pc0luZGV0ZXJtaW5hdGUoKSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRf
c3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9JTkRFVEVSTUlOQVRFKTsKICAgICBlbHNlIGlmIChj
b3JlT2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IGNvcmVPYmplY3QtPmlzTWVudUl0ZW0o
KSB8fCBjb3JlT2JqZWN0LT5pc1RvZ2dsZUJ1dHRvbigpKSB7Ci0gICAgICAgIGlmIChjb3JlT2Jq
ZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpID09IEJ1dHRvblN0YXRlTWl4ZWQpCisgICAgICAg
IGlmIChjb3JlT2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlC
dXR0b25TdGF0ZTo6TWl4ZWQpCiAgICAgICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShz
dGF0ZVNldCwgQVRLX1NUQVRFX0lOREVURVJNSU5BVEUpOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5
T2JqZWN0SU9TLm1tCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUkKICAg
ICAKIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNj
ZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBE
ZWZhdWx0QmVoYXZpb3I7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
OkRlZmF1bHRCZWhhdmlvcjsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNUb3Vj
aEV2ZW50TGlzdGVuZXIoKSBjb25zdApAQCAtODEsNyArODEsNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlPYmplY3Q6Omhhc1RvdWNoRXZlbnRMCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5w
dXRUeXBlUG9wdXBCdXR0b24oKSBjb25zdAogewogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
Pihub2RlKCkpKQotICAgICAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gUG9wVXBCdXR0b25Sb2xl
OworICAgICAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVw
QnV0dG9uOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDIsMzAgKzM0MiwzMCBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlD
YW5GdXp6eUhpdFRlc3QKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gbV9vYmplY3QtPnJv
bGVWYWx1ZSgpOwogICAgIC8vIEVsZW1lbnRzIHRoYXQgY2FuIGJlIHJldHVybmVkIHdoZW4gcGVy
Zm9ybWluZyBmdXp6eSBoaXQgdGVzdGluZy4KICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNl
IEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBDb21ib0JveFJv
bGU6Ci0gICAgY2FzZSBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlOgotICAgIGNhc2UgSGVhZGluZ1Jv
bGU6Ci0gICAgY2FzZSBJbWFnZU1hcExpbmtSb2xlOgotICAgIGNhc2UgSW1hZ2VSb2xlOgotICAg
IGNhc2UgTGlua1JvbGU6Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToKLSAgICBjYXNlIExpc3RCb3hP
cHRpb25Sb2xlOgotICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJv
bGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtUmFk
aW9Sb2xlOgotICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25S
b2xlOgotICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKLSAgICBjYXNlIFNlYXJjaEZpZWxkUm9sZToK
LSAgICBjYXNlIFNsaWRlclJvbGU6Ci0gICAgY2FzZSBTdGF0aWNUZXh0Um9sZToKLSAgICBjYXNl
IFN3aXRjaFJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgotICAgIGNhc2UgVGV4dEZpZWxkUm9sZToK
LSAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkRpc2Nsb3N1cmVUcmlhbmdsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5n
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwTGluazoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbWFnZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5r
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQ
b3BVcEJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6U2VhcmNoRmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVy
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3dpdGNoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOgogICAgICAgICByZXR1cm4gIW1fb2JqZWN0LT5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNTE0LDI0ICs1MTQsMjQgQEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNEaWFsb2cKICAg
ICAgICAgcmV0dXJuIE5POwogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlID0gbV9v
YmplY3QtPnJvbGVWYWx1ZSgpOwotICAgIHJldHVybiByb2xlVmFsdWUgPT0gQXBwbGljYXRpb25E
aWFsb2dSb2xlIHx8IHJvbGVWYWx1ZSA9PSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZTsKKyAg
ICByZXR1cm4gcm9sZVZhbHVlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxv
ZyB8fCByb2xlVmFsdWUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFs
b2c7CiB9CiAKIC0gKEJPT0wpX2FjY2Vzc2liaWxpdHlJc0xhbmRtYXJrUm9sZTooQWNjZXNzaWJp
bGl0eVJvbGUpcm9sZQogewogICAgIHN3aXRjaCAocm9sZSkgewotICAgIGNhc2UgRG9jdW1lbnRS
b2xlOgotICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xlUm9sZToKLSAgICBjYXNlIERvY3VtZW50Tm90
ZVJvbGU6Ci0gICAgY2FzZSBGb290ZXJSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xl
OgotICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZToKLSAgICBjYXNlIExhbmRtYXJr
Q29udGVudEluZm9Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtEb2NSZWdpb25Sb2xlOgotICAgIGNh
c2UgTGFuZG1hcmtNYWluUm9sZToKLSAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0g
ICAgY2FzZSBMYW5kbWFya1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya1NlYXJjaFJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQ6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkRvY3VtZW50Tm90ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtEb2NSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtN
YWluOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaDoKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gTk87CkBAIC01NDIsNyArNTQyLDcgQEAgLSAoQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYgogewogICAgIGF1dG8gbWF0Y2hGdW5jID0g
W10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlID0gb2JqZWN0LnJvbGVWYWx1ZSgpOwotICAgICAgICByZXR1cm4gcm9s
ZSA9PSBUcmVlUm9sZTsKKyAgICAgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlRyZWU7CiAgICAgfTsKICAgICAKICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIGZh
bHNlLCBXVEZNb3ZlKG1hdGNoRnVuYykpKQpAQCAtNTU0LDcgKzU1NCw3IEBAIC0gKEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyKilfYWNjZXNzaWIKIHsKICAgICBhdXRvIG1hdGNoRnVuYyA9IFtd
IChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZSA9IG9iamVjdC5yb2xlVmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIHJvbGUg
PT0gTGlzdFJvbGUgfHwgcm9sZSA9PSBMaXN0Qm94Um9sZTsKKyAgICAgICAgcmV0dXJuIHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3QgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGlzdEJveDsKICAgICB9OwogICAgIAogICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwg
ZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCkBAIC01NjUsNyArNTY1LDcgQEAgLSAoQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYgogLSAoQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIqKV9hY2Nlc3NpYmlsaXR5QXJ0aWNsZUFuY2VzdG9yCiB7CiAgICAgaWYgKGNvbnN0IEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQ
YXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgewotICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IERvY3VtZW50QXJ0
aWNsZVJvbGU7CisgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkRvY3VtZW50QXJ0aWNsZTsKICAgICB9KSkKICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+d3JhcHBlcigpOwogICAgIHJldHVybiBuaWw7CkBAIC02MTgsNDggKzYxOCw0NyBAQCAtICh1
aW50NjRfdClfYWNjZXNzaWJpbGl0eVRyYWl0c0Zyb21BbmNlCiAgICAgLy8gVGhlIHBhcmVudE9i
amVjdCBpcyBuZWVkZWQgaW5zdGVhZCBvZiB0aGUgdW5pZ25vcmVkUGFyZW50T2JqZWN0LCBiZWNh
dXNlIGEgdGFibGUgbWlnaHQgYmUgaWdub3JlZCwgYnV0IGluZm9ybWF0aW9uIHN0aWxsIG5lZWRz
IHRvIGJlIGdhdGhlcmVkIGZyb20gaXQuICAgIAogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQgIT0gbmlsOyBwYXJl
bnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHBhcmVudFJvbGUgPSBwYXJlbnQtPnJvbGVWYWx1ZSgpOwotICAgICAgICBpZiAocGFyZW50Um9s
ZSA9PSBXZWJBcmVhUm9sZSkKKyAgICAgICAgaWYgKHBhcmVudFJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OldlYkFyZWEpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAgIHN3
aXRjaCAocGFyZW50Um9sZSkgewotICAgICAgICAgICAgY2FzZSBMaW5rUm9sZToKLSAgICAgICAg
ICAgIGNhc2UgV2ViQ29yZUxpbmtSb2xlOgotICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2Vs
ZiBfYXhMaW5rVHJhaXRdOwotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVmlzaXRlZCgp
KQotICAgICAgICAgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VmlzaXRlZFRyYWl0XTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgSGVhZGluZ1JvbGU6Ci0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEhlYWRlclRy
YWl0XTsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIG9iamVjdCBoYXMgdGhlIGhlYWRlciB0
cmFpdCwgd2Ugc2hvdWxkIHNldCB0aGUgdmFsdWUKLSAgICAgICAgICAgICAgICAvLyB0byB0aGUg
aGVhZGluZyBsZXZlbC4gSWYgaXQgd2FzIGEgc3RhdGljIHRleHQgZWxlbWVudCwgd2UgbmVlZCB0
byBzdG9yZQotICAgICAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSBhcyB0aGUgbGFiZWwsIGJlY2F1
c2UgdGhlIGhlYWRpbmcgbGV2ZWwgbmVlZHMgdG8gdGhlIHZhbHVlLgotICAgICAgICAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gcGFyZW50LT53cmFwcGVyKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHJvbGUgPT0gU3RhdGljVGV4dFJvbGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSB0ZXh0IHZhbHVlIGFzIHRoZSBs
YWJlbCB3aGVuIHRoZXJlJ3Mgbm8KLSAgICAgICAgICAgICAgICAgICAgLy8gYWx0ZXJuYXRlIHRl
eHQgb24gdGhlIGhlYWRpbmcgcGFyZW50LgotICAgICAgICAgICAgICAgICAgICBOU1N0cmluZyAq
aGVhZGluZ0xhYmVsID0gW3dyYXBwZXIgYmFzZUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbl07Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghW2hlYWRpbmdMYWJlbCBsZW5ndGhdKQotICAgICAgICAg
ICAgICAgICAgICAgICAgW3NlbGYgc2V0QWNjZXNzaWJpbGl0eUxhYmVsOm1fb2JqZWN0LT5zdHJp
bmdWYWx1ZSgpXTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgW3NlbGYgc2V0QWNjZXNzaWJpbGl0eUxhYmVsOmhlYWRpbmdMYWJlbF07Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIFtzZWxmIHNldEFjY2Vzc2liaWxpdHlWYWx1ZTpb
d3JhcHBlciBhY2Nlc3NpYmlsaXR5VmFsdWVdXTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluazoKKyAgICAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6V2ViQ29yZUxpbms6CisgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4
TGlua1RyYWl0XTsKKyAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVmlzaXRlZCgpKQorICAgICAg
ICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhWaXNpdGVkVHJhaXRdOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc6IHsKKyAgICAg
ICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhIZWFkZXJUcmFpdF07CisgICAgICAgICAgICAvLyBJ
ZiB0aGlzIG9iamVjdCBoYXMgdGhlIGhlYWRlciB0cmFpdCwgd2Ugc2hvdWxkIHNldCB0aGUgdmFs
dWUKKyAgICAgICAgICAgIC8vIHRvIHRoZSBoZWFkaW5nIGxldmVsLiBJZiBpdCB3YXMgYSBzdGF0
aWMgdGV4dCBlbGVtZW50LCB3ZSBuZWVkIHRvIHN0b3JlCisgICAgICAgICAgICAvLyB0aGUgdmFs
dWUgYXMgdGhlIGxhYmVsLCBiZWNhdXNlIHRoZSBoZWFkaW5nIGxldmVsIG5lZWRzIHRvIHRoZSB2
YWx1ZS4KKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0g
cGFyZW50LT53cmFwcGVyKCk7CisgICAgICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3RhdGljVGV4dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IHNl
dCB0aGUgdGV4dCB2YWx1ZSBhcyB0aGUgbGFiZWwgd2hlbiB0aGVyZSdzIG5vCisgICAgICAgICAg
ICAgICAgLy8gYWx0ZXJuYXRlIHRleHQgb24gdGhlIGhlYWRpbmcgcGFyZW50LgorICAgICAgICAg
ICAgICAgIE5TU3RyaW5nICpoZWFkaW5nTGFiZWwgPSBbd3JhcHBlciBiYXNlQWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uXTsKKyAgICAgICAgICAgICAgICBpZiAoIVtoZWFkaW5nTGFiZWwgbGVuZ3Ro
XSkKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYgc2V0QWNjZXNzaWJpbGl0eUxhYmVsOm1fb2Jq
ZWN0LT5zdHJpbmdWYWx1ZSgpXTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIFtzZWxmIHNldEFjY2Vzc2liaWxpdHlMYWJlbDpoZWFkaW5nTGFiZWxdOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY2FzZSBMaXN0Qm94Um9sZToKLSAgICAgICAgICAgIGNhc2Ug
TGlzdFJvbGU6Ci0gICAgICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENvbnRhaW5lZEJ5
TGlzdFRyYWl0XTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR3Jp
ZFJvbGU6Ci0gICAgICAgICAgICBjYXNlIFRhYmxlUm9sZToKLSAgICAgICAgICAgIGNhc2UgVHJl
ZUdyaWRSb2xlOgotICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRC
eVRhYmxlVHJhaXRdOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBpZiAoW3NlbGYgX2FjY2Vzc2liaWxpdHlJc0xhbmRtYXJrUm9s
ZTpwYXJlbnRSb2xlXSkKLSAgICAgICAgICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENv
bnRhaW5lZEJ5TGFuZG1hcmtUcmFpdF07Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBbc2VsZiBzZXRBY2Nlc3NpYmlsaXR5VmFsdWU6W3dyYXBwZXIgYWNjZXNzaWJpbGl0eVZh
bHVlXV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0Qm94OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0OgorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENvbnRhaW5lZEJ5TGlzdFRyYWl0
XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cmlkOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToKKyAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ6CisgICAgICAgICAgICB0cmFpdHMgfD0gW3Nl
bGYgX2F4Q29udGFpbmVkQnlUYWJsZVRyYWl0XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKFtzZWxmIF9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFy
a1JvbGU6cGFyZW50Um9sZV0pCisgICAgICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENv
bnRhaW5lZEJ5TGFuZG1hcmtUcmFpdF07CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhpcyBvYmplY3QgaGFzIGZpZWxkc2V0IHBhcmVudCwg
d2Ugc2hvdWxkIGFkZCBjb250YWluZWRCeUZpZWxkc2V0VHJhaXQgdG8gaXQuCkBAIC02NzYsNyAr
Njc1LDcgQEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNXZWJJbnRlcmFjdGl2ZVZpZAogICAgICAg
ICByZXR1cm4gTk87CiAgICAgCiAgICAgLy8gT25seSBtYWtlIHRoZSB2aWRlbyBvYmplY3QgaW50
ZXJhY3RpdmUgaWYgaXQgcGxheXMgaW5saW5lIGFuZCBoYXMgbm8gbmF0aXZlIGNvbnRyb2xzLgot
ICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgIT0gVmlkZW9Sb2xlIHx8ICFpczxBY2Nlc3Np
YmlsaXR5TWVkaWFPYmplY3Q+KG1fb2JqZWN0KSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1
ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpWaWRlbyB8fCAhaXM8QWNjZXNzaWJpbGl0eU1lZGlh
T2JqZWN0PihtX29iamVjdCkpCiAgICAgICAgIHJldHVybiBOTzsKICAgICAKICAgICBBY2Nlc3Np
YmlsaXR5TWVkaWFPYmplY3QqIG1lZGlhT2JqZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1l
ZGlhT2JqZWN0PihtX29iamVjdCk7CkBAIC03NDEsOSArNzQwLDkgQEAgLSAodWludDY0X3QpX2Fj
Y2Vzc2liaWxpdHlUZXh0RW50cnlUcmFpdAogICAgICAgICB0cmFpdHMgfD0gKFtzZWxmIF9heEhh
c1RleHRDdXJzb3JUcmFpdF0gfCBbc2VsZiBfYXhUZXh0T3BlcmF0aW9uc0F2YWlsYWJsZVRyYWl0
XSk7CiAgICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgdHJhaXRz
IHw9IFtzZWxmIF9heFNlY3VyZVRleHRGaWVsZFRyYWl0XTsKLSAgICBpZiAobV9vYmplY3QtPnJv
bGVWYWx1ZSgpID09IFNlYXJjaEZpZWxkUm9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZCkKICAgICAgICAgdHJhaXRzIHw9
IFtzZWxmIF9heFNlYXJjaEZpZWxkVHJhaXRdOwotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVl
KCkgPT0gVGV4dEFyZWFSb2xlKQorICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhKQogICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VGV4
dEFyZWFUcmFpdF07CiAgICAgcmV0dXJuIHRyYWl0czsKIH0KQEAgLTc1Niw1OCArNzU1LDU4IEBA
IC0gKHVpbnQ2NF90KWFjY2Vzc2liaWxpdHlUcmFpdHMKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwogICAgIHVpbnQ2NF90IHRyYWl0cyA9IFtzZWxm
IF9heFdlYkNvbnRlbnRUcmFpdF07CiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgICAgIGNhc2Ug
TGlua1JvbGU6Ci0gICAgICAgIGNhc2UgV2ViQ29yZUxpbmtSb2xlOgotICAgICAgICAgICAgdHJh
aXRzIHw9IFtzZWxmIF9heExpbmtUcmFpdF07Ci0gICAgICAgICAgICBpZiAobV9vYmplY3QtPmlz
VmlzaXRlZCgpKQotICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhWaXNpdGVkVHJh
aXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVGV4dEZpZWxkUm9sZToKLSAg
ICAgICAgY2FzZSBTZWFyY2hGaWVsZFJvbGU6Ci0gICAgICAgIGNhc2UgVGV4dEFyZWFSb2xlOgot
ICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5VGV4dEVudHJ5VHJhaXRz
XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEltYWdlUm9sZToKLSAgICAgICAg
ICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhJbWFnZVRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFRhYlJvbGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VGFi
QnV0dG9uVHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQnV0dG9uUm9s
ZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhCdXR0b25UcmFpdF07Ci0gICAgICAg
ICAgICBpZiAobV9vYmplY3QtPmlzUHJlc3NlZCgpKQotICAgICAgICAgICAgICAgIHRyYWl0cyB8
PSBbc2VsZiBfYXhUb2dnbGVUcmFpdF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBQb3BVcEJ1dHRvblJvbGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4UG9wdXBC
dXR0b25UcmFpdF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSYWRpb0J1dHRv
blJvbGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4UmFkaW9CdXR0b25UcmFpdF0g
fCBbc2VsZiBfYXhUb2dnbGVUcmFpdF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBUb2dnbGVCdXR0b25Sb2xlOgotICAgICAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICAgICAg
Y2FzZSBTd2l0Y2hSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBfYXhCdXR0b25U
cmFpdF0gfCBbc2VsZiBfYXhUb2dnbGVUcmFpdF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgSGVhZGluZ1JvbGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4SGVh
ZGVyVHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGljVGV4dFJv
bGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4U3RhdGljVGV4dFRyYWl0XTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNsaWRlclJvbGU6Ci0gICAgICAgICAgICB0
cmFpdHMgfD0gW3NlbGYgX2F4QWRqdXN0YWJsZVRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE1lbnVCdXR0b25Sb2xlOgotICAgICAgICBjYXNlIE1lbnVJdGVtUm9sZToK
LSAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhNZW51SXRlbVRyYWl0XTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAgICAgICBj
YXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBfYXhN
ZW51SXRlbVRyYWl0XSB8IFtzZWxmIF9heFRvZ2dsZVRyYWl0XSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Okxpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxp
bms6CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhMaW5rVHJhaXRdOworICAgICAgICBpZiAo
bV9vYmplY3QtPmlzVmlzaXRlZCgpKQorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFZp
c2l0ZWRUcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRleHRGaWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAgICAgICAgdHJhaXRzIHw9IFtz
ZWxmIF9hY2Nlc3NpYmlsaXR5VGV4dEVudHJ5VHJhaXRzXTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U6CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBf
YXhJbWFnZVRyYWl0XTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGFiOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VGFiQnV0dG9uVHJhaXRdOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgICAg
IHRyYWl0cyB8PSBbc2VsZiBfYXhCdXR0b25UcmFpdF07CisgICAgICAgIGlmIChtX29iamVjdC0+
aXNQcmVzc2VkKCkpCisgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VG9nZ2xlVHJhaXRd
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRv
bjoKKyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFBvcHVwQnV0dG9uVHJhaXRdOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICAg
ICAgdHJhaXRzIHw9IFtzZWxmIF9heFJhZGlvQnV0dG9uVHJhaXRdIHwgW3NlbGYgX2F4VG9nZ2xl
VHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dn
bGVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoOgorICAgICAgICB0cmFpdHMgfD0gKFtzZWxmIF9h
eEJ1dHRvblRyYWl0XSB8IFtzZWxmIF9heFRvZ2dsZVRyYWl0XSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc6CisgICAgICAgIHRyYWl0cyB8PSBb
c2VsZiBfYXhIZWFkZXJUcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlN0YXRpY1RleHQ6CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhTdGF0aWNU
ZXh0VHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpT
bGlkZXI6CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhBZGp1c3RhYmxlVHJhaXRdOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgICAgICB0cmFpdHMgfD0gW3Nl
bGYgX2F4TWVudUl0ZW1UcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUl0ZW1SYWRpbzoKKyAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBfYXhNZW51SXRlbVRyYWl0
XSB8IFtzZWxmIF9heFRvZ2dsZVRyYWl0XSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50
RWxlbWVudCgpKQpAQCAtODQ5LDE3OCArODQ4LDE3NyBAQCAtIChCT09MKWRldGVybWluZUlzQWNj
ZXNzaWJpbGl0eUVsZW1lbnQKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAg
ICAgCiAgICAgc3dpdGNoIChtX29iamVjdC0+cm9sZVZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBU
ZXh0RmllbGRSb2xlOgotICAgICAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICAgICAgY2FzZSBC
dXR0b25Sb2xlOgotICAgICAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6Ci0gICAgICAgIGNhc2Ug
UG9wVXBCdXR0b25Sb2xlOgotICAgICAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICAgICAgY2Fz
ZSBSYWRpb0J1dHRvblJvbGU6Ci0gICAgICAgIGNhc2UgU2xpZGVyUm9sZToKLSAgICAgICAgY2Fz
ZSBNZW51QnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBWYWx1ZUluZGljYXRvclJvbGU6Ci0gICAg
ICAgIGNhc2UgSW1hZ2VSb2xlOgotICAgICAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6Ci0gICAg
ICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgotICAgICAgICBjYXNlIE1lbnVJdGVtUm9s
ZToKLSAgICAgICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICAgICAgY2FzZSBNZW51
SXRlbVJhZGlvUm9sZToKLSAgICAgICAgY2FzZSBJbmNyZW1lbnRvclJvbGU6Ci0gICAgICAgIGNh
c2UgQ29tYm9Cb3hSb2xlOgotICAgICAgICBjYXNlIERpc2Nsb3N1cmVUcmlhbmdsZVJvbGU6Ci0g
ICAgICAgIGNhc2UgSW1hZ2VNYXBSb2xlOgotICAgICAgICBjYXNlIExpc3RNYXJrZXJSb2xlOgot
ICAgICAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xlOgotICAgICAgICBjYXNlIFRhYlJvbGU6Ci0g
ICAgICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKLSAgICAgICAgY2FzZSBIb3Jpem9udGFsUnVs
ZVJvbGU6Ci0gICAgICAgIGNhc2UgU2xpZGVyVGh1bWJSb2xlOgotICAgICAgICBjYXNlIFN3aXRj
aFJvbGU6Ci0gICAgICAgIGNhc2UgU2VhcmNoRmllbGRSb2xlOgotICAgICAgICBjYXNlIFNwaW5C
dXR0b25Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgU3RhdGlj
VGV4dFJvbGU6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIE1hbnkgdGV4dCBlbGVtZW50cyBv
bmx5IGNvbnRhaW4gYSBzcGFjZS4KLSAgICAgICAgICAgIGlmICghW1tbc2VsZiBhY2Nlc3NpYmls
aXR5TGFiZWxdIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5TZXQ6W05TQ2hhcmFjdGVyU2V0
IHdoaXRlc3BhY2VDaGFyYWN0ZXJTZXRdXSBsZW5ndGhdKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICAgICAgLy8gVGV4dCBlbGVtZW50cyB0aGF0IGFyZSBqdXN0IHBp
ZWNlcyBvZiBsaW5rcyBvciBoZWFkZXJzIHNob3VsZCBub3QgYmUgZXhwb3NlZC4KLSAgICAgICAg
ICAgIGlmIChbQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2VzdG9yKFtzZWxmIGFjY2Vzc2liaWxp
dHlDb250YWluZXJdKSBjb250YWluc1VubmF0dXJhbGx5U2VnbWVudGVkQ2hpbGRyZW5dKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gRG9uJ3QgZXhwb3NlIGhlYWRlcnMgYXMg
ZWxlbWVudHM7IGluc3RlYWQgZXhwb3NlIHRoZWlyIGNoaWxkcmVuIGFzIGVsZW1lbnRzLCB3aXRo
IHRoZSBoZWFkZXIgdHJhaXQgKHVubGVzcyB0aGV5IGhhdmUgbm8gY2hpbGRyZW4pCi0gICAgICAg
IGNhc2UgSGVhZGluZ1JvbGU6Ci0gICAgICAgICAgICBpZiAoIVtzZWxmIGFjY2Vzc2liaWxpdHlF
bGVtZW50Q291bnRdKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
ZXh0QXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0
dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlZhbHVlSW5kaWNhdG9yOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkltYWdlTWFwTGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGlj
YXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Ok1lbnVJdGVtUmFkaW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5jcmVt
ZW50b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RGlzY2xvc3VyZVRyaWFuZ2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlTWFwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJr
ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9j
dW1lbnRNYXRoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1iOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hG
aWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OiB7Cisg
ICAgICAgIC8vIE1hbnkgdGV4dCBlbGVtZW50cyBvbmx5IGNvbnRhaW4gYSBzcGFjZS4KKyAgICAg
ICAgaWYgKCFbW1tzZWxmIGFjY2Vzc2liaWxpdHlMYWJlbF0gc3RyaW5nQnlUcmltbWluZ0NoYXJh
Y3RlcnNJblNldDpbTlNDaGFyYWN0ZXJTZXQgd2hpdGVzcGFjZUNoYXJhY3RlclNldF1dIGxlbmd0
aF0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBWaWRlb1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eUlzV2Vi
SW50ZXJhY3RpdmVWaWRlb107Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gTGlua3MgY2FuIHNv
bWV0aW1lcyBiZSBlbGVtZW50cyAod2hlbiB0aGV5IG9ubHkgY29udGFpbiBzdGF0aWMgdGV4dCBv
ciBkb24ndCBjb250YWluIGFueXRoaW5nKS4KLSAgICAgICAgLy8gVGhleSBzaG91bGQgbm90IGJl
IGVsZW1lbnRzIHdoZW4gY29udGFpbmluZyB0ZXh0IGFuZCBvdGhlciB0eXBlcy4KLSAgICAgICAg
Y2FzZSBXZWJDb3JlTGlua1JvbGU6Ci0gICAgICAgIGNhc2UgTGlua1JvbGU6Ci0gICAgICAgICAg
ICBpZiAoW3NlbGYgY29udGFpbnNVbm5hdHVyYWxseVNlZ21lbnRlZENoaWxkcmVuXSB8fCAhW3Nl
bGYgYWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgR3JvdXBSb2xlOgot
ICAgICAgICAgICAgaWYgKFtzZWxmIGlzU1ZHR3JvdXBFbGVtZW50XSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAvLyBBbGwg
b3RoZXIgZWxlbWVudHMgYXJlIGlnbm9yZWQgb24gdGhlIGlwaG9uZS4KLSAgICAgICAgY2FzZSBB
bm5vdGF0aW9uUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblJvbGU6Ci0gICAgICAgIGNh
c2UgQXBwbGljYXRpb25BbGVydFJvbGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25BbGVydERp
YWxvZ1JvbGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgotICAgICAgICBj
YXNlIEFwcGxpY2F0aW9uR3JvdXBSb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9s
ZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgotICAgICAgICBjYXNlIEFw
cGxpY2F0aW9uU3RhdHVzUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRleHRHcm91cFJv
bGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0gICAgICAgIGNhc2UgQXVk
aW9Sb2xlOgotICAgICAgICBjYXNlIEJsb2NrcXVvdGVSb2xlOgotICAgICAgICBjYXNlIEJyb3dz
ZXJSb2xlOgotICAgICAgICBjYXNlIEJ1c3lJbmRpY2F0b3JSb2xlOgotICAgICAgICBjYXNlIENh
bnZhc1JvbGU6Ci0gICAgICAgIGNhc2UgQ2FwdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgQ2VsbFJv
bGU6Ci0gICAgICAgIGNhc2UgQ29sb3JXZWxsUm9sZToKLSAgICAgICAgY2FzZSBDb2x1bW5Sb2xl
OgotICAgICAgICBjYXNlIENvbHVtbkhlYWRlclJvbGU6Ci0gICAgICAgIGNhc2UgRGVmaW5pdGlv
blJvbGU6Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0Um9sZToKLSAgICAgICAgY2FzZSBE
ZXNjcmlwdGlvbkxpc3RUZXJtUm9sZToKLSAgICAgICAgY2FzZSBEZXNjcmlwdGlvbkxpc3REZXRh
aWxSb2xlOgotICAgICAgICBjYXNlIERldGFpbHNSb2xlOgotICAgICAgICBjYXNlIERpcmVjdG9y
eVJvbGU6Ci0gICAgICAgIGNhc2UgRGl2Um9sZToKLSAgICAgICAgY2FzZSBEb2N1bWVudFJvbGU6
Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xlUm9sZToKLSAgICAgICAgY2FzZSBEb2N1bWVu
dE5vdGVSb2xlOgotICAgICAgICBjYXNlIERyYXdlclJvbGU6Ci0gICAgICAgIGNhc2UgRWRpdGFi
bGVUZXh0Um9sZToKLSAgICAgICAgY2FzZSBGZWVkUm9sZToKLSAgICAgICAgY2FzZSBGaWd1cmVS
b2xlOgotICAgICAgICBjYXNlIEZvb3RlclJvbGU6Ci0gICAgICAgIGNhc2UgRm9vdG5vdGVSb2xl
OgotICAgICAgICBjYXNlIEZvcm1Sb2xlOgotICAgICAgICBjYXNlIEdyaWRSb2xlOgotICAgICAg
ICBjYXNlIEdyaWRDZWxsUm9sZToKLSAgICAgICAgY2FzZSBHcm93QXJlYVJvbGU6Ci0gICAgICAg
IGNhc2UgSGVscFRhZ1JvbGU6Ci0gICAgICAgIGNhc2UgSWdub3JlZFJvbGU6Ci0gICAgICAgIGNh
c2UgSW5saW5lUm9sZToKLSAgICAgICAgY2FzZSBMYWJlbFJvbGU6Ci0gICAgICAgIGNhc2UgTGFu
ZG1hcmtCYW5uZXJSb2xlOgotICAgICAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6
Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtDb250ZW50SW5mb1JvbGU6Ci0gICAgICAgIGNhc2UgTGFu
ZG1hcmtEb2NSZWdpb25Sb2xlOgotICAgICAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0gICAg
ICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya1Jl
Z2lvblJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hSb2xlOgotICAgICAgICBjYXNl
IExlZ2VuZFJvbGU6Ci0gICAgICAgIGNhc2UgTGlzdFJvbGU6Ci0gICAgICAgIGNhc2UgTGlzdEJv
eFJvbGU6Ci0gICAgICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgotICAgICAgICBjYXNlIE1hcmtSb2xl
OgotICAgICAgICBjYXNlIE1hdGhFbGVtZW50Um9sZToKLSAgICAgICAgY2FzZSBNYXR0ZVJvbGU6
Ci0gICAgICAgIGNhc2UgTWVudVJvbGU6Ci0gICAgICAgIGNhc2UgTWVudUJhclJvbGU6Ci0gICAg
ICAgIGNhc2UgTWVudUxpc3RQb3B1cFJvbGU6Ci0gICAgICAgIGNhc2UgTWVudUxpc3RPcHRpb25S
b2xlOgotICAgICAgICBjYXNlIE91dGxpbmVSb2xlOgotICAgICAgICBjYXNlIFBhcmFncmFwaFJv
bGU6Ci0gICAgICAgIGNhc2UgUHJlUm9sZToKLSAgICAgICAgY2FzZSBQcmVzZW50YXRpb25hbFJv
bGU6Ci0gICAgICAgIGNhc2UgUmFkaW9Hcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgUm93SGVhZGVy
Um9sZToKLSAgICAgICAgY2FzZSBSb3dSb2xlOgotICAgICAgICBjYXNlIFJ1YnlCYXNlUm9sZToK
LSAgICAgICAgY2FzZSBSdWJ5QmxvY2tSb2xlOgotICAgICAgICBjYXNlIFJ1YnlJbmxpbmVSb2xl
OgotICAgICAgICBjYXNlIFJ1YnlSdW5Sb2xlOgotICAgICAgICBjYXNlIFJ1YnlUZXh0Um9sZToK
LSAgICAgICAgY2FzZSBSdWxlclJvbGU6Ci0gICAgICAgIGNhc2UgUnVsZXJNYXJrZXJSb2xlOgot
ICAgICAgICBjYXNlIFNjcm9sbEFyZWFSb2xlOgotICAgICAgICBjYXNlIFNjcm9sbEJhclJvbGU6
Ci0gICAgICAgIGNhc2UgU2hlZXRSb2xlOgotICAgICAgICBjYXNlIFNwaW5CdXR0b25QYXJ0Um9s
ZToKLSAgICAgICAgY2FzZSBTcGxpdEdyb3VwUm9sZToKLSAgICAgICAgY2FzZSBTcGxpdHRlclJv
bGU6Ci0gICAgICAgIGNhc2UgU3VtbWFyeVJvbGU6Ci0gICAgICAgIGNhc2UgU3lzdGVtV2lkZVJv
bGU6Ci0gICAgICAgIGNhc2UgU1ZHUm9vdFJvbGU6Ci0gICAgICAgIGNhc2UgU1ZHVGV4dFBhdGhS
b2xlOgotICAgICAgICBjYXNlIFNWR1RleHRSb2xlOgotICAgICAgICBjYXNlIFNWR1RTcGFuUm9s
ZToKLSAgICAgICAgY2FzZSBUYWJHcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgVGFiTGlzdFJvbGU6
Ci0gICAgICAgIGNhc2UgVGFiUGFuZWxSb2xlOgotICAgICAgICBjYXNlIFRhYmxlUm9sZToKLSAg
ICAgICAgY2FzZSBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU6Ci0gICAgICAgIGNhc2UgVGVybVJv
bGU6Ci0gICAgICAgIGNhc2UgVGV4dEdyb3VwUm9sZToKLSAgICAgICAgY2FzZSBUaW1lUm9sZToK
LSAgICAgICAgY2FzZSBUcmVlUm9sZToKLSAgICAgICAgY2FzZSBUcmVlSXRlbVJvbGU6Ci0gICAg
ICAgIGNhc2UgVHJlZUdyaWRSb2xlOgotICAgICAgICBjYXNlIFRvb2xiYXJSb2xlOgotICAgICAg
ICBjYXNlIFVua25vd25Sb2xlOgotICAgICAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9s
ZToKLSAgICAgICAgY2FzZSBXZWJBcHBsaWNhdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgV2ViQXJl
YVJvbGU6Ci0gICAgICAgIGNhc2UgV2luZG93Um9sZToKLSAgICAgICAgY2FzZSBSb3dHcm91cFJv
bGU6CisKKyAgICAgICAgLy8gVGV4dCBlbGVtZW50cyB0aGF0IGFyZSBqdXN0IHBpZWNlcyBvZiBs
aW5rcyBvciBoZWFkZXJzIHNob3VsZCBub3QgYmUgZXhwb3NlZC4KKyAgICAgICAgaWYgKFtBY2Nl
c3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoW3NlbGYgYWNjZXNzaWJpbGl0eUNvbnRhaW5lcl0p
IGNvbnRhaW5zVW5uYXR1cmFsbHlTZWdtZW50ZWRDaGlsZHJlbl0pCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAgICAgCisgICAgLy8g
RG9uJ3QgZXhwb3NlIGhlYWRlcnMgYXMgZWxlbWVudHM7IGluc3RlYWQgZXhwb3NlIHRoZWlyIGNo
aWxkcmVuIGFzIGVsZW1lbnRzLCB3aXRoIHRoZSBoZWFkZXIgdHJhaXQgKHVubGVzcyB0aGV5IGhh
dmUgbm8gY2hpbGRyZW4pCisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzoKKyAg
ICAgICAgaWYgKCFbc2VsZiBhY2Nlc3NpYmlsaXR5RWxlbWVudENvdW50XSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlZpZGVvOgorICAgICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJp
bGl0eUlzV2ViSW50ZXJhY3RpdmVWaWRlb107CisgICAgICAgIAorICAgIC8vIExpbmtzIGNhbiBz
b21ldGltZXMgYmUgZWxlbWVudHMgKHdoZW4gdGhleSBvbmx5IGNvbnRhaW4gc3RhdGljIHRleHQg
b3IgZG9uJ3QgY29udGFpbiBhbnl0aGluZykuCisgICAgLy8gVGhleSBzaG91bGQgbm90IGJlIGVs
ZW1lbnRzIHdoZW4gY29udGFpbmluZyB0ZXh0IGFuZCBvdGhlciB0eXBlcy4KKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpMaW5rOgorICAgICAgICBpZiAoW3NlbGYgY29udGFpbnNVbm5hdHVyYWxseVNlZ21lbnRlZENo
aWxkcmVuXSB8fCAhW3NlbGYgYWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0pCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Okdyb3VwOgorICAgICAgICBpZiAoW3NlbGYgaXNTVkdHcm91cEVsZW1lbnRdKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIC8vIEFs
bCBvdGhlciBlbGVtZW50cyBhcmUgaWdub3JlZCBvbiB0aGUgaXBob25lLgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFubm90YXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVy
dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25NYXJxdWVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9u
U3RhdHVzOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3Vw
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXI6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVkaW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QmxvY2txdW90ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCcm93c2VyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1c3lJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6Q2FudmFzOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNhcHRpb246Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2xvcldlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpEZWZpbml0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2Ny
aXB0aW9uTGlzdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RU
ZXJtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkRpcmVjdG9yeToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXY6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQ6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50Tm90ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEcmF3ZXI6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RWRpdGFibGVUZXh0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkZlZWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3RlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpGb290bm90ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jp
ZENlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jvd0FyZWE6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SGVscFRhZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJ
Z25vcmVkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OklubGluZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYWJlbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya0Jhbm5lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1l
bnRhcnk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01haW46CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNo
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxlZ2VuZDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TWFyazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXR0ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpNZW51OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpP
dXRsaW5lOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJl
c2VudGF0aW9uYWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6Um93OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlCYXNlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlCbG9jazoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSdWJ5SW5saW5lOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlSdW46
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVieVRleHQ6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6UnVsZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVsZXJNYXJr
ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U2hlZXQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQ6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXRHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpTcGxpdHRlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN5c3RlbVdpZGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U1ZHUm9vdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUZXh0
UGF0aDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUZXh0OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlNWR1RTcGFuOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRh
Ykdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGFibGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGVybToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpUZXh0R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VW5rbm93bjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50ZXJmYWNl
VG9vbHRpcDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBsaWNhdGlvbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OldpbmRvdzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dHcm91cDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTEwNDIsNyArMTA0MCw3IEBAIC0gKEJPT0wpc3RyaW5nVmFsdWVTaG91bGRCZVVzZWRJ
bkxhYmVsCiB7CiAgICAgaWYgKG1fb2JqZWN0LT5pc1RleHRDb250cm9sKCkpCiAgICAgICAgIHJl
dHVybiBOTzsKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IFBvcFVwQnV0dG9uUm9s
ZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQ
b3BVcEJ1dHRvbikKICAgICAgICAgcmV0dXJuIE5POwogICAgIGlmIChtX29iamVjdC0+aXNGaWxl
VXBsb2FkQnV0dG9uKCkpCiAgICAgICAgIHJldHVybiBOTzsKQEAgLTExMjYsMTMgKzExMjQsMTMg
QEAgLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5TGFiZWwKICAgICAgICAgYXhUaXRsZSA9IG5p
bDsKIAogICAgIC8vIEZvb3RlciBpcyBub3QgY29uc2lkZXJlZCBhIGxhbmRtYXJrLCBidXQgd2Ug
d2FudCB0aGUgcm9sZSBkZXNjcmlwdGlvbi4KLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgp
ID09IEZvb3RlclJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Rm9vdGVyKQogICAgICAgICBsYW5kbWFya0Rlc2NyaXB0aW9uID0gQVhGb290
ZXJSb2xlRGVzY3JpcHRpb25UZXh0KCk7CiAKICAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9
IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgp
ID09IEhvcml6b250YWxSdWxlUm9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZSkKICAgICAgICAgYXBwZW5kU3RyaW5n
VG9SZXN1bHQocmVzdWx0LCBBWEhvcml6b250YWxSdWxlRGVzY3JpcHRpb25UZXh0KCkpOwotICAg
ICAgICAKKwogICAgIGFwcGVuZFN0cmluZ1RvUmVzdWx0KHJlc3VsdCwgYXhUaXRsZSk7CiAgICAg
YXBwZW5kU3RyaW5nVG9SZXN1bHQocmVzdWx0LCBheERlc2NyaXB0aW9uKTsKICAgICBpZiAoW3Nl
bGYgc3RyaW5nVmFsdWVTaG91bGRCZVVzZWRJbkxhYmVsXSkgewpAQCAtMTM5MCwxMyArMTM4OCwx
MyBAQCAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlWYWx1ZQogICAgICAgICByZXR1cm4gdmFs
dWU7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1fb2JqZWN0LT5yb2xlVmFs
dWUoKTsKLSAgICBpZiAobV9vYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkgfHwgcm9sZSA9PSBN
ZW51SXRlbUNoZWNrYm94Um9sZSB8fCByb2xlID09IE1lbnVJdGVtUmFkaW9Sb2xlKSB7CisgICAg
aWYgKG1fb2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3ggfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW1SYWRpbykgewogICAgICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5jaGVja2JveE9yUmFkaW9W
YWx1ZSgpKSB7Ci0gICAgICAgIGNhc2UgQnV0dG9uU3RhdGVPZmY6CisgICAgICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY6CiAgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlZCIsIDBdOwotICAgICAgICBjYXNlIEJ1dHRvblN0YXRlT246
CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjoKICAgICAgICAgICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVkIiwgMV07Ci0gICAgICAgIGNh
c2UgQnV0dG9uU3RhdGVNaXhlZDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3Rh
dGU6Ok1peGVkOgogICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJWQiLCAyXTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTE0NTAsNyArMTQ0OCw3IEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzQ29tYm9Cb3gKICAgICBp
ZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gTk87
CiAKLSAgICByZXR1cm4gbV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IENvbWJvQm94Um9sZTsKKyAg
ICByZXR1cm4gbV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb21i
b0JveDsKIH0KIAogLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5SGludApAQCAtMTY3MCw3ICsx
NjY4LDcgQEAgLSAoQk9PTCljb250YWluc1VubmF0dXJhbGx5U2VnbWVudGVkQ2hpbAogICAgICAg
ICByZXR1cm4gTk87CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1fb2JqZWN0
LT5yb2xlVmFsdWUoKTsKLSAgICBpZiAocm9sZSAhPSBMaW5rUm9sZSAmJiByb2xlICE9IFdlYkNv
cmVMaW5rUm9sZSkKKyAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluayAmJiBy
b2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluaykKICAgICAgICAgcmV0dXJuIE5P
OwogICAgIAogICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7
CkBAIC0xNjgyLDcgKzE2ODAsNyBAQCAtIChCT09MKWNvbnRhaW5zVW5uYXR1cmFsbHlTZWdtZW50
ZWRDaGlsCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuU2l6ZTsg
KytpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBjaGlsZHJlbltpXS0+cm9s
ZVZhbHVlKCk7Ci0gICAgICAgIGlmIChyb2xlICE9IFN0YXRpY1RleHRSb2xlICYmIHJvbGUgIT0g
SW1hZ2VSb2xlICYmIHJvbGUgIT0gR3JvdXBSb2xlICYmIHJvbGUgIT0gVGV4dEdyb3VwUm9sZSkK
KyAgICAgICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgcm9s
ZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UgJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JvdXAgJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwKQogICAgICAg
ICAgICAgcmV0dXJuIE5POwogICAgIH0KICAgICAKQEAgLTE4MjYsNyArMTgyNCw3IEBAIC0gKGlk
KWFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50CiAgICAgCiAgICAgLy8gSWYgdGhpcyBzdGF0aWMg
dGV4dCBpbnNpZGUgb2YgYSBsaW5rLCBpdCBzaG91bGQgdXNlIGl0cyBwYXJlbnQncyBsaW5rZWQg
ZWxlbWVudC4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7Ci0g
ICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZSAmJiBtX29iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmlzTGluaygpKQorICAgIGlmIChtX29iamVjdC0+
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgbV9vYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5pc0xpbmsoKSkKICAgICAgICAgZWxlbWVudCA9IG1f
b2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW47CkBAIC0yMDAwLDcg
KzE5OTgsNyBAQCAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0Kil0cmVlSXRlbVBhcmVudEZvCiB7CiAg
ICAgLy8gVXNlIHRoaXMgdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIGluc2lkZSBhIHRyZWVpdGVt
IG9iamVjdC4KICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNj
ZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqb2JqZWN0LCB0cnVlLCBbXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAgIHJldHVybiBvYmplY3Qucm9s
ZVZhbHVlKCkgPT0gVHJlZUl0ZW1Sb2xlOworICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsKICAgICB9KSkKICAgICAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KHBhcmVudCk7CiAgICAgcmV0dXJu
IG5pbDsKQEAgLTIwMjIsNyArMjAyMCw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eUVsZW1lbnRE
aWRCZWNvbWVGb2MKICAgICAvLyBUaGUgZm9jdXNlZCBWb2ljZU92ZXIgZWxlbWVudCBtaWdodCBi
ZSB0aGUgdGV4dCBpbnNpZGUgYSBsaW5rLgogICAgIC8vIEluIHRob3NlIGNhc2VzIHdlIHNob3Vs
ZCBmb2N1cyBvbiB0aGUgbGluayBpdHNlbGYuCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QgPSBtX29iamVjdDsgb2JqZWN0ICE9IG5pbDsgb2JqZWN0ID0gb2JqZWN0LT5wYXJl
bnRPYmplY3QoKSkgewotICAgICAgICBpZiAob2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBXZWJBcmVh
Um9sZSkKKyAgICAgICAgaWYgKG9iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OldlYkFyZWEpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBpZiAob2JqZWN0LT5j
YW5TZXRGb2N1c0F0dHJpYnV0ZSgpKSB7CkBAIC0yOTcxLDIwICsyOTY5LDE5IEBAIC0gKE5TU3Ry
aW5nICopYWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3QKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICAKICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkpIHsKLSAgICBjYXNl
IEFSSUFDdXJyZW50RmFsc2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0
ZTo6RmFsc2U6CiAgICAgICAgIHJldHVybiBAImZhbHNlIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50
UGFnZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpQYWdlOgogICAg
ICAgICByZXR1cm4gQCJwYWdlIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50U3RlcDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpTdGVwOgogICAgICAgICByZXR1cm4gQCJz
dGVwIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50TG9jYXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5QVJJQUN1cnJlbnRTdGF0ZTo6TG9jYXRpb246CiAgICAgICAgIHJldHVybiBAImxvY2F0aW9u
IjsKLSAgICBjYXNlIEFSSUFDdXJyZW50VGltZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklB
Q3VycmVudFN0YXRlOjpUaW1lOgogICAgICAgICByZXR1cm4gQCJ0aW1lIjsKLSAgICBjYXNlIEFS
SUFDdXJyZW50RGF0ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpE
YXRlOgogICAgICAgICByZXR1cm4gQCJkYXRlIjsKLSAgICBkZWZhdWx0OgotICAgIGNhc2UgQVJJ
QUN1cnJlbnRUcnVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRy
dWU6CiAgICAgICAgIHJldHVybiBAInRydWUiOwogICAgIH0KIH0KQEAgLTI5OTUsMTQgKzI5OTIs
MTQgQEAgLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbgogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAogICAgIHN3aXRjaCAobV9vYmplY3QtPnNvcnREaXJlY3Rpb24oKSkg
ewotICAgIGNhc2UgU29ydERpcmVjdGlvbkFzY2VuZGluZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpBc2NlbmRpbmc6CiAgICAgICAgIHJldHVybiBAImFzY2VuZGluZyI7
Ci0gICAgY2FzZSBTb3J0RGlyZWN0aW9uRGVzY2VuZGluZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpEZXNjZW5kaW5nOgogICAgICAgICByZXR1cm4gQCJkZXNjZW5kaW5n
IjsKLSAgICBjYXNlIFNvcnREaXJlY3Rpb25PdGhlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlT
b3J0RGlyZWN0aW9uOjpPdGhlcjoKICAgICAgICAgcmV0dXJuIEAib3RoZXIiOwotICAgIGRlZmF1
bHQ6Ci0gICAgY2FzZSBTb3J0RGlyZWN0aW9uTm9uZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlT
b3J0RGlyZWN0aW9uOjpJbnZhbGlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rp
b246Ok5vbmU6CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogfQpAQCAtMzE0Miw3ICszMTM5
LDcgQEAgLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5TWF0aFR5cGUKICAgICBpZiAoIVtzZWxm
IF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
aWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBNYXRoRWxlbWVudFJvbGUpIHsKKyAgICBpZiAo
bV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudCkg
ewogICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gQCJBWE1hdGhGcmFjdGlvbiI7CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoRmVu
Y2VkKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmls
aXR5T2JqZWN0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0JKHJldmlzaW9uIDIyMzk0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTgyLDMyICs4MiwzMiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlJCiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QK
IHsKICAgICBpZiAoaXNNZW51TGlzdFBvcHVwKCkgfHwgaXNNZW51TGlzdE9wdGlvbigpKQotICAg
ICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IENh
cHRpb25Sb2xlKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgIGlmIChyb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FwdGlvbikKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAKLSAgICBpZiAocm9s
ZVZhbHVlKCkgPT0gTWFya1JvbGUpCi0gICAgICAgIHJldHVybiBJbmNsdWRlT2JqZWN0OworICAg
IGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWFyaykKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3Q7CiAKICAgICAv
LyBOZXZlciBleHBvc2UgYW4gdW5rbm93biBvYmplY3Qgb24gdGhlIE1hYy4gQ2xpZW50cyBvZiB0
aGUgQVggQVBJIHdpbGwgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIGl0LgogICAgIC8vIFNwZWNp
YWwgY2FzZSBpcyB3aGVuIHRoZSB1bmtub3duIG9iamVjdCBpcyBhY3R1YWxseSBhbiBhdHRhY2ht
ZW50LgotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBVbmtub3duUm9sZSAmJiAhaXNBdHRhY2htZW50
KCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmICFpc0F0dGFjaG1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAK
LSAgICBpZiAocm9sZVZhbHVlKCkgPT0gSW5saW5lUm9sZSAmJiAhaXNTdHlsZUZvcm1hdEdyb3Vw
KCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpJbmxpbmUgJiYgIWlzU3R5bGVGb3JtYXRHcm91cCgpKQorICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0Owog
CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgIC8vIFRoZSBsZWdlbmQgZWxlbWVudCBpcyBpZ25vcmVkIGlmIGl0IGxpdmVzIGluc2lk
ZSBvZiBhIGZpZWxkc2V0IGVsZW1lbnQgdGhhdCB1c2VzIGl0IHRvIGdlbmVyYXRlIGFsdGVybmF0
aXZlIHRleHQuCiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNMZWdlbmQoKSkgewogICAgICAgICAg
ICAgRWxlbWVudCogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChl
bGVtZW50ICYmIGFuY2VzdG9yc09mVHlwZTxIVE1MRmllbGRTZXRFbGVtZW50PigqZWxlbWVudCku
Zmlyc3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICAg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOwog
fQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYXJldEJyb3dzaW5nRW5hYmxlZCgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCShy
ZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3
ICszMjYsNyBAQCAtIChCT09MKWZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpCiAtIChO
U1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5VGl0bGUKIHsKICAgICAvLyBTdGF0aWMgdGV4dCBv
YmplY3RzIHNob3VsZCBub3QgaGF2ZSBhIHRpdGxlLiBJdHMgY29udGVudCBpcyBjb21tdW5pY2F0
ZWQgaW4gaXRzIEFYVmFsdWUuCi0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTdGF0
aWNUZXh0Um9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTdGF0aWNUZXh0KQogICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107CiAK
ICAgICAvLyBBIGZpbGUgdXBsb2FkIGJ1dHRvbiBwcmVzZW50cyBhIGNoYWxsZW5nZSBiZWNhdXNl
IGl0IGhhcyBidXR0b24gdGV4dCBhbmQgYSB2YWx1ZSwgYnV0IHRoZQpAQCAtMzQwLDE2ICszNDAs
MTYgQEAgLSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eVRpdGxlCiAgICAgCiAgICAgZm9y
IChjb25zdCBhdXRvJiB0ZXh0IDogdGV4dE9yZGVyKSB7CiAgICAgICAgIC8vIElmIHdlIGhhdmUg
YWx0ZXJuYXRpdmUgdGV4dCwgdGhlbiB3ZSBzaG91bGQgbm90IGV4cG9zZSBhIHRpdGxlLgotICAg
ICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFsdGVybmF0aXZlVGV4dCkKKyAgICAgICAgaWYg
KHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAgIC8vIE9uY2Ugd2UgZW5jb3Vu
dGVyIHZpc2libGUgdGV4dCwgb3IgdGhlIHRleHQgZnJvbSBvdXIgY2hpbGRyZW4gdGhhdCBzaG91
bGQgYmUgdXNlZCBmb3JlbW9zdC4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBWaXNp
YmxlVGV4dCB8fCB0ZXh0LnRleHRTb3VyY2UgPT0gQ2hpbGRyZW5UZXh0KQorICAgICAgICBpZiAo
dGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpWaXNpYmxlIHx8IHRl
eHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6Q2hpbGRyZW4pCiAgICAg
ICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlcmUn
cyBhbiBlbGVtZW50IHRoYXQgbGFiZWxzIHRoaXMgb2JqZWN0IGFuZCBpdCdzIG5vdCBleHBvc2Vk
LCB0aGVuIHdlIHNob3VsZCB1c2UKICAgICAgICAgLy8gdGhhdCB0ZXh0IGFzIG91ciB0aXRsZS4K
LSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBMYWJlbEJ5RWxlbWVudFRleHQgJiYgIW1f
b2JqZWN0LT5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKKyAgICAgICAgaWYgKHRleHQudGV4dFNv
dXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQgJiYgIW1fb2Jq
ZWN0LT5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRl
eHQ7CiAgICAgfQogICAgIApAQCAtMzYwLDcgKzM2MCw3IEBAIC0gKE5TU3RyaW5nICopYmFzZUFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGkKIHsKICAgICAvLyBTdGF0aWMgdGV4dCBvYmplY3RzIHNob3Vs
ZCBub3QgaGF2ZSBhIGRlc2NyaXB0aW9uLiBJdHMgY29udGVudCBpcyBjb21tdW5pY2F0ZWQgaW4g
aXRzIEFYVmFsdWUuCiAgICAgLy8gT25lIGV4Y2VwdGlvbiBpcyB0aGUgbWVkaWEgY29udHJvbCBs
YWJlbHMgdGhhdCBoYXZlIGEgdmFsdWUgYW5kIGEgZGVzY3JpcHRpb24uIFRob3NlIGFyZSBzZXQg
cHJvZ3JhbWF0aWNhbGx5LgotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gU3RhdGlj
VGV4dFJvbGUgJiYgIW1fb2JqZWN0LT5pc01lZGlhQ29udHJvbExhYmVsKCkpCisgICAgaWYgKG1f
b2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCAmJiAh
bV9vYmplY3QtPmlzTWVkaWFDb250cm9sTGFiZWwoKSkKICAgICAgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmddOwogICAgIAogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4gdGV4dE9yZGVy
OwpAQCAtMzY5LDE2ICszNjksMTYgQEAgLSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eURl
c2NyaXB0aQogICAgIE5TTXV0YWJsZVN0cmluZyAqcmV0dXJuVGV4dCA9IFtOU011dGFibGVTdHJp
bmcgc3RyaW5nXTsKICAgICBib29sIHZpc2libGVUZXh0QXZhaWxhYmxlID0gZmFsc2U7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiB0ZXh0IDogdGV4dE9yZGVyKSB7Ci0gICAgICAgIGlmICh0ZXh0LnRl
eHRTb3VyY2UgPT0gQWx0ZXJuYXRpdmVUZXh0KSB7CisgICAgICAgIGlmICh0ZXh0LnRleHRTb3Vy
Y2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSB7CiAgICAgICAgICAg
ICBbcmV0dXJuVGV4dCBhcHBlbmRTdHJpbmc6dGV4dC50ZXh0XTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHRleHQudGV4dFNvdXJjZSkg
ewogICAgICAgICAvLyBUaGVzZSBhcmUgc3ViLWNvbXBvbmVudHMgb2Ygb25lIGVsZW1lbnQgKEF0
dGFjaG1lbnQpIHRoYXQgYXJlIHJlLWNvbWJpbmVkIGluIE9TWCBhbmQgaU9TLgotICAgICAgICBj
YXNlIFRpdGxlVGV4dDoKLSAgICAgICAgY2FzZSBTdWJ0aXRsZVRleHQ6Ci0gICAgICAgIGNhc2Ug
QWN0aW9uVGV4dDogeworICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRs
ZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VidGl0bGU6CisgICAg
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFjdGlvbjogewogICAgICAgICAgICAg
aWYgKCF0ZXh0LnRleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBpZiAoW3JldHVyblRleHQgbGVuZ3RoXSkKQEAgLTM4NiwxNiArMzg2LDE2IEBAIC0gKE5T
U3RyaW5nICopYmFzZUFjY2Vzc2liaWxpdHlEZXNjcmlwdGkKICAgICAgICAgICAgIFtyZXR1cm5U
ZXh0IGFwcGVuZFN0cmluZzp0ZXh0LnRleHRdOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBWaXNpYmxlVGV4dDoKLSAgICAgICAgY2FzZSBDaGlsZHJlblRleHQ6
Ci0gICAgICAgIGNhc2UgTGFiZWxCeUVsZW1lbnRUZXh0OgorICAgICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpWaXNpYmxlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlOjpDaGlsZHJlbjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
TGFiZWxCeUVsZW1lbnQ6CiAgICAgICAgICAgICB2aXNpYmxlVGV4dEF2YWlsYWJsZSA9IHRydWU7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IFRp
dGxlVGFnVGV4dCAmJiAhdmlzaWJsZVRleHRBdmFpbGFibGUpIHsKKyAgICAgICAgaWYgKHRleHQu
dGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VGl0bGVUYWcgJiYgIXZpc2li
bGVUZXh0QXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBbcmV0dXJuVGV4dCBhcHBlbmRTdHJpbmc6
dGV4dC50ZXh0XTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MTEsMjMgKzQx
MSwyMyBAQCAtIChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5SGVscFRleHQKICAgICAKICAg
ICBib29sIGRlc2NyaXB0aXZlVGV4dEF2YWlsYWJsZSA9IGZhbHNlOwogICAgIGZvciAoY29uc3Qg
YXV0byYgdGV4dCA6IHRleHRPcmRlcikgewotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09
IEhlbHBUZXh0IHx8IHRleHQudGV4dFNvdXJjZSA9PSBTdW1tYXJ5VGV4dCkKKyAgICAgICAgaWYg
KHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCB8fCB0ZXh0
LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpCiAgICAgICAg
ICAgICByZXR1cm4gdGV4dC50ZXh0OwogICAgICAgICAKICAgICAgICAgLy8gSWYgYW4gZWxlbWVu
dCBkb2VzIE5PVCBoYXZlIG90aGVyIGRlc2NyaXB0aXZlIHRleHQgdGhlIHRpdGxlIHRhZyBzaG91
bGQgYmUgdXNlZCBhcyBpdHMgZGVzY3JpcHRpdmUgdGV4dC4KICAgICAgICAgLy8gQnV0LCBpZiB0
aG9zZSBBUkUgYXZhaWxhYmxlLCB0aGVuIHRoZSB0aXRsZSB0YWcgc2hvdWxkIGJlIHVzZWQgZm9y
IGhlbHAgdGV4dCBpbnN0ZWFkLgogICAgICAgICBzd2l0Y2ggKHRleHQudGV4dFNvdXJjZSkgewot
ICAgICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dDoKLSAgICAgICAgY2FzZSBWaXNpYmxlVGV4dDoK
LSAgICAgICAgY2FzZSBDaGlsZHJlblRleHQ6Ci0gICAgICAgIGNhc2UgTGFiZWxCeUVsZW1lbnRU
ZXh0OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZToK
KyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VmlzaWJsZToKKyAgICAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6Q2hpbGRyZW46CisgICAgICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVRleHRTb3VyY2U6OkxhYmVsQnlFbGVtZW50OgogICAgICAgICAgICAgZGVzY3Jp
cHRpdmVUZXh0QXZhaWxhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmIGRlc2NyaXB0aXZlVGV4dEF2
YWlsYWJsZSkKKyAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZTo6VGl0bGVUYWcgJiYgZGVzY3JpcHRpdmVUZXh0QXZhaWxhYmxlKQogICAgICAgICAg
ICAgcmV0dXJuIHRleHQudGV4dDsKICAgICB9CiAgICAgCkBAIC00OTgsNDggKzQ5OCw0OCBAQCAt
IChDR1BvaW50KWNvbnZlcnRQb2ludFRvU2NyZWVuU3BhY2U6KEZsCiAtIChOU1N0cmluZyAqKWFy
aWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbgogewogICAgIHN3aXRjaCAobV9vYmplY3QtPnJvbGVW
YWx1ZSgpKSB7Ci0gICAgY2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50
R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQmFubmVyIik7Ci0gICAgY2FzZSBMYW5kbWFya0NvbXBs
ZW1lbnRhcnlSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxl
bWVudGFyeToKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFu
ZG1hcmtDb21wbGVtZW50YXJ5Iik7Ci0gICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvOgogICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0NvbnRlbnRJbmZv
Iik7Ci0gICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrTWFpbjoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQo
QCJBUklBTGFuZG1hcmtNYWluIik7Ci0gICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKICAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtOYXZpZ2F0aW9uIik7
Ci0gICAgY2FzZSBMYW5kbWFya0RvY1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya1JlZ2lv
blJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb246CiAgICAgICAgIHJldHVy
biBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrUmVnaW9uIik7Ci0gICAgY2Fz
ZSBMYW5kbWFya1NlYXJjaFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtTZWFyY2g6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxh
bmRtYXJrU2VhcmNoIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgogICAgICAgICByZXR1cm4gQVhB
UklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvbkFsZXJ0Iik7Ci0gICAgY2FzZSBB
cHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpB
cHBsaWNhdGlvbkFsZXJ0RGlhbG9nOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3Vw
VGV4dChAIkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlv
bkRpYWxvZ1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFs
b2c6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0
aW9uRGlhbG9nIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkxvZ1JvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250
ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uTG9nIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlv
bk1hcnF1ZWVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFy
cXVlZToKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGlj
YXRpb25NYXJxdWVlIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiBB
WEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uU3RhdHVzIik7Ci0gICAgY2Fz
ZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvblRpbWVyOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFS
SUFBcHBsaWNhdGlvblRpbWVyIik7Ci0gICAgY2FzZSBEb2N1bWVudFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQ6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50
R3JvdXBUZXh0KEAiQVJJQURvY3VtZW50Iik7Ci0gICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xl
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50QXJ0aWNsZToKICAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBRG9jdW1lbnRBcnRpY2xlIik7Ci0g
ICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aDoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklB
RG9jdW1lbnRNYXRoIik7Ci0gICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZToKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRl
bnRHcm91cFRleHQoQCJBUklBRG9jdW1lbnROb3RlIik7Ci0gICAgY2FzZSBVc2VySW50ZXJmYWNl
VG9vbHRpcFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVyZmFjZVRv
b2x0aXA6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQVVzZXJJ
bnRlcmZhY2VUb29sdGlwIik7Ci0gICAgY2FzZSBUYWJQYW5lbFJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiUGFuZWw6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3Jv
dXBUZXh0KEAiQVJJQVRhYlBhbmVsIik7Ci0gICAgY2FzZSBXZWJBcHBsaWNhdGlvblJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGljYXRpb246CiAgICAgICAgIHJldHVy
biBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQVdlYkFwcGxpY2F0aW9uIik7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTY1Miw0NiArNjUyLDQ2IEBAIHN0cnVjdCBT
ZWFyY2hLZXlFbnRyeSB7CiBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogY3JlYXRl
QWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpCiB7CiAgICAgY29uc3QgU2VhcmNoS2V5RW50cnkg
c2VhcmNoS2V5c1tdID0gewotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hL
ZXksIEFueVR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlBcnRpY2xl
U2VhcmNoS2V5LCBBcnRpY2xlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSwgQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtl
eSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXksIEJsb2Nr
cXVvdGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCb2xkRm9udFNlYXJj
aEtleSwgQm9sZEZvbnRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCdXR0
b25TZWFyY2hLZXksIEJ1dHRvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUNoZWNrQm94U2VhcmNoS2V5LCBDaGVja0JveFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXkgfSwKLSAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5LCBEaWZmZXJlbnRUeXBlU2Vh
cmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSwg
Rm9udENoYW5nZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xv
ckNoYW5nZVNlYXJjaEtleSwgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXksIEZyYW1lU2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtleSwgR3JhcGhpY1NlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXksIEhlYWRpbmdM
ZXZlbDFTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwy
U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleSwgSGVhZGluZ0xldmVsM1NlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hLZXksIEhlYWRpbmdM
ZXZlbDRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw1
U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleSwgSGVhZGluZ0xldmVsNlNlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXksIEhlYWRp
bmdTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5n
U2VhcmNoS2V5LCBIZWFkaW5nU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
SGlnaGxpZ2h0ZWRTZWFyY2hLZXksIEhpZ2hsaWdodGVkU2VhcmNoS2V5IH0sCi0gICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSwgSXRhbGljRm9udFNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5LCBMYW5kbWFya1Nl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpbmtTZWFyY2hLZXksIExpbmtT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNoS2V5LCBMaXN0
U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtl
eSwgTGl2ZVJlZ2lvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eU1pc3Nw
ZWxsZWRXb3JkU2VhcmNoS2V5LCBNaXNzcGVsbGVkV29yZFNlYXJjaEtleSB9LAotICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXksIE91dGxpbmVTZWFyY2hLZXkgfSwKLSAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXksIFBsYWluVGV4dFNlYXJj
aEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXksIFJh
ZGlvR3JvdXBTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTYW1lVHlwZVNl
YXJjaEtleSwgU2FtZVR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlT
dGF0aWNUZXh0U2VhcmNoS2V5LCBTdGF0aWNUZXh0U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXksIFN0eWxlQ2hhbmdlU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXksIFRhYmxl
U2FtZUxldmVsU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFy
Y2hLZXksIFRhYmxlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGV4dEZp
ZWxkU2VhcmNoS2V5LCBUZXh0RmllbGRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlVbmRlcmxpbmVTZWFyY2hLZXksIFVuZGVybGluZVNlYXJjaEtleSB9LAotICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXksIFVudmlzaXRlZExpbmtTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlWaXNpdGVkTGlua1NlYXJjaEtleSwg
VmlzaXRlZExpbmtTZWFyY2hLZXkgfQorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUFueVR5cGVT
ZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGUgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlBcnRpY2xlU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpB
cnRpY2xlIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNl
YXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QmxvY2txdW90ZVNhbWVMZXZlbCB9LAor
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXksIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OkJsb2NrcXVvdGUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCb2xk
Rm9udFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Qm9sZEZvbnQgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlCdXR0b25TZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXk6OkJ1dHRvbiB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpDaGVja0JveCB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUNvbnRyb2xTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkNvbnRyb2wg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpEaWZmZXJlbnRUeXBlIH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Rm9udENo
YW5nZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtl
eSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Rm9udENvbG9yQ2hhbmdlIH0sCisgICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkZy
YW1lIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtleSwgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6R3JhcGhpYyB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhl
YWRpbmdMZXZlbDFTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZl
bDEgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5LCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWwyIH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6
SGVhZGluZ0xldmVsMyB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRT
ZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDQgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWw1IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVh
ZGluZ0xldmVsNlNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVs
NiB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXks
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdTYW1lTGV2ZWwgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpI
ZWFkaW5nIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXks
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhpZ2hsaWdodGVkIH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SXRh
bGljRm9udCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5LCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpMYW5kbWFyayB9LAorICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUxpbmtTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkxpbmsgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
OjpMaXN0IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleSwg
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6TGl2ZVJlZ2lvbiB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eU1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpN
aXNzcGVsbGVkV29yZCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hL
ZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Ok91dGxpbmUgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlBsYWlu
VGV4dCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXksIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6OlJhZGlvR3JvdXAgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlTYW1lVHlwZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6U2FtZVR5cGUg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0U2VhcmNoS2V5LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpTdGF0aWNUZXh0IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
U3R5bGVDaGFuZ2VTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlN0eWxlQ2hhbmdl
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXksIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6OlRhYmxlU2FtZUxldmVsIH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5VGFibGVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlRhYmxlIH0s
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5LCBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpUZXh0RmllbGQgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlVbmRl
cmxpbmVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlVuZGVybGluZSB9LAorICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXksIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OlVudmlzaXRlZExpbmsgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlW
aXNpdGVkTGlua1NlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6VmlzaXRlZExpbmsg
fQogICAgIH07CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5
TWFwID0gbmV3IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXA7CkBAIC03MDQsMTEgKzcwNCwxMSBA
QCBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogY3JlYXRlCiBzdGF0aWMgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IEFueVR5cGVTZWFyY2hLZXk7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
OjpBbnlUeXBlOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
TWFwKiBzZWFyY2hLZXlNYXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKCk7CiAg
ICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFyY2hLZXkgPSBzZWFyY2hLZXlNYXAtPmdldCh2
YWx1ZSk7ICAgIAotICAgIHJldHVybiBzZWFyY2hLZXkgPyBzZWFyY2hLZXkgOiBBbnlUeXBlU2Vh
cmNoS2V5OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHNlYXJjaEtleSkgPyBzZWFyY2hL
ZXkgOiBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBbnlUeXBlOwogfQogCiBBY2Nlc3NpYmlsaXR5
U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGlj
YXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUpCkBAIC03MjEsOSArNzIxLDkgQEAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhIGFjY2Vzc2liaWxpdAogICAgIE5TTnVtYmVyICp2aXNpYmxlT25seVBhcmFtZXRlciA9IFtw
YXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYVmlzaWJsZU9ubHkiXTsKICAg
ICBpZCBzZWFyY2hLZXlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RG
b3JLZXk6QCJBWFNlYXJjaEtleSJdOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJl
Y3Rpb24gZGlyZWN0aW9uID0gU2VhcmNoRGlyZWN0aW9uTmV4dDsKKyAgICBBY2Nlc3NpYmlsaXR5
U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbiA9IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246
Ok5leHQ7CiAgICAgaWYgKFtkaXJlY3Rpb25QYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSkKLSAgICAgICAgZGlyZWN0aW9uID0gW2RpcmVjdGlvblBhcmFtZXRlciBpc0Vx
dWFsVG9TdHJpbmc6QCJBWERpcmVjdGlvbk5leHQiXSA/IFNlYXJjaERpcmVjdGlvbk5leHQgOiBT
ZWFyY2hEaXJlY3Rpb25QcmV2aW91czsKKyAgICAgICAgZGlyZWN0aW9uID0gW2RpcmVjdGlvblBh
cmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6QCJBWERpcmVjdGlvbk5leHQiXSA/IEFjY2Vzc2liaWxp
dHlTZWFyY2hEaXJlY3Rpb246Ok5leHQgOiBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQ
cmV2aW91czsKICAgICAKICAgICBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSA9IGZhbHNl
OwogICAgIGlmIChbaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5UGFyYW1ldGVyIGlzS2luZE9mQ2xh
c3M6W05TTnVtYmVyIGNsYXNzXV0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ5NCwyNCArNDk0LDI0IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dENy
aXRlcmlhIGEKICAgICBOU1N0cmluZyAqcmVwbGFjZW1lbnRTdHJpbmdQYXJhbWV0ZXIgPSBbcGFy
YW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4
dFJlcGxhY2VtZW50U3RyaW5nXTsKICAgICBOU0FycmF5ICpzZWFyY2hTdHJpbmdzUGFyYW1ldGVy
ID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVNl
bGVjdFRleHRTZWFyY2hTdHJpbmdzXTsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4
dEFjdGl2aXR5IGFjdGl2aXR5ID0gRmluZEFuZFNlbGVjdEFjdGl2aXR5OworICAgIEFjY2Vzc2li
aWxpdHlTZWxlY3RUZXh0QWN0aXZpdHkgYWN0aXZpdHkgPSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4
dEFjdGl2aXR5OjpGaW5kQW5kU2VsZWN0OwogICAgIGlmIChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewogICAgICAgICBpZiAoW2FjdGl2aXR5UGFy
YW1ldGVyIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHlG
aW5kQW5kUmVwbGFjZV0pCi0gICAgICAgICAgICBhY3Rpdml0eSA9IEZpbmRBbmRSZXBsYWNlQWN0
aXZpdHk7CisgICAgICAgICAgICBhY3Rpdml0eSA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0
aXZpdHk6OkZpbmRBbmRSZXBsYWNlOwogICAgICAgICBlbHNlIGlmIChbYWN0aXZpdHlQYXJhbWV0
ZXIgaXNFcXVhbFRvU3RyaW5nOmtBWFNlbGVjdFRleHRBY3Rpdml0eUZpbmRBbmRDYXBpdGFsaXpl
XSkKLSAgICAgICAgICAgIGFjdGl2aXR5ID0gRmluZEFuZENhcGl0YWxpemU7CisgICAgICAgICAg
ICBhY3Rpdml0eSA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRDYXBp
dGFsaXplOwogICAgICAgICBlbHNlIGlmIChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNFcXVhbFRvU3Ry
aW5nOmtBWFNlbGVjdFRleHRBY3Rpdml0eUZpbmRBbmRMb3dlcmNhc2VdKQotICAgICAgICAgICAg
YWN0aXZpdHkgPSBGaW5kQW5kTG93ZXJjYXNlOworICAgICAgICAgICAgYWN0aXZpdHkgPSBBY2Nl
c3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5kTG93ZXJjYXNlOwogICAgICAgICBl
bHNlIGlmIChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNFcXVhbFRvU3RyaW5nOmtBWFNlbGVjdFRleHRB
Y3Rpdml0eUZpbmRBbmRVcHBlcmNhc2VdKQotICAgICAgICAgICAgYWN0aXZpdHkgPSBGaW5kQW5k
VXBwZXJjYXNlOworICAgICAgICAgICAgYWN0aXZpdHkgPSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4
dEFjdGl2aXR5OjpGaW5kQW5kVXBwZXJjYXNlOwogICAgIH0KICAgICAKLSAgICBBY2Nlc3NpYmls
aXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb24gYW1iaWd1aXR5UmVzb2x1dGlvbiA9IENs
b3Nlc3RUb1NlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb247CisgICAgQWNjZXNzaWJpbGl0eVNl
bGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uIGFtYmlndWl0eVJlc29sdXRpb24gPSBBY2Nlc3Np
YmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RUbzsKICAgICBpZiAo
W2FtYmlndWl0eVJlc29sdXRpb25QYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkgewogICAgICAgICBpZiAoW2FtYmlndWl0eVJlc29sdXRpb25QYXJhbWV0ZXIgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uQ2xv
c2VzdEFmdGVyU2VsZWN0aW9uXSkKLSAgICAgICAgICAgIGFtYmlndWl0eVJlc29sdXRpb24gPSBD
bG9zZXN0QWZ0ZXJTZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uOworICAgICAgICAgICAgYW1i
aWd1aXR5UmVzb2x1dGlvbiA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1
dGlvbjo6Q2xvc2VzdEFmdGVyOwogICAgICAgICBlbHNlIGlmIChbYW1iaWd1aXR5UmVzb2x1dGlv
blBhcmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmln
dWl0eVJlc29sdXRpb25DbG9zZXN0QmVmb3JlU2VsZWN0aW9uXSkKLSAgICAgICAgICAgIGFtYmln
dWl0eVJlc29sdXRpb24gPSBDbG9zZXN0QmVmb3JlU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlv
bjsKKyAgICAgICAgICAgIGFtYmlndWl0eVJlc29sdXRpb24gPSBBY2Nlc3NpYmlsaXR5U2VsZWN0
VGV4dEFtYmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RCZWZvcmU7CiAgICAgfQogICAgIAogICAg
IFN0cmluZyByZXBsYWNlbWVudFN0cmluZzsKQEAgLTExOTgsNyArMTE5OCw3IEBAIC0gKE5TQXJy
YXkqKWFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmkKICAgICAgICAgW2FkZGl0aW9uYWwgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFQb3NJblNldEF0dHJpYnV0ZV07CiAgICAgCiAgICAg
QWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbiA9IG1fb2JqZWN0LT5zb3J0
RGlyZWN0aW9uKCk7Ci0gICAgaWYgKHNvcnREaXJlY3Rpb24gIT0gU29ydERpcmVjdGlvbk5vbmUg
JiYgc29ydERpcmVjdGlvbiAhPSBTb3J0RGlyZWN0aW9uSW52YWxpZCkKKyAgICBpZiAoc29ydERp
cmVjdGlvbiAhPSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9uZSAmJiBzb3J0RGlyZWN0
aW9uICE9IEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpJbnZhbGlkKQogICAgICAgICBbYWRk
aXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZV07
CiAgICAgCiAgICAgLy8gSWYgYW4gb2JqZWN0IGlzIGEgY2hpbGQgb2YgYSBsaXZlIHJlZ2lvbiwg
dGhlbiBhZGQgdGhlc2UKQEAgLTE2NjEsNyArMTY2MSw3IEBAIC0gKE5TQXJyYXkqKWFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVOYW1lcwogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gW29iamVjdEF0
dHJpYnV0ZXMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6YWRkaXRpb25hbEF0dHJpYnV0
ZXNdOwogICAgIAogICAgIC8vIE9ubHkgZXhwb3NlIEFYQVJJQUN1cnJlbnQgYXR0cmlidXRlIHdo
ZW4gdGhlIGVsZW1lbnQgaXMgc2V0IHRvIGJlIGN1cnJlbnQgaXRlbS4KLSAgICBpZiAobV9vYmpl
Y3QtPmFyaWFDdXJyZW50U3RhdGUoKSAhPSBBUklBQ3VycmVudEZhbHNlKQorICAgIGlmIChtX29i
amVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgpICE9IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRl
OjpGYWxzZSkKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IFtvYmplY3RBdHRyaWJ1dGVzIGFy
cmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbIE5TQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
QXR0cmlidXRlIF1dOwogICAgIAogICAgIHJldHVybiBvYmplY3RBdHRyaWJ1dGVzOwpAQCAtMTg0
OSwxNTQgKzE4NDksMTU0IEBAIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgY3Jl
YXQKICAgICB9OwogICAgIAogICAgIHN0YXRpYyBjb25zdCBSb2xlRW50cnkgcm9sZXNbXSA9IHsK
LSAgICAgICAgeyBVbmtub3duUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGUgfSwKLSAg
ICAgICAgeyBCdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0sCi0gICAgICAg
IHsgUmFkaW9CdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlSYWRpb0J1dHRvblJvbGUgfSwKLSAg
ICAgICAgeyBDaGVja0JveFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9sZSB9LAotICAg
ICAgICB7IFNsaWRlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVNsaWRlclJvbGUgfSwKLSAgICAgICAg
eyBUYWJHcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eVRhYkdyb3VwUm9sZSB9LAotICAgICAgICB7
IFRleHRGaWVsZFJvbGUsIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFJvbGUgfSwKLSAgICAgICAg
eyBTdGF0aWNUZXh0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFJvbGUgfSwKLSAgICAg
ICAgeyBUZXh0QXJlYVJvbGUsIE5TQWNjZXNzaWJpbGl0eVRleHRBcmVhUm9sZSB9LAotICAgICAg
ICB7IFNjcm9sbEFyZWFSb2xlLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxBcmVhUm9sZSB9LAotICAg
ICAgICB7IFBvcFVwQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UG9wVXBCdXR0b25Sb2xlIH0s
Ci0gICAgICAgIHsgTWVudUJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVCdXR0b25Sb2xl
IH0sCi0gICAgICAgIHsgVGFibGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGUgfSwKLSAg
ICAgICAgeyBBcHBsaWNhdGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUFwcGxpY2F0aW9uUm9sZSB9
LAotICAgICAgICB7IEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgVGV4dEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgUmFkaW9Hcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgTGlzdFJvbGUsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCi0gICAgICAgIHsgRGly
ZWN0b3J5Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUgfSwKLSAgICAgICAgeyBTY3JvbGxC
YXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxCYXJSb2xlIH0sCi0gICAgICAgIHsgVmFsdWVJ
bmRpY2F0b3JSb2xlLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUluZGljYXRvclJvbGUgfSwKLSAgICAg
ICAgeyBJbWFnZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAotICAgICAgICB7IE1l
bnVCYXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51QmFyUm9sZSB9LAotICAgICAgICB7IE1lbnVS
b2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51Um9sZSB9LAotICAgICAgICB7IE1lbnVJdGVtUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0sCi0gICAgICAgIHsgTWVudUl0ZW1DaGVja2Jv
eFJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVtUm9sZSB9LAotICAgICAgICB7IE1lbnVJdGVt
UmFkaW9Sb2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51SXRlbVJvbGUgfSwKLSAgICAgICAgeyBDb2x1
bW5Sb2xlLCBOU0FjY2Vzc2liaWxpdHlDb2x1bW5Sb2xlIH0sCi0gICAgICAgIHsgUm93Um9sZSwg
TlNBY2Nlc3NpYmlsaXR5Um93Um9sZSB9LAotICAgICAgICB7IFRvb2xiYXJSb2xlLCBOU0FjY2Vz
c2liaWxpdHlUb29sYmFyUm9sZSB9LAotICAgICAgICB7IEJ1c3lJbmRpY2F0b3JSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlCdXN5SW5kaWNhdG9yUm9sZSB9LAotICAgICAgICB7IFByb2dyZXNzSW5kaWNh
dG9yUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCi0gICAgICAg
IHsgV2luZG93Um9sZSwgTlNBY2Nlc3NpYmlsaXR5V2luZG93Um9sZSB9LAotICAgICAgICB7IERy
YXdlclJvbGUsIE5TQWNjZXNzaWJpbGl0eURyYXdlclJvbGUgfSwKLSAgICAgICAgeyBTeXN0ZW1X
aWRlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3lzdGVtV2lkZVJvbGUgfSwKLSAgICAgICAgeyBPdXRs
aW5lUm9sZSwgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKLSAgICAgICAgeyBJbmNyZW1l
bnRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9sZSB9LAotICAgICAgICB7IEJy
b3dzZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlCcm93c2VyUm9sZSB9LAotICAgICAgICB7IENvbWJv
Qm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5Q29tYm9Cb3hSb2xlIH0sCi0gICAgICAgIHsgU3BsaXRH
cm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgU3Bs
aXR0ZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlTcGxpdHRlclJvbGUgfSwKLSAgICAgICAgeyBDb2xv
cldlbGxSb2xlLCBOU0FjY2Vzc2liaWxpdHlDb2xvcldlbGxSb2xlIH0sCi0gICAgICAgIHsgR3Jv
d0FyZWFSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm93QXJlYVJvbGUgfSwKLSAgICAgICAgeyBTaGVl
dFJvbGUsIE5TQWNjZXNzaWJpbGl0eVNoZWV0Um9sZSB9LAotICAgICAgICB7IEhlbHBUYWdSb2xl
LCBOU0FjY2Vzc2liaWxpdHlIZWxwVGFnUm9sZSB9LAotICAgICAgICB7IE1hdHRlUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5TWF0dGVSb2xlIH0sCi0gICAgICAgIHsgUnVsZXJSb2xlLCBOU0FjY2Vzc2li
aWxpdHlSdWxlclJvbGUgfSwKLSAgICAgICAgeyBSdWxlck1hcmtlclJvbGUsIE5TQWNjZXNzaWJp
bGl0eVJ1bGVyTWFya2VyUm9sZSB9LAotICAgICAgICB7IExpbmtSb2xlLCBOU0FjY2Vzc2liaWxp
dHlMaW5rUm9sZSB9LAotICAgICAgICB7IERpc2Nsb3N1cmVUcmlhbmdsZVJvbGUsIE5TQWNjZXNz
aWJpbGl0eURpc2Nsb3N1cmVUcmlhbmdsZVJvbGUgfSwKLSAgICAgICAgeyBHcmlkUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5VGFibGVSb2xlIH0sCi0gICAgICAgIHsgVHJlZUdyaWRSb2xlLCBOU0FjY2Vz
c2liaWxpdHlUYWJsZVJvbGUgfSwKLSAgICAgICAgeyBXZWJDb3JlTGlua1JvbGUsIE5TQWNjZXNz
aWJpbGl0eUxpbmtSb2xlIH0sCi0gICAgICAgIHsgSW1hZ2VNYXBMaW5rUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5TGlua1JvbGUgfSwKLSAgICAgICAgeyBJbWFnZU1hcFJvbGUsIEAiQVhJbWFnZU1hcCIg
fSwKLSAgICAgICAgeyBMaXN0TWFya2VyUm9sZSwgQCJBWExpc3RNYXJrZXIiIH0sCi0gICAgICAg
IHsgV2ViQXJlYVJvbGUsIEAiQVhXZWJBcmVhIiB9LAotICAgICAgICB7IEhlYWRpbmdSb2xlLCBA
IkFYSGVhZGluZyIgfSwKLSAgICAgICAgeyBMaXN0Qm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlz
dFJvbGUgfSwKLSAgICAgICAgeyBMaXN0Qm94T3B0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3Rh
dGljVGV4dFJvbGUgfSwKLSAgICAgICAgeyBDZWxsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJv
bGUgfSwKLSAgICAgICAgeyBHcmlkQ2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0s
Ci0gICAgICAgIHsgVGFibGVIZWFkZXJDb250YWluZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBDb2x1bW5IZWFkZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlDZWxs
Um9sZSB9LAotICAgICAgICB7IFJvd0hlYWRlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xl
IH0sCi0gICAgICAgIHsgRGVmaW5pdGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAotICAgICAgICB7IERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAotICAgICAgICB7IERlc2NyaXB0aW9uTGlzdFRlcm1Sb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUZXJtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCi0gICAgICAgIHsgRGVzY3JpcHRpb25MaXN0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
TGlzdFJvbGUgfSwKLSAgICAgICAgeyBTbGlkZXJUaHVtYlJvbGUsIE5TQWNjZXNzaWJpbGl0eVZh
bHVlSW5kaWNhdG9yUm9sZSB9LAotICAgICAgICB7IFdlYkFwcGxpY2F0aW9uUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFuZG1hcmtCYW5uZXJSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya0NvbXBsZW1lbnRhcnlS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya0RvY1Jl
Z2lvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJr
Q29udGVudEluZm9Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBM
YW5kbWFya01haW5Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBM
YW5kbWFya05hdmlnYXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAg
ICAgeyBMYW5kbWFya1JlZ2lvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IExhbmRtYXJrU2VhcmNoUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0g
ICAgICAgIHsgQXBwbGljYXRpb25BbGVydFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAotICAgICAgICB7IEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkRpYWxvZ1JvbGUsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uR3JvdXBSb2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvblRleHRHcm91cFJvbGUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uTG9nUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25NYXJx
dWVlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRp
b25TdGF0dXNSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBs
aWNhdGlvblRpbWVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
RG9jdW1lbnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEb2N1
bWVudEFydGljbGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBE
b2N1bWVudE1hdGhSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBE
b2N1bWVudE5vdGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBV
c2VySW50ZXJmYWNlVG9vbHRpcFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IFRhYlJvbGUsIE5TQWNjZXNzaWJpbGl0eVJhZGlvQnV0dG9uUm9sZSB9LAotICAgICAg
ICB7IFRhYkxpc3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJHcm91cFJvbGUgfSwKLSAgICAgICAg
eyBUYWJQYW5lbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFRy
ZWVSb2xlLCBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm9sZSB9LAotICAgICAgICB7IFRyZWVJdGVt
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5Um93Um9sZSB9LAotICAgICAgICB7IExpc3RJdGVtUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUGFyYWdyYXBoUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFiZWxSb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEaXZSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBGb3JtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgU3BpbkJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9s
ZSB9LAotICAgICAgICB7IEZvb3RlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAot
ICAgICAgICB7IFRvZ2dsZUJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9sZSB9
LAotICAgICAgICB7IENhbnZhc1JvbGUsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAotICAg
ICAgICB7IFNWR1Jvb3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAg
eyBMZWdlbmRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBNYXRo
RWxlbWVudFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEF1ZGlv
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVmlkZW9Sb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBIb3Jpem9udGFsUnVsZVJvbGUs
IE5TQWNjZXNzaWJpbGl0eVNwbGl0dGVyUm9sZSB9LAotICAgICAgICB7IEJsb2NrcXVvdGVSb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTd2l0Y2hSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlDaGVja0JveFJvbGUgfSwKLSAgICAgICAgeyBTZWFyY2hGaWVsZFJvbGUsIE5T
QWNjZXNzaWJpbGl0eVRleHRGaWVsZFJvbGUgfSwKLSAgICAgICAgeyBQcmVSb2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBSdWJ5QmFzZVJvbGUsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFJ1YnlCbG9ja1JvbGUsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFJ1YnlJbmxpbmVSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKLSAgICAgICAgeyBSdWJ5UnVuUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgUnVieVRleHRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKLSAgICAgICAgeyBEZXRhaWxzUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0g
ICAgICAgIHsgU3VtbWFyeVJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKLSAgICAg
ICAgeyBTVkdUZXh0UGF0aFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAg
ICB7IFNWR1RleHRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBT
VkdUU3BhblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IElubGlu
ZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IE1hcmtSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUaW1lUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRmVlZFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAotICAgICAgICB7IEZpZ3VyZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IEZvb3Rub3RlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24sIE5TQWNjZXNzaWJpbGl0eVVu
a25vd25Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbiwgTlNBY2Nl
c3NpYmlsaXR5QnV0dG9uUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRp
b0J1dHRvbiwgTlNBY2Nlc3NpYmlsaXR5UmFkaW9CdXR0b25Sb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94LCBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFJvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyLCBOU0FjY2Vzc2liaWxpdHlTbGlk
ZXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkdyb3VwLCBOU0FjY2Vz
c2liaWxpdHlUYWJHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4
dEZpZWxkLCBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlN0YXRpY1RleHQsIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhLCBOU0FjY2Vzc2liaWxpdHlU
ZXh0QXJlYVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYSwg
TlNBY2Nlc3NpYmlsaXR5U2Nyb2xsQXJlYVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6UG9wVXBCdXR0b24sIE5TQWNjZXNzaWJpbGl0eVBvcFVwQnV0dG9uUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlNZW51
QnV0dG9uUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZSwgTlNBY2Nl
c3NpYmlsaXR5VGFibGVSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uLCBOU0FjY2Vzc2liaWxpdHlBcHBsaWNhdGlvblJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6R3JvdXAsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwLCBOU0FjY2Vzc2li
aWxpdHlSYWRpb0dyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0
LCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpEaXJlY3RvcnksIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlNjcm9sbEJhciwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsQmFyUm9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpWYWx1ZUluZGljYXRvciwgTlNBY2Nlc3NpYmls
aXR5VmFsdWVJbmRpY2F0b3JSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Oklt
YWdlLCBOU0FjY2Vzc2liaWxpdHlJbWFnZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUJhciwgTlNBY2Nlc3NpYmlsaXR5TWVudUJhclJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudSwgTlNBY2Nlc3NpYmlsaXR5TWVudVJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW0sIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVt
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94LCBO
U0FjY2Vzc2liaWxpdHlNZW51SXRlbVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUl0ZW1SYWRpbywgTlNBY2Nlc3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0sCisgICAgICAg
IHsgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiwgTlNBY2Nlc3NpYmlsaXR5Q29sdW1uUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3csIE5TQWNjZXNzaWJpbGl0eVJvd1Jv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhciwgTlNBY2Nlc3NpYmls
aXR5VG9vbGJhclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QnVzeUluZGlj
YXRvciwgTlNBY2Nlc3NpYmlsaXR5QnVzeUluZGljYXRvclJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IsIE5TQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpXaW5kb3csIE5T
QWNjZXNzaWJpbGl0eVdpbmRvd1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
RHJhd2VyLCBOU0FjY2Vzc2liaWxpdHlEcmF3ZXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OlN5c3RlbVdpZGUsIE5TQWNjZXNzaWJpbGl0eVN5c3RlbVdpZGVSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok91dGxpbmUsIE5TQWNjZXNzaWJpbGl0eU91dGxp
bmVSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkluY3JlbWVudG9yLCBOU0Fj
Y2Vzc2liaWxpdHlJbmNyZW1lbnRvclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QnJvd3NlciwgTlNBY2Nlc3NpYmlsaXR5QnJvd3NlclJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3gsIE5TQWNjZXNzaWJpbGl0eUNvbWJvQm94Um9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdEdyb3VwLCBOU0FjY2Vzc2liaWxpdHlT
cGxpdEdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlciwg
TlNBY2Nlc3NpYmlsaXR5U3BsaXR0ZXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbG9yV2VsbCwgTlNBY2Nlc3NpYmlsaXR5Q29sb3JXZWxsUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm93QXJlYSwgTlNBY2Nlc3NpYmlsaXR5R3Jvd0FyZWFSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNoZWV0LCBOU0FjY2Vzc2liaWxpdHlT
aGVldFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVscFRhZywgTlNBY2Nl
c3NpYmlsaXR5SGVscFRhZ1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0
dGUsIE5TQWNjZXNzaWJpbGl0eU1hdHRlUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlS
b2xlOjpSdWxlciwgTlNBY2Nlc3NpYmlsaXR5UnVsZXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlJ1bGVyTWFya2VyLCBOU0FjY2Vzc2liaWxpdHlSdWxlck1hcmtlclJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluaywgTlNBY2Nlc3NpYmlsaXR5TGlu
a1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlzY2xvc3VyZVRyaWFuZ2xl
LCBOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlVHJpYW5nbGVSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OkdyaWQsIE5TQWNjZXNzaWJpbGl0eVRhYmxlUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZCwgTlNBY2Nlc3NpYmlsaXR5VGFibGVSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rLCBOU0FjY2Vzc2li
aWxpdHlMaW5rUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExp
bmssIE5TQWNjZXNzaWJpbGl0eUxpbmtSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OkltYWdlTWFwLCBAIkFYSW1hZ2VNYXAiIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RNYXJrZXIsIEAiQVhMaXN0TWFya2VyIiB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpXZWJBcmVhLCBAIkFYV2ViQXJlYSIgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6SGVhZGluZywgQCJBWEhlYWRpbmciIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RCb3gsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb24sIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwsIE5TQWNjZXNzaWJpbGl0eUNl
bGxSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWRDZWxsLCBOU0FjY2Vz
c2liaWxpdHlDZWxsUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhl
YWRlckNvbnRhaW5lciwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlciwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyLCBOU0FjY2Vzc2liaWxpdHlD
ZWxsUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVz
Y3JpcHRpb25MaXN0RGV0YWlsLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0VGVybSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRlcm0sIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlw
dGlvbkxpc3QsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OlNsaWRlclRodW1iLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUluZGljYXRvclJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGljYXRpb24sIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a0Jhbm5lciwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtDb250ZW50SW5mbywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrUmVnaW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2gsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0LCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25BbGVydERpYWxvZywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uVGV4dEdyb3VwLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2csIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1
ZWUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvblN0YXR1cywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXIsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudCwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50QXJ0aWNsZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50TWF0aCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlVzZXJJbnRlcmZh
Y2VUb29sdGlwLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiLCBOU0FjY2Vzc2liaWxpdHlSYWRpb0J1dHRvblJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdCwgTlNBY2Nlc3NpYmlsaXR5VGFiR3JvdXBS
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSwgTlNB
Y2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
VHJlZUl0ZW0sIE5TQWNjZXNzaWJpbGl0eVJvd1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEl0ZW0sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGgsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJlbCwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRpdiwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0sIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGlu
QnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRvclJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6Rm9vdGVyLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlDaGVj
a0JveFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzLCBOU0FjY2Vz
c2liaWxpdHlJbWFnZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9v
dCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OkxlZ2VuZCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1hdGhFbGVtZW50LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVkaW8sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpWaWRlbywgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxl
LCBOU0FjY2Vzc2liaWxpdHlTcGxpdHRlclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6QmxvY2txdW90ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaCwgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkLCBOU0FjY2Vzc2liaWxp
dHlUZXh0RmllbGRSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlByZSwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1
YnlCYXNlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6UnVieUJsb2NrLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVieUlubGluZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlSdW4sIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5VGV4dCwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRl
dGFpbHMsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpTdW1tYXJ5LCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RleHRQYXRoLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dCwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RTcGFuLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5s
aW5lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWFyaywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlRpbWUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGUsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVN
YXAgPSAqbmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwogICAgIAogICAgIGNvbnN0IHVuc2lnbmVk
IG51bVJvbGVzID0gc2l6ZW9mKHJvbGVzKSAvIHNpemVvZihyb2xlc1swXSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bVJvbGVzOyArK2kpCi0gICAgICAgIHJvbGVNYXAuc2V0KHJv
bGVzW2ldLnZhbHVlLCByb2xlc1tpXS5zdHJpbmcpOworICAgICAgICByb2xlTWFwLnNldChzdGF0
aWNfY2FzdDxpbnQ+KHJvbGVzW2ldLnZhbHVlKSwgcm9sZXNbaV0uc3RyaW5nKTsKICAgICByZXR1
cm4gcm9sZU1hcDsKIH0KIAogc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFj
Y2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgQVNTRVJU
KHN0YXRpY19jYXN0PGludD4odmFsdWUpKTsKICAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0
eVJvbGVNYXAmIHJvbGVNYXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCgpOwotICAgIHJl
dHVybiByb2xlTWFwLmdldCh2YWx1ZSk7CisgICAgcmV0dXJuIHJvbGVNYXAuZ2V0KHN0YXRpY19j
YXN0PGludD4odmFsdWUpKTsKIH0KIAogLSAoTlNTdHJpbmcqKXJvbGUKQEAgLTIwMDgsMTcgKzIw
MDgsMTcgQEAgLSAoTlNTdHJpbmcqKXJvbGUKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
ICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwogCi0g
ICAgaWYgKHJvbGUgPT0gTGFiZWxSb2xlICYmIGlzPEFjY2Vzc2liaWxpdHlMYWJlbD4oKm1fb2Jq
ZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGFiZWw+KCptX29iamVjdCkuY29udGFpbnNP
bmx5U3RhdGljVGV4dCgpKQotICAgICAgICByb2xlID0gU3RhdGljVGV4dFJvbGU7CisgICAgaWYg
KHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsICYmIGlzPEFjY2Vzc2liaWxpdHlMYWJl
bD4oKm1fb2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGFiZWw+KCptX29iamVjdCku
Y29udGFpbnNPbmx5U3RhdGljVGV4dCgpKQorICAgICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJv
bGU6OlN0YXRpY1RleHQ7CiAKICAgICAvLyBUaGUgbWZlbmNlZCBlbGVtZW50IGNyZWF0ZXMgYW5v
bnltb3VzIFJlbmRlck1hdGhNTE9wZXJhdG9ycyB3aXRoIG5vIFJlbmRlclRleHQKICAgICAvLyBk
ZXNjZW5kYW50cy4gQmVjYXVzZSB0aGVzZSBhbm9ueW1vdXMgcmVuZGVyZXJzIGFyZSB0aGUgb25s
eSBhY2Nlc3NpYmxlIG9iamVjdHMKLSAgICAvLyBjb250YWluaW5nIHRoZSBvcGVyYXRvciwgYXNz
aWduIFN0YXRpY1RleHRSb2xlLgorICAgIC8vIGNvbnRhaW5pbmcgdGhlIG9wZXJhdG9yLCBhc3Np
Z24gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQuCiAgICAgaWYgKG1fb2JqZWN0LT5pc0Fu
b255bW91c01hdGhPcGVyYXRvcigpKQotICAgICAgICByb2xlID0gU3RhdGljVGV4dFJvbGU7Cisg
ICAgICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsKIAotICAgIGlmIChy
b2xlID09IENhbnZhc1JvbGUgJiYgbV9vYmplY3QtPmNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgp
KQotICAgICAgICByb2xlID0gR3JvdXBSb2xlOworICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpDYW52YXMgJiYgbV9vYmplY3QtPmNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpKQor
ICAgICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwOwogICAgIE5TU3RyaW5nKiBz
dHJpbmcgPSByb2xlVmFsdWVUb05TU3RyaW5nKHJvbGUpOwogICAgIGlmIChzdHJpbmcgIT0gbmls
KQogICAgICAgICByZXR1cm4gc3RyaW5nOwpAQCAtMjA0MSw5ICsyMDQxLDkgQEAgLSAoTlNTdHJp
bmcqKXN1YnJvbGUKICAgICB9CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1f
b2JqZWN0LT5yb2xlVmFsdWUoKTsKLSAgICBpZiAocm9sZSA9PSBIb3Jpem9udGFsUnVsZVJvbGUp
CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxlKQogICAg
ICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Q29udGVudFNlcGFyYXRvclN1YnJvbGU7Ci0gICAg
aWYgKHJvbGUgPT0gVG9nZ2xlQnV0dG9uUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6VG9nZ2xlQnV0dG9uKQogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VG9n
Z2xlU3Vicm9sZTsKICAgICAKICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0
PigqbV9vYmplY3QpKSB7CkBAIC0yMDczLDY5ICsyMDczLDY5IEBAIC0gKE5TU3RyaW5nKilzdWJy
b2xlCiAgICAgCiAgICAgLy8gQVJJQSBjb250ZW50IHN1YnJvbGVzLgogICAgIHN3aXRjaCAocm9s
ZSkgewotICAgICAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKLSAgICAgICAgICAgIHJldHVy
biBAIkFYTGFuZG1hcmtCYW5uZXIiOwotICAgICAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFy
eVJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrQ29tcGxlbWVudGFyeSI7Ci0g
ICAgICAgICAgICAvLyBGb290ZXIgcm9sZXMgc2hvdWxkIGFwcGVhciBhcyBjb250ZW50IGluZm8g
dHlwZXMuCi0gICAgICAgIGNhc2UgRm9vdGVyUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya0Nv
bnRlbnRJbmZvUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtDb250ZW50SW5m
byI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKLSAgICAgICAgICAgIHJldHVybiBA
IkFYTGFuZG1hcmtNYWluIjsKLSAgICAgICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgot
ICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya05hdmlnYXRpb24iOwotICAgICAgICBjYXNl
IExhbmRtYXJrRG9jUmVnaW9uUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya1JlZ2lvblJvbGU6
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrUmVnaW9uIjsKLSAgICAgICAgY2FzZSBM
YW5kbWFya1NlYXJjaFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrU2VhcmNo
IjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKLSAgICAgICAgICAgIHJldHVy
biBAIkFYQXBwbGljYXRpb25BbGVydCI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25BbGVydERp
YWxvZ1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uQWxlcnREaWFsb2ci
OwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKLSAgICAgICAgICAgIHJldHVy
biBAIkFYQXBwbGljYXRpb25EaWFsb2ciOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uR3JvdXBS
b2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZToKLSAgICAgICAgY2Fz
ZSBGZWVkUm9sZToKLSAgICAgICAgY2FzZSBGb290bm90ZVJvbGU6Ci0gICAgICAgICAgICByZXR1
cm4gQCJBWEFwcGxpY2F0aW9uR3JvdXAiOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25Mb2ciOwotICAgICAgICBjYXNl
IEFwcGxpY2F0aW9uTWFycXVlZVJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0
aW9uTWFycXVlZSI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgotICAgICAg
ICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvblN0YXR1cyI7Ci0gICAgICAgIGNhc2UgQXBwbGlj
YXRpb25UaW1lclJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uVGltZXIi
OwotICAgICAgICBjYXNlIERvY3VtZW50Um9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9j
dW1lbnQiOwotICAgICAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQCJBWERvY3VtZW50QXJ0aWNsZSI7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnRNYXRoIjsKLSAgICAgICAgY2FzZSBE
b2N1bWVudE5vdGVSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudE5vdGUiOwot
ICAgICAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZToKLSAgICAgICAgICAgIHJldHVy
biBAIkFYVXNlckludGVyZmFjZVRvb2x0aXAiOwotICAgICAgICBjYXNlIFRhYlBhbmVsUm9sZToK
LSAgICAgICAgICAgIHJldHVybiBAIkFYVGFiUGFuZWwiOwotICAgICAgICBjYXNlIERlZmluaXRp
b25Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEZWZpbml0aW9uIjsKLSAgICAgICAgY2Fz
ZSBEZXNjcmlwdGlvbkxpc3RUZXJtUm9sZToKLSAgICAgICAgY2FzZSBUZXJtUm9sZToKLSAgICAg
ICAgICAgIHJldHVybiBAIkFYVGVybSI7Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0RGV0
YWlsUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRGVzY3JpcHRpb24iOwotICAgICAgICBj
YXNlIFdlYkFwcGxpY2F0aW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYV2ViQXBwbGlj
YXRpb24iOwotICAgICAgICAgICAgLy8gRGVmYXVsdCBkb2Vzbid0IHJldHVybiBhbnl0aGluZywg
c28gcm9sZXMgZGVmaW5lZCBiZWxvdyBjYW4gYmUgY2hvc2VuLgotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtC
YW5uZXI6CisgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtCYW5uZXIiOworICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeToKKyAgICAgICAgcmV0dXJuIEAi
QVhMYW5kbWFya0NvbXBsZW1lbnRhcnkiOworICAgIC8vIEZvb3RlciByb2xlcyBzaG91bGQgYXBw
ZWFyIGFzIGNvbnRlbnQgaW5mbyB0eXBlcy4KKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpG
b290ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoK
KyAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0NvbnRlbnRJbmZvIjsKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya01haW46CisgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtN
YWluIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246Cisg
ICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtOYXZpZ2F0aW9uIjsKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya1JlZ2lvbjoKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya1JlZ2lvbiI7Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2g6CisgICAgICAgIHJldHVy
biBAIkFYTGFuZG1hcmtTZWFyY2giOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uQWxlcnQ6CisgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25BbGVydCI7CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoKKyAgICAgICAg
cmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZzoKKyAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlv
bkRpYWxvZyI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cDoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkZvb3Rub3RlOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uR3JvdXAiOworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nOgorICAgICAgICByZXR1cm4gQCJB
WEFwcGxpY2F0aW9uTG9nIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
bk1hcnF1ZWU6CisgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25NYXJxdWVlIjsKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1czoKKyAgICAgICAgcmV0dXJu
IEAiQVhBcHBsaWNhdGlvblN0YXR1cyI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25UaW1lcjoKKyAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvblRpbWVyIjsKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudDoKKyAgICAgICAgcmV0dXJuIEAiQVhE
b2N1bWVudCI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgor
ICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50QXJ0aWNsZSI7CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6RG9jdW1lbnRNYXRoOgorICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50TWF0aCI7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlOgorICAgICAgICByZXR1
cm4gQCJBWERvY3VtZW50Tm90ZSI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlcklu
dGVyZmFjZVRvb2x0aXA6CisgICAgICAgIHJldHVybiBAIkFYVXNlckludGVyZmFjZVRvb2x0aXAi
OworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsOgorICAgICAgICByZXR1cm4g
QCJBWFRhYlBhbmVsIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uOgor
ICAgICAgICByZXR1cm4gQCJBWERlZmluaXRpb24iOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkRlc2NyaXB0aW9uTGlzdFRlcm06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGVy
bToKKyAgICAgICAgcmV0dXJuIEAiQVhUZXJtIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpEZXNjcmlwdGlvbkxpc3REZXRhaWw6CisgICAgICAgIHJldHVybiBAIkFYRGVzY3JpcHRpb24i
OworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uOgorICAgICAgICBy
ZXR1cm4gQCJBWFdlYkFwcGxpY2F0aW9uIjsKKyAgICAgICAgLy8gRGVmYXVsdCBkb2Vzbid0IHJl
dHVybiBhbnl0aGluZywgc28gcm9sZXMgZGVmaW5lZCBiZWxvdyBjYW4gYmUgY2hvc2VuLgorICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAocm9sZSA9PSBN
YXRoRWxlbWVudFJvbGUpIHsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0
aEVsZW1lbnQpIHsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhGcmFjdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIEAiQVhNYXRoRnJhY3Rpb24iOwogICAgICAgICBpZiAobV9vYmplY3Qt
PmlzTWF0aEZlbmNlZCgpKQpAQCAtMjE3MiwxNSArMjE3MiwxNSBAQCAtIChOU1N0cmluZyopc3Vi
cm9sZQogICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoTXVsdGlzY3JpcHQiOwogICAgIH0KICAg
ICAKLSAgICBpZiAocm9sZSA9PSBWaWRlb1JvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlZpZGVvKQogICAgICAgICByZXR1cm4gQCJBWFZpZGVvIjsKLSAgICBpZiAocm9s
ZSA9PSBBdWRpb1JvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkF1ZGlv
KQogICAgICAgICByZXR1cm4gQCJBWEF1ZGlvIjsKLSAgICBpZiAocm9sZSA9PSBEZXRhaWxzUm9s
ZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlscykKICAgICAgICAg
cmV0dXJuIEAiQVhEZXRhaWxzIjsKLSAgICBpZiAocm9sZSA9PSBTdW1tYXJ5Um9sZSkKKyAgICBp
ZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeSkKICAgICAgICAgcmV0dXJuIEAi
QVhTdW1tYXJ5IjsKLSAgICBpZiAocm9sZSA9PSBUaW1lUm9sZSkKKyAgICBpZiAocm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGltZSkKICAgICAgICAgcmV0dXJuIEAiQVhUaW1lR3JvdXAiOwog
CiAgICAgaWYgKG1fb2JqZWN0LT5pc01lZGlhVGltZWxpbmUoKSkKQEAgLTIyMTYsMTUgKzIyMTYs
MTUgQEAgLSAoTlNTdHJpbmcqKXN1YnJvbGUKICAgICAKICAgICAvLyBSdWJ5IHN1YnJvbGVzCiAg
ICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgY2FzZSBSdWJ5QmFzZVJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6UnVieUJhc2U6CiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlS
dWJ5QmFzZVN1YnJvbGU7Ci0gICAgY2FzZSBSdWJ5QmxvY2tSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJ1YnlCbG9jazoKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVJ1
YnlCbG9ja1N1YnJvbGU7Ci0gICAgY2FzZSBSdWJ5SW5saW5lUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpSdWJ5SW5saW5lOgogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5
UnVieUlubGluZVN1YnJvbGU7Ci0gICAgY2FzZSBSdWJ5UnVuUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpSdWJ5UnVuOgogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5UnVi
eVJ1blN1YnJvbGU7Ci0gICAgY2FzZSBSdWJ5VGV4dFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UnVieVRleHQ6CiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSdWJ5VGV4
dFN1YnJvbGU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0yMjYyLDI2ICsyMjYy
LDI2IEBAIC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRpb24KICAgICAgICAgICAgIHJldHVybiBh
cmlhTGFuZG1hcmtSb2xlRGVzY3JpcHRpb247CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1f
b2JqZWN0LT5yb2xlVmFsdWUoKSkgewotICAgICAgICBjYXNlIEF1ZGlvUm9sZToKKyAgICAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVkaW86CiAgICAgICAgICAgICByZXR1cm4gbG9jYWxp
emVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZygiQXVkaW9FbGVtZW50Iik7Ci0gICAgICAgIGNh
c2UgRGVmaW5pdGlvblJvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlZmlu
aXRpb246CiAgICAgICAgICAgICByZXR1cm4gQVhEZWZpbml0aW9uVGV4dCgpOwotICAgICAgICBj
YXNlIERlc2NyaXB0aW9uTGlzdFRlcm1Sb2xlOgotICAgICAgICBjYXNlIFRlcm1Sb2xlOgorICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJtOgorICAgICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXJtOgogICAgICAgICAgICAgcmV0dXJuIEFYRGVz
Y3JpcHRpb25MaXN0VGVybVRleHQoKTsKLSAgICAgICAgY2FzZSBEZXNjcmlwdGlvbkxpc3REZXRh
aWxSb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RE
ZXRhaWw6CiAgICAgICAgICAgICByZXR1cm4gQVhEZXNjcmlwdGlvbkxpc3REZXRhaWxUZXh0KCk7
Ci0gICAgICAgIGNhc2UgRGV0YWlsc1JvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkRldGFpbHM6CiAgICAgICAgICAgICByZXR1cm4gQVhEZXRhaWxzVGV4dCgpOwotICAgICAg
ICBjYXNlIEZlZWRSb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkOgog
ICAgICAgICAgICAgcmV0dXJuIEFYRmVlZFRleHQoKTsKLSAgICAgICAgY2FzZSBGaWd1cmVSb2xl
OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmU6CiAgICAgICAgICAgICBy
ZXR1cm4gQVhGaWd1cmVUZXh0KCk7Ci0gICAgICAgIGNhc2UgRm9vdGVyUm9sZToKKyAgICAgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdGVyOgogICAgICAgICAgICAgcmV0dXJuIEFYRm9v
dGVyUm9sZURlc2NyaXB0aW9uVGV4dCgpOwotICAgICAgICBjYXNlIE1hcmtSb2xlOgorICAgICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXJrOgogICAgICAgICAgICAgcmV0dXJuIEFYTWFy
a1RleHQoKTsKLSAgICAgICAgY2FzZSBWaWRlb1JvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlZpZGVvOgogICAgICAgICAgICAgcmV0dXJuIGxvY2FsaXplZE1lZGlhQ29udHJv
bEVsZW1lbnRTdHJpbmcoIlZpZGVvRWxlbWVudCIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbihOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUsIFtzZWxmIHN1YnJvbGVdKTsKQEAgLTIzNDEsNyArMjM0MSw3IEBAIC0gKE5T
U3RyaW5nKilyb2xlRGVzY3JpcHRpb24KICAgICAgICAgICAgIHJldHVybiBBWERlc2NyaXB0aW9u
TGlzdFRleHQoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9
PSBIb3Jpem9udGFsUnVsZVJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGUpCiAgICAgICAgIHJldHVybiBBWEhvcml6
b250YWxSdWxlRGVzY3JpcHRpb25UZXh0KCk7CiAgICAgCiAgICAgLy8gQXBwS2l0IGFsc28gcmV0
dXJucyBBWFRhYiBmb3IgdGhlIHJvbGUgZGVzY3JpcHRpb24gZm9yIGEgdGFiIGl0ZW0uCkBAIC0y
NjE4LDE5ICsyNjE4LDE5IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNT
dHIKICAgICAgICAgfQogICAgICAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzUmFuZ2VWYWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3Qt
PnZhbHVlRm9yUmFuZ2UoKV07Ci0gICAgICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0g
U2xpZGVyVGh1bWJSb2xlKQorICAgICAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYikKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEZsb2F0Om1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKS0+dmFsdWVGb3JSYW5n
ZSgpXTsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0hlYWRpbmcoKSkKICAgICAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+aGVhZGluZ0xldmVsKCldOwog
ICAgICAgICAKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IG1f
b2JqZWN0LT5pc01lbnVJdGVtKCkgfHwgbV9vYmplY3QtPmlzU3dpdGNoKCkgfHwgbV9vYmplY3Qt
PmlzVG9nZ2xlQnV0dG9uKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9vYmplY3QtPmNoZWNr
Ym94T3JSYWRpb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEJ1dHRvblN0YXRlT2Zm
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF07
Ci0gICAgICAgICAgICAgICAgY2FzZSBCdXR0b25TdGF0ZU9uOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBCdXR0b25TdGF0ZU1peGVkOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6Ml07CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlCdXR0b25T
dGF0ZTo6T2ZmOgorICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDowXTsKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07CisgICAgICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4ZWQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjJdOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIApAQCAtMjY2OCwxNCArMjY2OCwxNCBAQCAtIChpZClhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdKSB7CiAgICAg
ICAgIC8vIEluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIHNob3VsZCByZXR1cm4gMC4K
LSAgICAgICAgaWYgKG1fb2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IFByb2dyZXNzSW5k
aWNhdG9yUm9sZSAmJiAhbV9vYmplY3QtPmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikp
CisgICAgICAgIGlmIChtX29iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgJiYgIW1fb2JqZWN0LT5oYXNBdHRyaWJ1dGUoYXJp
YV92YWx1ZW5vd0F0dHIpKQogICAgICAgICAgICAgcmV0dXJuIEAwOwogICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+bWluVmFsdWVGb3JSYW5nZSgpXTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNB
Y2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVdKSB7CiAgICAgICAgIC8vIEluZGV0ZXJtaW5h
dGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIHNob3VsZCByZXR1cm4gMC4KLSAgICAgICAgaWYgKG1fb2Jq
ZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IFByb2dyZXNzSW5kaWNhdG9yUm9sZSAmJiAhbV9v
YmplY3QtPmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikpCisgICAgICAgIGlmIChtX29i
amVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJ
bmRpY2F0b3IgJiYgIW1fb2JqZWN0LT5oYXNBdHRyaWJ1dGUoYXJpYV92YWx1ZW5vd0F0dHIpKQog
ICAgICAgICAgICAgcmV0dXJuIEAwOwogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhGbG9hdDptX29iamVjdC0+bWF4VmFsdWVGb3JSYW5nZSgpXTsKICAgICB9CkBAIC0zMDA1LDIz
ICszMDA1LDIzIEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAg
ICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uQXR0cmlidXRlXSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b24gZWxlbWVudE9yaWVudGF0aW9uID0gbV9vYmplY3QtPm9yaWVudGF0aW9uKCk7Ci0gICAgICAg
IGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGlj
YWwpCisgICAgICAgIGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uOjpWZXJ0aWNhbCkKICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlWZXJ0
aWNhbE9yaWVudGF0aW9uVmFsdWU7Ci0gICAgICAgIGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0g
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbCkKKyAgICAgICAgaWYgKGVsZW1lbnRP
cmllbnRhdGlvbiA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAg
ICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbE9yaWVudGF0aW9uVmFsdWU7
Ci0gICAgICAgIGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uVW5kZWZpbmVkKQorICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbjo6VW5kZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNz
aWJpbGl0eVVua25vd25PcmllbnRhdGlvblZhbHVlOwogICAgICAgICByZXR1cm4gbmlsOwogICAg
IH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uSG9yaXpvbnRhbCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNj
cm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpI
b3Jpem9udGFsKTsKICAgICAgICAgaWYgKHNjcm9sbEJhcikKICAgICAgICAgICAgIHJldHVybiBz
Y3JvbGxCYXItPndyYXBwZXIoKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNj
cm9sbEJhckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xs
QmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNh
bCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5z
Y3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgICAgIGlm
IChzY3JvbGxCYXIpCiAgICAgICAgICAgICByZXR1cm4gc2Nyb2xsQmFyLT53cmFwcGVyKCk7CiAg
ICAgICAgIHJldHVybiBuaWw7CkBAIC0zMDI5LDEyICszMDI5LDEyIEBAIC0gKGlkKWFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGVdKSB7
CiAgICAgICAgIHN3aXRjaCAobV9vYmplY3QtPnNvcnREaXJlY3Rpb24oKSkgewotICAgICAgICAg
ICAgY2FzZSBTb3J0RGlyZWN0aW9uQXNjZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBO
U0FjY2Vzc2liaWxpdHlBc2NlbmRpbmdTb3J0RGlyZWN0aW9uVmFsdWU7Ci0gICAgICAgICAgICBj
YXNlIFNvcnREaXJlY3Rpb25EZXNjZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBOU0Fj
Y2Vzc2liaWxpdHlEZXNjZW5kaW5nU29ydERpcmVjdGlvblZhbHVlOwotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blNvcnRE
aXJlY3Rpb25WYWx1ZTsKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6
QXNjZW5kaW5nOgorICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUFzY2VuZGluZ1Nv
cnREaXJlY3Rpb25WYWx1ZTsKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlv
bjo6RGVzY2VuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlEZXNjZW5k
aW5nU29ydERpcmVjdGlvblZhbHVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIE5TQWNjZXNzaWJpbGl0eVVua25vd25Tb3J0RGlyZWN0aW9uVmFsdWU7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCkBAIC0zNDgxLDcgKzM0ODEsNyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlQ
ZXJmb3JtRGVjcmVtZW50QWN0CiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVBlcmZvcm1TaG93TWVu
dUFjdGlvbgogewotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQ29tYm9Cb3hSb2xl
KQorICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bWJvQm94KQogICAgICAgICBtX29iamVjdC0+c2V0SXNFeHBhbmRlZCh0cnVlKTsKICAgICBlbHNl
IHsKICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBwZXJmb3JtZWQgaW4gYW4gaXRlcmF0aW9u
IG9mIHRoZSBydW4gbG9vcCB0aGF0IGRpZCBub3Qgc3RhcnQgZnJvbSBhbiBBWCBjYWxsLgpAQCAt
MzYyOSw3ICszNjI5LDkgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1
ZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWQoW251
bWJlciBib29sVmFsdWVdKTsKICAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgaWYgKCFhcnJheSB8fCBtX29iamVjdC0+cm9sZVZhbHVlKCkgIT0gTGlzdEJveFJvbGUp
CisgICAgICAgIGlmICghYXJyYXkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICht
X29iamVjdC0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3gpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICBjb252ZXJ0VG9WZWN0
b3IoYXJyYXksIHNlbGVjdGVkQ2hpbGRyZW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjkzLDEwICsxNjkzLDEwIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkFjY2Vzc2kKIAogICAgICAgICAgICAgc3VwcG9ydHNDaGVja2VkID0gYXhPYmplY3QtPnN1cHBv
cnRzQ2hlY2tlZCgpOwogICAgICAgICAgICAgaWYgKHN1cHBvcnRzQ2hlY2tlZCkgewotICAgICAg
ICAgICAgICAgIGludCBjaGVja1ZhbHVlID0gYXhPYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVl
KCk7IC8vIEVsZW1lbnQgdXNpbmcgYXJpYS1jaGVja2VkLgotICAgICAgICAgICAgICAgIGlmIChj
aGVja1ZhbHVlID09IDEpCisgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
IGNoZWNrVmFsdWUgPSBheE9iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKTsgLy8gRWxlbWVu
dCB1c2luZyBhcmlhLWNoZWNrZWQuCisgICAgICAgICAgICAgICAgaWYgKGNoZWNrVmFsdWUgPT0g
QWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbikKICAgICAgICAgICAgICAgICAgICAgY2hlY2tl
ZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNo
ZWNrZWQ6OlRydWU7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2tWYWx1ZSA9PSAyKQor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrVmFsdWUgPT0gQWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlOjpNaXhlZCkKICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6Ok1peGVkOwog
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF4T2JqZWN0LT5pc0NoZWNrZWQoKSkgLy8gTmF0aXZl
IGNoZWNrYm94LgogICAgICAgICAgICAgICAgICAgICBjaGVja2VkID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q2hlY2tlZDo6VHJ1ZTsKQEAgLTE3
MTMsMjYgKzE3MTMsMjUgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNz
aQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKGF4T2Jq
ZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQVJJQUN1cnJlbnRG
YWxzZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZh
bHNlOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OkZhbHNlOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVudFBhZ2U6CisgICAgICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpQYWdlOgogICAgICAgICAg
ICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJp
bGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OlBhZ2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIEFSSUFDdXJyZW50U3RlcDoKKyAgICAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlN0ZXA6CiAgICAgICAgICAgICAgICAgY3VycmVudFN0
YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6
Q3VycmVudDo6U3RlcDsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
QVJJQUN1cnJlbnRMb2NhdGlvbjoKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFD
dXJyZW50U3RhdGU6OkxvY2F0aW9uOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6
OkxvY2F0aW9uOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBUklB
Q3VycmVudERhdGU6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0
YXRlOjpEYXRlOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OkRhdGU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFSSUFDdXJyZW50VGltZToKKyAg
ICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU6CiAgICAg
ICAgICAgICAgICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nl
c3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVudDo6VGltZTsKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjYXNlIEFSSUFDdXJyZW50VHJ1
ZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRydWU6
CiAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVudDo6VHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325081</attachid>
            <date>2017-10-26 17:09:55 -0700</date>
            <delta_ts>2017-10-26 17:22:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178892-20171026170954.patch</filename>
            <type>text/plain</type>
            <size>346645</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBAQAorMjAxNy0xMC0yNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODg5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgVGhlIGVudW1zIGluIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBhcmUgY2F1c2lu
ZyBuYW1pbmcgY29sbGlzaW9ucyB3aXRoIHVuaWZpZWQgYnVpbGRzLgorICAgICAgICBUaGlzIGlz
IHdoYXQgZW51bSBjbGFzc2VzIGFyZSBmb3IuCisgICAgICAgIEhhc2hNYXBzIG9mIGVudW0gY2xh
c3NlcyBzdGlsbCBuZWVkIGEgZmV3IGNhc3RzIHRvL2Zyb20gaW50LgorICAgICAgICAKKyAgICAg
ICAgSSBhbHNvIG1hZGUgc29tZSBSZWZQdHIncyBSZWYncywgdXNlIHNvbWUgaW5pdGlhbGl6ZXIg
bGlzdHMgaW5zdGVhZCBvZiB2YWx1ZXMgaW4gdGhlIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9u
LCBhbmQgaW5kZW50YXRpb24gZml4aW5nLgorICAgICAgICAKKyAgICAgICAgTm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6Z2V0SWdu
b3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp+QVhPYmplY3RD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhDb21w
dXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpDYWNoZWRBWE9iamVjdEF0dHJpYnV0ZXM6OkNhY2hl
ZEFYT2JqZWN0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWENvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGU6OmdldElnbm9yZWQgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91cCBjb25zdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQ6OmFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50Lmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnJvbGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjphY2Nlc3NpYmlsaXR5VGV4dCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2hpbGRyZW5Db250YWluT25seVN0YXRpY1RleHQpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlz
dDo6aXNVbm9yZGVyZWRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlMaXN0Ojppc09yZGVyZWRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlMaXN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5TGlzdDo6cm9sZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlMaXN0Qm94OjpzZXRTZWxlY3RlZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBj
b25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdCBjb25zdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjphY2Nlc3NpYmlsaXR5
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpyb2xl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbHMuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxk
cmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6bWVudUxpc3RPcHRp
b25BY2Nlc3NpYmlsaXR5T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0ltYWdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcm9n
cmVzc0luZGljYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNTbGlkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUl0ZW0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRW5hYmxlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNDaGVja2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdXBw
b3J0c1JlcXVpcmVkQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpoZWFkaW5nTGV2ZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNMaW5rIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dyb3VwIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGVja2JveE9yUmFk
aW9WYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YWN0aW9uRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6YWx0ZXJTbGlkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUVsZW1lbnRGb3JNZW51
QnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjptZW51SXRlbUVsZW1lbnRGb3JNZW51IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1lbnRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2ZVRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2libGVUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNj
ZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmFyaWFMYWJlbGVkQnlUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnJvbGVJZ25vcmVzVGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhpZXJhcmNo
aWNhbExldmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6c3RyaW5nVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpyZW1hcEFyaWFSb2xlRHVlVG9QYXJl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNh
blNldFNlbGVjdGVkQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vz
c2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNCbG9ja3F1b3RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENvbnRy
b2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklB
VGV4dENvbnRyb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMYW5kbWFyayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1JhbmdlQ29udHJvbCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JC
b3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3Vw
cG9ydHNBUklBUmVhZE9ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYVJlYWRPbmx5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25T
dGF0dXNGb3JSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFj
dGlvblZlcmIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUN1cnJlbnRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhQ3VycmVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVSb2xlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFyaWFSb2xlVG9XZWJDb3JlUm9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb21wdXRlZFJvbGVTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc0FjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpzb3J0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzRXhwYW5kZWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0NoZWNr
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2ti
b3hPclJhZGlvVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsQnlQYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6Omxhc3RLbm93bklzSWdub3JlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJ1dHRvblJvbGVUeXBlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQnV0dG9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWRCeURlZmF1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29udGFpbmVkQnlQYXNzd29yZEZpZWxk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHQ6OkFjY2Vz
c2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRG
cm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW1hZ2VNYXAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNXZWJBcmVhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ2hlY2tib3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSYWRpb0J1dHRvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3gg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGluQnV0
dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3dp
dGNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9n
Z2xlQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzVGFiTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc1RhYkl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNSYWRpb0dyb3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQ29tYm9Cb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUcmVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzVHJlZUdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUcmVlSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Njcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0xpc3RJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzU2Nyb2xsVmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NhbnZhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1BvcFVwQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29sb3JXZWxsIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BsaXR0ZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUb29sYmFyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3VtbWFyeSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N0YXRpY1RleHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVBdHRyaWJ1dGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0F0dGFjaG1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRleHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFs
dWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBNZW1iZXJzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmtlZFVJ
RWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b2Jq
ZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpzZWxlY3RlZFRleHRSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZvY3VzZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWN0ZWRSb3dz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3Vt
ZW50TGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNFeHBhbmRl
ZFRleHRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFs
Um9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRk
SW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp1cGRhdGVSb2xlQWZ0ZXJDaGlsZHJlbkNyZWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9u
QXRvbWljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZENoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2li
bGVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp0YWJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphY3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1zYWFSb2xlRm9yUmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9s
ZVZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudDo6YWNjZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojppbmhlcml0c1ByZXNlbnRhdGlv
bmFsUm9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsQmFyKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlTY3JvbGxiYXI6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNsaWRlcjo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246
OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpoYXNBUklBUm9sZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojp0aXRsZUVsZW1lbnRUZXh0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJv
bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUcmVlOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5wdXRU
eXBlUG9wdXBCdXR0b24gY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q2FuRnV6enlIaXRUZXN0XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFy
a1JvbGU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nl
c3NpYmlsaXR5VHJlZUFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5TGlzdEFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5QXJ0aWNsZUFuY2VzdG9yXSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5
VHJhaXRzRnJvbUFuY2VzdG9yc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfYWNjZXNzaWJpbGl0eVRleHRFbnRyeVRyYWl0c10pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VHJhaXRzXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRldGVybWluZUlzQWNjZXNzaWJpbGl0
eUVsZW1lbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Ry
aW5nVmFsdWVTaG91bGRCZVVzZWRJbkxhYmVsXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMYWJlbF0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VmFsdWVdKToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUlzQ29tYm9Cb3hdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udGFpbnNVbm5hdHVy
YWxseVNlZ21lbnRlZENoaWxkcmVuXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50XSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRyZWVJdGVtUGFyZW50Rm9yT2JqZWN0Ol0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5RWxlbWVu
dERpZEJlY29tZUZvY3VzZWRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25dKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29u
c3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlIGJhc2VBY2Nlc3NpYmlsaXR5VGl0bGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25dKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VBY2Nlc3NpYmlsaXR5
SGVscFRleHRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
IGFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbl0pOgorICAgICAgICAoY3JlYXRlQWNjZXNzaWJp
bGl0eVNlYXJjaEtleU1hcCk6CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRp
Y2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoYWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRDcml0ZXJpYUZvckNyaXRlcmlhUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgIChjcmVh
dGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCk6CisgICAgICAgIChyb2xlVmFsdWVUb05TU3RyaW5nKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdWJyb2xlXSk6CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJvbGVEZXNjcmlwdGlvbl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb25dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzKToKKwogMjAxNy0xMC0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgaW1wb3J0U2NyaXB0cyBpbiBzZXJ2aWNlIHdvcmtlciBzaG91bGQgdXNlIFNl
cnZpY2VXb3JrZXJzTW9kZTo6Tm9uZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsOCArMTIwLDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgYWNjZXNzaWJpbGl0eUZvY3VzQQog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVD
YWNoZTo6Z2V0SWdub3JlZChBWElEIGlkKSBjb25zdAogewotICAgIEhhc2hNYXA8QVhJRCwgQ2Fj
aGVkQVhPYmplY3RBdHRyaWJ1dGVzPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2lkTWFwcGluZy5m
aW5kKGlkKTsKLSAgICByZXR1cm4gaXQgIT0gbV9pZE1hcHBpbmcuZW5kKCkgPyBpdC0+dmFsdWUu
aWdub3JlZCA6IERlZmF1bHRCZWhhdmlvcjsKKyAgICBhdXRvIGl0ID0gbV9pZE1hcHBpbmcuZmlu
ZChpZCk7CisgICAgcmV0dXJuIGl0ICE9IG1faWRNYXBwaW5nLmVuZCgpID8gaXQtPnZhbHVlLmln
bm9yZWQgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7CiB9
CiAKIHZvaWQgQVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpzZXRJZ25vcmVkKEFYSUQg
aWQsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gaW5jbHVzaW9uKQpAQCAtMjAzLDggKzIw
Myw4IEBAIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkKICAgICBtX2ZvY3VzQXJpYU1v
ZGFsTm9kZVRpbWVyLnN0b3AoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0IDogbV9v
YmplY3RzLnZhbHVlcygpKSB7Ci0gICAgICAgIGRldGFjaFdyYXBwZXIob2JqZWN0LmdldCgpLCBD
YWNoZURlc3Ryb3llZCk7Ci0gICAgICAgIG9iamVjdC0+ZGV0YWNoKENhY2hlRGVzdHJveWVkKTsK
KyAgICAgICAgZGV0YWNoV3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2ht
ZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOworICAgICAgICBvYmplY3QtPmRldGFjaChBY2Nlc3Np
YmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsKICAgICAgICAgcmVtb3ZlQVhJ
RChvYmplY3QuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTY0NywzMSArNjQ3LDMxIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE8KICAgICAKICAgICAvLyB3aWxsIGJlIGZp
bGxlZCBpbi4uLgogICAgIHN3aXRjaCAocm9sZSkgewotICAgIGNhc2UgTGlzdEJveE9wdGlvblJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNyZWF0ZSgpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SW1hZ2VNYXBMaW5rOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
OjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2x1bW5Sb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCi0gICAg
Y2FzZSBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOyAgIAotICAgIGNhc2Ug
U2xpZGVyVGh1bWJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1i
OgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1lbnVMaXN0UG9wdXBSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVMaXN0UG9wdXA6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZW51TGlz
dE9wdGlvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb246
CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVNwaW5C
dXR0b246OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNwaW5CdXR0b25QYXJ0
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydDoKICAgICAg
ICAgb2JqID0gQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0OjpjcmVhdGUoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTY5OSw4ICs2OTksOCBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnJlbW92ZShBWElEIGF4SUQpCiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBkZXRhY2hXcmFwcGVyKG9iaiwgRWxlbWVudERlc3Ryb3llZCk7Ci0gICAgb2JqLT5k
ZXRhY2goRWxlbWVudERlc3Ryb3llZCwgdGhpcyk7CisgICAgZGV0YWNoV3JhcHBlcihvYmosIEFj
Y2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCk7CisgICAgb2JqLT5k
ZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVkLCB0aGlz
KTsKICAgICByZW1vdmVBWElEKG9iaik7CiAgICAgCiAgICAgLy8gZmluYWxseSByZW1vdmUgdGhl
IG9iamVjdApAQCAtOTIwLDcgKzkyMCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWUKICAgICAgICAgLy8gdGhlIGF4Q2hpbGRyZW4gd2hlbiB0aGUgbWVudSBpcyBt
YXJrZWQgYXMgb3BlbmluZy4KICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSBBWE1lbnVPcGVu
ZWQpIHsKICAgICAgICAgICAgIG9iai0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwotICAg
ICAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgIT0gTWVudVJvbGUpCisgICAgICAgICAgICBp
ZiAob2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiAyMjQwNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNyArOTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENh
Y2hlZEFYT2JqZWN0QXR0cmlidXRlcyB7Ci0gICAgICAgIENhY2hlZEFYT2JqZWN0QXR0cmlidXRl
cygpIDogaWdub3JlZChEZWZhdWx0QmVoYXZpb3IpIHsgfQorICAgICAgICBDYWNoZWRBWE9iamVj
dEF0dHJpYnV0ZXMoKQorICAgICAgICAgICAgOiBpZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcikKKyAgICAgICAgeyB9CiAKICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBpZ25vcmVkOwogICAgIH07CkBAIC00NjYsNyArNDY4LDcg
QEAgYm9vbCBub2RlSGFzUm9sZShOb2RlKiwgY29uc3QgU3RyaW5nJiBybwogYm9vbCBpc05vZGVB
cmlhVmlzaWJsZShOb2RlKik7CiAgICAgCiAjaWYgIUhBVkUoQUNDRVNTSUJJTElUWSkKLWlubGlu
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVD
YWNoZTo6Z2V0SWdub3JlZChBWElEKSBjb25zdCB7IHJldHVybiBEZWZhdWx0QmVoYXZpb3I7IH0K
K2lubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVDYWNoZTo6Z2V0SWdub3JlZChBWElEKSBjb25zdCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KIGlubGluZSBBY2Nlc3NpYmlsaXR5
UmVwbGFjZWRUZXh0OjpBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0KGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKSB7IH0KIGlubGluZSB2b2lkIEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQ6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oQVhPYmplY3RDYWNoZSosIEFYVGV4dEVkaXRUeXBl
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9p
ZCBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6OnNldElnbm9yZWQoQVhJRCwgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCShyZXZpc2lvbiAy
MjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4oCiAgICAgCiAgICAgLy8gbWFrZSB0aGUgY29sdW1u
cyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZpcnN0IGJvZHkKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7ICsraSkgewotICAgICAgICBhdXRv
JiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4+KCpheENhY2hlLT5n
ZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlOjpDb2x1bW4pKTsKICAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KHN0YXRp
Y19jYXN0PGludD4oaSkpOwogICAgICAgICBjb2x1bW4uc2V0UGFyZW50KHRoaXMpOwogICAgICAg
ICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCShy
ZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbgogQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50Um93R3JvdXAoKSBjb25zdAog
ewogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7
IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewotICAgICAgICBpZiAo
cGFyZW50LT5oYXNUYWdOYW1lKHRoZWFkVGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUodGJvZHlU
YWcpIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgcGFyZW50LT5yb2xlVmFsdWUo
KSA9PSBSb3dHcm91cFJvbGUpCisgICAgICAgIGlmIChwYXJlbnQtPmhhc1RhZ05hbWUodGhlYWRU
YWcpIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1l
KHRmb290VGFnKSB8fCBwYXJlbnQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpS
b3dHcm91cCkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CiAgICAgfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzYsNyArMTM2LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJP
YmplY3QoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0g
ICAgICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBSb3dIZWFkZXJSb2xlKQor
ICAgICAgICBpZiAoY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJvd0hlYWRlcikKICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKICAgICB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRh
Y2htZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBdHRhY2htZW50LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QXR0YWNobWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDEzICs5NSwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHRhY2htZW50Ojph
Y2Nlc3NpYmlsCiAgICAgYXV0byYgYWN0aW9uID0gZ2V0QXR0cmlidXRlKGFjdGlvbkF0dHIpOwog
ICAgIAogICAgIGlmIChhY3Rpb24ubGVuZ3RoKCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQo
QWNjZXNzaWJpbGl0eVRleHQoYWN0aW9uLCBBY3Rpb25UZXh0KSk7CisgICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWN0aW9uLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6QWN0aW9uKSk7CiAKICAgICBpZiAodGl0bGUubGVuZ3RoKCkpCi0gICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIFRpdGxlVGV4dCkpOworICAgICAgICB0
ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZTo6VGl0bGUpKTsKIAogICAgIGlmIChzdWJ0aXRsZS5sZW5ndGgoKSkKLSAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChzdWJ0aXRsZSwgU3VidGl0bGVUZXh0
KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VidGl0bGUs
IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdWJ0aXRsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBdHRhY2htZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QXR0YWNobWVudC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJvZ3Jlc3MoZmxv
YXQqIHByb2dyZXNzID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJ1dHRvblJv
bGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOyB9CiAgICAgYm9vbCBpc0F0dGFjaG1l
bnRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgU3RyaW5n
IHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
Y3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYs
MTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUltYWdlTQogQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6cm9sZVZhbHVlKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fYXJlYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXZWJDb3JlTGlua1JvbGU7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CiAgICAgCiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7
CiAgICAgaWYgKCFhcmlhUm9sZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUoYXJpYVJvbGUpOwogCi0gICAgcmV0dXJu
IFdlYkNvcmVMaW5rUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVM
aW5rOwogfQogICAgIAogRWxlbWVudCogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6YWN0aW9u
RWxlbWVudCgpIGNvbnN0CkBAIC05NywxNSArOTcsMTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rOjphY2Nlc3NpYgogewogICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpOwogICAgIGlmICghZGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAg
ICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaXB0aW9uLCBBbHRl
cm5hdGl2ZVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChkZXNjcmlwdGlvbiwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlVGV4dCA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0
dHIpOwogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZVRleHQsIFRpdGxlVGFnVGV4dCkpOworICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlVGV4dCwgQWNjZXNzaWJp
bGl0eVRleHRTb3VyY2U6OlRpdGxlVGFnKSk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1
bW1hcnkgPSBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogICAgIGlmICghc3VtbWFyeS5pc0Vt
cHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VtbWFy
eSwgU3VtbWFyeVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dChzdW1tYXJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogfQogICAg
IAogU3RyaW5nIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMYWJlbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDkgKzY1LDkgQEAgc3RhdGljIGJvb2wgY2hpbGRyZW5Db250YWluT25seVN0YXRpY1Rl
eAogICAgIGlmICghY2hpbGRyZW4uc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+
cm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCisgICAgICAgIGlmIChjaGlsZC0+cm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBHcm91cFJvbGUpIHsKKyAg
ICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAp
IHsKICAgICAgICAgICAgIGlmICghY2hpbGRyZW5Db250YWluT25seVN0YXRpY1RleHQoY2hpbGQt
PmNoaWxkcmVuKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSBl
bHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJl
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxhYmVsLmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TGFiZWwoUmVu
ZGVyT2JqZWN0Kik7CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IGZpbmFsOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIExhYmVsUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJlbDsgfQogICAgIGJv
b2wgaXNMYWJlbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBTdHJpbmcgc3Ry
aW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3Nh
cnkoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxpc3QuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0Ojppc1Vub3JkZXJlZExpc3QoCiAg
ICAgLy8gVGhlIEFSSUEgc3BlYyBzYXlzIHRoZSAibGlzdCIgcm9sZSBpcyBzdXBwb3NlZCB0byBt
aW1pYyBhIFVMIG9yIE9MIHRhZy4KICAgICAvLyBTaW5jZSBpdCBjYW4ndCBiZSBib3RoLCBpdCdz
IHByb2JhYmx5IE9LIHRvIHNheSB0aGF0IGl0J3MgYW4gdW4tb3JkZXJlZCBsaXN0LgogICAgIC8v
IE9uIHRoZSBNYWMsIHRoZXJlJ3Mgbm8gZGlzdGluY3Rpb24gdG8gdGhlIGNsaWVudC4KLSAgICBp
ZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBMaXN0Um9sZSkKKyAgICBpZiAoYXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgCiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZSh1bFRhZyk7CkBAIC03
OSw3ICs3OSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmlzT3JkZXJlZExpc3QoKSAKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQVJJQSBzYXlzIGEgZGlyZWN0b3J5IGlzIGxp
a2UgYSBzdGF0aWMgdGFibGUgb2YgY29udGVudHMsIHdoaWNoIHNvdW5kcyBsaWtlIGFuIG9yZGVy
ZWQgbGlzdC4KLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBEaXJlY3RvcnlSb2xlKQor
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEaXJlY3Rv
cnkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXIt
Pm5vZGUoKTsKQEAgLTEyOSw4ICsxMjksOCBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5TGlzdDo6ZGV0CiAgICAgbV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRl
KCk7CiAgICAgCiAgICAgLy8gRGlyZWN0b3J5IGlzIG1hcHBlZCB0byBsaXN0IGZvciBub3csIGJ1
dCBkb2VzIG5vdCBhZGhlcmUgdG8gdGhlIHNhbWUgaGV1cmlzdGljcy4KLSAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBEaXJlY3RvcnlSb2xlKQotICAgICAgICByZXR1cm4gTGlzdFJvbGU7
CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVj
dG9yeSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OwogICAgIAogICAg
IC8vIEhldXJpc3RpYyB0byBkZXRlcm1pbmUgaWYgdGhpcyBsaXN0IGlzIGJlaW5nIHVzZWQgZm9y
IGxheW91dCBvciBmb3IgY29udGVudC4KICAgICAvLyAgIDEuIElmIGl0J3MgYSBuYW1lZCBsaXN0
LCBsaWtlIG9sIG9yIGFyaWE9bGlzdCwgdGhlbiBpdCdzIGEgbGlzdC4KQEAgLTE0MCw3ICsxNDAs
NyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6ZGV0CiAgICAgLy8gICA0
LiBJZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBsaXN0aXRlbSBjaGlsZHJlbiwgaXQncyBub3QgYSBs
aXN0LgogICAgIC8vICAgNS4gT3RoZXJ3aXNlIGl0J3MgYSBsaXN0IChmb3Igbm93KS4KICAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gTGlzdFJvbGU7CisgICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OwogICAgIAogICAgIC8vIFRlbXBv
cmFyaWx5IHNldCByb2xlIHNvIHRoYXQgd2UgY2FuIHF1ZXJ5IGNoaWxkcmVuIChvdGhlcndpc2Ug
Y2FuSGF2ZUNoaWxkcmVuIHJldHVybnMgZmFsc2UpLgogICAgIG1fcm9sZSA9IHJvbGU7CkBAIC0x
NTEsMTIgKzE1MSwxMiBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6ZGV0
CiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOwogICAgIC8vIERl
c2NyaXB0aW9uTGlzdHMgYXJlIGFsd2F5cyBzZW1hbnRpY2FsbHkgYSBkZXNjcmlwdGlvbiBsaXN0
LCBzbyBkbyBub3QgYXBwbHkgaGV1cmlzdGljcy4KICAgICBpZiAoaXNEZXNjcmlwdGlvbkxpc3Qo
KSAmJiBjaGlsZHJlbi5zaXplKCkpCi0gICAgICAgIHJldHVybiBEZXNjcmlwdGlvbkxpc3RSb2xl
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdDsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbikgewotICAgICAgICBpZiAoY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTGlzdEl0ZW1Sb2xlKQorICAgICAgICBpZiAoY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtKQog
ICAgICAgICAgICAgbGlzdEl0ZW1Db3VudCsrOwotICAgICAgICBlbHNlIGlmIChjaGlsZC0+cm9s
ZVZhbHVlKCkgPT0gTGlzdEl0ZW1Sb2xlKSB7CisgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0pIHsKICAgICAgICAgICAgIFJl
bmRlck9iamVjdCogbGlzdEl0ZW0gPSBjaGlsZC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlm
ICghbGlzdEl0ZW0pCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjgsNyArMTY4LDcg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eUxpc3Q6OmRldAogICAgICAgICAgICAg
ICAgIGxpc3RJdGVtQ291bnQrKzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdEl0ZW0tPm5v
ZGUoKSAmJiBsaXN0SXRlbS0+bm9kZSgpLT5oYXNUYWdOYW1lKGxpVGFnKSkgewogICAgICAgICAg
ICAgICAgIC8vIElubGluZSBlbGVtZW50cyB0aGF0IGFyZSBpbiBhIGxpc3Qgd2l0aCBhbiBleHBs
aWNpdCByb2xlIHNob3VsZCBhbHNvIGNvdW50LgotICAgICAgICAgICAgICAgIGlmIChtX2FyaWFS
b2xlID09IExpc3RSb2xlKQorICAgICAgICAgICAgICAgIGlmIChtX2FyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0KQogICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbUNvdW50Kys7
CiAKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJr
ZXJzKGxpc3RJdGVtKSkgewpAQCAtMTgxLDE4ICsxODEsMTggQEAgQWNjZXNzaWJpbGl0eVJvbGUg
QWNjZXNzaWJpbGl0eUxpc3Q6OmRldAogICAgIAogICAgIC8vIE5vbiA8dWw+IGxpc3RzIGFuZCBB
UklBIGxpc3RzIG9ubHkgbmVlZCB0byBoYXZlIG9uZSBjaGlsZC4KICAgICAvLyA8dWw+LCA8b2w+
IGxpc3RzIG5lZWQgdG8gaGF2ZSB2aXNpYmxlIG1hcmtlcnMuCi0gICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gVW5rbm93blJvbGUpIHsKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikgewogICAgICAgICBpZiAoIWxpc3RJdGVtQ291
bnQpCi0gICAgICAgICAgICByb2xlID0gQXBwbGljYXRpb25Hcm91cFJvbGU7CisgICAgICAgICAg
ICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXA7CiAgICAgfSBlbHNl
IGlmICghaGFzVmlzaWJsZU1hcmtlcnMpCi0gICAgICAgIHJvbGUgPSBHcm91cFJvbGU7CisgICAg
ICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAKICAgICByZXR1cm4gcm9sZTsK
IH0KICAgICAKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlMaXN0Ojpyb2xlVmFsdWUo
KSBjb25zdAogewotICAgIEFTU0VSVChtX3JvbGUgIT0gVW5rbm93blJvbGUpOworICAgIEFTU0VS
VChtX3JvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pOwogICAgIHJldHVybiBtX3Jv
bGU7CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk2LDkgKzk2LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6c2V0U2Vs
ZWN0ZWRDaAogICAgIH0KICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iaiA6IGNoaWxkcmVu
KSB7Ci0gICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpICE9IExpc3RCb3hPcHRpb25Sb2xlKQor
ICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJv
eE9wdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPigqb2JqKS5zZXRTZWxlY3Rl
ZCh0cnVlKTsKICAgICB9CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eUxpc3RCbwogICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LT5oYXNU
YWdOYW1lKGhyVGFnKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCYgbGlzdEJveE9iamVjdCA9ICptX3JlbmRlcmVyLT5kb2N1bWVudCgpLmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoTGlzdEJveE9wdGlvblJvbGUpOworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QmIGxpc3RCb3hPYmplY3QgPSAqbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5h
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0
aW9uKTsKICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbj4obGlzdEJveE9i
amVjdCkuc2V0SFRNTEVsZW1lbnQoZWxlbWVudCk7CiAgICAgCiAgICAgcmV0dXJuICZsaXN0Qm94
T2JqZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRy
ZW5BdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRy
ZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGlzdEJveFJvbGU7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsgfQogICAgICAgICAKICAgICB2b2lkIHNlbGVj
dGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SFRN
TEVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsgbV9vcHRpb25FbGVtZW50ID0gZWxlbWVu
dDsgfQogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIExpc3RCb3hPcHRpb25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RCb3hPcHRpb247IH0KICAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNTZWxlY3RlZE9w
dGlvbkFjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxOCArNTEsMTgg
QEAgUmVmPEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50PiBBY2Nlc3NpYgogQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmRldGVybWluZUFjY2Vzc2liaWxpdHlS
b2xlKCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBVbmtub3duUm9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYg
KChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJv
bGUpCisgICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBtX2FyaWFSb2xl
OwogCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAobm9kZSAm
JiBub2RlLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKLSAgICAgICAgcmV0dXJu
IERvY3VtZW50TWF0aFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9j
dW1lbnRNYXRoOwogCiAgICAgLy8gSXQncyBub3QgY2xlYXIgd2hpY2ggcm9sZSBhIHBsYXRmb3Jt
IHNob3VsZCBjaG9vc2UgZm9yIGEgbWF0aCBlbGVtZW50LgogICAgIC8vIERlY2xhcmluZyBhIG1h
dGggZWxlbWVudCByb2xlIHNob3VsZCBnaXZlIGZsZXhpYmlsaXR5IHRvIHBsYXRmb3JtcyB0byBj
aG9vc2UuCi0gICAgcmV0dXJuIE1hdGhFbGVtZW50Um9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6Ok1hdGhFbGVtZW50OwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6OnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
IG1vZGUpIGNvbnN0CkBAIC0yMDYsNyArMjA2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6aXNNYXRoUwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gdHlwZSA9PSBTdWJzY3JpcHQgPyB0aGlzID09IHBhcmVudC0+bWF0aFN1
YnNjcmlwdE9iamVjdCgpIDogdGhpcyA9PSBwYXJlbnQtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgp
OworICAgIHJldHVybiB0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZTo6
U3Vic2NyaXB0ID8gdGhpcyA9PSBwYXJlbnQtPm1hdGhTdWJzY3JpcHRPYmplY3QoKSA6IHRoaXMg
PT0gcGFyZW50LT5tYXRoU3VwZXJzY3JpcHRPYmplY3QoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKQEAgLTIyMSwxNiArMjIxLDE2IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aE0KICAgICAvLyB0aGlzIHRv
a2VuIGlzIHByZXNlbnQgYW5kIGluIHRoZSBwb3NpdGlvbiBjb3JyZXNwb25kaW5nIHdpdGggdGhl
IHR5cGUuCiAKICAgICBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMgcGFpcnM7Ci0g
ICAgaWYgKHR5cGUgPT0gUHJlU3Vic2NyaXB0IHx8IHR5cGUgPT0gUHJlU3VwZXJzY3JpcHQpCisg
ICAgaWYgKHR5cGUgPT0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBy
ZVN1YnNjcmlwdCB8fCB0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RU
eXBlOjpQcmVTdXBlcnNjcmlwdCkKICAgICAgICAgcGFyZW50LT5tYXRoUHJlc2NyaXB0cyhwYWly
cyk7CiAgICAgZWxzZQogICAgICAgICBwYXJlbnQtPm1hdGhQb3N0c2NyaXB0cyhwYWlycyk7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBwYWlycykgewogICAgICAgICBpZiAodGhpcyA9
PSBwYWlyLmZpcnN0KQotICAgICAgICAgICAgcmV0dXJuICh0eXBlID09IFByZVN1YnNjcmlwdCB8
fCB0eXBlID09IFBvc3RTdWJzY3JpcHQpOworICAgICAgICAgICAgcmV0dXJuICh0eXBlID09IEFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdWJzY3JpcHQgfHwgdHlw
ZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1YnNjcmlw
dCk7CiAgICAgICAgIGlmICh0aGlzID09IHBhaXIuc2Vjb25kKQotICAgICAgICAgICAgcmV0dXJu
ICh0eXBlID09IFByZVN1cGVyc2NyaXB0IHx8IHR5cGUgPT0gUG9zdFN1cGVyc2NyaXB0KTsKKyAg
ICAgICAgICAgIHJldHVybiAodHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2Jq
ZWN0VHlwZTo6UHJlU3VwZXJzY3JpcHQgfHwgdHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0KTsKICAgICB9CiAKICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxNSArMTQyLDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eU1lZGlhQ29udHJvbDo6YWNjZXNzaWIKIHsKICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBhY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24oKTsKICAgICBpZiAoIWRlc2NyaXB0aW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmlwdGlvbiwg
QWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoZGVzY3JpcHRpb24sIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkp
OwogCiAgICAgU3RyaW5nIHRpdGxlID0gdGhpcy0+dGl0bGUoKTsKICAgICBpZiAoIXRpdGxlLmlz
RW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRs
ZSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJp
bGl0eVRleHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwog
CiAgICAgU3RyaW5nIGhlbHB0ZXh0ID0gaGVscFRleHQoKTsKICAgICBpZiAoIWhlbHB0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChoZWxw
dGV4dCwgSGVscFRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dChoZWxwdGV4dCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHApKTsKIH0KICAgICAK
IApAQCAtMTk3LDIzICsxOTcsMjIgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU1l
ZGlhQ29udAogICAgIGNhc2UgTWVkaWFQYXVzZUJ1dHRvbjoKICAgICBjYXNlIE1lZGlhU2hvd0Ns
b3NlZENhcHRpb25zQnV0dG9uOgogICAgIGNhc2UgTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0
b246Ci0gICAgICAgIHJldHVybiBCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OkJ1dHRvbjsKIAogICAgIGNhc2UgTWVkaWFTdGF0dXNEaXNwbGF5OgotICAgICAg
ICByZXR1cm4gU3RhdGljVGV4dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3RhdGljVGV4dDsKIAogICAgIGNhc2UgTWVkaWFUaW1lbGluZUNvbnRhaW5lcjoKLSAgICAg
ICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cm91cDsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVy
biBVbmtub3duUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9
CiAKIAotCiAvLwogLy8gQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9s
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5
TWVkaWFDb250cm9sc0NvbnRhaW5lcigpID0gZGVmYXVsdDsKIAotICAgIEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFRvb2xiYXJSb2xlOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI7IH0KIAogICAgIFN0cmluZyBoZWxwVGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5KCkgPSBkZWZhdWx0OwogCi0gICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQXBwbGljYXRpb25U
aW1lclJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UaW1lcjsgfQogCiAg
ICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGFjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAko
cmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGlsZHJlbigKICAgICBpZiAoIWNhY2hlKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdCA9IGNhY2hl
LT5nZXRPckNyZWF0ZShNZW51TGlzdFBvcHVwUm9sZSk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogbGlzdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQ
b3B1cCk7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAko
cmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZW51TGlzdChSZW5kZXJNZW51TGlzdCopOwog
CiAgICAgYm9vbCBpc01lbnVMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBvcFVwQnV0dG9uUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsgfQog
ICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaAkocmV2
aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gTWVudUxpc3RPcHRpb25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVMaXN0T3B0aW9uOyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNv
bnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAJKHJldmlzaW9uIDIyNDA3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIEFjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbiogQWNjZXNzaWJpbGkKICAgICBpZiAoIWlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSB8fCAhZWxlbWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byYgb3B0aW9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uPigqZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShNZW51TGlzdE9wdGlvblJvbGUpKTsKKyAgICBhdXRvJiBvcHRpb24gPSBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24+KCpkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbikpOwogICAgIG9wdGlv
bi5zZXRFbGVtZW50KGVsZW1lbnQpOwogCiAgICAgcmV0dXJuICZvcHRpb247CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZW51TGlzdFBvcHVwUm9s
ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwOyB9CiAKICAgICBib29sIGlz
VmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgcHJlc3MoKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODMsMTEgKzgzLDYgQEAgc3RhdGljIFN0cmluZyBhY2Nlc3NpYmxlTmFtZUZvck5vZGUoTm9k
ZQogCiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoTm9k
ZSogbm9kZSkKICAgICA6IEFjY2Vzc2liaWxpdHlPYmplY3QoKQotICAgICwgbV9hcmlhUm9sZShV
bmtub3duUm9sZSkKLSAgICAsIG1fcm9sZUZvck1TQUEoVW5rbm93blJvbGUpCi0jaWZuZGVmIE5E
RUJVRwotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLSNlbmRpZgogICAgICwgbV9ub2RlKG5v
ZGUpCiB7CiB9CkBAIC0yODIsNTcgKzI3Nyw1NyBAQCBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmRvY3VtCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQogewogICAgIGlmICghbm9kZSgpKQotICAg
ICAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VW5rbm93bjsKIAotICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0
cmlidXRlKCkpICE9IFVua25vd25Sb2xlKQorICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWlu
ZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAg
ICAgICByZXR1cm4gbV9hcmlhUm9sZTsKICAgICAKICAgICBpZiAobm9kZSgpLT5pc0xpbmsoKSkK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmVMaW5rUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpXZWJDb3JlTGluazsKICAgICBpZiAobm9kZSgpLT5pc1RleHROb2RlKCkpCi0g
ICAgICAgIHJldHVybiBTdGF0aWNUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpTdGF0aWNUZXh0OwogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoYnV0dG9uVGFn
KSkKICAgICAgICAgcmV0dXJuIGJ1dHRvblJvbGVUeXBlKCk7CiAgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKCkpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0g
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUoKSk7CiAgICAgICAgIGlmIChpbnB1dC5p
c0NoZWNrYm94KCkpCi0gICAgICAgICAgICByZXR1cm4gQ2hlY2tCb3hSb2xlOworICAgICAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsKICAgICAgICAgaWYgKGlucHV0
LmlzUmFkaW9CdXR0b24oKSkKLSAgICAgICAgICAgIHJldHVybiBSYWRpb0J1dHRvblJvbGU7Cisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOwogICAgICAg
ICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYnV0dG9uUm9s
ZVR5cGUoKTsKICAgICAgICAgaWYgKGlucHV0LmlzUmFuZ2VDb250cm9sKCkpCi0gICAgICAgICAg
ICByZXR1cm4gU2xpZGVyUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyOwogICAgICAgICBpZiAoaW5wdXQuaXNJbnB1dFR5cGVIaWRkZW4oKSkKLSAgICAg
ICAgICAgIHJldHVybiBJZ25vcmVkUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6SWdub3JlZDsKICAgICAgICAgaWYgKGlucHV0LmlzU2VhcmNoRmllbGQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBTZWFyY2hGaWVsZFJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgICAgICBpZiAoaW5wdXQuaXNDb2xvckNvbnRyb2woKSkKLSAgICAgICAgICAgIHJldHVy
biBDb2xvcldlbGxSb2xlOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpD
b2xvcldlbGw7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIFRleHRGaWVsZFJvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOwogICAgIH0KICAgICBpZiAobm9k
ZSgpLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQm
IHNlbGVjdEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUoKSk7Ci0g
ICAgICAgIHJldHVybiBzZWxlY3RFbGVtZW50Lm11bHRpcGxlKCkgPyBMaXN0Qm94Um9sZSA6IFBv
cFVwQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIHNlbGVjdEVsZW1lbnQubXVsdGlwbGUoKSA/
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94IDogQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0
dG9uOwogICAgIH0KICAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKm5vZGUoKSkpCi0g
ICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGV4dEFyZWE7CiAgICAgaWYgKGhlYWRpbmdMZXZlbCgpKQotICAgICAgICByZXR1cm4g
SGVhZGluZ1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsK
ICAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKQotICAgICAgICByZXR1
cm4gQmxvY2txdW90ZVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Qmxv
Y2txdW90ZTsKICAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGRpdlRhZykpCi0gICAgICAgIHJl
dHVybiBEaXZSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRpdjsKICAg
ICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKHBUYWcpKQotICAgICAgICByZXR1cm4gUGFyYWdyYXBo
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGg7CiAgICAg
aWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KCpub2RlKCkpKQotICAgICAgICByZXR1cm4gTGFiZWxS
b2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsOwogICAgIGlmIChp
czxFbGVtZW50Pigqbm9kZSgpKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSgpKS5pc0ZvY3Vz
YWJsZSgpKQotICAgICAgICByZXR1cm4gR3JvdXBSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwOwogICAgIAotICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmFkZENoaWxkcmVuKCkKQEAgLTM3MCwyMyArMzY1LDIzIEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNhbkhhdmVDaGkKICAgICAKICAgICAvLyBFbGVtZW50cyB0
aGF0IHNob3VsZCBub3QgaGF2ZSBjaGlsZHJlbgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsK
LSAgICBjYXNlIEltYWdlUm9sZToKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBQb3BV
cEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRv
blJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKLSAg
ICBjYXNlIFN0YXRpY1RleHRSb2xlOgotICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6Ci0gICAg
Y2FzZSBTY3JvbGxCYXJSb2xlOgotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgotICAg
IGNhc2UgU3dpdGNoUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAgIGNh
c2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBTcGxpdHRlclJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0
dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3RhdGljVGV4dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0
aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpTd2l0Y2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVj
a2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aDoKICNpZiBFTkFCTEUoTUFUSE1MKQogICAgICAgICByZXR1cm4gbm9kZSgpLT5p
c01hdGhNTEVsZW1lbnQoKTsKICNlbmRpZgpAQCAtNDE3LDE4ICs0MTIsMTggQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29tcHV0ZUFjYwogICAgIH0KIAogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0g
ICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgIGlmIChkZWNp
c2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYSBwYXJl
bnQgdGhhdCBjYW5ub3QgaGF2ZSBjaGlsZHJlbiwgaXQgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgog
ICAgIGlmIChpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBJZ25vcmVkUm9sZSkKKyAgICBpZiAocm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAotICAgIHJldHVybiBtX3JvbGUgPT0gVW5rbm93blJvbGU7CisgICAgcmV0dXJuIG1f
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6Y2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3QKQEAgLTQ3MSw3
ICs0NjYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpCiAgICAg
aWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocm9sZVZhbHVlKCkg
PT0gU2VhcmNoRmllbGRSb2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2VhcmNoRmllbGQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFpczxI
VE1MSW5wdXRFbGVtZW50Pigqbm9kZSkpCkBAIC01MTgsNyArNTEzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVJbQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc0ltYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gSW1hZ2VS
b2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U7
CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUGFzc3dvcmRGaWVsZCgpIGNv
bnN0CkBAIC01MjcsNyArNTIyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQ
YXNzd29yZAogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xl
KQorICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtu
b3duKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpOwpAQCAtNTU1LDcgKzU1MCw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2IKIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSgpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9
IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgcm9s
ZVZhbHVlKCkgPT0gQnV0dG9uUm9sZSkgeworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihu
b2RlKSAmJiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKSB7CiAgICAg
ICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUpOwogICAgICAgICByZXR1cm4gaW5wdXQuaXNJbWFnZUJ1dHRvbigpOwogICAgIH0KQEAg
LTU2NSwyMyArNTYwLDIzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJ
bWEKIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFByb2dyZXNzSW5kaWNhdG9yUm9s
ZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNz
SW5kaWNhdG9yOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NsaWRlcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNsaWRlclJvbGU7CisgICAgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0ZWQoKSBjb25zdAogewogICAgIHN3
aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIE1lbnVSb2xlOgotICAgIGNhc2UgTWVudUJh
clJvbGU6Ci0gICAgY2FzZSBNZW51QnV0dG9uUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToK
LSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1Jv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51QmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpNZW51SXRlbVJhZGlvOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTAsMjUgKzU4NSwyNSBAQCBib29sIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc01lbnVSZWxhCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzTWVudSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IE1lbnVSb2xl
OworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudTsKIH0K
IAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTWVudUJhclJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOwogfQogCiBib29sIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24oKSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFs
dWUoKSA9PSBNZW51QnV0dG9uUm9sZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVCdXR0b247CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzTWVudUl0ZW0oKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAg
ICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNh
c2UgTWVudUl0ZW1DaGVja2JveFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzYsNyArNjMx
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNFbmFibGVkKAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBIb3Jpem9udGFs
UnVsZVJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jp
em9udGFsUnVsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIE5vZGUqIG5vZGUg
PSB0aGlzLT5ub2RlKCk7CkBAIC02ODIsMTIgKzY3NywxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc0NoZWNrZWQoCiAgICAgLy8gRWxzZSwgaWYgdGhpcyBpcyBhbiBBUklBIGNo
ZWNrYm94IG9yIHJhZGlvLCByZXNwZWN0IHRoZSBhcmlhLWNoZWNrZWQgYXR0cmlidXRlCiAgICAg
Ym9vbCB2YWxpZFJvbGUgPSBmYWxzZTsKICAgICBzd2l0Y2ggKGFyaWFSb2xlQXR0cmlidXRlKCkp
IHsKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAg
ICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAg
IGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTd2l0Y2g6CiAgICAgICAgIHZhbGlkUm9sZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CkBAIC03MzYsMjYgKzczMSwyNiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc1JlcXVpcmVkCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdXBwb3J0c1Jl
cXVpcmVkQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0g
ICAgY2FzZSBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoK
ICAgICAgICAgcmV0dXJuIGlzRmlsZVVwbG9hZEJ1dHRvbigpOwotICAgIGNhc2UgQ2VsbFJvbGU6
Ci0gICAgY2FzZSBDb2x1bW5IZWFkZXJSb2xlOgotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAg
IGNhc2UgQ29tYm9Cb3hSb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBHcmlkQ2Vs
bFJvbGU6Ci0gICAgY2FzZSBJbmNyZW1lbnRvclJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToK
LSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAg
ICBjYXNlIFJhZGlvR3JvdXBSb2xlOgotICAgIGNhc2UgUm93SGVhZGVyUm9sZToKLSAgICBjYXNl
IFNsaWRlclJvbGU6Ci0gICAgY2FzZSBTcGluQnV0dG9uUm9sZToKLSAgICBjYXNlIFRhYmxlSGVh
ZGVyQ29udGFpbmVyUm9sZToKLSAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICBjYXNlIFRleHRG
aWVsZFJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVy
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQ6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6SW5jcmVtZW50b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlz
dEJveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSYWRpb0dyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6U3BpbkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhl
YWRlckNvbnRhaW5lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VG9nZ2xlQnV0dG9uOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03OTUsNyArNzkwLDcgQEAgaW50IEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpoZWFkaW5nTGV2ZQogCiAgICAgLy8gVGhlIGltcGxpY2l0IHZhbHVl
IG9mIGFyaWEtbGV2ZWwgaXMgMiBmb3IgdGhlIGhlYWRpbmcgcm9sZS4KICAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNoZWFkaW5nCi0gICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgPT0gSGVhZGluZ1JvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcpCiAgICAgICAgIHJldHVybiAyOwogCiAgICAgcmV0
dXJuIDA7CkBAIC04NzYsMTIgKzg3MSwxMiBAQCBmbG9hdCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6c3RlcFZhbHVlCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVhZGluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEhlYWRpbmdSb2xlOworICAgIHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsKIH0KIAogYm9v
bCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNMaW5rKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gV2ViQ29yZUxpbmtSb2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzQ29udHJvbCgpIGNvbnN0CkBAIC05MDUsNyArOTAwLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNGaWVsZHNldAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNHcm91cCgpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9
IHJvbGVWYWx1ZSgpOwotICAgIHJldHVybiByb2xlID09IEdyb3VwUm9sZSB8fCByb2xlID09IFRl
eHRHcm91cFJvbGUgfHwgcm9sZSA9PSBBcHBsaWNhdGlvbkdyb3VwUm9sZSB8fCByb2xlID09IEFw
cGxpY2F0aW9uVGV4dEdyb3VwUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwIHx8IHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfHwgcm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXA7CiB9CiAKIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKQEAg
LTkxNSw3ICs5MTAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9i
CiAKICAgICAvLyBGaW5kIHRoZSBjaGlsZCByYWRpbyBidXR0b24gdGhhdCBpcyBzZWxlY3RlZCAo
aWUuIHRoZSBpbnRWYWx1ZSA9PSAxKS4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hp
bGRyZW4oKSkgewotICAgICAgICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IFJhZGlvQnV0dG9u
Um9sZSAmJiBjaGlsZC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSA9PSBCdXR0b25TdGF0ZU9uKQor
ICAgICAgICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRp
b0J1dHRvbiAmJiBjaGlsZC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGU6Ok9uKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk0MSw3ICs5MzYsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iCiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3QKIHsKICAgICBp
ZiAoaXNOYXRpdmVDaGVja2JveE9yUmFkaW8oKSkKLSAgICAgICAgcmV0dXJuIGlzSW5kZXRlcm1p
bmF0ZSgpID8gQnV0dG9uU3RhdGVNaXhlZCA6IGlzQ2hlY2tlZCgpID8gQnV0dG9uU3RhdGVPbiA6
IEJ1dHRvblN0YXRlT2ZmOworICAgICAgICByZXR1cm4gaXNJbmRldGVybWluYXRlKCkgPyBBY2Nl
c3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkIDogaXNDaGVja2VkKCkgPyBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGU6Ok9uIDogQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY7CiAKICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2tib3hPclJhZGlvVmFsdWUoKTsKIH0KQEAg
LTEwMDgsMTQgKzEwMDMsMTQgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFj
dGlvbgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiAKICAgICBzd2l0
Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgUG9wVXBC
dXR0b25Sb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToK
LSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVt
Q2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKICAgICAgICAgLy8gQ2hlY2sgaWYg
dGhlIGF1dGhvciBpcyBoaWRpbmcgdGhlIHJlYWwgY29udHJvbCBlbGVtZW50IGluc2lkZSB0aGUg
QVJJQSBlbGVtZW50LgogICAgICAgICBpZiAoRWxlbWVudCogbmF0aXZlRWxlbWVudCA9IG5hdGl2
ZUFjdGlvbkVsZW1lbnQobm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gbmF0aXZlRWxlbWVudDsK
QEAgLTEwNjYsNyArMTA2MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRGVz
Y2VuZGEKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJTbGlkZXJWYWx1ZShi
b29sIGluY3JlYXNlKQogewotICAgIGlmIChyb2xlVmFsdWUoKSAhPSBTbGlkZXJSb2xlKQorICAg
IGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzdGVwQXR0cikuaXNFbXB0eSgpKQpAQCAt
MTEyNSwxMSArMTEyMCwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dlbmVy
aWNGCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgaWYgKHJvbGUgPT0gVmlkZW9Sb2xlIHx8IHJvbGUgPT0g
QXVkaW9Sb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpWaWRlbyB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBdWRpbykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gSWYgaXQgaGFzIGFuIGFyaWEgcm9sZSwgaXQncyBub3QgZ2VuZXJpYy4KLSAgICBp
ZiAobV9hcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAobV9hcmlhUm9sZSAhPSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
SWYgdGhlIGNvbnRlbnQgZWRpdGFibGUgYXR0cmlidXRlIGlzIHNldCBvbiB0aGlzIGVsZW1lbnQs
IHRoYXQncyB0aGUgcmVhc29uCkBAIC0xMTQxLDE0ICsxMTM2LDE0IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzR2VuZXJpY0YKIAogICAgIC8vIFRoZSB3ZWIgYXJlYSBhbmQgYm9k
eSBlbGVtZW50IGFyZSBib3RoIGZvY3VzYWJsZSwgYnV0IGV4aXN0aW5nIGxvZ2ljIGhhbmRsZXMg
dGhlc2UKICAgICAvLyBjYXNlcyBhbHJlYWR5LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGluY2x1ZGUg
dGhlbSBoZXJlLgotICAgIGlmIChyb2xlID09IFdlYkFyZWFSb2xlKQorICAgIGlmIChyb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoYm9keVRhZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIEFuIFNWRyByb290IGlzIGZvY3VzYWJsZSBieSBkZWZhdWx0LCBi
dXQgaXQncyBwcm9iYWJseSBub3QgaW50ZXJhY3RpdmUsIHNvIGRvbid0CiAgICAgLy8gaW5jbHVk
ZSBpdC4gSXQgY2FuIHN0aWxsIGJlIG1hZGUgYWNjZXNzaWJsZSBieSBnaXZpbmcgaXQgYW4gQVJJ
QSByb2xlLgotICAgIGlmIChyb2xlID09IFNWR1Jvb3RSb2xlKQorICAgIGlmIChyb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTVkdSb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTExOTksNyArMTE5NCw3IEBAIHN0YXRpYyBFbGVtZW50KiBzaWJsaW5n
V2l0aEFyaWFSb2xlKE5vZGUKIAogRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1l
bnVFbGVtZW50Rm9yTWVudUJ1dHRvbigpIGNvbnN0CiB7Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmli
dXRlKCkgIT0gTWVudUJ1dHRvblJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0g
QWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgcmV0dXJuIHNpYmxpbmdXaXRoQXJpYVJvbGUobm9kZSgpLCAibWVudSIpOwpAQCAtMTIx
NCw3ICsxMjA5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYgog
CiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUl0ZW1FbGVtZW50Rm9yTWVu
dSgpIGNvbnN0CiB7Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gTWVudVJvbGUpCisg
ICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVybiBzaWJsaW5nV2l0aEFyaWFS
b2xlKG5vZGUoKSwgIm1lbnVpdGVtIik7CkBAIC0xMjk4LDE1ICsxMjkzLDE1IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlRWxlbWUKICAgICAgICAgICAgIFN0cmluZyBpbm5l
clRleHQgPSB0ZXh0Rm9yTGFiZWxFbGVtZW50KGxhYmVsKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gT25seSB1c2UgdGhlIDxsYWJlbD4gdGV4dCBpZiB0aGVyZSdzIG5vIEFSSUEgb3Zl
cnJpZGUuCi0gICAgICAgICAgICBpZiAoIWlubmVyVGV4dC5pc0VtcHR5KCkgJiYgIWFyaWFBY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5k
KEFjY2Vzc2liaWxpdHlUZXh0KGlubmVyVGV4dCwgaXNNZXRlcigpID8gQWx0ZXJuYXRpdmVUZXh0
IDogTGFiZWxCeUVsZW1lbnRUZXh0LCBsYWJlbE9iamVjdCkpOworICAgICAgICAgICAgaWYgKGxh
YmVsT2JqZWN0ICYmICFpbm5lclRleHQuaXNFbXB0eSgpICYmICFhcmlhQWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uKCkpCisgICAgICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmls
aXR5VGV4dChpbm5lclRleHQsIGlzTWV0ZXIoKSA/IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpB
bHRlcm5hdGl2ZSA6IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCwgKmxh
YmVsT2JqZWN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAg
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQgPSB0aGlzLT50aXRsZVVJ
RWxlbWVudCgpOwogICAgIGlmICh0aXRsZVVJRWxlbWVudCkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dChTdHJpbmcoKSwgTGFiZWxCeUVsZW1lbnRUZXh0LCB0aXRs
ZVVJRWxlbWVudCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0
KFN0cmluZygpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQsICp0aXRs
ZVVJRWxlbWVudCkpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5h
dGl2ZVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9yZGVyKSBjb25zdApAQCAt
MTMxNCw3ICsxMzA5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRp
dgogICAgIGlmIChpc1dlYkFyZWEoKSkgewogICAgICAgICBTdHJpbmcgd2ViQXJlYVRleHQgPSBh
bHRlcm5hdGl2ZVRleHRGb3JXZWJBcmVhKCk7CiAgICAgICAgIGlmICghd2ViQXJlYVRleHQuaXNF
bXB0eSgpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh3
ZWJBcmVhVGV4dCwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBw
ZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHdlYkFyZWFUZXh0LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTEzMjIs
NyArMTMxNyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKICAg
ICAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFMYWJlbCA9IGdldEF0dHJpYnV0ZShhcmlh
X2xhYmVsQXR0cik7CiAgICAgaWYgKCFhcmlhTGFiZWwuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0
T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFyaWFMYWJlbCwgQWx0ZXJuYXRpdmVUZXh0
KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYXJpYUxhYmVs
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAKICAgICBpZiAo
dXNlc0FsdFRhZ0ZvclRleHRDb21wdXRhdGlvbigpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIoKSkpIHsKQEAgLTEzMzAsNyArMTMyNSw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKIAogICAgICAgICAgICAgLy8gUmVuZGVySW1hZ2Ug
d2lsbCByZXR1cm4gdGl0bGUgYXMgYSBmYWxsYmFjayBmcm9tIGFsdFRleHQsIGJ1dCB3ZSBkb24n
dCB3YW50IHRpdGxlIGhlcmUgYmVjYXVzZSB3ZSBjb25zaWRlciB0aGF0IGluIGhlbHBUZXh0Lgog
ICAgICAgICAgICAgaWYgKCFyZW5kZXJBbHRUZXh0LmlzRW1wdHkoKSAmJiByZW5kZXJBbHRUZXh0
ICE9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpKSB7Ci0gICAgICAgICAgICAgICAgdGV4dE9yZGVy
LmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChyZW5kZXJBbHRUZXh0LCBBbHRlcm5hdGl2ZVRleHQp
KTsKKyAgICAgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHJl
bmRlckFsdFRleHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTMzOCw3
ICsxMzMzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdgogICAg
ICAgICAvLyBPdGhlcndpc2UsIGl0IHNob3VsZCBmYWxsYmFjayB0byBvdGhlciBtZXRob2RzLCBs
aWtlIHRoZSB0aXRsZSBhdHRyaWJ1dGUuCiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0
ID0gZ2V0QXR0cmlidXRlKGFsdEF0dHIpOwogICAgICAgICBpZiAoIWFsdC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFsdCwgQWx0ZXJu
YXRpdmVUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlU
ZXh0KGFsdCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAgICAgfQog
ICAgIAogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CkBAIC0xMzQ5LDIzICsxMzQ0LDIz
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKICAgICBpZiAoaXM8
SFRNTEZpZWxkU2V0RWxlbWVudD4oKm5vZGUpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZG93bmNhc3Q8SFRNTEZp
ZWxkU2V0RWxlbWVudD4oKm5vZGUpLmxlZ2VuZCgpKTsKICAgICAgICAgaWYgKG9iamVjdCAmJiAh
b2JqZWN0LT5pc0hpZGRlbigpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3Np
YmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUob2JqZWN0LT5ub2RlKCkpLCBBbHRlcm5h
dGl2ZVRleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG9iamVjdC0+bm9kZSgpKSwgQWNjZXNzaWJpbGl0eVRl
eHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAgICAgfQogICAgIAogICAgIC8vIFRoZSBmaWd1cmUg
ZWxlbWVudCBkZXJpdmVzIGl0cyBhbHRlcm5hdGl2ZSB0ZXh0IGZyb20gdGhlIGZpcnN0IGFzc29j
aWF0ZWQgZmlnY2FwdGlvbiBlbGVtZW50IGlmIG9uZSBpcyBhdmFpbGFibGUuCiAgICAgaWYgKGlz
RmlndXJlRWxlbWVudCgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNhcHRpb25G
b3JGaWd1cmUgPSB0aGlzLT5jYXB0aW9uRm9yRmlndXJlKCk7CiAgICAgICAgIGlmIChjYXB0aW9u
Rm9yRmlndXJlICYmICFjYXB0aW9uRm9yRmlndXJlLT5pc0hpZGRlbigpKQotICAgICAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUo
Y2FwdGlvbkZvckZpZ3VyZS0+bm9kZSgpKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2libGVOYW1lRm9yTm9k
ZShjYXB0aW9uRm9yRmlndXJlLT5ub2RlKCkpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0
ZXJuYXRpdmUpKTsKICAgICB9CiAgICAgCiAgICAgLy8gVHJlZSBpdGVtcyBtaXNzaW5nIGEgbGFi
ZWwgYXJlIGxhYmVsZWQgYnkgYWxsIGNoaWxkIGVsZW1lbnRzLgogICAgIGlmIChpc1RyZWVJdGVt
KCkgJiYgYXJpYUxhYmVsLmlzRW1wdHkoKSAmJiBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkuaXNF
bXB0eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vz
c2libGVOYW1lRm9yTm9kZShub2RlKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRP
cmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG5vZGUp
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAKICNpZiBFTkFC
TEUoTUFUSE1MKQogICAgIGlmIChub2RlLT5pc01hdGhNTEVsZW1lbnQoKSkKLSAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6
OmFsdHRleHRBdHRyKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBl
bmQoQWNjZXNzaWJpbGl0eVRleHQoZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjphbHR0ZXh0QXR0
ciksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogI2VuZGlmCiB9CiAK
QEAgLTEzNzksNyArMTM3NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2li
bGVUZXgKICAgICBpZiAoaXNJbnB1dFRhZykgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBp
bnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgaWYgKGlu
cHV0LmlzVGV4dEJ1dHRvbigpKSB7Ci0gICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vz
c2liaWxpdHlUZXh0KGlucHV0LnZhbHVlV2l0aERlZmF1bHQoKSwgVmlzaWJsZVRleHQpKTsKKyAg
ICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaW5wdXQudmFsdWVX
aXRoRGVmYXVsdCgpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VmlzaWJsZSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM5MSwyNiArMTM4NiwyNiBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2aXNpYmxlVGV4CiAgICAgYm9vbCB1c2VUZXh0
VW5kZXJFbGVtZW50ID0gZmFsc2U7CiAgICAgCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewot
ICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBv
cFVwQnV0dG9uOgogICAgICAgICAvLyBOYXRpdmUgcG9wdXAgYnV0dG9ucyBzaG91bGQgbm90IHVz
ZSB0aGVpciBidXR0b24gY2hpbGRyZW4ncyB0ZXh0IGFzIGEgdGl0bGUuIFRoYXQgdmFsdWUgaXMg
cmV0cmlldmVkIHRocm91Z2ggc3RyaW5nVmFsdWUoKS4KICAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoc2VsZWN0VGFnKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgotICAg
IGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRvZ2dsZUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgogICAgIC8vIE1hY09TIGRv
ZXMgbm90IGV4cGVjdCBuYXRpdmUgPGxpPiBlbGVtZW50cyB0byBleHBvc2UgbGFiZWwgaW5mb3Jt
YXRpb24sIGl0IG9ubHkgZXhwZWN0cyBsZWFmIG5vZGUgZWxlbWVudHMgdG8gZG8gdGhhdC4KICNp
ZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgY2FzZSBMaXN0SXRlbVJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAjZW5kaWYKLSAgICBjYXNlIE1lbnVCdXR0b25Sb2xl
OgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToK
LSAgICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3
aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CiAgICAgICAgIHVzZVRleHRV
bmRlckVsZW1lbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTQz
NCw3ICsxNDI5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmlzaWJsZVRleAog
CiAgICAgICAgIFN0cmluZyB0ZXh0ID0gdGV4dFVuZGVyRWxlbWVudChtb2RlKTsKICAgICAgICAg
aWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNz
aWJpbGl0eVRleHQodGV4dCwgQ2hpbGRyZW5UZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIu
YXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRleHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpD
aGlsZHJlbikpOwogICAgIH0KIH0KIApAQCAtMTQ0MiwyOCArMTQzNywyOCBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4dChWCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhcmlhSGVscCA9IGdldEF0dHJpYnV0ZShhcmlhX2hlbHBBdHRyKTsKICAgICBpZiAoIWFyaWFI
ZWxwLmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChhcmlhSGVscCwgSGVscFRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3Np
YmlsaXR5VGV4dChhcmlhSGVscCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHApKTsKICAg
ICAKICAgICBTdHJpbmcgZGVzY3JpYmVkQnkgPSBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKTsK
ICAgICBpZiAoIWRlc2NyaWJlZEJ5LmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVu
ZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmliZWRCeSwgU3VtbWFyeVRleHQpKTsKKyAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmliZWRCeSwgQWNjZXNzaWJp
bGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpKTsKIAogICAgIC8vIFN1bW1hcnkgYXR0cmlidXRlIHVz
ZWQgYXMgaGVscCB0ZXh0IG9uIHRhYmxlcy4KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1h
cnkgPSBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogICAgIGlmICghc3VtbWFyeS5pc0VtcHR5
KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VtbWFyeSwg
U3VtbWFyeVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChzdW1tYXJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogCiAgICAgLy8g
VGhlIHRpdGxlIGF0dHJpYnV0ZSBzaG91bGQgYmUgdXNlZCBhcyBoZWxwIHRleHQgdW5sZXNzIGl0
IGlzIGFscmVhZHkgYmVpbmcgdXNlZCBhcyBkZXNjcmlwdGl2ZSB0ZXh0LgogICAgIC8vIEhvd2V2
ZXIsIHdoZW4gdGhlIHRpdGxlIGF0dHJpYnV0ZSBpcyB0aGUgb25seSB0ZXh0IGFsdGVybmF0aXZl
IHByb3ZpZGVkLCBpdCBtYXkgYmUgZXhwb3NlZCBhcyB0aGUKICAgICAvLyBkZXNjcmlwdGl2ZSB0
ZXh0LiBUaGlzIGlzIHByb2JsZW1hdGljIGluIHRoZSBjYXNlIG9mIG1ldGVycyBiZWNhdXNlIHRo
ZSBIVE1MIHNwZWMgc3VnZ2VzdHMgYXV0aG9ycwogICAgIC8vIGNhbiBleHBvc2UgdW5pdHMgdGhy
b3VnaCB0aGlzIGF0dHJpYnV0ZS4gVGhlcmVmb3JlLCBpZiB0aGUgZWxlbWVudCBpcyBhIG1ldGVy
LCBjaGFuZ2UgaXRzIHNvdXJjZQotICAgIC8vIHR5cGUgdG8gSGVscFRleHQuCisgICAgLy8gdHlw
ZSB0byBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscC4KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHRpdGxlID0gZ2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CiAgICAgaWYgKCF0aXRsZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKCFpc01ldGVyKCkgJiYgIXJvbGVJZ25vcmVzVGl0bGUoKSkK
LSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIFRp
dGxlVGFnVGV4dCkpOworICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dCh0aXRsZSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlRpdGxlVGFnKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0
bGUsIEhlbHBUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxp
dHlUZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCkpOwogICAgIH0KIH0K
IApAQCAtMTQ3Niw3ICsxNDcxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNj
ZXNzaWJpbAogICAgIAogICAgIFN0cmluZyBwbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyVmFsdWUo
KTsKICAgICBpZiAoIXBsYWNlaG9sZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dChwbGFjZWhvbGRlciwgUGxhY2Vob2xkZXJUZXh0KSk7Cisg
ICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQocGxhY2Vob2xkZXIsIEFj
Y2Vzc2liaWxpdHlUZXh0U291cmNlOjpQbGFjZWhvbGRlcikpOwogfQogICAgIAogdm9pZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQoVmVjdG9yPEFjY2Vzc2liaWxp
dHlUZXh0PiYgdGV4dE9yZGVyKSBjb25zdApAQCAtMTQ4NiwxMyArMTQ4MSwxMyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlCiAgICAgICAgIFZlY3RvcjxFbGVtZW50
Kj4gZWxlbWVudHM7CiAgICAgICAgIGFyaWFMYWJlbGVkQnlFbGVtZW50cyhlbGVtZW50cyk7CiAg
ICAgICAgIAotICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVs
ZW1lbnRzOworICAgICAgICBWZWN0b3I8UmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVsZW1l
bnRzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewotICAg
ICAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4RWxlbWVudCA9IGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7Ci0gICAgICAgICAgICBheEVsZW1lbnRzLmFw
cGVuZChheEVsZW1lbnQpOworICAgICAgICAgICAgaWYgKGF1dG8gYXhFbGVtZW50ID0gYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVtZW50KSkKKyAgICAgICAgICAgICAgICBheEVsZW1l
bnRzLmFwcGVuZCgqYXhFbGVtZW50KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBbHRlcm5hdGl2
ZVRleHQsIFdURk1vdmUoYXhFbGVtZW50cykpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChB
Y2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
QWx0ZXJuYXRpdmUsIFdURk1vdmUoYXhFbGVtZW50cykpKTsKICAgICB9CiB9CiAgICAgCkBAIC0x
NTQxLDcgKzE1MzYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpIGNvbnN0CiB7CiAgICAgLy8gU3RhdGljIHRleHQgc2hvdWxkIG5vdCBoYXZlIGEgZGVzY3Jp
cHRpb24sIGl0IHNob3VsZCBvbmx5IGhhdmUgYSBzdHJpbmdWYWx1ZS4KLSAgICBpZiAocm9sZVZh
bHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBT
dHJpbmcgYXJpYURlc2NyaXB0aW9uID0gYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwpA
QCAtMTU3NiwxMiArMTU3MSwxMiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFj
Y2Vzc2liCiAvLyBhY2Nlc3NpYmlsaXR5IGhpZXJhcmNoeS4gVGhpcyBhcHBsaWVzIHRvIGdlbmVy
aWMgZ3JvdXBzIGxpa2UgPGRpdj4ncyB3aXRoIG5vIHJvbGUgdmFsdWUgc2V0LgogYm9vbCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6cm9sZUlnbm9yZXNUaXRsZSgpIGNvbnN0CiB7Ci0gICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIERpdlJvbGU6Ci0g
ICAgY2FzZSBVbmtub3duUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXY6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTYxOSw3ICsxNjE0LDcg
QEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4dAogICAgICAgICAvLyBP
bmx5IHRha2UgaGVscCB0ZXh0IGZyb20gYW4gYW5jZXN0b3IgZWxlbWVudCBpZiBpdHMgYSBncm91
cCBvciBhbiB1bmtub3duIHJvbGUuIElmIGhlbHAgd2FzIAogICAgICAgICAvLyBhZGRlZCB0byB0
aG9zZSBraW5kcyBvZiBlbGVtZW50cywgaXQgaXMgbGlrZWx5IGl0IHdhcyBtZWFudCBmb3IgYSBj
aGlsZCBlbGVtZW50LgogICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmogPSBh
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGFuY2VzdG9yKSkgewotICAgICAgICAgICAgaWYg
KCFheE9iai0+aXNHcm91cCgpICYmIGF4T2JqLT5yb2xlVmFsdWUoKSAhPSBVbmtub3duUm9sZSkK
KyAgICAgICAgICAgIGlmICghYXhPYmotPmlzR3JvdXAoKSAmJiBheE9iai0+cm9sZVZhbHVlKCkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjM4LDcgKzE2MzMsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aGllcmFyCiAgICAgICAgIHJldHVybiBhcmlhTGV2ZWwudG9JbnQoKTsK
ICAgICAKICAgICAvLyBPbmx5IHRyZWUgaXRlbSB3aWxsIGNhbGN1bGF0ZSBpdHMgbGV2ZWwgdGhy
b3VnaCB0aGUgRE9NIGN1cnJlbnRseS4KLSAgICBpZiAocm9sZVZhbHVlKCkgIT0gVHJlZUl0ZW1S
b2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0p
CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIC8vIEhpZXJhcmNoeSBsZXZlbGluZyBzdGFy
dHMgYXQgMSwgdG8gbWF0Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KQEAgLTE2NDYsOSArMTY0MSw5
IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXIKICAgICB1bnNpZ25l
ZCBsZXZlbCA9IDE7CiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJl
bnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHBhcmVudFJvbGUgPSBwYXJlbnQtPmFyaWFSb2xlQXR0
cmlidXRlKCk7Ci0gICAgICAgIGlmIChwYXJlbnRSb2xlID09IEFwcGxpY2F0aW9uR3JvdXBSb2xl
KQorICAgICAgICBpZiAocGFyZW50Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25Hcm91cCkKICAgICAgICAgICAgIGxldmVsKys7Ci0gICAgICAgIGVsc2UgaWYgKHBhcmVudFJv
bGUgPT0gVHJlZVJvbGUpCisgICAgICAgIGVsc2UgaWYgKHBhcmVudFJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgCkBAIC0xODA1
LDI2ICsxODAwLDI2IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGUoKSAK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewot
ICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBv
cFVwQnV0dG9uOgogICAgICAgICAvLyBOYXRpdmUgcG9wdXAgYnV0dG9ucyBzaG91bGQgbm90IHVz
ZSB0aGVpciBidXR0b24gY2hpbGRyZW4ncyB0ZXh0IGFzIGEgdGl0bGUuIFRoYXQgdmFsdWUgaXMg
cmV0cmlldmVkIHRocm91Z2ggc3RyaW5nVmFsdWUoKS4KICAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoc2VsZWN0VGFnKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAg
RkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9u
Um9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xl
OgotICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6Ci0gICAg
Y2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICBj
YXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgIGNh
c2UgU3dpdGNoUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpUYWI6CiAgICAgICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7CiAgICAgLy8gU1ZHUm9v
dHMgc2hvdWxkIG5vdCB1c2UgdGhlIHRleHQgdW5kZXIgaXRzZWxmIGFzIGEgdGl0bGUuIFRoYXQg
Y291bGQgaW5jbHVkZSB0aGUgdGV4dCBvZiBvYmplY3RzIGxpa2UgPHRleHQ+LgotICAgIGNhc2Ug
U1ZHUm9vdFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9vdDoKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMTg0
MSw3ICsxODM2LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZSgpIAog
U3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0KCkgY29uc3QKIHsKICAgICAvLyBJ
ZiB0aGlzIGlzIGEgdXNlciBkZWZpbmVkIHN0YXRpYyB0ZXh0LCB1c2UgdGhlIGFjY2Vzc2libGUg
bmFtZSBjb21wdXRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFN0YXRpY1RleHRSb2xlKSB7CisgICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsK
ICAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0T3JkZXI7CiAgICAgICAgIGFs
dGVybmF0aXZlVGV4dCh0ZXh0T3JkZXIpOwogICAgICAgICBpZiAodGV4dE9yZGVyLnNpemUoKSA+
IDAgJiYgdGV4dE9yZGVyWzBdLnRleHQubGVuZ3RoKCkpCkBAIC0xODcwLDcgKzE4NjUsNyBAQCBT
dHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnN0cmluZ1ZhCiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9
PSBTdGF0aWNUZXh0Um9sZSkgeworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0KSB7CiAgICAgICAgIFN0cmluZyBzdGF0aWNUZXh0ID0g
dGV4dCgpOwogICAgICAgICBpZiAoIXN0YXRpY1RleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICBz
dGF0aWNUZXh0ID0gdGV4dFVuZGVyRWxlbWVudCgpOwpAQCAtMjEyOCwzNyArMjEyMywzNyBAQCBB
Y2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjCiB7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7CiAgICAgaWYgKGFy
aWFSb2xlLmlzTnVsbCgpIHx8IGFyaWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFVu
a25vd25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAg
ICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IGFyaWFSb2xlVG9XZWJDb3JlUm9sZShh
cmlhUm9sZSk7CiAKICAgICAvLyBBUklBIHN0YXRlcyBpZiBhbiBpdGVtIGNhbiBnZXQgZm9jdXMs
IGl0IHNob3VsZCBub3QgYmUgcHJlc2VudGF0aW9uYWwuCi0gICAgaWYgKHJvbGUgPT0gUHJlc2Vu
dGF0aW9uYWxSb2xlICYmIGNhblNldEZvY3VzQXR0cmlidXRlKCkpCi0gICAgICAgIHJldHVybiBV
bmtub3duUm9sZTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0
aW9uYWwgJiYgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYgKHJvbGUgPT0gQnV0dG9uUm9sZSkKKyAgICBp
ZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKQogICAgICAgICByb2xlID0gYnV0
dG9uUm9sZVR5cGUoKTsKIAotICAgIGlmIChyb2xlID09IFRleHRBcmVhUm9sZSAmJiAhYXJpYUlz
TXVsdGlsaW5lKCkpCi0gICAgICAgIHJvbGUgPSBUZXh0RmllbGRSb2xlOworICAgIGlmIChyb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSAmJiAhYXJpYUlzTXVsdGlsaW5lKCkpCisg
ICAgICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOwogCiAgICAgcm9sZSA9
IHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChyb2xlKTsKICAgICAKICAgICAvLyBQcmVzZW50YXRp
b25hbCByb2xlcyBhcmUgaW52YWxpZGF0ZWQgYnkgdGhlIHByZXNlbmNlIG9mIEFSSUEgYXR0cmli
dXRlcy4KLSAgICBpZiAocm9sZSA9PSBQcmVzZW50YXRpb25hbFJvbGUgJiYgc3VwcG9ydHNBUklB
QXR0cmlidXRlcygpKQotICAgICAgICByb2xlID0gVW5rbm93blJvbGU7CisgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsICYmIHN1cHBvcnRzQVJJQUF0dHJp
YnV0ZXMoKSkKKyAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogICAg
IAogICAgIC8vIFRoZSBBUklBIHNwZWMgc3RhdGVzLCAiQXV0aG9ycyBtdXN0IGdpdmUgZWFjaCBl
bGVtZW50IHdpdGggcm9sZSByZWdpb24gYSBicmllZiBsYWJlbCB0aGF0CiAgICAgLy8gZGVzY3Jp
YmVzIHRoZSBwdXJwb3NlIG9mIHRoZSBjb250ZW50IGluIHRoZSByZWdpb24uIiBUaGUgQ29yZSBB
QU0gc3RhdGVzLCAiU3BlY2lhbCBjYXNlOgogICAgIC8vIGlmIHRoZSByZWdpb24gZG9lcyBub3Qg
aGF2ZSBhbiBhY2Nlc3NpYmxlIG5hbWUsIGRvIG5vdCBleHBvc2UgdGhlIGVsZW1lbnQgYXMgYSBs
YW5kbWFyay4KICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHJvbGUgb2YgdGhl
IGVsZW1lbnQgaW5zdGVhZC4iCi0gICAgaWYgKHJvbGUgPT0gTGFuZG1hcmtSZWdpb25Sb2xlICYm
ICFoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbEF0dHIpICYmICFoYXNBdHRyaWJ1dGUoYXJpYV9sYWJl
bGxlZGJ5QXR0cikpCi0gICAgICAgIHJvbGUgPSBVbmtub3duUm9sZTsKKyAgICBpZiAocm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gJiYgIWhhc0F0dHJpYnV0ZShhcmlh
X2xhYmVsQXR0cikgJiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKSkKKyAgICAg
ICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYgKHJvbGUpCisg
ICAgaWYgKHN0YXRpY19jYXN0PGludD4ocm9sZSkpCiAgICAgICAgIHJldHVybiByb2xlOwogCi0g
ICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bjsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3QKQEAgLTIxNzMsMjEgKzIxNjgsMjEgQEAgQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplYwogICAgIC8vIFdoaWxlIGluc2lkZSB0aGUg
Y2FsbCBzdGFjayBvZiBjcmVhdGluZyBhbiBlbGVtZW50LCB3ZSBuZWVkIHRvIGF2b2lkIGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjUxNzQKIAotICAgIGlmIChyb2xlICE9IExpc3RCb3hPcHRpb25Sb2xlICYm
IHJvbGUgIT0gTWVudUl0ZW1Sb2xlKQorICAgIGlmIChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xl
OjpMaXN0Qm94T3B0aW9uICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtKQog
ICAgICAgICByZXR1cm4gcm9sZTsKICAgICAKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQgJiYgIXBhcmVudC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpOyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHBhcmVudEFyaWFSb2xlID0gcGFyZW50LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpOwogCiAgICAgICAgIC8vIFNlbGVjdHMgYW5kIGxpc3Rib3hlcyBib3RoIGhhdmUgb3B0
aW9ucyBhcyBjaGlsZCByb2xlcywgYnV0IHRoZXkgbWFwIHRvIGRpZmZlcmVudCByb2xlcyB3aXRo
aW4gV2ViQ29yZS4KLSAgICAgICAgaWYgKHJvbGUgPT0gTGlzdEJveE9wdGlvblJvbGUgJiYgcGFy
ZW50QXJpYVJvbGUgPT0gTWVudVJvbGUpCi0gICAgICAgICAgICByZXR1cm4gTWVudUl0ZW1Sb2xl
OworICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbiAm
JiBwYXJlbnRBcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkKKyAgICAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW07CiAgICAgICAgIC8vIEFuIGFyaWEg
Im1lbnVpdGVtIiBtYXkgbWFwIHRvIE1lbnVCdXR0b24gb3IgTWVudUl0ZW0gZGVwZW5kaW5nIG9u
IGl0cyBwYXJlbnQuCi0gICAgICAgIGlmIChyb2xlID09IE1lbnVJdGVtUm9sZSAmJiBwYXJlbnRB
cmlhUm9sZSA9PSBBcHBsaWNhdGlvbkdyb3VwUm9sZSkKLSAgICAgICAgICAgIHJldHVybiBNZW51
QnV0dG9uUm9sZTsKKyAgICAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJ
dGVtICYmIHBhcmVudEFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdy
b3VwKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOwog
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHBhcmVudCBoYWQgYSBkaWZmZXJlbnQgcm9sZSwg
dGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNvbnRpbnVlIHNlYXJjaGluZyB1cCB0aGUgY2hhaW4uCi0g
ICAgICAgIGlmIChwYXJlbnRBcmlhUm9sZSkKKyAgICAgICAgaWYgKHBhcmVudEFyaWFSb2xlICE9
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIApAQCAtMjE5OCwxOSArMjE5MywxOSBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjYW5TZXRTZWxlCiB7CiAgICAgLy8gRWxlbWVudHMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQKICAg
ICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBDZWxsUm9sZToKLSAgICBjYXNlIEdy
aWRDZWxsUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBjYXNlIFJvd0hlYWRl
clJvbGU6Ci0gICAgY2FzZSBSb3dSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2Fz
ZSBUYWJSb2xlOgotICAgIGNhc2UgVHJlZUdyaWRSb2xlOgotICAgIGNhc2UgVHJlZUl0ZW1Sb2xl
OgotICAgIGNhc2UgVHJlZVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAg
ICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlJvdzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
cmVlR3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRp
bzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKICAgICAgICAgcmV0dXJu
IGlzRW5hYmxlZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDEw
ICsxNDQsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0KE5vZGUqKTsKIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1fYXJpYVJvbGU7
Ci0gICAgbXV0YWJsZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOworICAgIEFjY2Vz
c2liaWxpdHlSb2xlIG1fYXJpYVJvbGUgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biB9Owor
ICAgIG11dGFibGUgQWNjZXNzaWJpbGl0eVJvbGUgbV9yb2xlRm9yTVNBQSB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duIH07CiAjaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgbV9pbml0aWFsaXpl
ZDsKKyAgICBib29sIG1faW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKICAgICBib29s
IGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9ub2RlOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDIwICs4NCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU9iamVjdCgpCi0gICAgOiBtX2lkKDApCi0g
ICAgLCBtX2hhdmVDaGlsZHJlbihmYWxzZSkKLSAgICAsIG1fcm9sZShVbmtub3duUm9sZSkKLSAg
ICAsIG1fbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoRGVmYXVsdEJlaGF2aW9yKQotICAgICwgbV9p
c0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoKSkKLSAgICAsIG1fY2hpbGRyZW5EaXJ0eShmYWxzZSkKLSAgICAsIG1fc3VidHJlZURpcnR5
KGZhbHNlKQotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAsIG1fd3JhcHBlcihudWxscHRyKQotI2Vu
ZGlmCi17Ci19Ci0KIEFjY2Vzc2liaWxpdHlPYmplY3Q6On5BY2Nlc3NpYmlsaXR5T2JqZWN0KCkK
IHsKICAgICBBU1NFUlQoaXNEZXRhY2hlZCgpKTsKQEAgLTEwNiw3ICs5Miw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3Q6On5BY2Nlc3NpYmlsaXR5T2JqZWMKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSBkZXRhY2htZW50VHlwZSwgQVhP
YmplY3RDYWNoZSogY2FjaGUpCiB7CiAgICAgLy8gTWVudSBjbG9zZSBldmVudHMgbmVlZCB0byBu
b3RpZnkgdGhlIHBsYXRmb3JtLiBObyBlbGVtZW50IGlzIHVzZWQgaW4gdGhlIG5vdGlmaWNhdGlv
biBiZWNhdXNlIGl0J3MgYSBkZXN0cnVjdGlvbiBldmVudC4KLSAgICBpZiAoZGV0YWNobWVudFR5
cGUgPT0gRWxlbWVudERlc3Ryb3llZCAmJiByb2xlVmFsdWUoKSA9PSBNZW51Um9sZSAmJiBjYWNo
ZSkKKyAgICBpZiAoZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBl
OjpFbGVtZW50RGVzdHJveWVkICYmIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51ICYmIGNhY2hlKQogICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihudWxscHRyLCAm
Y2FjaGUtPmRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYTWVudUNsb3NlZCk7CiAgICAgCiAg
ICAgLy8gQ2xlYXIgYW55IGNoaWxkcmVuIGFuZCBjYWxsIGRldGFjaEZyb21QYXJlbnQgb24gdGhl
bSBzbyB0aGF0CkBAIC0xMzAsMTQyICsxMTYsMTQyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEZXRhY2hlZCgpIGMKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmls
aXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3QgaW5kZXgpCiB7
CiAgICAgc3dpdGNoIChjcml0ZXJpYS0+c2VhcmNoS2V5c1tpbmRleF0pIHsKLSAgICAvLyBUaGUg
QW55VHlwZVNlYXJjaEtleSBtYXRjaGVzIGFueSBub24tbnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
LgotICAgIGNhc2UgQW55VHlwZVNlYXJjaEtleToKKyAgICAvLyBUaGUgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6QW55VHlwZSBtYXRjaGVzIGFueSBub24tbnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
LgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIAotICAgIGNhc2UgQXJ0aWNsZVNlYXJjaEtleToKLSAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBEb2N1bWVudEFydGljbGVSb2xlOworICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QXJ0aWNsZToKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xl
OwogICAgICAgICAgICAgCi0gICAgY2FzZSBCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QmxvY2txdW90ZVNhbWVMZXZlbDoKICAg
ICAgICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgYXhPYmpl
Y3QtPmlzQmxvY2txdW90ZSgpCiAgICAgICAgICAgICAmJiBheE9iamVjdC0+YmxvY2txdW90ZUxl
dmVsKCkgPT0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKTsKICAgICAg
ICAgCi0gICAgY2FzZSBCbG9ja3F1b3RlU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6QmxvY2txdW90ZToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0Jsb2Nr
cXVvdGUoKTsKICAgICAgICAgCi0gICAgY2FzZSBCb2xkRm9udFNlYXJjaEtleToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkJvbGRGb250OgogICAgICAgICByZXR1cm4gYXhPYmpl
Y3QtPmhhc0JvbGRGb250KCk7CiAgICAgICAgIAotICAgIGNhc2UgQnV0dG9uU2VhcmNoS2V5Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QnV0dG9uOgogICAgICAgICByZXR1cm4g
YXhPYmplY3QtPmlzQnV0dG9uKCk7CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tCb3hTZWFyY2hL
ZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpDaGVja0JveDoKICAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT5pc0NoZWNrYm94KCk7CiAgICAgICAgIAotICAgIGNhc2UgQ29udHJv
bFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkNvbnRyb2w6CiAg
ICAgICAgIHJldHVybiBheE9iamVjdC0+aXNDb250cm9sKCk7CiAgICAgICAgIAotICAgIGNhc2Ug
RGlmZmVyZW50VHlwZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6
OkRpZmZlcmVudFR5cGU6CiAgICAgICAgIHJldHVybiBjcml0ZXJpYS0+c3RhcnRPYmplY3QKICAg
ICAgICAgICAgICYmIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBjcml0ZXJpYS0+c3RhcnRPYmpl
Y3QtPnJvbGVWYWx1ZSgpOwogICAgICAgICAKLSAgICBjYXNlIEZvbnRDaGFuZ2VTZWFyY2hLZXk6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpGb250Q2hhbmdlOgogICAgICAgICBy
ZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhh
c1NhbWVGb250KGNyaXRlcmlhLT5zdGFydE9iamVjdC0+cmVuZGVyZXIoKSk7CiAgICAgICAgIAot
ICAgIGNhc2UgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6Rm9udENvbG9yQ2hhbmdlOgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0
YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhhc1NhbWVGb250Q29sb3IoY3Jp
dGVyaWEtPnN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKICAgICAgICAgCi0gICAgY2FzZSBGcmFt
ZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkZyYW1lOgogICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPmlzV2ViQXJlYSgpOwogICAgICAgICAKLSAgICBjYXNlIEdy
YXBoaWNTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpHcmFwaGlj
OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzSW1hZ2UoKTsKICAgICAgICAgCi0gICAgY2Fz
ZSBIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6SGVhZGluZ0xldmVsMToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwo
KSA9PSAxOwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdMZXZlbDJTZWFyY2hLZXk6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWwyOgogICAgICAgICByZXR1
cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDI7CiAgICAgICAgIAotICAgIGNhc2UgSGVh
ZGluZ0xldmVsM1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okhl
YWRpbmdMZXZlbDM6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0g
MzsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsNDoKICAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSA0OwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdM
ZXZlbDVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5n
TGV2ZWw1OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDU7CiAg
ICAgICAgIAotICAgIGNhc2UgSGVhZGluZ0xldmVsNlNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDY6CiAgICAgICAgIHJldHVybiBheE9iamVj
dC0+aGVhZGluZ0xldmVsKCkgPT0gNjsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5nU2FtZUxl
dmVsU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ1Nh
bWVMZXZlbDoKICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAg
ICAgJiYgYXhPYmplY3QtPmlzSGVhZGluZygpCiAgICAgICAgICAgICAmJiBheE9iamVjdC0+aGVh
ZGluZ0xldmVsKCkgPT0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKTsKICAg
ICAgICAgCi0gICAgY2FzZSBIZWFkaW5nU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6SGVhZGluZzoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0hlYWRpbmco
KTsKICAgICAKLSAgICBjYXNlIEhpZ2hsaWdodGVkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6SGlnaGxpZ2h0ZWQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
aGFzSGlnaGxpZ2h0aW5nKCk7CiAgICAgICAgICAgICAKLSAgICBjYXNlIEl0YWxpY0ZvbnRTZWFy
Y2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpJdGFsaWNGb250OgogICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPmhhc0l0YWxpY0ZvbnQoKTsKICAgICAgICAgCi0gICAgY2Fz
ZSBMYW5kbWFya1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okxh
bmRtYXJrOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzTGFuZG1hcmsoKTsKICAgICAgICAg
Ci0gICAgY2FzZSBMaW5rU2VhcmNoS2V5OiB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5OjpMaW5rOiB7CiAgICAgICAgIGJvb2wgaXNMaW5rID0gYXhPYmplY3QtPmlzTGluaygpOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKCFpc0xpbmspCi0gICAgICAgICAgICBpc0xp
bmsgPSBheE9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKFdlYkNvcmVMaW5rUm9sZSk7CisgICAg
ICAgICAgICBpc0xpbmsgPSBheE9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxp
dHlSb2xlOjpXZWJDb3JlTGluayk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIGlzTGluazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgTGlzdFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6Okxpc3Q6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNMaXN0KCk7
CiAgICAgICAgIAotICAgIGNhc2UgTGl2ZVJlZ2lvblNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkxpdmVSZWdpb246CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
c3VwcG9ydHNBUklBTGl2ZVJlZ2lvbigpOwogICAgICAgICAKLSAgICBjYXNlIE1pc3NwZWxsZWRX
b3JkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6TWlzc3BlbGxl
ZFdvcmQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzTWlzc3BlbGxpbmcoKTsKICAgICAg
ICAgCi0gICAgY2FzZSBPdXRsaW5lU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6T3V0bGluZToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1RyZWUoKTsKICAg
ICAgICAgCi0gICAgY2FzZSBQbGFpblRleHRTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpQbGFpblRleHQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzUGxh
aW5UZXh0KCk7CiAgICAgICAgIAotICAgIGNhc2UgUmFkaW9Hcm91cFNlYXJjaEtleToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlJhZGlvR3JvdXA6CiAgICAgICAgIHJldHVybiBh
eE9iamVjdC0+aXNSYWRpb0dyb3VwKCk7CiAgICAgICAgIAotICAgIGNhc2UgU2FtZVR5cGVTZWFy
Y2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTYW1lVHlwZToKICAgICAg
ICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgYXhPYmplY3Qt
PnJvbGVWYWx1ZSgpID09IGNyaXRlcmlhLT5zdGFydE9iamVjdC0+cm9sZVZhbHVlKCk7CiAgICAg
ICAgIAotICAgIGNhc2UgU3RhdGljVGV4dFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OlN0YXRpY1RleHQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNTdGF0
aWNUZXh0KCk7CiAgICAgICAgIAotICAgIGNhc2UgU3R5bGVDaGFuZ2VTZWFyY2hLZXk6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTdHlsZUNoYW5nZToKICAgICAgICAgcmV0dXJu
IGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5oYXNTYW1l
U3R5bGUoY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKICAgICAgICAgCi0gICAg
Y2FzZSBUYWJsZVNhbWVMZXZlbFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk6OlRhYmxlU2FtZUxldmVsOgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2Jq
ZWN0CiAgICAgICAgICAgICAmJiBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkgJiYg
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpLmlzRXhwb3NhYmxlVGhyb3Vn
aEFjY2Vzc2liaWxpdHkoKQogICAgICAgICAgICAgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlPigqYXhPYmplY3QpLnRhYmxlTGV2ZWwoKSA9PSBjcml0ZXJpYS0+c3RhcnRPYmplY3QtPnRh
YmxlTGV2ZWwoKTsKICAgICAgICAgCi0gICAgY2FzZSBUYWJsZVNlYXJjaEtleToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlRhYmxlOgogICAgICAgICByZXR1cm4gaXM8QWNjZXNz
aWJpbGl0eVRhYmxlPigqYXhPYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
KmF4T2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiAgICAgICAgIAot
ICAgIGNhc2UgVGV4dEZpZWxkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6VGV4dEZpZWxkOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVGV4dENvbnRyb2wo
KTsKICAgICAgICAgCi0gICAgY2FzZSBVbmRlcmxpbmVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
aGFzVW5kZXJsaW5lKCk7CiAgICAgICAgIAotICAgIGNhc2UgVW52aXNpdGVkTGlua1NlYXJjaEtl
eToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlVudmlzaXRlZExpbms6CiAgICAg
ICAgIHJldHVybiBheE9iamVjdC0+aXNVbnZpc2l0ZWQoKTsKICAgICAgICAgCi0gICAgY2FzZSBW
aXNpdGVkTGlua1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlZp
c2l0ZWRMaW5rOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVmlzaXRlZCgpOwogICAgICAg
ICAKICAgICBkZWZhdWx0OgpAQCAtMzEyLDUxICsyOTgsNTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY2Nlc3NpYmxlTmFtZQogewogICAgIC8vIEZpcnN0IGNoZWNrIGZvciBvYmplY3Rz
IHNwZWNpZmljYWxseSBpZGVudGlmaWVkIGJ5IEFSSUEuCiAgICAgc3dpdGNoIChhcmlhUm9sZUF0
dHJpYnV0ZSgpKSB7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKLSAgICBjYXNlIEFw
cGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xl
OgotICAgIGNhc2UgQXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkxv
Z1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgotICAgIGNhc2UgQXBwbGlj
YXRpb25TdGF0dXNSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0gICAgY2Fz
ZSBDb21ib0JveFJvbGU6Ci0gICAgY2FzZSBEZWZpbml0aW9uUm9sZToKLSAgICBjYXNlIERvY3Vt
ZW50Um9sZToKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgY2FzZSBEb2N1bWVu
dE1hdGhSb2xlOgotICAgIGNhc2UgRG9jdW1lbnROb3RlUm9sZToKLSAgICBjYXNlIExhbmRtYXJr
UmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrRG9jUmVnaW9uUm9sZToKLSAgICBjYXNlIEZv
cm1Sb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBHcm91cFJvbGU6Ci0gICAgY2Fz
ZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBMaXN0Um9sZToKLSAgICBjYXNlIExpc3RCb3hSb2xlOgot
ICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50
YXJ5Um9sZToKLSAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAgIGNhc2UgTGFu
ZG1hcmtOYXZpZ2F0aW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya1NlYXJjaFJvbGU6Ci0gICAgY2FzZSBNZW51Um9sZToKLSAgICBjYXNlIE1lbnVC
YXJSb2xlOgotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgotICAgIGNhc2UgUmFkaW9H
cm91cFJvbGU6Ci0gICAgY2FzZSBTY3JvbGxCYXJSb2xlOgotICAgIGNhc2UgU2xpZGVyUm9sZToK
LSAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgotICAgIGNhc2UgU3BsaXR0ZXJSb2xlOgotICAgIGNh
c2UgVGFibGVSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2FzZSBUYWJQYW5lbFJv
bGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAgY2FzZSBUZXh0RmllbGRSb2xlOgotICAg
IGNhc2UgVG9vbGJhclJvbGU6Ci0gICAgY2FzZSBUcmVlR3JpZFJvbGU6Ci0gICAgY2FzZSBUcmVl
Um9sZToKLSAgICBjYXNlIFdlYkFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uQWxlcnREaWFsb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25EaWFsb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91
cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25UaW1lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0Jv
eDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm06
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm86CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a1NlYXJjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJv
Z3Jlc3NJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFibGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlz
dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0
RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
cmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0zNjQsNyAr
MzUwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmxlTmFtZQogICAgIAog
ICAgIC8vIE5vdyBjaGVjayBmb3IgZ2VuZXJpY2FsbHkgZGVyaXZlZCBlbGVtZW50cyBub3cgdGhh
dCB3ZSBrbm93IHRoZSBlbGVtZW50IGRvZXMgbm90IG1hdGNoIGEgc3BlY2lmaWMgQVJJQSByb2xl
LgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIFNsaWRlclJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0zODgsMTYgKzM3NCwxNiBAQCBTdHJpbmcg
QWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRMYWJlCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNCbG9ja3F1b3RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QmxvY2txdW90ZVJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpCbG9ja3F1b3RlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENv
bnRyb2woKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIENv
bWJvQm94Um9sZToKLSAgICBjYXNlIFNlYXJjaEZpZWxkUm9sZToKLSAgICBjYXNlIFRleHRBcmVh
Um9sZToKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGV4dEZpZWxkOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDYsNyArMzkyLDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1RleHRDb250cm9sKAogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFyaWFSb2xlQXR0cmli
dXRlKCkgPT0gVGV4dEFyZWFSb2xlIHx8IGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gVGV4dEZpZWxk
Um9sZSB8fCBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFNlYXJjaEZpZWxkUm9sZTsKKyAgICByZXR1
cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgfHwg
YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkIHx8IGFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOwogfQog
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSBjb25z
dApAQCAtNDE4LDE0ICs0MDQsMTQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhbmRt
YXJrKCkgYwogewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKICAg
ICAKLSAgICByZXR1cm4gcm9sZSA9PSBMYW5kbWFya0Jhbm5lclJvbGUKLSAgICAgICAgfHwgcm9s
ZSA9PSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTGFuZG1h
cmtDb250ZW50SW5mb1JvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya0RvY1JlZ2lvblJv
bGUKLSAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya01haW5Sb2xlCi0gICAgICAgIHx8IHJvbGUg
PT0gTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZQotICAgICAgICB8fCByb2xlID09IExhbmRtYXJrUmVn
aW9uUm9sZQotICAgICAgICB8fCByb2xlID09IExhbmRtYXJrU2VhcmNoUm9sZTsKKyAgICByZXR1
cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXIKKyAgICAgICAgfHwg
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5CisgICAgICAg
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm8KKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24KKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluCisgICAgICAgIHx8
IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbgorICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbgorICAgICAgICB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaDsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZygpIGNvbnN0CkBAIC02NzcsNyArNjYzLDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYgogICAgIGlmICghc3Rh
cnRPYmplY3QpCiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gdGhpczsKICAgICAKLSAgICBib29sIGlz
Rm9yd2FyZCA9IGNyaXRlcmlhLT5zZWFyY2hEaXJlY3Rpb24gPT0gU2VhcmNoRGlyZWN0aW9uTmV4
dDsKKyAgICBib29sIGlzRm9yd2FyZCA9IGNyaXRlcmlhLT5zZWFyY2hEaXJlY3Rpb24gPT0gQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dDsKICAgICAKICAgICAvLyBUaGUgZmlyc3Qg
aXRlcmF0aW9uIG9mIHRoZSBvdXRlciBsb29wIHdpbGwgZXhhbWluZSB0aGUgY2hpbGRyZW4gb2Yg
dGhlIHN0YXJ0IG9iamVjdCBmb3IgbWF0Y2hlcy4gSG93ZXZlciwgd2hlbgogICAgIC8vIGl0ZXJh
dGluZyBiYWNrd2FyZHMsIHRoZSBzdGFydCBvYmplY3QgY2hpbGRyZW4gc2hvdWxkIG5vdCBiZSBj
b25zaWRlcmVkLCBzbyB0aGUgbG9vcCBpcyBza2lwcGVkIGFoZWFkLiBXZSBtYWtlIGFuCkBAIC03
NjAsNyArNzQ2LDcgQEAgUmVmUHRyPFJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYW5nZQog
ICAgIGlmICghcmVmZXJlbmNlUmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAot
ICAgIGJvb2wgaXNCYWNrd2FyZFNlYXJjaCA9IHNlYXJjaERpcmVjdGlvbiA9PSBTZWFyY2hEaXJl
Y3Rpb25QcmV2aW91czsKKyAgICBib29sIGlzQmFja3dhcmRTZWFyY2ggPSBzZWFyY2hEaXJlY3Rp
b24gPT0gQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6UHJldmlvdXM7CiAgICAgRmluZE9w
dGlvbnMgZmluZE9wdGlvbnMgPSBBdFdvcmRTdGFydHMgfCBBdFdvcmRFbmRzIHwgQ2FzZUluc2Vu
c2l0aXZlIHwgU3RhcnRJblNlbGVjdGlvbjsKICAgICBpZiAoaXNCYWNrd2FyZFNlYXJjaCkKICAg
ICAgICAgZmluZE9wdGlvbnMgfD0gQmFja3dhcmRzOwpAQCAtODMyLDExICs4MTgsMTEgQEAgU3Ry
aW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQQogICAgIFJlZlB0cjxSYW5nZT4g
Y2xvc2VzdEFmdGVyU3RyaW5nUmFuZ2UgPSBudWxscHRyOwogICAgIFJlZlB0cjxSYW5nZT4gY2xv
c2VzdEJlZm9yZVN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICAvLyBTZWFyY2ggZm9yd2FyZCBp
ZiBuZWNlc3NhcnkuCi0gICAgaWYgKGFtYmlndWl0eVJlc29sdXRpb24gPT0gQ2xvc2VzdEFmdGVy
U2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbiB8fCBhbWJpZ3VpdHlSZXNvbHV0aW9uID09IENs
b3Nlc3RUb1NlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24pCi0gICAgICAgIGNsb3Nlc3RBZnRl
clN0cmluZ1JhbmdlID0gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oc2Vs
ZWN0ZWRTdHJpbmdSYW5nZS5nZXQoKSwgU2VhcmNoRGlyZWN0aW9uTmV4dCwgc2VhcmNoU3RyaW5n
cyk7CisgICAgaWYgKGFtYmlndWl0eVJlc29sdXRpb24gPT0gQWNjZXNzaWJpbGl0eVNlbGVjdFRl
eHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0QWZ0ZXIgfHwgYW1iaWd1aXR5UmVzb2x1dGlv
biA9PSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RU
bykKKyAgICAgICAgY2xvc2VzdEFmdGVyU3RyaW5nUmFuZ2UgPSByYW5nZU9mU3RyaW5nQ2xvc2Vz
dFRvUmFuZ2VJbkRpcmVjdGlvbihzZWxlY3RlZFN0cmluZ1JhbmdlLmdldCgpLCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uOjpOZXh0LCBzZWFyY2hTdHJpbmdzKTsKICAgICAvLyBTZWFyY2gg
YmFja3dhcmQgaWYgbmVjZXNzYXJ5LgotICAgIGlmIChhbWJpZ3VpdHlSZXNvbHV0aW9uID09IENs
b3Nlc3RCZWZvcmVTZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uIHx8IGFtYmlndWl0eVJlc29s
dXRpb24gPT0gQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbikKLSAgICAgICAg
Y2xvc2VzdEJlZm9yZVN0cmluZ1JhbmdlID0gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5E
aXJlY3Rpb24oc2VsZWN0ZWRTdHJpbmdSYW5nZS5nZXQoKSwgU2VhcmNoRGlyZWN0aW9uUHJldmlv
dXMsIHNlYXJjaFN0cmluZ3MpOworICAgIGlmIChhbWJpZ3VpdHlSZXNvbHV0aW9uID09IEFjY2Vz
c2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbjo6Q2xvc2VzdEJlZm9yZSB8fCBh
bWJpZ3VpdHlSZXNvbHV0aW9uID09IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVz
b2x1dGlvbjo6Q2xvc2VzdFRvKQorICAgICAgICBjbG9zZXN0QmVmb3JlU3RyaW5nUmFuZ2UgPSBy
YW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihzZWxlY3RlZFN0cmluZ1Jhbmdl
LmdldCgpLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91cywgc2VhcmNoU3Ry
aW5ncyk7CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGNhbmRpZGF0ZSBpcyBjbG9zZXN0
IHRvIHRoZSBzZWxlY3Rpb24gYW5kIHBlcmZvcm0gdGhlIGFjdGl2aXR5LgogICAgIGlmIChSZWZQ
dHI8UmFuZ2U+IGNsb3Nlc3RTdHJpbmdSYW5nZSA9IHJhbmdlQ2xvc2VzdFRvUmFuZ2Uoc2VsZWN0
ZWRTdHJpbmdSYW5nZS5nZXQoKSwgV1RGTW92ZShjbG9zZXN0QWZ0ZXJTdHJpbmdSYW5nZSksIFdU
Rk1vdmUoY2xvc2VzdEJlZm9yZVN0cmluZ1JhbmdlKSkpIHsKQEAgLTg1MCwyMCArODM2LDIwIEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RUZXh0KEEKICAgICAgICAgYm9vbCBy
ZXBsYWNlU2VsZWN0aW9uID0gZmFsc2U7CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0ZWRSYW5nZShjbG9zZXN0U3RyaW5nUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIHRy
dWUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGFjdGl2aXR5KSB7Ci0gICAgICAgICAgICBjYXNl
IEZpbmRBbmRDYXBpdGFsaXplOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0
VGV4dEFjdGl2aXR5OjpGaW5kQW5kQ2FwaXRhbGl6ZToKICAgICAgICAgICAgICAgICByZXBsYWNl
bWVudFN0cmluZyA9IGNsb3Nlc3RTdHJpbmc7CiAgICAgICAgICAgICAgICAgbWFrZUNhcGl0YWxp
emVkKCZyZXBsYWNlbWVudFN0cmluZywgMCk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZVNlbGVj
dGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZp
bmRBbmRVcHBlcmNhc2U6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0
QWN0aXZpdHk6OkZpbmRBbmRVcHBlcmNhc2U6CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRT
dHJpbmcgPSBjbG9zZXN0U3RyaW5nLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsg
Ly8gRklYTUU6IE5lZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgICAgICAg
ICByZXBsYWNlU2VsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgRmluZEFuZExvd2VyY2FzZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZExvd2VyY2FzZToKICAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudFN0cmluZyA9IGNsb3Nlc3RTdHJpbmcuY29udmVydFRvTG93ZXJjYXNlV2l0
aG91dExvY2FsZSgpOyAvLyBGSVhNRTogTmVlZHMgbG9jYWxlIHRvIHdvcmsgY29ycmVjdGx5Lgog
ICAgICAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBGaW5kQW5kUmVwbGFjZUFjdGl2aXR5OiB7CisgICAg
ICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRSZXBs
YWNlOiB7CiAgICAgICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbiA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgLy8gV2hlbiBhcHBseWluZyBmaW5kIGFuZCByZXBsYWNlIGFjdGl2aXRpZXMsIHdl
IHdhbnQgdG8gbWF0Y2ggdGhlIGNhcGl0YWxpemF0aW9uIG9mIHRoZSByZXBsYWNlZCB0ZXh0LAog
ICAgICAgICAgICAgICAgIC8vICh1bmxlc3Mgd2UncmUgcmVwbGFjaW5nIHdpdGggYW4gYWJicmV2
aWF0aW9uLikKQEAgLTg3NSw3ICs4NjEsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6
c2VsZWN0VGV4dChBCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBGaW5kQW5kU2VsZWN0QWN0aXZpdHk6Cisg
ICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRT
ZWxlY3Q6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTkxMiwyNCArODk4LDIzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQXR0
cmlidXRlc1IKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFJbnB1dChBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZSkKIHsKLSAgICByZXR1cm4gYXJpYVJvbGUgPT0gUmFkaW9CdXR0
b25Sb2xlIHx8IGFyaWFSb2xlID09IENoZWNrQm94Um9sZSB8fCBhcmlhUm9sZSA9PSBUZXh0Rmll
bGRSb2xlIHx8IGFyaWFSb2xlID09IFN3aXRjaFJvbGUgfHwgYXJpYVJvbGUgPT0gU2VhcmNoRmll
bGRSb2xlOworICAgIHJldHVybiBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9C
dXR0b24gfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94IHx8IGFyaWFS
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQgfHwgYXJpYVJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaCB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Vh
cmNoRmllbGQ7CiB9ICAgIAogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFD
b250cm9sKEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlKQogewotICAgIHJldHVybiBpc0FSSUFJ
bnB1dChhcmlhUm9sZSkgfHwgYXJpYVJvbGUgPT0gVGV4dEFyZWFSb2xlIHx8IGFyaWFSb2xlID09
IEJ1dHRvblJvbGUgCi0gICAgfHwgYXJpYVJvbGUgPT0gQ29tYm9Cb3hSb2xlIHx8IGFyaWFSb2xl
ID09IFNsaWRlclJvbGU7IAorICAgIHJldHVybiBpc0FSSUFJbnB1dChhcmlhUm9sZSkgfHwgYXJp
YVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhIHx8IGFyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpCdXR0b24gfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bWJvQm94IHx8IGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7CiB9CiAgICAg
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFuZ2VDb250cm9sKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6
Ci0gICAgY2FzZSBTbGlkZXJSb2xlOgotICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKLSAgICBjYXNl
IFNwaW5CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5k
aWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3BpbkJ1dHRvbjoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBTcGxpdHRlclJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CiAgICAgICAgIHJldHVybiBj
YW5TZXRGb2N1c0F0dHJpYnV0ZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0NTksNyArMTQ0NCw3IEBAIFZpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojp2aXMKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIAogICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXMuCi0gICAgSW50
UG9pbnQgY29ybmVyID0gKHZpc2libGVQb3NpdGlvbkZvckJvdW5kcyA9PSBGaXJzdFZpc2libGVQ
b3NpdGlvbkZvckJvdW5kcykgPyByZWN0Lm1pblhNaW5ZQ29ybmVyKCkgOiByZWN0Lm1heFhNYXhZ
Q29ybmVyKCk7CisgICAgSW50UG9pbnQgY29ybmVyID0gKHZpc2libGVQb3NpdGlvbkZvckJvdW5k
cyA9PSBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzOjpGaXJzdCkgPyByZWN0
Lm1pblhNaW5ZQ29ybmVyKCkgOiByZWN0Lm1heFhNYXhZQ29ybmVyKCk7CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uID0gbWFpbkZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb3Ju
ZXIpOwogICAgIAogICAgIGlmIChyZWN0LmNvbnRhaW5zKHBvc2l0aW9uLmFic29sdXRlQ2FyZXRC
b3VuZHMoKS5jZW50ZXIoKSkpCkBAIC0xNjUyLDI5ICsxNjM3LDI5IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c3VwcG9ydHNBUklBUmUKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
ID0gcm9sZVZhbHVlKCk7CiAKLSAgICByZXR1cm4gcm9sZSA9PSBDaGVja0JveFJvbGUKLSAgICAg
ICAgfHwgcm9sZSA9PSBDb2x1bW5IZWFkZXJSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gQ29tYm9C
b3hSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gR3JpZFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBH
cmlkQ2VsbFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBMaXN0Qm94Um9sZQotICAgICAgICB8fCBy
b2xlID09IE1lbnVJdGVtQ2hlY2tib3hSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTWVudUl0ZW1S
YWRpb1JvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBSYWRpb0dyb3VwUm9sZQotICAgICAgICB8fCBy
b2xlID09IFJvd0hlYWRlclJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBTZWFyY2hGaWVsZFJvbGUK
LSAgICAgICAgfHwgcm9sZSA9PSBTbGlkZXJSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gU3BpbkJ1
dHRvblJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBTd2l0Y2hSb2xlCi0gICAgICAgIHx8IHJvbGUg
PT0gVGV4dEZpZWxkUm9sZQotICAgICAgICB8fCByb2xlID09IFRyZWVHcmlkUm9sZQorICAgIHJl
dHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveAorICAgICAgICB8fCByb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIKKyAgICAgICAgfHwgcm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3gKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JpZAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
Q2VsbAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94CisgICAg
ICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3gKKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbworICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwCisgICAgICAgIHx8IHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcgorICAgICAgICB8fCByb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTbGlkZXIKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvbgorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2gKKyAg
ICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkCisgICAgICAgIHx8
IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkCiAgICAgICAgIHx8IGlzUGFzc3dv
cmRGaWVsZCgpOwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJlYWRPbmx5
VmFsdWUoKSBjb25zdAogewogICAgIGlmICghaGFzQXR0cmlidXRlKGFyaWFfcmVhZG9ubHlBdHRy
KSkKLSAgICAgICAgcmV0dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUgJiYg
c3VwcG9ydHNBUklBUmVhZE9ubHkoKSA/ICJmYWxzZSIgOiBTdHJpbmcoKTsKKyAgICAgICAgcmV0
dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gJiYg
c3VwcG9ydHNBUklBUmVhZE9ubHkoKSA/ICJmYWxzZSIgOiBTdHJpbmcoKTsKIAogICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoYXJpYV9yZWFkb25seUF0dHIpLnN0cmluZygpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCk7CiB9CkBAIC0xODkxLDcgKzE4NzYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3Qg
PSByZW5kZXJPYmplY3QtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShy
ZW5kZXJPYmplY3QpOwogICAgIAogICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlP
YmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpheE9iamVjdCwgdHJ1
ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewotICAgICAgICByZXR1
cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEhlYWRpbmdSb2xlOworICAgICAgICByZXR1cm4gb2Jq
ZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOwogICAgIH0pKTsK
IH0KIApAQCAtMTkwOSw3ICsxODk0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
VHJlZVJvd3MoQQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7
CiAgICAgICAgIC8vIEFkZCB0cmVlIGl0ZW1zIGFzIHRoZSByb3dzLgotICAgICAgICBpZiAoY2hp
bGQtPnJvbGVWYWx1ZSgpID09IFRyZWVJdGVtUm9sZSkKKyAgICAgICAgaWYgKGNoaWxkLT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNoaWxkKTsKIAogICAgICAgICAvLyBOb3cgc2VlIGlmIHRoaXMgaXRlbSBhbHNv
IGhhcyByb3dzIGhpZGluZyBpbnNpZGUgb2YgaXQuCkBAIC0xOTIxLDcgKzE5MDYsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbUNvCiB7CiAgICAgLy8gVGhlIEFSSUEg
dHJlZSBpdGVtIGNvbnRlbnQgYXJlIHRoZSBpdGVtIHRoYXQgYXJlIG5vdCBvdGhlciB0cmVlIGl0
ZW1zIG9yIHRoZWlyIGNvbnRhaW5pbmcgZ3JvdXBzLgogICAgIGZvciAoY29uc3QgYXV0byYgY2hp
bGQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmICghY2hpbGQtPmlzR3JvdXAoKSAmJiBjaGls
ZC0+cm9sZVZhbHVlKCkgIT0gVHJlZUl0ZW1Sb2xlKQorICAgICAgICBpZiAoIWNoaWxkLT5pc0dy
b3VwKCkgJiYgY2hpbGQtPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRl
bSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hpbGQpOwogICAgIH0KIH0KQEAgLTE5MzAs
NyArMTkxNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVJdGVtRGkKIHsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iaiA6IGNoaWxkcmVuKCkpIHsKICAgICAgICAgLy8gQWRk
IHRyZWUgaXRlbXMgYXMgdGhlIHJvd3MuCi0gICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpID09
IFRyZWVJdGVtUm9sZSkKKyAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWVJdGVtKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChvYmopOwogICAg
ICAgICAvLyBJZiBpdCdzIG5vdCBhIHRyZWUgaXRlbSwgdGhlbiBkZXNjZW5kIGludG8gdGhlIGdy
b3VwIHRvIGZpbmQgbW9yZSB0cmVlIGl0ZW1zLgogICAgICAgICBlbHNlIApAQCAtMTk0MSwxNCAr
MTkyNiwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURpCiBjb25z
dCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JS
b2xlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiB7CiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAg
Y2FzZSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFs
b2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKICAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXNzZXJ0aXZlIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlv
bkxvZ1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInBvbGl0
ZSIpOwotICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlv
bk1hcnF1ZWVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGlt
ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlOgogICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvZmYiKTsKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKQEAgLTE5NzEsMjUgKzE5NTYsMjUgQEAgY29uc3QgU3RyaW5nJiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY3RpbwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTdHJpbmc+IGxpc3RJdGVtQWN0aW9uKEFYTGlzdEl0ZW1BY3Rpb25WZXJiKCkpOwogCiAgICAg
c3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFRv
Z2dsZUJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuIGJ1
dHRvbkFjdGlvbjsKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgogICAgICAgICByZXR1cm4gdGV4dEZpZWxkQWN0aW9u
OwotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJhZGlvQnV0dG9uOgogICAgICAgICByZXR1cm4gcmFkaW9CdXR0b25BY3Rpb247Ci0gICAgY2Fz
ZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoK
ICAgICAgICAgcmV0dXJuIGlzQ2hlY2tlZCgpID8gY2hlY2tlZENoZWNrQm94QWN0aW9uIDogdW5j
aGVja2VkQ2hlY2tCb3hBY3Rpb247Ci0gICAgY2FzZSBMaW5rUm9sZToKLSAgICBjYXNlIFdlYkNv
cmVMaW5rUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5rOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOgogICAgICAgICByZXR1cm4gbGlua0FjdGlv
bjsKLSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpQb3BVcEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIG1lbnVMaXN0QWN0aW9uOwotICAgIGNhc2Ug
TWVudUxpc3RQb3B1cFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQ
b3B1cDoKICAgICAgICAgcmV0dXJuIG1lbnVMaXN0UG9wdXBBY3Rpb247Ci0gICAgY2FzZSBMaXN0
SXRlbVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAgICAgICAg
IHJldHVybiBsaXN0SXRlbUFjdGlvbjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVs
bEF0b20oKTsKQEAgLTIwNTIsNDAgKzIwMzcsNDAgQEAgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGUgQWNjZXNzaWJpbAogICAgIAogICAgIC8vIElmICJmYWxzZSIsIGVtcHR5LCBvciBtaXNz
aW5nLCByZXR1cm4gZmFsc2Ugc3RhdGUuCiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlLmlzRW1w
dHkoKSB8fCBjdXJyZW50U3RhdGVWYWx1ZSA9PSAiZmFsc2UiKQotICAgICAgICByZXR1cm4gQVJJ
QUN1cnJlbnRGYWxzZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0
YXRlOjpGYWxzZTsKICAgICAKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUgPT0gInBhZ2UiKQot
ICAgICAgICByZXR1cm4gQVJJQUN1cnJlbnRQYWdlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eUFSSUFDdXJyZW50U3RhdGU6OlBhZ2U7CiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09
ICJzdGVwIikKLSAgICAgICAgcmV0dXJuIEFSSUFDdXJyZW50U3RlcDsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpTdGVwOwogICAgIGlmIChjdXJyZW50U3Rh
dGVWYWx1ZSA9PSAibG9jYXRpb24iKQotICAgICAgICByZXR1cm4gQVJJQUN1cnJlbnRMb2NhdGlv
bjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpMb2NhdGlv
bjsKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUgPT0gImRhdGUiKQotICAgICAgICByZXR1cm4g
QVJJQUN1cnJlbnREYXRlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGU6OkRhdGU7CiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09ICJ0aW1lIikKLSAgICAg
ICAgcmV0dXJuIEFSSUFDdXJyZW50VGltZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlB
UklBQ3VycmVudFN0YXRlOjpUaW1lOwogICAgIAogICAgIC8vIEFueSB2YWx1ZSBub3QgaW5jbHVk
ZWQgaW4gdGhlIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgInRy
dWUiLgotICAgIHJldHVybiBBUklBQ3VycmVudFRydWU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlBUklBQ3VycmVudFN0YXRlOjpUcnVlOwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYUN1cnJlbnRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChhcmlhQ3VycmVudFN0
YXRlKCkpIHsKLSAgICBjYXNlIEFSSUFDdXJyZW50RmFsc2U6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5QVJJQUN1cnJlbnRTdGF0ZTo6RmFsc2U6CiAgICAgICAgIHJldHVybiAiZmFsc2UiOwotICAg
IGNhc2UgQVJJQUN1cnJlbnRQYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGU6OlBhZ2U6CiAgICAgICAgIHJldHVybiAicGFnZSI7Ci0gICAgY2FzZSBBUklBQ3VycmVu
dFN0ZXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6U3RlcDoKICAg
ICAgICAgcmV0dXJuICJzdGVwIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50TG9jYXRpb246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6TG9jYXRpb246CiAgICAgICAgIHJl
dHVybiAibG9jYXRpb24iOwotICAgIGNhc2UgQVJJQUN1cnJlbnRUaW1lOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU6CiAgICAgICAgIHJldHVybiAidGltZSI7
Ci0gICAgY2FzZSBBUklBQ3VycmVudERhdGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1
cnJlbnRTdGF0ZTo6RGF0ZToKICAgICAgICAgcmV0dXJuICJkYXRlIjsKICAgICBkZWZhdWx0Ogot
ICAgIGNhc2UgQVJJQUN1cnJlbnRUcnVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJy
ZW50U3RhdGU6OlRydWU6CiAgICAgICAgIHJldHVybiAidHJ1ZSI7CiAgICAgfQogfQpAQCAtMjE2
NCwxMSArMjE0OSwxMSBAQCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eU9i
CiB7CiAgICAgTGF5b3V0UmVjdCBib3VuZHMgPSBlbGVtZW50UmVjdCgpOwogICAgIGlmIChib3Vu
ZHMuc2l6ZSgpLndpZHRoKCkgPiBib3VuZHMuc2l6ZSgpLmhlaWdodCgpKQotICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICBpZiAoYm91bmRzLnNpemUo
KS5oZWlnaHQoKSA+IGJvdW5kcy5zaXplKCkud2lkdGgoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25VbmRlZmluZWQ7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5k
ZWZpbmVkOwogfSAgICAKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRP
Zk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKQEAgLTIy
MTYsMTE3ICsyMjAxLDExNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUm9sZU1hcCgpCiAgICAg
QVNTRVJUKCFnQXJpYVJldmVyc2VSb2xlTWFwKTsKIAogICAgIGNvbnN0IFJvbGVFbnRyeSByb2xl
c1tdID0gewotICAgICAgICB7ICJhbGVydCIsIEFwcGxpY2F0aW9uQWxlcnRSb2xlIH0sCi0gICAg
ICAgIHsgImFsZXJ0ZGlhbG9nIiwgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGUgfSwKLSAgICAg
ICAgeyAiYXBwbGljYXRpb24iLCBXZWJBcHBsaWNhdGlvblJvbGUgfSwKLSAgICAgICAgeyAiYXJ0
aWNsZSIsIERvY3VtZW50QXJ0aWNsZVJvbGUgfSwKLSAgICAgICAgeyAiYmFubmVyIiwgTGFuZG1h
cmtCYW5uZXJSb2xlIH0sCi0gICAgICAgIHsgImJ1dHRvbiIsIEJ1dHRvblJvbGUgfSwKLSAgICAg
ICAgeyAiY2hlY2tib3giLCBDaGVja0JveFJvbGUgfSwKLSAgICAgICAgeyAiY29tcGxlbWVudGFy
eSIsIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUgfSwKLSAgICAgICAgeyAiY29udGVudGluZm8i
LCBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZSB9LAotICAgICAgICB7ICJkaWFsb2ciLCBBcHBsaWNh
dGlvbkRpYWxvZ1JvbGUgfSwKLSAgICAgICAgeyAiZGlyZWN0b3J5IiwgRGlyZWN0b3J5Um9sZSB9
LAorICAgICAgICB7ICJhbGVydCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0
IH0sCisgICAgICAgIHsgImFsZXJ0ZGlhbG9nIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uQWxlcnREaWFsb2cgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24iLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6V2ViQXBwbGljYXRpb24gfSwKKyAgICAgICAgeyAiYXJ0aWNsZSIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudEFydGljbGUgfSwKKyAgICAgICAgeyAiYmFubmVyIiwgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyIH0sCisgICAgICAgIHsgImJ1dHRvbiIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXR0b24gfSwKKyAgICAgICAgeyAiY2hlY2tib3giLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q2hlY2tCb3ggfSwKKyAgICAgICAgeyAiY29tcGxlbWVudGFyeSIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnkgfSwKKyAgICAgICAgeyAiY29udGVudGluZm8i
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbyB9LAorICAgICAgICB7ICJk
aWFsb2ciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cgfSwKKyAgICAgICAg
eyAiZGlyZWN0b3J5IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSB9LAogICAgICAgICAv
LyBUaGUgJ2RvYy0qJyByb2xlcyBhcmUgZGVmaW5lZCB0aGUgQVJJQSBEUFVCIG1vYmlsZTogaHR0
cHM6Ly93d3cudzMub3JnL1RSL2RwdWItYWFtLTEuMC8gCiAgICAgICAgIC8vIEVkaXRvcidzIGRy
YWZ0IGlzIGN1cnJlbnRseSBhdCBodHRwczovL3Jhd2dpdC5jb20vdzNjL2FyaWEvbWFzdGVyL2Rw
dWItYWFtL2RwdWItYWFtLmh0bWwgCi0gICAgICAgIHsgImRvYy1hYnN0cmFjdCIsIEFwcGxpY2F0
aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtYWNrbm93bGVkZ21lbnRzIiwgTGFu
ZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1hZnRlcndvcmQiLCBMYW5kbWFy
a0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWFwcGVuZGl4IiwgTGFuZG1hcmtEb2NS
ZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1iYWNrbGluayIsIFdlYkNvcmVMaW5rUm9sZSB9
LAotICAgICAgICB7ICJkb2MtYmlibGlvZW50cnkiLCBMaXN0SXRlbVJvbGUgfSwKLSAgICAgICAg
eyAiZG9jLWJpYmxpb2dyYXBoeSIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7
ICJkb2MtYmlibGlvcmVmIiwgV2ViQ29yZUxpbmtSb2xlIH0sCi0gICAgICAgIHsgImRvYy1jaGFw
dGVyIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1jb2xvcGhvbiIs
IEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtY29uY2x1c2lvbiIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtY292ZXIiLCBJbWFnZVJv
bGUgfSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdCIsIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9
LAotICAgICAgICB7ICJkb2MtY3JlZGl0cyIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAg
ICAgICB7ICJkb2MtZGVkaWNhdGlvbiIsIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAg
ICAgICB7ICJkb2MtZW5kbm90ZSIsIExpc3RJdGVtUm9sZSB9LAotICAgICAgICB7ICJkb2MtZW5k
bm90ZXMiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWVwaWdyYXBo
IiwgQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1lcGlsb2d1ZSIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtZXJyYXRhIiwgTGFuZG1h
cmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1leGFtcGxlIiwgQXBwbGljYXRpb25U
ZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1mb290bm90ZSIsIEZvb3Rub3RlUm9sZSB9
LAotICAgICAgICB7ICJkb2MtZm9yZXdvcmQiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAg
ICAgICAgeyAiZG9jLWdsb3NzYXJ5IiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAg
IHsgImRvYy1nbG9zc3JlZiIsIFdlYkNvcmVMaW5rUm9sZSB9LAotICAgICAgICB7ICJkb2MtaW5k
ZXgiLCBMYW5kbWFya05hdmlnYXRpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1pbnRyb2R1Y3Rp
b24iLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLW5vdGVyZWYiLCBX
ZWJDb3JlTGlua1JvbGUgfSwKLSAgICAgICAgeyAiZG9jLW5vdGljZSIsIERvY3VtZW50Tm90ZVJv
bGUgfSwKLSAgICAgICAgeyAiZG9jLXBhZ2VicmVhayIsIFNwbGl0dGVyUm9sZSB9LAotICAgICAg
ICB7ICJkb2MtcGFnZWxpc3QiLCBMYW5kbWFya05hdmlnYXRpb25Sb2xlIH0sCi0gICAgICAgIHsg
ImRvYy1wYXJ0IiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1wcmVm
YWNlIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1wcm9sb2d1ZSIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtcHVsbHF1b3RlIiwgQXBw
bGljYXRpb25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1xbmEiLCBBcHBsaWNhdGlv
blRleHRHcm91cFJvbGUgfSwKLSAgICAgICAgeyAiZG9jLXN1YnRpdGxlIiwgSGVhZGluZ1JvbGUg
fSwKLSAgICAgICAgeyAiZG9jLXRpcCIsIERvY3VtZW50Tm90ZVJvbGUgfSwKLSAgICAgICAgeyAi
ZG9jLXRvYyIsIExhbmRtYXJrTmF2aWdhdGlvblJvbGUgfSwKLSAgICAgICAgeyAiZmlndXJlIiwg
RmlndXJlUm9sZSB9LAotICAgICAgICB7ICJncmlkIiwgR3JpZFJvbGUgfSwKLSAgICAgICAgeyAi
Z3JpZGNlbGwiLCBHcmlkQ2VsbFJvbGUgfSwKLSAgICAgICAgeyAidGFibGUiLCBUYWJsZVJvbGUg
fSwKLSAgICAgICAgeyAiY2VsbCIsIENlbGxSb2xlIH0sCi0gICAgICAgIHsgImNvbHVtbmhlYWRl
ciIsIENvbHVtbkhlYWRlclJvbGUgfSwKLSAgICAgICAgeyAiY29tYm9ib3giLCBDb21ib0JveFJv
bGUgfSwKLSAgICAgICAgeyAiZGVmaW5pdGlvbiIsIERlZmluaXRpb25Sb2xlIH0sCi0gICAgICAg
IHsgImRvY3VtZW50IiwgRG9jdW1lbnRSb2xlIH0sCi0gICAgICAgIHsgImZlZWQiLCBGZWVkUm9s
ZSB9LAotICAgICAgICB7ICJmb3JtIiwgRm9ybVJvbGUgfSwKLSAgICAgICAgeyAicm93aGVhZGVy
IiwgUm93SGVhZGVyUm9sZSB9LAotICAgICAgICB7ICJncm91cCIsIEFwcGxpY2F0aW9uR3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgImhlYWRpbmciLCBIZWFkaW5nUm9sZSB9LAotICAgICAgICB7ICJp
bWciLCBJbWFnZVJvbGUgfSwKLSAgICAgICAgeyAibGluayIsIFdlYkNvcmVMaW5rUm9sZSB9LAot
ICAgICAgICB7ICJsaXN0IiwgTGlzdFJvbGUgfSwgICAgICAgIAotICAgICAgICB7ICJsaXN0aXRl
bSIsIExpc3RJdGVtUm9sZSB9LCAgICAgICAgCi0gICAgICAgIHsgImxpc3Rib3giLCBMaXN0Qm94
Um9sZSB9LAotICAgICAgICB7ICJsb2ciLCBBcHBsaWNhdGlvbkxvZ1JvbGUgfSwKLSAgICAgICAg
eyAibWFpbiIsIExhbmRtYXJrTWFpblJvbGUgfSwKLSAgICAgICAgeyAibWFycXVlZSIsIEFwcGxp
Y2F0aW9uTWFycXVlZVJvbGUgfSwKLSAgICAgICAgeyAibWF0aCIsIERvY3VtZW50TWF0aFJvbGUg
fSwKLSAgICAgICAgeyAibWVudSIsIE1lbnVSb2xlIH0sCi0gICAgICAgIHsgIm1lbnViYXIiLCBN
ZW51QmFyUm9sZSB9LAotICAgICAgICB7ICJtZW51aXRlbSIsIE1lbnVJdGVtUm9sZSB9LAotICAg
ICAgICB7ICJtZW51aXRlbWNoZWNrYm94IiwgTWVudUl0ZW1DaGVja2JveFJvbGUgfSwKLSAgICAg
ICAgeyAibWVudWl0ZW1yYWRpbyIsIE1lbnVJdGVtUmFkaW9Sb2xlIH0sCi0gICAgICAgIHsgIm5v
bmUiLCBQcmVzZW50YXRpb25hbFJvbGUgfSwKLSAgICAgICAgeyAibm90ZSIsIERvY3VtZW50Tm90
ZVJvbGUgfSwKLSAgICAgICAgeyAibmF2aWdhdGlvbiIsIExhbmRtYXJrTmF2aWdhdGlvblJvbGUg
fSwKLSAgICAgICAgeyAib3B0aW9uIiwgTGlzdEJveE9wdGlvblJvbGUgfSwKLSAgICAgICAgeyAi
cHJlc2VudGF0aW9uIiwgUHJlc2VudGF0aW9uYWxSb2xlIH0sCi0gICAgICAgIHsgInByb2dyZXNz
YmFyIiwgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCi0gICAgICAgIHsgInJhZGlvIiwgUmFkaW9C
dXR0b25Sb2xlIH0sCi0gICAgICAgIHsgInJhZGlvZ3JvdXAiLCBSYWRpb0dyb3VwUm9sZSB9LAot
ICAgICAgICB7ICJyZWdpb24iLCBMYW5kbWFya1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAicm93
IiwgUm93Um9sZSB9LAotICAgICAgICB7ICJyb3dncm91cCIsIFJvd0dyb3VwUm9sZSB9LAotICAg
ICAgICB7ICJzY3JvbGxiYXIiLCBTY3JvbGxCYXJSb2xlIH0sCi0gICAgICAgIHsgInNlYXJjaCIs
IExhbmRtYXJrU2VhcmNoUm9sZSB9LAotICAgICAgICB7ICJzZWFyY2hib3giLCBTZWFyY2hGaWVs
ZFJvbGUgfSwKLSAgICAgICAgeyAic2VwYXJhdG9yIiwgU3BsaXR0ZXJSb2xlIH0sCi0gICAgICAg
IHsgInNsaWRlciIsIFNsaWRlclJvbGUgfSwKLSAgICAgICAgeyAic3BpbmJ1dHRvbiIsIFNwaW5C
dXR0b25Sb2xlIH0sCi0gICAgICAgIHsgInN0YXR1cyIsIEFwcGxpY2F0aW9uU3RhdHVzUm9sZSB9
LAotICAgICAgICB7ICJzd2l0Y2giLCBTd2l0Y2hSb2xlIH0sCi0gICAgICAgIHsgInRhYiIsIFRh
YlJvbGUgfSwKLSAgICAgICAgeyAidGFibGlzdCIsIFRhYkxpc3RSb2xlIH0sCi0gICAgICAgIHsg
InRhYnBhbmVsIiwgVGFiUGFuZWxSb2xlIH0sCi0gICAgICAgIHsgInRleHQiLCBTdGF0aWNUZXh0
Um9sZSB9LAotICAgICAgICB7ICJ0ZXh0Ym94IiwgVGV4dEFyZWFSb2xlIH0sCi0gICAgICAgIHsg
InRlcm0iLCBUZXJtUm9sZSB9LAotICAgICAgICB7ICJ0aW1lciIsIEFwcGxpY2F0aW9uVGltZXJS
b2xlIH0sCi0gICAgICAgIHsgInRvb2xiYXIiLCBUb29sYmFyUm9sZSB9LAotICAgICAgICB7ICJ0
b29sdGlwIiwgVXNlckludGVyZmFjZVRvb2x0aXBSb2xlIH0sCi0gICAgICAgIHsgInRyZWUiLCBU
cmVlUm9sZSB9LAotICAgICAgICB7ICJ0cmVlZ3JpZCIsIFRyZWVHcmlkUm9sZSB9LAotICAgICAg
ICB7ICJ0cmVlaXRlbSIsIFRyZWVJdGVtUm9sZSB9CisgICAgICAgIHsgImRvYy1hYnN0cmFjdCIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJk
b2MtYWNrbm93bGVkZ21lbnRzIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCisgICAgICAgIHsgImRvYy1hZnRlcndvcmQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWFwcGVuZGl4IiwgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1iYWNrbGluayIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2MtYmlibGlvZW50cnki
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb2dy
YXBoeSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7
ICJkb2MtYmlibGlvcmVmIiwgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAg
ICAgIHsgImRvYy1jaGFwdGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCisgICAgICAgIHsgImRvYy1jb2xvcGhvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY29uY2x1c2lvbiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtY292ZXIiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6SW1hZ2UgfSwKKyAgICAgICAgeyAiZG9jLWNyZWRpdCIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY3JlZGl0
cyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJk
b2MtZGVkaWNhdGlvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9
LAorICAgICAgICB7ICJkb2MtZW5kbm90ZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSB9
LAorICAgICAgICB7ICJkb2MtZW5kbm90ZXMiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtE
b2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWVwaWdyYXBoIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1lcGlsb2d1ZSIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZXJyYXRh
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRv
Yy1leGFtcGxlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisg
ICAgICAgIHsgImRvYy1mb290bm90ZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290bm90ZSB9LAor
ICAgICAgICB7ICJkb2MtZm9yZXdvcmQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NS
ZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWdsb3NzYXJ5IiwgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1nbG9zc3JlZiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2MtaW5kZXgiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCisgICAgICAgIHsgImRvYy1pbnRyb2R1Y3Rp
b24iLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAi
ZG9jLW5vdGVyZWYiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAg
eyAiZG9jLW5vdGljZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKKyAgICAg
ICAgeyAiZG9jLXBhZ2VicmVhayIsIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlciB9LAorICAg
ICAgICB7ICJkb2MtcGFnZWxpc3QiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0
aW9uIH0sCisgICAgICAgIHsgImRvYy1wYXJ0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
RG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wcmVmYWNlIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wcm9sb2d1ZSIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtcHVsbHF1b3Rl
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsg
ImRvYy1xbmEiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAg
ICAgICAgeyAiZG9jLXN1YnRpdGxlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKKyAg
ICAgICAgeyAiZG9jLXRpcCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKKyAg
ICAgICAgeyAiZG9jLXRvYyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24g
fSwKKyAgICAgICAgeyAiZmlndXJlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZSB9LAorICAg
ICAgICB7ICJncmlkIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQgfSwKKyAgICAgICAgeyAiZ3Jp
ZGNlbGwiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGwgfSwKKyAgICAgICAgeyAidGFibGUi
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGUgfSwKKyAgICAgICAgeyAiY2VsbCIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpDZWxsIH0sCisgICAgICAgIHsgImNvbHVtbmhlYWRlciIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpDb2x1bW5IZWFkZXIgfSwKKyAgICAgICAgeyAiY29tYm9ib3giLCBBY2Nlc3NpYmls
aXR5Um9sZTo6Q29tYm9Cb3ggfSwKKyAgICAgICAgeyAiZGVmaW5pdGlvbiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEZWZpbml0aW9uIH0sCisgICAgICAgIHsgImRvY3VtZW50IiwgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50IH0sCisgICAgICAgIHsgImZlZWQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
RmVlZCB9LAorICAgICAgICB7ICJmb3JtIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0gfSwKKyAg
ICAgICAgeyAicm93aGVhZGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB9LAorICAg
ICAgICB7ICJncm91cCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwIH0sCisg
ICAgICAgIHsgImhlYWRpbmciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAorICAgICAg
ICB7ICJpbWciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UgfSwKKyAgICAgICAgeyAibGluayIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJsaXN0IiwgQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3QgfSwKKyAgICAgICAgeyAibGlzdGl0ZW0iLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAibGlzdGJveCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0Qm94IH0sCisgICAgICAgIHsgImxvZyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvbkxvZyB9LAorICAgICAgICB7ICJtYWluIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrTWFpbiB9LAorICAgICAgICB7ICJtYXJxdWVlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uTWFycXVlZSB9LAorICAgICAgICB7ICJtYXRoIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aCB9LAorICAgICAgICB7ICJtZW51IiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUg
fSwKKyAgICAgICAgeyAibWVudWJhciIsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyIH0sCisg
ICAgICAgIHsgIm1lbnVpdGVtIiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtIH0sCisgICAg
ICAgIHsgIm1lbnVpdGVtY2hlY2tib3giLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVj
a2JveCB9LAorICAgICAgICB7ICJtZW51aXRlbXJhZGlvIiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtUmFkaW8gfSwKKyAgICAgICAgeyAibm9uZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVz
ZW50YXRpb25hbCB9LAorICAgICAgICB7ICJub3RlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3Vt
ZW50Tm90ZSB9LAorICAgICAgICB7ICJuYXZpZ2F0aW9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrTmF2aWdhdGlvbiB9LAorICAgICAgICB7ICJvcHRpb24iLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEJveE9wdGlvbiB9LAorICAgICAgICB7ICJwcmVzZW50YXRpb24iLCBBY2Nlc3NpYmls
aXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfSwKKyAgICAgICAgeyAicHJvZ3Jlc3NiYXIiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgfSwKKyAgICAgICAgeyAicmFkaW8iLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gfSwKKyAgICAgICAgeyAicmFkaW9ncm91cCIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwIH0sCisgICAgICAgIHsgInJlZ2lvbiIsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiB9LAorICAgICAgICB7ICJyb3ciLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93IH0sCisgICAgICAgIHsgInJvd2dyb3VwIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OlJvd0dyb3VwIH0sCisgICAgICAgIHsgInNjcm9sbGJhciIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpTY3JvbGxCYXIgfSwKKyAgICAgICAgeyAic2VhcmNoIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrU2VhcmNoIH0sCisgICAgICAgIHsgInNlYXJjaGJveCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpTZWFyY2hGaWVsZCB9LAorICAgICAgICB7ICJzZXBhcmF0b3IiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3BsaXR0ZXIgfSwKKyAgICAgICAgeyAic2xpZGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OlNsaWRlciB9LAorICAgICAgICB7ICJzcGluYnV0dG9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlNw
aW5CdXR0b24gfSwKKyAgICAgICAgeyAic3RhdHVzIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uU3RhdHVzIH0sCisgICAgICAgIHsgInN3aXRjaCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpT
d2l0Y2ggfSwKKyAgICAgICAgeyAidGFiIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYiB9LAorICAg
ICAgICB7ICJ0YWJsaXN0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QgfSwKKyAgICAgICAg
eyAidGFicGFuZWwiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwgfSwKKyAgICAgICAgeyAi
dGV4dCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0IH0sCisgICAgICAgIHsgInRleHRi
b3giLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgfSwKKyAgICAgICAgeyAidGVybSIsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXJtIH0sCisgICAgICAgIHsgInRpbWVyIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uVGltZXIgfSwKKyAgICAgICAgeyAidG9vbGJhciIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpUb29sYmFyIH0sCisgICAgICAgIHsgInRvb2x0aXAiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6VXNlckludGVyZmFjZVRvb2x0aXAgfSwKKyAgICAgICAgeyAidHJlZSIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlIH0sCisgICAgICAgIHsgInRyZWVncmlkIiwgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVHcmlkIH0sCisgICAgICAgIHsgInRyZWVpdGVtIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OlRyZWVJdGVtIH0KICAgICB9OwogCiAgICAgZ0FyaWFSb2xlTWFwID0gbmV3IEFSSUFSb2xlTWFw
OwpAQCAtMjMzNCw3ICsyMzE5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJvbGVNYXAoKQog
ICAgIHNpemVfdCByb2xlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChyb2xlcyk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByb2xlTGVuZ3RoOyArK2kpIHsKICAgICAgICAgZ0FyaWFSb2xl
TWFwLT5zZXQocm9sZXNbaV0uYXJpYVJvbGUsIHJvbGVzW2ldLndlYmNvcmVSb2xlKTsKLSAgICAg
ICAgZ0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0KHJvbGVzW2ldLndlYmNvcmVSb2xlLCByb2xlc1tp
XS5hcmlhUm9sZSk7CisgICAgICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAtPnNldChzdGF0aWNfY2Fz
dDxpbnQ+KHJvbGVzW2ldLndlYmNvcmVSb2xlKSwgcm9sZXNbaV0uYXJpYVJvbGUpOwogICAgIH0K
IH0KIApAQCAtMjM1NCwxMCArMjMzOSwxMSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOwogICAgIGZvciAo
YXV0byByb2xlTmFtZSA6IFN0cmluZ1ZpZXcodmFsdWUpLnNwbGl0KCcgJykpIHsKLSAgICAgICAg
aWYgKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBhcmlhUm9sZU1hcCgpLmdldDxBU0NJSUNhc2VJ
bnNlbnNpdGl2ZVN0cmluZ1ZpZXdIYXNoVHJhbnNsYXRvcj4ocm9sZU5hbWUpKQorICAgICAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVNYXAoKS5nZXQ8QVNDSUlDYXNlSW5zZW5z
aXRpdmVTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I+KHJvbGVOYW1lKTsKKyAgICAgICAgaWYgKHN0
YXRpY19jYXN0PGludD4ocm9sZSkpCiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICB9Ci0g
ICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bjsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkUm9sZVN0cmlu
ZygpIGNvbnN0CkBAIC0yMzY2LDIzICsyMzUyLDIzIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpjb21wdXRlZFJvbGUKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVl
KCk7CiAKICAgICAvLyBXZSBkbyBub3QgY29tcHV0ZSBhIHJvbGUgc3RyaW5nIGZvciBnZW5lcmlj
IGJsb2NrIGVsZW1lbnRzIHdpdGggdXNlci1hZ2VudCBhc3NpZ25lZCByb2xlcy4KLSAgICBpZiAo
cm9sZSA9PSBHcm91cFJvbGUgfHwgcm9sZSA9PSBUZXh0R3JvdXBSb2xlKQorICAgIGlmIChyb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpUZXh0R3JvdXApCiAgICAgICAgIHJldHVybiAiIjsKIAogICAgIC8vIFdlIGRvIGNvbXB1dGUg
YSByb2xlIHN0cmluZyBmb3IgYmxvY2sgZWxlbWVudHMgd2l0aCBhdXRob3ItcHJvdmlkZWQgcm9s
ZXMuCi0gICAgaWYgKHJvbGUgPT0gQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlIHx8IHJvbGUgPT0g
Rm9vdG5vdGVSb2xlKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KEFw
cGxpY2F0aW9uR3JvdXBSb2xlKTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25UZXh0R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5v
dGUpCisgICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8
aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCkpOwogCi0gICAgaWYgKHJv
bGUgPT0gSG9yaXpvbnRhbFJ1bGVSb2xlKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xl
TWFwKCkuZ2V0KFNwbGl0dGVyUm9sZSk7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6Okhvcml6b250YWxSdWxlKQorICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCku
Z2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyKSk7CiAKLSAg
ICBpZiAocm9sZSA9PSBQb3BVcEJ1dHRvblJvbGUgfHwgcm9sZSA9PSBUb2dnbGVCdXR0b25Sb2xl
KQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KEJ1dHRvblJvbGUpOwor
ICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiB8fCByb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b24pCisgICAgICAgIHJldHVybiByZXZlcnNl
QXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0
dG9uKSk7CiAKLSAgICBpZiAocm9sZSA9PSBMYW5kbWFya0RvY1JlZ2lvblJvbGUpCi0gICAgICAg
IHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoTGFuZG1hcmtSZWdpb25Sb2xlKTsKKyAg
ICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24pCisgICAg
ICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24pKTsKIAotICAgIHJldHVybiByZXZlcnNlQXJp
YVJvbGVNYXAoKS5nZXQocm9sZSk7CisgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdl
dChzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpoYXNIaWdobGlnaHRpbmcoKSBjb25zdApAQCAtMjQwOSw3ICsyMzk1LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1ByZXNzQQogewogICAgIGlmIChpc0J1dHRvbigpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gRGV0YWlsc1JvbGUp
CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50ID0gdGhp
cy0+YWN0aW9uRWxlbWVudCgpOwpAQCAtMjQyMiw4ICsyNDA4LDggQEAgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c1ByZXNzQQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHJlc3VsdHM7CiAgICAgICAgICAgICAvLyBTZWFyY2ggd2l0aGluIGZvciBpbW1l
ZGlhdGUgZGVzY2VuZGFudHMgdGhhdCBhcmUgc3RhdGljIHRleHQuIElmIHdlIGZpbmQgbW9yZSB0
aGFuIG9uZQogICAgICAgICAgICAgLy8gdGhlbiB0aGlzIGlzIGFuIGV2ZW50IGRlbGVnYXRvciBh
Y3Rpb25FbGVtZW50IGFuZCB3ZSBzaG91bGQgZXhwb3NlIHRoZSBwcmVzcyBhY3Rpb24uCi0gICAg
ICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4ga2V5cyh7IFN0YXRpY1RleHRT
ZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXksIEdyYXBoaWNTZWFyY2hLZXksIEhlYWRpbmdTZWFy
Y2hLZXksIExpbmtTZWFyY2hLZXkgfSk7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEgY3JpdGVyaWEoYXhPYmosIFNlYXJjaERpcmVjdGlvbk5leHQsIGVtcHR5U3RyaW5n
KCksIDIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNl
YXJjaEtleT4ga2V5cyh7IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlN0YXRpY1RleHQsIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkNvbnRyb2wsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkdyYXBo
aWMsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmcsIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXk6OkxpbmsgfSk7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3Jp
dGVyaWEoYXhPYmosIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQsIGVtcHR5U3Ry
aW5nKCksIDIsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlz
ID0ga2V5czsKICAgICAgICAgICAgIGF4T2JqLT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJp
YSwgcmVzdWx0cyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0cy5zaXplKCkgPiAxKQpAQCAtMjU5
NCwxOCArMjU4MCwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
CiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpzb3J0RGly
ZWN0aW9uKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVl
KCk7Ci0gICAgaWYgKHJvbGUgIT0gUm93SGVhZGVyUm9sZSAmJiByb2xlICE9IENvbHVtbkhlYWRl
clJvbGUpCi0gICAgICAgIHJldHVybiBTb3J0RGlyZWN0aW9uSW52YWxpZDsKKyAgICBpZiAocm9s
ZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkNvbHVtbkhlYWRlcikKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uOjpJbnZhbGlkOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3J0QXR0cmlidXRl
ID0gZ2V0QXR0cmlidXRlKGFyaWFfc29ydEF0dHIpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzb3J0QXR0cmlidXRlLCAiYXNjZW5kaW5nIikpCi0gICAgICAgIHJldHVy
biBTb3J0RGlyZWN0aW9uQXNjZW5kaW5nOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNv
cnREaXJlY3Rpb246OkFzY2VuZGluZzsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoc29ydEF0dHJpYnV0ZSwgImRlc2NlbmRpbmciKSkKLSAgICAgICAgcmV0dXJuIFNvcnRE
aXJlY3Rpb25EZXNjZW5kaW5nOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNvcnREaXJl
Y3Rpb246OkRlc2NlbmRpbmc7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHNvcnRBdHRyaWJ1dGUsICJvdGhlciIpKQotICAgICAgICByZXR1cm4gU29ydERpcmVjdGlvbk90
aGVyOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok90aGVyOwog
ICAgIAotICAgIHJldHVybiBTb3J0RGlyZWN0aW9uTm9uZTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVNvcnREaXJlY3Rpb246Ok5vbmU7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3QKQEAgLTI2OTUsOSArMjY4MSw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNFeHBhbmQKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZXhwYW5kZWQsICJ0cnVlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZXhwYW5kZWQsICJmYWxzZSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBz
d2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBDb21ib0JveFJvbGU6Ci0gICAgY2FzZSBE
aXNjbG9zdXJlVHJpYW5nbGVSb2xlOgotICAgIGNhc2UgRGV0YWlsc1JvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RGlzY2xvc3VyZVRyaWFuZ2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI3MTUsNyArMjcwMSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBh
bmRlZCgpIGMKICAgICAvLyBTdW1tYXJ5IGVsZW1lbnQgc2hvdWxkIHVzZSBpdHMgZGV0YWlscyBw
YXJlbnQncyBleHBhbmRlZCBzdGF0dXMuCiAgICAgaWYgKGlzU3VtbWFyeSgpKSB7CiAgICAgICAg
IGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgewotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9
PSBEZXRhaWxzUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM7CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0
dXJuIHBhcmVudC0+aXNFeHBhbmRlZCgpOwogICAgIH0KQEAgLTI3MjYsMTEgKzI3MTIsMTEgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0V4cGFuZGVkKCkgYwogYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c0NoZWNrZWQoKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZh
bHVlKCkpIHsKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2ti
b3hSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRv
blJvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTd2l0Y2g6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI3NDYsMjcgKzI3MzIsMjcgQEAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0
YXRlIEFjY2Vzc2liaWxpdHlPYgogICAgIGlmIChpc1RvZ2dsZUJ1dHRvbigpKSB7CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYVByZXNzZWQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9wcmVz
c2VkQXR0cik7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlh
UHJlc3NlZCwgInRydWUiKSkKLSAgICAgICAgICAgIHJldHVybiBCdXR0b25TdGF0ZU9uOworICAg
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T247CiAgICAgICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhUHJlc3NlZCwgIm1peGVkIikpCi0g
ICAgICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVNaXhlZDsKLSAgICAgICAgcmV0dXJuIEJ1dHRv
blN0YXRlT2ZmOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6
TWl4ZWQ7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjsKICAg
ICB9CiAgICAgCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZXN1bHQgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9jaGVja2VkQXR0cik7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHJlc3VsdCwgInRydWUiKSkKLSAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT247CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9uOwogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN1bHQsICJtaXhlZCIpKSB7CiAgICAgICAgIC8vIEFSSUEg
c2F5cyB0aGF0IHJhZGlvLCBtZW51aXRlbXJhZGlvLCBhbmQgc3dpdGNoIGVsZW1lbnRzIG11c3Qg
Tk9UIGV4cG9zZSBidXR0b24gc3RhdGUgbWl4ZWQuCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xl
IGFyaWFSb2xlID0gYXJpYVJvbGVBdHRyaWJ1dGUoKTsKLSAgICAgICAgaWYgKGFyaWFSb2xlID09
IFJhZGlvQnV0dG9uUm9sZSB8fCBhcmlhUm9sZSA9PSBNZW51SXRlbVJhZGlvUm9sZSB8fCBhcmlh
Um9sZSA9PSBTd2l0Y2hSb2xlKQotICAgICAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOwot
ICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVNaXhlZDsKKyAgICAgICAgaWYgKGFyaWFSb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbiB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6TWVudUl0ZW1SYWRpbyB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3dpdGNoKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2Zm
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpNaXhlZDsKICAgICB9
CiAgICAgCiAgICAgaWYgKGlzSW5kZXRlcm1pbmF0ZSgpKQotICAgICAgICByZXR1cm4gQnV0dG9u
U3RhdGVNaXhlZDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4
ZWQ7CiAgICAgCi0gICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjsKIH0KIAogLy8gVGhpcyBpcyBhIDEtZGltZW5zaW9uYWwg
c2Nyb2xsIG9mZnNldCBoZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGFwcGxpZWQKQEAgLTMwNjUsMzQg
KzMwNTEsMzIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxCeVBhZ2UoUwogICAg
IEludFNpemUgc2Nyb2xsU2l6ZSA9IHNjcm9sbGFibGVBcmVhLT5jb250ZW50c1NpemUoKTsKICAg
ICBJbnRSZWN0IHNjcm9sbFZpc2libGVSZWN0ID0gc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVDb250
ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7CiAg
ICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFJpZ2h0OiB7CisgICAgY2FzZSBTY3Jv
bGxCeVBhZ2VEaXJlY3Rpb246OlJpZ2h0OiB7CiAgICAgICAgIGludCBzY3JvbGxBbW91bnQgPSBz
Y3JvbGxWaXNpYmxlUmVjdC5zaXplKCkud2lkdGgoKTsKICAgICAgICAgaW50IG5ld1ggPSBzY3Jv
bGxQb3NpdGlvbi54KCkgLSBzY3JvbGxBbW91bnQ7CiAgICAgICAgIG5ld1Njcm9sbFBvc2l0aW9u
LnNldFgoc3RkOjptYXgobmV3WCwgMCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fz
ZSBMZWZ0OiB7CisgICAgY2FzZSBTY3JvbGxCeVBhZ2VEaXJlY3Rpb246OkxlZnQ6IHsKICAgICAg
ICAgaW50IHNjcm9sbEFtb3VudCA9IHNjcm9sbFZpc2libGVSZWN0LnNpemUoKS53aWR0aCgpOwog
ICAgICAgICBpbnQgbmV3WCA9IHNjcm9sbEFtb3VudCArIHNjcm9sbFBvc2l0aW9uLngoKTsKICAg
ICAgICAgaW50IG1heFggPSBzY3JvbGxTaXplLndpZHRoKCkgLSBzY3JvbGxBbW91bnQ7CiAgICAg
ICAgIG5ld1Njcm9sbFBvc2l0aW9uLnNldFgoc3RkOjptaW4obmV3WCwgbWF4WCkpOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBVcDogeworICAgIGNhc2UgU2Nyb2xsQnlQYWdlRGly
ZWN0aW9uOjpVcDogewogICAgICAgICBpbnQgc2Nyb2xsQW1vdW50ID0gc2Nyb2xsVmlzaWJsZVJl
Y3Quc2l6ZSgpLmhlaWdodCgpOwogICAgICAgICBpbnQgbmV3WSA9IHNjcm9sbFBvc2l0aW9uLnko
KSAtIHNjcm9sbEFtb3VudDsKICAgICAgICAgbmV3U2Nyb2xsUG9zaXRpb24uc2V0WShzdGQ6Om1h
eChuZXdZLCAwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIERvd246IHsKKyAg
ICBjYXNlIFNjcm9sbEJ5UGFnZURpcmVjdGlvbjo6RG93bjogewogICAgICAgICBpbnQgc2Nyb2xs
QW1vdW50ID0gc2Nyb2xsVmlzaWJsZVJlY3Quc2l6ZSgpLmhlaWdodCgpOwogICAgICAgICBpbnQg
bmV3WSA9IHNjcm9sbEFtb3VudCArIHNjcm9sbFBvc2l0aW9uLnkoKTsKICAgICAgICAgaW50IG1h
eFkgPSBzY3JvbGxTaXplLmhlaWdodCgpIC0gc2Nyb2xsQW1vdW50OwogICAgICAgICBuZXdTY3Jv
bGxQb3NpdGlvbi5zZXRZKHN0ZDo6bWluKG5ld1ksIG1heFkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBpZiAo
bmV3U2Nyb2xsUG9zaXRpb24gIT0gc2Nyb2xsUG9zaXRpb24pIHsKQEAgLTMxMDcsMTUgKzMwOTEs
MTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxCeVBhZ2UoUwogCiBib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkKIHsKLSAgICBpZiAo
bV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9PSBEZWZhdWx0QmVoYXZpb3IpCi0gICAgICAgIG1f
bGFzdEtub3duSXNJZ25vcmVkVmFsdWUgPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgPyBJZ25v
cmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworICAgIGlmIChtX2xhc3RLbm93bklzSWdub3JlZFZh
bHVlID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcikKKyAg
ICAgICAgbV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSA/IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3Q7CiAKLSAgICByZXR1cm4gbV9sYXN0
S25vd25Jc0lnbm9yZWRWYWx1ZSA9PSBJZ25vcmVPYmplY3Q7CisgICAgcmV0dXJuIG1fbGFzdEtu
b3duSXNJZ25vcmVkVmFsdWUgPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RLbm93bklzSWdu
b3JlZFZhbHVlKGJvb2wgaXNJZ25vcmVkKQogewotICAgIG1fbGFzdEtub3duSXNJZ25vcmVkVmFs
dWUgPSBpc0lnbm9yZWQgPyBJZ25vcmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworICAgIG1fbGFz
dEtub3duSXNJZ25vcmVkVmFsdWUgPSBpc0lnbm9yZWQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNs
dWRlT2JqZWN0OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdub3Jl
ZFZhbHVlQ2hhbmdlZCgpCkBAIC0zMTUxLDI1ICszMTM1LDI1IEBAIEFjY2Vzc2liaWxpdHlSb2xl
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmIKICAgICAvLyBJZiBhcmlhLXByZXNzZWQgaXMgcHJlc2Vu
dCwgdGhlbiBpdCBzaG91bGQgYmUgZXhwb3NlZCBhcyBhIHRvZ2dsZSBidXR0b24uCiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvc3RhdGVzX2FuZF9wcm9wZXJ0aWVzI2FyaWEt
cHJlc3NlZAogICAgIGlmIChhcmlhUHJlc3NlZElzUHJlc2VudCgpKQotICAgICAgICByZXR1cm4g
VG9nZ2xlQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dn
bGVCdXR0b247CiAgICAgaWYgKGFyaWFIYXNQb3B1cCgpKQotICAgICAgICByZXR1cm4gUG9wVXBC
dXR0b25Sb2xlOwotICAgIC8vIFdlIGRvbid0IGNvbnRlbXBsYXRlIFJhZGlvQnV0dG9uUm9sZSwg
YXMgaXQgZGVwZW5kcyBvbiB0aGUgaW5wdXQKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbjsKKyAgICAvLyBXZSBkb24ndCBjb250ZW1wbGF0ZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UmFkaW9CdXR0b24sIGFzIGl0IGRlcGVuZHMgb24gdGhlIGlucHV0CiAgICAgLy8g
dHlwZS4KIAotICAgIHJldHVybiBCdXR0b25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6QnV0dG9uOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQnV0dG9uKCkg
Y29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVlKCk7CiAKLSAg
ICByZXR1cm4gcm9sZSA9PSBCdXR0b25Sb2xlIHx8IHJvbGUgPT0gUG9wVXBCdXR0b25Sb2xlIHx8
IHJvbGUgPT0gVG9nZ2xlQnV0dG9uUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6QnV0dG9uIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjsKIH0KIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpID09IElnbm9yZU9iamVj
dDsKKyAgICByZXR1cm4gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpID09IEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKIH0KIAogLy8gQVJJQSBjb21wb25lbnQgb2Yg
aGlkZGVuIGRlZmluaXRpb24uCkBAIC0zMjEyLDEzICszMTk2LDEzIEBAIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGkKICAgICBib29sIHVzZVBhcmVudERhdGEgPSAhbV9p
c0lnbm9yZWRGcm9tUGFyZW50RGF0YS5pc051bGwoKTsKICAgICAKICAgICBpZiAodXNlUGFyZW50
RGF0YSA/IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEuaXNBUklBSGlkZGVuIDogaXNBUklBSGlk
ZGVuKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAgCiAgICAgaWYgKGln
bm9yZWRGcm9tQVJJQU1vZGFsUHJlc2VuY2UoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVj
dDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9i
amVjdDsKICAgICAKICAgICBpZiAodXNlUGFyZW50RGF0YSA/IG1faXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEuaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSA6IGlzUHJlc2VudGF0aW9uYWxD
aGlsZE9mQXJpYVJvbGUoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAK
ICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKTsKIH0KQEAg
LTMyMzMsMTEgKzMyMTcsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5SQogICAgIGlmIChhdHRyaWJ1dGVDYWNoZSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGlnbm9yZWQgPSBhdHRyaWJ1dGVDYWNoZS0+Z2V0SWdub3JlZChheE9iamVj
dElEKCkpOwogICAgICAgICBzd2l0Y2ggKGlnbm9yZWQpIHsKLSAgICAgICAgY2FzZSBJZ25vcmVP
YmplY3Q6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgSW5jbHVkZU9i
amVjdDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRl
T2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIERlZmF1bHRC
ZWhhdmlvcjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZh
dWx0QmVoYXZpb3I6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTMy
NDYsNyArMzIzMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUkK
IAogICAgIC8vIEluIGNhc2UgY29tcHV0aW5nIGF4SXNJZ25vcmVkIGRpc2FibGVzIGF0dHJpYnV0
ZSBjYWNoaW5nLCB3ZSBzaG91bGQgcmVmZXRjaCB0aGUgb2JqZWN0IHRvIHNlZSBpZiBpdCBleGlz
dHMuCiAgICAgaWYgKGNhY2hlICYmIChhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9i
amVjdEF0dHJpYnV0ZUNhY2hlKCkpKQotICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3Jl
ZChheE9iamVjdElEKCksIHJlc3VsdCA/IElnbm9yZU9iamVjdCA6IEluY2x1ZGVPYmplY3QpOwor
ICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChheE9iamVjdElEKCksIHJlc3VsdCA/
IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTMzNjksNyArMzM1Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250
YWluZWRCeVAKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IG5vZGUtPnNoYWRvd0hvc3QoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTg3ICs5Miwx
ODcgQEAgY2xhc3MgV2lkZ2V0OwogCiB0eXBlZGVmIHVuc2lnbmVkIEFYSUQ7CiAKLWVudW0gQWNj
ZXNzaWJpbGl0eVJvbGUgewotICAgIEFubm90YXRpb25Sb2xlID0gMSwKLSAgICBBcHBsaWNhdGlv
blJvbGUsCi0gICAgQXBwbGljYXRpb25BbGVydFJvbGUsCi0gICAgQXBwbGljYXRpb25BbGVydERp
YWxvZ1JvbGUsCi0gICAgQXBwbGljYXRpb25EaWFsb2dSb2xlLAotICAgIEFwcGxpY2F0aW9uR3Jv
dXBSb2xlLAotICAgIEFwcGxpY2F0aW9uTG9nUm9sZSwKLSAgICBBcHBsaWNhdGlvbk1hcnF1ZWVS
b2xlLAotICAgIEFwcGxpY2F0aW9uU3RhdHVzUm9sZSwKLSAgICBBcHBsaWNhdGlvblRleHRHcm91
cFJvbGUsCi0gICAgQXBwbGljYXRpb25UaW1lclJvbGUsCi0gICAgQXVkaW9Sb2xlLAotICAgIEJs
b2NrcXVvdGVSb2xlLAotICAgIEJyb3dzZXJSb2xlLAotICAgIEJ1c3lJbmRpY2F0b3JSb2xlLAot
ICAgIEJ1dHRvblJvbGUsCi0gICAgQ2FudmFzUm9sZSwKLSAgICBDYXB0aW9uUm9sZSwKLSAgICBD
ZWxsUm9sZSwgCi0gICAgQ2hlY2tCb3hSb2xlLAotICAgIENvbG9yV2VsbFJvbGUsCi0gICAgQ29s
dW1uUm9sZSwKLSAgICBDb2x1bW5IZWFkZXJSb2xlLAotICAgIENvbWJvQm94Um9sZSwKLSAgICBE
ZWZpbml0aW9uUm9sZSwKLSAgICBEZXNjcmlwdGlvbkxpc3RSb2xlLAotICAgIERlc2NyaXB0aW9u
TGlzdFRlcm1Sb2xlLAotICAgIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGUsCi0gICAgRGV0YWls
c1JvbGUsCi0gICAgRGlyZWN0b3J5Um9sZSwKLSAgICBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLAot
ICAgIERpdlJvbGUsCi0gICAgRG9jdW1lbnRSb2xlLAotICAgIERvY3VtZW50QXJ0aWNsZVJvbGUs
Ci0gICAgRG9jdW1lbnRNYXRoUm9sZSwKLSAgICBEb2N1bWVudE5vdGVSb2xlLAotICAgIERyYXdl
clJvbGUsCi0gICAgRWRpdGFibGVUZXh0Um9sZSwKLSAgICBGZWVkUm9sZSwKLSAgICBGaWd1cmVS
b2xlLAotICAgIEZvb3RlclJvbGUsCi0gICAgRm9vdG5vdGVSb2xlLAotICAgIEZvcm1Sb2xlLAot
ICAgIEdyaWRSb2xlLAotICAgIEdyaWRDZWxsUm9sZSwKLSAgICBHcm91cFJvbGUsCi0gICAgR3Jv
d0FyZWFSb2xlLAotICAgIEhlYWRpbmdSb2xlLAotICAgIEhlbHBUYWdSb2xlLAotICAgIEhvcml6
b250YWxSdWxlUm9sZSwKLSAgICBJZ25vcmVkUm9sZSwKLSAgICBJbmxpbmVSb2xlLAotICAgIElt
YWdlUm9sZSwKLSAgICBJbWFnZU1hcFJvbGUsCi0gICAgSW1hZ2VNYXBMaW5rUm9sZSwKLSAgICBJ
bmNyZW1lbnRvclJvbGUsCi0gICAgTGFiZWxSb2xlLAotICAgIExhbmRtYXJrQmFubmVyUm9sZSwK
LSAgICBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlLAotICAgIExhbmRtYXJrQ29udGVudEluZm9S
b2xlLAotICAgIExhbmRtYXJrRG9jUmVnaW9uUm9sZSwKLSAgICBMYW5kbWFya01haW5Sb2xlLAot
ICAgIExhbmRtYXJrTmF2aWdhdGlvblJvbGUsCi0gICAgTGFuZG1hcmtSZWdpb25Sb2xlLAotICAg
IExhbmRtYXJrU2VhcmNoUm9sZSwKLSAgICBMZWdlbmRSb2xlLAotICAgIExpbmtSb2xlLAotICAg
IExpc3RSb2xlLAotICAgIExpc3RCb3hSb2xlLAotICAgIExpc3RCb3hPcHRpb25Sb2xlLAotICAg
IExpc3RJdGVtUm9sZSwKLSAgICBMaXN0TWFya2VyUm9sZSwKLSAgICBNYXJrUm9sZSwKLSAgICBN
YXRoRWxlbWVudFJvbGUsCi0gICAgTWF0dGVSb2xlLAotICAgIE1lbnVSb2xlLAotICAgIE1lbnVC
YXJSb2xlLAotICAgIE1lbnVCdXR0b25Sb2xlLAotICAgIE1lbnVJdGVtUm9sZSwKLSAgICBNZW51
SXRlbUNoZWNrYm94Um9sZSwKLSAgICBNZW51SXRlbVJhZGlvUm9sZSwKLSAgICBNZW51TGlzdFBv
cHVwUm9sZSwKLSAgICBNZW51TGlzdE9wdGlvblJvbGUsCi0gICAgT3V0bGluZVJvbGUsCi0gICAg
UGFyYWdyYXBoUm9sZSwKLSAgICBQb3BVcEJ1dHRvblJvbGUsCi0gICAgUHJlUm9sZSwKLSAgICBQ
cmVzZW50YXRpb25hbFJvbGUsCi0gICAgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlLAotICAgIFJhZGlv
QnV0dG9uUm9sZSwKLSAgICBSYWRpb0dyb3VwUm9sZSwKLSAgICBSb3dIZWFkZXJSb2xlLAotICAg
IFJvd1JvbGUsCi0gICAgUm93R3JvdXBSb2xlLAotICAgIFJ1YnlCYXNlUm9sZSwKLSAgICBSdWJ5
QmxvY2tSb2xlLAotICAgIFJ1YnlJbmxpbmVSb2xlLAotICAgIFJ1YnlSdW5Sb2xlLAotICAgIFJ1
YnlUZXh0Um9sZSwKLSAgICBSdWxlclJvbGUsCi0gICAgUnVsZXJNYXJrZXJSb2xlLAotICAgIFNj
cm9sbEFyZWFSb2xlLAotICAgIFNjcm9sbEJhclJvbGUsCi0gICAgU2VhcmNoRmllbGRSb2xlLAot
ICAgIFNoZWV0Um9sZSwKLSAgICBTbGlkZXJSb2xlLAotICAgIFNsaWRlclRodW1iUm9sZSwKLSAg
ICBTcGluQnV0dG9uUm9sZSwKLSAgICBTcGluQnV0dG9uUGFydFJvbGUsCi0gICAgU3BsaXRHcm91
cFJvbGUsCi0gICAgU3BsaXR0ZXJSb2xlLAotICAgIFN0YXRpY1RleHRSb2xlLAotICAgIFN1bW1h
cnlSb2xlLAotICAgIFN3aXRjaFJvbGUsCi0gICAgU3lzdGVtV2lkZVJvbGUsCi0gICAgU1ZHUm9v
dFJvbGUsCi0gICAgU1ZHVGV4dFJvbGUsCi0gICAgU1ZHVFNwYW5Sb2xlLAotICAgIFNWR1RleHRQ
YXRoUm9sZSwKLSAgICBUYWJHcm91cFJvbGUsCi0gICAgVGFiTGlzdFJvbGUsCi0gICAgVGFiUGFu
ZWxSb2xlLCAgICAgICAgICAgIAotICAgIFRhYlJvbGUsCi0gICAgVGFibGVSb2xlLAotICAgIFRh
YmxlSGVhZGVyQ29udGFpbmVyUm9sZSwKLSAgICBUZXh0QXJlYVJvbGUsCi0gICAgVGV4dEdyb3Vw
Um9sZSwKLSAgICBUZXJtUm9sZSwKLSAgICBUaW1lUm9sZSwKLSAgICBUcmVlUm9sZSwKLSAgICBU
cmVlR3JpZFJvbGUsCi0gICAgVHJlZUl0ZW1Sb2xlLAotICAgIFRleHRGaWVsZFJvbGUsCi0gICAg
VG9nZ2xlQnV0dG9uUm9sZSwKLSAgICBUb29sYmFyUm9sZSwKLSAgICBVbmtub3duUm9sZSwKLSAg
ICBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGUsCi0gICAgVmFsdWVJbmRpY2F0b3JSb2xlLAotICAg
IFZpZGVvUm9sZSwKLSAgICBXZWJBcHBsaWNhdGlvblJvbGUsCi0gICAgV2ViQXJlYVJvbGUsCi0g
ICAgV2ViQ29yZUxpbmtSb2xlLAotICAgIFdpbmRvd1JvbGUsCitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlSb2xlIHsKKyAgICBBbm5vdGF0aW9uID0gMSwKKyAgICBBcHBsaWNhdGlvbiwKKyAgICBB
cHBsaWNhdGlvbkFsZXJ0LAorICAgIEFwcGxpY2F0aW9uQWxlcnREaWFsb2csCisgICAgQXBwbGlj
YXRpb25EaWFsb2csCisgICAgQXBwbGljYXRpb25Hcm91cCwKKyAgICBBcHBsaWNhdGlvbkxvZywK
KyAgICBBcHBsaWNhdGlvbk1hcnF1ZWUsCisgICAgQXBwbGljYXRpb25TdGF0dXMsCisgICAgQXBw
bGljYXRpb25UZXh0R3JvdXAsCisgICAgQXBwbGljYXRpb25UaW1lciwKKyAgICBBdWRpbywKKyAg
ICBCbG9ja3F1b3RlLAorICAgIEJyb3dzZXIsCisgICAgQnVzeUluZGljYXRvciwKKyAgICBCdXR0
b24sCisgICAgQ2FudmFzLAorICAgIENhcHRpb24sCisgICAgQ2VsbCwKKyAgICBDaGVja0JveCwK
KyAgICBDb2xvcldlbGwsCisgICAgQ29sdW1uLAorICAgIENvbHVtbkhlYWRlciwKKyAgICBDb21i
b0JveCwKKyAgICBEZWZpbml0aW9uLAorICAgIERlc2NyaXB0aW9uTGlzdCwKKyAgICBEZXNjcmlw
dGlvbkxpc3RUZXJtLAorICAgIERlc2NyaXB0aW9uTGlzdERldGFpbCwKKyAgICBEZXRhaWxzLAor
ICAgIERpcmVjdG9yeSwKKyAgICBEaXNjbG9zdXJlVHJpYW5nbGUsCisgICAgRGl2LAorICAgIERv
Y3VtZW50LAorICAgIERvY3VtZW50QXJ0aWNsZSwKKyAgICBEb2N1bWVudE1hdGgsCisgICAgRG9j
dW1lbnROb3RlLAorICAgIERyYXdlciwKKyAgICBFZGl0YWJsZVRleHQsCisgICAgRmVlZCwKKyAg
ICBGaWd1cmUsCisgICAgRm9vdGVyLAorICAgIEZvb3Rub3RlLAorICAgIEZvcm0sCisgICAgR3Jp
ZCwKKyAgICBHcmlkQ2VsbCwKKyAgICBHcm91cCwKKyAgICBHcm93QXJlYSwKKyAgICBIZWFkaW5n
LAorICAgIEhlbHBUYWcsCisgICAgSG9yaXpvbnRhbFJ1bGUsCisgICAgSWdub3JlZCwKKyAgICBJ
bmxpbmUsCisgICAgSW1hZ2UsCisgICAgSW1hZ2VNYXAsCisgICAgSW1hZ2VNYXBMaW5rLAorICAg
IEluY3JlbWVudG9yLAorICAgIExhYmVsLAorICAgIExhbmRtYXJrQmFubmVyLAorICAgIExhbmRt
YXJrQ29tcGxlbWVudGFyeSwKKyAgICBMYW5kbWFya0NvbnRlbnRJbmZvLAorICAgIExhbmRtYXJr
RG9jUmVnaW9uLAorICAgIExhbmRtYXJrTWFpbiwKKyAgICBMYW5kbWFya05hdmlnYXRpb24sCisg
ICAgTGFuZG1hcmtSZWdpb24sCisgICAgTGFuZG1hcmtTZWFyY2gsCisgICAgTGVnZW5kLAorICAg
IExpbmssCisgICAgTGlzdCwKKyAgICBMaXN0Qm94LAorICAgIExpc3RCb3hPcHRpb24sCisgICAg
TGlzdEl0ZW0sCisgICAgTGlzdE1hcmtlciwKKyAgICBNYXJrLAorICAgIE1hdGhFbGVtZW50LAor
ICAgIE1hdHRlLAorICAgIE1lbnUsCisgICAgTWVudUJhciwKKyAgICBNZW51QnV0dG9uLAorICAg
IE1lbnVJdGVtLAorICAgIE1lbnVJdGVtQ2hlY2tib3gsCisgICAgTWVudUl0ZW1SYWRpbywKKyAg
ICBNZW51TGlzdFBvcHVwLAorICAgIE1lbnVMaXN0T3B0aW9uLAorICAgIE91dGxpbmUsCisgICAg
UGFyYWdyYXBoLAorICAgIFBvcFVwQnV0dG9uLAorICAgIFByZSwKKyAgICBQcmVzZW50YXRpb25h
bCwKKyAgICBQcm9ncmVzc0luZGljYXRvciwKKyAgICBSYWRpb0J1dHRvbiwKKyAgICBSYWRpb0dy
b3VwLAorICAgIFJvd0hlYWRlciwKKyAgICBSb3csCisgICAgUm93R3JvdXAsCisgICAgUnVieUJh
c2UsCisgICAgUnVieUJsb2NrLAorICAgIFJ1YnlJbmxpbmUsCisgICAgUnVieVJ1biwKKyAgICBS
dWJ5VGV4dCwKKyAgICBSdWxlciwKKyAgICBSdWxlck1hcmtlciwKKyAgICBTY3JvbGxBcmVhLAor
ICAgIFNjcm9sbEJhciwKKyAgICBTZWFyY2hGaWVsZCwKKyAgICBTaGVldCwKKyAgICBTbGlkZXIs
CisgICAgU2xpZGVyVGh1bWIsCisgICAgU3BpbkJ1dHRvbiwKKyAgICBTcGluQnV0dG9uUGFydCwK
KyAgICBTcGxpdEdyb3VwLAorICAgIFNwbGl0dGVyLAorICAgIFN0YXRpY1RleHQsCisgICAgU3Vt
bWFyeSwKKyAgICBTd2l0Y2gsCisgICAgU3lzdGVtV2lkZSwKKyAgICBTVkdSb290LAorICAgIFNW
R1RleHQsCisgICAgU1ZHVFNwYW4sCisgICAgU1ZHVGV4dFBhdGgsCisgICAgVGFiR3JvdXAsCisg
ICAgVGFiTGlzdCwKKyAgICBUYWJQYW5lbCwKKyAgICBUYWIsCisgICAgVGFibGUsCisgICAgVGFi
bGVIZWFkZXJDb250YWluZXIsCisgICAgVGV4dEFyZWEsCisgICAgVGV4dEdyb3VwLAorICAgIFRl
cm0sCisgICAgVGltZSwKKyAgICBUcmVlLAorICAgIFRyZWVHcmlkLAorICAgIFRyZWVJdGVtLAor
ICAgIFRleHRGaWVsZCwKKyAgICBUb2dnbGVCdXR0b24sCisgICAgVG9vbGJhciwKKyAgICBVbmtu
b3duLAorICAgIFVzZXJJbnRlcmZhY2VUb29sdGlwLAorICAgIFZhbHVlSW5kaWNhdG9yLAorICAg
IFZpZGVvLAorICAgIFdlYkFwcGxpY2F0aW9uLAorICAgIFdlYkFyZWEsCisgICAgV2ViQ29yZUxp
bmssCisgICAgV2luZG93LAogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7Ci0g
ICAgQWx0ZXJuYXRpdmVUZXh0LAotICAgIENoaWxkcmVuVGV4dCwKLSAgICBTdW1tYXJ5VGV4dCwK
LSAgICBIZWxwVGV4dCwKLSAgICBWaXNpYmxlVGV4dCwKLSAgICBUaXRsZVRhZ1RleHQsCi0gICAg
UGxhY2Vob2xkZXJUZXh0LAotICAgIExhYmVsQnlFbGVtZW50VGV4dCwKLSAgICBUaXRsZVRleHQs
Ci0gICAgU3VidGl0bGVUZXh0LAotICAgIEFjdGlvblRleHQsCitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlIHsKKyAgICBBbHRlcm5hdGl2ZSwKKyAgICBDaGlsZHJlbiwKKyAgICBT
dW1tYXJ5LAorICAgIEhlbHAsCisgICAgVmlzaWJsZSwKKyAgICBUaXRsZVRhZywKKyAgICBQbGFj
ZWhvbGRlciwKKyAgICBMYWJlbEJ5RWxlbWVudCwKKyAgICBUaXRsZSwKKyAgICBTdWJ0aXRsZSwK
KyAgICBBY3Rpb24sCiB9OwogICAgIAogc3RydWN0IEFjY2Vzc2liaWxpdHlUZXh0IHsKICAgICBT
dHJpbmcgdGV4dDsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB0ZXh0U291cmNlOwotICAg
IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IHRleHRFbGVtZW50czsKKyAgICBW
ZWN0b3I8UmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiB0ZXh0RWxlbWVudHM7CiAgICAgCiAgICAg
QWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZSYgcykKLSAgICA6IHRleHQodCkKLSAgICAsIHRleHRTb3VyY2UocykKKyAgICAgICAg
OiB0ZXh0KHQpCisgICAgICAgICwgdGV4dFNvdXJjZShzKQogICAgIHsgfQogCi0gICAgQWNjZXNz
aWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZSYgcywgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gZWxlbWVudHMpCi0gICAg
OiB0ZXh0KHQpCi0gICAgLCB0ZXh0U291cmNlKHMpCi0gICAgLCB0ZXh0RWxlbWVudHMoV1RGTW92
ZShlbGVtZW50cykpCisgICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25z
dCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSYgcywgVmVjdG9yPFJlZjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Pj4gZWxlbWVudHMpCisgICAgICAgIDogdGV4dCh0KQorICAgICAgICAsIHRleHRTb3VyY2Uo
cykKKyAgICAgICAgLCB0ZXh0RWxlbWVudHMoV1RGTW92ZShlbGVtZW50cykpCiAgICAgeyB9CiAK
LSAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxp
dHlUZXh0U291cmNlJiBzLCBjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gZWxlbWVu
dCkKLSAgICA6IHRleHQodCkKLSAgICAsIHRleHRTb3VyY2UocykKKyAgICBBY2Nlc3NpYmlsaXR5
VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlJiBzLCBS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mJiBlbGVtZW50KQorICAgICAgICA6IHRleHQodCkKKyAg
ICAgICAgLCB0ZXh0U291cmNlKHMpCiAgICAgewotICAgICAgICB0ZXh0RWxlbWVudHMuYXBwZW5k
KGVsZW1lbnQpOworICAgICAgICB0ZXh0RWxlbWVudHMuYXBwZW5kKFdURk1vdmUoZWxlbWVudCkp
OwogICAgIH0KIH07CiAKQEAgLTI5Nyw5OCArMjk3LDk1IEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5
VGV4dFVuZGVyRWxlbWVudE1vZGUKIC8vIFVzZSB0aGlzIHN0cnVjdCB0byBzdG9yZSB0aGUgaXNJ
Z25vcmVkIGRhdGEgdGhhdCBkZXBlbmRzIG9uIHRoZSBwYXJlbnRzLCBzbyB0aGF0IGluIGFkZENo
aWxkcmVuKCkKIC8vIHdlIGF2b2lkIGdvaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4gZm9yIGVhY2gg
ZWxlbWVudCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB0cmVlIHdpdGggdXNlZnVsIGluZm9ybWF0aW9u
IGFscmVhZHkuCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhIHsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQ7Ci0gICAgYm9vbCBpc0FSSUFIaWRkZW47
Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlOwotICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQ7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
IHsgbnVsbHB0ciB9OworICAgIGJvb2wgaXNBUklBSGlkZGVuIHsgZmFsc2UgfTsKKyAgICBib29s
IGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUgeyBmYWxzZSB9OworICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQgeyBmYWxzZSB9OwogICAgIAogICAgIEFjY2Vzc2liaWxp
dHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBu
dWxscHRyKQogICAgICAgICA6IHBhcmVudChwYXJlbnQpCi0gICAgICAgICwgaXNBUklBSGlkZGVu
KGZhbHNlKQotICAgICAgICAsIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoZmFsc2Up
Ci0gICAgICAgICwgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoZmFsc2UpCi0gICAgICAgIHsg
fQotICAgIAorICAgIHsgfQorCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFy
ZW50OyB9CiB9OwogICAgIAotZW51bSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewotICAgIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsLAotICAgIEFjY2Vzc2liaWxpdHlPcmllbnRh
dGlvbkhvcml6b250YWwsCi0gICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVkLAor
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24geworICAgIFZlcnRpY2FsLAorICAg
IEhvcml6b250YWwsCisgICAgVW5kZWZpbmVkLAogfTsKICAgICAKLWVudW0gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiB7CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b24gewogICAgIEluY2x1ZGVPYmplY3QsCiAgICAgSWdub3JlT2JqZWN0LAogICAgIERlZmF1bHRC
ZWhhdmlvciwKIH07CiAgICAgCi1lbnVtIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7Ci0gICAg
QnV0dG9uU3RhdGVPZmYgPSAwLAotICAgIEJ1dHRvblN0YXRlT24sIAotICAgIEJ1dHRvblN0YXRl
TWl4ZWQsCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7CisgICAgT2ZmID0g
MCwKKyAgICBPbiwKKyAgICBNaXhlZCwKIH07CiAgICAgCi1lbnVtIEFjY2Vzc2liaWxpdHlTb3J0
RGlyZWN0aW9uIHsKLSAgICBTb3J0RGlyZWN0aW9uTm9uZSwKLSAgICBTb3J0RGlyZWN0aW9uQXNj
ZW5kaW5nLAotICAgIFNvcnREaXJlY3Rpb25EZXNjZW5kaW5nLAotICAgIFNvcnREaXJlY3Rpb25P
dGhlciwKLSAgICBTb3J0RGlyZWN0aW9uSW52YWxpZAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
U29ydERpcmVjdGlvbiB7CisgICAgTm9uZSwKKyAgICBBc2NlbmRpbmcsCisgICAgRGVzY2VuZGlu
ZywKKyAgICBPdGhlciwKKyAgICBJbnZhbGlkLAogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5U2Vh
cmNoRGlyZWN0aW9uIHsKLSAgICBTZWFyY2hEaXJlY3Rpb25OZXh0ID0gMSwKLSAgICBTZWFyY2hE
aXJlY3Rpb25QcmV2aW91cworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9u
IHsKKyAgICBOZXh0ID0gMSwKKyAgICBQcmV2aW91cywKIH07CiAKLWVudW0gQWNjZXNzaWJpbGl0
eVNlYXJjaEtleSB7Ci0gICAgQW55VHlwZVNlYXJjaEtleSA9IDEsCi0gICAgQXJ0aWNsZVNlYXJj
aEtleSwKLSAgICBCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LAotICAgIEJsb2NrcXVvdGVT
ZWFyY2hLZXksCi0gICAgQm9sZEZvbnRTZWFyY2hLZXksCi0gICAgQnV0dG9uU2VhcmNoS2V5LAot
ICAgIENoZWNrQm94U2VhcmNoS2V5LAotICAgIENvbnRyb2xTZWFyY2hLZXksCi0gICAgRGlmZmVy
ZW50VHlwZVNlYXJjaEtleSwKLSAgICBGb250Q2hhbmdlU2VhcmNoS2V5LAotICAgIEZvbnRDb2xv
ckNoYW5nZVNlYXJjaEtleSwKLSAgICBGcmFtZVNlYXJjaEtleSwKLSAgICBHcmFwaGljU2VhcmNo
S2V5LAotICAgIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXksCi0gICAgSGVhZGluZ0xldmVsMlNlYXJj
aEtleSwKLSAgICBIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5LAotICAgIEhlYWRpbmdMZXZlbDRTZWFy
Y2hLZXksCi0gICAgSGVhZGluZ0xldmVsNVNlYXJjaEtleSwKLSAgICBIZWFkaW5nTGV2ZWw2U2Vh
cmNoS2V5LAotICAgIEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXksCi0gICAgSGVhZGluZ1NlYXJj
aEtleSwKLSAgICBIaWdobGlnaHRlZFNlYXJjaEtleSwKLSAgICBJdGFsaWNGb250U2VhcmNoS2V5
LAotICAgIExhbmRtYXJrU2VhcmNoS2V5LAotICAgIExpbmtTZWFyY2hLZXksCi0gICAgTGlzdFNl
YXJjaEtleSwKLSAgICBMaXZlUmVnaW9uU2VhcmNoS2V5LAotICAgIE1pc3NwZWxsZWRXb3JkU2Vh
cmNoS2V5LAotICAgIE91dGxpbmVTZWFyY2hLZXksCi0gICAgUGxhaW5UZXh0U2VhcmNoS2V5LAot
ICAgIFJhZGlvR3JvdXBTZWFyY2hLZXksCi0gICAgU2FtZVR5cGVTZWFyY2hLZXksCi0gICAgU3Rh
dGljVGV4dFNlYXJjaEtleSwKLSAgICBTdHlsZUNoYW5nZVNlYXJjaEtleSwKLSAgICBUYWJsZVNh
bWVMZXZlbFNlYXJjaEtleSwKLSAgICBUYWJsZVNlYXJjaEtleSwKLSAgICBUZXh0RmllbGRTZWFy
Y2hLZXksCi0gICAgVW5kZXJsaW5lU2VhcmNoS2V5LAotICAgIFVudmlzaXRlZExpbmtTZWFyY2hL
ZXksCi0gICAgVmlzaXRlZExpbmtTZWFyY2hLZXkKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleSB7CisgICAgQW55VHlwZSA9IDEsCisgICAgQXJ0aWNsZSwKKyAgICBCbG9ja3F1b3Rl
U2FtZUxldmVsLAorICAgIEJsb2NrcXVvdGUsCisgICAgQm9sZEZvbnQsCisgICAgQnV0dG9uLAor
ICAgIENoZWNrQm94LAorICAgIENvbnRyb2wsCisgICAgRGlmZmVyZW50VHlwZSwKKyAgICBGb250
Q2hhbmdlLAorICAgIEZvbnRDb2xvckNoYW5nZSwKKyAgICBGcmFtZSwKKyAgICBHcmFwaGljLAor
ICAgIEhlYWRpbmdMZXZlbDEsCisgICAgSGVhZGluZ0xldmVsMiwKKyAgICBIZWFkaW5nTGV2ZWwz
LAorICAgIEhlYWRpbmdMZXZlbDQsCisgICAgSGVhZGluZ0xldmVsNSwKKyAgICBIZWFkaW5nTGV2
ZWw2LAorICAgIEhlYWRpbmdTYW1lTGV2ZWwsCisgICAgSGVhZGluZywKKyAgICBIaWdobGlnaHRl
ZCwKKyAgICBJdGFsaWNGb250LAorICAgIExhbmRtYXJrLAorICAgIExpbmssCisgICAgTGlzdCwK
KyAgICBMaXZlUmVnaW9uLAorICAgIE1pc3NwZWxsZWRXb3JkLAorICAgIE91dGxpbmUsCisgICAg
UGxhaW5UZXh0LAorICAgIFJhZGlvR3JvdXAsCisgICAgU2FtZVR5cGUsCisgICAgU3RhdGljVGV4
dCwKKyAgICBTdHlsZUNoYW5nZSwKKyAgICBUYWJsZVNhbWVMZXZlbCwKKyAgICBUYWJsZSwKKyAg
ICBUZXh0RmllbGQsCisgICAgVW5kZXJsaW5lLAorICAgIFVudmlzaXRlZExpbmssCisgICAgVmlz
aXRlZExpbmssCiB9OwogCi1lbnVtIEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JCb3Vu
ZHMgewotICAgIEZpcnN0VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzLAotICAgIExhc3RWaXNpYmxl
UG9zaXRpb25Gb3JCb3VuZHMKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlv
bkZvckJvdW5kcyB7CisgICAgRmlyc3QsCisgICAgTGFzdCwKIH07CiAKIHN0cnVjdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgewpAQCAtNDEwLDcgKzQwNyw3IEBAIHN0cnVjdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgewogICAgIHsgfQogfTsKICAgICAKLWVudW0gQWNjZXNzaWJp
bGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQgfTsK
K2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQs
IEVsZW1lbnREZXN0cm95ZWQgfTsKIAogc3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKIApA
QCAtNDUwLDE4ICs0NDcsMTggQEAgc3RydWN0IFBsYWluVGV4dFJhbmdlIHsKICAgICBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9CiB9OwogCi1lbnVtIEFj
Y2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHkgewotICAgIEZpbmRBbmRSZXBsYWNlQWN0aXZp
dHksCi0gICAgRmluZEFuZFNlbGVjdEFjdGl2aXR5LAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
U2VsZWN0VGV4dEFjdGl2aXR5IHsKKyAgICBGaW5kQW5kUmVwbGFjZSwKKyAgICBGaW5kQW5kU2Vs
ZWN0LAogICAgIEZpbmRBbmRDYXBpdGFsaXplLAogICAgIEZpbmRBbmRMb3dlcmNhc2UsCiAgICAg
RmluZEFuZFVwcGVyY2FzZQogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmln
dWl0eVJlc29sdXRpb24gewotICAgIENsb3Nlc3RBZnRlclNlbGVjdGlvbkFtYmlndWl0eVJlc29s
dXRpb24sCi0gICAgQ2xvc2VzdEJlZm9yZVNlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24sCi0g
ICAgQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbgorZW51bSBjbGFzcyBBY2Nl
c3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb24geworICAgIENsb3Nlc3RBZnRl
ciwKKyAgICBDbG9zZXN0QmVmb3JlLAorICAgIENsb3Nlc3RUbwogfTsKIAogc3RydWN0IEFjY2Vz
c2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgewpAQCAtNDc3LDE2ICs0NzQsMTYgQEAgc3RydWN0
IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgewogICAgIHsgfQogfTsKIAotZW51bSBB
Y2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUgeyBTdWJzY3JpcHQsIFN1cGVyc2NyaXB0
IH07Ci1lbnVtIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlIHsgUHJlU3Vi
c2NyaXB0LCBQcmVTdXBlcnNjcmlwdCwgUG9zdFN1YnNjcmlwdCwgUG9zdFN1cGVyc2NyaXB0IH07
CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1YnNjcmlw
dCwgU3VwZXJzY3JpcHQgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vic2NyaXB0
LCBQb3N0U3VwZXJzY3JpcHQgfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0
ZSB7IEFSSUFDdXJyZW50RmFsc2UsIEFSSUFDdXJyZW50VHJ1ZSwgQVJJQUN1cnJlbnRQYWdlLCBB
UklBQ3VycmVudFN0ZXAsIEFSSUFDdXJyZW50TG9jYXRpb24sIEFSSUFDdXJyZW50RGF0ZSwgQVJJ
QUN1cnJlbnRUaW1lIH07CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRl
IHsgRmFsc2UsIFRydWUsIFBhZ2UsIFN0ZXAsIExvY2F0aW9uLCBEYXRlLCBUaW1lIH07CiAgICAg
CiBib29sIG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUqKTsKICAgICAKIGNsYXNzIEFjY2Vz
c2liaWxpdHlPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiB7
CiBwcm90ZWN0ZWQ6Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCgpOworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QoKSA9IGRlZmF1bHQ7CiAgICAgCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNz
aWJpbGl0eU9iamVjdCgpOwpAQCAtNTE3LDcgKzUxNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2VN
YXAoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBJbWFnZU1hcFJvbGU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dv
cmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01MjUsMTEgKzUyMiwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXNzd29yZEZpZWxkT3JD
b250YWluaW5nUGFzc3dvcmRGaWVsZCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaXNXZWJBcmVhKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gV2ViQXJlYVJv
bGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IENoZWNrQm94Um9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JhZGlvQnV0dG9u
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gUmFkaW9CdXR0b25Sb2xlOyB9CisgICAg
Ym9vbCBpc1dlYkFyZWEoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6V2ViQXJlYTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Cisg
ICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b247IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNOYXRpdmVMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlz
dEJveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IExpc3RCb3hSb2xlOyB9CisgICAg
Ym9vbCBpc0xpc3RCb3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEJveDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGltZWxpbmUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTU5LDQzICs1NTYsNDMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IFNwaW5CdXR0b25Sb2xlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGlu
QnV0dG9uOyB9CiAgICAgdmlydHVhbCBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tPYmplY3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbExhYmVs
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYU9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IFN3aXRjaFJvbGU7IH0KLSAgICBib29sIGlzVG9nZ2xlQnV0
dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVG9nZ2xlQnV0dG9uUm9sZTsgfQor
ICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0K
ICAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzQVJJQVRleHRDb250
cm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBUYWJMaXN0
Um9sZTsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gVGFiUm9sZTsgfQotICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gUmFkaW9Hcm91cFJvbGU7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBDb21ib0JveFJvbGU7IH0KLSAgICBib29sIGlzVHJl
ZSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRyZWVSb2xlOyB9Ci0gICAgYm9vbCBp
c1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVHJlZUdyaWRSb2xlOyB9
Ci0gICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVHJl
ZUl0ZW1Sb2xlOyB9Ci0gICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IFNjcm9sbEJhclJvbGU7IH0KKyAgICBib29sIGlzVGFiTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OyB9CisgICAg
Ym9vbCBpc1RhYkl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGFiOyB9CisgICAgYm9vbCBpc1JhZGlvR3JvdXAoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDsgfQorICAgIGJvb2wg
aXNDb21ib0JveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDb21ib0JveDsgfQorICAgIGJvb2wgaXNUcmVlKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU7IH0KKyAgICBib29sIGlzVHJlZUdyaWQo
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdy
aWQ7IH0KKyAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07IH0KKyAgICBib29sIGlzU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJh
cjsgfQogICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdDsKLSAgICBib29sIGlzTGlzdEl0ZW0oKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBMaXN0SXRlbVJvbGU7IH0KKyAgICBib29sIGlz
TGlzdEl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEl0ZW07IH0KICAgICBib29sIGlzQ2hlY2tib3hPclJhZGlvKCkgY29uc3QgeyByZXR1
cm4gaXNDaGVja2JveCgpIHx8IGlzUmFkaW9CdXR0b24oKTsgfQotICAgIGJvb2wgaXNTY3JvbGxW
aWV3KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU2Nyb2xsQXJlYVJvbGU7IH0KLSAg
ICBib29sIGlzQ2FudmFzKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQ2FudmFzUm9s
ZTsgfQotICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IFBvcFVwQnV0dG9uUm9sZTsgfQorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KKyAg
ICBib29sIGlzQ2FudmFzKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNhbnZhczsgfQorICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsgfQogICAg
IGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IENv
bG9yV2VsbFJvbGU7IH0KKyAgICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQogICAgIGJvb2wgaXNS
YW5nZUNvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzTWV0ZXIoKSBjb25zdDsKLSAgICBib29s
IGlzU3BsaXR0ZXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBTcGxpdHRlclJvbGU7
IH0KLSAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRv
b2xiYXJSb2xlOyB9CisgICAgYm9vbCBpc1NwbGl0dGVyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOyB9CisgICAgYm9vbCBpc1Rvb2xi
YXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9v
bGJhcjsgfQogICAgIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1N1YnNjcmlwdFN0eWxlR3JvdXAoKSBjb25zdDsKICAgICBib29sIGlzU3VwZXJzY3JpcHRTdHls
ZUdyb3VwKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdDsKLSAgICBi
b29sIGlzU3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFN1bW1hcnlSb2xl
OyB9CisgICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQogICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdDsK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTYyOCw3ICs2MjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVG
b250KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZTsgfQorICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkg
Y29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1Rl
eHQ7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0OwogCkBAIC03NTksNyArNzU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9u
ZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFVua25vd25Sb2xl
OyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNv
bnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbmhlcml0c1ByZXNl
bnRhdGlvbmFsUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMDA4LDcgKzEwMDUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gU2Nyb2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQg
aW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9mIHRoZSB0b3AtbGV2ZWwgd2luZG93LgogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAg
Ci0gICAgZW51bSBTY3JvbGxCeVBhZ2VEaXJlY3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQg
fTsKKyAgICBlbnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0
LCBSaWdodCB9OwogICAgIGJvb2wgc2Nyb2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikg
Y29uc3Q7CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKICAgICBJbnRTaXpl
IHNjcm9sbENvbnRlbnRzU2l6ZSgpIGNvbnN0OyAgICAKQEAgLTExMDIsNyArMTA5OSw3IEBAIHB1
YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0
Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Q7CiAjZWxzZQogICAgIGJvb2wgYWNjZXNzaWJpbGl0
eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCB7
IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTEzNSwxNCArMTEzMiwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2li
aWxpdHlPYmplY3QqKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBBWElEIG1faWQ7CisgICAgQVhJ
RCBtX2lkIHsgMCB9OwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVu
OwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGlsZHJlbjsKLSAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSBtX3JvbGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBtX2xhc3RLbm93bklz
SWdub3JlZFZhbHVlOwotICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSBt
X2lzSWdub3JlZEZyb21QYXJlbnREYXRhOwotICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OwotICAg
IGJvb2wgbV9zdWJ0cmVlRGlydHk7CisgICAgbXV0YWJsZSBib29sIG1faGF2ZUNoaWxkcmVuIHsg
ZmFsc2UgfTsKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGUgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VW5rbm93biB9OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gbV9sYXN0S25v
d25Jc0lnbm9yZWRWYWx1ZSB7IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRC
ZWhhdmlvciB9OworICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSBtX2lz
SWdub3JlZEZyb21QYXJlbnREYXRhIHsgfTsKKyAgICBib29sIG1fY2hpbGRyZW5EaXJ0eSB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3N1YnRyZWVEaXJ0eSB7IGZhbHNlIH07CiAKICAgICB2b2lkIHNl
dElzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YSYgZGF0YSkgeyBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCkBAIC0x
MTgwLDcgKzExNzcsNyBAQCBwcm90ZWN0ZWQ6CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgQ09N
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7CiAjZWxpZiBQTEFURk9S
TShHVEspCi0gICAgQXRrT2JqZWN0KiBtX3dyYXBwZXI7CisgICAgQXRrT2JqZWN0KiBtX3dyYXBw
ZXIgeyBudWxscHRyIH07CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFByb2dyZXNzSW5kaWNhdG9yUm9sZTsgfQorICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjsgfQogCiAgICAgYm9vbCBpc1Byb2dyZXNzSW5k
aWNhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5
MSwxMSArNDkxLDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXIK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAg
IGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVCYXJSb2xlKQorICAgIGlmIChhcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyKQogICAgICAgICByZXR1
cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtX3JlbmRlcmVyLT5wYXJlbnQoKSk7CiAK
ICAgICAvLyBtZW51QnV0dG9uIGFuZCBpdHMgY29ycmVzcG9uZGluZyBtZW51IGFyZSBET00gc2li
bGluZ3MsIGJ1dCBBY2Nlc3NpYmlsaXR5IG5lZWRzIHRoZW0gdG8gYmUgcGFyZW50L2NoaWxkCi0g
ICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudVJvbGUpIHsKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkgewogICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtZW51QnV0dG9uRm9yTWVudSgpOwogICAgICAgICBp
ZiAocGFyZW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudDsKQEAgLTUyNCw3ICs1MjQsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQXR0YWNoCiAgICAgLy8gV2lkZ2V0
cyBhcmUgdGhlIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgd2UgcmVwcmVzZW50IHRvIEFYIGFzIGF0
dGFjaG1lbnRzCiAgICAgYm9vbCBpc1dpZGdldCA9IHJlbmRlcmVyLT5pc1dpZGdldCgpOwogCi0g
ICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gVW5rbm93blJvbGU7
CisgICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlVua25vd247CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QKQEAgLTYxMiw3ICs2MTIsNyBAQCBTdHJpbmcgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRlCiAgICAgICAgIC8vIE9ubHkgdGFrZSBoZWxw
IHRleHQgZnJvbSBhbiBhbmNlc3RvciBlbGVtZW50IGlmIGl0cyBhIGdyb3VwIG9yIGFuIHVua25v
d24gcm9sZS4gSWYgaGVscCB3YXMgCiAgICAgICAgIC8vIGFkZGVkIHRvIHRob3NlIGtpbmRzIG9m
IGVsZW1lbnRzLCBpdCBpcyBsaWtlbHkgaXQgd2FzIG1lYW50IGZvciBhIGNoaWxkIGVsZW1lbnQu
CiAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iaiA9IGF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUoYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqLT5pc0dy
b3VwKCkgJiYgYXhPYmotPnJvbGVWYWx1ZSgpICE9IFVua25vd25Sb2xlKQorICAgICAgICAgICAg
aWYgKCFheE9iai0+aXNHcm91cCgpICYmIGF4T2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmls
aXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KQEAgLTc0Myw3ICs3NDMsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c3RyaW5nCiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3NzQm94ID0gcmVuZGVyQm94TW9k
ZWxPYmplY3QoKTsKIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFN0YXRpY1RleHRS
b2xlKSB7CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlN0YXRpY1RleHQpIHsKICAgICAgICAgU3RyaW5nIHN0YXRpY1RleHQgPSB0ZXh0KCk7CiAgICAg
ICAgIGlmICghc3RhdGljVGV4dC5sZW5ndGgoKSkKICAgICAgICAgICAgIHN0YXRpY1RleHQgPSB0
ZXh0VW5kZXJFbGVtZW50KCk7CkBAIC05NjEsNyArOTYxLDcgQEAgRVNwZWFrIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnNwZWFrUAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50LCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRyZW4oKSkgewotICAgICAg
ICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IFJhZGlvQnV0dG9uUm9sZSkKKyAgICAgICAgaWYg
KGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24pCiAg
ICAgICAgICAgICBsaW5rZWRVSUVsZW1lbnRzLmFwcGVuZChjaGlsZCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihjaGlsZC5nZXQoKSwgbGlu
a2VkVUlFbGVtZW50cyk7CkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphZGRSYWRpbwogICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7Ci0gICAgaWYgKHJvbGVWYWx1ZSgpICE9IFJhZGlv
QnV0dG9uUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJh
ZGlvQnV0dG9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IHRoaXMt
Pm5vZGUoKTsKQEAgLTk4Myw3ICs5ODMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZFJhZGlvCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQg
YW55IHJhZGlvIGJ1dHRvbiBzaWJsaW5ncyB3aXRoIHRoZSB0cmFkaXRpb25hbCBuYW1pbmcsIGxl
dHMgc2VhcmNoIGZvciBhIHJhZGlvIGdyb3VwIHJvbGUgYW5kIGZpbmQgaXRzIGNoaWxkcmVuLgog
ICAgICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKLSAgICAgICAgICAg
IGlmIChwYXJlbnQtPnJvbGVWYWx1ZSgpID09IFJhZGlvR3JvdXBSb2xlKQorICAgICAgICAgICAg
aWYgKHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAp
CiAgICAgICAgICAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKHBhcmVudCwgbGlu
a2VkVUlFbGVtZW50cyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDAxLDcgKzEwMDEsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmtlZFVJCiAgICAgICAgICAgICBsaW5r
ZWRVSUVsZW1lbnRzLmFwcGVuZChsaW5rZWRBWEVsZW1lbnQpOwogICAgIH0KIAotICAgIGlmIChy
b2xlVmFsdWUoKSA9PSBSYWRpb0J1dHRvblJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbikKICAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91
cE1lbWJlcnMobGlua2VkVUlFbGVtZW50cyk7CiB9CiAKQEAgLTExMDYsNyArMTEwNiw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBbGxvd2UKICAgICBib29sIGlzSW5UcmVl
ID0gZmFsc2U7CiAgICAgYm9vbCBpc1RyZWVJdGVtRGVzY2VuZGFudCA9IGZhbHNlOwogICAgIHdo
aWxlIChheE9iaikgewotICAgICAgICBpZiAoYXhPYmotPnJvbGVWYWx1ZSgpID09IFRyZWVJdGVt
Um9sZSkKKyAgICAgICAgaWYgKGF4T2JqLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VHJlZUl0ZW0pCiAgICAgICAgICAgICBpc1RyZWVJdGVtRGVzY2VuZGFudCA9IHRydWU7CiAg
ICAgICAgIGlmIChheE9iai0+aXNUcmVlKCkpIHsKICAgICAgICAgICAgIGlzSW5UcmVlID0gdHJ1
ZTsKQEAgLTExMTgsNyArMTExOCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNBbGxvd2UKICAgICAvLyBJZiB0aGUgb2JqZWN0IGlzIGluIGEgdHJlZSwgb25seSB0cmVlIGl0
ZW1zIHNob3VsZCBiZSBleHBvc2VkIChhbmQgdGhlIGNoaWxkcmVuIG9mIHRyZWUgaXRlbXMpLgog
ICAgIGlmIChpc0luVHJlZSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9s
ZVZhbHVlKCk7Ci0gICAgICAgIGlmIChyb2xlICE9IFRyZWVJdGVtUm9sZSAmJiByb2xlICE9IFN0
YXRpY1RleHRSb2xlICYmICFpc1RyZWVJdGVtRGVzY2VuZGFudCkKKyAgICAgICAgaWYgKHJvbGUg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlN0YXRpY1RleHQgJiYgIWlzVHJlZUl0ZW1EZXNjZW5kYW50KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMjgsMTMgKzExMjgsMTMg
QEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gb2JqZQogewogICAgIC8vIERv
bid0IGlnbm9yZSBhbiBpbWFnZSB0aGF0IGhhcyBhbiBhbHQgdGFnLgogICAgIGlmICghYWx0VGV4
dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCi0gICAgICAgIHJldHVybiBJbmNsdWRlT2JqZWN0
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9i
amVjdDsKICAgICAKICAgICAvLyBUaGUgaW5mb3JtYWwgc3RhbmRhcmQgaXMgdG8gaWdub3JlIGlt
YWdlcyB3aXRoIHplcm8tbGVuZ3RoIGFsdCBzdHJpbmdzLgogICAgIGlmICghYWx0VGV4dC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAKLSAgICByZXR1cm4g
RGVmYXVsdEJlaGF2aW9yOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
OjpEZWZhdWx0QmVoYXZpb3I7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0CkBA
IC0xMTQyLDE0ICsxMTQyLDE0IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNz
aWJpbGkKICAgICAvLyBUaGUgZm9sbG93aW5nIGNhc2VzIGNhbiBhcHBseSB0byBhbnkgZWxlbWVu
dCB0aGF0J3MgYSBzdWJjbGFzcyBvZiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgogICAgIAog
ICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKIAog
ICAgIGlmIChtX3JlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CiAg
ICAgICAgIC8vIGFyaWEtaGlkZGVuIGlzIG1lYW50IHRvIG92ZXJyaWRlIHZpc2liaWxpdHkgYXMg
dGhlIGRldGVybWluYW50IGluIEFYIGhpZXJhcmNoeSBpbmNsdXNpb24uCiAgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRy
KSwgImZhbHNlIikpCi0gICAgICAgICAgICByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOworICAgICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlv
cjsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAgfQogCiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsK
QEAgLTExNzksMTkgKzExNzksMTkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpj
b21wdXRlQQogICAgIC8vIFRoZW4gcHJvY2VzcyBvdGhlciB1c2UgY2FzZXMgdGhhdCBuZWVkIHRv
IGJlIGFwcGxpZWQgdG8gYWxsIHRoZSB2YXJpb3VzIHJvbGVzCiAgICAgLy8gdGhhdCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0cyB0YWtlIG9uLgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRlY2lz
aW9uID09IEluY2x1ZGVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAogICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYSBwYXJlbnQgdGhh
dCBjYW5ub3QgaGF2ZSBjaGlsZHJlbiwgaXQgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgogICAgIGlm
IChpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAg
CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IElnbm9yZWRSb2xlKQorICAgIGlmIChyb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IFByZXNlbnRhdGlvbmFsUm9sZSB8fCBp
bmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfHwgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJv
bGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gV2ViQXJlYXMgc2hvdWxk
IGJlIGlnbm9yZWQgaWYgdGhlaXIgaWZyYW1lIGNvbnRhaW5lciBpcyBtYXJrZWQgYXMgcHJlc2Vu
dGF0aW9uYWwuCkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmNvbXB1dGVBCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKSkgewog
ICAgICAgICAvLyBzdGF0aWMgdGV4dCBiZW5lYXRoIE1lbnVJdGVtcyBhbmQgTWVudUJ1dHRvbnMg
YXJlIGp1c3QgcmVwb3J0ZWQgYWxvbmcgd2l0aCB0aGUgbWVudSBpdGVtLCBzbyBpdCdzIGlnbm9y
ZWQgb24gYW4gaW5kaXZpZHVhbCBsZXZlbAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICAgICAgaWYgKHBhcmVudCAmJiAo
cGFyZW50LT5pc01lbnVJdGVtKCkgfHwgcGFyZW50LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1l
bnVCdXR0b25Sb2xlKSkKKyAgICAgICAgaWYgKHBhcmVudCAmJiAocGFyZW50LT5pc01lbnVJdGVt
KCkgfHwgcGFyZW50LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51QnV0dG9uKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBhdXRvJiByZW5k
ZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpOwogICAgICAgICBpZiAo
IXJlbmRlclRleHQuaGFzUmVuZGVyZWRUZXh0KCkpCkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAKICAgICAgICAgLy8gc3RhdGlj
IHRleHQgYmVuZWF0aCBUZXh0Q29udHJvbHMgaXMgcmVwb3J0ZWQgYWxvbmcgd2l0aCB0aGUgdGV4
dCBjb250cm9sIHRleHQgc28gaXQncyBpZ25vcmVkLgogICAgICAgICBmb3IgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVu
dC0+cGFyZW50T2JqZWN0KCkpIHsgCi0gICAgICAgICAgICBpZiAocGFyZW50LT5yb2xlVmFsdWUo
KSA9PSBUZXh0RmllbGRSb2xlKQorICAgICAgICAgICAgaWYgKHBhcmVudC0+cm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZCkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyNDUsOSArMTI0NSw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUEKICAgICAgICAgLy8gVGhlIGFsdCBhdHRy
aWJ1dGUgbWF5IGJlIHNldCBvbiBhIHRleHQgZnJhZ21lbnQgdGhyb3VnaCBDU1MsIHdoaWNoIHNo
b3VsZCBiZSBob25vcmVkLgogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5k
ZXJUZXh0KSkgewogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhbHRU
ZXh0SW5jbHVzaW9uID0gb2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQoZG93bmNhc3Q8UmVuZGVy
VGV4dEZyYWdtZW50PihyZW5kZXJUZXh0KS5hbHRUZXh0KCkpOwotICAgICAgICAgICAgaWYgKGFs
dFRleHRJbmNsdXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgICAgICAgICAgaWYgKGFsdFRleHRJ
bmNsdXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKGFsdFRleHRJbmNs
dXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICAgICAgICAgIGlmIChhbHRUZXh0SW5jbHVzaW9u
ID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKGRvd25jYXN0PFJlbmRlclRl
eHRGcmFnbWVudD4ocmVuZGVyVGV4dCkuZmlyc3RMZXR0ZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTEyNzQsMjQgKzEyNzQsMjQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpjb21wdXRlQQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzd2l0Y2gg
KHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBdWRpb1JvbGU6Ci0gICAgY2FzZSBEZXNjcmlwdGlv
bkxpc3RUZXJtUm9sZToKLSAgICBjYXNlIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6Ci0gICAg
Y2FzZSBEZXRhaWxzUm9sZToKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0gICAgY2FzZSBU
aW1lUm9sZToKLSAgICBjYXNlIFZpZGVvUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpBdWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJt
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1lOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlZpZGVvOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25S
b2xlKQorICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpV
bmtub3duKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgp
ID09IEhvcml6b250YWxSdWxlUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6Okhvcml6b250YWxSdWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgLy8gZG9uJ3QgaWdub3JlIGxhYmVscywgYmVjYXVzZSB0aGV5IHNlcnZlIGFzIFRpdGxlVUlF
bGVtZW50cwpAQCAtMTMzMSwxNiArMTMzMSwxNiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmNvbXB1dGVBCiAgICAgICAgIAogICAgICAgICAvLyBGaXJzdCBjaGVjayB0aGUgUmVu
ZGVySW1hZ2UncyBhbHRUZXh0ICh3aGljaCBjYW4gYmUgc2V0IHRocm91Z2ggYSBzdHlsZSBzaGVl
dCwgb3IgY29tZSBmcm9tIHRoZSBFbGVtZW50KS4KICAgICAgICAgLy8gSG93ZXZlciwgaWYgdGhp
cyBpcyBub3QgYSBuYXRpdmUgaW1hZ2UsIGZhbGxiYWNrIHRvIHRoZSBhdHRyaWJ1dGUgb24gdGhl
IEVsZW1lbnQuCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWx0VGV4dElu
Y2x1c2lvbiA9IERlZmF1bHRCZWhhdmlvcjsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbiBhbHRUZXh0SW5jbHVzaW9uID0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
RGVmYXVsdEJlaGF2aW9yOwogICAgICAgICBib29sIGlzUmVuZGVySW1hZ2UgPSBpczxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChpc1JlbmRlckltYWdlKQogICAgICAgICAg
ICAgYWx0VGV4dEluY2x1c2lvbiA9IG9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KGRvd25jYXN0
PFJlbmRlckltYWdlPigqbV9yZW5kZXJlcikuYWx0VGV4dCgpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgYWx0VGV4dEluY2x1c2lvbiA9IG9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KGdl
dEF0dHJpYnV0ZShhbHRBdHRyKS5zdHJpbmcoKSk7CiAKLSAgICAgICAgaWYgKGFsdFRleHRJbmNs
dXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgICAgICBpZiAoYWx0VGV4dEluY2x1c2lvbiA9PSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGFsdFRleHRJbmNsdXNpb24gPT0gSW5jbHVkZU9iamVj
dCkKKyAgICAgICAgaWYgKGFsdFRleHRJbmNsdXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbjo6SW5jbHVkZU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIElmIGFuIGltYWdlIGhhcyBhIHRpdGxlIGF0dHJpYnV0ZSBvbiBpdCwg
YWNjZXNzaWJpbGl0eSBzaG91bGQgYmUgbGVuaWVudCBhbmQgYWxsb3cgaXQgdG8gYXBwZWFyIGlu
IHRoZSBoaWVyYXJjaHkgKGFjY29yZGluZyB0byBXQUktQVJJQSkuCkBAIC0xNDAzLDcgKzE0MDMs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAKICAgICAvLyA8
c3Bhbj4gdGFncyBhcmUgaW5saW5lIHRhZ3MgYW5kIG5vdCBtZWFudCB0byBjb252ZXkgaW5mb3Jt
YXRpb24gaWYgdGhleSBoYXZlIG5vIG90aGVyIGFyaWEKICAgICAvLyBpbmZvcm1hdGlvbiBvbiB0
aGVtLiBJZiB3ZSBkb24ndCBpZ25vcmUgdGhlbSwgdGhleSBtYXkgZW1pdCBzaWduYWxzIGV4cGVj
dGVkIHRvIGNvbWUgZnJvbQotICAgIC8vIHRoZWlyIHBhcmVudC4gSW4gYWRkaXRpb24sIGJlY2F1
c2UgaW5jbHVkZWQgc3BhbnMgYXJlIEdyb3VwUm9sZSBvYmplY3RzLCBhbmQgR3JvdXBSb2xlCisg
ICAgLy8gdGhlaXIgcGFyZW50LiBJbiBhZGRpdGlvbiwgYmVjYXVzZSBpbmNsdWRlZCBzcGFucyBh
cmUgQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwIG9iamVjdHMsIGFuZCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JvdXAKICAgICAvLyBvYmplY3RzIGFyZSBvZnRlbiBjb250YWluZXJzIHdpdGggbWVhbmlu
Z2Z1bCBpbmZvcm1hdGlvbiwgdGhlIGluY2x1c2lvbiBvZiBhIHNwYW4gY2FuIGhhdmUKICAgICAv
LyB0aGUgc2lkZSBlZmZlY3Qgb2YgY2F1c2luZyB0aGUgaW1tZWRpYXRlIHBhcmVudCBhY2Nlc3Np
YmxlIHRvIGJlIGlnbm9yZWQuIFRoaXMgaXMgZXNwZWNpYWxseQogICAgIC8vIHByb2JsZW1hdGlj
IGZvciBwbGF0Zm9ybXMgd2hpY2ggaGF2ZSBkaXN0aW5jdCByb2xlcyBmb3IgdGV4dHVhbCBibG9j
ayBlbGVtZW50cy4KQEAgLTE1MjgsNyArMTUyOCw3IEBAIFBsYWluVGV4dFJhbmdlIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9
IGFyaWFSb2xlQXR0cmlidXRlKCk7CiAgICAgLy8gVXNlIHRoZSB0ZXh0IGNvbnRyb2wgbmF0aXZl
IHJhbmdlIGlmIGl0J3MgYSBuYXRpdmUgb2JqZWN0IGFuZCBpdCBoYXMgbm8gQVJJQSByb2xlIChv
ciBoYXMgYSB0ZXh0IGJhc2VkIEFSSUEgcm9sZSkuCi0gICAgaWYgKGlzTmF0aXZlVGV4dENvbnRy
b2woKSAmJiAoYXJpYVJvbGUgPT0gVW5rbm93blJvbGUgfHwgaXNBUklBVGV4dENvbnRyb2woKSkp
IHsKKyAgICBpZiAoaXNOYXRpdmVUZXh0Q29udHJvbCgpICYmIChhcmlhUm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VW5rbm93biB8fCBpc0FSSUFUZXh0Q29udHJvbCgpKSkgewogICAgICAgICBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0Q29udHJvbD4oKm1fcmVuZGVyZXIpLnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKTsKICAgICAg
ICAgcmV0dXJuIFBsYWluVGV4dFJhbmdlKHRleHRDb250cm9sLnNlbGVjdGlvblN0YXJ0KCksIHRl
eHRDb250cm9sLnNlbGVjdGlvbkVuZCgpIC0gdGV4dENvbnRyb2wuc2VsZWN0aW9uU3RhcnQoKSk7
CiAgICAgfQpAQCAtMTY3NSw3ICsxNjc1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc1RhYkl0ZQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJQYW5lbCA9IGNh
Y2hlLT5nZXRPckNyZWF0ZShlbGVtZW50KTsKIAogICAgICAgICAvLyBBIHRhYiBpdGVtIHNob3Vs
ZCBvbmx5IGNvbnRyb2wgdGFiIHBhbmVscy4KLSAgICAgICAgaWYgKCF0YWJQYW5lbCB8fCB0YWJQ
YW5lbC0+cm9sZVZhbHVlKCkgIT0gVGFiUGFuZWxSb2xlKQorICAgICAgICBpZiAoIXRhYlBhbmVs
IHx8IHRhYlBhbmVsLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoZWNrRm9jdXNFbGVtZW50ID0gZm9jdXNlZEVsZW1lbnQ7CkBAIC0xNzA0LDcgKzE3
MDQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRm9jdXNlCiAgICAgLy8g
QSB3ZWIgYXJlYSBpcyByZXByZXNlbnRlZCBieSB0aGUgRG9jdW1lbnQgbm9kZSBpbiB0aGUgRE9N
IHRyZWUsIHdoaWNoIGlzbid0IGZvY3VzYWJsZS4KICAgICAvLyBDaGVjayBpbnN0ZWFkIGlmIHRo
ZSBmcmFtZSdzIHNlbGVjdGlvbiBjb250cm9sbGVyIGlzIGZvY3VzZWQKICAgICBpZiAoZm9jdXNl
ZEVsZW1lbnQgPT0gbV9yZW5kZXJlci0+bm9kZSgpCi0gICAgICAgIHx8IChyb2xlVmFsdWUoKSA9
PSBXZWJBcmVhUm9sZSAmJiBkb2N1bWVudC5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRB
bmRBY3RpdmUoKSkpCisgICAgICAgIHx8IChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6V2ViQXJlYSAmJiBkb2N1bWVudC5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRB
Y3RpdmUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3NDYsNyArMTc0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
U2VsZWMKIHsKICAgICAvLyBTZXR0aW5nIHNlbGVjdGVkIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdHJl
ZXMgYW5kIHRhYmxlcyAoYW5kIHRyZWUtdGFibGVzKS4KICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgaWYgKHJvbGUgIT0gVHJlZVJvbGUgJiYgcm9sZSAhPSBU
cmVlR3JpZFJvbGUgJiYgcm9sZSAhPSBUYWJsZVJvbGUgJiYgcm9sZSAhPSBHcmlkUm9sZSkKKyAg
ICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSAmJiByb2xlICE9IEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlR3JpZCAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZSAm
JiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgYm9vbCBpc011bHRpID0gaXNNdWx0aVNlbGVjdGFibGUoKTsKQEAgLTE4MzUsNyArMTgz
NSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8qIHBhcmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUo
KTsKICAgICAgICAgICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+KCpjdXJyZW50KSAmJiBpczxI
VE1MTWFwRWxlbWVudD4ocGFyZW50KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGFyZWFPYmpl
Y3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShJbWFnZU1hcExpbmtSb2xlKSk7CisgICAgICAgICAgICAgICAgYXV0byYg
YXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVj
dENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbmspKTsK
ICAgICAgICAgICAgICAgICBIVE1MTWFwRWxlbWVudCYgbWFwID0gZG93bmNhc3Q8SFRNTE1hcEVs
ZW1lbnQ+KCpwYXJlbnQpOwogICAgICAgICAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTEFyZWFF
bGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oY3VycmVudCkpOwogICAgICAgICAgICAg
ICAgIGFyZWFPYmplY3Quc2V0SFRNTE1hcEVsZW1lbnQoJm1hcCk7CkBAIC0yNDExLDE4ICsyNDEx
LDE4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2hvdWxkTm8KIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGFyaWFSb2xlQXR0cmlidXRlKCkpIHsKLSAgICBjYXNlIEFwcGxp
Y2F0aW9uR3JvdXBSb2xlOgotICAgIGNhc2UgTGlzdEJveFJvbGU6Ci0gICAgY2FzZSBNZW51Um9s
ZToKLSAgICBjYXNlIE1lbnVCYXJSb2xlOgotICAgIGNhc2UgUmFkaW9Hcm91cFJvbGU6Ci0gICAg
Y2FzZSBSb3dSb2xlOgotICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgotICAgIGNhc2UgUHJvZ3Jl
c3NJbmRpY2F0b3JSb2xlOgotICAgIGNhc2UgVG9vbGJhclJvbGU6Ci0gICAgY2FzZSBPdXRsaW5l
Um9sZToKLSAgICBjYXNlIFRyZWVSb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0Qm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSYWRpb0dyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
b29sYmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok91dGxpbmU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
OgogICAgIC8qIEZJWE1FOiByZXBsYWNlIHRoZXNlIHdpdGggYWN0dWFsIHJvbGVzIHdoZW4gdGhl
eSBhcmUgYWRkZWQgdG8gQWNjZXNzaWJpbGl0eVJvbGUKICAgICBjb21wb3NpdGUKICAgICBhbGVy
dApAQCAtMjQ3NCwxMSArMjQ3NCwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmhhbmRsZUFyCiAgICAgICAgIGJvb2wgZm91bmRQYXJlbnQgPSBmYWxzZTsKICAgICAgICAgCiAg
ICAgICAgIHN3aXRjaCAoY29udGFpbmVyUGFyZW50LT5yb2xlVmFsdWUoKSkgewotICAgICAgICBj
YXNlIFRyZWVSb2xlOgotICAgICAgICBjYXNlIFRyZWVHcmlkUm9sZToKLSAgICAgICAgY2FzZSBH
cmlkUm9sZToKLSAgICAgICAgY2FzZSBUYWJsZVJvbGU6Ci0gICAgICAgIGNhc2UgQnJvd3NlclJv
bGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6CisgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpHcmlkOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToKKyAgICAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnJvd3NlcjoKICAgICAgICAgICAgIGZvdW5kUGFy
ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjUw
MCw3ICsyNTAwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYW5kbGVBcgog
ICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjb250YWluZXJQYXJlbnQsIGRvY3VtZW50
KCksIEFYT2JqZWN0Q2FjaGU6OkFYUm93Q291bnRDaGFuZ2VkKTsKIAogICAgIC8vIFBvc3QgdGhh
dCB0aGUgc3BlY2lmaWMgcm93IGVpdGhlciBjb2xsYXBzZWQgb3IgZXhwYW5kZWQuCi0gICAgaWYg
KHJvbGVWYWx1ZSgpID09IFJvd1JvbGUgfHwgcm9sZVZhbHVlKCkgPT0gVHJlZUl0ZW1Sb2xlKQor
ICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93IHx8IHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbSkKICAgICAgICAgY2FjaGUtPnBvc3RO
b3RpZmljYXRpb24odGhpcywgZG9jdW1lbnQoKSwgaXNFeHBhbmRlZCgpID8gQVhPYmplY3RDYWNo
ZTo6QVhSb3dFeHBhbmRlZCA6IEFYT2JqZWN0Q2FjaGU6OkFYUm93Q29sbGFwc2VkKTsKICAgICBl
bHNlCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50KCksIEFY
T2JqZWN0Q2FjaGU6OkFYRXhwYW5kZWRDaGFuZ2VkKTsKQEAgLTI2MDksNyArMjYwOSw3IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpleHBhbmQKIAogYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QKIHsKLSAg
ICBpZiAocm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpIHsKKyAgICBpZiAocm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsKICAgICAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpKQogICAgICAgICAgICAgcmV0
dXJuIHBhcmVudC0+aGFzVGFnTmFtZShhYmJyVGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUoYWNy
b255bVRhZyk7CiAgICAgfQpAQCAtMjYyMCwyNTEgKzI2MjAsMjUxIEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHMKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKICAgICBpZiAo
IW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCiAgICAgLy8gU29tZXRpbWVzIHdlIG5lZWQg
dG8gaWdub3JlIHRoZSBhdHRyaWJ1dGUgcm9sZS4gTGlrZSBpZiBhIHRyZWUgaXMgbWFsZm9ybWVk
LAogICAgIC8vIHdlIHdhbnQgdG8gaWdub3JlIHRoZSB0cmVlaXRlbSdzIGF0dHJpYnV0ZSByb2xl
LgotICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9
IFVua25vd25Sb2xlICYmICFzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkpCisgICAgaWYgKCht
X2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlVua25vd24gJiYgIXNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSkKICAgICAgICAg
cmV0dXJuIG1fYXJpYVJvbGU7CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5v
ZGUoKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3NzQm94ID0gcmVuZGVyQm94TW9kZWxP
YmplY3QoKTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmlzTGluaygpKQotICAgICAgICByZXR1
cm4gV2ViQ29yZUxpbmtSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Oldl
YkNvcmVMaW5rOwogICAgIGlmIChub2RlICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKSAm
JiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pigqbm9kZSkuaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih1c2VtYXBBdHRyKSkKLSAgICAgICAgcmV0dXJuIEltYWdlTWFwUm9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsKICAgICBpZiAoKGNz
c0JveCAmJiBjc3NCb3gtPmlzTGlzdEl0ZW0oKSkgfHwgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFt
ZShsaVRhZykpKQotICAgICAgICByZXR1cm4gTGlzdEl0ZW1Sb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc0xpc3RN
YXJrZXIoKSkKLSAgICAgICAgcmV0dXJuIExpc3RNYXJrZXJSb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJrZXI7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFz
VGFnTmFtZShidXR0b25UYWcpKQogICAgICAgICByZXR1cm4gYnV0dG9uUm9sZVR5cGUoKTsKICAg
ICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGxlZ2VuZFRhZykpCi0gICAgICAgIHJldHVy
biBMZWdlbmRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxlZ2VuZDsK
ICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTdGF0aWNUZXh0
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OwogICAg
IGlmIChjc3NCb3ggJiYgY3NzQm94LT5pc0ltYWdlKCkpIHsKICAgICAgICAgaWYgKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8g
UG9wVXBCdXR0b25Sb2xlIDogQnV0dG9uUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBhcmlhSGFz
UG9wdXAoKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiA6IEFjY2Vzc2liaWxpdHlS
b2xlOjpCdXR0b247CiAgICAgICAgIGlmIChpc1NWR0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1
cm4gU1ZHUm9vdFJvbGU7Ci0gICAgICAgIHJldHVybiBJbWFnZVJvbGU7CisgICAgICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1Jvb3Q7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6SW1hZ2U7CiAgICAgfQogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhh
c1RhZ05hbWUoY2FudmFzVGFnKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1JvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOwogCiAgICAgaWYgKGNzc0JveCAmJiBj
c3NCb3gtPmlzUmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gV2ViQXJlYVJvbGU7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsKICAgICAKICAgICBpZiAoY3Nz
Qm94ICYmIGNzc0JveC0+aXNUZXh0RmllbGQoKSkgewogICAgICAgICBpZiAoaXM8SFRNTElucHV0
RWxlbWVudD4obm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxl
bWVudD4oKm5vZGUpLmlzU2VhcmNoRmllbGQoKSA/IFNlYXJjaEZpZWxkUm9sZSA6IFRleHRGaWVs
ZFJvbGU7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5v
ZGUpLmlzU2VhcmNoRmllbGQoKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZCA6IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAgICAgfQogICAgIAogICAgIGlmIChjc3NCb3gg
JiYgY3NzQm94LT5pc1RleHRBcmVhKCkpCi0gICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE7CiAKICAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIGlmIChpbnB1
dC5pc0NoZWNrYm94KCkpCi0gICAgICAgICAgICByZXR1cm4gQ2hlY2tCb3hSb2xlOworICAgICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsKICAgICAgICAgaWYgKGlu
cHV0LmlzUmFkaW9CdXR0b24oKSkKLSAgICAgICAgICAgIHJldHVybiBSYWRpb0J1dHRvblJvbGU7
CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOwogICAg
ICAgICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYnV0dG9u
Um9sZVR5cGUoKTsKICAgICAgICAgLy8gT24gaU9TLCB0aGUgZGF0ZSBmaWVsZCBhbmQgdGltZSBm
aWVsZCBhcmUgcG9wdXAgYnV0dG9ucy4gT24gb3RoZXIgcGxhdGZvcm1zIHRoZXkgYXJlIHRleHQg
ZmllbGRzLgogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKGlucHV0LmlzRGF0ZUZpZWxk
KCkgfHwgaW5wdXQuaXNUaW1lRmllbGQoKSkKLSAgICAgICAgICAgIHJldHVybiBQb3BVcEJ1dHRv
blJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgICAgIGlmIChpbnB1
dC5pc0NvbG9yQ29udHJvbCgpKQotICAgICAgICAgICAgcmV0dXJuIENvbG9yV2VsbFJvbGU7Cisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsKICNlbmRpZgog
ICAgIH0KICAgICAKICAgICBpZiAoaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkpCi0g
ICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGV4dEFyZWE7CiAgICAgCiAgICAgaWYgKGlzRmlsZVVwbG9hZEJ1dHRvbigpKQotICAg
ICAgICByZXR1cm4gQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpCdXR0b247CiAgICAgCiAgICAgaWYgKGNzc0JveCAmJiBjc3NCb3gtPmlzTWVudUxpc3QoKSkK
LSAgICAgICAgcmV0dXJuIFBvcFVwQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsKICAgICAKICAgICBpZiAoaGVhZGluZ0xldmVsKCkpCi0g
ICAgICAgIHJldHVybiBIZWFkaW5nUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpIZWFkaW5nOwogICAgIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1Jvb3QoKSkKLSAg
ICAgICAgcmV0dXJuIFNWR1Jvb3RSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlNWR1Jvb3Q7CiAgICAgCiAgICAgaWYgKGlzU3R5bGVGb3JtYXRHcm91cCgpKQotICAgICAg
ICByZXR1cm4gaXM8UmVuZGVySW5saW5lPigqbV9yZW5kZXJlcikgPyBJbmxpbmVSb2xlIDogVGV4
dEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIGlzPFJlbmRlcklubGluZT4oKm1fcmVuZGVyZXIp
ID8gQWNjZXNzaWJpbGl0eVJvbGU6OklubGluZSA6IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3Jv
dXA7CiAgICAgCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkZFRhZykpCi0gICAg
ICAgIHJldHVybiBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDsKICAgICAKICAgICBpZiAobm9k
ZSAmJiBub2RlLT5oYXNUYWdOYW1lKGR0VGFnKSkKLSAgICAgICAgcmV0dXJuIERlc2NyaXB0aW9u
TGlzdFRlcm1Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0
aW9uTGlzdFRlcm07CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRsVGFnKSkK
LSAgICAgICAgcmV0dXJuIERlc2NyaXB0aW9uTGlzdFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0OwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+
aGFzVGFnTmFtZShmaWVsZHNldFRhZykpCi0gICAgICAgIHJldHVybiBHcm91cFJvbGU7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAKICAgICBpZiAobm9kZSAmJiBu
b2RlLT5oYXNUYWdOYW1lKGZpZ3VyZVRhZykpCi0gICAgICAgIHJldHVybiBGaWd1cmVSb2xlOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZTsKIAogICAgIC8vIENoZWNr
IGZvciBSdWJ5IGVsZW1lbnRzCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieVRleHQoKSkKLSAg
ICAgICAgcmV0dXJuIFJ1YnlUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpSdWJ5VGV4dDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5QmFzZSgpKQotICAgICAg
ICByZXR1cm4gUnVieUJhc2VSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OlJ1YnlCYXNlOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0
dXJuIFJ1YnlSdW5Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlS
dW47CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieUJsb2NrKCkpCi0gICAgICAgIHJldHVybiBS
dWJ5QmxvY2tSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlCbG9j
azsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5SW5saW5lKCkpCi0gICAgICAgIHJldHVybiBS
dWJ5SW5saW5lUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5SW5s
aW5lOwogICAgIAogICAgIC8vIFRoaXMgcmV0dXJuIHZhbHVlIGlzIHdoYXQgd2lsbCBiZSB1c2Vk
IGlmIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgZGV0ZXJtaW5lcwogICAgIC8vIHRoZSBjZWxsIHNo
b3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGNlbGwgKGUuZy4gYmVjYXVzZSBpdCBpcyBhIGxheW91
dCB0YWJsZS4KICAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAg
ICAgcmV0dXJuIFRleHRHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGV4dEdyb3VwOwogCiAgICAgLy8gVGFibGUgc2VjdGlvbnMgc2hvdWxkIGJlIGlnbm9yZWQu
CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzVGFibGVTZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBJ
Z25vcmVkUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOwog
CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzSFIoKSkKLSAgICAgICAgcmV0dXJuIEhvcml6b250YWxS
dWxlUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVs
ZTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUocFRhZykpCi0gICAgICAgIHJl
dHVybiBQYXJhZ3JhcGhSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlBh
cmFncmFwaDsKIAogICAgIGlmIChpczxIVE1MTGFiZWxFbGVtZW50Pihub2RlKSkKLSAgICAgICAg
cmV0dXJuIExhYmVsUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJl
bDsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGZuVGFnKSkKLSAgICAgICAg
cmV0dXJuIERlZmluaXRpb25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OkRlZmluaXRpb247CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRpdlRhZykp
Ci0gICAgICAgIHJldHVybiBEaXZSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OkRpdjsKIAogICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQotICAgICAgICBy
ZXR1cm4gRm9ybVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9ybTsK
IAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYXJ0aWNsZVRhZykpCi0gICAgICAg
IHJldHVybiBEb2N1bWVudEFydGljbGVSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50QXJ0aWNsZTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05h
bWUobWFpblRhZykpCi0gICAgICAgIHJldHVybiBMYW5kbWFya01haW5Sb2xlOworICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjsKIAogICAgIGlmIChub2RlICYm
IG5vZGUtPmhhc1RhZ05hbWUobmF2VGFnKSkKLSAgICAgICAgcmV0dXJuIExhbmRtYXJrTmF2aWdh
dGlvblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZp
Z2F0aW9uOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhc2lkZVRhZykpCi0g
ICAgICAgIHJldHVybiBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeTsKIAogICAgIC8vIFRoZSBk
ZWZhdWx0IHJvbGUgYXR0cmlidXRlIHZhbHVlIGZvciB0aGUgc2VjdGlvbiBlbGVtZW50LCByZWdp
b24sIGJlY2FtZSBhIGxhbmRtYXJrIGluIEFSSUEgMS4xLgogICAgIC8vIFRoZSBIVE1MIEFBTSBz
cGVjIHNheXMgaXQgaXMgInN0cm9uZ2x5IHJlY29tbWVuZGVkIiB0aGF0IEFUcyBvbmx5IGNvbnZl
eSBhbmQgcHJvdmlkZSBuYXZpZ2F0aW9uCiAgICAgLy8gZm9yIHNlY3Rpb24gZWxlbWVudHMgd2hp
Y2ggaGF2ZSBuYW1lcy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHNlY3Rpb25U
YWcpKQotICAgICAgICByZXR1cm4gaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKSB8fCBoYXNB
dHRyaWJ1dGUoYXJpYV9sYWJlbGxlZGJ5QXR0cikgPyBMYW5kbWFya1JlZ2lvblJvbGUgOiBUZXh0
R3JvdXBSb2xlOworICAgICAgICByZXR1cm4gaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKSB8
fCBoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbGxlZGJ5QXR0cikgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtSZWdpb24gOiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwOwogCiAgICAgaWYg
KG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhZGRyZXNzVGFnKSkKLSAgICAgICAgcmV0dXJuIExh
bmRtYXJrQ29udGVudEluZm9Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrQ29udGVudEluZm87CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1l
KGJsb2NrcXVvdGVUYWcpKQotICAgICAgICByZXR1cm4gQmxvY2txdW90ZVJvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QmxvY2txdW90ZTsKIAogICAgIGlmIChub2RlICYm
IG5vZGUtPmhhc1RhZ05hbWUoY2FwdGlvblRhZykpCi0gICAgICAgIHJldHVybiBDYXB0aW9uUm9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDYXB0aW9uOwogICAgIAogICAg
IGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUobWFya1RhZykpCi0gICAgICAgIHJldHVybiBN
YXJrUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXJrOwogCiAgICAg
aWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShwcmVUYWcpKQotICAgICAgICByZXR1cm4gUHJl
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmU7CiAKICAgICBpZiAo
aXM8SFRNTERldGFpbHNFbGVtZW50Pihub2RlKSkKLSAgICAgICAgcmV0dXJuIERldGFpbHNSb2xl
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM7CiAgICAgaWYgKGlz
PEhUTUxTdW1tYXJ5RWxlbWVudD4obm9kZSkpCi0gICAgICAgIHJldHVybiBTdW1tYXJ5Um9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OwogICAgIAogICAgIC8v
IGh0dHA6Ly9yYXdnaXQuY29tL3czYy9hcmlhL21hc3Rlci9odG1sLWFhbS9odG1sLWFhbS5odG1s
CiAgICAgLy8gT3V0cHV0IGVsZW1lbnRzIHNob3VsZCBiZSBtYXBwZWQgdG8gc3RhdHVzIHJvbGUu
CiAgICAgaWYgKGlzT3V0cHV0KCkpCi0gICAgICAgIHJldHVybiBBcHBsaWNhdGlvblN0YXR1c1Jv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM7
CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUp
KQotICAgICAgICByZXR1cm4gVmlkZW9Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OlZpZGVvOwogICAgIGlmIChpczxIVE1MQXVkaW9FbGVtZW50Pihub2RlKSkKLSAgICAg
ICAgcmV0dXJuIEF1ZGlvUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpB
dWRpbzsKICNlbmRpZgogICAgIAogICAgIC8vIFRoZSBIVE1MIGVsZW1lbnQgc2hvdWxkIG5vdCBi
ZSBleHBvc2VkIGFzIGFuIGVsZW1lbnQuIFRoYXQncyB3aGF0IHRoZSBSZW5kZXJWaWV3IGVsZW1l
bnQgZG9lcy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpKQotICAg
ICAgICByZXR1cm4gSWdub3JlZFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SWdub3JlZDsKIAogICAgIC8vIFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBiYW5uZXIvY29u
dGVudEluZm8gcGVyIHBhZ2UuIElmIGhlYWRlci9mb290ZXIgYXJlIGJlaW5nIHVzZWQgd2l0aGlu
IGFuIGFydGljbGUgb3Igc2VjdGlvbgogICAgIC8vIHRoZW4gaXQgc2hvdWxkIG5vdCBiZSBleHBv
c2VkIGFzIHdob2xlIHBhZ2UncyBiYW5uZXIvY29udGVudEluZm8KICAgICBpZiAobm9kZSAmJiBu
b2RlLT5oYXNUYWdOYW1lKGhlYWRlclRhZykgJiYgIWlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUo
YXJ0aWNsZVRhZykgJiYgIWlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoc2VjdGlvblRhZykpCi0g
ICAgICAgIHJldHVybiBMYW5kbWFya0Jhbm5lclJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFn
TmFtZShmb290ZXJUYWcpICYmICFpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKGFydGljbGVUYWcp
ICYmICFpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKHNlY3Rpb25UYWcpKQotICAgICAgICByZXR1
cm4gRm9vdGVyUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI7
CiAgICAgCiAgICAgLy8gbWVudSB0YWdzIHdpdGggdG9vbGJhciB0eXBlIHNob3VsZCBoYXZlIFRv
b2xiYXIgcm9sZS4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKG1lbnVUYWcpICYm
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJpYnV0ZSh0eXBlQXR0ciksICJ0
b29sYmFyIikpCi0gICAgICAgIHJldHVybiBUb29sYmFyUm9sZTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOwogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhh
c1RhZ05hbWUodGltZVRhZykpCi0gICAgICAgIHJldHVybiBUaW1lUm9sZTsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1lOwogICAgIAogICAgIC8vIElmIHRoZSBlbGVtZW50
IGRvZXMgbm90IGhhdmUgcm9sZSwgYnV0IGl0IGhhcyBBUklBIGF0dHJpYnV0ZXMsIG9yIGFjY2Vw
dHMgdGFiIGZvY3VzLCBhY2Nlc3NpYmlsaXR5IHNob3VsZCBmYWxsYmFjayB0byBleHBvc2luZyBp
dCBhcyBhIGdyb3VwLgogICAgIGlmIChzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgfHwgY2FuU2V0
Rm9jdXNBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsKIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1Jl
bmRlckJsb2NrRmxvdygpKQotICAgICAgICByZXR1cm4gbV9yZW5kZXJlci0+aXNBbm9ueW1vdXNC
bG9jaygpID8gVGV4dEdyb3VwUm9sZSA6IEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIG1fcmVu
ZGVyZXItPmlzQW5vbnltb3VzQmxvY2soKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAg
OiBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAgICAgCi0gICAgLy8gSW5saW5lUm9sZSBpcyB0
aGUgZmluYWwgZmFsbGJhY2sgYmVmb3JlIGFzc2lnbmluZyBVbmtub3duUm9sZSB0byBhbiBvYmpl
Y3QuIEl0IG1ha2VzIGl0CisgICAgLy8gSW5saW5lUm9sZSBpcyB0aGUgZmluYWwgZmFsbGJhY2sg
YmVmb3JlIGFzc2lnbmluZyBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biB0byBhbiBvYmplY3Qu
IEl0IG1ha2VzIGl0CiAgICAgLy8gcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggdHJ1bHkgdW5rbm93
biBvYmplY3RzIGZyb20gbm9uLWZvY3VzYWJsZSBpbmxpbmUgdGV4dCBlbGVtZW50cwogICAgIC8v
IHdoaWNoIGhhdmUgYW4gZXZlbnQgaGFuZGxlciBvciBhdHRyaWJ1dGUgc3VnZ2VzdGluZyBwb3Nz
aWJsZSBpbmNsdXNpb24gYnkgdGhlIHBsYXRmb3JtLgogICAgIGlmIChpczxSZW5kZXJJbmxpbmU+
KCptX3JlbmRlcmVyKQogICAgICAgICAmJiAoaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5jbHVz
aW9uKCkKICAgICAgICAgICAgIHx8IChub2RlICYmIG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkp
CiAgICAgICAgICAgICB8fCAoc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpICYmICFnZXRBdHRy
aWJ1dGUoZGF0ZXRpbWVBdHRyKS5pc0VtcHR5KCkpKSkKLSAgICAgICAgcmV0dXJuIElubGluZVJv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5lOwogCi0gICAgcmV0
dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsK
IH0KIAogQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFPcmll
bnRhdGlvbiA9IGdldEF0dHJpYnV0ZShhcmlhX29yaWVudGF0aW9uQXR0cik7CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgImhvcml6b250YWwi
KSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgInZlcnRp
Y2FsIikpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbDsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7CiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgInVuZGVm
aW5lZCIpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVk
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiAK
ICAgICAvLyBJbiBBUklBIDEuMSwgdGhlIGltcGxpY2l0IHZhbHVlIG9mIGFyaWEtb3JpZW50YXRp
b24gY2hhbmdlZCBmcm9tIGhvcml6b250YWwKICAgICAvLyB0byB1bmRlZmluZWQgb24gYWxsIHJv
bGVzIHRoYXQgZG9uJ3QgaGF2ZSB0aGVpciBvd24gcm9sZS1zcGVjaWZpYyB2YWx1ZXMuIEluCiAg
ICAgLy8gYWRkaXRpb24sIHRoZSBpbXBsaWNpdCB2YWx1ZSBvZiBjb21ib2JveCBiZWNhbWUgdW5k
ZWZpbmVkLgogICAgIGlmIChpc0NvbWJvQm94KCkgfHwgaXNSYWRpb0dyb3VwKCkgfHwgaXNUcmVl
R3JpZCgpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVk
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiAK
ICAgICBpZiAoaXNTY3JvbGxiYXIoKSB8fCBpc0xpc3RCb3goKSB8fCBpc01lbnUoKSB8fCBpc1Ry
ZWUoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKICAgICAK
ICAgICBpZiAoaXNNZW51QmFyKCkgfHwgaXNTcGxpdHRlcigpIHx8IGlzVGFiTGlzdCgpIHx8IGlz
VG9vbGJhcigpIHx8IGlzU2xpZGVyKCkpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uOjpIb3Jpem9udGFsOwogICAgIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpv
cmllbnRhdGlvbigpOwogfQpAQCAtMjg4MSwxNCArMjg4MSwxNCBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmluaGVyaXRzCiAKICAgICBjb25zdCBWZWN0b3I8Y29uc3QgSFRNTFF1
YWxpZmllZE5hbWUqPiogcGFyZW50VGFnczsKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0g
ICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0gICAgY2FzZSBMaXN0TWFya2VyUm9sZTogeworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RNYXJrZXI6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gbGlzdEl0ZW1QYXJl
bnRzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+
IHsgJmRsVGFnLCAmb2xUYWcsICZ1bFRhZyB9KTsKICAgICAgICAgcGFyZW50VGFncyA9ICZsaXN0
SXRlbVBhcmVudHMuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEdyaWRD
ZWxsUm9sZToKLSAgICBjYXNlIENlbGxSb2xlOiB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDogewogICAgICAg
ICBzdGF0aWMgY29uc3QgYXV0byB0YWJsZUNlbGxQYXJlbnRzID0gbWFrZU5ldmVyRGVzdHJveWVk
KFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+IHsgJnRhYmxlVGFnIH0pOwogICAgICAg
ICBwYXJlbnRUYWdzID0gJnRhYmxlQ2VsbFBhcmVudHMuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMjkxMCw3ICsyOTEwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhl
cml0cwogICAgICAgICAvLyBiYXNlZCBvbiBpdHMgcHJlc2VudGF0aW9uYWwgc3RhdHVzLgogICAg
ICAgICBhdXRvJiBuYW1lID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLnRhZ1FOYW1lKCk7CiAg
ICAgICAgIGlmIChzdGQ6OmFueV9vZihwYXJlbnRUYWdzLT5iZWdpbigpLCBwYXJlbnRUYWdzLT5l
bmQoKSwgWyZuYW1lXSAoYXV0byogcG9zc2libGVOYW1lKSB7IHJldHVybiAqcG9zc2libGVOYW1l
ID09IG5hbWU7IH0pKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+cm9sZVZhbHVlKCkgPT0g
UHJlc2VudGF0aW9uYWxSb2xlOworICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+cm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsOwogICAgIH0KIAogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI5MjksMTEgKzI5MjksMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc1ByZXNlbgogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojphcmlh
Um9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdAogewogICAgIHN3aXRjaCAobV9h
cmlhUm9sZSkgewotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFNsaWRlclJvbGU6Ci0g
ICAgY2FzZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6Ci0gICAg
Y2FzZSBTcGluQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5k
aWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b246CiAgICAgLy8g
Y2FzZSBTZXBhcmF0b3JSb2xlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpA
QCAtMjk0Myw3ICsyOTQzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojphcmlh
Um9sZQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0
cmlidXRlKCkgY29uc3QKIHsKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gRGV0YWlsc1JvbGUpCisg
ICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBBbiBvYmplY3QgY2FuIGJlIGV4cGFuZGVkIGlm
IGl0IGFyaWEtZXhwYW5kZWQgaXMgdHJ1ZSBvciBmYWxzZS4KQEAgLTI5OTcsNyArMjk5Nyw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2UKICAgICAgICAgLy8gYWRk
IGFuIDxhcmVhPiBlbGVtZW50IGZvciB0aGlzIGNoaWxkIGlmIGl0IGhhcyBhIGxpbmsKICAgICAg
ICAgaWYgKCFhcmVhLmlzTGluaygpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1
dG8mIGFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShJbWFnZU1hcExpbmtSb2xlKSk7CisgICAgICAgIGF1
dG8mIGFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5r
KSk7CiAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTEFyZWFFbGVtZW50KCZhcmVhKTsKICAgICAg
ICAgYXJlYU9iamVjdC5zZXRIVE1MTWFwRWxlbWVudChtYXApOwogICAgICAgICBhcmVhT2JqZWN0
LnNldFBhcmVudCh0aGlzKTsKQEAgLTMwMzIsNyArMzAzMiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkVGV4dEYKICAgICBpZiAoIWlzPFNwaW5CdXR0b25FbGVtZW50Pihz
cGluQnV0dG9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIGF4U3BpbkJ1
dHRvbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShTcGluQnV0dG9uUm9sZSkpOworICAgIGF1dG8mIGF4U3BpbkJ1dHRvbiA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbikpOwogICAgIGF4U3BpbkJ1dHRv
bi5zZXRTcGluQnV0dG9uRWxlbWVudChkb3duY2FzdDxTcGluQnV0dG9uRWxlbWVudD4oc3BpbkJ1
dHRvbkVsZW1lbnQpKTsKICAgICBheFNwaW5CdXR0b24uc2V0UGFyZW50KHRoaXMpOwogICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZheFNwaW5CdXR0b24pOwpAQCAtMzIwNSw3ICszMjA1LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRIaWRkZQogdm9pZCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojp1cGRhdGVSb2xlQWZ0ZXJDaGlsZHJlbkNyZWF0aW9uKCkKIHsKICAgICAv
LyBJZiBhIG1lbnUgZG9lcyBub3QgaGF2ZSB2YWxpZCBtZW51aXRlbSBjaGlsZHJlbiwgaXQgc2hv
dWxkIG5vdCBiZSBleHBvc2VkIGFzIGEgbWVudS4KLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gTWVu
dVJvbGUpIHsKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUp
IHsKICAgICAgICAgLy8gRWxlbWVudHMgbWFya2VkIGFzIG1lbnVzIG11c3QgaGF2ZSBhdCBsZWFz
dCBvbmUgbWVudSBpdGVtIGNoaWxkLgogICAgICAgICBzaXplX3QgbWVudUl0ZW1Db3VudCA9IDA7
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CkBAIC0zMjE2
LDcgKzMyMTYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIW1lbnVJdGVtQ291bnQpCi0gICAgICAgICAgICBtX3Jv
bGUgPSBHcm91cFJvbGU7CisgICAgICAgICAgICBtX3JvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JvdXA7CiAgICAgfQogfQogICAgIApAQCAtMzI5MCw4ICszMjkwLDggQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGl2ZQogCiAgICAgLy8gV0FJLUFSSUEgImFsZXJ0IiBh
bmQgInN0YXR1cyIgcm9sZXMgaGF2ZSBhbiBpbXBsaWNpdCBhcmlhLWF0b21pYyB2YWx1ZSBvZiB0
cnVlLgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnRSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzMDcsMTYgKzMzMDcsMTYgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5IYXZlUwogewogICAgIHN3aXRjaCAocm9sZVZhbHVl
KCkpIHsKICAgICAvLyBUaGVzZSByb2xlcyBhcmUgY29udGFpbmVycyB3aG9zZSBjaGlsZHJlbiBz
dXBwb3J0IGFyaWEtc2VsZWN0ZWQ6Ci0gICAgY2FzZSBHcmlkUm9sZToKLSAgICBjYXNlIExpc3RC
b3hSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2FzZSBUcmVlUm9sZToKLSAgICBj
YXNlIFRyZWVHcmlkUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFiTGlzdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgogICAgIC8vIFRoZXNlIHJvbGVzIGFyZSBj
b250YWluZXJzIHdob3NlIGNoaWxkcmVuIGFyZSB0cmVhdGVkIGFzIHNlbGVjdGVkIGJ5IGFzc2lz
dGl2ZQogICAgIC8vIHRlY2hub2xvZ2llcy4gV2UgY2FuIGdldCB0aGUgInNlbGVjdGVkIiBpdGVt
IHZpYSBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgb3IgdGhlCiAgICAgLy8gZm9jdXNlZCBlbGVtZW50
LgotICAgIGNhc2UgTWVudVJvbGU6Ci0gICAgY2FzZSBNZW51QmFyUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVC
YXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTMzNjMsNyArMzM2Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YXJpYUxpc3QKIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7
CiAgICAgICAgIC8vIEV2ZXJ5IGNoaWxkIHNob3VsZCBoYXZlIGFyaWEtcm9sZSBvcHRpb24sIGFu
ZCBpZiBzbywgY2hlY2sgZm9yIHNlbGVjdGVkIGF0dHJpYnV0ZS9zdGF0ZS4KLSAgICAgICAgaWYg
KGNoaWxkLT5pc1NlbGVjdGVkKCkgJiYgY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTGlz
dEJveE9wdGlvblJvbGUpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5pc1NlbGVjdGVkKCkgJiYgY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRp
b24pIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hpbGQpOwogICAgICAgICAgICAgaWYg
KCFpc011bHRpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzNzksMjEgKzMzNzksMjEg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZAogICAgICAgICByZXR1
cm47CiAKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OgogICAgICAgICAvLyBuYXRpdmUg
bGlzdCBib3hlcyB3b3VsZCBiZSBBY2Nlc3NpYmlsaXR5TGlzdEJveGVzLCBzbyBvbmx5IGNoZWNr
IGZvciBhcmlhIGxpc3QgYm94ZXMKICAgICAgICAgYXJpYUxpc3Rib3hTZWxlY3RlZENoaWxkcmVu
KHJlc3VsdCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEdyaWRSb2xlOgotICAgIGNhc2Ug
VHJlZVJvbGU6Ci0gICAgY2FzZSBUcmVlR3JpZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgogICAgICAgICBhcmlhU2VsZWN0ZWRSb3dzKHJl
c3VsdCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRhYkxpc3RSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q6CiAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBzZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChzZWxlY3RlZFRhYik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1lbnVSb2xl
OgotICAgIGNhc2UgTWVudUJhclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOgogICAgICAgICBpZiAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogZGVzY2VuZGFudCA9IGFjdGl2ZURlc2NlbmRhbnQoKSkgewogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChkZXNjZW5kYW50KTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM0MjQsNyArMzQyNCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlz
aWJsZUMKICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7CiAgICAgICAgIAogICAgIC8vIG9u
bHkgbGlzdGJveGVzIGFyZSBhc2tlZCBmb3IgdGhlaXIgdmlzaWJsZSBjaGlsZHJlbi4gCi0gICAg
aWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gTGlzdEJveFJvbGUpIHsgLy8gbmF0aXZlIGxpc3Qg
Ym94ZXMgd291bGQgYmUgQWNjZXNzaWJpbGl0eUxpc3RCb3hlcywgc28gb25seSBjaGVjayBmb3Ig
YXJpYSBsaXN0IGJveGVzCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RCb3gpIHsKKyAgICAgICAgLy8gbmF0aXZlIGxpc3QgYm94ZXMgd291bGQg
YmUgQWNjZXNzaWJpbGl0eUxpc3RCb3hlcywgc28gb25seSBjaGVjayBmb3IgYXJpYSBsaXN0IGJv
eGVzCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMzQzMyw3ICszNDM0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2
aXNpYmxlQwogIAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQocm9sZVZh
bHVlKCkgPT0gVGFiTGlzdFJvbGUpOworICAgIEFTU0VSVChyb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6
IGNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc1RhYkl0ZW0oKSkKQEAgLTM0NTMs
MTggKzM0NTQsMTggQEAgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ogog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGxpbmtBY3Rpb24oQVhMaW5r
QWN0aW9uVmVyYigpKTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEJ1
dHRvblJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0
b246CiAgICAgICAgIHJldHVybiBidXR0b25BY3Rpb247Ci0gICAgY2FzZSBUZXh0RmllbGRSb2xl
OgotICAgIGNhc2UgVGV4dEFyZWFSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRl
eHRGaWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKICAgICAgICAg
cmV0dXJuIHRleHRGaWVsZEFjdGlvbjsKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKICAgICAgICAgcmV0dXJuIHJhZGlv
QnV0dG9uQWN0aW9uOwotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OgogICAgICAgICByZXR1cm4gaXNDaGVja2VkKCkgPyBjaGVja2Vk
Q2hlY2tCb3hBY3Rpb24gOiB1bmNoZWNrZWRDaGVja0JveEFjdGlvbjsKLSAgICBjYXNlIExpbmtS
b2xlOgotICAgIGNhc2UgV2ViQ29yZUxpbmtSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms6CiAgICAg
ICAgIHJldHVybiBsaW5rQWN0aW9uOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOwpAQCAtMzY1NSwyNSArMzY1NiwyNSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6ZGVzY3JpCiBzdGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgbXNhYVJvbGVGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duOwogCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpCi0g
ICAgICAgIHJldHVybiBFZGl0YWJsZVRleHRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OkVkaXRhYmxlVGV4dDsKIAogICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4oKnJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIExpc3RJdGVtUm9sZTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsKIAotICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKIEFjY2Vzc2liaWxpdHlS
b2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdAog
ewotICAgIGlmIChtX3JvbGVGb3JNU0FBICE9IFVua25vd25Sb2xlKQorICAgIGlmIChtX3JvbGVG
b3JNU0FBICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gbV9y
b2xlRm9yTVNBQTsKIAogICAgIG1fcm9sZUZvck1TQUEgPSBtc2FhUm9sZUZvclJlbmRlcmVyKHJl
bmRlcmVyKCkpOwogCi0gICAgaWYgKG1fcm9sZUZvck1TQUEgPT0gVW5rbm93blJvbGUpCisgICAg
aWYgKG1fcm9sZUZvck1TQUEgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAg
IG1fcm9sZUZvck1TQUEgPSByb2xlVmFsdWUoKTsKIAogICAgIHJldHVybiBtX3JvbGVGb3JNU0FB
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsMTEgKzExMSwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojph
Y2Nlc3NpYmlsCiB7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCk7CiAgICAgaWYgKCFkZXNjcmlwdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIHRleHRP
cmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoZGVzY3JpcHRpb24sIEFsdGVybmF0aXZlVGV4
dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaXB0
aW9uLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKIAogICAgIFN0cmlu
ZyBoZWxwdGV4dCA9IGhlbHBUZXh0KCk7CiAgICAgaWYgKCFoZWxwdGV4dC5pc0VtcHR5KCkpCi0g
ICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaGVscHRleHQsIEhlbHBU
ZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaGVscHRl
eHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwKSk7CiB9CiAKIFN0cmluZyBBY2Nlc3Np
YmlsaXR5U1ZHRWxlbWVudDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTIx
Nyw3ICsyMTcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojpjb21wdXRlQWNjCiAg
ICAgLy8gKiBUaGV5IGhhdmUgYW4gYW5jZXN0b3Igd2l0aCBDaGlsZHJlbiBQcmVzZW50YXRpb25h
bDogVHJ1ZSAoY292ZXJlZCBieSBDb3JlIEFBTSkKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRl
Y2lzaW9uID09IElnbm9yZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR0hpZGRlbkNvbnRhaW5lcigpKQpAQCAtMjMwLDEwICsy
MzAsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6Y29tcHV0ZUFjYwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBQcmVz
ZW50YXRpb25hbFJvbGUgfHwgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSkKKyAgICBpZiAo
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsIHx8IGluaGVy
aXRzUHJlc2VudGF0aW9uYWxSb2xlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIFRoZSBTVkcgQUFNIHN0YXRlcyB0ZXh0IGVsZW1lbnRzIHNob3VsZCBh
bHNvIGJlIGluY2x1ZGVkLCBpZiB0aGV5IGhhdmUgY29udGVudC4KQEAgLTI1OCwxMiArMjU4LDEy
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmluaGVyaXRzUHIKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgpOwot
ICAgIGlmIChyb2xlICE9IFNWR1RleHRQYXRoUm9sZSAmJiByb2xlICE9IFNWR1RTcGFuUm9sZSkK
KyAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dFBhdGggJiYgcm9sZSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVFNwYW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBh
cmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAgICBpZiAoaXM8
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4oKnBhcmVudCkgJiYgcGFyZW50LT5lbGVtZW50KCkt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+cm9sZVZhbHVlKCkgPT0gUHJlc2VudGF0aW9uYWxSb2xlOworICAgICAgICAgICAgcmV0dXJu
IHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFs
OwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTI3Miw3ICsyNzIsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlTVkdFbGVtZW50Ojppbmhlcml0c1ByCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdAog
ewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChyb2xlICE9IFByZXNlbnRh
dGlvbmFsUm9sZSkKKyAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0
aW9uYWwpCiAgICAgICAgIHJldHVybiByb2xlOwogCiAgICAgLy8gVGhlIHByZXNlbmNlIG9mIGEg
J3RpdGxlJyBvciAnZGVzYycgY2hpbGQgZWxlbWVudCB0cnVtcHMgUHJlc2VudGF0aW9uYWxSb2xl
LgpAQCAtMjgwLDcgKzI4MCw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlTVkdF
bGVtZW4KICAgICAvLyBBdCB0aGlzIHRpbWUsIHRoZSBwcmVzZW5jZSBvZiBhIG1hdGNoaW5nICds
YW5nJyBhdHRyaWJ1dGUgaXMgbm90IG1lbnRpb25lZC4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkIDogY2hpbGRyZW5PZlR5cGU8U1ZHRWxlbWVudD4oKmVsZW1lbnQoKSkpIHsKICAgICAgICAg
aWYgKChpczxTVkdUaXRsZUVsZW1lbnQ+KGNoaWxkKSB8fCBpczxTVkdEZXNjRWxlbWVudD4oY2hp
bGQpKSkKLSAgICAgICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKICAgICB9CiAKICAgICByZXR1cm4gcm9sZTsK
QEAgLTI4OCwyMyArMjg4LDIzIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlTVkdF
bGVtZW4KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJv
bGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bikKICAgICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAKICAgICBFbGVtZW50KiBzdmdF
bGVtZW50ID0gZWxlbWVudCgpOwogCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHU2hhcGUoKSB8
fCBtX3JlbmRlcmVyLT5pc1NWR1BhdGgoKSB8fCBtX3JlbmRlcmVyLT5pc1NWR0ltYWdlKCkgfHwg
aXM8U1ZHVXNlRWxlbWVudD4oc3ZnRWxlbWVudCkpCi0gICAgICAgIHJldHVybiBJbWFnZVJvbGU7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U7CiAgICAgaWYgKG1fcmVu
ZGVyZXItPmlzU1ZHRm9yZWlnbk9iamVjdCgpIHx8IGlzPFNWR0dFbGVtZW50PihzdmdFbGVtZW50
KSkKLSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcm91cDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdUZXh0KCkpCi0gICAgICAg
IHJldHVybiBTVkdUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpT
VkdUZXh0OwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1RleHRQYXRoKCkpCi0gICAgICAgIHJl
dHVybiBTVkdUZXh0UGF0aFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U1ZHVGV4dFBhdGg7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHVFNwYW4oKSkKLSAgICAgICAg
cmV0dXJuIFNWR1RTcGFuUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpT
VkdUU3BhbjsKICAgICBpZiAoaXM8U1ZHQUVsZW1lbnQ+KHN2Z0VsZW1lbnQpKQotICAgICAgICBy
ZXR1cm4gV2ViQ29yZUxpbmtSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OldlYkNvcmVMaW5rOwogCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCShyZXZpc2lvbiAyMjQw
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICBXZWFrUHRyPEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+IG1fcGFyZW50OwotICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEdyb3Vw
Um9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsgfQogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gMjI0MDcxKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEwICs2NSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsCiAgICAgCiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewog
ICAgIC8vIEFSSUEgMS4xIEVsZW1lbnRzIHdpdGggdGhlIHJvbGUgc2Nyb2xsYmFyIGhhdmUgYW4g
aW1wbGljaXQgYXJpYS1vcmllbnRhdGlvbiB2YWx1ZSBvZiB2ZXJ0aWNhbC4KLSAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblVuZGVmaW5lZDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvblZlcnRpY2FsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpV
bmRlZmluZWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOgog
ICAgICAgICByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhciA/IG1fdmVydGljYWxTY3JvbGxiYXIu
Z2V0KCkgOiBudWxscHRyOwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpv
bnRhbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDoKICAg
ICAgICAgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbFNjcm9sbGJh
ci5nZXQoKSA6IG51bGxwdHI7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAkocmV2aXNp
b24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNjcm9s
bFZpZXc7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyBmaW5hbCA6IHB1YmxpYyBBY2Nl
c3NpYmlsaXR5T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3PiBjcmVhdGUoU2Nyb2xsVmlldyopOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbEFyZWFSb2xlOyB9CisgICAg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxWaWV3OyB9CiAKICAgICB2aXJ0dWFsIH5BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwCShyZXZpc2lvbiAyMjQwNzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxNCArNjcsMTQgQEAgQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uIEFjY2Vzc2liaWxpdHlTYwogewogICAgIC8vIEFSSUEgMS4xIEVsZW1lbnRzIHdpdGgg
dGhlIHJvbGUgc2Nyb2xsYmFyIGhhdmUgYW4gaW1wbGljaXQgYXJpYS1vcmllbnRhdGlvbiB2YWx1
ZSBvZiB2ZXJ0aWNhbC4KICAgICBpZiAoIW1fc2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwogCiAgICAgaWYgKG1fc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
OjpWZXJ0aWNhbDsKIAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNh
bDsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjppc0VuYWJsZWQoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyLmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbEJhclJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U2Nyb2xsQmFyOyB9CiAgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2
aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVNsCiB7CiAgICAgLy8gRGVmYXVsdCB0byBob3Jp
em9udGFsIGluIHRoZSB1bmtub3duIGNhc2UuCiAgICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICAKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBtX3JlbmRlcmVyLT5zdHlsZSgpOwogCkBAIC02NCwxNSAr
NjQsMTUgQEAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlTbAogICAgIGNh
c2UgU2xpZGVySG9yaXpvbnRhbFBhcnQ6CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6CiAgICAg
Y2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJQYXJ0OgotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICAKICAgICBjYXNlIFNsaWRlclRodW1i
VmVydGljYWxQYXJ0OiAKICAgICBjYXNlIFNsaWRlclZlcnRpY2FsUGFydDoKICAgICBjYXNlIE1l
ZGlhVm9sdW1lU2xpZGVyUGFydDoKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRh
dGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpW
ZXJ0aWNhbDsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAgfQogfQogICAgIApAQCAtODQsNyArODQsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKCkKIAogICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAK
LSAgICBhdXRvJiB0aHVtYiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNh
Y2hlLT5nZXRPckNyZWF0ZShTbGlkZXJUaHVtYlJvbGUpKTsKKyAgICBhdXRvJiB0aHVtYiA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIpKTsKICAgICB0aHVtYi5zZXRQYXJlbnQodGhpcyk7
CiAKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRoZSB2YWx1ZSBpbmRpY2F0b3IgdG8g
dGhlIGhpZXJhcmNoeSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2xpZGVyUm9s
ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7IH0KICAgICBib29sIGlzU2xpZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPiBjcmVhdGUoKTsKICAgICB2aXJ0
dWFsIH5BY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIoKSA9IGRlZmF1bHQ7CiAKLSAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTbGlkZXJUaHVt
YlJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI7IH0KICAgICBMYXlvdXRS
ZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEy
ICs4OCwxMiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjphZGRDaGlsZHJlCiAgICAg
CiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogICAgIAotICAgIGF1dG8mIGluY3JlbWVudG9y
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3Jl
YXRlKFNwaW5CdXR0b25QYXJ0Um9sZSkpOworICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOwogICAgIGluY3JlbWVudG9yLnNldElzSW5j
cmVtZW50b3IodHJ1ZSk7CiAgICAgaW5jcmVtZW50b3Iuc2V0UGFyZW50KHRoaXMpOwogICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZpbmNyZW1lbnRvcik7CiAKLSAgICBhdXRvJiBkZWNyZW1lbnRvciA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0
ZShTcGluQnV0dG9uUGFydFJvbGUpKTsKKyAgICBhdXRvJiBkZWNyZW1lbnRvciA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBkZWNyZW1lbnRvci5zZXRJc0luY3Jl
bWVudG9yKGZhbHNlKTsKICAgICBkZWNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9j
aGlsZHJlbi5hcHBlbmQoJmRlY3JlbWVudG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgJKHJldmlzaW9u
IDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKCk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTcGluQnV0dG9uUm9sZTsg
fQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9CiAgICAgYm9vbCBpc1NwaW5CdXR0
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVNw
aW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhZGRD
aGlsZHJlbigpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uUGFydCgpOwogICAgIAogICAgIGJvb2wgcHJlc3MoKSBvdmVycmlk
ZTsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBCdXR0b25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjsgfQogICAgIGJv
b2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJ
KHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6aGFzQVJJQVJvbGUoKSBjCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9IGFyaWFSb2xlQXR0cmlidXRl
KCk7Ci0gICAgaWYgKGFyaWFSb2xlICE9IFVua25vd25Sb2xlKQorICAgIGlmIChhcmlhUm9sZSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmFkZENoaWxkcmVuKCkKICAgICAvLyBtYWtlIHRoZSBjb2x1bW5zIGJhc2VkIG9uIHRoZSBu
dW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IG1heENvbHVtbkNvdW50OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4+KCpheENhY2hlLT5nZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGF1dG8m
IGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsKICAgICAgICAgY29sdW1uLnNl
dENvbHVtbkluZGV4KChpbnQpaSk7CiAgICAgICAgIGNvbHVtbi5zZXRQYXJlbnQodGhpcyk7CiAg
ICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7CkBAIC01MDUsNyArNTA1LDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOgogICAgIGlmIChtX2hlYWRlckNv
bnRhaW5lcikKICAgICAgICAgcmV0dXJuIG1faGVhZGVyQ29udGFpbmVyLmdldCgpOwogICAgIAot
ICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q+
KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKFRhYmxlSGVhZGVyQ29udGFpbmVyUm9sZSkp
OworICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3Q+KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJs
ZUhlYWRlckNvbnRhaW5lcikpOwogICAgIHRhYmxlSGVhZGVyLnNldFBhcmVudCh0aGlzKTsKIAog
ICAgIG1faGVhZGVyQ29udGFpbmVyID0gJnRhYmxlSGVhZGVyOwpAQCAtNjQ3LDE4ICs2NDcsMTgg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpybwogICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9sZVZhbHVlKCk7CiAgICAgCiAgICAgQWNj
ZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBhcmlhUm9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChh
cmlhUm9sZSA9PSBHcmlkUm9sZSB8fCBhcmlhUm9sZSA9PSBUcmVlR3JpZFJvbGUpCisgICAgaWYg
KGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkIHx8IGFyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpUcmVlR3JpZCkKICAgICAgICAgcmV0dXJuIGFyaWFSb2xlOwogCi0gICAg
cmV0dXJuIFRhYmxlUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlOwog
fQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lz
aW9uID0gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNs
dWRlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uOjpJbmNsdWRlT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lz
aW9uID09IElnbm9yZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
ICAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKQEAgLTY3MSw3ICs2
NzEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGVFbGVtZW50VGV4CiB7CiAgICAg
U3RyaW5nIHRpdGxlID0gdGhpcy0+dGl0bGUoKTsKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkK
LSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZSwgTGFiZWxC
eUVsZW1lbnRUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCkpOwogfQog
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDkgKzU4LDkg
QEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2liaWxpdAogYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmpl
Y3RJbmNsdXNpb24oKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICBp
ZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmpl
Y3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Okln
bm9yZU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gSWdub3JlIGFu
b255bW91cyB0YWJsZSBjZWxscyBhcyBsb25nIGFzIHRoZXkncmUgbm90IGluIGEgdGFibGUgKGll
LiB3aGVuIGRpc3BsYXk6dGFibGUgaXMgdXNlZCkuCkBAIC0xMjgsMTcgKzEyOCwxNyBAQCBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsCiAgICAgLy8gcm9sZSwgZmFsbGlu
ZyBiYWNrIG9uIHRoZSByb2xlIHRvIGJlIHVzZWQgaWYgd2UgZGV0ZXJtaW5lIGhlcmUgdGhhdCB0
aGUgZWxlbWVudAogICAgIC8vIHNob3VsZCBub3QgYmUgZXhwb3NlZCBhcyBhIGNlbGwuIFRodXMg
aWYgd2UgYWxyZWFkeSBrbm93IGl0J3MgYSBjZWxsLCByZXR1cm4gdGhhdC4KICAgICBBY2Nlc3Np
YmlsaXR5Um9sZSBkZWZhdWx0Um9sZSA9IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7Ci0gICAgaWYgKGRlZmF1bHRSb2xlID09IENvbHVtbkhl
YWRlclJvbGUgfHwgZGVmYXVsdFJvbGUgPT0gUm93SGVhZGVyUm9sZSB8fCBkZWZhdWx0Um9sZSA9
PSBDZWxsUm9sZSB8fCBkZWZhdWx0Um9sZSA9PSBHcmlkQ2VsbFJvbGUpCisgICAgaWYgKGRlZmF1
bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIgfHwgZGVmYXVsdFJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q2VsbCB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jp
ZENlbGwpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Um9sZTsKIAogICAgIGlmICghaXNUYWJsZUNl
bGwoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlOwogICAgIGlmIChpc0NvbHVtbkhlYWRl
ckNlbGwoKSkKLSAgICAgICAgcmV0dXJuIENvbHVtbkhlYWRlclJvbGU7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyOwogICAgIGlmIChpc1Jvd0hlYWRlckNl
bGwoKSkKLSAgICAgICAgcmV0dXJuIFJvd0hlYWRlclJvbGU7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOwogCi0gICAgcmV0dXJuIENlbGxSb2xlOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUhlYWRlckNlbGwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUMKICAgICAKICAgICBp
ZiAocGFyZW50VGFibGUuaXNBcmlhVGFibGUoKSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNlbGwgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAoY2VsbC0+YXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBDb2x1bW5IZWFkZXJSb2xlKQorICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFS
b2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcikKICAgICAg
ICAgICAgICAgICByZXR1cm4gY2VsbC5nZXQoKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVy
T2JqZWN0KCk7CiAgICAgICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbHVtblJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRleChpbnQgY29sdW1uSW5kZXgp
IHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CiAgICAgaW50IGNvbHVtbkluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9jb2x1bW5JbmRleDsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmls
aXR5VGFibGVIZWFkZXJDb250YWluZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2li
aWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcigpOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFRhYmxlSGVhZGVyQ29udGFpbmVy
Um9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjsgfQogICAg
IAogICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5j
cHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDEwIEBA
IEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzoKICAgICBpZiAoIWlzVGFi
bGVSb3coKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJv
bGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bikKICAgICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAKLSAgICByZXR1cm4gUm93Um9s
ZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzsKIH0KIAogYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGVSb3c6OmlzVGFibGVSb3coKSBjb25zdApAQCAtODAsOSArODAsOSBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSCiBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZVJvdzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogeyAgICAKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gZGVmYXVsdE9iamVjdElu
Y2x1c2lvbigpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQorICAgIGlmIChk
ZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkK
KyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoIWlzVGFibGVSb3co
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRyZWUuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5
LDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmNvbXB1dGVBY2Nlc3NpYmkKIAogQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRyZWU6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkKIHsKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgp
KSAhPSBUcmVlUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0
dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSkKICAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAK
LSAgICByZXR1cm4gaXNUcmVlVmFsaWQoKSA/IFRyZWVSb2xlIDogR3JvdXBSb2xlOworICAgIHJl
dHVybiBpc1RyZWVWYWxpZCgpID8gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWUgOiBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JvdXA7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6Om5vZGVIYXNUcmVl
SXRlbUNoaWxkKE5vZGUmIG5vZGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAkocmV2aXNpb24gMjI0
MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpkZXRhY2hXcmFwcGVyKEFjY2VzcwogCiAgICAgLy8gSWYgYW4gb2JqZWN0IGlzIGJlaW5nIGRl
dGFjaGVkIE5PVCBiZWNhdXNlIG9mIHRoZSBBWE9iamVjdENhY2hlIGJlaW5nIGRlc3Ryb3llZCwK
ICAgICAvLyB0aGVuIGl0J3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBhY2Nlc3NpYmlsaXR5IHRy
ZWUgYW5kIHdlIHNob3VsZCBlbWl0IGEgc2lnbmFsLgotICAgIGlmIChkZXRhY2htZW50VHlwZSAh
PSBDYWNoZURlc3Ryb3llZCkgeworICAgIGlmIChkZXRhY2htZW50VHlwZSAhPSBBY2Nlc3NpYmls
aXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKSB7CiAgICAgICAgIGlmIChvYmotPmRv
Y3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIExvb2sgZm9yIHRoZSByaWdodCBvYmplY3QgdG8g
ZW1pdCB0aGUgc2lnbmFsIGZyb20sIGJ1dCB1c2luZyB0aGUgaW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgIC8vIG9mIGF0a19vYmplY3RfZ2V0X3BhcmVudCBmcm9tIEF0a09iamVjdCBjbGFzcyAo
d2hpY2ggdXNlcyBhIGNhY2hlZCBwb2ludGVyIGlmIHNldCkKQEAgLTI0NCw3ICsyNDQsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhCiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBBWEN1cnJlbnRDaGFuZ2VkOgotICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9z
dGF0ZV9jaGFuZ2UoYXhPYmplY3QsIEFUS19TVEFURV9BQ1RJVkUsIGNvcmVPYmplY3QtPmFyaWFD
dXJyZW50U3RhdGUoKSAhPSBBUklBQ3VycmVudEZhbHNlKTsKKyAgICAgICAgYXRrX29iamVjdF9u
b3RpZnlfc3RhdGVfY2hhbmdlKGF4T2JqZWN0LCBBVEtfU1RBVEVfQUNUSVZFLCBjb3JlT2JqZWN0
LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZh
bHNlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFYUm93RXhwYW5kZWQ6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZVV0aWwuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk2LDIxICs5NiwyMSBAQCBTdHJpbmcgYWNjZXNzaWJpbGl0eVRpdGxlKEFjY2Vzc2liaWxpdHlP
CiAKICAgICBmb3IgKGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0JiB0ZXh0IDogdGV4dE9yZGVyKSB7
CiAgICAgICAgIC8vIE9uY2Ugd2UgZW5jb3VudGVyIHZpc2libGUgdGV4dCwgb3IgdGhlIHRleHQg
ZnJvbSBvdXIgY2hpbGRyZW4gdGhhdCBzaG91bGQgYmUgdXNlZCBmb3JlbW9zdC4KLSAgICAgICAg
aWYgKHRleHQudGV4dFNvdXJjZSA9PSBWaXNpYmxlVGV4dCB8fCB0ZXh0LnRleHRTb3VyY2UgPT0g
Q2hpbGRyZW5UZXh0KQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxp
dHlUZXh0U291cmNlOjpWaXNpYmxlIHx8IHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5
VGV4dFNvdXJjZTo6Q2hpbGRyZW4pCiAgICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwogCiAg
ICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZWxlbWVudCB0aGF0IGxhYmVscyB0aGlzIG9iamVjdCBh
bmQgaXQncyBub3QgZXhwb3NlZCwgdGhlbiB3ZSBzaG91bGQgdXNlCiAgICAgICAgIC8vIHRoYXQg
dGV4dCBhcyBvdXIgdGl0bGUuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gTGFiZWxC
eUVsZW1lbnRUZXh0ICYmICFjb3JlT2JqZWN0LT5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKKyAg
ICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFi
ZWxCeUVsZW1lbnQgJiYgIWNvcmVPYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsKIAotICAgICAgICAvLyBFbGVtZW50cyBvZiByb2xl
IFRvb2xiYXJSb2xlIHdpbGwgcmV0dXJuIGl0cyB0aXRsZSBhcyBBbHRlcm5hdGl2ZVRleHQuCi0g
ICAgICAgIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBUb29sYmFyUm9sZSAmJiB0ZXh0
LnRleHRTb3VyY2UgPT0gQWx0ZXJuYXRpdmVUZXh0KQorICAgICAgICAvLyBFbGVtZW50cyBvZiBy
b2xlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyIHdpbGwgcmV0dXJuIGl0cyB0aXRsZSBhcyBB
Y2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUuCisgICAgICAgIGlmIChjb3JlT2Jq
ZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhciAmJiB0ZXh0LnRl
eHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKQogICAgICAg
ICAgICAgcmV0dXJuIHRleHQudGV4dDsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIHRpdGxlIHRh
ZyBpcyB1c2VkIGluIGNlcnRhaW4gY2FzZXMgZm9yIHRoZSB0aXRsZS4gVGhpcyB1c2FnZSBzaG91
bGQKICAgICAgICAgLy8gcHJvYmFibHkgYmUgaW4gdGhlIGRlc2NyaXB0aW9uIGZpZWxkIHNpbmNl
IGl0J3Mgbm90ICJ2aXNpYmxlIi4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBUaXRs
ZVRhZ1RleHQgJiYgIXRpdGxlVGFnU2hvdWxkQmVVc2VkSW5EZXNjcmlwdGlvbkZpZWxkKGNvcmVP
YmplY3QpKQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlOjpUaXRsZVRhZyAmJiAhdGl0bGVUYWdTaG91bGRCZVVzZWRJbkRlc2NyaXB0aW9uRmll
bGQoY29yZU9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwogICAgIH0KIApA
QCAtMTI0LDE5ICsxMjQsMTkgQEAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbihBY2Nl
c3NpYgogCiAgICAgYm9vbCB2aXNpYmxlVGV4dEF2YWlsYWJsZSA9IGZhbHNlOwogICAgIGZvciAo
Y29uc3QgQWNjZXNzaWJpbGl0eVRleHQmIHRleHQgOiB0ZXh0T3JkZXIpIHsKLSAgICAgICAgaWYg
KHRleHQudGV4dFNvdXJjZSA9PSBBbHRlcm5hdGl2ZVRleHQpCisgICAgICAgIGlmICh0ZXh0LnRl
eHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKQogICAgICAg
ICAgICAgcmV0dXJuIHRleHQudGV4dDsKIAogICAgICAgICBzd2l0Y2ggKHRleHQudGV4dFNvdXJj
ZSkgewotICAgICAgICBjYXNlIFZpc2libGVUZXh0OgotICAgICAgICBjYXNlIENoaWxkcmVuVGV4
dDoKLSAgICAgICAgY2FzZSBMYWJlbEJ5RWxlbWVudFRleHQ6CisgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVRleHRTb3VyY2U6OlZpc2libGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRl
eHRTb3VyY2U6OkNoaWxkcmVuOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNl
OjpMYWJlbEJ5RWxlbWVudDoKICAgICAgICAgICAgIHZpc2libGVUZXh0QXZhaWxhYmxlID0gdHJ1
ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBUaXRsZVRhZ1RleHQgJiYgIXZpc2libGVUZXh0
QXZhaWxhYmxlKQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlU
ZXh0U291cmNlOjpUaXRsZVRhZyAmJiAhdmlzaWJsZVRleHRBdmFpbGFibGUpCiAgICAgICAgICAg
ICByZXR1cm4gdGV4dC50ZXh0OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVy
QXRrLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjYsNyArMTI2LDcgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0Tgog
ICAgICAgICAvLyBXZWJDb3JlIEFjY2Vzc2liaWxpdHkgc2hvdWxkIHByb3ZpZGUgdXMgd2l0aCB0
aGUgdGV4dCBhbHRlcm5hdGl2ZSBjb21wdXRhdGlvbgogICAgICAgICAvLyBpbiB0aGUgb3JkZXIg
ZGVmaW5lZCBieSB0aGF0IHNwZWMuIFNvIHRha2UgdGhlIGZpcnN0IHRoaW5nIHRoYXQgb3VyIHBs
YXRmb3JtCiAgICAgICAgIC8vIGRvZXMgbm90IGV4cG9zZSB2aWEgdGhlIEF0a09iamVjdCBkZXNj
cmlwdGlvbi4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSAhPSBIZWxwVGV4dCAmJiB0ZXh0
LnRleHRTb3VyY2UgIT0gU3VtbWFyeVRleHQpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2Ug
IT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHAgJiYgdGV4dC50ZXh0U291cmNlICE9IEFj
Y2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdW1tYXJ5KQogICAgICAgICAgICAgcmV0dXJuIGNhY2hl
QW5kUmV0dXJuQXRrUHJvcGVydHkob2JqZWN0LCBBdGtDYWNoZWRBY2Nlc3NpYmxlTmFtZSwgdGV4
dC50ZXh0KTsKICAgICB9CiAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHN0YXRpYyBjb25zdCBnY2hh
ciogd2Via2l0QWNjZXNzaWJsZUdldEQKICAgICAgICAgLy8gV2ViQ29yZSBBY2Nlc3NpYmlsaXR5
IHNob3VsZCBwcm92aWRlIHVzIHdpdGggdGhlIHRleHQgYWx0ZXJuYXRpdmUgY29tcHV0YXRpb24K
ICAgICAgICAgLy8gaW4gdGhlIG9yZGVyIGRlZmluZWQgYnkgdGhhdCBzcGVjLiBTbyB0YWtlIHRo
ZSBmaXJzdCB0aGluZyB0aGF0IG91ciBwbGF0Zm9ybQogICAgICAgICAvLyBkb2VzIG5vdCBleHBv
c2UgdmlhIHRoZSBBdGtPYmplY3QgbmFtZS4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9
PSBIZWxwVGV4dCB8fCB0ZXh0LnRleHRTb3VyY2UgPT0gU3VtbWFyeVRleHQpCisgICAgICAgIGlm
ICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHAgfHwgdGV4
dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdW1tYXJ5KQogICAgICAg
ICAgICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkob2JqZWN0LCBBdGtDYWNoZWRB
Y2Nlc3NpYmxlRGVzY3JpcHRpb24sIHRleHQudGV4dCk7CiAKICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gb3RoZXIgdGV4dCBhbHRlcm5hdGl2ZSwgdGhlIHRpdGxlIHRhZyBjb250ZW50cyB3aWxs
IGhhdmUgYmVlbgogICAgICAgICAvLyB1c2VkIGZvciB0aGUgQXRrT2JqZWN0IG5hbWUuIFdlIGRv
bid0IHdhbnQgdG8gZHVwbGljYXRlIGl0IGhlcmUuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3Vy
Y2UgPT0gVGl0bGVUYWdUZXh0ICYmIG5hbWVUZXh0QXZhaWxhYmxlKQorICAgICAgICBpZiAodGV4
dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiBuYW1l
VGV4dEF2YWlsYWJsZSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3Bl
cnR5KG9iamVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJsZURlc2NyaXB0aW9uLCB0ZXh0LnRleHQpOwog
CiAgICAgICAgIG5hbWVUZXh0QXZhaWxhYmxlID0gdHJ1ZTsKQEAgLTE4NSw3ICsxODUsNyBAQCBz
dGF0aWMgdm9pZCBzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqCiAgICAgfSBlbHNlIGlmIChj
b3JlT2JqZWN0LT5pc0ZpZWxkc2V0KCkpIHsKICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGxhYmVsID0gY29yZU9iamVjdC0+dGl0bGVVSUVsZW1lbnQoKSkKICAgICAgICAgICAgIGF0
a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxB
VElPTl9MQUJFTExFRF9CWSwgbGFiZWwtPndyYXBwZXIoKSk7Ci0gICAgfSBlbHNlIGlmIChjb3Jl
T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBMZWdlbmRSb2xlKSB7CisgICAgfSBlbHNlIGlmIChjb3Jl
T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGVnZW5kKSB7CiAgICAg
ICAgIGlmIChSZW5kZXJCbG9jayogcmVuZGVyRmllbGRzZXQgPSBhbmNlc3RvcnNPZlR5cGU8UmVu
ZGVyQmxvY2s+KCpjb3JlT2JqZWN0LT5yZW5kZXJlcigpKS5maXJzdCgpKSB7CiAgICAgICAgICAg
ICBpZiAocmVuZGVyRmllbGRzZXQtPmlzRmllbGRzZXQoKSkgewogICAgICAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGZpZWxkc2V0ID0gY29yZU9iamVjdC0+YXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShyZW5kZXJGaWVsZHNldCk7CkBAIC00NTUsMTAgKzQ1NSwxMCBAQCBzdGF0
aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlCiAgICAgICAgIGF0dHJpYnV0ZVNl
dCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgImxldmVsIiwgdmFsdWUudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCi0gICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09
IE1hdGhFbGVtZW50Um9sZSkgewotICAgICAgICBpZiAoY29yZU9iamVjdC0+aXNNYXRoTXVsdGlz
Y3JpcHRPYmplY3QoUHJlU3VwZXJzY3JpcHQpIHx8IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2Ny
aXB0T2JqZWN0KFByZVN1YnNjcmlwdCkpCisgICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudCkgeworICAgICAgICBpZiAoY29yZU9i
amVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dE9iamVjdFR5cGU6OlByZVN1cGVyc2NyaXB0KSB8fCBjb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNj
cmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UHJlU3Vi
c2NyaXB0KSkKICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KGF0dHJpYnV0ZVNldCwgIm11bHRpc2NyaXB0LXR5cGUiLCAicHJlIik7Ci0gICAgICAgIGVsc2Ug
aWYgKGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KFBvc3RTdXBlcnNjcmlwdCkg
fHwgY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoUG9zdFN1YnNjcmlwdCkpCisg
ICAgICAgIGVsc2UgaWYgKGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vz
c2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3VwZXJzY3JpcHQpIHx8IGNv
cmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlz
Y3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKICAgICAgICAgICAgIGF0dHJpYnV0ZVNl
dCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgIm11bHRpc2NyaXB0LXR5cGUi
LCAicG9zdCIpOwogICAgIH0KIApAQCAtNTExLDE4ICs1MTEsMTggQEAgc3RhdGljIEF0a0F0dHJp
YnV0ZVNldCogd2Via2l0QWNjZXNzaWJsZQogICAgIC8vIFRoZSBDb3JlIEFBTSBzdGF0ZXMgdGhh
dCBhbiBleHBsaWNpdGx5LXNldCB2YWx1ZSBzaG91bGQgYmUgZXhwb3NlZCwgaW5jbHVkaW5nICJu
b25lIi4KICAgICBpZiAoY29yZU9iamVjdC0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9z
b3J0QXR0cikpIHsKICAgICAgICAgc3dpdGNoIChjb3JlT2JqZWN0LT5zb3J0RGlyZWN0aW9uKCkp
IHsKLSAgICAgICAgY2FzZSBTb3J0RGlyZWN0aW9uSW52YWxpZDoKKyAgICAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5U29ydERpcmVjdGlvbjo6SW52YWxpZDoKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNvcnREaXJlY3Rpb25Bc2NlbmRpbmc6CisgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVNvcnREaXJlY3Rpb246OkFzY2VuZGluZzoKICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9
IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgInNvcnQiLCAiYXNjZW5kaW5nIik7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTb3J0RGlyZWN0aW9uRGVzY2VuZGlu
ZzoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6RGVzY2VuZGluZzoK
ICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0
ZVNldCwgInNvcnQiLCAiZGVzY2VuZGluZyIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU29ydERpcmVjdGlvbk90aGVyOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0
RGlyZWN0aW9uOjpPdGhlcjoKICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0
cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgInNvcnQiLCAib3RoZXIiKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uOjpOb25lOgogICAgICAgICAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRyaWJ1
dGVTZXQoYXR0cmlidXRlU2V0LCAic29ydCIsICJub25lIik7CiAgICAgICAgIH0KICAgICB9CkBA
IC01NTYsNyArNTU2LDcgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogd2Via2l0QWNjZXNzaWJs
ZQogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBtYXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJ
QSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9yIHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAg
ICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhlIHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxh
bmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1dGVkUm9sZVN0cmluZy4KLSAgICAgICAgaWYg
KGNvcmVPYmplY3QtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gVW5rbm93blJvbGUgJiYgY29yZU9i
amVjdC0+aXNMYW5kbWFyaygpKQorICAgICAgICBpZiAoY29yZU9iamVjdC0+YXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biAmJiBjb3JlT2JqZWN0LT5pc0xh
bmRtYXJrKCkpCiAgICAgICAgICAgICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNl
dChhdHRyaWJ1dGVTZXQsICJ4bWwtcm9sZXMiLCBjb21wdXRlZFJvbGVTdHJpbmcudXRmOCgpLmRh
dGEoKSk7CiAgICAgfQogCkBAIC02MTMsMjAyICs2MTMsMjAyIEBAIHN0YXRpYyBBdGtSb2xlIGF0
a1JvbGUoQWNjZXNzaWJpbGl0eU9iamUKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0g
Y29yZU9iamVjdC0+cm9sZVZhbHVlKCk7CiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgY2FzZSBB
cHBsaWNhdGlvbkFsZXJ0Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvbkFsZXJ0OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQUxFUlQ7Ci0gICAgY2FzZSBBcHBs
aWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nOgogICAgICAgICByZXR1
cm4gQVRLX1JPTEVfRElBTE9HOwotICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzOgogICAgICAgICByZXR1
cm4gQVRLX1JPTEVfU1RBVFVTQkFSOwotICAgIGNhc2UgVW5rbm93blJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1VOS05P
V047Ci0gICAgY2FzZSBBdWRpb1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVk
aW86CiAjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTEsIDMpCiAgICAgICAgIHJldHVybiBBVEtf
Uk9MRV9BVURJTzsKICNlbmRpZgotICAgIGNhc2UgVmlkZW9Sb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlZpZGVvOgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDExLCAzKQogICAg
ICAgICByZXR1cm4gQVRLX1JPTEVfVklERU87CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIEFUS19S
T0xFX0VNQkVEREVEOwotICAgIGNhc2UgQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpCdXR0b246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9QVVNIX0JVVFRPTjsKLSAg
ICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
b2dnbGVCdXR0b246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9UT0dHTEVfQlVUVE9OOwotICAg
IGNhc2UgUmFkaW9CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlv
QnV0dG9uOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUkFESU9fQlVUVE9OOwotICAgIGNhc2Ug
Q2hlY2tCb3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgogICAg
ICAgICByZXR1cm4gQVRLX1JPTEVfQ0hFQ0tfQk9YOwotICAgIGNhc2UgU2xpZGVyUm9sZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9TTElERVI7Ci0gICAgY2FzZSBUYWJHcm91cFJvbGU6Ci0gICAgY2FzZSBUYWJMaXN0Um9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUYWJMaXN0OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUEFHRV9UQUJfTElT
VDsKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAg
Y2FzZSBTZWFyY2hGaWVsZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZp
ZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRU5U
Ulk7Ci0gICAgY2FzZSBTdGF0aWNUZXh0Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTdGF0aWNUZXh0OgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDE1LCAyKQogICAgICAgICBy
ZXR1cm4gQVRLX1JPTEVfU1RBVElDOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RF
WFQ7CiAjZW5kaWYKLSAgICBjYXNlIE91dGxpbmVSb2xlOgotICAgIGNhc2UgVHJlZVJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6T3V0bGluZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpUcmVlOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVFJFRTsKLSAgICBjYXNlIFRy
ZWVJdGVtUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbToKICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX1RSRUVfSVRFTTsKLSAgICBjYXNlIE1lbnVCYXJSb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9NRU5VX0JBUjsKLSAgICBjYXNlIE1lbnVMaXN0UG9wdXBSb2xlOgotICAgIGNhc2UgTWVudVJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQb3B1cDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfTUVOVTsK
LSAgICBjYXNlIE1lbnVMaXN0T3B0aW9uUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAg
ICBjYXNlIE1lbnVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVM
aXN0T3B0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9NRU5VX0lURU07Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgogICAgICAgICByZXR1cm4gQVRLX1JP
TEVfQ0hFQ0tfTUVOVV9JVEVNOwotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKICAgICAgICAgcmV0dXJuIEFUS19S
T0xFX1JBRElPX01FTlVfSVRFTTsKLSAgICBjYXNlIENvbHVtblJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29sdW1uOgogICAgICAgICAvLyByZXR1cm4gQVRLX1JPTEVfVEFCTEVf
Q09MVU1OX0hFQURFUjsgLy8gSXMgdGhpcyByaWdodD8KICAgICAgICAgcmV0dXJuIEFUS19ST0xF
X1VOS05PV047IC8vIE1hdGNoZXMgTW96aWxsYQotICAgIGNhc2UgUm93Um9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9UQUJMRV9S
T1c7Ci0gICAgY2FzZSBUb29sYmFyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
b29sYmFyOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVE9PTF9CQVI7Ci0gICAgY2FzZSBCdXN5
SW5kaWNhdG9yUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXN5SW5kaWNhdG9y
OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUFJPR1JFU1NfQkFSOyAvLyBJcyB0aGlzIHJpZ2h0
PwotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yOgogICAgICAgICByZXR1cm4gY29yZU9iamVjdC0+aXNN
ZXRlcigpID8gQVRLX1JPTEVfTEVWRUxfQkFSIDogQVRLX1JPTEVfUFJPR1JFU1NfQkFSOwotICAg
IGNhc2UgV2luZG93Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXaW5kb3c6CiAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9XSU5ET1c7Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246CiAgICAgICAgIHJldHVy
biBjb3JlT2JqZWN0LT5hcmlhSGFzUG9wdXAoKSA/IEFUS19ST0xFX1BVU0hfQlVUVE9OIDogQVRL
X1JPTEVfQ09NQk9fQk9YOwotICAgIGNhc2UgQ29tYm9Cb3hSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbWJvQm94OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ09NQk9fQk9Y
OwotICAgIGNhc2UgU3BsaXRHcm91cFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3BsaXRHcm91cDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NQTElUX1BBTkU7Ci0gICAgY2Fz
ZSBTcGxpdHRlclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CiAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9TRVBBUkFUT1I7Ci0gICAgY2FzZSBDb2xvcldlbGxSb2xl
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDoKICNpZiBQTEFURk9STShH
VEspCiAgICAgICAgIC8vIEFUS19ST0xFX0NPTE9SX0NIT09TRVIgaXMgZGVmaW5lZCBhcyBhIGRp
YWxvZyAoaS5lLiBpdCdzIHdoYXQgYXBwZWFycyB3aGVuIHlvdSBwdXNoIHRoZSBidXR0b24pLgog
ICAgICAgICByZXR1cm4gQVRLX1JPTEVfUFVTSF9CVVRUT047CiAjZW5kaWYKLSAgICBjYXNlIExp
c3RSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q6CiAgICAgICAgIHJldHVy
biBBVEtfUk9MRV9MSVNUOwotICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TQ1JPTExf
QkFSOwotICAgIGNhc2UgU2Nyb2xsQXJlYVJvbGU6Ci0gICAgY2FzZSBUYWJQYW5lbFJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUYWJQYW5lbDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NDUk9MTF9QQU5F
OwotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBUYWJsZVJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToK
ICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RBQkxFOwotICAgIGNhc2UgVHJlZUdyaWRSb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgogICAgICAgICByZXR1cm4gQVRL
X1JPTEVfVFJFRV9UQUJMRTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0FQ
UExJQ0FUSU9OOwotICAgIGNhc2UgQXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgY2FzZSBGZWVk
Um9sZToKLSAgICBjYXNlIEZpZ3VyZVJvbGU6Ci0gICAgY2FzZSBHcm91cFJvbGU6Ci0gICAgY2Fz
ZSBSYWRpb0dyb3VwUm9sZToKLSAgICBjYXNlIFNWR1Jvb3RSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RmVlZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFk
aW9Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdSb290OgogICAgICAgICBy
ZXR1cm4gQVRLX1JPTEVfUEFORUw7Ci0gICAgY2FzZSBSb3dIZWFkZXJSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1JP
V19IRUFERVI7Ci0gICAgY2FzZSBDb2x1bW5IZWFkZXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNvbHVtbkhlYWRlcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0NPTFVNTl9I
RUFERVI7Ci0gICAgY2FzZSBDYXB0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpDYXB0aW9uOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ0FQVElPTjsKLSAgICBjYXNlIENl
bGxSb2xlOgotICAgIGNhc2UgR3JpZENlbGxSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGw6CiAgICAgICAg
IHJldHVybiBjb3JlT2JqZWN0LT5pbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpID8gQVRLX1JP
TEVfU0VDVElPTiA6IEFUS19ST0xFX1RBQkxFX0NFTEw7Ci0gICAgY2FzZSBMaW5rUm9sZToKLSAg
ICBjYXNlIFdlYkNvcmVMaW5rUm9sZToKLSAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpXZWJDb3JlTGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbms6
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9MSU5LOwotICAgIGNhc2UgSW1hZ2VNYXBSb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOgogICAgICAgICByZXR1cm4gQVRL
X1JPTEVfSU1BR0VfTUFQOwotICAgIGNhc2UgSW1hZ2VSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfSU1BR0U7Ci0gICAgY2Fz
ZSBMaXN0TWFya2VyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0TWFya2Vy
OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVEVYVDsKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNs
ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgogI2lm
IEFUS19DSEVDS19WRVJTSU9OKDIsIDExLCAzKQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQVJU
SUNMRTsKICNlbmRpZgotICAgIGNhc2UgRG9jdW1lbnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkRvY3VtZW50OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRE9DVU1FTlRfRlJB
TUU7Ci0gICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkRvY3VtZW50Tm90ZToKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0NPTU1FTlQ7Ci0gICAg
Y2FzZSBIZWFkaW5nUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOgog
ICAgICAgICByZXR1cm4gQVRLX1JPTEVfSEVBRElORzsKLSAgICBjYXNlIExpc3RCb3hSb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CiAgICAgICAgIC8vIGh0dHBzOi8v
cmF3Z2l0LmNvbS93M2MvYXJpYS9tYXN0ZXIvY29yZS1hYW0vY29yZS1hYW0uaHRtbCNyb2xlLW1h
cC1saXN0Ym94Ci0gICAgICAgIHJldHVybiBjb3JlT2JqZWN0LT5pc0Rlc2NlbmRhbnRPZlJvbGUo
Q29tYm9Cb3hSb2xlKSA/IEFUS19ST0xFX01FTlUgOiBBVEtfUk9MRV9MSVNUX0JPWDsKLSAgICBj
YXNlIExpc3RJdGVtUm9sZToKKyAgICAgICAgcmV0dXJuIGNvcmVPYmplY3QtPmlzRGVzY2VuZGFu
dE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3gpID8gQVRLX1JPTEVfTUVOVSA6IEFU
S19ST0xFX0xJU1RfQk9YOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgog
ICAgICAgICByZXR1cm4gY29yZU9iamVjdC0+aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSA/
IEFUS19ST0xFX1NFQ1RJT04gOiBBVEtfUk9MRV9MSVNUX0lURU07Ci0gICAgY2FzZSBMaXN0Qm94
T3B0aW9uUm9sZToKLSAgICAgICAgcmV0dXJuIGNvcmVPYmplY3QtPmlzRGVzY2VuZGFudE9mUm9s
ZShDb21ib0JveFJvbGUpID8gQVRLX1JPTEVfTUVOVV9JVEVNIDogQVRLX1JPTEVfTElTVF9JVEVN
OwotICAgIGNhc2UgUGFyYWdyYXBoUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0Qm94T3B0aW9uOgorICAgICAgICByZXR1cm4gY29yZU9iamVjdC0+aXNEZXNjZW5kYW50T2ZS
b2xlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveCkgPyBBVEtfUk9MRV9NRU5VX0lURU0gOiBB
VEtfUk9MRV9MSVNUX0lURU07CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UGFyYWdyYXBo
OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUEFSQUdSQVBIOwotICAgIGNhc2UgTGFiZWxSb2xl
OgotICAgIGNhc2UgTGVnZW5kUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJl
bDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMZWdlbmQ6CiAgICAgICAgIHJldHVybiBB
VEtfUk9MRV9MQUJFTDsKLSAgICBjYXNlIEJsb2NrcXVvdGVSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkJsb2NrcXVvdGU6CiAjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTEsIDMp
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9CTE9DS19RVU9URTsKICNlbmRpZgotICAgIGNhc2Ug
Rm9vdG5vdGVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Rub3RlOgogI2lm
IEFUS19DSEVDS19WRVJTSU9OKDIsIDI1LCAyKQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRk9P
VE5PVEU7CiAjZW5kaWYKLSAgICBjYXNlIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZToKLSAgICBj
YXNlIERpdlJvbGU6Ci0gICAgY2FzZSBQcmVSb2xlOgotICAgIGNhc2UgU1ZHVGV4dFJvbGU6Ci0g
ICAgY2FzZSBUZXh0R3JvdXBSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uVGV4dEdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRpdjoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U1ZHVGV4dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXA6CiAgICAgICAg
IHJldHVybiBBVEtfUk9MRV9TRUNUSU9OOwotICAgIGNhc2UgRm9vdGVyUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9GT09U
RVI7Ci0gICAgY2FzZSBGb3JtUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3Jt
OgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDExLCAzKQotICAgICAgICBpZiAoY29yZU9iamVj
dC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKKyAgICAgICAgaWYgKGNvcmVP
YmplY3QtPmFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24p
CiAgICAgICAgICAgICByZXR1cm4gQVRLX1JPTEVfTEFORE1BUks7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuIEFUS19ST0xFX0ZPUk07Ci0gICAgY2FzZSBDYW52YXNSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkNhbnZhczoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0NBTlZBUzsK
LSAgICBjYXNlIEhvcml6b250YWxSdWxlUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpIb3Jpem9udGFsUnVsZToKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NFUEFSQVRPUjsKLSAg
ICBjYXNlIFNwaW5CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5C
dXR0b246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TUElOX0JVVFRPTjsKLSAgICBjYXNlIFRh
YlJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgogICAgICAgICByZXR1cm4g
QVRLX1JPTEVfUEFHRV9UQUI7Ci0gICAgY2FzZSBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVyZmFjZVRvb2x0aXA6CiAgICAgICAg
IHJldHVybiBBVEtfUk9MRV9UT09MX1RJUDsKLSAgICBjYXNlIFdlYkFyZWFSb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWE6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9E
T0NVTUVOVF9XRUI7Ci0gICAgY2FzZSBXZWJBcHBsaWNhdGlvblJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6V2ViQXBwbGljYXRpb246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9F
TUJFRERFRDsKICNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMSwgMykKLSAgICBjYXNlIEFwcGxp
Y2F0aW9uTG9nUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxv
ZzoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0xPRzsKLSAgICBjYXNlIEFwcGxpY2F0aW9uTWFy
cXVlZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25NYXJxdWVl
OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfTUFSUVVFRTsKLSAgICBjYXNlIEFwcGxpY2F0aW9u
VGltZXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXI6
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9USU1FUjsKLSAgICBjYXNlIERlZmluaXRpb25Sb2xl
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlZmluaXRpb246CiAgICAgICAgIHJldHVy
biBBVEtfUk9MRV9ERUZJTklUSU9OOwotICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6CiAgICAgICAgIHJldHVybiBBVEtf
Uk9MRV9NQVRIOwotICAgIGNhc2UgTWF0aEVsZW1lbnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1hdGhFbGVtZW50OgogICAgICAgICBpZiAoY29yZU9iamVjdC0+aXNNYXRoUm93
KCkpCiAgICAgICAgICAgICByZXR1cm4gQVRLX1JPTEVfUEFORUw7CiAgICAgICAgIGlmIChjb3Jl
T2JqZWN0LT5pc01hdGhUYWJsZSgpKQpAQCAtODI1LDEwICs4MjUsMTAgQEAgc3RhdGljIEF0a1Jv
bGUgYXRrUm9sZShBY2Nlc3NpYmlsaXR5T2JqZQogICAgICAgICBpZiAoY29yZU9iamVjdC0+aXNN
YXRoU3F1YXJlUm9vdCgpIHx8IGNvcmVPYmplY3QtPmlzTWF0aFJvb3QoKSkKICAgICAgICAgICAg
IHJldHVybiBBVEtfUk9MRV9NQVRIX1JPT1Q7CiAgICAgICAgIGlmIChjb3JlT2JqZWN0LT5pc01h
dGhTY3JpcHRPYmplY3QoU3Vic2NyaXB0KQotICAgICAgICAgICAgfHwgY29yZU9iamVjdC0+aXNN
YXRoTXVsdGlzY3JpcHRPYmplY3QoUHJlU3Vic2NyaXB0KSB8fCBjb3JlT2JqZWN0LT5pc01hdGhN
dWx0aXNjcmlwdE9iamVjdChQb3N0U3Vic2NyaXB0KSkKKyAgICAgICAgICAgIHx8IGNvcmVPYmpl
Y3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRP
YmplY3RUeXBlOjpQcmVTdWJzY3JpcHQpIHx8IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0
T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2Ny
aXB0KSkKICAgICAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TVUJTQ1JJUFQ7CiAgICAgICAgIGlm
IChjb3JlT2JqZWN0LT5pc01hdGhTY3JpcHRPYmplY3QoU3VwZXJzY3JpcHQpCi0gICAgICAgICAg
ICB8fCBjb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChQcmVTdXBlcnNjcmlwdCkg
fHwgY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoUG9zdFN1cGVyc2NyaXB0KSkK
KyAgICAgICAgICAgIHx8IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vz
c2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgY29y
ZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNj
cmlwdE9iamVjdFR5cGU6OlBvc3RTdXBlcnNjcmlwdCkpCiAgICAgICAgICAgICByZXR1cm4gQVRL
X1JPTEVfU1VQRVJTQ1JJUFQ7CiAjZW5kaWYKICNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNSwg
MikKQEAgLTgzNiwyNiArODM2LDI2IEBAIHN0YXRpYyBBdGtSb2xlIGF0a1JvbGUoQWNjZXNzaWJp
bGl0eU9iamUKICAgICAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TVEFUSUM7CiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuIEFUS19ST0xFX1VOS05PV047Ci0gICAgY2FzZSBMYW5kbWFya0Jhbm5lclJv
bGU6Ci0gICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgotICAgIGNhc2UgTGFuZG1h
cmtDb250ZW50SW5mb1JvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0RvY1JlZ2lvblJvbGU6Ci0gICAg
Y2FzZSBMYW5kbWFya01haW5Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZToK
LSAgICBjYXNlIExhbmRtYXJrUmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9s
ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnk6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya01haW46CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0
aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoOgogICAgICAgICByZXR1cm4gQVRL
X1JPTEVfTEFORE1BUks7CiAjZW5kaWYKICNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMSwgNCkK
LSAgICBjYXNlIERlc2NyaXB0aW9uTGlzdFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RGVzY3JpcHRpb25MaXN0OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfREVTQ1JJUFRJT05f
TElTVDsKLSAgICBjYXNlIFRlcm1Sb2xlOgotICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0VGVybVJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGVybToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJtOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVf
REVTQ1JJUFRJT05fVEVSTTsKLSAgICBjYXNlIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0RGV0YWlsOgogICAgICAg
ICByZXR1cm4gQVRLX1JPTEVfREVTQ1JJUFRJT05fVkFMVUU7CiAjZW5kaWYKLSAgICBjYXNlIElu
bGluZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5lOgogI2lmIEFUS19D
SEVDS19WRVJTSU9OKDIsIDE1LCA0KQogICAgICAgICBpZiAoY29yZU9iamVjdC0+aXNTdWJzY3Jp
cHRTdHlsZUdyb3VwKCkpCiAgICAgICAgICAgICByZXR1cm4gQVRLX1JPTEVfU1VCU0NSSVBUOwpA
QCAtODY0LDkgKzg2NCw5IEBAIHN0YXRpYyBBdGtSb2xlIGF0a1JvbGUoQWNjZXNzaWJpbGl0eU9i
amUKICNlbmRpZgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDE1LCAyKQogICAgICAgICByZXR1
cm4gQVRLX1JPTEVfU1RBVElDOwotICAgIGNhc2UgU1ZHVGV4dFBhdGhSb2xlOgotICAgIGNhc2Ug
U1ZHVFNwYW5Sb2xlOgotICAgIGNhc2UgVGltZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U1ZHVGV4dFBhdGg6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVFNwYW46
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZToKICAgICAgICAgcmV0dXJuIEFUS19S
T0xFX1NUQVRJQzsKICNlbmRpZgogICAgIGRlZmF1bHQ6CkBAIC05MzAsNyArOTMwLDcgQEAgc3Rh
dGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdAogCiAgICAgLy8gUGxlYXNlIGtl
ZXAgdGhlIHN0YXRlIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCiAgICAgaWYgKChpc0xpc3RC
b3hPcHRpb24gJiYgY29yZU9iamVjdC0+aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpKQotICAgICAg
ICB8fCBjb3JlT2JqZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQVJJQUN1cnJlbnRGYWxzZSkK
KyAgICAgICAgfHwgY29yZU9iamVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgpICE9IEFjY2Vzc2liaWxp
dHlBUklBQ3VycmVudFN0YXRlOjpGYWxzZSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3Rh
dGUoc3RhdGVTZXQsIEFUS19TVEFURV9BQ1RJVkUpOwogCiAgICAgaWYgKGNvcmVPYmplY3QtPmlz
QnVzeSgpKQpAQCAtOTcyLDkgKzk3Miw5IEBAIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJv
bUNvcmVPYmplY3QKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFU
S19TVEFURV9GT0NVU0VEKTsKICAgICB9CiAKLSAgICBpZiAoY29yZU9iamVjdC0+b3JpZW50YXRp
b24oKSA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsKQorICAgIGlmIChjb3Jl
T2JqZWN0LT5vcmllbnRhdGlvbigpID09IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpv
bnRhbCkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFU
RV9IT1JJWk9OVEFMKTsKLSAgICBlbHNlIGlmIChjb3JlT2JqZWN0LT5vcmllbnRhdGlvbigpID09
IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsKQorICAgIGVsc2UgaWYgKGNvcmVPYmpl
Y3QtPm9yaWVudGF0aW9uKCkgPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCkK
ICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9WRVJU
SUNBTCk7CiAKICAgICBpZiAoY29yZU9iamVjdC0+YXJpYUhhc1BvcHVwKCkpCkBAIC05ODMsNyAr
OTgzLDcgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdAogICAgIGlm
IChjb3JlT2JqZWN0LT5pc0luZGV0ZXJtaW5hdGUoKSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9h
ZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9JTkRFVEVSTUlOQVRFKTsKICAgICBlbHNlIGlm
IChjb3JlT2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IGNvcmVPYmplY3QtPmlzTWVudUl0
ZW0oKSB8fCBjb3JlT2JqZWN0LT5pc1RvZ2dsZUJ1dHRvbigpKSB7Ci0gICAgICAgIGlmIChjb3Jl
T2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpID09IEJ1dHRvblN0YXRlTWl4ZWQpCisgICAg
ICAgIGlmIChjb3JlT2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlCdXR0b25TdGF0ZTo6TWl4ZWQpCiAgICAgICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0
ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0lOREVURVJNSU5BVEUpOwogICAgIH0KIApAQCAtMTAzOSw5
ICsxMDM5LDkgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdAogICAg
IH0KIAogICAgIC8vIE11dHVhbGx5IGV4Y2x1c2l2ZSwgc28gd2UgZ3JvdXAgdGhlc2UgdHdvCi0g
ICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IFRleHRBcmVhUm9sZSB8fCBjb3JlT2Jq
ZWN0LT5hcmlhSXNNdWx0aWxpbmUoKSkKKyAgICBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhIHx8IGNvcmVPYmplY3QtPmFyaWFJc011bHRp
bGluZSgpKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NU
QVRFX01VTFRJX0xJTkUpOwotICAgIGVsc2UgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09
IFRleHRGaWVsZFJvbGUgfHwgY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gU2VhcmNoRmllbGRS
b2xlKQorICAgIGVsc2UgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpUZXh0RmllbGQgfHwgY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlNlYXJjaEZpZWxkKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShz
dGF0ZVNldCwgQVRLX1NUQVRFX1NJTkdMRV9MSU5FKTsKIAogICAgIC8vIFRPRE86IEFUS19TVEFU
RV9TRU5TSVRJVkUKQEAgLTEyNjAsOSArMTI2MCwxNyBAQCBzdGF0aWMgR1R5cGUgR2V0QXRrSW50
ZXJmYWNlVHlwZUZyb21XQUlUCiAKIHN0YXRpYyBib29sIHJvbGVJc1RleHRUeXBlKEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGUpCiB7Ci0gICAgcmV0dXJuIHJvbGUgPT0gUGFyYWdyYXBoUm9sZSB8fCBy
b2xlID09IEhlYWRpbmdSb2xlIHx8IHJvbGUgPT0gRGl2Um9sZSB8fCByb2xlID09IENlbGxSb2xl
Ci0gICAgICAgIHx8IHJvbGUgPT0gTGlua1JvbGUgfHwgcm9sZSA9PSBXZWJDb3JlTGlua1JvbGUg
fHwgcm9sZSA9PSBMaXN0SXRlbVJvbGUgfHwgcm9sZSA9PSBQcmVSb2xlCi0gICAgICAgIHx8IHJv
bGUgPT0gR3JpZENlbGxSb2xlIHx8IHJvbGUgPT0gVGV4dEdyb3VwUm9sZSB8fCByb2xlID09IEFw
cGxpY2F0aW9uVGV4dEdyb3VwUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UGFyYWdyYXBoCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okhl
YWRpbmcKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGl2CisgICAgICAg
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwKKyAgICAgICAgfHwgcm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGluaworICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpXZWJDb3JlTGluaworICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0SXRlbQorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmUKKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGwKKyAgICAgICAgfHwgcm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwCisgICAgICAgIHx8IHJvbGUgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwOwogfQogCiBzdGF0aWMgZ3VpbnQx
NiBnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0KQpAQCAtMTI5NiwxNCArMTMwNCwxNCBAQCBzdGF0aWMgZ3VpbnQxNiBnZXRJbnRlcmZhY2VN
YXNrRnJvbU9iamVjCiAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlIeXBlcmxpbms7
CiAKICAgICAvLyBUZXh0LCBFZGl0YWJsZSBUZXh0ICYgSHlwZXJ0ZXh0Ci0gICAgaWYgKHJvbGUg
PT0gU3RhdGljVGV4dFJvbGUgfHwgY29yZU9iamVjdC0+aXNNZW51TGlzdE9wdGlvbigpKQorICAg
IGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0IHx8IGNvcmVPYmplY3Qt
PmlzTWVudUxpc3RPcHRpb24oKSkKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSVRl
eHQ7CiAgICAgZWxzZSBpZiAoY29yZU9iamVjdC0+aXNUZXh0Q29udHJvbCgpIHx8IGNvcmVPYmpl
Y3QtPmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSkgewogICAgICAgICBpbnRlcmZhY2VNYXNrIHw9
IDEgPDwgV0FJVGV4dDsKICAgICAgICAgaWYgKGNvcmVPYmplY3QtPmNhblNldFZhbHVlQXR0cmli
dXRlKCkpCiAgICAgICAgICAgICBpbnRlcmZhY2VNYXNrIHw9IDEgPDwgV0FJRWRpdGFibGVUZXh0
OwogICAgIH0gZWxzZSBpZiAoIWNvcmVPYmplY3QtPmlzV2ViQXJlYSgpKSB7Ci0gICAgICAgIGlm
IChyb2xlICE9IFRhYmxlUm9sZSkgeworICAgICAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFibGUpIHsKICAgICAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlIeXBl
cnRleHQ7CiAgICAgICAgICAgICBpZiAoKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5jaGlsZHJlbklu
bGluZSgpKSB8fCByb2xlSXNUZXh0VHlwZShyb2xlKSB8fCBjb3JlT2JqZWN0LT5pc01hdGhUb2tl
bigpKQogICAgICAgICAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlUZXh0OwpAQCAt
MTMxMSw3ICsxMzE5LDcgQEAgc3RhdGljIGd1aW50MTYgZ2V0SW50ZXJmYWNlTWFza0Zyb21PYmpl
YwogCiAgICAgICAgIC8vIEFkZCB0aGUgVEVYVCBpbnRlcmZhY2UgZm9yIGxpc3QgaXRlbXMgd2hv
c2UKICAgICAgICAgLy8gZmlyc3QgYWNjZXNzaWJsZSBjaGlsZCBoYXMgYSB0ZXh0IHJlbmRlcmVy
Ci0gICAgICAgIGlmIChyb2xlID09IExpc3RJdGVtUm9sZSkgeworICAgICAgICBpZiAocm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0pIHsKICAgICAgICAgICAgIGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4gPSBj
b3JlT2JqZWN0LT5jaGlsZHJlbigpOwogICAgICAgICAgICAgaWYgKGNoaWxkcmVuLnNpemUoKSkg
ewogICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4UmVuZGVyQ2hpbGQgPSBj
aGlsZHJlbi5hdCgwKS5nZXQoKTsKQEAgLTEzMjksMTIgKzEzMzcsMTIgQEAgc3RhdGljIGd1aW50
MTYgZ2V0SW50ZXJmYWNlTWFza0Zyb21PYmplYwogICAgICAgICBpbnRlcmZhY2VNYXNrIHw9IDEg
PDwgV0FJVGFibGU7CiAKICNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkwKQotICAgIGlmIChy
b2xlID09IENlbGxSb2xlIHx8IHJvbGUgPT0gR3JpZENlbGxSb2xlIHx8IHJvbGUgPT0gQ29sdW1u
SGVhZGVyUm9sZSB8fCByb2xlID09IFJvd0hlYWRlclJvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OkNlbGwgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENl
bGwgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyIHx8IHJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcikKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAx
IDw8IFdBSVRhYmxlQ2VsbDsKICNlbmRpZgogCiAgICAgLy8gRG9jdW1lbnQKLSAgICBpZiAocm9s
ZSA9PSBXZWJBcmVhUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2Vi
QXJlYSkKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSURvY3VtZW50OwogCiAgICAg
Ly8gVmFsdWUKQEAgLTEzNDMsNyArMTM1MSw3IEBAIHN0YXRpYyBndWludDE2IGdldEludGVyZmFj
ZU1hc2tGcm9tT2JqZWMKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIC8vIENv
bG9yIHR5cGUuCi0gICAgaWYgKHJvbGUgPT0gQ29sb3JXZWxsUm9sZSkKKyAgICBpZiAocm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsKQogICAgICAgICBpbnRlcmZhY2VNYXNrIHw9
IDEgPDwgV0FJVGV4dDsKICNlbmRpZgogCkBAIC0xNDEyLDcgKzE0MjAsNyBAQCB2b2lkIHdlYmtp
dEFjY2Vzc2libGVEZXRhY2goV2ViS2l0QWNjZXNzCiB7CiAgICAgQVNTRVJUKGFjY2Vzc2libGUt
Pm1fb2JqZWN0KTsKIAotICAgIGlmIChhY2Nlc3NpYmxlLT5tX29iamVjdC0+cm9sZVZhbHVlKCkg
PT0gV2ViQXJlYVJvbGUpCisgICAgaWYgKGFjY2Vzc2libGUtPm1fb2JqZWN0LT5yb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYSkKICAgICAgICAgYXRrX29iamVjdF9ub3Rp
Znlfc3RhdGVfY2hhbmdlKEFUS19PQkpFQ1QoYWNjZXNzaWJsZSksIEFUS19TVEFURV9ERUZVTkNU
LCB0cnVlKTsKIAogICAgIC8vIFdlIHJlcGxhY2UgdGhlIFdlYkNvcmUgQWNjZXNzaWJpbGl0eU9i
amVjdCB3aXRoIGEgZmFsbGJhY2sgb2JqZWN0IHRoYXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5t
bQkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJCiAgICAgCiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQ
bGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVmYXVsdEJlaGF2
aW9yOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVo
YXZpb3I7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzVG91Y2hFdmVudExpc3Rl
bmVyKCkgY29uc3QKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpo
YXNUb3VjaEV2ZW50TAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0lucHV0VHlwZVBvcHVw
QnV0dG9uKCkgY29uc3QKIHsKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSgpKSkK
LSAgICAgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFBvcFVwQnV0dG9uUm9sZTsKKyAgICAgICAg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzQyLDMwICszNDIsMzAgQEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5Q2FuRnV6enlIaXRU
ZXN0CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1fb2JqZWN0LT5yb2xlVmFsdWUoKTsK
ICAgICAvLyBFbGVtZW50cyB0aGF0IGNhbiBiZSByZXR1cm5lZCB3aGVuIHBlcmZvcm1pbmcgZnV6
enkgaGl0IHRlc3RpbmcuCiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgY2FzZSBCdXR0b25Sb2xl
OgotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgQ29tYm9Cb3hSb2xlOgotICAgIGNh
c2UgRGlzY2xvc3VyZVRyaWFuZ2xlUm9sZToKLSAgICBjYXNlIEhlYWRpbmdSb2xlOgotICAgIGNh
c2UgSW1hZ2VNYXBMaW5rUm9sZToKLSAgICBjYXNlIEltYWdlUm9sZToKLSAgICBjYXNlIExpbmtS
b2xlOgotICAgIGNhc2UgTGlzdEJveFJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToK
LSAgICBjYXNlIE1lbnVCdXR0b25Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNh
c2UgTWVudUl0ZW1DaGVja2JveFJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAg
ICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBj
YXNlIFNjcm9sbEJhclJvbGU6Ci0gICAgY2FzZSBTZWFyY2hGaWVsZFJvbGU6Ci0gICAgY2FzZSBT
bGlkZXJSb2xlOgotICAgIGNhc2UgU3RhdGljVGV4dFJvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xl
OgotICAgIGNhc2UgVGFiUm9sZToKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgY2FzZSBU
b2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpDb21ib0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXNjbG9zdXJl
VHJpYW5nbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6SW1hZ2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluazoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3RCb3hPcHRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVJdGVtUmFkaW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNl
YXJjaEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRvZ2dsZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuICFtX29iamVjdC0+YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUxNCwy
NCArNTE0LDI0IEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzRGlhbG9nCiAgICAgICAgIHJldHVy
biBOTzsKIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSA9IG1fb2JqZWN0LT5yb2xl
VmFsdWUoKTsKLSAgICByZXR1cm4gcm9sZVZhbHVlID09IEFwcGxpY2F0aW9uRGlhbG9nUm9sZSB8
fCByb2xlVmFsdWUgPT0gQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGU7CisgICAgcmV0dXJuIHJv
bGVWYWx1ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cgfHwgcm9sZVZh
bHVlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nOwogfQogCiAt
IChCT09MKV9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFya1JvbGU6KEFjY2Vzc2liaWxpdHlSb2xlKXJv
bGUKIHsKICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNlIERvY3VtZW50Um9sZToKLSAgICBj
YXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgotICAg
IGNhc2UgRm9vdGVyUm9sZToKLSAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKLSAgICBjYXNl
IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZv
Um9sZToKLSAgICBjYXNlIExhbmRtYXJrRG9jUmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJr
TWFpblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgotICAgIGNhc2UgTGFu
ZG1hcmtSZWdpb25Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkRvY3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5v
dGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdGVyOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrQ29tcGxlbWVudGFyeToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya0NvbnRlbnRJbmZvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9j
UmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtTZWFyY2g6CiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIE5POwpAQCAtNTQyLDcgKzU0Miw3IEBAIC0gKEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKilfYWNjZXNzaWIKIHsKICAgICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSA9IG9iamVjdC5yb2xlVmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIHJvbGUgPT0gVHJlZVJv
bGU7CisgICAgICAgIHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOwogICAg
IH07CiAgICAgCiAgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFj
Y2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwgV1RGTW92
ZShtYXRjaEZ1bmMpKSkKQEAgLTU1NCw3ICs1NTQsNyBAQCAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciopX2FjY2Vzc2liCiB7CiAgICAgYXV0byBtYXRjaEZ1bmMgPSBbXSAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGUgPSBvYmplY3Qucm9sZVZhbHVlKCk7Ci0gICAgICAgIHJldHVybiByb2xlID09IExpc3RSb2xl
IHx8IHJvbGUgPT0gTGlzdEJveFJvbGU7CisgICAgICAgIHJldHVybiByb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g7CiAg
ICAgfTsKICAgICAKICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0g
QWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIGZhbHNlLCBXVEZN
b3ZlKG1hdGNoRnVuYykpKQpAQCAtNTY1LDcgKzU2NSw3IEBAIC0gKEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKilfYWNjZXNzaWIKIC0gKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilfYWNj
ZXNzaWJpbGl0eUFydGljbGVBbmNlc3RvcgogewogICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29i
amVjdCwgZmFsc2UsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKLSAg
ICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBEb2N1bWVudEFydGljbGVSb2xlOwor
ICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudEFydGljbGU7CiAgICAgfSkpCiAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIo
KTsKICAgICByZXR1cm4gbmlsOwpAQCAtNjE4LDQ4ICs2MTgsNDcgQEAgLSAodWludDY0X3QpX2Fj
Y2Vzc2liaWxpdHlUcmFpdHNGcm9tQW5jZQogICAgIC8vIFRoZSBwYXJlbnRPYmplY3QgaXMgbmVl
ZGVkIGluc3RlYWQgb2YgdGhlIHVuaWdub3JlZFBhcmVudE9iamVjdCwgYmVjYXVzZSBhIHRhYmxl
IG1pZ2h0IGJlIGlnbm9yZWQsIGJ1dCBpbmZvcm1hdGlvbiBzdGlsbCBuZWVkcyB0byBiZSBnYXRo
ZXJlZCBmcm9tIGl0LiAgICAKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50ICE9IG5pbDsgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBwYXJlbnRSb2xl
ID0gcGFyZW50LT5yb2xlVmFsdWUoKTsKLSAgICAgICAgaWYgKHBhcmVudFJvbGUgPT0gV2ViQXJl
YVJvbGUpCisgICAgICAgIGlmIChwYXJlbnRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJB
cmVhKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHBhcmVu
dFJvbGUpIHsKLSAgICAgICAgICAgIGNhc2UgTGlua1JvbGU6Ci0gICAgICAgICAgICBjYXNlIFdl
YkNvcmVMaW5rUm9sZToKLSAgICAgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4TGlua1Ry
YWl0XTsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50LT5pc1Zpc2l0ZWQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFZpc2l0ZWRUcmFpdF07Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEhlYWRpbmdSb2xlOgotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhIZWFkZXJUcmFpdF07Ci0gICAg
ICAgICAgICAgICAgLy8gSWYgdGhpcyBvYmplY3QgaGFzIHRoZSBoZWFkZXIgdHJhaXQsIHdlIHNo
b3VsZCBzZXQgdGhlIHZhbHVlCi0gICAgICAgICAgICAgICAgLy8gdG8gdGhlIGhlYWRpbmcgbGV2
ZWwuIElmIGl0IHdhcyBhIHN0YXRpYyB0ZXh0IGVsZW1lbnQsIHdlIG5lZWQgdG8gc3RvcmUKLSAg
ICAgICAgICAgICAgICAvLyB0aGUgdmFsdWUgYXMgdGhlIGxhYmVsLCBiZWNhdXNlIHRoZSBoZWFk
aW5nIGxldmVsIG5lZWRzIHRvIHRoZSB2YWx1ZS4KLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IHBhcmVudC0+d3JhcHBlcigpOwotICAgICAgICAg
ICAgICAgIGlmIChyb2xlID09IFN0YXRpY1RleHRSb2xlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IHNldCB0aGUgdGV4dCB2YWx1ZSBhcyB0aGUgbGFiZWwgd2hlbiB0
aGVyZSdzIG5vCi0gICAgICAgICAgICAgICAgICAgIC8vIGFsdGVybmF0ZSB0ZXh0IG9uIHRoZSBo
ZWFkaW5nIHBhcmVudC4KLSAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmhlYWRpbmdMYWJl
bCA9IFt3cmFwcGVyIGJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25dOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIVtoZWFkaW5nTGFiZWwgbGVuZ3RoXSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFtzZWxmIHNldEFjY2Vzc2liaWxpdHlMYWJlbDptX29iamVjdC0+c3RyaW5nVmFsdWUoKV07
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxm
IHNldEFjY2Vzc2liaWxpdHlMYWJlbDpoZWFkaW5nTGFiZWxdOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBbc2VsZiBzZXRBY2Nlc3NpYmlsaXR5VmFsdWU6W3dyYXBwZXIgYWNj
ZXNzaWJpbGl0eVZhbHVlXV07Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6Okxpbms6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OldlYkNvcmVMaW5rOgorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heExpbmtUcmFpdF07
CisgICAgICAgICAgICBpZiAocGFyZW50LT5pc1Zpc2l0ZWQoKSkKKyAgICAgICAgICAgICAgICB0
cmFpdHMgfD0gW3NlbGYgX2F4VmlzaXRlZFRyYWl0XTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOiB7CisgICAgICAgICAgICB0cmFp
dHMgfD0gW3NlbGYgX2F4SGVhZGVyVHJhaXRdOworICAgICAgICAgICAgLy8gSWYgdGhpcyBvYmpl
Y3QgaGFzIHRoZSBoZWFkZXIgdHJhaXQsIHdlIHNob3VsZCBzZXQgdGhlIHZhbHVlCisgICAgICAg
ICAgICAvLyB0byB0aGUgaGVhZGluZyBsZXZlbC4gSWYgaXQgd2FzIGEgc3RhdGljIHRleHQgZWxl
bWVudCwgd2UgbmVlZCB0byBzdG9yZQorICAgICAgICAgICAgLy8gdGhlIHZhbHVlIGFzIHRoZSBs
YWJlbCwgYmVjYXVzZSB0aGUgaGVhZGluZyBsZXZlbCBuZWVkcyB0byB0aGUgdmFsdWUuCisgICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IHBhcmVudC0+d3Jh
cHBlcigpOworICAgICAgICAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRp
Y1RleHQpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBzZXQgdGhlIHRleHQg
dmFsdWUgYXMgdGhlIGxhYmVsIHdoZW4gdGhlcmUncyBubworICAgICAgICAgICAgICAgIC8vIGFs
dGVybmF0ZSB0ZXh0IG9uIHRoZSBoZWFkaW5nIHBhcmVudC4KKyAgICAgICAgICAgICAgICBOU1N0
cmluZyAqaGVhZGluZ0xhYmVsID0gW3dyYXBwZXIgYmFzZUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bl07CisgICAgICAgICAgICAgICAgaWYgKCFbaGVhZGluZ0xhYmVsIGxlbmd0aF0pCisgICAgICAg
ICAgICAgICAgICAgIFtzZWxmIHNldEFjY2Vzc2liaWxpdHlMYWJlbDptX29iamVjdC0+c3RyaW5n
VmFsdWUoKV07CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBbc2Vs
ZiBzZXRBY2Nlc3NpYmlsaXR5TGFiZWw6aGVhZGluZ0xhYmVsXTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNhc2UgTGlzdEJveFJvbGU6Ci0gICAgICAgICAgICBjYXNlIExpc3RSb2xlOgot
ICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeUxpc3RUcmFpdF07
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdyaWRSb2xlOgotICAg
ICAgICAgICAgY2FzZSBUYWJsZVJvbGU6Ci0gICAgICAgICAgICBjYXNlIFRyZWVHcmlkUm9sZToK
LSAgICAgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4Q29udGFpbmVkQnlUYWJsZVRyYWl0
XTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgaWYgKFtzZWxmIF9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFya1JvbGU6cGFyZW50Um9s
ZV0pCi0gICAgICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeUxh
bmRtYXJrVHJhaXRdOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgW3NlbGYg
c2V0QWNjZXNzaWJpbGl0eVZhbHVlOlt3cmFwcGVyIGFjY2Vzc2liaWxpdHlWYWx1ZV1dOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEJveDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdDoKKyAgICAg
ICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeUxpc3RUcmFpdF07CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAgICAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWVHcmlkOgorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENvbnRh
aW5lZEJ5VGFibGVUcmFpdF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGlmIChbc2VsZiBfYWNjZXNzaWJpbGl0eUlzTGFuZG1hcmtSb2xlOnBhcmVu
dFJvbGVdKQorICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeUxh
bmRtYXJrVHJhaXRdOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vIElmIHRoaXMgb2JqZWN0IGhhcyBmaWVsZHNldCBwYXJlbnQsIHdlIHNob3VsZCBh
ZGQgY29udGFpbmVkQnlGaWVsZHNldFRyYWl0IHRvIGl0LgpAQCAtNjc2LDcgKzY3NSw3IEBAIC0g
KEJPT0wpYWNjZXNzaWJpbGl0eUlzV2ViSW50ZXJhY3RpdmVWaWQKICAgICAgICAgcmV0dXJuIE5P
OwogICAgIAogICAgIC8vIE9ubHkgbWFrZSB0aGUgdmlkZW8gb2JqZWN0IGludGVyYWN0aXZlIGlm
IGl0IHBsYXlzIGlubGluZSBhbmQgaGFzIG5vIG5hdGl2ZSBjb250cm9scy4KLSAgICBpZiAobV9v
YmplY3QtPnJvbGVWYWx1ZSgpICE9IFZpZGVvUm9sZSB8fCAhaXM8QWNjZXNzaWJpbGl0eU1lZGlh
T2JqZWN0PihtX29iamVjdCkpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VmlkZW8gfHwgIWlzPEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdD4obV9v
YmplY3QpKQogICAgICAgICByZXR1cm4gTk87CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eU1lZGlh
T2JqZWN0KiBtZWRpYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdD4o
bV9vYmplY3QpOwpAQCAtNzQxLDkgKzc0MCw5IEBAIC0gKHVpbnQ2NF90KV9hY2Nlc3NpYmlsaXR5
VGV4dEVudHJ5VHJhaXQKICAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBfYXhIYXNUZXh0Q3Vyc29y
VHJhaXRdIHwgW3NlbGYgX2F4VGV4dE9wZXJhdGlvbnNBdmFpbGFibGVUcmFpdF0pOwogICAgIGlm
IChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBf
YXhTZWN1cmVUZXh0RmllbGRUcmFpdF07Ci0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9
PSBTZWFyY2hGaWVsZFJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQpCiAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhT
ZWFyY2hGaWVsZFRyYWl0XTsKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IFRleHRB
cmVhUm9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUZXh0QXJlYSkKICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRleHRBcmVhVHJhaXRd
OwogICAgIHJldHVybiB0cmFpdHM7CiB9CkBAIC03NTYsNTggKzc1NSw1OCBAQCAtICh1aW50NjRf
dClhY2Nlc3NpYmlsaXR5VHJhaXRzCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1fb2Jq
ZWN0LT5yb2xlVmFsdWUoKTsKICAgICB1aW50NjRfdCB0cmFpdHMgPSBbc2VsZiBfYXhXZWJDb250
ZW50VHJhaXRdOwogICAgIHN3aXRjaCAocm9sZSkgewotICAgICAgICBjYXNlIExpbmtSb2xlOgot
ICAgICAgICBjYXNlIFdlYkNvcmVMaW5rUm9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSBbc2Vs
ZiBfYXhMaW5rVHJhaXRdOwotICAgICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1Zpc2l0ZWQoKSkK
LSAgICAgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VmlzaXRlZFRyYWl0XTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgICAgIGNhc2Ug
U2VhcmNoRmllbGRSb2xlOgotICAgICAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICAgICAgICAg
IHRyYWl0cyB8PSBbc2VsZiBfYWNjZXNzaWJpbGl0eVRleHRFbnRyeVRyYWl0c107Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJbWFnZVJvbGU6Ci0gICAgICAgICAgICB0cmFpdHMg
fD0gW3NlbGYgX2F4SW1hZ2VUcmFpdF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBUYWJSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRhYkJ1dHRvblRyYWl0
XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgICAg
ICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4QnV0dG9uVHJhaXRdOwotICAgICAgICAgICAgaWYgKG1f
b2JqZWN0LT5pc1ByZXNzZWQoKSkKLSAgICAgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4
VG9nZ2xlVHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9wVXBCdXR0
b25Sb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFBvcHVwQnV0dG9uVHJhaXRd
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAg
ICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFJhZGlvQnV0dG9uVHJhaXRdIHwgW3NlbGYgX2F4
VG9nZ2xlVHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9nZ2xlQnV0
dG9uUm9sZToKLSAgICAgICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgICAgIGNhc2UgU3dpdGNo
Um9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSAoW3NlbGYgX2F4QnV0dG9uVHJhaXRdIHwgW3Nl
bGYgX2F4VG9nZ2xlVHJhaXRdKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhl
YWRpbmdSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEhlYWRlclRyYWl0XTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0YXRpY1RleHRSb2xlOgotICAgICAg
ICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFN0YXRpY1RleHRUcmFpdF07Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTbGlkZXJSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtz
ZWxmIF9heEFkanVzdGFibGVUcmFpdF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBNZW51QnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgICAgICAg
ICB0cmFpdHMgfD0gW3NlbGYgX2F4TWVudUl0ZW1UcmFpdF07Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICAgICAgY2FzZSBNZW51SXRl
bVJhZGlvUm9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSAoW3NlbGYgX2F4TWVudUl0ZW1UcmFp
dF0gfCBbc2VsZiBfYXhUb2dnbGVUcmFpdF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpMaW5rOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOgorICAgICAg
ICB0cmFpdHMgfD0gW3NlbGYgX2F4TGlua1RyYWl0XTsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5p
c1Zpc2l0ZWQoKSkKKyAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhWaXNpdGVkVHJhaXRd
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYWNjZXNz
aWJpbGl0eVRleHRFbnRyeVRyYWl0c107CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkltYWdlOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4SW1hZ2VUcmFp
dF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAg
ICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRhYkJ1dHRvblRyYWl0XTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgICAgICB0cmFpdHMgfD0g
W3NlbGYgX2F4QnV0dG9uVHJhaXRdOworICAgICAgICBpZiAobV9vYmplY3QtPmlzUHJlc3NlZCgp
KQorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRvZ2dsZVRyYWl0XTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246CisgICAgICAg
IHRyYWl0cyB8PSBbc2VsZiBfYXhQb3B1cEJ1dHRvblRyYWl0XTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAgICAgIHRyYWl0cyB8
PSBbc2VsZiBfYXhSYWRpb0J1dHRvblRyYWl0XSB8IFtzZWxmIF9heFRvZ2dsZVRyYWl0XTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlN3aXRjaDoKKyAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBfYXhCdXR0b25UcmFp
dF0gfCBbc2VsZiBfYXhUb2dnbGVUcmFpdF0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4SGVh
ZGVyVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpT
dGF0aWNUZXh0OgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4U3RhdGljVGV4dFRyYWl0XTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgorICAg
ICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4QWRqdXN0YWJsZVRyYWl0XTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heE1lbnVJ
dGVtVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFk
aW86CisgICAgICAgIHRyYWl0cyB8PSAoW3NlbGYgX2F4TWVudUl0ZW1UcmFpdF0gfCBbc2VsZiBf
YXhUb2dnbGVUcmFpdF0pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudEVsZW1lbnQoKSkK
QEAgLTg0OSwxNzggKzg0OCwxNzcgQEAgLSAoQk9PTClkZXRlcm1pbmVJc0FjY2Vzc2liaWxpdHlF
bGVtZW50CiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIAogICAgIHN3
aXRjaCAobV9vYmplY3QtPnJvbGVWYWx1ZSgpKSB7Ci0gICAgICAgIGNhc2UgVGV4dEZpZWxkUm9s
ZToKLSAgICAgICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAgICAgIGNhc2UgQnV0dG9uUm9sZToK
LSAgICAgICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgotICAgICAgICBjYXNlIFBvcFVwQnV0dG9u
Um9sZToKLSAgICAgICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgICAgIGNhc2UgUmFkaW9CdXR0
b25Sb2xlOgotICAgICAgICBjYXNlIFNsaWRlclJvbGU6Ci0gICAgICAgIGNhc2UgTWVudUJ1dHRv
blJvbGU6Ci0gICAgICAgIGNhc2UgVmFsdWVJbmRpY2F0b3JSb2xlOgotICAgICAgICBjYXNlIElt
YWdlUm9sZToKLSAgICAgICAgY2FzZSBJbWFnZU1hcExpbmtSb2xlOgotICAgICAgICBjYXNlIFBy
b2dyZXNzSW5kaWNhdG9yUm9sZToKLSAgICAgICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgICAg
IGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6Ci0gICAgICAgIGNhc2UgTWVudUl0ZW1SYWRpb1Jv
bGU6Ci0gICAgICAgIGNhc2UgSW5jcmVtZW50b3JSb2xlOgotICAgICAgICBjYXNlIENvbWJvQm94
Um9sZToKLSAgICAgICAgY2FzZSBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlOgotICAgICAgICBjYXNl
IEltYWdlTWFwUm9sZToKLSAgICAgICAgY2FzZSBMaXN0TWFya2VyUm9sZToKLSAgICAgICAgY2Fz
ZSBMaXN0Qm94T3B0aW9uUm9sZToKLSAgICAgICAgY2FzZSBUYWJSb2xlOgotICAgICAgICBjYXNl
IERvY3VtZW50TWF0aFJvbGU6Ci0gICAgICAgIGNhc2UgSG9yaXpvbnRhbFJ1bGVSb2xlOgotICAg
ICAgICBjYXNlIFNsaWRlclRodW1iUm9sZToKLSAgICAgICAgY2FzZSBTd2l0Y2hSb2xlOgotICAg
ICAgICBjYXNlIFNlYXJjaEZpZWxkUm9sZToKLSAgICAgICAgY2FzZSBTcGluQnV0dG9uUm9sZToK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIFN0YXRpY1RleHRSb2xlOgot
ICAgICAgICB7Ci0gICAgICAgICAgICAvLyBNYW55IHRleHQgZWxlbWVudHMgb25seSBjb250YWlu
IGEgc3BhY2UuCi0gICAgICAgICAgICBpZiAoIVtbW3NlbGYgYWNjZXNzaWJpbGl0eUxhYmVsXSBz
dHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNl
Q2hhcmFjdGVyU2V0XV0gbGVuZ3RoXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgICAgIC8vIFRleHQgZWxlbWVudHMgdGhhdCBhcmUganVzdCBwaWVjZXMgb2YgbGlu
a3Mgb3IgaGVhZGVycyBzaG91bGQgbm90IGJlIGV4cG9zZWQuCi0gICAgICAgICAgICBpZiAoW0Fj
Y2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3Rvcihbc2VsZiBhY2Nlc3NpYmlsaXR5Q29udGFpbmVy
XSkgY29udGFpbnNVbm5hdHVyYWxseVNlZ21lbnRlZENoaWxkcmVuXSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
ICAgICAgICAgCi0gICAgICAgIC8vIERvbid0IGV4cG9zZSBoZWFkZXJzIGFzIGVsZW1lbnRzOyBp
bnN0ZWFkIGV4cG9zZSB0aGVpciBjaGlsZHJlbiBhcyBlbGVtZW50cywgd2l0aCB0aGUgaGVhZGVy
IHRyYWl0ICh1bmxlc3MgdGhleSBoYXZlIG5vIGNoaWxkcmVuKQotICAgICAgICBjYXNlIEhlYWRp
bmdSb2xlOgotICAgICAgICAgICAgaWYgKCFbc2VsZiBhY2Nlc3NpYmlsaXR5RWxlbWVudENvdW50
XSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpUZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1
dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTbGlkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpWYWx1ZUluZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpJbWFnZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExp
bms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3I6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
SXRlbVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkluY3JlbWVudG9yOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkRpc2Nsb3N1cmVUcmlhbmdsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJ
bWFnZU1hcDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0TWFya2VyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRpb246CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGFiOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50TWF0aDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTd2l0Y2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDogeworICAgICAgICAvLyBN
YW55IHRleHQgZWxlbWVudHMgb25seSBjb250YWluIGEgc3BhY2UuCisgICAgICAgIGlmICghW1tb
c2VsZiBhY2Nlc3NpYmlsaXR5TGFiZWxdIHN0cmluZ0J5VHJpbW1pbmdDaGFyYWN0ZXJzSW5TZXQ6
W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VDaGFyYWN0ZXJTZXRdXSBsZW5ndGhdKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgVmlkZW9Sb2xl
OgotICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlJc1dlYkludGVyYWN0aXZl
VmlkZW9dOwotICAgICAgICAgICAgCi0gICAgICAgIC8vIExpbmtzIGNhbiBzb21ldGltZXMgYmUg
ZWxlbWVudHMgKHdoZW4gdGhleSBvbmx5IGNvbnRhaW4gc3RhdGljIHRleHQgb3IgZG9uJ3QgY29u
dGFpbiBhbnl0aGluZykuCi0gICAgICAgIC8vIFRoZXkgc2hvdWxkIG5vdCBiZSBlbGVtZW50cyB3
aGVuIGNvbnRhaW5pbmcgdGV4dCBhbmQgb3RoZXIgdHlwZXMuCi0gICAgICAgIGNhc2UgV2ViQ29y
ZUxpbmtSb2xlOgotICAgICAgICBjYXNlIExpbmtSb2xlOgotICAgICAgICAgICAgaWYgKFtzZWxm
IGNvbnRhaW5zVW5uYXR1cmFsbHlTZWdtZW50ZWRDaGlsZHJlbl0gfHwgIVtzZWxmIGFjY2Vzc2li
aWxpdHlFbGVtZW50Q291bnRdKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEdyb3VwUm9sZToKLSAgICAgICAgICAg
IGlmIChbc2VsZiBpc1NWR0dyb3VwRWxlbWVudF0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgLy8gQWxsIG90aGVyIGVsZW1l
bnRzIGFyZSBpZ25vcmVkIG9uIHRoZSBpcGhvbmUuCi0gICAgICAgIGNhc2UgQW5ub3RhdGlvblJv
bGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25Sb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0
aW9uQWxlcnRSb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgot
ICAgICAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNh
dGlvbkdyb3VwUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkxvZ1JvbGU6Ci0gICAgICAg
IGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblN0
YXR1c1JvbGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlOgotICAgICAg
ICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xlOgotICAgICAgICBjYXNlIEF1ZGlvUm9sZToKLSAg
ICAgICAgY2FzZSBCbG9ja3F1b3RlUm9sZToKLSAgICAgICAgY2FzZSBCcm93c2VyUm9sZToKLSAg
ICAgICAgY2FzZSBCdXN5SW5kaWNhdG9yUm9sZToKLSAgICAgICAgY2FzZSBDYW52YXNSb2xlOgot
ICAgICAgICBjYXNlIENhcHRpb25Sb2xlOgotICAgICAgICBjYXNlIENlbGxSb2xlOgotICAgICAg
ICBjYXNlIENvbG9yV2VsbFJvbGU6Ci0gICAgICAgIGNhc2UgQ29sdW1uUm9sZToKLSAgICAgICAg
Y2FzZSBDb2x1bW5IZWFkZXJSb2xlOgotICAgICAgICBjYXNlIERlZmluaXRpb25Sb2xlOgotICAg
ICAgICBjYXNlIERlc2NyaXB0aW9uTGlzdFJvbGU6Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25M
aXN0VGVybVJvbGU6Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0RGV0YWlsUm9sZToKLSAg
ICAgICAgY2FzZSBEZXRhaWxzUm9sZToKLSAgICAgICAgY2FzZSBEaXJlY3RvcnlSb2xlOgotICAg
ICAgICBjYXNlIERpdlJvbGU6Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRSb2xlOgotICAgICAgICBj
YXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgICAgIGNhc2UgRG9jdW1lbnROb3RlUm9sZToK
LSAgICAgICAgY2FzZSBEcmF3ZXJSb2xlOgotICAgICAgICBjYXNlIEVkaXRhYmxlVGV4dFJvbGU6
Ci0gICAgICAgIGNhc2UgRmVlZFJvbGU6Ci0gICAgICAgIGNhc2UgRmlndXJlUm9sZToKLSAgICAg
ICAgY2FzZSBGb290ZXJSb2xlOgotICAgICAgICBjYXNlIEZvb3Rub3RlUm9sZToKLSAgICAgICAg
Y2FzZSBGb3JtUm9sZToKLSAgICAgICAgY2FzZSBHcmlkUm9sZToKLSAgICAgICAgY2FzZSBHcmlk
Q2VsbFJvbGU6Ci0gICAgICAgIGNhc2UgR3Jvd0FyZWFSb2xlOgotICAgICAgICBjYXNlIEhlbHBU
YWdSb2xlOgotICAgICAgICBjYXNlIElnbm9yZWRSb2xlOgotICAgICAgICBjYXNlIElubGluZVJv
bGU6Ci0gICAgICAgIGNhc2UgTGFiZWxSb2xlOgotICAgICAgICBjYXNlIExhbmRtYXJrQmFubmVy
Um9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgotICAgICAgICBj
YXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAgICAgICBjYXNlIExhbmRtYXJrRG9jUmVn
aW9uUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgotICAgICAgICBjYXNlIExh
bmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtSZWdpb25Sb2xlOgot
ICAgICAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKLSAgICAgICAgY2FzZSBMZWdlbmRSb2xl
OgotICAgICAgICBjYXNlIExpc3RSb2xlOgotICAgICAgICBjYXNlIExpc3RCb3hSb2xlOgotICAg
ICAgICBjYXNlIExpc3RJdGVtUm9sZToKLSAgICAgICAgY2FzZSBNYXJrUm9sZToKLSAgICAgICAg
Y2FzZSBNYXRoRWxlbWVudFJvbGU6Ci0gICAgICAgIGNhc2UgTWF0dGVSb2xlOgotICAgICAgICBj
YXNlIE1lbnVSb2xlOgotICAgICAgICBjYXNlIE1lbnVCYXJSb2xlOgotICAgICAgICBjYXNlIE1l
bnVMaXN0UG9wdXBSb2xlOgotICAgICAgICBjYXNlIE1lbnVMaXN0T3B0aW9uUm9sZToKLSAgICAg
ICAgY2FzZSBPdXRsaW5lUm9sZToKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhSb2xlOgotICAgICAg
ICBjYXNlIFByZVJvbGU6Ci0gICAgICAgIGNhc2UgUHJlc2VudGF0aW9uYWxSb2xlOgotICAgICAg
ICBjYXNlIFJhZGlvR3JvdXBSb2xlOgotICAgICAgICBjYXNlIFJvd0hlYWRlclJvbGU6Ci0gICAg
ICAgIGNhc2UgUm93Um9sZToKLSAgICAgICAgY2FzZSBSdWJ5QmFzZVJvbGU6Ci0gICAgICAgIGNh
c2UgUnVieUJsb2NrUm9sZToKLSAgICAgICAgY2FzZSBSdWJ5SW5saW5lUm9sZToKLSAgICAgICAg
Y2FzZSBSdWJ5UnVuUm9sZToKLSAgICAgICAgY2FzZSBSdWJ5VGV4dFJvbGU6Ci0gICAgICAgIGNh
c2UgUnVsZXJSb2xlOgotICAgICAgICBjYXNlIFJ1bGVyTWFya2VyUm9sZToKLSAgICAgICAgY2Fz
ZSBTY3JvbGxBcmVhUm9sZToKLSAgICAgICAgY2FzZSBTY3JvbGxCYXJSb2xlOgotICAgICAgICBj
YXNlIFNoZWV0Um9sZToKLSAgICAgICAgY2FzZSBTcGluQnV0dG9uUGFydFJvbGU6Ci0gICAgICAg
IGNhc2UgU3BsaXRHcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgU3BsaXR0ZXJSb2xlOgotICAgICAg
ICBjYXNlIFN1bW1hcnlSb2xlOgotICAgICAgICBjYXNlIFN5c3RlbVdpZGVSb2xlOgotICAgICAg
ICBjYXNlIFNWR1Jvb3RSb2xlOgotICAgICAgICBjYXNlIFNWR1RleHRQYXRoUm9sZToKLSAgICAg
ICAgY2FzZSBTVkdUZXh0Um9sZToKLSAgICAgICAgY2FzZSBTVkdUU3BhblJvbGU6Ci0gICAgICAg
IGNhc2UgVGFiR3JvdXBSb2xlOgotICAgICAgICBjYXNlIFRhYkxpc3RSb2xlOgotICAgICAgICBj
YXNlIFRhYlBhbmVsUm9sZToKLSAgICAgICAgY2FzZSBUYWJsZVJvbGU6Ci0gICAgICAgIGNhc2Ug
VGFibGVIZWFkZXJDb250YWluZXJSb2xlOgotICAgICAgICBjYXNlIFRlcm1Sb2xlOgotICAgICAg
ICBjYXNlIFRleHRHcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgVGltZVJvbGU6Ci0gICAgICAgIGNh
c2UgVHJlZVJvbGU6Ci0gICAgICAgIGNhc2UgVHJlZUl0ZW1Sb2xlOgotICAgICAgICBjYXNlIFRy
ZWVHcmlkUm9sZToKLSAgICAgICAgY2FzZSBUb29sYmFyUm9sZToKLSAgICAgICAgY2FzZSBVbmtu
b3duUm9sZToKLSAgICAgICAgY2FzZSBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGU6Ci0gICAgICAg
IGNhc2UgV2ViQXBwbGljYXRpb25Sb2xlOgotICAgICAgICBjYXNlIFdlYkFyZWFSb2xlOgotICAg
ICAgICBjYXNlIFdpbmRvd1JvbGU6Ci0gICAgICAgIGNhc2UgUm93R3JvdXBSb2xlOgorCisgICAg
ICAgIC8vIFRleHQgZWxlbWVudHMgdGhhdCBhcmUganVzdCBwaWVjZXMgb2YgbGlua3Mgb3IgaGVh
ZGVycyBzaG91bGQgbm90IGJlIGV4cG9zZWQuCisgICAgICAgIGlmIChbQWNjZXNzaWJpbGl0eVVu
aWdub3JlZEFuY2VzdG9yKFtzZWxmIGFjY2Vzc2liaWxpdHlDb250YWluZXJdKSBjb250YWluc1Vu
bmF0dXJhbGx5U2VnbWVudGVkQ2hpbGRyZW5dKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgICAgIAorICAgIC8vIERvbid0IGV4cG9z
ZSBoZWFkZXJzIGFzIGVsZW1lbnRzOyBpbnN0ZWFkIGV4cG9zZSB0aGVpciBjaGlsZHJlbiBhcyBl
bGVtZW50cywgd2l0aCB0aGUgaGVhZGVyIHRyYWl0ICh1bmxlc3MgdGhleSBoYXZlIG5vIGNoaWxk
cmVuKQorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc6CisgICAgICAgIGlmICgh
W3NlbGYgYWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0pCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpWaWRlbzoKKyAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlJc1dlYklu
dGVyYWN0aXZlVmlkZW9dOworICAgICAgICAKKyAgICAvLyBMaW5rcyBjYW4gc29tZXRpbWVzIGJl
IGVsZW1lbnRzICh3aGVuIHRoZXkgb25seSBjb250YWluIHN0YXRpYyB0ZXh0IG9yIGRvbid0IGNv
bnRhaW4gYW55dGhpbmcpLgorICAgIC8vIFRoZXkgc2hvdWxkIG5vdCBiZSBlbGVtZW50cyB3aGVu
IGNvbnRhaW5pbmcgdGV4dCBhbmQgb3RoZXIgdHlwZXMuCisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6V2ViQ29yZUxpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluazoKKyAg
ICAgICAgaWYgKFtzZWxmIGNvbnRhaW5zVW5uYXR1cmFsbHlTZWdtZW50ZWRDaGlsZHJlbl0gfHwg
IVtzZWxmIGFjY2Vzc2liaWxpdHlFbGVtZW50Q291bnRdKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cm91cDoKKyAgICAgICAgaWYgKFtzZWxmIGlzU1ZHR3JvdXBFbGVtZW50XSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAvLyBBbGwgb3RoZXIgZWxl
bWVudHMgYXJlIGlnbm9yZWQgb24gdGhlIGlwaG9uZS4KKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpBbm5vdGF0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9u
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uTG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFy
cXVlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1czoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkF1ZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJsb2NrcXVvdGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnJvd3NlcjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXN5SW5kaWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNh
bnZhczoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDYXB0aW9uOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JX
ZWxsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RGVmaW5pdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3Q6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0VGVybToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3REZXRhaWw6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlsczoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpE
aXJlY3Rvcnk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGl2OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RHJhd2VyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkVkaXRhYmxlVGV4dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVk
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpGb290ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9ybToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWRDZWxsOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3dBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkhlbHBUYWc6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbmxpbmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFiZWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm86CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtNYWluOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrTmF2aWdhdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lv
bjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMZWdlbmQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGlzdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1h
cms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0aEVsZW1lbnQ6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWF0dGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVMaXN0UG9wdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUxpc3RPcHRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6T3V0bGluZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGg6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UHJlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFs
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXA6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJv
dzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5QmFzZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpSdWJ5QmxvY2s6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVi
eUlubGluZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5UnVuOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlUZXh0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJ1bGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1bGVyTWFya2VyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2Nyb2xsQmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNoZWV0OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b25QYXJ0OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlNwbGl0R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bs
aXR0ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTeXN0ZW1XaWRlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlNWR1Jvb3Q6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dFBhdGg6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpTVkdUU3BhbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJHcm91cDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlRhYlBhbmVsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRlcm06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4
dEdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRpbWU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRl
bToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpUb29sYmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25v
d246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVyZmFjZVRvb2x0aXA6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGljYXRpb246CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6V2ViQXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXaW5k
b3c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93R3JvdXA6CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDQy
LDcgKzEwNDAsNyBAQCAtIChCT09MKXN0cmluZ1ZhbHVlU2hvdWxkQmVVc2VkSW5MYWJlbAogewog
ICAgIGlmIChtX29iamVjdC0+aXNUZXh0Q29udHJvbCgpKQogICAgICAgICByZXR1cm4gTk87Ci0g
ICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBQb3BVcEJ1dHRvblJvbGUpCisgICAgaWYg
KG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b24p
CiAgICAgICAgIHJldHVybiBOTzsKICAgICBpZiAobV9vYmplY3QtPmlzRmlsZVVwbG9hZEJ1dHRv
bigpKQogICAgICAgICByZXR1cm4gTk87CkBAIC0xMTI2LDEzICsxMTI0LDEzIEBAIC0gKE5TU3Ry
aW5nICopYWNjZXNzaWJpbGl0eUxhYmVsCiAgICAgICAgIGF4VGl0bGUgPSBuaWw7CiAKICAgICAv
LyBGb290ZXIgaXMgbm90IGNvbnNpZGVyZWQgYSBsYW5kbWFyaywgYnV0IHdlIHdhbnQgdGhlIHJv
bGUgZGVzY3JpcHRpb24uCi0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBGb290ZXJS
b2xlKQorICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OkZvb3RlcikKICAgICAgICAgbGFuZG1hcmtEZXNjcmlwdGlvbiA9IEFYRm9vdGVyUm9sZURlc2Ny
aXB0aW9uVGV4dCgpOwogCiAgICAgTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQgPSBbTlNNdXRhYmxl
U3RyaW5nIHN0cmluZ107Ci0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBIb3Jpem9u
dGFsUnVsZVJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGUpCiAgICAgICAgIGFwcGVuZFN0cmluZ1RvUmVzdWx0KHJl
c3VsdCwgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4dCgpKTsKLSAgICAgICAgCisKICAg
ICBhcHBlbmRTdHJpbmdUb1Jlc3VsdChyZXN1bHQsIGF4VGl0bGUpOwogICAgIGFwcGVuZFN0cmlu
Z1RvUmVzdWx0KHJlc3VsdCwgYXhEZXNjcmlwdGlvbik7CiAgICAgaWYgKFtzZWxmIHN0cmluZ1Zh
bHVlU2hvdWxkQmVVc2VkSW5MYWJlbF0pIHsKQEAgLTEzOTAsMTMgKzEzODgsMTMgQEAgLSAoTlNT
dHJpbmcgKilhY2Nlc3NpYmlsaXR5VmFsdWUKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIAog
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBtX29iamVjdC0+cm9sZVZhbHVlKCk7Ci0gICAg
aWYgKG1fb2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IHJvbGUgPT0gTWVudUl0ZW1DaGVj
a2JveFJvbGUgfHwgcm9sZSA9PSBNZW51SXRlbVJhZGlvUm9sZSkgeworICAgIGlmIChtX29iamVj
dC0+aXNDaGVja2JveE9yUmFkaW8oKSB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
SXRlbUNoZWNrYm94IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW8p
IHsKICAgICAgICAgc3dpdGNoIChtX29iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSkgewot
ICAgICAgICBjYXNlIEJ1dHRvblN0YXRlT2ZmOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlC
dXR0b25TdGF0ZTo6T2ZmOgogICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJWQiLCAwXTsKLSAgICAgICAgY2FzZSBCdXR0b25TdGF0ZU9uOgorICAgICAgICBj
YXNlIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T246CiAgICAgICAgICAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZCIsIDFdOwotICAgICAgICBjYXNlIEJ1dHRvblN0
YXRlTWl4ZWQ6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpNaXhlZDoK
ICAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVkIiwgMl07
CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNDUwLDcgKzE0
NDgsNyBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlJc0NvbWJvQm94CiAgICAgaWYgKCFbc2VsZiBf
cHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgcmV0
dXJuIG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBDb21ib0JveFJvbGU7CisgICAgcmV0dXJuIG1f
b2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g7CiB9CiAK
IC0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eUhpbnQKQEAgLTE2NzAsNyArMTY2OCw3IEBAIC0g
KEJPT0wpY29udGFpbnNVbm5hdHVyYWxseVNlZ21lbnRlZENoaWwKICAgICAgICAgcmV0dXJuIE5P
OwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBtX29iamVjdC0+cm9sZVZhbHVl
KCk7Ci0gICAgaWYgKHJvbGUgIT0gTGlua1JvbGUgJiYgcm9sZSAhPSBXZWJDb3JlTGlua1JvbGUp
CisgICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxpbmsgJiYgcm9sZSAhPSBBY2Nl
c3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmspCiAgICAgICAgIHJldHVybiBOTzsKICAgICAKICAg
ICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IG1fb2JqZWN0LT5jaGlsZHJlbigpOwpAQCAtMTY4Miw3
ICsxNjgwLDcgQEAgLSAoQk9PTCljb250YWluc1VubmF0dXJhbGx5U2VnbWVudGVkQ2hpbAogICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGlsZHJlblNpemU7ICsraSkgewogICAg
ICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gY2hpbGRyZW5baV0tPnJvbGVWYWx1ZSgpOwot
ICAgICAgICBpZiAocm9sZSAhPSBTdGF0aWNUZXh0Um9sZSAmJiByb2xlICE9IEltYWdlUm9sZSAm
JiByb2xlICE9IEdyb3VwUm9sZSAmJiByb2xlICE9IFRleHRHcm91cFJvbGUpCisgICAgICAgIGlm
IChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0ICYmIHJvbGUgIT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkltYWdlICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwICYm
IHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cCkKICAgICAgICAgICAgIHJldHVy
biBOTzsKICAgICB9CiAgICAgCkBAIC0xODI2LDcgKzE4MjQsNyBAQCAtIChpZClhY2Nlc3NpYmls
aXR5TGlua2VkRWxlbWVudAogICAgIAogICAgIC8vIElmIHRoaXMgc3RhdGljIHRleHQgaW5zaWRl
IG9mIGEgbGluaywgaXQgc2hvdWxkIHVzZSBpdHMgcGFyZW50J3MgbGlua2VkIGVsZW1lbnQuCiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudCA9IG1fb2JqZWN0OwotICAgIGlmIChtX29i
amVjdC0+cm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUgJiYgbV9vYmplY3QtPnBhcmVudE9i
amVjdFVuaWdub3JlZCgpLT5pc0xpbmsoKSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0ICYmIG1fb2JqZWN0LT5wYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKS0+aXNMaW5rKCkpCiAgICAgICAgIGVsZW1lbnQgPSBtX29iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuOwpAQCAtMjAwMCw3ICsxOTk4LDcgQEAg
LSAoQWNjZXNzaWJpbGl0eU9iamVjdCopdHJlZUl0ZW1QYXJlbnRGbwogewogICAgIC8vIFVzZSB0
aGlzIHRvIGNoZWNrIGlmIGFuIG9iamVjdCBpcyBpbnNpZGUgYSB0cmVlaXRlbSBvYmplY3QuCiAg
ICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1hdGNoZWRQYXJlbnQoKm9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QmIG9iamVjdCkgewotICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09
IFRyZWVJdGVtUm9sZTsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07CiAgICAgfSkpCiAgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihwYXJlbnQpOwogICAgIHJldHVybiBuaWw7CkBAIC0y
MDIyLDcgKzIwMjAsNyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlFbGVtZW50RGlkQmVjb21lRm9j
CiAgICAgLy8gVGhlIGZvY3VzZWQgVm9pY2VPdmVyIGVsZW1lbnQgbWlnaHQgYmUgdGhlIHRleHQg
aW5zaWRlIGEgbGluay4KICAgICAvLyBJbiB0aG9zZSBjYXNlcyB3ZSBzaG91bGQgZm9jdXMgb24g
dGhlIGxpbmsgaXRzZWxmLgogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0g
bV9vYmplY3Q7IG9iamVjdCAhPSBuaWw7IG9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0KCkp
IHsKLSAgICAgICAgaWYgKG9iamVjdC0+cm9sZVZhbHVlKCkgPT0gV2ViQXJlYVJvbGUpCisgICAg
ICAgIGlmIChvYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVh
KQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0Rm9jdXNB
dHRyaWJ1dGUoKSkgewpAQCAtMjk3MSwyMCArMjk2OSwxOSBAQCAtIChOU1N0cmluZyAqKWFjY2Vz
c2liaWxpdHlBUklBQ3VycmVudFN0CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgc3dp
dGNoIChtX29iamVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgpKSB7Ci0gICAgY2FzZSBBUklBQ3VycmVu
dEZhbHNlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZhbHNlOgog
ICAgICAgICByZXR1cm4gQCJmYWxzZSI7Ci0gICAgY2FzZSBBUklBQ3VycmVudFBhZ2U6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6UGFnZToKICAgICAgICAgcmV0dXJu
IEAicGFnZSI7Ci0gICAgY2FzZSBBUklBQ3VycmVudFN0ZXA6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5QVJJQUN1cnJlbnRTdGF0ZTo6U3RlcDoKICAgICAgICAgcmV0dXJuIEAic3RlcCI7Ci0gICAg
Y2FzZSBBUklBQ3VycmVudExvY2F0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJy
ZW50U3RhdGU6OkxvY2F0aW9uOgogICAgICAgICByZXR1cm4gQCJsb2NhdGlvbiI7Ci0gICAgY2Fz
ZSBBUklBQ3VycmVudFRpbWU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0
ZTo6VGltZToKICAgICAgICAgcmV0dXJuIEAidGltZSI7Ci0gICAgY2FzZSBBUklBQ3VycmVudERh
dGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6RGF0ZToKICAgICAg
ICAgcmV0dXJuIEAiZGF0ZSI7Ci0gICAgZGVmYXVsdDoKLSAgICBjYXNlIEFSSUFDdXJyZW50VHJ1
ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpUcnVlOgogICAgICAg
ICByZXR1cm4gQCJ0cnVlIjsKICAgICB9CiB9CkBAIC0yOTk1LDE0ICsyOTkyLDE0IEBAIC0gKE5T
U3RyaW5nICopYWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb24KICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICAKICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5zb3J0RGlyZWN0aW9uKCkpIHsKLSAgICBjYXNl
IFNvcnREaXJlY3Rpb25Bc2NlbmRpbmc6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVj
dGlvbjo6QXNjZW5kaW5nOgogICAgICAgICByZXR1cm4gQCJhc2NlbmRpbmciOwotICAgIGNhc2Ug
U29ydERpcmVjdGlvbkRlc2NlbmRpbmc6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVj
dGlvbjo6RGVzY2VuZGluZzoKICAgICAgICAgcmV0dXJuIEAiZGVzY2VuZGluZyI7Ci0gICAgY2Fz
ZSBTb3J0RGlyZWN0aW9uT3RoZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlv
bjo6T3RoZXI6CiAgICAgICAgIHJldHVybiBAIm90aGVyIjsKLSAgICBkZWZhdWx0OgotICAgIGNh
c2UgU29ydERpcmVjdGlvbk5vbmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlv
bjo6SW52YWxpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpOb25lOgog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIH0KQEAgLTMxMjYsNyArMzEyMyw3IEBAIC0gKEJP
T0wpYWNjZXNzaWJpbGl0eUlzTWF0aFRvcE9iamVjdAogICAgIGlmICghW3NlbGYgX3ByZXBhcmVB
Y2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIHJldHVybiBtX29i
amVjdC0+cm9sZVZhbHVlKCkgPT0gRG9jdW1lbnRNYXRoUm9sZTsKKyAgICByZXR1cm4gbV9vYmpl
Y3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg7CiB9CiAK
IC0gKE5TSW50ZWdlcilhY2Nlc3NpYmlsaXR5TWF0aExpbmVUaGlja25lc3MKQEAgLTMxNDIsNyAr
MzEzOSw3IEBAIC0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eU1hdGhUeXBlCiAgICAgaWYgKCFb
c2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gTWF0aEVsZW1lbnRSb2xlKSB7CisgICAg
aWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0aEVsZW1l
bnQpIHsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhGcmFjdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIEAiQVhNYXRoRnJhY3Rpb24iOwogICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0
aEZlbmNlZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCShyZXZpc2lvbiAyMjQwNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MiwzMiArODIsMzIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY2Nlc3NpYmlsaXR5SQogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNv
bnN0CiB7CiAgICAgaWYgKGlzTWVudUxpc3RQb3B1cCgpIHx8IGlzTWVudUxpc3RPcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKIAotICAgIGlmIChyb2xlVmFsdWUoKSA9
PSBDYXB0aW9uUm9sZSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICBpZiAocm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNhcHRpb24pCisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAgCi0gICAgaWYg
KHJvbGVWYWx1ZSgpID09IE1hcmtSb2xlKQotICAgICAgICByZXR1cm4gSW5jbHVkZU9iamVjdDsK
KyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1hcmspCisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0OwogCiAg
ICAgLy8gTmV2ZXIgZXhwb3NlIGFuIHVua25vd24gb2JqZWN0IG9uIHRoZSBNYWMuIENsaWVudHMg
b2YgdGhlIEFYIEFQSSB3aWxsIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCBpdC4KICAgICAvLyBT
cGVjaWFsIGNhc2UgaXMgd2hlbiB0aGUgdW5rbm93biBvYmplY3QgaXMgYWN0dWFsbHkgYW4gYXR0
YWNobWVudC4KLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gVW5rbm93blJvbGUgJiYgIWlzQXR0YWNo
bWVudCgpKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgIGlmIChyb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biAmJiAhaXNBdHRhY2htZW50KCkpCisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAg
ICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IElubGluZVJvbGUgJiYgIWlzU3R5bGVGb3JtYXRH
cm91cCgpKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgIGlmIChyb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5lICYmICFpc1N0eWxlRm9ybWF0R3JvdXAoKSkK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVj
dDsKIAogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkg
ewogICAgICAgICAvLyBUaGUgbGVnZW5kIGVsZW1lbnQgaXMgaWdub3JlZCBpZiBpdCBsaXZlcyBp
bnNpZGUgb2YgYSBmaWVsZHNldCBlbGVtZW50IHRoYXQgdXNlcyBpdCB0byBnZW5lcmF0ZSBhbHRl
cm5hdGl2ZSB0ZXh0LgogICAgICAgICBpZiAocmVuZGVyZXItPmlzTGVnZW5kKCkpIHsKICAgICAg
ICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50KCk7CiAgICAgICAgICAgICBp
ZiAoZWxlbWVudCAmJiBhbmNlc3RvcnNPZlR5cGU8SFRNTEZpZWxkU2V0RWxlbWVudD4oKmVsZW1l
bnQpLmZpcnN0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2Jq
ZWN0OwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVybiBEZWZhdWx0QmVoYXZpb3I7
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlv
cjsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FyZXRCcm93c2luZ0VuYWJs
ZWQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5t
bQkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjYsNyArMzI2LDcgQEAgLSAoQk9PTClmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaQog
LSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eVRpdGxlCiB7CiAgICAgLy8gU3RhdGljIHRl
eHQgb2JqZWN0cyBzaG91bGQgbm90IGhhdmUgYSB0aXRsZS4gSXRzIGNvbnRlbnQgaXMgY29tbXVu
aWNhdGVkIGluIGl0cyBBWFZhbHVlLgotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0g
U3RhdGljVGV4dFJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3RhdGljVGV4dCkKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdd
OwogCiAgICAgLy8gQSBmaWxlIHVwbG9hZCBidXR0b24gcHJlc2VudHMgYSBjaGFsbGVuZ2UgYmVj
YXVzZSBpdCBoYXMgYnV0dG9uIHRleHQgYW5kIGEgdmFsdWUsIGJ1dCB0aGUKQEAgLTM0MCwxNiAr
MzQwLDE2IEBAIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2liaWxpdHlUaXRsZQogICAgIAogICAg
IGZvciAoY29uc3QgYXV0byYgdGV4dCA6IHRleHRPcmRlcikgewogICAgICAgICAvLyBJZiB3ZSBo
YXZlIGFsdGVybmF0aXZlIHRleHQsIHRoZW4gd2Ugc2hvdWxkIG5vdCBleHBvc2UgYSB0aXRsZS4K
LSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBbHRlcm5hdGl2ZVRleHQpCisgICAgICAg
IGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0
aXZlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICAvLyBPbmNlIHdlIGVu
Y291bnRlciB2aXNpYmxlIHRleHQsIG9yIHRoZSB0ZXh0IGZyb20gb3VyIGNoaWxkcmVuIHRoYXQg
c2hvdWxkIGJlIHVzZWQgZm9yZW1vc3QuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0g
VmlzaWJsZVRleHQgfHwgdGV4dC50ZXh0U291cmNlID09IENoaWxkcmVuVGV4dCkKKyAgICAgICAg
aWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VmlzaWJsZSB8
fCB0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkNoaWxkcmVuKQog
ICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRo
ZXJlJ3MgYW4gZWxlbWVudCB0aGF0IGxhYmVscyB0aGlzIG9iamVjdCBhbmQgaXQncyBub3QgZXhw
b3NlZCwgdGhlbiB3ZSBzaG91bGQgdXNlCiAgICAgICAgIC8vIHRoYXQgdGV4dCBhcyBvdXIgdGl0
bGUuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gTGFiZWxCeUVsZW1lbnRUZXh0ICYm
ICFtX29iamVjdC0+ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkpCisgICAgICAgIGlmICh0ZXh0LnRl
eHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkxhYmVsQnlFbGVtZW50ICYmICFt
X29iamVjdC0+ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gdGV4
dC50ZXh0OwogICAgIH0KICAgICAKQEAgLTM2MCw3ICszNjAsNyBAQCAtIChOU1N0cmluZyAqKWJh
c2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpCiB7CiAgICAgLy8gU3RhdGljIHRleHQgb2JqZWN0cyBz
aG91bGQgbm90IGhhdmUgYSBkZXNjcmlwdGlvbi4gSXRzIGNvbnRlbnQgaXMgY29tbXVuaWNhdGVk
IGluIGl0cyBBWFZhbHVlLgogICAgIC8vIE9uZSBleGNlcHRpb24gaXMgdGhlIG1lZGlhIGNvbnRy
b2wgbGFiZWxzIHRoYXQgaGF2ZSBhIHZhbHVlIGFuZCBhIGRlc2NyaXB0aW9uLiBUaG9zZSBhcmUg
c2V0IHByb2dyYW1hdGljYWxseS4KLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IFN0
YXRpY1RleHRSb2xlICYmICFtX29iamVjdC0+aXNNZWRpYUNvbnRyb2xMYWJlbCgpKQorICAgIGlm
IChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQg
JiYgIW1fb2JqZWN0LT5pc01lZGlhQ29udHJvbExhYmVsKCkpCiAgICAgICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nXTsKICAgICAKICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRP
cmRlcjsKQEAgLTM2OSwxNiArMzY5LDE2IEBAIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2liaWxp
dHlEZXNjcmlwdGkKICAgICBOU011dGFibGVTdHJpbmcgKnJldHVyblRleHQgPSBbTlNNdXRhYmxl
U3RyaW5nIHN0cmluZ107CiAgICAgYm9vbCB2aXNpYmxlVGV4dEF2YWlsYWJsZSA9IGZhbHNlOwog
ICAgIGZvciAoY29uc3QgYXV0byYgdGV4dCA6IHRleHRPcmRlcikgewotICAgICAgICBpZiAodGV4
dC50ZXh0U291cmNlID09IEFsdGVybmF0aXZlVGV4dCkgeworICAgICAgICBpZiAodGV4dC50ZXh0
U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkgewogICAgICAg
ICAgICAgW3JldHVyblRleHQgYXBwZW5kU3RyaW5nOnRleHQudGV4dF07CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3dpdGNoICh0ZXh0LnRleHRTb3Vy
Y2UpIHsKICAgICAgICAgLy8gVGhlc2UgYXJlIHN1Yi1jb21wb25lbnRzIG9mIG9uZSBlbGVtZW50
IChBdHRhY2htZW50KSB0aGF0IGFyZSByZS1jb21iaW5lZCBpbiBPU1ggYW5kIGlPUy4KLSAgICAg
ICAgY2FzZSBUaXRsZVRleHQ6Ci0gICAgICAgIGNhc2UgU3VidGl0bGVUZXh0OgotICAgICAgICBj
YXNlIEFjdGlvblRleHQ6IHsKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
VGl0bGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1YnRpdGxlOgor
ICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBY3Rpb246IHsKICAgICAgICAg
ICAgIGlmICghdGV4dC50ZXh0Lmxlbmd0aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgaWYgKFtyZXR1cm5UZXh0IGxlbmd0aF0pCkBAIC0zODYsMTYgKzM4NiwxNiBAQCAt
IChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpCiAgICAgICAgICAgICBbcmV0
dXJuVGV4dCBhcHBlbmRTdHJpbmc6dGV4dC50ZXh0XTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgVmlzaWJsZVRleHQ6Ci0gICAgICAgIGNhc2UgQ2hpbGRyZW5U
ZXh0OgotICAgICAgICBjYXNlIExhYmVsQnlFbGVtZW50VGV4dDoKKyAgICAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5VGV4dFNvdXJjZTo6VmlzaWJsZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
VGV4dFNvdXJjZTo6Q2hpbGRyZW46CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2U6OkxhYmVsQnlFbGVtZW50OgogICAgICAgICAgICAgdmlzaWJsZVRleHRBdmFpbGFibGUgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9
PSBUaXRsZVRhZ1RleHQgJiYgIXZpc2libGVUZXh0QXZhaWxhYmxlKSB7CisgICAgICAgIGlmICh0
ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlRpdGxlVGFnICYmICF2
aXNpYmxlVGV4dEF2YWlsYWJsZSkgewogICAgICAgICAgICAgW3JldHVyblRleHQgYXBwZW5kU3Ry
aW5nOnRleHQudGV4dF07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDExLDIz
ICs0MTEsMjMgQEAgLSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eUhlbHBUZXh0CiAgICAg
CiAgICAgYm9vbCBkZXNjcmlwdGl2ZVRleHRBdmFpbGFibGUgPSBmYWxzZTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHRleHQgOiB0ZXh0T3JkZXIpIHsKLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJj
ZSA9PSBIZWxwVGV4dCB8fCB0ZXh0LnRleHRTb3VyY2UgPT0gU3VtbWFyeVRleHQpCisgICAgICAg
IGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHAgfHwg
dGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdW1tYXJ5KQogICAg
ICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsKICAgICAgICAgCiAgICAgICAgIC8vIElmIGFuIGVs
ZW1lbnQgZG9lcyBOT1QgaGF2ZSBvdGhlciBkZXNjcmlwdGl2ZSB0ZXh0IHRoZSB0aXRsZSB0YWcg
c2hvdWxkIGJlIHVzZWQgYXMgaXRzIGRlc2NyaXB0aXZlIHRleHQuCiAgICAgICAgIC8vIEJ1dCwg
aWYgdGhvc2UgQVJFIGF2YWlsYWJsZSwgdGhlbiB0aGUgdGl0bGUgdGFnIHNob3VsZCBiZSB1c2Vk
IGZvciBoZWxwIHRleHQgaW5zdGVhZC4KICAgICAgICAgc3dpdGNoICh0ZXh0LnRleHRTb3VyY2Up
IHsKLSAgICAgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHQ6Ci0gICAgICAgIGNhc2UgVmlzaWJsZVRl
eHQ6Ci0gICAgICAgIGNhc2UgQ2hpbGRyZW5UZXh0OgotICAgICAgICBjYXNlIExhYmVsQnlFbGVt
ZW50VGV4dDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRp
dmU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlZpc2libGU6CisgICAg
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkNoaWxkcmVuOgorICAgICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudDoKICAgICAgICAgICAgIGRl
c2NyaXB0aXZlVGV4dEF2YWlsYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IFRpdGxlVGFnVGV4dCAmJiBkZXNjcmlwdGl2ZVRl
eHRBdmFpbGFibGUpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0
eVRleHRTb3VyY2U6OlRpdGxlVGFnICYmIGRlc2NyaXB0aXZlVGV4dEF2YWlsYWJsZSkKICAgICAg
ICAgICAgIHJldHVybiB0ZXh0LnRleHQ7CiAgICAgfQogICAgIApAQCAtNDk4LDQ4ICs0OTgsNDgg
QEAgLSAoQ0dQb2ludCljb252ZXJ0UG9pbnRUb1NjcmVlblNwYWNlOihGbAogLSAoTlNTdHJpbmcg
KilhcmlhTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24KIHsKICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5y
b2xlVmFsdWUoKSkgewotICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyOgogICAgICAgICByZXR1cm4gQVhBUklBQ29u
dGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0Jhbm5lciIpOwotICAgIGNhc2UgTGFuZG1hcmtD
b21wbGVtZW50YXJ5Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Nv
bXBsZW1lbnRhcnk6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJ
QUxhbmRtYXJrQ29tcGxlbWVudGFyeSIpOwotICAgIGNhc2UgTGFuZG1hcmtDb250ZW50SW5mb1Jv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoKICAg
ICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtDb250ZW50
SW5mbyIpOwotICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya01haW46CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KEAiQVJJQUxhbmRtYXJrTWFpbiIpOwotICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9s
ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CiAgICAg
ICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrTmF2aWdhdGlv
biIpOwotICAgIGNhc2UgTGFuZG1hcmtEb2NSZWdpb25Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtS
ZWdpb25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgogICAgICAgICBy
ZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya1JlZ2lvbiIpOwotICAg
IGNhc2UgTGFuZG1hcmtTZWFyY2hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrU2VhcmNoOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFS
SUFMYW5kbWFya1NlYXJjaCIpOwotICAgIGNhc2UgQXBwbGljYXRpb25BbGVydFJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKICAgICAgICAgcmV0dXJu
IEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25BbGVydCIpOwotICAgIGNh
c2UgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRH
cm91cFRleHQoQCJBUklBQXBwbGljYXRpb25BbGVydERpYWxvZyIpOwotICAgIGNhc2UgQXBwbGlj
YXRpb25EaWFsb2dSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9u
RGlhbG9nOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBs
aWNhdGlvbkRpYWxvZyIpOwotICAgIGNhc2UgQXBwbGljYXRpb25Mb2dSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nOgogICAgICAgICByZXR1cm4gQVhBUklB
Q29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvbkxvZyIpOwotICAgIGNhc2UgQXBwbGlj
YXRpb25NYXJxdWVlUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
bk1hcnF1ZWU6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFw
cGxpY2F0aW9uTWFycXVlZSIpOwotICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzOgogICAgICAgICByZXR1
cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvblN0YXR1cyIpOwotICAg
IGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25UaW1lcjoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQo
QCJBUklBQXBwbGljYXRpb25UaW1lciIpOwotICAgIGNhc2UgRG9jdW1lbnRSb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgogICAgICAgICByZXR1cm4gQVhBUklBQ29u
dGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudCIpOwotICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xl
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU6CiAgICAg
ICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQURvY3VtZW50QXJ0aWNsZSIp
OwotICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpEb2N1bWVudE1hdGg6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAi
QVJJQURvY3VtZW50TWF0aCIpOwotICAgIGNhc2UgRG9jdW1lbnROb3RlUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGU6CiAgICAgICAgIHJldHVybiBBWEFSSUFD
b250ZW50R3JvdXBUZXh0KEAiQVJJQURvY3VtZW50Tm90ZSIpOwotICAgIGNhc2UgVXNlckludGVy
ZmFjZVRvb2x0aXBSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVzZXJJbnRlcmZh
Y2VUb29sdGlwOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFV
c2VySW50ZXJmYWNlVG9vbHRpcCIpOwotICAgIGNhc2UgVGFiUGFuZWxSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVu
dEdyb3VwVGV4dChAIkFSSUFUYWJQYW5lbCIpOwotICAgIGNhc2UgV2ViQXBwbGljYXRpb25Sb2xl
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uOgogICAgICAgICBy
ZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFXZWJBcHBsaWNhdGlvbiIpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC02NTIsNDYgKzY1Miw0NiBAQCBzdHJ1
Y3QgU2VhcmNoS2V5RW50cnkgewogc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAqIGNy
ZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKQogewogICAgIGNvbnN0IFNlYXJjaEtleUVu
dHJ5IHNlYXJjaEtleXNbXSA9IHsKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlBbnlUeXBlU2Vh
cmNoS2V5LCBBbnlUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QXJ0
aWNsZVNlYXJjaEtleSwgQXJ0aWNsZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXksIEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5LCBC
bG9ja3F1b3RlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRT
ZWFyY2hLZXksIEJvbGRGb250U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
QnV0dG9uU2VhcmNoS2V5LCBCdXR0b25TZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlDaGVja0JveFNlYXJjaEtleSwgQ2hlY2tCb3hTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlDb250cm9sU2VhcmNoS2V5LCBDb250cm9sU2VhcmNoS2V5IH0sCi0gICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSwgRGlmZmVyZW50VHlw
ZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VTZWFyY2hL
ZXksIEZvbnRDaGFuZ2VTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250
Q29sb3JDaGFuZ2VTZWFyY2hLZXksIEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSB9LAotICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUZyYW1lU2VhcmNoS2V5LCBGcmFtZVNlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXksIEdyYXBoaWNTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5LCBIZWFk
aW5nTGV2ZWwxU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xl
dmVsMlNlYXJjaEtleSwgSGVhZGluZ0xldmVsMlNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDNTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDNTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5LCBIZWFk
aW5nTGV2ZWw0U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xl
dmVsNVNlYXJjaEtleSwgSGVhZGluZ0xldmVsNVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDZTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDZTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5LCBI
ZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVh
ZGluZ1NlYXJjaEtleSwgSGVhZGluZ1NlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5LCBIaWdobGlnaHRlZFNlYXJjaEtleSB9LAotICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUl0YWxpY0ZvbnRTZWFyY2hLZXksIEl0YWxpY0ZvbnRTZWFyY2hL
ZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtleSwgTGFuZG1h
cmtTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5LCBM
aW5rU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSwg
TGlzdFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFy
Y2hLZXksIExpdmVSZWdpb25TZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlN
aXNzcGVsbGVkV29yZFNlYXJjaEtleSwgTWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkgfSwKLSAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lU2VhcmNoS2V5LCBPdXRsaW5lU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNoS2V5LCBQbGFpblRleHRT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNoS2V5
LCBSYWRpb0dyb3VwU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U2FtZVR5
cGVTZWFyY2hLZXksIFNhbWVUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5U3RhdGljVGV4dFNlYXJjaEtleSwgU3RhdGljVGV4dFNlYXJjaEtleSB9LAotICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5LCBTdHlsZUNoYW5nZVNlYXJjaEtl
eSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxldmVsU2VhcmNoS2V5LCBU
YWJsZVNhbWVMZXZlbFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRhYmxl
U2VhcmNoS2V5LCBUYWJsZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRl
eHRGaWVsZFNlYXJjaEtleSwgVGV4dEZpZWxkU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5VW5kZXJsaW5lU2VhcmNoS2V5LCBVbmRlcmxpbmVTZWFyY2hLZXkgfSwKLSAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBVbnZpc2l0ZWRMaW5r
U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtTZWFyY2hL
ZXksIFZpc2l0ZWRMaW5rU2VhcmNoS2V5IH0KKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlBbnlU
eXBlU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBbnlUeXBlIH0sCisgICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5QXJ0aWNsZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6QXJ0aWNsZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2
ZWxTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkJsb2NrcXVvdGVTYW1lTGV2ZWwg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpCbG9ja3F1b3RlIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
Qm9sZEZvbnRTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkJvbGRGb250IH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpCdXR0b24gfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFNlYXJj
aEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Q2hlY2tCb3ggfSwKKyAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlDb250cm9sU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpDb250
cm9sIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSwg
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6RGlmZmVyZW50VHlwZSB9LAorICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUZvbnRDaGFuZ2VTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkZv
bnRDaGFuZ2UgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JDaGFuZ2VTZWFy
Y2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkZvbnRDb2xvckNoYW5nZSB9LAorICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUZyYW1lU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
OjpGcmFtZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXksIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6OkdyYXBoaWMgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5n
TGV2ZWwxIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtl
eSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsMiB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDNTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXk6OkhlYWRpbmdMZXZlbDMgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2
ZWw0U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWw0IH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSwgQWNjZXNzaWJp
bGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsNSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDZTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdM
ZXZlbDYgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNo
S2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nU2FtZUxldmVsIH0sCisgICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6SGVhZGluZyB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNo
S2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIaWdobGlnaHRlZCB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUl0YWxpY0ZvbnRTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6
Okl0YWxpY0ZvbnQgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtl
eSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6TGFuZG1hcmsgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlMaW5rU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpMaW5rIH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6TGlzdCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFyY2hL
ZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkxpdmVSZWdpb24gfSwKKyAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlNaXNzcGVsbGVkV29yZFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6TWlzc3BlbGxlZFdvcmQgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lU2Vh
cmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpPdXRsaW5lIH0sCisgICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpQ
bGFpblRleHQgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNoS2V5
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpSYWRpb0dyb3VwIH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5U2FtZVR5cGVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlNhbWVU
eXBlIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFNlYXJjaEtleSwgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleTo6U3RhdGljVGV4dCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTdHlsZUNo
YW5nZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxldmVsU2VhcmNoS2V5
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpUYWJsZVNhbWVMZXZlbCB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eVRhYmxlU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpUYWJs
ZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleSwgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6VGV4dEZpZWxkIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
VW5kZXJsaW5lU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpVbmRlcmxpbmUgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpVbnZpc2l0ZWRMaW5rIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5VmlzaXRlZExpbmtTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlZpc2l0ZWRM
aW5rIH0KICAgICB9OwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAqIHNlYXJj
aEtleU1hcCA9IG5ldyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwOwpAQCAtNzA0LDExICs3MDQs
MTEgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAqIGNyZWF0ZQogc3RhdGljIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBBbnlUeXBlU2VhcmNoS2V5OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6QW55VHlwZTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleU1hcCogc2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgp
OwogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgc2VhcmNoS2V5ID0gc2VhcmNoS2V5TWFwLT5n
ZXQodmFsdWUpOyAgICAKLSAgICByZXR1cm4gc2VhcmNoS2V5ID8gc2VhcmNoS2V5IDogQW55VHlw
ZVNlYXJjaEtleTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzZWFyY2hLZXkpID8gc2Vh
cmNoS2V5IDogQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZTsKIH0KIAogQWNjZXNzaWJp
bGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFBy
ZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlKQpAQCAtNzIxLDkgKzcyMSw5IEBAIEFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYSBhY2Nlc3NpYmlsaXQKICAgICBOU051bWJlciAqdmlzaWJsZU9ubHlQYXJhbWV0ZXIg
PSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJBWFZpc2libGVPbmx5Il07
CiAgICAgaWQgc2VhcmNoS2V5UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2Jq
ZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXTsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNo
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFNlYXJjaERpcmVjdGlvbk5leHQ7CisgICAgQWNjZXNzaWJp
bGl0eVNlYXJjaERpcmVjdGlvbiBkaXJlY3Rpb24gPSBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0
aW9uOjpOZXh0OwogICAgIGlmIChbZGlyZWN0aW9uUGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIGRpcmVjdGlvbiA9IFtkaXJlY3Rpb25QYXJhbWV0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiQVhEaXJlY3Rpb25OZXh0Il0gPyBTZWFyY2hEaXJlY3Rpb25OZXh0
IDogU2VhcmNoRGlyZWN0aW9uUHJldmlvdXM7CisgICAgICAgIGRpcmVjdGlvbiA9IFtkaXJlY3Rp
b25QYXJhbWV0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiQVhEaXJlY3Rpb25OZXh0Il0gPyBBY2Nlc3Np
YmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpOZXh0IDogQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlv
bjo6UHJldmlvdXM7CiAgICAgCiAgICAgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkgPSBm
YWxzZTsKICAgICBpZiAoW2ltbWVkaWF0ZURlc2NlbmRhbnRzT25seVBhcmFtZXRlciBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0JKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00OTQsMjQgKzQ5NCwyNCBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlbGVjdFRl
eHRDcml0ZXJpYSBhCiAgICAgTlNTdHJpbmcgKnJlcGxhY2VtZW50U3RyaW5nUGFyYW1ldGVyID0g
W3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVNlbGVj
dFRleHRSZXBsYWNlbWVudFN0cmluZ107CiAgICAgTlNBcnJheSAqc2VhcmNoU3RyaW5nc1BhcmFt
ZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpOU0FjY2Vzc2liaWxp
dHlTZWxlY3RUZXh0U2VhcmNoU3RyaW5nc107CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eVNlbGVj
dFRleHRBY3Rpdml0eSBhY3Rpdml0eSA9IEZpbmRBbmRTZWxlY3RBY3Rpdml0eTsKKyAgICBBY2Nl
c3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5IGFjdGl2aXR5ID0gQWNjZXNzaWJpbGl0eVNlbGVj
dFRleHRBY3Rpdml0eTo6RmluZEFuZFNlbGVjdDsKICAgICBpZiAoW2FjdGl2aXR5UGFyYW1ldGVy
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAgICAgICAgaWYgKFthY3Rpdml0
eVBhcmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2
aXR5RmluZEFuZFJlcGxhY2VdKQotICAgICAgICAgICAgYWN0aXZpdHkgPSBGaW5kQW5kUmVwbGFj
ZUFjdGl2aXR5OworICAgICAgICAgICAgYWN0aXZpdHkgPSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4
dEFjdGl2aXR5OjpGaW5kQW5kUmVwbGFjZTsKICAgICAgICAgZWxzZSBpZiAoW2FjdGl2aXR5UGFy
YW1ldGVyIGlzRXF1YWxUb1N0cmluZzprQVhTZWxlY3RUZXh0QWN0aXZpdHlGaW5kQW5kQ2FwaXRh
bGl6ZV0pCi0gICAgICAgICAgICBhY3Rpdml0eSA9IEZpbmRBbmRDYXBpdGFsaXplOworICAgICAg
ICAgICAgYWN0aXZpdHkgPSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5k
Q2FwaXRhbGl6ZTsKICAgICAgICAgZWxzZSBpZiAoW2FjdGl2aXR5UGFyYW1ldGVyIGlzRXF1YWxU
b1N0cmluZzprQVhTZWxlY3RUZXh0QWN0aXZpdHlGaW5kQW5kTG93ZXJjYXNlXSkKLSAgICAgICAg
ICAgIGFjdGl2aXR5ID0gRmluZEFuZExvd2VyY2FzZTsKKyAgICAgICAgICAgIGFjdGl2aXR5ID0g
QWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZExvd2VyY2FzZTsKICAgICAg
ICAgZWxzZSBpZiAoW2FjdGl2aXR5UGFyYW1ldGVyIGlzRXF1YWxUb1N0cmluZzprQVhTZWxlY3RU
ZXh0QWN0aXZpdHlGaW5kQW5kVXBwZXJjYXNlXSkKLSAgICAgICAgICAgIGFjdGl2aXR5ID0gRmlu
ZEFuZFVwcGVyY2FzZTsKKyAgICAgICAgICAgIGFjdGl2aXR5ID0gQWNjZXNzaWJpbGl0eVNlbGVj
dFRleHRBY3Rpdml0eTo6RmluZEFuZFVwcGVyY2FzZTsKICAgICB9CiAgICAgCi0gICAgQWNjZXNz
aWJpbGl0eVNlbGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uIGFtYmlndWl0eVJlc29sdXRpb24g
PSBDbG9zZXN0VG9TZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uOworICAgIEFjY2Vzc2liaWxp
dHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbiBhbWJpZ3VpdHlSZXNvbHV0aW9uID0gQWNj
ZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0VG87CiAgICAg
aWYgKFthbWJpZ3VpdHlSZXNvbHV0aW9uUGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pIHsKICAgICAgICAgaWYgKFthbWJpZ3VpdHlSZXNvbHV0aW9uUGFyYW1ldGVyIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlv
bkNsb3Nlc3RBZnRlclNlbGVjdGlvbl0pCi0gICAgICAgICAgICBhbWJpZ3VpdHlSZXNvbHV0aW9u
ID0gQ2xvc2VzdEFmdGVyU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbjsKKyAgICAgICAgICAg
IGFtYmlndWl0eVJlc29sdXRpb24gPSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJl
c29sdXRpb246OkNsb3Nlc3RBZnRlcjsKICAgICAgICAgZWxzZSBpZiAoW2FtYmlndWl0eVJlc29s
dXRpb25QYXJhbWV0ZXIgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRB
bWJpZ3VpdHlSZXNvbHV0aW9uQ2xvc2VzdEJlZm9yZVNlbGVjdGlvbl0pCi0gICAgICAgICAgICBh
bWJpZ3VpdHlSZXNvbHV0aW9uID0gQ2xvc2VzdEJlZm9yZVNlbGVjdGlvbkFtYmlndWl0eVJlc29s
dXRpb247CisgICAgICAgICAgICBhbWJpZ3VpdHlSZXNvbHV0aW9uID0gQWNjZXNzaWJpbGl0eVNl
bGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0QmVmb3JlOwogICAgIH0KICAgICAK
ICAgICBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmc7CkBAIC0xMTk4LDcgKzExOTgsNyBAQCAtIChO
U0FycmF5KilhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpCiAgICAgICAgIFthZGRpdGlvbmFs
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUG9zSW5TZXRBdHRyaWJ1dGVdOwogICAgIAog
ICAgIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIHNvcnREaXJlY3Rpb24gPSBtX29iamVjdC0+
c29ydERpcmVjdGlvbigpOwotICAgIGlmIChzb3J0RGlyZWN0aW9uICE9IFNvcnREaXJlY3Rpb25O
b25lICYmIHNvcnREaXJlY3Rpb24gIT0gU29ydERpcmVjdGlvbkludmFsaWQpCisgICAgaWYgKHNv
cnREaXJlY3Rpb24gIT0gQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok5vbmUgJiYgc29ydERp
cmVjdGlvbiAhPSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6SW52YWxpZCkKICAgICAgICAg
W2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1
dGVdOwogICAgIAogICAgIC8vIElmIGFuIG9iamVjdCBpcyBhIGNoaWxkIG9mIGEgbGl2ZSByZWdp
b24sIHRoZW4gYWRkIHRoZXNlCkBAIC0xNjYxLDcgKzE2NjEsNyBAQCAtIChOU0FycmF5KilhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IFtvYmpl
Y3RBdHRyaWJ1dGVzIGFycmF5QnlBZGRpbmdPYmplY3RzRnJvbUFycmF5OmFkZGl0aW9uYWxBdHRy
aWJ1dGVzXTsKICAgICAKICAgICAvLyBPbmx5IGV4cG9zZSBBWEFSSUFDdXJyZW50IGF0dHJpYnV0
ZSB3aGVuIHRoZSBlbGVtZW50IGlzIHNldCB0byBiZSBjdXJyZW50IGl0ZW0uCi0gICAgaWYgKG1f
b2JqZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQVJJQUN1cnJlbnRGYWxzZSkKKyAgICBpZiAo
bV9vYmplY3QtPmFyaWFDdXJyZW50U3RhdGUoKSAhPSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRT
dGF0ZTo6RmFsc2UpCiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBbb2JqZWN0QXR0cmlidXRl
cyBhcnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTpAWyBOU0FjY2Vzc2liaWxpdHlBUklBQ3Vy
cmVudEF0dHJpYnV0ZSBdXTsKICAgICAKICAgICByZXR1cm4gb2JqZWN0QXR0cmlidXRlczsKQEAg
LTE4NDksMTU0ICsxODQ5LDE1NCBAQCBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVJvbGVNYXAm
IGNyZWF0CiAgICAgfTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgUm9sZUVudHJ5IHJvbGVzW10g
PSB7Ci0gICAgICAgIHsgVW5rbm93blJvbGUsIE5TQWNjZXNzaWJpbGl0eVVua25vd25Sb2xlIH0s
Ci0gICAgICAgIHsgQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uUm9sZSB9LAotICAg
ICAgICB7IFJhZGlvQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UmFkaW9CdXR0b25Sb2xlIH0s
Ci0gICAgICAgIHsgQ2hlY2tCb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFJvbGUgfSwK
LSAgICAgICAgeyBTbGlkZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlTbGlkZXJSb2xlIH0sCi0gICAg
ICAgIHsgVGFiR3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJHcm91cFJvbGUgfSwKLSAgICAg
ICAgeyBUZXh0RmllbGRSb2xlLCBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRSb2xlIH0sCi0gICAg
ICAgIHsgU3RhdGljVGV4dFJvbGUsIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRSb2xlIH0sCi0g
ICAgICAgIHsgVGV4dEFyZWFSb2xlLCBOU0FjY2Vzc2liaWxpdHlUZXh0QXJlYVJvbGUgfSwKLSAg
ICAgICAgeyBTY3JvbGxBcmVhUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsQXJlYVJvbGUgfSwK
LSAgICAgICAgeyBQb3BVcEJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eVBvcFVwQnV0dG9uUm9s
ZSB9LAotICAgICAgICB7IE1lbnVCdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51QnV0dG9u
Um9sZSB9LAotICAgICAgICB7IFRhYmxlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGFibGVSb2xlIH0s
Ci0gICAgICAgIHsgQXBwbGljYXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlBcHBsaWNhdGlvblJv
bGUgfSwKLSAgICAgICAgeyBHcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAot
ICAgICAgICB7IFRleHRHcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IFJhZGlvR3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwUm9sZSB9LAot
ICAgICAgICB7IExpc3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7
IERpcmVjdG9yeVJvbGUsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCi0gICAgICAgIHsgU2Ny
b2xsQmFyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsQmFyUm9sZSB9LAotICAgICAgICB7IFZh
bHVlSW5kaWNhdG9yUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VmFsdWVJbmRpY2F0b3JSb2xlIH0sCi0g
ICAgICAgIHsgSW1hZ2VSb2xlLCBOU0FjY2Vzc2liaWxpdHlJbWFnZVJvbGUgfSwKLSAgICAgICAg
eyBNZW51QmFyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVudUJhclJvbGUgfSwKLSAgICAgICAgeyBN
ZW51Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVudVJvbGUgfSwKLSAgICAgICAgeyBNZW51SXRlbVJv
bGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVtUm9sZSB9LAotICAgICAgICB7IE1lbnVJdGVtQ2hl
Y2tib3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51SXRlbVJvbGUgfSwKLSAgICAgICAgeyBNZW51
SXRlbVJhZGlvUm9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0sCi0gICAgICAgIHsg
Q29sdW1uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Q29sdW1uUm9sZSB9LAotICAgICAgICB7IFJvd1Jv
bGUsIE5TQWNjZXNzaWJpbGl0eVJvd1JvbGUgfSwKLSAgICAgICAgeyBUb29sYmFyUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5VG9vbGJhclJvbGUgfSwKLSAgICAgICAgeyBCdXN5SW5kaWNhdG9yUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5QnVzeUluZGljYXRvclJvbGUgfSwKLSAgICAgICAgeyBQcm9ncmVzc0lu
ZGljYXRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yUm9sZSB9LAotICAg
ICAgICB7IFdpbmRvd1JvbGUsIE5TQWNjZXNzaWJpbGl0eVdpbmRvd1JvbGUgfSwKLSAgICAgICAg
eyBEcmF3ZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlEcmF3ZXJSb2xlIH0sCi0gICAgICAgIHsgU3lz
dGVtV2lkZVJvbGUsIE5TQWNjZXNzaWJpbGl0eVN5c3RlbVdpZGVSb2xlIH0sCi0gICAgICAgIHsg
T3V0bGluZVJvbGUsIE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb2xlIH0sCi0gICAgICAgIHsgSW5j
cmVtZW50b3JSb2xlLCBOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRvclJvbGUgfSwKLSAgICAgICAg
eyBCcm93c2VyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5QnJvd3NlclJvbGUgfSwKLSAgICAgICAgeyBD
b21ib0JveFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNvbWJvQm94Um9sZSB9LAotICAgICAgICB7IFNw
bGl0R3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlTcGxpdEdyb3VwUm9sZSB9LAotICAgICAgICB7
IFNwbGl0dGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3BsaXR0ZXJSb2xlIH0sCi0gICAgICAgIHsg
Q29sb3JXZWxsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Q29sb3JXZWxsUm9sZSB9LAotICAgICAgICB7
IEdyb3dBcmVhUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3Jvd0FyZWFSb2xlIH0sCi0gICAgICAgIHsg
U2hlZXRSb2xlLCBOU0FjY2Vzc2liaWxpdHlTaGVldFJvbGUgfSwKLSAgICAgICAgeyBIZWxwVGFn
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5SGVscFRhZ1JvbGUgfSwKLSAgICAgICAgeyBNYXR0ZVJvbGUs
IE5TQWNjZXNzaWJpbGl0eU1hdHRlUm9sZSB9LAotICAgICAgICB7IFJ1bGVyUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5UnVsZXJSb2xlIH0sCi0gICAgICAgIHsgUnVsZXJNYXJrZXJSb2xlLCBOU0FjY2Vz
c2liaWxpdHlSdWxlck1hcmtlclJvbGUgfSwKLSAgICAgICAgeyBMaW5rUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5TGlua1JvbGUgfSwKLSAgICAgICAgeyBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlEaXNjbG9zdXJlVHJpYW5nbGVSb2xlIH0sCi0gICAgICAgIHsgR3JpZFJvbGUs
IE5TQWNjZXNzaWJpbGl0eVRhYmxlUm9sZSB9LAotICAgICAgICB7IFRyZWVHcmlkUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5VGFibGVSb2xlIH0sCi0gICAgICAgIHsgV2ViQ29yZUxpbmtSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlMaW5rUm9sZSB9LAotICAgICAgICB7IEltYWdlTWFwTGlua1JvbGUsIE5TQWNj
ZXNzaWJpbGl0eUxpbmtSb2xlIH0sCi0gICAgICAgIHsgSW1hZ2VNYXBSb2xlLCBAIkFYSW1hZ2VN
YXAiIH0sCi0gICAgICAgIHsgTGlzdE1hcmtlclJvbGUsIEAiQVhMaXN0TWFya2VyIiB9LAotICAg
ICAgICB7IFdlYkFyZWFSb2xlLCBAIkFYV2ViQXJlYSIgfSwKLSAgICAgICAgeyBIZWFkaW5nUm9s
ZSwgQCJBWEhlYWRpbmciIH0sCi0gICAgICAgIHsgTGlzdEJveFJvbGUsIE5TQWNjZXNzaWJpbGl0
eUxpc3RSb2xlIH0sCi0gICAgICAgIHsgTGlzdEJveE9wdGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0
eVN0YXRpY1RleHRSb2xlIH0sCi0gICAgICAgIHsgQ2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNl
bGxSb2xlIH0sCi0gICAgICAgIHsgR3JpZENlbGxSb2xlLCBOU0FjY2Vzc2liaWxpdHlDZWxsUm9s
ZSB9LAotICAgICAgICB7IFRhYmxlSGVhZGVyQ29udGFpbmVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQ29sdW1uSGVhZGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
Q2VsbFJvbGUgfSwKLSAgICAgICAgeyBSb3dIZWFkZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlDZWxs
Um9sZSB9LAotICAgICAgICB7IERlZmluaXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKLSAgICAgICAgeyBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEZXNjcmlwdGlvbkxpc3RUZXJtUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVGVybVJvbGUsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERlc2NyaXB0aW9uTGlzdFJvbGUsIE5TQWNjZXNzaWJp
bGl0eUxpc3RSb2xlIH0sCi0gICAgICAgIHsgU2xpZGVyVGh1bWJSb2xlLCBOU0FjY2Vzc2liaWxp
dHlWYWx1ZUluZGljYXRvclJvbGUgfSwKLSAgICAgICAgeyBXZWJBcHBsaWNhdGlvblJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrQmFubmVyUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFuZG1hcmtDb21wbGVtZW50
YXJ5Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFuZG1hcmtE
b2NSZWdpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5k
bWFya0NvbnRlbnRJbmZvUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgTGFuZG1hcmtNYWluUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0g
ICAgICAgIHsgTGFuZG1hcmtSZWdpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
LSAgICAgICAgeyBMYW5kbWFya1NlYXJjaFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAotICAgICAgICB7IEFwcGxpY2F0aW9uQWxlcnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25EaWFsb2dSb2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkdyb3VwUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25UZXh0R3JvdXBS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkxv
Z1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9u
TWFycXVlZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxp
Y2F0aW9uU3RhdHVzUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
QXBwbGljYXRpb25UaW1lclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAg
ICB7IERvY3VtZW50Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
RG9jdW1lbnRBcnRpY2xlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgRG9jdW1lbnRNYXRoUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgRG9jdW1lbnROb3RlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgVXNlckludGVyZmFjZVRvb2x0aXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
LSAgICAgICAgeyBUYWJSb2xlLCBOU0FjY2Vzc2liaWxpdHlSYWRpb0J1dHRvblJvbGUgfSwKLSAg
ICAgICAgeyBUYWJMaXN0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5VGFiR3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgVGFiUGFuZWxSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAg
eyBUcmVlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKLSAgICAgICAgeyBUcmVl
SXRlbVJvbGUsIE5TQWNjZXNzaWJpbGl0eVJvd1JvbGUgfSwKLSAgICAgICAgeyBMaXN0SXRlbVJv
bGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFBhcmFncmFwaFJvbGUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhYmVsUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRGl2Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRm9ybVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IFNwaW5CdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRv
clJvbGUgfSwKLSAgICAgICAgeyBGb290ZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKLSAgICAgICAgeyBUb2dnbGVCdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFJv
bGUgfSwKLSAgICAgICAgeyBDYW52YXNSb2xlLCBOU0FjY2Vzc2liaWxpdHlJbWFnZVJvbGUgfSwK
LSAgICAgICAgeyBTVkdSb290Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgTGVnZW5kUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
TWF0aEVsZW1lbnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBB
dWRpb1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFZpZGVvUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgSG9yaXpvbnRhbFJ1bGVS
b2xlLCBOU0FjY2Vzc2liaWxpdHlTcGxpdHRlclJvbGUgfSwKLSAgICAgICAgeyBCbG9ja3F1b3Rl
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgU3dpdGNoUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hSb2xlIH0sCi0gICAgICAgIHsgU2VhcmNoRmllbGRSb2xl
LCBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRSb2xlIH0sCi0gICAgICAgIHsgUHJlUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUnVieUJhc2VSb2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBSdWJ5QmxvY2tSb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBSdWJ5SW5saW5lUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUnVieVJ1blJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAotICAgICAgICB7IFJ1YnlUZXh0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgRGV0YWlsc1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAotICAgICAgICB7IFN1bW1hcnlSb2xlLCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0sCi0g
ICAgICAgIHsgU1ZHVGV4dFBhdGhSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAg
ICAgICAgeyBTVkdUZXh0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgU1ZHVFNwYW5Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBJ
bmxpbmVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBNYXJrUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVGltZVJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEZlZWRSb2xlLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBGaWd1cmVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBGb290bm90ZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duLCBOU0FjY2Vzc2liaWxp
dHlVbmtub3duUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b24sIE5T
QWNjZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
UmFkaW9CdXR0b24sIE5TQWNjZXNzaWJpbGl0eVJhZGlvQnV0dG9uUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveCwgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlciwgTlNBY2Nlc3NpYmlsaXR5
U2xpZGVyUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJHcm91cCwgTlNB
Y2Nlc3NpYmlsaXR5VGFiR3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OlRleHRGaWVsZCwgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0LCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSwgTlNBY2Nlc3NpYmls
aXR5VGV4dEFyZWFSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFy
ZWEsIE5TQWNjZXNzaWJpbGl0eVNjcm9sbEFyZWFSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OlBvcFVwQnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlQb3BVcEJ1dHRvblJvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbiwgTlNBY2Nlc3NpYmlsaXR5
TWVudUJ1dHRvblJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGUsIE5T
QWNjZXNzaWJpbGl0eVRhYmxlUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpB
cHBsaWNhdGlvbiwgTlNBY2Nlc3NpYmlsaXR5QXBwbGljYXRpb25Sb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cCwgTlNBY2Nl
c3NpYmlsaXR5UmFkaW9Hcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGlzdCwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6RGlyZWN0b3J5LCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXIsIE5TQWNjZXNzaWJpbGl0eVNjcm9sbEJhclJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VmFsdWVJbmRpY2F0b3IsIE5TQWNjZXNz
aWJpbGl0eVZhbHVlSW5kaWNhdG9yUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpJbWFnZSwgTlNBY2Nlc3NpYmlsaXR5SW1hZ2VSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnVCYXIsIE5TQWNjZXNzaWJpbGl0eU1lbnVCYXJSb2xlIH0sCisgICAgICAg
IHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUsIE5TQWNjZXNzaWJpbGl0eU1lbnVSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtLCBOU0FjY2Vzc2liaWxpdHlNZW51
SXRlbVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2Jv
eCwgTlNBY2Nlc3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6Ok1lbnVJdGVtUmFkaW8sIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVtUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4sIE5TQWNjZXNzaWJpbGl0eUNvbHVtblJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93LCBOU0FjY2Vzc2liaWxpdHlS
b3dSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXIsIE5TQWNjZXNz
aWJpbGl0eVRvb2xiYXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1c3lJ
bmRpY2F0b3IsIE5TQWNjZXNzaWJpbGl0eUJ1c3lJbmRpY2F0b3JSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yLCBOU0FjY2Vzc2liaWxpdHlQcm9n
cmVzc0luZGljYXRvclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6V2luZG93
LCBOU0FjY2Vzc2liaWxpdHlXaW5kb3dSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OkRyYXdlciwgTlNBY2Nlc3NpYmlsaXR5RHJhd2VyUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpTeXN0ZW1XaWRlLCBOU0FjY2Vzc2liaWxpdHlTeXN0ZW1XaWRlUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpPdXRsaW5lLCBOU0FjY2Vzc2liaWxpdHlP
dXRsaW5lUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpJbmNyZW1lbnRvciwg
TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50b3JSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OkJyb3dzZXIsIE5TQWNjZXNzaWJpbGl0eUJyb3dzZXJSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94LCBOU0FjY2Vzc2liaWxpdHlDb21ib0JveFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXRHcm91cCwgTlNBY2Nlc3NpYmls
aXR5U3BsaXRHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0
ZXIsIE5TQWNjZXNzaWJpbGl0eVNwbGl0dGVyUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpDb2xvcldlbGwsIE5TQWNjZXNzaWJpbGl0eUNvbG9yV2VsbFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jvd0FyZWEsIE5TQWNjZXNzaWJpbGl0eUdyb3dBcmVh
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTaGVldCwgTlNBY2Nlc3NpYmls
aXR5U2hlZXRSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkhlbHBUYWcsIE5T
QWNjZXNzaWJpbGl0eUhlbHBUYWdSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
Ok1hdHRlLCBOU0FjY2Vzc2liaWxpdHlNYXR0ZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6UnVsZXIsIE5TQWNjZXNzaWJpbGl0eVJ1bGVyUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpSdWxlck1hcmtlciwgTlNBY2Nlc3NpYmlsaXR5UnVsZXJNYXJrZXJS
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkxpbmssIE5TQWNjZXNzaWJpbGl0
eUxpbmtSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRpc2Nsb3N1cmVUcmlh
bmdsZSwgTlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZVRyaWFuZ2xlUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkLCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQsIE5TQWNjZXNzaWJpbGl0eVRhYmxl
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluaywgTlNBY2Nl
c3NpYmlsaXR5TGlua1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VN
YXBMaW5rLCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpJbWFnZU1hcCwgQCJBWEltYWdlTWFwIiB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0TWFya2VyLCBAIkFYTGlzdE1hcmtlciIgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6V2ViQXJlYSwgQCJBWFdlYkFyZWEiIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkhlYWRpbmcsIEAiQVhIZWFkaW5nIiB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0Qm94LCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uLCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsLCBOU0FjY2Vzc2liaWxp
dHlDZWxsUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbCwgTlNB
Y2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFi
bGVIZWFkZXJDb250YWluZXIsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciwgTlNBY2Nlc3NpYmls
aXR5Q2VsbFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVmaW5pdGlvbiwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OkRlc2NyaXB0aW9uTGlzdERldGFpbCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdFRlcm0sIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXJtLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVz
Y3JpcHRpb25MaXN0LCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpTbGlkZXJUaHVtYiwgTlNBY2Nlc3NpYmlsaXR5VmFsdWVJbmRpY2F0b3JS
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtCYW5uZXIsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnksIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrQ29udGVudEluZm8sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01haW4sIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24s
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya1JlZ2lvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydCwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uQWxlcnREaWFsb2csIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZywgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3Jv
dXAsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25N
YXJxdWVlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXMsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpEb2N1bWVudEFydGljbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGgsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50
ZXJmYWNlVG9vbHRpcCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRhYiwgTlNBY2Nlc3NpYmlsaXR5UmFkaW9CdXR0b25Sb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QsIE5TQWNjZXNzaWJpbGl0eVRhYkdy
b3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWUs
IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVJdGVtLCBOU0FjY2Vzc2liaWxpdHlSb3dSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6Okxpc3RJdGVtLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UGFyYWdyYXBoLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFiZWwsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEaXYsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3BpbkJ1dHRvbiwgTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50b3JSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OkZvb3RlciwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbiwgTlNBY2Nlc3NpYmlsaXR5
Q2hlY2tCb3hSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhcywgTlNB
Y2Nlc3NpYmlsaXR5SW1hZ2VSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNW
R1Jvb3QsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpMZWdlbmQsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkF1ZGlvLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VmlkZW8sIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFs
UnVsZSwgTlNBY2Nlc3NpYmlsaXR5U3BsaXR0ZXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkJsb2NrcXVvdGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2gsIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZCwgTlNBY2Nlc3Np
YmlsaXR5VGV4dEZpZWxkUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpSdWJ5QmFzZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlJ1YnlCbG9jaywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlJbmxpbmUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5UnVuLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVieVRleHQs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpEZXRhaWxzLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3VtbWFyeSwgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUZXh0UGF0aCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RleHQsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUU3Bhbiwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OklubGluZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1hcmssIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUaW1lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RmVlZCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZSwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Rub3RlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKICAgICB9OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlTWFwJiBy
b2xlTWFwID0gKm5ldyBBY2Nlc3NpYmlsaXR5Um9sZU1hcDsKICAgICAKICAgICBjb25zdCB1bnNp
Z25lZCBudW1Sb2xlcyA9IHNpemVvZihyb2xlcykgLyBzaXplb2Yocm9sZXNbMF0pOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Sb2xlczsgKytpKQotICAgICAgICByb2xlTWFwLnNl
dChyb2xlc1tpXS52YWx1ZSwgcm9sZXNbaV0uc3RyaW5nKTsKKyAgICAgICAgcm9sZU1hcC5zZXQo
c3RhdGljX2Nhc3Q8aW50Pihyb2xlc1tpXS52YWx1ZSksIHJvbGVzW2ldLnN0cmluZyk7CiAgICAg
cmV0dXJuIHJvbGVNYXA7CiB9CiAKIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmlu
ZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQodmFsdWUpOworICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSk7CiAgICAgc3RhdGljIGNvbnN0IEFjY2Vzc2li
aWxpdHlSb2xlTWFwJiByb2xlTWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVJvbGVNYXAoKTsKLSAg
ICByZXR1cm4gcm9sZU1hcC5nZXQodmFsdWUpOworICAgIHJldHVybiByb2xlTWFwLmdldChzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlKSk7CiB9CiAKIC0gKE5TU3RyaW5nKilyb2xlCkBAIC0yMDA4LDE3
ICsyMDA4LDE3IEBAIC0gKE5TU3RyaW5nKilyb2xlCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1fb2JqZWN0LT5yb2xlVmFsdWUoKTsK
IAotICAgIGlmIChyb2xlID09IExhYmVsUm9sZSAmJiBpczxBY2Nlc3NpYmlsaXR5TGFiZWw+KCpt
X29iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUxhYmVsPigqbV9vYmplY3QpLmNvbnRh
aW5zT25seVN0YXRpY1RleHQoKSkKLSAgICAgICAgcm9sZSA9IFN0YXRpY1RleHRSb2xlOworICAg
IGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJlbCAmJiBpczxBY2Nlc3NpYmlsaXR5
TGFiZWw+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eUxhYmVsPigqbV9vYmpl
Y3QpLmNvbnRhaW5zT25seVN0YXRpY1RleHQoKSkKKyAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxp
dHlSb2xlOjpTdGF0aWNUZXh0OwogCiAgICAgLy8gVGhlIG1mZW5jZWQgZWxlbWVudCBjcmVhdGVz
IGFub255bW91cyBSZW5kZXJNYXRoTUxPcGVyYXRvcnMgd2l0aCBubyBSZW5kZXJUZXh0CiAgICAg
Ly8gZGVzY2VuZGFudHMuIEJlY2F1c2UgdGhlc2UgYW5vbnltb3VzIHJlbmRlcmVycyBhcmUgdGhl
IG9ubHkgYWNjZXNzaWJsZSBvYmplY3RzCi0gICAgLy8gY29udGFpbmluZyB0aGUgb3BlcmF0b3Is
IGFzc2lnbiBTdGF0aWNUZXh0Um9sZS4KKyAgICAvLyBjb250YWluaW5nIHRoZSBvcGVyYXRvciwg
YXNzaWduIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0LgogICAgIGlmIChtX29iamVjdC0+
aXNBbm9ueW1vdXNNYXRoT3BlcmF0b3IoKSkKLSAgICAgICAgcm9sZSA9IFN0YXRpY1RleHRSb2xl
OworICAgICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ7CiAKLSAgICBp
ZiAocm9sZSA9PSBDYW52YXNSb2xlICYmIG1fb2JqZWN0LT5jYW52YXNIYXNGYWxsYmFja0NvbnRl
bnQoKSkKLSAgICAgICAgcm9sZSA9IEdyb3VwUm9sZTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q2FudmFzICYmIG1fb2JqZWN0LT5jYW52YXNIYXNGYWxsYmFja0NvbnRlbnQo
KSkKKyAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsKICAgICBOU1N0cmlu
Zyogc3RyaW5nID0gcm9sZVZhbHVlVG9OU1N0cmluZyhyb2xlKTsKICAgICBpZiAoc3RyaW5nICE9
IG5pbCkKICAgICAgICAgcmV0dXJuIHN0cmluZzsKQEAgLTIwNDEsOSArMjA0MSw5IEBAIC0gKE5T
U3RyaW5nKilzdWJyb2xlCiAgICAgfQogICAgIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUg
PSBtX29iamVjdC0+cm9sZVZhbHVlKCk7Ci0gICAgaWYgKHJvbGUgPT0gSG9yaXpvbnRhbFJ1bGVS
b2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZSkK
ICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUNvbnRlbnRTZXBhcmF0b3JTdWJyb2xlOwot
ICAgIGlmIChyb2xlID09IFRvZ2dsZUJ1dHRvblJvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbikKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0
eVRvZ2dsZVN1YnJvbGU7CiAgICAgCiAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlTcGluQnV0dG9u
UGFydD4oKm1fb2JqZWN0KSkgewpAQCAtMjA3Myw2OSArMjA3Myw2OSBAQCAtIChOU1N0cmluZyop
c3Vicm9sZQogICAgIAogICAgIC8vIEFSSUEgY29udGVudCBzdWJyb2xlcy4KICAgICBzd2l0Y2gg
KHJvbGUpIHsKLSAgICAgICAgY2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQCJBWExhbmRtYXJrQmFubmVyIjsKLSAgICAgICAgY2FzZSBMYW5kbWFya0NvbXBsZW1l
bnRhcnlSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0NvbXBsZW1lbnRhcnki
OwotICAgICAgICAgICAgLy8gRm9vdGVyIHJvbGVzIHNob3VsZCBhcHBlYXIgYXMgY29udGVudCBp
bmZvIHR5cGVzLgotICAgICAgICBjYXNlIEZvb3RlclJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1h
cmtDb250ZW50SW5mb1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrQ29udGVu
dEluZm8iOwotICAgICAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0gICAgICAgICAgICByZXR1
cm4gQCJBWExhbmRtYXJrTWFpbiI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtOYXZpZ2F0aW9uIjsKLSAgICAgICAg
Y2FzZSBMYW5kbWFya0RvY1JlZ2lvblJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtSZWdpb25S
b2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya1JlZ2lvbiI7Ci0gICAgICAgIGNh
c2UgTGFuZG1hcmtTZWFyY2hSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya1Nl
YXJjaCI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25BbGVydFJvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQCJBWEFwcGxpY2F0aW9uQWxlcnQiOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnREaWFsb2dSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0RGlh
bG9nIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkRpYWxvZ1JvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQCJBWEFwcGxpY2F0aW9uRGlhbG9nIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkdy
b3VwUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRleHRHcm91cFJvbGU6Ci0gICAgICAg
IGNhc2UgRmVlZFJvbGU6Ci0gICAgICAgIGNhc2UgRm9vdG5vdGVSb2xlOgotICAgICAgICAgICAg
cmV0dXJuIEAiQVhBcHBsaWNhdGlvbkdyb3VwIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkxv
Z1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uTG9nIjsKLSAgICAgICAg
Y2FzZSBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBs
aWNhdGlvbk1hcnF1ZWUiOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKLSAg
ICAgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25TdGF0dXMiOwotICAgICAgICBjYXNlIEFw
cGxpY2F0aW9uVGltZXJSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvblRp
bWVyIjsKLSAgICAgICAgY2FzZSBEb2N1bWVudFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJB
WERvY3VtZW50IjsKLSAgICAgICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgotICAgICAgICAg
ICAgcmV0dXJuIEAiQVhEb2N1bWVudEFydGljbGUiOwotICAgICAgICBjYXNlIERvY3VtZW50TWF0
aFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50TWF0aCI7Ci0gICAgICAgIGNh
c2UgRG9jdW1lbnROb3RlUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnROb3Rl
IjsKLSAgICAgICAgY2FzZSBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQCJBWFVzZXJJbnRlcmZhY2VUb29sdGlwIjsKLSAgICAgICAgY2FzZSBUYWJQYW5lbFJv
bGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWFRhYlBhbmVsIjsKLSAgICAgICAgY2FzZSBEZWZp
bml0aW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRGVmaW5pdGlvbiI7Ci0gICAgICAg
IGNhc2UgRGVzY3JpcHRpb25MaXN0VGVybVJvbGU6Ci0gICAgICAgIGNhc2UgVGVybVJvbGU6Ci0g
ICAgICAgICAgICByZXR1cm4gQCJBWFRlcm0iOwotICAgICAgICBjYXNlIERlc2NyaXB0aW9uTGlz
dERldGFpbFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERlc2NyaXB0aW9uIjsKLSAgICAg
ICAgY2FzZSBXZWJBcHBsaWNhdGlvblJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWFdlYkFw
cGxpY2F0aW9uIjsKLSAgICAgICAgICAgIC8vIERlZmF1bHQgZG9lc24ndCByZXR1cm4gYW55dGhp
bmcsIHNvIHJvbGVzIGRlZmluZWQgYmVsb3cgY2FuIGJlIGNob3Nlbi4KLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrQmFubmVyOgorICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrQmFubmVyIjsKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnk6CisgICAgICAgIHJldHVy
biBAIkFYTGFuZG1hcmtDb21wbGVtZW50YXJ5IjsKKyAgICAvLyBGb290ZXIgcm9sZXMgc2hvdWxk
IGFwcGVhciBhcyBjb250ZW50IGluZm8gdHlwZXMuCisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Rm9vdGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudElu
Zm86CisgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtDb250ZW50SW5mbyI7CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgorICAgICAgICByZXR1cm4gQCJBWExhbmRt
YXJrTWFpbiI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9u
OgorICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrTmF2aWdhdGlvbiI7CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtSZWdpb246CisgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtSZWdpb24i
OworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoOgorICAgICAgICBy
ZXR1cm4gQCJBWExhbmRtYXJrU2VhcmNoIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpB
cHBsaWNhdGlvbkFsZXJ0OgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uQWxlcnQiOwor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2c6CisgICAg
ICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25BbGVydERpYWxvZyI7CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2c6CisgICAgICAgIHJldHVybiBAIkFYQXBwbGlj
YXRpb25EaWFsb2ciOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3Jv
dXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXA6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RmVlZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpGb290bm90ZToKKyAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkdyb3VwIjsKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZzoKKyAgICAgICAgcmV0dXJu
IEAiQVhBcHBsaWNhdGlvbkxvZyI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25NYXJxdWVlOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uTWFycXVlZSI7Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM6CisgICAgICAgIHJl
dHVybiBAIkFYQXBwbGljYXRpb25TdGF0dXMiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uVGltZXI6CisgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25UaW1lciI7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnQ6CisgICAgICAgIHJldHVybiBA
IkFYRG9jdW1lbnQiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50QXJ0aWNs
ZToKKyAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudEFydGljbGUiOworICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkRvY3VtZW50TWF0aDoKKyAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudE1h
dGgiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZToKKyAgICAgICAg
cmV0dXJuIEAiQVhEb2N1bWVudE5vdGUiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlVz
ZXJJbnRlcmZhY2VUb29sdGlwOgorICAgICAgICByZXR1cm4gQCJBWFVzZXJJbnRlcmZhY2VUb29s
dGlwIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbDoKKyAgICAgICAgcmV0
dXJuIEAiQVhUYWJQYW5lbCI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVmaW5pdGlv
bjoKKyAgICAgICAgcmV0dXJuIEAiQVhEZWZpbml0aW9uIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRlcm06CisgICAgICAgIHJldHVybiBAIkFYVGVybSI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6RGVzY3JpcHRpb25MaXN0RGV0YWlsOgorICAgICAgICByZXR1cm4gQCJBWERlc2NyaXB0
aW9uIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBsaWNhdGlvbjoKKyAgICAg
ICAgcmV0dXJuIEAiQVhXZWJBcHBsaWNhdGlvbiI7CisgICAgICAgIC8vIERlZmF1bHQgZG9lc24n
dCByZXR1cm4gYW55dGhpbmcsIHNvIHJvbGVzIGRlZmluZWQgYmVsb3cgY2FuIGJlIGNob3Nlbi4K
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgaWYgKHJvbGUg
PT0gTWF0aEVsZW1lbnRSb2xlKSB7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
Ok1hdGhFbGVtZW50KSB7CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoRnJhY3Rpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aEZyYWN0aW9uIjsKICAgICAgICAgaWYgKG1fb2Jq
ZWN0LT5pc01hdGhGZW5jZWQoKSkKQEAgLTIxNzIsMTUgKzIxNzIsMTUgQEAgLSAoTlNTdHJpbmcq
KXN1YnJvbGUKICAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aE11bHRpc2NyaXB0IjsKICAgICB9
CiAgICAgCi0gICAgaWYgKHJvbGUgPT0gVmlkZW9Sb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpWaWRlbykKICAgICAgICAgcmV0dXJuIEAiQVhWaWRlbyI7Ci0gICAgaWYg
KHJvbGUgPT0gQXVkaW9Sb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpB
dWRpbykKICAgICAgICAgcmV0dXJuIEAiQVhBdWRpbyI7Ci0gICAgaWYgKHJvbGUgPT0gRGV0YWls
c1JvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHMpCiAgICAg
ICAgIHJldHVybiBAIkFYRGV0YWlscyI7Ci0gICAgaWYgKHJvbGUgPT0gU3VtbWFyeVJvbGUpCisg
ICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnkpCiAgICAgICAgIHJldHVy
biBAIkFYU3VtbWFyeSI7Ci0gICAgaWYgKHJvbGUgPT0gVGltZVJvbGUpCisgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRpbWUpCiAgICAgICAgIHJldHVybiBAIkFYVGltZUdyb3Vw
IjsKIAogICAgIGlmIChtX29iamVjdC0+aXNNZWRpYVRpbWVsaW5lKCkpCkBAIC0yMjE2LDE1ICsy
MjE2LDE1IEBAIC0gKE5TU3RyaW5nKilzdWJyb2xlCiAgICAgCiAgICAgLy8gUnVieSBzdWJyb2xl
cwogICAgIHN3aXRjaCAocm9sZSkgewotICAgIGNhc2UgUnVieUJhc2VSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlCYXNlOgogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmls
aXR5UnVieUJhc2VTdWJyb2xlOwotICAgIGNhc2UgUnVieUJsb2NrUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpSdWJ5QmxvY2s6CiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxp
dHlSdWJ5QmxvY2tTdWJyb2xlOwotICAgIGNhc2UgUnVieUlubGluZVJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UnVieUlubGluZToKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJp
bGl0eVJ1YnlJbmxpbmVTdWJyb2xlOwotICAgIGNhc2UgUnVieVJ1blJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UnVieVJ1bjoKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0
eVJ1YnlSdW5TdWJyb2xlOwotICAgIGNhc2UgUnVieVRleHRSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJ1YnlUZXh0OgogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5UnVi
eVRleHRTdWJyb2xlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMjI2MiwyNiAr
MjI2MiwyNiBAQCAtIChOU1N0cmluZyopcm9sZURlc2NyaXB0aW9uCiAgICAgICAgICAgICByZXR1
cm4gYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uOwogICAgICAgICAKICAgICAgICAgc3dpdGNo
IChtX29iamVjdC0+cm9sZVZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBBdWRpb1JvbGU6CisgICAg
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkF1ZGlvOgogICAgICAgICAgICAgcmV0dXJuIGxv
Y2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoIkF1ZGlvRWxlbWVudCIpOwotICAgICAg
ICBjYXNlIERlZmluaXRpb25Sb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpE
ZWZpbml0aW9uOgogICAgICAgICAgICAgcmV0dXJuIEFYRGVmaW5pdGlvblRleHQoKTsKLSAgICAg
ICAgY2FzZSBEZXNjcmlwdGlvbkxpc3RUZXJtUm9sZToKLSAgICAgICAgY2FzZSBUZXJtUm9sZToK
KyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0VGVybToKKyAg
ICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGVybToKICAgICAgICAgICAgIHJldHVybiBB
WERlc2NyaXB0aW9uTGlzdFRlcm1UZXh0KCk7Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0
RGV0YWlsUm9sZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25M
aXN0RGV0YWlsOgogICAgICAgICAgICAgcmV0dXJuIEFYRGVzY3JpcHRpb25MaXN0RGV0YWlsVGV4
dCgpOwotICAgICAgICBjYXNlIERldGFpbHNSb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpEZXRhaWxzOgogICAgICAgICAgICAgcmV0dXJuIEFYRGV0YWlsc1RleHQoKTsKLSAg
ICAgICAgY2FzZSBGZWVkUm9sZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RmVl
ZDoKICAgICAgICAgICAgIHJldHVybiBBWEZlZWRUZXh0KCk7Ci0gICAgICAgIGNhc2UgRmlndXJl
Um9sZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlOgogICAgICAgICAg
ICAgcmV0dXJuIEFYRmlndXJlVGV4dCgpOwotICAgICAgICBjYXNlIEZvb3RlclJvbGU6CisgICAg
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3RlcjoKICAgICAgICAgICAgIHJldHVybiBB
WEZvb3RlclJvbGVEZXNjcmlwdGlvblRleHQoKTsKLSAgICAgICAgY2FzZSBNYXJrUm9sZToKKyAg
ICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWFyazoKICAgICAgICAgICAgIHJldHVybiBB
WE1hcmtUZXh0KCk7Ci0gICAgICAgIGNhc2UgVmlkZW9Sb2xlOgorICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpWaWRlbzoKICAgICAgICAgICAgIHJldHVybiBsb2NhbGl6ZWRNZWRpYUNv
bnRyb2xFbGVtZW50U3RyaW5nKCJWaWRlb0VsZW1lbnQiKTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb24oTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlLCBbc2VsZiBzdWJyb2xlXSk7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCAt
IChOU1N0cmluZyopcm9sZURlc2NyaXB0aW9uCiAgICAgICAgICAgICByZXR1cm4gQVhEZXNjcmlw
dGlvbkxpc3RUZXh0KCk7CiAgICAgfQogICAgIAotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVl
KCkgPT0gSG9yaXpvbnRhbFJ1bGVSb2xlKQorICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxlKQogICAgICAgICByZXR1cm4gQVhI
b3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4dCgpOwogICAgIAogICAgIC8vIEFwcEtpdCBhbHNv
IHJldHVybnMgQVhUYWIgZm9yIHRoZSByb2xlIGRlc2NyaXB0aW9uIGZvciBhIHRhYiBpdGVtLgpA
QCAtMjYxOCwxOSArMjYxOCwxOSBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
KE5TU3RyCiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0c1JhbmdlVmFs
dWUoKSkKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Om1fb2Jq
ZWN0LT52YWx1ZUZvclJhbmdlKCldOwotICAgICAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgp
ID09IFNsaWRlclRodW1iUm9sZSkKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIpCiAgICAgICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+cGFyZW50T2JqZWN0KCktPnZhbHVlRm9y
UmFuZ2UoKV07CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNIZWFkaW5nKCkpCiAgICAgICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bV9vYmplY3QtPmhlYWRpbmdMZXZlbCgp
XTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29iamVjdC0+aXNDaGVja2JveE9yUmFkaW8oKSB8
fCBtX29iamVjdC0+aXNNZW51SXRlbSgpIHx8IG1fb2JqZWN0LT5pc1N3aXRjaCgpIHx8IG1fb2Jq
ZWN0LT5pc1RvZ2dsZUJ1dHRvbigpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5j
aGVja2JveE9yUmFkaW9WYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBCdXR0b25TdGF0
ZU9mZjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50
OjBdOwotICAgICAgICAgICAgICAgIGNhc2UgQnV0dG9uU3RhdGVPbjoKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjFdOwotICAgICAgICAgICAgICAg
IGNhc2UgQnV0dG9uU3RhdGVNaXhlZDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoSW50OjJdOworICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0
dG9uU3RhdGU6Ok9mZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6MF07CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T246
CisgICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjFdOworICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkOgorICAgICAgICAg
ICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoyXTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAKQEAgLTI2NjgsMTQgKzI2NjgsMTQgQEAgLSAoaWQpYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlXSkgewog
ICAgICAgICAvLyBJbmRldGVybWluYXRlIHByb2dyZXNzIGluZGljYXRvciBzaG91bGQgcmV0dXJu
IDAuCi0gICAgICAgIGlmIChtX29iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBQcm9ncmVz
c0luZGljYXRvclJvbGUgJiYgIW1fb2JqZWN0LT5oYXNBdHRyaWJ1dGUoYXJpYV92YWx1ZW5vd0F0
dHIpKQorICAgICAgICBpZiAobV9vYmplY3QtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yICYmICFtX29iamVjdC0+aGFzQXR0cmlidXRl
KGFyaWFfdmFsdWVub3dBdHRyKSkKICAgICAgICAgICAgIHJldHVybiBAMDsKICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPm1pblZhbHVlRm9yUmFuZ2Uo
KV07CiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
IE5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRlXSkgewogICAgICAgICAvLyBJbmRldGVy
bWluYXRlIHByb2dyZXNzIGluZGljYXRvciBzaG91bGQgcmV0dXJuIDAuCi0gICAgICAgIGlmICht
X29iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBQcm9ncmVzc0luZGljYXRvclJvbGUgJiYg
IW1fb2JqZWN0LT5oYXNBdHRyaWJ1dGUoYXJpYV92YWx1ZW5vd0F0dHIpKQorICAgICAgICBpZiAo
bV9vYmplY3QtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dy
ZXNzSW5kaWNhdG9yICYmICFtX29iamVjdC0+aGFzQXR0cmlidXRlKGFyaWFfdmFsdWVub3dBdHRy
KSkKICAgICAgICAgICAgIHJldHVybiBAMDsKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoRmxvYXQ6bV9vYmplY3QtPm1heFZhbHVlRm9yUmFuZ2UoKV07CiAgICAgfQpAQCAtMzAw
NSwyMyArMzAwNSwyMyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3Ry
CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uIGVsZW1lbnRPcmllbnRhdGlvbiA9IG1fb2JqZWN0LT5vcmllbnRhdGlvbigpOwotICAg
ICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZl
cnRpY2FsKQorICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5
VmVydGljYWxPcmllbnRhdGlvblZhbHVlOwotICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9u
ID09IEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWwpCisgICAgICAgIGlmIChlbGVt
ZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQog
ICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxPcmllbnRhdGlvblZh
bHVlOwotICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvblVuZGVmaW5lZCkKKyAgICAgICAgaWYgKGVsZW1lbnRPcmllbnRhdGlvbiA9PSBBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb246OlVuZGVmaW5lZCkKICAgICAgICAgICAgIHJldHVybiBOU0Fj
Y2Vzc2liaWxpdHlVbmtub3duT3JpZW50YXRpb25WYWx1ZTsKICAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIgPSBtX29iamVjdC0+c2Nyb2xsQmFyKEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkhvcml6b250YWwpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBzY3JvbGxCYXIgPSBtX29iamVjdC0+c2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlv
bjo6SG9yaXpvbnRhbCk7CiAgICAgICAgIGlmIChzY3JvbGxCYXIpCiAgICAgICAgICAgICByZXR1
cm4gc2Nyb2xsQmFyLT53cmFwcGVyKCk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmVydGlj
YWxTY3JvbGxCYXJBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNj
cm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVy
dGljYWwpOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIgPSBtX29iamVj
dC0+c2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWwpOwogICAgICAg
ICBpZiAoc2Nyb2xsQmFyKQogICAgICAgICAgICAgcmV0dXJuIHNjcm9sbEJhci0+d3JhcHBlcigp
OwogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMzAyOSwxMiArMzAyOSwxMiBAQCAtIChpZClhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uQXR0cmlidXRl
XSkgewogICAgICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5zb3J0RGlyZWN0aW9uKCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgU29ydERpcmVjdGlvbkFzY2VuZGluZzoKLSAgICAgICAgICAgICAgICByZXR1
cm4gTlNBY2Nlc3NpYmlsaXR5QXNjZW5kaW5nU29ydERpcmVjdGlvblZhbHVlOwotICAgICAgICAg
ICAgY2FzZSBTb3J0RGlyZWN0aW9uRGVzY2VuZGluZzoKLSAgICAgICAgICAgICAgICByZXR1cm4g
TlNBY2Nlc3NpYmlsaXR5RGVzY2VuZGluZ1NvcnREaXJlY3Rpb25WYWx1ZTsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVua25vd25T
b3J0RGlyZWN0aW9uVmFsdWU7CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rp
b246OkFzY2VuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlBc2NlbmRp
bmdTb3J0RGlyZWN0aW9uVmFsdWU7CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJl
Y3Rpb246OkRlc2NlbmRpbmc6CisgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5RGVz
Y2VuZGluZ1NvcnREaXJlY3Rpb25WYWx1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmtub3duU29ydERpcmVjdGlvblZhbHVlOwogICAgICAg
ICB9CiAgICAgfQogICAgIApAQCAtMzQ4MSw3ICszNDgxLDcgQEAgLSAodm9pZClhY2Nlc3NpYmls
aXR5UGVyZm9ybURlY3JlbWVudEFjdAogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtU2hv
d01lbnVBY3Rpb24KIHsKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IENvbWJvQm94
Um9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpDb21ib0JveCkKICAgICAgICAgbV9vYmplY3QtPnNldElzRXhwYW5kZWQodHJ1ZSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIGluIGFuIGl0ZXJh
dGlvbiBvZiB0aGUgcnVuIGxvb3AgdGhhdCBkaWQgbm90IHN0YXJ0IGZyb20gYW4gQVggY2FsbC4K
QEAgLTM2MjksNyArMzYyOSw5IEBAIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQp
dmFsdWUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9vYmplY3QtPnNldFNlbGVjdGVk
KFtudW1iZXIgYm9vbFZhbHVlXSk7CiAgICAgfSBlbHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKSB7
Ci0gICAgICAgIGlmICghYXJyYXkgfHwgbV9vYmplY3QtPnJvbGVWYWx1ZSgpICE9IExpc3RCb3hS
b2xlKQorICAgICAgICBpZiAoIWFycmF5KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKICAgICAgICAgY29udmVydFRv
VmVjdG9yKGFycmF5LCBzZWxlY3RlZENoaWxkcmVuKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTcyOCwxMCArMTcyOCwxMCBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpBY2Nlc3NpCiAKICAgICAgICAgICAgIHN1cHBvcnRzQ2hlY2tlZCA9IGF4T2JqZWN0LT5z
dXBwb3J0c0NoZWNrZWQoKTsKICAgICAgICAgICAgIGlmIChzdXBwb3J0c0NoZWNrZWQpIHsKLSAg
ICAgICAgICAgICAgICBpbnQgY2hlY2tWYWx1ZSA9IGF4T2JqZWN0LT5jaGVja2JveE9yUmFkaW9W
YWx1ZSgpOyAvLyBFbGVtZW50IHVzaW5nIGFyaWEtY2hlY2tlZC4KLSAgICAgICAgICAgICAgICBp
ZiAoY2hlY2tWYWx1ZSA9PSAxKQorICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlCdXR0b25T
dGF0ZSBjaGVja1ZhbHVlID0gYXhPYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCk7IC8vIEVs
ZW1lbnQgdXNpbmcgYXJpYS1jaGVja2VkLgorICAgICAgICAgICAgICAgIGlmIChjaGVja1ZhbHVl
ID09IEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T24pCiAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrZWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
OjpDaGVja2VkOjpUcnVlOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrVmFsdWUgPT0g
MikKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGVja1ZhbHVlID09IEFjY2Vzc2liaWxpdHlC
dXR0b25TdGF0ZTo6TWl4ZWQpCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpNaXhl
ZDsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChheE9iamVjdC0+aXNDaGVja2VkKCkpIC8vIE5h
dGl2ZSBjaGVja2JveC4KICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6OlRydWU7CkBA
IC0xNzQ4LDI2ICsxNzQ4LDI1IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFj
Y2Vzc2kKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChh
eE9iamVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEFSSUFDdXJy
ZW50RmFsc2U6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRl
OjpGYWxzZToKICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJyZW50OjpGYWxzZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQVJJQUN1cnJlbnRQYWdlOgorICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6UGFnZToKICAgICAg
ICAgICAgICAgICBjdXJyZW50U3RhdGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJyZW50OjpQYWdlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVudFN0ZXA6CisgICAgICAgICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpTdGVwOgogICAgICAgICAgICAgICAgIGN1cnJl
bnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM6OkN1cnJlbnQ6OlN0ZXA7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIEFSSUFDdXJyZW50TG9jYXRpb246CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlB
UklBQ3VycmVudFN0YXRlOjpMb2NhdGlvbjoKICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJy
ZW50OjpMb2NhdGlvbjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
QVJJQUN1cnJlbnREYXRlOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJl
bnRTdGF0ZTo6RGF0ZToKICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJyZW50OjpEYXRlOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVudFRpbWU6
CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpUaW1lOgog
ICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OlRpbWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVu
dFRydWU6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpU
cnVlOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OlRydWU7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325082</attachid>
            <date>2017-10-26 17:22:25 -0700</date>
            <delta_ts>2017-10-26 17:29:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178892-20171026172224.patch</filename>
            <type>text/plain</type>
            <size>354786</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBAQAorMjAxNy0xMC0yNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODg5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgVGhlIGVudW1zIGluIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBhcmUgY2F1c2lu
ZyBuYW1pbmcgY29sbGlzaW9ucyB3aXRoIHVuaWZpZWQgYnVpbGRzLgorICAgICAgICBUaGlzIGlz
IHdoYXQgZW51bSBjbGFzc2VzIGFyZSBmb3IuCisgICAgICAgIEhhc2hNYXBzIG9mIGVudW0gY2xh
c3NlcyBzdGlsbCBuZWVkIGEgZmV3IGNhc3RzIHRvL2Zyb20gaW50LgorICAgICAgICAKKyAgICAg
ICAgSSBhbHNvIG1hZGUgc29tZSBSZWZQdHIncyBSZWYncywgdXNlIHNvbWUgaW5pdGlhbGl6ZXIg
bGlzdHMgaW5zdGVhZCBvZiB2YWx1ZXMgaW4gdGhlIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9u
LCBhbmQgaW5kZW50YXRpb24gZml4aW5nLgorICAgICAgICAKKyAgICAgICAgTm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6Z2V0SWdu
b3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp+QVhPYmplY3RD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhDb21w
dXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpDYWNoZWRBWE9iamVjdEF0dHJpYnV0ZXM6OkNhY2hl
ZEFYT2JqZWN0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWENvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGU6OmdldElnbm9yZWQgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91cCBjb25zdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQ6OmFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50Lmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnJvbGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjphY2Nlc3NpYmlsaXR5VGV4dCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2hpbGRyZW5Db250YWluT25seVN0YXRpY1RleHQpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlz
dDo6aXNVbm9yZGVyZWRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlMaXN0Ojppc09yZGVyZWRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlMaXN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5TGlzdDo6cm9sZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlMaXN0Qm94OjpzZXRTZWxlY3RlZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBj
b25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdCBjb25zdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjphY2Nlc3NpYmlsaXR5
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpyb2xl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbHMuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxk
cmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6bWVudUxpc3RPcHRp
b25BY2Nlc3NpYmlsaXR5T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0ltYWdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcm9n
cmVzc0luZGljYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNTbGlkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUl0ZW0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRW5hYmxlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNDaGVja2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdXBw
b3J0c1JlcXVpcmVkQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpoZWFkaW5nTGV2ZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNMaW5rIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dyb3VwIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGVja2JveE9yUmFk
aW9WYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YWN0aW9uRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6YWx0ZXJTbGlkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUVsZW1lbnRGb3JNZW51
QnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjptZW51SXRlbUVsZW1lbnRGb3JNZW51IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1lbnRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2ZVRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2libGVUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNj
ZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmFyaWFMYWJlbGVkQnlUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnJvbGVJZ25vcmVzVGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhpZXJhcmNo
aWNhbExldmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6c3RyaW5nVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpyZW1hcEFyaWFSb2xlRHVlVG9QYXJl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNh
blNldFNlbGVjdGVkQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vz
c2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNCbG9ja3F1b3RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENvbnRy
b2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklB
VGV4dENvbnRyb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMYW5kbWFyayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1JhbmdlQ29udHJvbCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JC
b3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3Vw
cG9ydHNBUklBUmVhZE9ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYVJlYWRPbmx5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25T
dGF0dXNGb3JSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFj
dGlvblZlcmIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUN1cnJlbnRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhQ3VycmVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVSb2xlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFyaWFSb2xlVG9XZWJDb3JlUm9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb21wdXRlZFJvbGVTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc0FjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpzb3J0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzRXhwYW5kZWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0NoZWNr
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2ti
b3hPclJhZGlvVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsQnlQYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6Omxhc3RLbm93bklzSWdub3JlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJ1dHRvblJvbGVUeXBlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQnV0dG9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWRCeURlZmF1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29udGFpbmVkQnlQYXNzd29yZEZpZWxk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHQ6OkFjY2Vz
c2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRG
cm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW1hZ2VNYXAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNXZWJBcmVhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ2hlY2tib3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSYWRpb0J1dHRvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3gg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGluQnV0
dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3dp
dGNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9n
Z2xlQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzVGFiTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc1RhYkl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNSYWRpb0dyb3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQ29tYm9Cb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUcmVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzVHJlZUdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUcmVlSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Njcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0xpc3RJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzU2Nyb2xsVmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NhbnZhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1BvcFVwQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29sb3JXZWxsIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BsaXR0ZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUb29sYmFyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3VtbWFyeSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N0YXRpY1RleHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVBdHRyaWJ1dGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0F0dGFjaG1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRleHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFs
dWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBNZW1iZXJzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmtlZFVJ
RWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b2Jq
ZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpzZWxlY3RlZFRleHRSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZvY3VzZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWN0ZWRSb3dz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3Vt
ZW50TGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNFeHBhbmRl
ZFRleHRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFs
Um9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRk
SW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp1cGRhdGVSb2xlQWZ0ZXJDaGlsZHJlbkNyZWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9u
QXRvbWljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZENoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2li
bGVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp0YWJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphY3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1zYWFSb2xlRm9yUmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9s
ZVZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudDo6YWNjZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojppbmhlcml0c1ByZXNlbnRhdGlv
bmFsUm9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsQmFyKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlTY3JvbGxiYXI6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNsaWRlcjo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246
OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpoYXNBUklBUm9sZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojp0aXRsZUVsZW1lbnRUZXh0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJv
bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUcmVlOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5wdXRU
eXBlUG9wdXBCdXR0b24gY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q2FuRnV6enlIaXRUZXN0XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFy
a1JvbGU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nl
c3NpYmlsaXR5VHJlZUFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5TGlzdEFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5QXJ0aWNsZUFuY2VzdG9yXSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5
VHJhaXRzRnJvbUFuY2VzdG9yc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfYWNjZXNzaWJpbGl0eVRleHRFbnRyeVRyYWl0c10pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VHJhaXRzXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRldGVybWluZUlzQWNjZXNzaWJpbGl0
eUVsZW1lbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Ry
aW5nVmFsdWVTaG91bGRCZVVzZWRJbkxhYmVsXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMYWJlbF0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VmFsdWVdKToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUlzQ29tYm9Cb3hdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udGFpbnNVbm5hdHVy
YWxseVNlZ21lbnRlZENoaWxkcmVuXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50XSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRyZWVJdGVtUGFyZW50Rm9yT2JqZWN0Ol0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5RWxlbWVu
dERpZEJlY29tZUZvY3VzZWRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25dKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29u
c3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlIGJhc2VBY2Nlc3NpYmlsaXR5VGl0bGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25dKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VBY2Nlc3NpYmlsaXR5
SGVscFRleHRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
IGFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbl0pOgorICAgICAgICAoY3JlYXRlQWNjZXNzaWJp
bGl0eVNlYXJjaEtleU1hcCk6CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRp
Y2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoYWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRDcml0ZXJpYUZvckNyaXRlcmlhUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgIChjcmVh
dGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCk6CisgICAgICAgIChyb2xlVmFsdWVUb05TU3RyaW5nKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdWJyb2xlXSk6CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJvbGVEZXNjcmlwdGlvbl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb25dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzKToKKwogMjAxNy0xMC0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgaW1wb3J0U2NyaXB0cyBpbiBzZXJ2aWNlIHdvcmtlciBzaG91bGQgdXNlIFNl
cnZpY2VXb3JrZXJzTW9kZTo6Tm9uZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsOCArMTIwLDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgYWNjZXNzaWJpbGl0eUZvY3VzQQog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVD
YWNoZTo6Z2V0SWdub3JlZChBWElEIGlkKSBjb25zdAogewotICAgIEhhc2hNYXA8QVhJRCwgQ2Fj
aGVkQVhPYmplY3RBdHRyaWJ1dGVzPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2lkTWFwcGluZy5m
aW5kKGlkKTsKLSAgICByZXR1cm4gaXQgIT0gbV9pZE1hcHBpbmcuZW5kKCkgPyBpdC0+dmFsdWUu
aWdub3JlZCA6IERlZmF1bHRCZWhhdmlvcjsKKyAgICBhdXRvIGl0ID0gbV9pZE1hcHBpbmcuZmlu
ZChpZCk7CisgICAgcmV0dXJuIGl0ICE9IG1faWRNYXBwaW5nLmVuZCgpID8gaXQtPnZhbHVlLmln
bm9yZWQgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7CiB9
CiAKIHZvaWQgQVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpzZXRJZ25vcmVkKEFYSUQg
aWQsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gaW5jbHVzaW9uKQpAQCAtMjAzLDggKzIw
Myw4IEBAIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkKICAgICBtX2ZvY3VzQXJpYU1v
ZGFsTm9kZVRpbWVyLnN0b3AoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0IDogbV9v
YmplY3RzLnZhbHVlcygpKSB7Ci0gICAgICAgIGRldGFjaFdyYXBwZXIob2JqZWN0LmdldCgpLCBD
YWNoZURlc3Ryb3llZCk7Ci0gICAgICAgIG9iamVjdC0+ZGV0YWNoKENhY2hlRGVzdHJveWVkKTsK
KyAgICAgICAgZGV0YWNoV3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2ht
ZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOworICAgICAgICBvYmplY3QtPmRldGFjaChBY2Nlc3Np
YmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsKICAgICAgICAgcmVtb3ZlQVhJ
RChvYmplY3QuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTY0NywzMSArNjQ3LDMxIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE8KICAgICAKICAgICAvLyB3aWxsIGJlIGZp
bGxlZCBpbi4uLgogICAgIHN3aXRjaCAocm9sZSkgewotICAgIGNhc2UgTGlzdEJveE9wdGlvblJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNyZWF0ZSgpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SW1hZ2VNYXBMaW5rOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
OjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2x1bW5Sb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCi0gICAg
Y2FzZSBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOyAgIAotICAgIGNhc2Ug
U2xpZGVyVGh1bWJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1i
OgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1lbnVMaXN0UG9wdXBSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVMaXN0UG9wdXA6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZW51TGlz
dE9wdGlvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb246
CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVNwaW5C
dXR0b246OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNwaW5CdXR0b25QYXJ0
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydDoKICAgICAg
ICAgb2JqID0gQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0OjpjcmVhdGUoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTY5OSw4ICs2OTksOCBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnJlbW92ZShBWElEIGF4SUQpCiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBkZXRhY2hXcmFwcGVyKG9iaiwgRWxlbWVudERlc3Ryb3llZCk7Ci0gICAgb2JqLT5k
ZXRhY2goRWxlbWVudERlc3Ryb3llZCwgdGhpcyk7CisgICAgZGV0YWNoV3JhcHBlcihvYmosIEFj
Y2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCk7CisgICAgb2JqLT5k
ZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVkLCB0aGlz
KTsKICAgICByZW1vdmVBWElEKG9iaik7CiAgICAgCiAgICAgLy8gZmluYWxseSByZW1vdmUgdGhl
IG9iamVjdApAQCAtOTIwLDcgKzkyMCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWUKICAgICAgICAgLy8gdGhlIGF4Q2hpbGRyZW4gd2hlbiB0aGUgbWVudSBpcyBt
YXJrZWQgYXMgb3BlbmluZy4KICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSBBWE1lbnVPcGVu
ZWQpIHsKICAgICAgICAgICAgIG9iai0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwotICAg
ICAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgIT0gTWVudVJvbGUpCisgICAgICAgICAgICBp
ZiAob2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiAyMjQwNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNyArOTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENh
Y2hlZEFYT2JqZWN0QXR0cmlidXRlcyB7Ci0gICAgICAgIENhY2hlZEFYT2JqZWN0QXR0cmlidXRl
cygpIDogaWdub3JlZChEZWZhdWx0QmVoYXZpb3IpIHsgfQorICAgICAgICBDYWNoZWRBWE9iamVj
dEF0dHJpYnV0ZXMoKQorICAgICAgICAgICAgOiBpZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcikKKyAgICAgICAgeyB9CiAKICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBpZ25vcmVkOwogICAgIH07CkBAIC00NjYsNyArNDY4LDcg
QEAgYm9vbCBub2RlSGFzUm9sZShOb2RlKiwgY29uc3QgU3RyaW5nJiBybwogYm9vbCBpc05vZGVB
cmlhVmlzaWJsZShOb2RlKik7CiAgICAgCiAjaWYgIUhBVkUoQUNDRVNTSUJJTElUWSkKLWlubGlu
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVD
YWNoZTo6Z2V0SWdub3JlZChBWElEKSBjb25zdCB7IHJldHVybiBEZWZhdWx0QmVoYXZpb3I7IH0K
K2lubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVDYWNoZTo6Z2V0SWdub3JlZChBWElEKSBjb25zdCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KIGlubGluZSBBY2Nlc3NpYmlsaXR5
UmVwbGFjZWRUZXh0OjpBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0KGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKSB7IH0KIGlubGluZSB2b2lkIEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQ6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oQVhPYmplY3RDYWNoZSosIEFYVGV4dEVkaXRUeXBl
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9p
ZCBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6OnNldElnbm9yZWQoQVhJRCwgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCShyZXZpc2lvbiAy
MjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4oCiAgICAgCiAgICAgLy8gbWFrZSB0aGUgY29sdW1u
cyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZpcnN0IGJvZHkKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7ICsraSkgewotICAgICAgICBhdXRv
JiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4+KCpheENhY2hlLT5n
ZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlOjpDb2x1bW4pKTsKICAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KHN0YXRp
Y19jYXN0PGludD4oaSkpOwogICAgICAgICBjb2x1bW4uc2V0UGFyZW50KHRoaXMpOwogICAgICAg
ICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCShy
ZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbgogQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50Um93R3JvdXAoKSBjb25zdAog
ewogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7
IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewotICAgICAgICBpZiAo
cGFyZW50LT5oYXNUYWdOYW1lKHRoZWFkVGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUodGJvZHlU
YWcpIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgcGFyZW50LT5yb2xlVmFsdWUo
KSA9PSBSb3dHcm91cFJvbGUpCisgICAgICAgIGlmIChwYXJlbnQtPmhhc1RhZ05hbWUodGhlYWRU
YWcpIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1l
KHRmb290VGFnKSB8fCBwYXJlbnQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpS
b3dHcm91cCkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CiAgICAgfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzYsNyArMTM2LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJP
YmplY3QoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0g
ICAgICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBSb3dIZWFkZXJSb2xlKQor
ICAgICAgICBpZiAoY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJvd0hlYWRlcikKICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKICAgICB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRh
Y2htZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBdHRhY2htZW50LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QXR0YWNobWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDEzICs5NSwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHRhY2htZW50Ojph
Y2Nlc3NpYmlsCiAgICAgYXV0byYgYWN0aW9uID0gZ2V0QXR0cmlidXRlKGFjdGlvbkF0dHIpOwog
ICAgIAogICAgIGlmIChhY3Rpb24ubGVuZ3RoKCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQo
QWNjZXNzaWJpbGl0eVRleHQoYWN0aW9uLCBBY3Rpb25UZXh0KSk7CisgICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWN0aW9uLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6QWN0aW9uKSk7CiAKICAgICBpZiAodGl0bGUubGVuZ3RoKCkpCi0gICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIFRpdGxlVGV4dCkpOworICAgICAgICB0
ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZTo6VGl0bGUpKTsKIAogICAgIGlmIChzdWJ0aXRsZS5sZW5ndGgoKSkKLSAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChzdWJ0aXRsZSwgU3VidGl0bGVUZXh0
KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VidGl0bGUs
IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdWJ0aXRsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBdHRhY2htZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QXR0YWNobWVudC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJvZ3Jlc3MoZmxv
YXQqIHByb2dyZXNzID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJ1dHRvblJv
bGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOyB9CiAgICAgYm9vbCBpc0F0dGFjaG1l
bnRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgU3RyaW5n
IHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
Y3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYs
MTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUltYWdlTQogQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6cm9sZVZhbHVlKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fYXJlYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXZWJDb3JlTGlua1JvbGU7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CiAgICAgCiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7
CiAgICAgaWYgKCFhcmlhUm9sZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUoYXJpYVJvbGUpOwogCi0gICAgcmV0dXJu
IFdlYkNvcmVMaW5rUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVM
aW5rOwogfQogICAgIAogRWxlbWVudCogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6YWN0aW9u
RWxlbWVudCgpIGNvbnN0CkBAIC05NywxNSArOTcsMTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rOjphY2Nlc3NpYgogewogICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpOwogICAgIGlmICghZGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAg
ICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaXB0aW9uLCBBbHRl
cm5hdGl2ZVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChkZXNjcmlwdGlvbiwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlVGV4dCA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0
dHIpOwogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZVRleHQsIFRpdGxlVGFnVGV4dCkpOworICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlVGV4dCwgQWNjZXNzaWJp
bGl0eVRleHRTb3VyY2U6OlRpdGxlVGFnKSk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1
bW1hcnkgPSBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogICAgIGlmICghc3VtbWFyeS5pc0Vt
cHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VtbWFy
eSwgU3VtbWFyeVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dChzdW1tYXJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogfQogICAg
IAogU3RyaW5nIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMYWJlbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDkgKzY1LDkgQEAgc3RhdGljIGJvb2wgY2hpbGRyZW5Db250YWluT25seVN0YXRpY1Rl
eAogICAgIGlmICghY2hpbGRyZW4uc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+
cm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCisgICAgICAgIGlmIChjaGlsZC0+cm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBHcm91cFJvbGUpIHsKKyAg
ICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAp
IHsKICAgICAgICAgICAgIGlmICghY2hpbGRyZW5Db250YWluT25seVN0YXRpY1RleHQoY2hpbGQt
PmNoaWxkcmVuKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSBl
bHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJl
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxhYmVsLmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TGFiZWwoUmVu
ZGVyT2JqZWN0Kik7CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IGZpbmFsOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIExhYmVsUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJlbDsgfQogICAgIGJv
b2wgaXNMYWJlbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBTdHJpbmcgc3Ry
aW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3Nh
cnkoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxpc3QuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0Ojppc1Vub3JkZXJlZExpc3QoCiAg
ICAgLy8gVGhlIEFSSUEgc3BlYyBzYXlzIHRoZSAibGlzdCIgcm9sZSBpcyBzdXBwb3NlZCB0byBt
aW1pYyBhIFVMIG9yIE9MIHRhZy4KICAgICAvLyBTaW5jZSBpdCBjYW4ndCBiZSBib3RoLCBpdCdz
IHByb2JhYmx5IE9LIHRvIHNheSB0aGF0IGl0J3MgYW4gdW4tb3JkZXJlZCBsaXN0LgogICAgIC8v
IE9uIHRoZSBNYWMsIHRoZXJlJ3Mgbm8gZGlzdGluY3Rpb24gdG8gdGhlIGNsaWVudC4KLSAgICBp
ZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBMaXN0Um9sZSkKKyAgICBpZiAoYXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgCiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZSh1bFRhZyk7CkBAIC03
OSw3ICs3OSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmlzT3JkZXJlZExpc3QoKSAKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQVJJQSBzYXlzIGEgZGlyZWN0b3J5IGlzIGxp
a2UgYSBzdGF0aWMgdGFibGUgb2YgY29udGVudHMsIHdoaWNoIHNvdW5kcyBsaWtlIGFuIG9yZGVy
ZWQgbGlzdC4KLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBEaXJlY3RvcnlSb2xlKQor
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEaXJlY3Rv
cnkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXIt
Pm5vZGUoKTsKQEAgLTEyOSw4ICsxMjksOCBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5TGlzdDo6ZGV0CiAgICAgbV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRl
KCk7CiAgICAgCiAgICAgLy8gRGlyZWN0b3J5IGlzIG1hcHBlZCB0byBsaXN0IGZvciBub3csIGJ1
dCBkb2VzIG5vdCBhZGhlcmUgdG8gdGhlIHNhbWUgaGV1cmlzdGljcy4KLSAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBEaXJlY3RvcnlSb2xlKQotICAgICAgICByZXR1cm4gTGlzdFJvbGU7
CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVj
dG9yeSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OwogICAgIAogICAg
IC8vIEhldXJpc3RpYyB0byBkZXRlcm1pbmUgaWYgdGhpcyBsaXN0IGlzIGJlaW5nIHVzZWQgZm9y
IGxheW91dCBvciBmb3IgY29udGVudC4KICAgICAvLyAgIDEuIElmIGl0J3MgYSBuYW1lZCBsaXN0
LCBsaWtlIG9sIG9yIGFyaWE9bGlzdCwgdGhlbiBpdCdzIGEgbGlzdC4KQEAgLTE0MCw3ICsxNDAs
NyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6ZGV0CiAgICAgLy8gICA0
LiBJZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBsaXN0aXRlbSBjaGlsZHJlbiwgaXQncyBub3QgYSBs
aXN0LgogICAgIC8vICAgNS4gT3RoZXJ3aXNlIGl0J3MgYSBsaXN0IChmb3Igbm93KS4KICAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gTGlzdFJvbGU7CisgICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OwogICAgIAogICAgIC8vIFRlbXBv
cmFyaWx5IHNldCByb2xlIHNvIHRoYXQgd2UgY2FuIHF1ZXJ5IGNoaWxkcmVuIChvdGhlcndpc2Ug
Y2FuSGF2ZUNoaWxkcmVuIHJldHVybnMgZmFsc2UpLgogICAgIG1fcm9sZSA9IHJvbGU7CkBAIC0x
NTEsMTIgKzE1MSwxMiBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6ZGV0
CiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOwogICAgIC8vIERl
c2NyaXB0aW9uTGlzdHMgYXJlIGFsd2F5cyBzZW1hbnRpY2FsbHkgYSBkZXNjcmlwdGlvbiBsaXN0
LCBzbyBkbyBub3QgYXBwbHkgaGV1cmlzdGljcy4KICAgICBpZiAoaXNEZXNjcmlwdGlvbkxpc3Qo
KSAmJiBjaGlsZHJlbi5zaXplKCkpCi0gICAgICAgIHJldHVybiBEZXNjcmlwdGlvbkxpc3RSb2xl
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdDsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbikgewotICAgICAgICBpZiAoY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTGlzdEl0ZW1Sb2xlKQorICAgICAgICBpZiAoY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtKQog
ICAgICAgICAgICAgbGlzdEl0ZW1Db3VudCsrOwotICAgICAgICBlbHNlIGlmIChjaGlsZC0+cm9s
ZVZhbHVlKCkgPT0gTGlzdEl0ZW1Sb2xlKSB7CisgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0pIHsKICAgICAgICAgICAgIFJl
bmRlck9iamVjdCogbGlzdEl0ZW0gPSBjaGlsZC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlm
ICghbGlzdEl0ZW0pCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjgsNyArMTY4LDcg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eUxpc3Q6OmRldAogICAgICAgICAgICAg
ICAgIGxpc3RJdGVtQ291bnQrKzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdEl0ZW0tPm5v
ZGUoKSAmJiBsaXN0SXRlbS0+bm9kZSgpLT5oYXNUYWdOYW1lKGxpVGFnKSkgewogICAgICAgICAg
ICAgICAgIC8vIElubGluZSBlbGVtZW50cyB0aGF0IGFyZSBpbiBhIGxpc3Qgd2l0aCBhbiBleHBs
aWNpdCByb2xlIHNob3VsZCBhbHNvIGNvdW50LgotICAgICAgICAgICAgICAgIGlmIChtX2FyaWFS
b2xlID09IExpc3RSb2xlKQorICAgICAgICAgICAgICAgIGlmIChtX2FyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0KQogICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbUNvdW50Kys7
CiAKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJr
ZXJzKGxpc3RJdGVtKSkgewpAQCAtMTgxLDE4ICsxODEsMTggQEAgQWNjZXNzaWJpbGl0eVJvbGUg
QWNjZXNzaWJpbGl0eUxpc3Q6OmRldAogICAgIAogICAgIC8vIE5vbiA8dWw+IGxpc3RzIGFuZCBB
UklBIGxpc3RzIG9ubHkgbmVlZCB0byBoYXZlIG9uZSBjaGlsZC4KICAgICAvLyA8dWw+LCA8b2w+
IGxpc3RzIG5lZWQgdG8gaGF2ZSB2aXNpYmxlIG1hcmtlcnMuCi0gICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gVW5rbm93blJvbGUpIHsKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikgewogICAgICAgICBpZiAoIWxpc3RJdGVtQ291
bnQpCi0gICAgICAgICAgICByb2xlID0gQXBwbGljYXRpb25Hcm91cFJvbGU7CisgICAgICAgICAg
ICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXA7CiAgICAgfSBlbHNl
IGlmICghaGFzVmlzaWJsZU1hcmtlcnMpCi0gICAgICAgIHJvbGUgPSBHcm91cFJvbGU7CisgICAg
ICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAKICAgICByZXR1cm4gcm9sZTsK
IH0KICAgICAKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlMaXN0Ojpyb2xlVmFsdWUo
KSBjb25zdAogewotICAgIEFTU0VSVChtX3JvbGUgIT0gVW5rbm93blJvbGUpOworICAgIEFTU0VS
VChtX3JvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pOwogICAgIHJldHVybiBtX3Jv
bGU7CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk2LDkgKzk2LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6c2V0U2Vs
ZWN0ZWRDaAogICAgIH0KICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iaiA6IGNoaWxkcmVu
KSB7Ci0gICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpICE9IExpc3RCb3hPcHRpb25Sb2xlKQor
ICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJv
eE9wdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPigqb2JqKS5zZXRTZWxlY3Rl
ZCh0cnVlKTsKICAgICB9CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eUxpc3RCbwogICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LT5oYXNU
YWdOYW1lKGhyVGFnKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCYgbGlzdEJveE9iamVjdCA9ICptX3JlbmRlcmVyLT5kb2N1bWVudCgpLmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoTGlzdEJveE9wdGlvblJvbGUpOworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QmIGxpc3RCb3hPYmplY3QgPSAqbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5h
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0
aW9uKTsKICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbj4obGlzdEJveE9i
amVjdCkuc2V0SFRNTEVsZW1lbnQoZWxlbWVudCk7CiAgICAgCiAgICAgcmV0dXJuICZsaXN0Qm94
T2JqZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRy
ZW5BdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRy
ZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGlzdEJveFJvbGU7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsgfQogICAgICAgICAKICAgICB2b2lkIHNlbGVj
dGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SFRN
TEVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsgbV9vcHRpb25FbGVtZW50ID0gZWxlbWVu
dDsgfQogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIExpc3RCb3hPcHRpb25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RCb3hPcHRpb247IH0KICAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNTZWxlY3RlZE9w
dGlvbkFjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxOCArNTEsMTgg
QEAgUmVmPEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50PiBBY2Nlc3NpYgogQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmRldGVybWluZUFjY2Vzc2liaWxpdHlS
b2xlKCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBVbmtub3duUm9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYg
KChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJv
bGUpCisgICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBtX2FyaWFSb2xl
OwogCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAobm9kZSAm
JiBub2RlLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKLSAgICAgICAgcmV0dXJu
IERvY3VtZW50TWF0aFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9j
dW1lbnRNYXRoOwogCiAgICAgLy8gSXQncyBub3QgY2xlYXIgd2hpY2ggcm9sZSBhIHBsYXRmb3Jt
IHNob3VsZCBjaG9vc2UgZm9yIGEgbWF0aCBlbGVtZW50LgogICAgIC8vIERlY2xhcmluZyBhIG1h
dGggZWxlbWVudCByb2xlIHNob3VsZCBnaXZlIGZsZXhpYmlsaXR5IHRvIHBsYXRmb3JtcyB0byBj
aG9vc2UuCi0gICAgcmV0dXJuIE1hdGhFbGVtZW50Um9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6Ok1hdGhFbGVtZW50OwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6OnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
IG1vZGUpIGNvbnN0CkBAIC0yMDYsNyArMjA2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6aXNNYXRoUwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gdHlwZSA9PSBTdWJzY3JpcHQgPyB0aGlzID09IHBhcmVudC0+bWF0aFN1
YnNjcmlwdE9iamVjdCgpIDogdGhpcyA9PSBwYXJlbnQtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgp
OworICAgIHJldHVybiB0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZTo6
U3Vic2NyaXB0ID8gdGhpcyA9PSBwYXJlbnQtPm1hdGhTdWJzY3JpcHRPYmplY3QoKSA6IHRoaXMg
PT0gcGFyZW50LT5tYXRoU3VwZXJzY3JpcHRPYmplY3QoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKQEAgLTIyMSwxNiArMjIxLDE2IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aE0KICAgICAvLyB0aGlzIHRv
a2VuIGlzIHByZXNlbnQgYW5kIGluIHRoZSBwb3NpdGlvbiBjb3JyZXNwb25kaW5nIHdpdGggdGhl
IHR5cGUuCiAKICAgICBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMgcGFpcnM7Ci0g
ICAgaWYgKHR5cGUgPT0gUHJlU3Vic2NyaXB0IHx8IHR5cGUgPT0gUHJlU3VwZXJzY3JpcHQpCisg
ICAgaWYgKHR5cGUgPT0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBy
ZVN1YnNjcmlwdCB8fCB0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RU
eXBlOjpQcmVTdXBlcnNjcmlwdCkKICAgICAgICAgcGFyZW50LT5tYXRoUHJlc2NyaXB0cyhwYWly
cyk7CiAgICAgZWxzZQogICAgICAgICBwYXJlbnQtPm1hdGhQb3N0c2NyaXB0cyhwYWlycyk7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBwYWlycykgewogICAgICAgICBpZiAodGhpcyA9
PSBwYWlyLmZpcnN0KQotICAgICAgICAgICAgcmV0dXJuICh0eXBlID09IFByZVN1YnNjcmlwdCB8
fCB0eXBlID09IFBvc3RTdWJzY3JpcHQpOworICAgICAgICAgICAgcmV0dXJuICh0eXBlID09IEFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdWJzY3JpcHQgfHwgdHlw
ZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1YnNjcmlw
dCk7CiAgICAgICAgIGlmICh0aGlzID09IHBhaXIuc2Vjb25kKQotICAgICAgICAgICAgcmV0dXJu
ICh0eXBlID09IFByZVN1cGVyc2NyaXB0IHx8IHR5cGUgPT0gUG9zdFN1cGVyc2NyaXB0KTsKKyAg
ICAgICAgICAgIHJldHVybiAodHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2Jq
ZWN0VHlwZTo6UHJlU3VwZXJzY3JpcHQgfHwgdHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0KTsKICAgICB9CiAKICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxNSArMTQyLDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eU1lZGlhQ29udHJvbDo6YWNjZXNzaWIKIHsKICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBhY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24oKTsKICAgICBpZiAoIWRlc2NyaXB0aW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmlwdGlvbiwg
QWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoZGVzY3JpcHRpb24sIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkp
OwogCiAgICAgU3RyaW5nIHRpdGxlID0gdGhpcy0+dGl0bGUoKTsKICAgICBpZiAoIXRpdGxlLmlz
RW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRs
ZSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJp
bGl0eVRleHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwog
CiAgICAgU3RyaW5nIGhlbHB0ZXh0ID0gaGVscFRleHQoKTsKICAgICBpZiAoIWhlbHB0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChoZWxw
dGV4dCwgSGVscFRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dChoZWxwdGV4dCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHApKTsKIH0KICAgICAK
IApAQCAtMTk3LDIzICsxOTcsMjIgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU1l
ZGlhQ29udAogICAgIGNhc2UgTWVkaWFQYXVzZUJ1dHRvbjoKICAgICBjYXNlIE1lZGlhU2hvd0Ns
b3NlZENhcHRpb25zQnV0dG9uOgogICAgIGNhc2UgTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0
b246Ci0gICAgICAgIHJldHVybiBCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OkJ1dHRvbjsKIAogICAgIGNhc2UgTWVkaWFTdGF0dXNEaXNwbGF5OgotICAgICAg
ICByZXR1cm4gU3RhdGljVGV4dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3RhdGljVGV4dDsKIAogICAgIGNhc2UgTWVkaWFUaW1lbGluZUNvbnRhaW5lcjoKLSAgICAg
ICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cm91cDsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVy
biBVbmtub3duUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9
CiAKIAotCiAvLwogLy8gQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9s
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5
TWVkaWFDb250cm9sc0NvbnRhaW5lcigpID0gZGVmYXVsdDsKIAotICAgIEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFRvb2xiYXJSb2xlOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI7IH0KIAogICAgIFN0cmluZyBoZWxwVGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5KCkgPSBkZWZhdWx0OwogCi0gICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQXBwbGljYXRpb25U
aW1lclJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UaW1lcjsgfQogCiAg
ICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGFjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAko
cmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGlsZHJlbigKICAgICBpZiAoIWNhY2hlKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdCA9IGNhY2hl
LT5nZXRPckNyZWF0ZShNZW51TGlzdFBvcHVwUm9sZSk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogbGlzdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQ
b3B1cCk7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAko
cmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZW51TGlzdChSZW5kZXJNZW51TGlzdCopOwog
CiAgICAgYm9vbCBpc01lbnVMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBvcFVwQnV0dG9uUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsgfQog
ICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaAkocmV2
aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gTWVudUxpc3RPcHRpb25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVMaXN0T3B0aW9uOyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNv
bnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAJKHJldmlzaW9uIDIyNDA3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIEFjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbiogQWNjZXNzaWJpbGkKICAgICBpZiAoIWlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSB8fCAhZWxlbWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byYgb3B0aW9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uPigqZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShNZW51TGlzdE9wdGlvblJvbGUpKTsKKyAgICBhdXRvJiBvcHRpb24gPSBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24+KCpkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbikpOwogICAgIG9wdGlv
bi5zZXRFbGVtZW50KGVsZW1lbnQpOwogCiAgICAgcmV0dXJuICZvcHRpb247CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZW51TGlzdFBvcHVwUm9s
ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwOyB9CiAKICAgICBib29sIGlz
VmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgcHJlc3MoKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODMsMTEgKzgzLDYgQEAgc3RhdGljIFN0cmluZyBhY2Nlc3NpYmxlTmFtZUZvck5vZGUoTm9k
ZQogCiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoTm9k
ZSogbm9kZSkKICAgICA6IEFjY2Vzc2liaWxpdHlPYmplY3QoKQotICAgICwgbV9hcmlhUm9sZShV
bmtub3duUm9sZSkKLSAgICAsIG1fcm9sZUZvck1TQUEoVW5rbm93blJvbGUpCi0jaWZuZGVmIE5E
RUJVRwotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLSNlbmRpZgogICAgICwgbV9ub2RlKG5v
ZGUpCiB7CiB9CkBAIC0yODIsNTcgKzI3Nyw1NyBAQCBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmRvY3VtCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQogewogICAgIGlmICghbm9kZSgpKQotICAg
ICAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VW5rbm93bjsKIAotICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0
cmlidXRlKCkpICE9IFVua25vd25Sb2xlKQorICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWlu
ZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAg
ICAgICByZXR1cm4gbV9hcmlhUm9sZTsKICAgICAKICAgICBpZiAobm9kZSgpLT5pc0xpbmsoKSkK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmVMaW5rUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpXZWJDb3JlTGluazsKICAgICBpZiAobm9kZSgpLT5pc1RleHROb2RlKCkpCi0g
ICAgICAgIHJldHVybiBTdGF0aWNUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpTdGF0aWNUZXh0OwogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoYnV0dG9uVGFn
KSkKICAgICAgICAgcmV0dXJuIGJ1dHRvblJvbGVUeXBlKCk7CiAgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKCkpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0g
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUoKSk7CiAgICAgICAgIGlmIChpbnB1dC5p
c0NoZWNrYm94KCkpCi0gICAgICAgICAgICByZXR1cm4gQ2hlY2tCb3hSb2xlOworICAgICAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsKICAgICAgICAgaWYgKGlucHV0
LmlzUmFkaW9CdXR0b24oKSkKLSAgICAgICAgICAgIHJldHVybiBSYWRpb0J1dHRvblJvbGU7Cisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOwogICAgICAg
ICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYnV0dG9uUm9s
ZVR5cGUoKTsKICAgICAgICAgaWYgKGlucHV0LmlzUmFuZ2VDb250cm9sKCkpCi0gICAgICAgICAg
ICByZXR1cm4gU2xpZGVyUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyOwogICAgICAgICBpZiAoaW5wdXQuaXNJbnB1dFR5cGVIaWRkZW4oKSkKLSAgICAg
ICAgICAgIHJldHVybiBJZ25vcmVkUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6SWdub3JlZDsKICAgICAgICAgaWYgKGlucHV0LmlzU2VhcmNoRmllbGQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBTZWFyY2hGaWVsZFJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgICAgICBpZiAoaW5wdXQuaXNDb2xvckNvbnRyb2woKSkKLSAgICAgICAgICAgIHJldHVy
biBDb2xvcldlbGxSb2xlOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpD
b2xvcldlbGw7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIFRleHRGaWVsZFJvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOwogICAgIH0KICAgICBpZiAobm9k
ZSgpLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQm
IHNlbGVjdEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUoKSk7Ci0g
ICAgICAgIHJldHVybiBzZWxlY3RFbGVtZW50Lm11bHRpcGxlKCkgPyBMaXN0Qm94Um9sZSA6IFBv
cFVwQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIHNlbGVjdEVsZW1lbnQubXVsdGlwbGUoKSA/
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94IDogQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0
dG9uOwogICAgIH0KICAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKm5vZGUoKSkpCi0g
ICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGV4dEFyZWE7CiAgICAgaWYgKGhlYWRpbmdMZXZlbCgpKQotICAgICAgICByZXR1cm4g
SGVhZGluZ1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsK
ICAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKQotICAgICAgICByZXR1
cm4gQmxvY2txdW90ZVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Qmxv
Y2txdW90ZTsKICAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGRpdlRhZykpCi0gICAgICAgIHJl
dHVybiBEaXZSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRpdjsKICAg
ICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKHBUYWcpKQotICAgICAgICByZXR1cm4gUGFyYWdyYXBo
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGg7CiAgICAg
aWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KCpub2RlKCkpKQotICAgICAgICByZXR1cm4gTGFiZWxS
b2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsOwogICAgIGlmIChp
czxFbGVtZW50Pigqbm9kZSgpKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSgpKS5pc0ZvY3Vz
YWJsZSgpKQotICAgICAgICByZXR1cm4gR3JvdXBSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwOwogICAgIAotICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmFkZENoaWxkcmVuKCkKQEAgLTM3MCwyMyArMzY1LDIzIEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNhbkhhdmVDaGkKICAgICAKICAgICAvLyBFbGVtZW50cyB0
aGF0IHNob3VsZCBub3QgaGF2ZSBjaGlsZHJlbgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsK
LSAgICBjYXNlIEltYWdlUm9sZToKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBQb3BV
cEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRv
blJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKLSAg
ICBjYXNlIFN0YXRpY1RleHRSb2xlOgotICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6Ci0gICAg
Y2FzZSBTY3JvbGxCYXJSb2xlOgotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgotICAg
IGNhc2UgU3dpdGNoUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAgIGNh
c2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBTcGxpdHRlclJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0
dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3RhdGljVGV4dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0
aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpTd2l0Y2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVj
a2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aDoKICNpZiBFTkFCTEUoTUFUSE1MKQogICAgICAgICByZXR1cm4gbm9kZSgpLT5p
c01hdGhNTEVsZW1lbnQoKTsKICNlbmRpZgpAQCAtNDE3LDE4ICs0MTIsMTggQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29tcHV0ZUFjYwogICAgIH0KIAogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0g
ICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgIGlmIChkZWNp
c2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYSBwYXJl
bnQgdGhhdCBjYW5ub3QgaGF2ZSBjaGlsZHJlbiwgaXQgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgog
ICAgIGlmIChpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBJZ25vcmVkUm9sZSkKKyAgICBpZiAocm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAotICAgIHJldHVybiBtX3JvbGUgPT0gVW5rbm93blJvbGU7CisgICAgcmV0dXJuIG1f
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6Y2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3QKQEAgLTQ3MSw3
ICs0NjYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpCiAgICAg
aWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocm9sZVZhbHVlKCkg
PT0gU2VhcmNoRmllbGRSb2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2VhcmNoRmllbGQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFpczxI
VE1MSW5wdXRFbGVtZW50Pigqbm9kZSkpCkBAIC01MTgsNyArNTEzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVJbQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc0ltYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gSW1hZ2VS
b2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U7
CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUGFzc3dvcmRGaWVsZCgpIGNv
bnN0CkBAIC01MjcsNyArNTIyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQ
YXNzd29yZAogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xl
KQorICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtu
b3duKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpOwpAQCAtNTU1LDcgKzU1MCw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2IKIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSgpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9
IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgcm9s
ZVZhbHVlKCkgPT0gQnV0dG9uUm9sZSkgeworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihu
b2RlKSAmJiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKSB7CiAgICAg
ICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUpOwogICAgICAgICByZXR1cm4gaW5wdXQuaXNJbWFnZUJ1dHRvbigpOwogICAgIH0KQEAg
LTU2NSwyMyArNTYwLDIzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJ
bWEKIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFByb2dyZXNzSW5kaWNhdG9yUm9s
ZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNz
SW5kaWNhdG9yOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NsaWRlcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNsaWRlclJvbGU7CisgICAgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0ZWQoKSBjb25zdAogewogICAgIHN3
aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIE1lbnVSb2xlOgotICAgIGNhc2UgTWVudUJh
clJvbGU6Ci0gICAgY2FzZSBNZW51QnV0dG9uUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToK
LSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1Jv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51QmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpNZW51SXRlbVJhZGlvOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTAsMjUgKzU4NSwyNSBAQCBib29sIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc01lbnVSZWxhCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzTWVudSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IE1lbnVSb2xl
OworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudTsKIH0K
IAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTWVudUJhclJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOwogfQogCiBib29sIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24oKSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFs
dWUoKSA9PSBNZW51QnV0dG9uUm9sZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVCdXR0b247CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzTWVudUl0ZW0oKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAg
ICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNh
c2UgTWVudUl0ZW1DaGVja2JveFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzYsNyArNjMx
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNFbmFibGVkKAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBIb3Jpem9udGFs
UnVsZVJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jp
em9udGFsUnVsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIE5vZGUqIG5vZGUg
PSB0aGlzLT5ub2RlKCk7CkBAIC02ODIsMTIgKzY3NywxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc0NoZWNrZWQoCiAgICAgLy8gRWxzZSwgaWYgdGhpcyBpcyBhbiBBUklBIGNo
ZWNrYm94IG9yIHJhZGlvLCByZXNwZWN0IHRoZSBhcmlhLWNoZWNrZWQgYXR0cmlidXRlCiAgICAg
Ym9vbCB2YWxpZFJvbGUgPSBmYWxzZTsKICAgICBzd2l0Y2ggKGFyaWFSb2xlQXR0cmlidXRlKCkp
IHsKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAg
ICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAg
IGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTd2l0Y2g6CiAgICAgICAgIHZhbGlkUm9sZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CkBAIC03MzYsMjYgKzczMSwyNiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc1JlcXVpcmVkCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdXBwb3J0c1Jl
cXVpcmVkQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0g
ICAgY2FzZSBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoK
ICAgICAgICAgcmV0dXJuIGlzRmlsZVVwbG9hZEJ1dHRvbigpOwotICAgIGNhc2UgQ2VsbFJvbGU6
Ci0gICAgY2FzZSBDb2x1bW5IZWFkZXJSb2xlOgotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAg
IGNhc2UgQ29tYm9Cb3hSb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBHcmlkQ2Vs
bFJvbGU6Ci0gICAgY2FzZSBJbmNyZW1lbnRvclJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToK
LSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAg
ICBjYXNlIFJhZGlvR3JvdXBSb2xlOgotICAgIGNhc2UgUm93SGVhZGVyUm9sZToKLSAgICBjYXNl
IFNsaWRlclJvbGU6Ci0gICAgY2FzZSBTcGluQnV0dG9uUm9sZToKLSAgICBjYXNlIFRhYmxlSGVh
ZGVyQ29udGFpbmVyUm9sZToKLSAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICBjYXNlIFRleHRG
aWVsZFJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVy
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQ6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6SW5jcmVtZW50b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlz
dEJveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSYWRpb0dyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6U3BpbkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhl
YWRlckNvbnRhaW5lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VG9nZ2xlQnV0dG9uOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03OTUsNyArNzkwLDcgQEAgaW50IEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpoZWFkaW5nTGV2ZQogCiAgICAgLy8gVGhlIGltcGxpY2l0IHZhbHVl
IG9mIGFyaWEtbGV2ZWwgaXMgMiBmb3IgdGhlIGhlYWRpbmcgcm9sZS4KICAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNoZWFkaW5nCi0gICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgPT0gSGVhZGluZ1JvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcpCiAgICAgICAgIHJldHVybiAyOwogCiAgICAgcmV0
dXJuIDA7CkBAIC04NzYsMTIgKzg3MSwxMiBAQCBmbG9hdCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6c3RlcFZhbHVlCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVhZGluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEhlYWRpbmdSb2xlOworICAgIHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsKIH0KIAogYm9v
bCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNMaW5rKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gV2ViQ29yZUxpbmtSb2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzQ29udHJvbCgpIGNvbnN0CkBAIC05MDUsNyArOTAwLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNGaWVsZHNldAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNHcm91cCgpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9
IHJvbGVWYWx1ZSgpOwotICAgIHJldHVybiByb2xlID09IEdyb3VwUm9sZSB8fCByb2xlID09IFRl
eHRHcm91cFJvbGUgfHwgcm9sZSA9PSBBcHBsaWNhdGlvbkdyb3VwUm9sZSB8fCByb2xlID09IEFw
cGxpY2F0aW9uVGV4dEdyb3VwUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwIHx8IHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfHwgcm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXA7CiB9CiAKIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKQEAg
LTkxNSw3ICs5MTAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9i
CiAKICAgICAvLyBGaW5kIHRoZSBjaGlsZCByYWRpbyBidXR0b24gdGhhdCBpcyBzZWxlY3RlZCAo
aWUuIHRoZSBpbnRWYWx1ZSA9PSAxKS4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hp
bGRyZW4oKSkgewotICAgICAgICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IFJhZGlvQnV0dG9u
Um9sZSAmJiBjaGlsZC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSA9PSBCdXR0b25TdGF0ZU9uKQor
ICAgICAgICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRp
b0J1dHRvbiAmJiBjaGlsZC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGU6Ok9uKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk0MSw3ICs5MzYsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iCiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3QKIHsKICAgICBp
ZiAoaXNOYXRpdmVDaGVja2JveE9yUmFkaW8oKSkKLSAgICAgICAgcmV0dXJuIGlzSW5kZXRlcm1p
bmF0ZSgpID8gQnV0dG9uU3RhdGVNaXhlZCA6IGlzQ2hlY2tlZCgpID8gQnV0dG9uU3RhdGVPbiA6
IEJ1dHRvblN0YXRlT2ZmOworICAgICAgICByZXR1cm4gaXNJbmRldGVybWluYXRlKCkgPyBBY2Nl
c3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkIDogaXNDaGVja2VkKCkgPyBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGU6Ok9uIDogQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY7CiAKICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2tib3hPclJhZGlvVmFsdWUoKTsKIH0KQEAg
LTEwMDgsMTQgKzEwMDMsMTQgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFj
dGlvbgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiAKICAgICBzd2l0
Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgUG9wVXBC
dXR0b25Sb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToK
LSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVt
Q2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKICAgICAgICAgLy8gQ2hlY2sgaWYg
dGhlIGF1dGhvciBpcyBoaWRpbmcgdGhlIHJlYWwgY29udHJvbCBlbGVtZW50IGluc2lkZSB0aGUg
QVJJQSBlbGVtZW50LgogICAgICAgICBpZiAoRWxlbWVudCogbmF0aXZlRWxlbWVudCA9IG5hdGl2
ZUFjdGlvbkVsZW1lbnQobm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gbmF0aXZlRWxlbWVudDsK
QEAgLTEwNjYsNyArMTA2MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRGVz
Y2VuZGEKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJTbGlkZXJWYWx1ZShi
b29sIGluY3JlYXNlKQogewotICAgIGlmIChyb2xlVmFsdWUoKSAhPSBTbGlkZXJSb2xlKQorICAg
IGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzdGVwQXR0cikuaXNFbXB0eSgpKQpAQCAt
MTEyNSwxMSArMTEyMCwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dlbmVy
aWNGCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgaWYgKHJvbGUgPT0gVmlkZW9Sb2xlIHx8IHJvbGUgPT0g
QXVkaW9Sb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpWaWRlbyB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBdWRpbykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gSWYgaXQgaGFzIGFuIGFyaWEgcm9sZSwgaXQncyBub3QgZ2VuZXJpYy4KLSAgICBp
ZiAobV9hcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAobV9hcmlhUm9sZSAhPSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
SWYgdGhlIGNvbnRlbnQgZWRpdGFibGUgYXR0cmlidXRlIGlzIHNldCBvbiB0aGlzIGVsZW1lbnQs
IHRoYXQncyB0aGUgcmVhc29uCkBAIC0xMTQxLDE0ICsxMTM2LDE0IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzR2VuZXJpY0YKIAogICAgIC8vIFRoZSB3ZWIgYXJlYSBhbmQgYm9k
eSBlbGVtZW50IGFyZSBib3RoIGZvY3VzYWJsZSwgYnV0IGV4aXN0aW5nIGxvZ2ljIGhhbmRsZXMg
dGhlc2UKICAgICAvLyBjYXNlcyBhbHJlYWR5LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGluY2x1ZGUg
dGhlbSBoZXJlLgotICAgIGlmIChyb2xlID09IFdlYkFyZWFSb2xlKQorICAgIGlmIChyb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoYm9keVRhZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIEFuIFNWRyByb290IGlzIGZvY3VzYWJsZSBieSBkZWZhdWx0LCBi
dXQgaXQncyBwcm9iYWJseSBub3QgaW50ZXJhY3RpdmUsIHNvIGRvbid0CiAgICAgLy8gaW5jbHVk
ZSBpdC4gSXQgY2FuIHN0aWxsIGJlIG1hZGUgYWNjZXNzaWJsZSBieSBnaXZpbmcgaXQgYW4gQVJJ
QSByb2xlLgotICAgIGlmIChyb2xlID09IFNWR1Jvb3RSb2xlKQorICAgIGlmIChyb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTVkdSb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTExOTksNyArMTE5NCw3IEBAIHN0YXRpYyBFbGVtZW50KiBzaWJsaW5n
V2l0aEFyaWFSb2xlKE5vZGUKIAogRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1l
bnVFbGVtZW50Rm9yTWVudUJ1dHRvbigpIGNvbnN0CiB7Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmli
dXRlKCkgIT0gTWVudUJ1dHRvblJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0g
QWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgcmV0dXJuIHNpYmxpbmdXaXRoQXJpYVJvbGUobm9kZSgpLCAibWVudSIpOwpAQCAtMTIx
NCw3ICsxMjA5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYgog
CiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUl0ZW1FbGVtZW50Rm9yTWVu
dSgpIGNvbnN0CiB7Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gTWVudVJvbGUpCisg
ICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVybiBzaWJsaW5nV2l0aEFyaWFS
b2xlKG5vZGUoKSwgIm1lbnVpdGVtIik7CkBAIC0xMjk4LDE1ICsxMjkzLDE1IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlRWxlbWUKICAgICAgICAgICAgIFN0cmluZyBpbm5l
clRleHQgPSB0ZXh0Rm9yTGFiZWxFbGVtZW50KGxhYmVsKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gT25seSB1c2UgdGhlIDxsYWJlbD4gdGV4dCBpZiB0aGVyZSdzIG5vIEFSSUEgb3Zl
cnJpZGUuCi0gICAgICAgICAgICBpZiAoIWlubmVyVGV4dC5pc0VtcHR5KCkgJiYgIWFyaWFBY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5k
KEFjY2Vzc2liaWxpdHlUZXh0KGlubmVyVGV4dCwgaXNNZXRlcigpID8gQWx0ZXJuYXRpdmVUZXh0
IDogTGFiZWxCeUVsZW1lbnRUZXh0LCBsYWJlbE9iamVjdCkpOworICAgICAgICAgICAgaWYgKGxh
YmVsT2JqZWN0ICYmICFpbm5lclRleHQuaXNFbXB0eSgpICYmICFhcmlhQWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uKCkpCisgICAgICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmls
aXR5VGV4dChpbm5lclRleHQsIGlzTWV0ZXIoKSA/IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpB
bHRlcm5hdGl2ZSA6IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCwgKmxh
YmVsT2JqZWN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAg
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQgPSB0aGlzLT50aXRsZVVJ
RWxlbWVudCgpOwogICAgIGlmICh0aXRsZVVJRWxlbWVudCkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dChTdHJpbmcoKSwgTGFiZWxCeUVsZW1lbnRUZXh0LCB0aXRs
ZVVJRWxlbWVudCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0
KFN0cmluZygpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQsICp0aXRs
ZVVJRWxlbWVudCkpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5h
dGl2ZVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9yZGVyKSBjb25zdApAQCAt
MTMxNCw3ICsxMzA5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRp
dgogICAgIGlmIChpc1dlYkFyZWEoKSkgewogICAgICAgICBTdHJpbmcgd2ViQXJlYVRleHQgPSBh
bHRlcm5hdGl2ZVRleHRGb3JXZWJBcmVhKCk7CiAgICAgICAgIGlmICghd2ViQXJlYVRleHQuaXNF
bXB0eSgpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh3
ZWJBcmVhVGV4dCwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBw
ZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHdlYkFyZWFUZXh0LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTEzMjIs
NyArMTMxNyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKICAg
ICAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFMYWJlbCA9IGdldEF0dHJpYnV0ZShhcmlh
X2xhYmVsQXR0cik7CiAgICAgaWYgKCFhcmlhTGFiZWwuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0
T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFyaWFMYWJlbCwgQWx0ZXJuYXRpdmVUZXh0
KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYXJpYUxhYmVs
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAKICAgICBpZiAo
dXNlc0FsdFRhZ0ZvclRleHRDb21wdXRhdGlvbigpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIoKSkpIHsKQEAgLTEzMzAsNyArMTMyNSw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKIAogICAgICAgICAgICAgLy8gUmVuZGVySW1hZ2Ug
d2lsbCByZXR1cm4gdGl0bGUgYXMgYSBmYWxsYmFjayBmcm9tIGFsdFRleHQsIGJ1dCB3ZSBkb24n
dCB3YW50IHRpdGxlIGhlcmUgYmVjYXVzZSB3ZSBjb25zaWRlciB0aGF0IGluIGhlbHBUZXh0Lgog
ICAgICAgICAgICAgaWYgKCFyZW5kZXJBbHRUZXh0LmlzRW1wdHkoKSAmJiByZW5kZXJBbHRUZXh0
ICE9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpKSB7Ci0gICAgICAgICAgICAgICAgdGV4dE9yZGVy
LmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChyZW5kZXJBbHRUZXh0LCBBbHRlcm5hdGl2ZVRleHQp
KTsKKyAgICAgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHJl
bmRlckFsdFRleHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTMzOCw3
ICsxMzMzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdgogICAg
ICAgICAvLyBPdGhlcndpc2UsIGl0IHNob3VsZCBmYWxsYmFjayB0byBvdGhlciBtZXRob2RzLCBs
aWtlIHRoZSB0aXRsZSBhdHRyaWJ1dGUuCiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0
ID0gZ2V0QXR0cmlidXRlKGFsdEF0dHIpOwogICAgICAgICBpZiAoIWFsdC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFsdCwgQWx0ZXJu
YXRpdmVUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlU
ZXh0KGFsdCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAgICAgfQog
ICAgIAogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CkBAIC0xMzQ5LDIzICsxMzQ0LDIz
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKICAgICBpZiAoaXM8
SFRNTEZpZWxkU2V0RWxlbWVudD4oKm5vZGUpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZG93bmNhc3Q8SFRNTEZp
ZWxkU2V0RWxlbWVudD4oKm5vZGUpLmxlZ2VuZCgpKTsKICAgICAgICAgaWYgKG9iamVjdCAmJiAh
b2JqZWN0LT5pc0hpZGRlbigpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3Np
YmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUob2JqZWN0LT5ub2RlKCkpLCBBbHRlcm5h
dGl2ZVRleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG9iamVjdC0+bm9kZSgpKSwgQWNjZXNzaWJpbGl0eVRl
eHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAgICAgfQogICAgIAogICAgIC8vIFRoZSBmaWd1cmUg
ZWxlbWVudCBkZXJpdmVzIGl0cyBhbHRlcm5hdGl2ZSB0ZXh0IGZyb20gdGhlIGZpcnN0IGFzc29j
aWF0ZWQgZmlnY2FwdGlvbiBlbGVtZW50IGlmIG9uZSBpcyBhdmFpbGFibGUuCiAgICAgaWYgKGlz
RmlndXJlRWxlbWVudCgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNhcHRpb25G
b3JGaWd1cmUgPSB0aGlzLT5jYXB0aW9uRm9yRmlndXJlKCk7CiAgICAgICAgIGlmIChjYXB0aW9u
Rm9yRmlndXJlICYmICFjYXB0aW9uRm9yRmlndXJlLT5pc0hpZGRlbigpKQotICAgICAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUo
Y2FwdGlvbkZvckZpZ3VyZS0+bm9kZSgpKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2libGVOYW1lRm9yTm9k
ZShjYXB0aW9uRm9yRmlndXJlLT5ub2RlKCkpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0
ZXJuYXRpdmUpKTsKICAgICB9CiAgICAgCiAgICAgLy8gVHJlZSBpdGVtcyBtaXNzaW5nIGEgbGFi
ZWwgYXJlIGxhYmVsZWQgYnkgYWxsIGNoaWxkIGVsZW1lbnRzLgogICAgIGlmIChpc1RyZWVJdGVt
KCkgJiYgYXJpYUxhYmVsLmlzRW1wdHkoKSAmJiBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkuaXNF
bXB0eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vz
c2libGVOYW1lRm9yTm9kZShub2RlKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRP
cmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG5vZGUp
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAKICNpZiBFTkFC
TEUoTUFUSE1MKQogICAgIGlmIChub2RlLT5pc01hdGhNTEVsZW1lbnQoKSkKLSAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6
OmFsdHRleHRBdHRyKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBl
bmQoQWNjZXNzaWJpbGl0eVRleHQoZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjphbHR0ZXh0QXR0
ciksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogI2VuZGlmCiB9CiAK
QEAgLTEzNzksNyArMTM3NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2li
bGVUZXgKICAgICBpZiAoaXNJbnB1dFRhZykgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBp
bnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgaWYgKGlu
cHV0LmlzVGV4dEJ1dHRvbigpKSB7Ci0gICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vz
c2liaWxpdHlUZXh0KGlucHV0LnZhbHVlV2l0aERlZmF1bHQoKSwgVmlzaWJsZVRleHQpKTsKKyAg
ICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaW5wdXQudmFsdWVX
aXRoRGVmYXVsdCgpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VmlzaWJsZSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM5MSwyNiArMTM4NiwyNiBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2aXNpYmxlVGV4CiAgICAgYm9vbCB1c2VUZXh0
VW5kZXJFbGVtZW50ID0gZmFsc2U7CiAgICAgCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewot
ICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBv
cFVwQnV0dG9uOgogICAgICAgICAvLyBOYXRpdmUgcG9wdXAgYnV0dG9ucyBzaG91bGQgbm90IHVz
ZSB0aGVpciBidXR0b24gY2hpbGRyZW4ncyB0ZXh0IGFzIGEgdGl0bGUuIFRoYXQgdmFsdWUgaXMg
cmV0cmlldmVkIHRocm91Z2ggc3RyaW5nVmFsdWUoKS4KICAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoc2VsZWN0VGFnKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgotICAg
IGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRvZ2dsZUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgogICAgIC8vIE1hY09TIGRv
ZXMgbm90IGV4cGVjdCBuYXRpdmUgPGxpPiBlbGVtZW50cyB0byBleHBvc2UgbGFiZWwgaW5mb3Jt
YXRpb24sIGl0IG9ubHkgZXhwZWN0cyBsZWFmIG5vZGUgZWxlbWVudHMgdG8gZG8gdGhhdC4KICNp
ZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgY2FzZSBMaXN0SXRlbVJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAjZW5kaWYKLSAgICBjYXNlIE1lbnVCdXR0b25Sb2xl
OgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToK
LSAgICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3
aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CiAgICAgICAgIHVzZVRleHRV
bmRlckVsZW1lbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTQz
NCw3ICsxNDI5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmlzaWJsZVRleAog
CiAgICAgICAgIFN0cmluZyB0ZXh0ID0gdGV4dFVuZGVyRWxlbWVudChtb2RlKTsKICAgICAgICAg
aWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNz
aWJpbGl0eVRleHQodGV4dCwgQ2hpbGRyZW5UZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIu
YXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRleHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpD
aGlsZHJlbikpOwogICAgIH0KIH0KIApAQCAtMTQ0MiwyOCArMTQzNywyOCBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4dChWCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhcmlhSGVscCA9IGdldEF0dHJpYnV0ZShhcmlhX2hlbHBBdHRyKTsKICAgICBpZiAoIWFyaWFI
ZWxwLmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChhcmlhSGVscCwgSGVscFRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3Np
YmlsaXR5VGV4dChhcmlhSGVscCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHApKTsKICAg
ICAKICAgICBTdHJpbmcgZGVzY3JpYmVkQnkgPSBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKTsK
ICAgICBpZiAoIWRlc2NyaWJlZEJ5LmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVu
ZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmliZWRCeSwgU3VtbWFyeVRleHQpKTsKKyAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmliZWRCeSwgQWNjZXNzaWJp
bGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpKTsKIAogICAgIC8vIFN1bW1hcnkgYXR0cmlidXRlIHVz
ZWQgYXMgaGVscCB0ZXh0IG9uIHRhYmxlcy4KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1h
cnkgPSBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogICAgIGlmICghc3VtbWFyeS5pc0VtcHR5
KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VtbWFyeSwg
U3VtbWFyeVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChzdW1tYXJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogCiAgICAgLy8g
VGhlIHRpdGxlIGF0dHJpYnV0ZSBzaG91bGQgYmUgdXNlZCBhcyBoZWxwIHRleHQgdW5sZXNzIGl0
IGlzIGFscmVhZHkgYmVpbmcgdXNlZCBhcyBkZXNjcmlwdGl2ZSB0ZXh0LgogICAgIC8vIEhvd2V2
ZXIsIHdoZW4gdGhlIHRpdGxlIGF0dHJpYnV0ZSBpcyB0aGUgb25seSB0ZXh0IGFsdGVybmF0aXZl
IHByb3ZpZGVkLCBpdCBtYXkgYmUgZXhwb3NlZCBhcyB0aGUKICAgICAvLyBkZXNjcmlwdGl2ZSB0
ZXh0LiBUaGlzIGlzIHByb2JsZW1hdGljIGluIHRoZSBjYXNlIG9mIG1ldGVycyBiZWNhdXNlIHRo
ZSBIVE1MIHNwZWMgc3VnZ2VzdHMgYXV0aG9ycwogICAgIC8vIGNhbiBleHBvc2UgdW5pdHMgdGhy
b3VnaCB0aGlzIGF0dHJpYnV0ZS4gVGhlcmVmb3JlLCBpZiB0aGUgZWxlbWVudCBpcyBhIG1ldGVy
LCBjaGFuZ2UgaXRzIHNvdXJjZQotICAgIC8vIHR5cGUgdG8gSGVscFRleHQuCisgICAgLy8gdHlw
ZSB0byBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscC4KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHRpdGxlID0gZ2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CiAgICAgaWYgKCF0aXRsZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKCFpc01ldGVyKCkgJiYgIXJvbGVJZ25vcmVzVGl0bGUoKSkK
LSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIFRp
dGxlVGFnVGV4dCkpOworICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dCh0aXRsZSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlRpdGxlVGFnKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0
bGUsIEhlbHBUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxp
dHlUZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCkpOwogICAgIH0KIH0K
IApAQCAtMTQ3Niw3ICsxNDcxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNj
ZXNzaWJpbAogICAgIAogICAgIFN0cmluZyBwbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyVmFsdWUo
KTsKICAgICBpZiAoIXBsYWNlaG9sZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dChwbGFjZWhvbGRlciwgUGxhY2Vob2xkZXJUZXh0KSk7Cisg
ICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQocGxhY2Vob2xkZXIsIEFj
Y2Vzc2liaWxpdHlUZXh0U291cmNlOjpQbGFjZWhvbGRlcikpOwogfQogICAgIAogdm9pZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQoVmVjdG9yPEFjY2Vzc2liaWxp
dHlUZXh0PiYgdGV4dE9yZGVyKSBjb25zdApAQCAtMTQ4NiwxMyArMTQ4MSwxMyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlCiAgICAgICAgIFZlY3RvcjxFbGVtZW50
Kj4gZWxlbWVudHM7CiAgICAgICAgIGFyaWFMYWJlbGVkQnlFbGVtZW50cyhlbGVtZW50cyk7CiAg
ICAgICAgIAotICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVs
ZW1lbnRzOworICAgICAgICBWZWN0b3I8UmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVsZW1l
bnRzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewotICAg
ICAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4RWxlbWVudCA9IGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7Ci0gICAgICAgICAgICBheEVsZW1lbnRzLmFw
cGVuZChheEVsZW1lbnQpOworICAgICAgICAgICAgaWYgKGF1dG8gYXhFbGVtZW50ID0gYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVtZW50KSkKKyAgICAgICAgICAgICAgICBheEVsZW1l
bnRzLmFwcGVuZCgqYXhFbGVtZW50KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBbHRlcm5hdGl2
ZVRleHQsIFdURk1vdmUoYXhFbGVtZW50cykpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChB
Y2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
QWx0ZXJuYXRpdmUsIFdURk1vdmUoYXhFbGVtZW50cykpKTsKICAgICB9CiB9CiAgICAgCkBAIC0x
NTQxLDcgKzE1MzYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpIGNvbnN0CiB7CiAgICAgLy8gU3RhdGljIHRleHQgc2hvdWxkIG5vdCBoYXZlIGEgZGVzY3Jp
cHRpb24sIGl0IHNob3VsZCBvbmx5IGhhdmUgYSBzdHJpbmdWYWx1ZS4KLSAgICBpZiAocm9sZVZh
bHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBT
dHJpbmcgYXJpYURlc2NyaXB0aW9uID0gYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwpA
QCAtMTU3NiwxMiArMTU3MSwxMiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFj
Y2Vzc2liCiAvLyBhY2Nlc3NpYmlsaXR5IGhpZXJhcmNoeS4gVGhpcyBhcHBsaWVzIHRvIGdlbmVy
aWMgZ3JvdXBzIGxpa2UgPGRpdj4ncyB3aXRoIG5vIHJvbGUgdmFsdWUgc2V0LgogYm9vbCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6cm9sZUlnbm9yZXNUaXRsZSgpIGNvbnN0CiB7Ci0gICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIERpdlJvbGU6Ci0g
ICAgY2FzZSBVbmtub3duUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXY6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTYxOSw3ICsxNjE0LDcg
QEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4dAogICAgICAgICAvLyBP
bmx5IHRha2UgaGVscCB0ZXh0IGZyb20gYW4gYW5jZXN0b3IgZWxlbWVudCBpZiBpdHMgYSBncm91
cCBvciBhbiB1bmtub3duIHJvbGUuIElmIGhlbHAgd2FzIAogICAgICAgICAvLyBhZGRlZCB0byB0
aG9zZSBraW5kcyBvZiBlbGVtZW50cywgaXQgaXMgbGlrZWx5IGl0IHdhcyBtZWFudCBmb3IgYSBj
aGlsZCBlbGVtZW50LgogICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmogPSBh
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGFuY2VzdG9yKSkgewotICAgICAgICAgICAgaWYg
KCFheE9iai0+aXNHcm91cCgpICYmIGF4T2JqLT5yb2xlVmFsdWUoKSAhPSBVbmtub3duUm9sZSkK
KyAgICAgICAgICAgIGlmICghYXhPYmotPmlzR3JvdXAoKSAmJiBheE9iai0+cm9sZVZhbHVlKCkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjM4LDcgKzE2MzMsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aGllcmFyCiAgICAgICAgIHJldHVybiBhcmlhTGV2ZWwudG9JbnQoKTsK
ICAgICAKICAgICAvLyBPbmx5IHRyZWUgaXRlbSB3aWxsIGNhbGN1bGF0ZSBpdHMgbGV2ZWwgdGhy
b3VnaCB0aGUgRE9NIGN1cnJlbnRseS4KLSAgICBpZiAocm9sZVZhbHVlKCkgIT0gVHJlZUl0ZW1S
b2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0p
CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIC8vIEhpZXJhcmNoeSBsZXZlbGluZyBzdGFy
dHMgYXQgMSwgdG8gbWF0Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KQEAgLTE2NDYsOSArMTY0MSw5
IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXIKICAgICB1bnNpZ25l
ZCBsZXZlbCA9IDE7CiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJl
bnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHBhcmVudFJvbGUgPSBwYXJlbnQtPmFyaWFSb2xlQXR0
cmlidXRlKCk7Ci0gICAgICAgIGlmIChwYXJlbnRSb2xlID09IEFwcGxpY2F0aW9uR3JvdXBSb2xl
KQorICAgICAgICBpZiAocGFyZW50Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25Hcm91cCkKICAgICAgICAgICAgIGxldmVsKys7Ci0gICAgICAgIGVsc2UgaWYgKHBhcmVudFJv
bGUgPT0gVHJlZVJvbGUpCisgICAgICAgIGVsc2UgaWYgKHBhcmVudFJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgCkBAIC0xODA1
LDI2ICsxODAwLDI2IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGUoKSAK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewot
ICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBv
cFVwQnV0dG9uOgogICAgICAgICAvLyBOYXRpdmUgcG9wdXAgYnV0dG9ucyBzaG91bGQgbm90IHVz
ZSB0aGVpciBidXR0b24gY2hpbGRyZW4ncyB0ZXh0IGFzIGEgdGl0bGUuIFRoYXQgdmFsdWUgaXMg
cmV0cmlldmVkIHRocm91Z2ggc3RyaW5nVmFsdWUoKS4KICAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoc2VsZWN0VGFnKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAg
RkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9u
Um9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xl
OgotICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6Ci0gICAg
Y2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICBj
YXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgIGNh
c2UgU3dpdGNoUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpUYWI6CiAgICAgICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7CiAgICAgLy8gU1ZHUm9v
dHMgc2hvdWxkIG5vdCB1c2UgdGhlIHRleHQgdW5kZXIgaXRzZWxmIGFzIGEgdGl0bGUuIFRoYXQg
Y291bGQgaW5jbHVkZSB0aGUgdGV4dCBvZiBvYmplY3RzIGxpa2UgPHRleHQ+LgotICAgIGNhc2Ug
U1ZHUm9vdFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9vdDoKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMTg0
MSw3ICsxODM2LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZSgpIAog
U3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0KCkgY29uc3QKIHsKICAgICAvLyBJ
ZiB0aGlzIGlzIGEgdXNlciBkZWZpbmVkIHN0YXRpYyB0ZXh0LCB1c2UgdGhlIGFjY2Vzc2libGUg
bmFtZSBjb21wdXRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFN0YXRpY1RleHRSb2xlKSB7CisgICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsK
ICAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0T3JkZXI7CiAgICAgICAgIGFs
dGVybmF0aXZlVGV4dCh0ZXh0T3JkZXIpOwogICAgICAgICBpZiAodGV4dE9yZGVyLnNpemUoKSA+
IDAgJiYgdGV4dE9yZGVyWzBdLnRleHQubGVuZ3RoKCkpCkBAIC0xODcwLDcgKzE4NjUsNyBAQCBT
dHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnN0cmluZ1ZhCiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9
PSBTdGF0aWNUZXh0Um9sZSkgeworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0KSB7CiAgICAgICAgIFN0cmluZyBzdGF0aWNUZXh0ID0g
dGV4dCgpOwogICAgICAgICBpZiAoIXN0YXRpY1RleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICBz
dGF0aWNUZXh0ID0gdGV4dFVuZGVyRWxlbWVudCgpOwpAQCAtMjEyOCwzNyArMjEyMywzNyBAQCBB
Y2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjCiB7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7CiAgICAgaWYgKGFy
aWFSb2xlLmlzTnVsbCgpIHx8IGFyaWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFVu
a25vd25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAg
ICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IGFyaWFSb2xlVG9XZWJDb3JlUm9sZShh
cmlhUm9sZSk7CiAKICAgICAvLyBBUklBIHN0YXRlcyBpZiBhbiBpdGVtIGNhbiBnZXQgZm9jdXMs
IGl0IHNob3VsZCBub3QgYmUgcHJlc2VudGF0aW9uYWwuCi0gICAgaWYgKHJvbGUgPT0gUHJlc2Vu
dGF0aW9uYWxSb2xlICYmIGNhblNldEZvY3VzQXR0cmlidXRlKCkpCi0gICAgICAgIHJldHVybiBV
bmtub3duUm9sZTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0
aW9uYWwgJiYgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYgKHJvbGUgPT0gQnV0dG9uUm9sZSkKKyAgICBp
ZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKQogICAgICAgICByb2xlID0gYnV0
dG9uUm9sZVR5cGUoKTsKIAotICAgIGlmIChyb2xlID09IFRleHRBcmVhUm9sZSAmJiAhYXJpYUlz
TXVsdGlsaW5lKCkpCi0gICAgICAgIHJvbGUgPSBUZXh0RmllbGRSb2xlOworICAgIGlmIChyb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSAmJiAhYXJpYUlzTXVsdGlsaW5lKCkpCisg
ICAgICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOwogCiAgICAgcm9sZSA9
IHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChyb2xlKTsKICAgICAKICAgICAvLyBQcmVzZW50YXRp
b25hbCByb2xlcyBhcmUgaW52YWxpZGF0ZWQgYnkgdGhlIHByZXNlbmNlIG9mIEFSSUEgYXR0cmli
dXRlcy4KLSAgICBpZiAocm9sZSA9PSBQcmVzZW50YXRpb25hbFJvbGUgJiYgc3VwcG9ydHNBUklB
QXR0cmlidXRlcygpKQotICAgICAgICByb2xlID0gVW5rbm93blJvbGU7CisgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsICYmIHN1cHBvcnRzQVJJQUF0dHJp
YnV0ZXMoKSkKKyAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogICAg
IAogICAgIC8vIFRoZSBBUklBIHNwZWMgc3RhdGVzLCAiQXV0aG9ycyBtdXN0IGdpdmUgZWFjaCBl
bGVtZW50IHdpdGggcm9sZSByZWdpb24gYSBicmllZiBsYWJlbCB0aGF0CiAgICAgLy8gZGVzY3Jp
YmVzIHRoZSBwdXJwb3NlIG9mIHRoZSBjb250ZW50IGluIHRoZSByZWdpb24uIiBUaGUgQ29yZSBB
QU0gc3RhdGVzLCAiU3BlY2lhbCBjYXNlOgogICAgIC8vIGlmIHRoZSByZWdpb24gZG9lcyBub3Qg
aGF2ZSBhbiBhY2Nlc3NpYmxlIG5hbWUsIGRvIG5vdCBleHBvc2UgdGhlIGVsZW1lbnQgYXMgYSBs
YW5kbWFyay4KICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHJvbGUgb2YgdGhl
IGVsZW1lbnQgaW5zdGVhZC4iCi0gICAgaWYgKHJvbGUgPT0gTGFuZG1hcmtSZWdpb25Sb2xlICYm
ICFoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbEF0dHIpICYmICFoYXNBdHRyaWJ1dGUoYXJpYV9sYWJl
bGxlZGJ5QXR0cikpCi0gICAgICAgIHJvbGUgPSBVbmtub3duUm9sZTsKKyAgICBpZiAocm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gJiYgIWhhc0F0dHJpYnV0ZShhcmlh
X2xhYmVsQXR0cikgJiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKSkKKyAgICAg
ICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYgKHJvbGUpCisg
ICAgaWYgKHN0YXRpY19jYXN0PGludD4ocm9sZSkpCiAgICAgICAgIHJldHVybiByb2xlOwogCi0g
ICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bjsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3QKQEAgLTIxNzMsMjEgKzIxNjgsMjEgQEAgQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplYwogICAgIC8vIFdoaWxlIGluc2lkZSB0aGUg
Y2FsbCBzdGFjayBvZiBjcmVhdGluZyBhbiBlbGVtZW50LCB3ZSBuZWVkIHRvIGF2b2lkIGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjUxNzQKIAotICAgIGlmIChyb2xlICE9IExpc3RCb3hPcHRpb25Sb2xlICYm
IHJvbGUgIT0gTWVudUl0ZW1Sb2xlKQorICAgIGlmIChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xl
OjpMaXN0Qm94T3B0aW9uICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtKQog
ICAgICAgICByZXR1cm4gcm9sZTsKICAgICAKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQgJiYgIXBhcmVudC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpOyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHBhcmVudEFyaWFSb2xlID0gcGFyZW50LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpOwogCiAgICAgICAgIC8vIFNlbGVjdHMgYW5kIGxpc3Rib3hlcyBib3RoIGhhdmUgb3B0
aW9ucyBhcyBjaGlsZCByb2xlcywgYnV0IHRoZXkgbWFwIHRvIGRpZmZlcmVudCByb2xlcyB3aXRo
aW4gV2ViQ29yZS4KLSAgICAgICAgaWYgKHJvbGUgPT0gTGlzdEJveE9wdGlvblJvbGUgJiYgcGFy
ZW50QXJpYVJvbGUgPT0gTWVudVJvbGUpCi0gICAgICAgICAgICByZXR1cm4gTWVudUl0ZW1Sb2xl
OworICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbiAm
JiBwYXJlbnRBcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkKKyAgICAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW07CiAgICAgICAgIC8vIEFuIGFyaWEg
Im1lbnVpdGVtIiBtYXkgbWFwIHRvIE1lbnVCdXR0b24gb3IgTWVudUl0ZW0gZGVwZW5kaW5nIG9u
IGl0cyBwYXJlbnQuCi0gICAgICAgIGlmIChyb2xlID09IE1lbnVJdGVtUm9sZSAmJiBwYXJlbnRB
cmlhUm9sZSA9PSBBcHBsaWNhdGlvbkdyb3VwUm9sZSkKLSAgICAgICAgICAgIHJldHVybiBNZW51
QnV0dG9uUm9sZTsKKyAgICAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJ
dGVtICYmIHBhcmVudEFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdy
b3VwKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOwog
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHBhcmVudCBoYWQgYSBkaWZmZXJlbnQgcm9sZSwg
dGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNvbnRpbnVlIHNlYXJjaGluZyB1cCB0aGUgY2hhaW4uCi0g
ICAgICAgIGlmIChwYXJlbnRBcmlhUm9sZSkKKyAgICAgICAgaWYgKHBhcmVudEFyaWFSb2xlICE9
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIApAQCAtMjE5OCwxOSArMjE5MywxOSBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjYW5TZXRTZWxlCiB7CiAgICAgLy8gRWxlbWVudHMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQKICAg
ICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBDZWxsUm9sZToKLSAgICBjYXNlIEdy
aWRDZWxsUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBjYXNlIFJvd0hlYWRl
clJvbGU6Ci0gICAgY2FzZSBSb3dSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2Fz
ZSBUYWJSb2xlOgotICAgIGNhc2UgVHJlZUdyaWRSb2xlOgotICAgIGNhc2UgVHJlZUl0ZW1Sb2xl
OgotICAgIGNhc2UgVHJlZVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAg
ICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlJvdzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
cmVlR3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRp
bzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKICAgICAgICAgcmV0dXJu
IGlzRW5hYmxlZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDEw
ICsxNDQsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0KE5vZGUqKTsKIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1fYXJpYVJvbGU7
Ci0gICAgbXV0YWJsZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOworICAgIEFjY2Vz
c2liaWxpdHlSb2xlIG1fYXJpYVJvbGUgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biB9Owor
ICAgIG11dGFibGUgQWNjZXNzaWJpbGl0eVJvbGUgbV9yb2xlRm9yTVNBQSB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duIH07CiAjaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgbV9pbml0aWFsaXpl
ZDsKKyAgICBib29sIG1faW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKICAgICBib29s
IGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9ub2RlOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDIwICs4NCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU9iamVjdCgpCi0gICAgOiBtX2lkKDApCi0g
ICAgLCBtX2hhdmVDaGlsZHJlbihmYWxzZSkKLSAgICAsIG1fcm9sZShVbmtub3duUm9sZSkKLSAg
ICAsIG1fbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoRGVmYXVsdEJlaGF2aW9yKQotICAgICwgbV9p
c0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoKSkKLSAgICAsIG1fY2hpbGRyZW5EaXJ0eShmYWxzZSkKLSAgICAsIG1fc3VidHJlZURpcnR5
KGZhbHNlKQotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAsIG1fd3JhcHBlcihudWxscHRyKQotI2Vu
ZGlmCi17Ci19Ci0KIEFjY2Vzc2liaWxpdHlPYmplY3Q6On5BY2Nlc3NpYmlsaXR5T2JqZWN0KCkK
IHsKICAgICBBU1NFUlQoaXNEZXRhY2hlZCgpKTsKQEAgLTEwNiw3ICs5Miw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3Q6On5BY2Nlc3NpYmlsaXR5T2JqZWMKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSBkZXRhY2htZW50VHlwZSwgQVhP
YmplY3RDYWNoZSogY2FjaGUpCiB7CiAgICAgLy8gTWVudSBjbG9zZSBldmVudHMgbmVlZCB0byBu
b3RpZnkgdGhlIHBsYXRmb3JtLiBObyBlbGVtZW50IGlzIHVzZWQgaW4gdGhlIG5vdGlmaWNhdGlv
biBiZWNhdXNlIGl0J3MgYSBkZXN0cnVjdGlvbiBldmVudC4KLSAgICBpZiAoZGV0YWNobWVudFR5
cGUgPT0gRWxlbWVudERlc3Ryb3llZCAmJiByb2xlVmFsdWUoKSA9PSBNZW51Um9sZSAmJiBjYWNo
ZSkKKyAgICBpZiAoZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBl
OjpFbGVtZW50RGVzdHJveWVkICYmIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51ICYmIGNhY2hlKQogICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihudWxscHRyLCAm
Y2FjaGUtPmRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYTWVudUNsb3NlZCk7CiAgICAgCiAg
ICAgLy8gQ2xlYXIgYW55IGNoaWxkcmVuIGFuZCBjYWxsIGRldGFjaEZyb21QYXJlbnQgb24gdGhl
bSBzbyB0aGF0CkBAIC0xMzAsMTQyICsxMTYsMTQyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEZXRhY2hlZCgpIGMKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmls
aXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3QgaW5kZXgpCiB7
CiAgICAgc3dpdGNoIChjcml0ZXJpYS0+c2VhcmNoS2V5c1tpbmRleF0pIHsKLSAgICAvLyBUaGUg
QW55VHlwZVNlYXJjaEtleSBtYXRjaGVzIGFueSBub24tbnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
LgotICAgIGNhc2UgQW55VHlwZVNlYXJjaEtleToKKyAgICAvLyBUaGUgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6QW55VHlwZSBtYXRjaGVzIGFueSBub24tbnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
LgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIAotICAgIGNhc2UgQXJ0aWNsZVNlYXJjaEtleToKLSAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBEb2N1bWVudEFydGljbGVSb2xlOworICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QXJ0aWNsZToKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xl
OwogICAgICAgICAgICAgCi0gICAgY2FzZSBCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QmxvY2txdW90ZVNhbWVMZXZlbDoKICAg
ICAgICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgYXhPYmpl
Y3QtPmlzQmxvY2txdW90ZSgpCiAgICAgICAgICAgICAmJiBheE9iamVjdC0+YmxvY2txdW90ZUxl
dmVsKCkgPT0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKTsKICAgICAg
ICAgCi0gICAgY2FzZSBCbG9ja3F1b3RlU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6QmxvY2txdW90ZToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0Jsb2Nr
cXVvdGUoKTsKICAgICAgICAgCi0gICAgY2FzZSBCb2xkRm9udFNlYXJjaEtleToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkJvbGRGb250OgogICAgICAgICByZXR1cm4gYXhPYmpl
Y3QtPmhhc0JvbGRGb250KCk7CiAgICAgICAgIAotICAgIGNhc2UgQnV0dG9uU2VhcmNoS2V5Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QnV0dG9uOgogICAgICAgICByZXR1cm4g
YXhPYmplY3QtPmlzQnV0dG9uKCk7CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tCb3hTZWFyY2hL
ZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpDaGVja0JveDoKICAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT5pc0NoZWNrYm94KCk7CiAgICAgICAgIAotICAgIGNhc2UgQ29udHJv
bFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkNvbnRyb2w6CiAg
ICAgICAgIHJldHVybiBheE9iamVjdC0+aXNDb250cm9sKCk7CiAgICAgICAgIAotICAgIGNhc2Ug
RGlmZmVyZW50VHlwZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6
OkRpZmZlcmVudFR5cGU6CiAgICAgICAgIHJldHVybiBjcml0ZXJpYS0+c3RhcnRPYmplY3QKICAg
ICAgICAgICAgICYmIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBjcml0ZXJpYS0+c3RhcnRPYmpl
Y3QtPnJvbGVWYWx1ZSgpOwogICAgICAgICAKLSAgICBjYXNlIEZvbnRDaGFuZ2VTZWFyY2hLZXk6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpGb250Q2hhbmdlOgogICAgICAgICBy
ZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhh
c1NhbWVGb250KGNyaXRlcmlhLT5zdGFydE9iamVjdC0+cmVuZGVyZXIoKSk7CiAgICAgICAgIAot
ICAgIGNhc2UgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6Rm9udENvbG9yQ2hhbmdlOgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0
YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhhc1NhbWVGb250Q29sb3IoY3Jp
dGVyaWEtPnN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKICAgICAgICAgCi0gICAgY2FzZSBGcmFt
ZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkZyYW1lOgogICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPmlzV2ViQXJlYSgpOwogICAgICAgICAKLSAgICBjYXNlIEdy
YXBoaWNTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpHcmFwaGlj
OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzSW1hZ2UoKTsKICAgICAgICAgCi0gICAgY2Fz
ZSBIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6SGVhZGluZ0xldmVsMToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwo
KSA9PSAxOwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdMZXZlbDJTZWFyY2hLZXk6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWwyOgogICAgICAgICByZXR1
cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDI7CiAgICAgICAgIAotICAgIGNhc2UgSGVh
ZGluZ0xldmVsM1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okhl
YWRpbmdMZXZlbDM6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0g
MzsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsNDoKICAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSA0OwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdM
ZXZlbDVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5n
TGV2ZWw1OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDU7CiAg
ICAgICAgIAotICAgIGNhc2UgSGVhZGluZ0xldmVsNlNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDY6CiAgICAgICAgIHJldHVybiBheE9iamVj
dC0+aGVhZGluZ0xldmVsKCkgPT0gNjsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5nU2FtZUxl
dmVsU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ1Nh
bWVMZXZlbDoKICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAg
ICAgJiYgYXhPYmplY3QtPmlzSGVhZGluZygpCiAgICAgICAgICAgICAmJiBheE9iamVjdC0+aGVh
ZGluZ0xldmVsKCkgPT0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKTsKICAg
ICAgICAgCi0gICAgY2FzZSBIZWFkaW5nU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6SGVhZGluZzoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0hlYWRpbmco
KTsKICAgICAKLSAgICBjYXNlIEhpZ2hsaWdodGVkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6SGlnaGxpZ2h0ZWQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
aGFzSGlnaGxpZ2h0aW5nKCk7CiAgICAgICAgICAgICAKLSAgICBjYXNlIEl0YWxpY0ZvbnRTZWFy
Y2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpJdGFsaWNGb250OgogICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPmhhc0l0YWxpY0ZvbnQoKTsKICAgICAgICAgCi0gICAgY2Fz
ZSBMYW5kbWFya1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okxh
bmRtYXJrOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzTGFuZG1hcmsoKTsKICAgICAgICAg
Ci0gICAgY2FzZSBMaW5rU2VhcmNoS2V5OiB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5OjpMaW5rOiB7CiAgICAgICAgIGJvb2wgaXNMaW5rID0gYXhPYmplY3QtPmlzTGluaygpOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKCFpc0xpbmspCi0gICAgICAgICAgICBpc0xp
bmsgPSBheE9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKFdlYkNvcmVMaW5rUm9sZSk7CisgICAg
ICAgICAgICBpc0xpbmsgPSBheE9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxp
dHlSb2xlOjpXZWJDb3JlTGluayk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIGlzTGluazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgTGlzdFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6Okxpc3Q6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNMaXN0KCk7
CiAgICAgICAgIAotICAgIGNhc2UgTGl2ZVJlZ2lvblNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkxpdmVSZWdpb246CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
c3VwcG9ydHNBUklBTGl2ZVJlZ2lvbigpOwogICAgICAgICAKLSAgICBjYXNlIE1pc3NwZWxsZWRX
b3JkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6TWlzc3BlbGxl
ZFdvcmQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzTWlzc3BlbGxpbmcoKTsKICAgICAg
ICAgCi0gICAgY2FzZSBPdXRsaW5lU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6T3V0bGluZToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1RyZWUoKTsKICAg
ICAgICAgCi0gICAgY2FzZSBQbGFpblRleHRTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpQbGFpblRleHQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzUGxh
aW5UZXh0KCk7CiAgICAgICAgIAotICAgIGNhc2UgUmFkaW9Hcm91cFNlYXJjaEtleToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlJhZGlvR3JvdXA6CiAgICAgICAgIHJldHVybiBh
eE9iamVjdC0+aXNSYWRpb0dyb3VwKCk7CiAgICAgICAgIAotICAgIGNhc2UgU2FtZVR5cGVTZWFy
Y2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTYW1lVHlwZToKICAgICAg
ICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgYXhPYmplY3Qt
PnJvbGVWYWx1ZSgpID09IGNyaXRlcmlhLT5zdGFydE9iamVjdC0+cm9sZVZhbHVlKCk7CiAgICAg
ICAgIAotICAgIGNhc2UgU3RhdGljVGV4dFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OlN0YXRpY1RleHQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNTdGF0
aWNUZXh0KCk7CiAgICAgICAgIAotICAgIGNhc2UgU3R5bGVDaGFuZ2VTZWFyY2hLZXk6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTdHlsZUNoYW5nZToKICAgICAgICAgcmV0dXJu
IGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5oYXNTYW1l
U3R5bGUoY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKICAgICAgICAgCi0gICAg
Y2FzZSBUYWJsZVNhbWVMZXZlbFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk6OlRhYmxlU2FtZUxldmVsOgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2Jq
ZWN0CiAgICAgICAgICAgICAmJiBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkgJiYg
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpLmlzRXhwb3NhYmxlVGhyb3Vn
aEFjY2Vzc2liaWxpdHkoKQogICAgICAgICAgICAgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlPigqYXhPYmplY3QpLnRhYmxlTGV2ZWwoKSA9PSBjcml0ZXJpYS0+c3RhcnRPYmplY3QtPnRh
YmxlTGV2ZWwoKTsKICAgICAgICAgCi0gICAgY2FzZSBUYWJsZVNlYXJjaEtleToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlRhYmxlOgogICAgICAgICByZXR1cm4gaXM8QWNjZXNz
aWJpbGl0eVRhYmxlPigqYXhPYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
KmF4T2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiAgICAgICAgIAot
ICAgIGNhc2UgVGV4dEZpZWxkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6VGV4dEZpZWxkOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVGV4dENvbnRyb2wo
KTsKICAgICAgICAgCi0gICAgY2FzZSBVbmRlcmxpbmVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
aGFzVW5kZXJsaW5lKCk7CiAgICAgICAgIAotICAgIGNhc2UgVW52aXNpdGVkTGlua1NlYXJjaEtl
eToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlVudmlzaXRlZExpbms6CiAgICAg
ICAgIHJldHVybiBheE9iamVjdC0+aXNVbnZpc2l0ZWQoKTsKICAgICAgICAgCi0gICAgY2FzZSBW
aXNpdGVkTGlua1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlZp
c2l0ZWRMaW5rOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVmlzaXRlZCgpOwogICAgICAg
ICAKICAgICBkZWZhdWx0OgpAQCAtMzEyLDUxICsyOTgsNTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY2Nlc3NpYmxlTmFtZQogewogICAgIC8vIEZpcnN0IGNoZWNrIGZvciBvYmplY3Rz
IHNwZWNpZmljYWxseSBpZGVudGlmaWVkIGJ5IEFSSUEuCiAgICAgc3dpdGNoIChhcmlhUm9sZUF0
dHJpYnV0ZSgpKSB7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKLSAgICBjYXNlIEFw
cGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xl
OgotICAgIGNhc2UgQXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkxv
Z1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgotICAgIGNhc2UgQXBwbGlj
YXRpb25TdGF0dXNSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0gICAgY2Fz
ZSBDb21ib0JveFJvbGU6Ci0gICAgY2FzZSBEZWZpbml0aW9uUm9sZToKLSAgICBjYXNlIERvY3Vt
ZW50Um9sZToKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgY2FzZSBEb2N1bWVu
dE1hdGhSb2xlOgotICAgIGNhc2UgRG9jdW1lbnROb3RlUm9sZToKLSAgICBjYXNlIExhbmRtYXJr
UmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrRG9jUmVnaW9uUm9sZToKLSAgICBjYXNlIEZv
cm1Sb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBHcm91cFJvbGU6Ci0gICAgY2Fz
ZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBMaXN0Um9sZToKLSAgICBjYXNlIExpc3RCb3hSb2xlOgot
ICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50
YXJ5Um9sZToKLSAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAgIGNhc2UgTGFu
ZG1hcmtOYXZpZ2F0aW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya1NlYXJjaFJvbGU6Ci0gICAgY2FzZSBNZW51Um9sZToKLSAgICBjYXNlIE1lbnVC
YXJSb2xlOgotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgotICAgIGNhc2UgUmFkaW9H
cm91cFJvbGU6Ci0gICAgY2FzZSBTY3JvbGxCYXJSb2xlOgotICAgIGNhc2UgU2xpZGVyUm9sZToK
LSAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgotICAgIGNhc2UgU3BsaXR0ZXJSb2xlOgotICAgIGNh
c2UgVGFibGVSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2FzZSBUYWJQYW5lbFJv
bGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAgY2FzZSBUZXh0RmllbGRSb2xlOgotICAg
IGNhc2UgVG9vbGJhclJvbGU6Ci0gICAgY2FzZSBUcmVlR3JpZFJvbGU6Ci0gICAgY2FzZSBUcmVl
Um9sZToKLSAgICBjYXNlIFdlYkFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uQWxlcnREaWFsb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25EaWFsb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91
cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25UaW1lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0Jv
eDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm06
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm86CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a1NlYXJjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJv
Z3Jlc3NJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFibGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlz
dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0
RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
cmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0zNjQsNyAr
MzUwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmxlTmFtZQogICAgIAog
ICAgIC8vIE5vdyBjaGVjayBmb3IgZ2VuZXJpY2FsbHkgZGVyaXZlZCBlbGVtZW50cyBub3cgdGhh
dCB3ZSBrbm93IHRoZSBlbGVtZW50IGRvZXMgbm90IG1hdGNoIGEgc3BlY2lmaWMgQVJJQSByb2xl
LgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIFNsaWRlclJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0zODgsMTYgKzM3NCwxNiBAQCBTdHJpbmcg
QWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRMYWJlCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNCbG9ja3F1b3RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QmxvY2txdW90ZVJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpCbG9ja3F1b3RlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENv
bnRyb2woKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIENv
bWJvQm94Um9sZToKLSAgICBjYXNlIFNlYXJjaEZpZWxkUm9sZToKLSAgICBjYXNlIFRleHRBcmVh
Um9sZToKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGV4dEZpZWxkOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDYsNyArMzkyLDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1RleHRDb250cm9sKAogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFyaWFSb2xlQXR0cmli
dXRlKCkgPT0gVGV4dEFyZWFSb2xlIHx8IGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gVGV4dEZpZWxk
Um9sZSB8fCBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFNlYXJjaEZpZWxkUm9sZTsKKyAgICByZXR1
cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgfHwg
YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkIHx8IGFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOwogfQog
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSBjb25z
dApAQCAtNDE4LDE0ICs0MDQsMTQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhbmRt
YXJrKCkgYwogewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKICAg
ICAKLSAgICByZXR1cm4gcm9sZSA9PSBMYW5kbWFya0Jhbm5lclJvbGUKLSAgICAgICAgfHwgcm9s
ZSA9PSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTGFuZG1h
cmtDb250ZW50SW5mb1JvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya0RvY1JlZ2lvblJv
bGUKLSAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya01haW5Sb2xlCi0gICAgICAgIHx8IHJvbGUg
PT0gTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZQotICAgICAgICB8fCByb2xlID09IExhbmRtYXJrUmVn
aW9uUm9sZQotICAgICAgICB8fCByb2xlID09IExhbmRtYXJrU2VhcmNoUm9sZTsKKyAgICByZXR1
cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXIKKyAgICAgICAgfHwg
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5CisgICAgICAg
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm8KKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24KKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluCisgICAgICAgIHx8
IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbgorICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbgorICAgICAgICB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaDsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZygpIGNvbnN0CkBAIC02NzcsNyArNjYzLDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYgogICAgIGlmICghc3Rh
cnRPYmplY3QpCiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gdGhpczsKICAgICAKLSAgICBib29sIGlz
Rm9yd2FyZCA9IGNyaXRlcmlhLT5zZWFyY2hEaXJlY3Rpb24gPT0gU2VhcmNoRGlyZWN0aW9uTmV4
dDsKKyAgICBib29sIGlzRm9yd2FyZCA9IGNyaXRlcmlhLT5zZWFyY2hEaXJlY3Rpb24gPT0gQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dDsKICAgICAKICAgICAvLyBUaGUgZmlyc3Qg
aXRlcmF0aW9uIG9mIHRoZSBvdXRlciBsb29wIHdpbGwgZXhhbWluZSB0aGUgY2hpbGRyZW4gb2Yg
dGhlIHN0YXJ0IG9iamVjdCBmb3IgbWF0Y2hlcy4gSG93ZXZlciwgd2hlbgogICAgIC8vIGl0ZXJh
dGluZyBiYWNrd2FyZHMsIHRoZSBzdGFydCBvYmplY3QgY2hpbGRyZW4gc2hvdWxkIG5vdCBiZSBj
b25zaWRlcmVkLCBzbyB0aGUgbG9vcCBpcyBza2lwcGVkIGFoZWFkLiBXZSBtYWtlIGFuCkBAIC03
NjAsNyArNzQ2LDcgQEAgUmVmUHRyPFJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYW5nZQog
ICAgIGlmICghcmVmZXJlbmNlUmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAot
ICAgIGJvb2wgaXNCYWNrd2FyZFNlYXJjaCA9IHNlYXJjaERpcmVjdGlvbiA9PSBTZWFyY2hEaXJl
Y3Rpb25QcmV2aW91czsKKyAgICBib29sIGlzQmFja3dhcmRTZWFyY2ggPSBzZWFyY2hEaXJlY3Rp
b24gPT0gQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6UHJldmlvdXM7CiAgICAgRmluZE9w
dGlvbnMgZmluZE9wdGlvbnMgPSBBdFdvcmRTdGFydHMgfCBBdFdvcmRFbmRzIHwgQ2FzZUluc2Vu
c2l0aXZlIHwgU3RhcnRJblNlbGVjdGlvbjsKICAgICBpZiAoaXNCYWNrd2FyZFNlYXJjaCkKICAg
ICAgICAgZmluZE9wdGlvbnMgfD0gQmFja3dhcmRzOwpAQCAtODMyLDExICs4MTgsMTEgQEAgU3Ry
aW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQQogICAgIFJlZlB0cjxSYW5nZT4g
Y2xvc2VzdEFmdGVyU3RyaW5nUmFuZ2UgPSBudWxscHRyOwogICAgIFJlZlB0cjxSYW5nZT4gY2xv
c2VzdEJlZm9yZVN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICAvLyBTZWFyY2ggZm9yd2FyZCBp
ZiBuZWNlc3NhcnkuCi0gICAgaWYgKGFtYmlndWl0eVJlc29sdXRpb24gPT0gQ2xvc2VzdEFmdGVy
U2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbiB8fCBhbWJpZ3VpdHlSZXNvbHV0aW9uID09IENs
b3Nlc3RUb1NlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24pCi0gICAgICAgIGNsb3Nlc3RBZnRl
clN0cmluZ1JhbmdlID0gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oc2Vs
ZWN0ZWRTdHJpbmdSYW5nZS5nZXQoKSwgU2VhcmNoRGlyZWN0aW9uTmV4dCwgc2VhcmNoU3RyaW5n
cyk7CisgICAgaWYgKGFtYmlndWl0eVJlc29sdXRpb24gPT0gQWNjZXNzaWJpbGl0eVNlbGVjdFRl
eHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0QWZ0ZXIgfHwgYW1iaWd1aXR5UmVzb2x1dGlv
biA9PSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RU
bykKKyAgICAgICAgY2xvc2VzdEFmdGVyU3RyaW5nUmFuZ2UgPSByYW5nZU9mU3RyaW5nQ2xvc2Vz
dFRvUmFuZ2VJbkRpcmVjdGlvbihzZWxlY3RlZFN0cmluZ1JhbmdlLmdldCgpLCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uOjpOZXh0LCBzZWFyY2hTdHJpbmdzKTsKICAgICAvLyBTZWFyY2gg
YmFja3dhcmQgaWYgbmVjZXNzYXJ5LgotICAgIGlmIChhbWJpZ3VpdHlSZXNvbHV0aW9uID09IENs
b3Nlc3RCZWZvcmVTZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uIHx8IGFtYmlndWl0eVJlc29s
dXRpb24gPT0gQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbikKLSAgICAgICAg
Y2xvc2VzdEJlZm9yZVN0cmluZ1JhbmdlID0gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5E
aXJlY3Rpb24oc2VsZWN0ZWRTdHJpbmdSYW5nZS5nZXQoKSwgU2VhcmNoRGlyZWN0aW9uUHJldmlv
dXMsIHNlYXJjaFN0cmluZ3MpOworICAgIGlmIChhbWJpZ3VpdHlSZXNvbHV0aW9uID09IEFjY2Vz
c2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbjo6Q2xvc2VzdEJlZm9yZSB8fCBh
bWJpZ3VpdHlSZXNvbHV0aW9uID09IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVz
b2x1dGlvbjo6Q2xvc2VzdFRvKQorICAgICAgICBjbG9zZXN0QmVmb3JlU3RyaW5nUmFuZ2UgPSBy
YW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihzZWxlY3RlZFN0cmluZ1Jhbmdl
LmdldCgpLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91cywgc2VhcmNoU3Ry
aW5ncyk7CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGNhbmRpZGF0ZSBpcyBjbG9zZXN0
IHRvIHRoZSBzZWxlY3Rpb24gYW5kIHBlcmZvcm0gdGhlIGFjdGl2aXR5LgogICAgIGlmIChSZWZQ
dHI8UmFuZ2U+IGNsb3Nlc3RTdHJpbmdSYW5nZSA9IHJhbmdlQ2xvc2VzdFRvUmFuZ2Uoc2VsZWN0
ZWRTdHJpbmdSYW5nZS5nZXQoKSwgV1RGTW92ZShjbG9zZXN0QWZ0ZXJTdHJpbmdSYW5nZSksIFdU
Rk1vdmUoY2xvc2VzdEJlZm9yZVN0cmluZ1JhbmdlKSkpIHsKQEAgLTg1MCwyMCArODM2LDIwIEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RUZXh0KEEKICAgICAgICAgYm9vbCBy
ZXBsYWNlU2VsZWN0aW9uID0gZmFsc2U7CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0ZWRSYW5nZShjbG9zZXN0U3RyaW5nUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIHRy
dWUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGFjdGl2aXR5KSB7Ci0gICAgICAgICAgICBjYXNl
IEZpbmRBbmRDYXBpdGFsaXplOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0
VGV4dEFjdGl2aXR5OjpGaW5kQW5kQ2FwaXRhbGl6ZToKICAgICAgICAgICAgICAgICByZXBsYWNl
bWVudFN0cmluZyA9IGNsb3Nlc3RTdHJpbmc7CiAgICAgICAgICAgICAgICAgbWFrZUNhcGl0YWxp
emVkKCZyZXBsYWNlbWVudFN0cmluZywgMCk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZVNlbGVj
dGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZp
bmRBbmRVcHBlcmNhc2U6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0
QWN0aXZpdHk6OkZpbmRBbmRVcHBlcmNhc2U6CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRT
dHJpbmcgPSBjbG9zZXN0U3RyaW5nLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsg
Ly8gRklYTUU6IE5lZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgICAgICAg
ICByZXBsYWNlU2VsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgRmluZEFuZExvd2VyY2FzZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZExvd2VyY2FzZToKICAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudFN0cmluZyA9IGNsb3Nlc3RTdHJpbmcuY29udmVydFRvTG93ZXJjYXNlV2l0
aG91dExvY2FsZSgpOyAvLyBGSVhNRTogTmVlZHMgbG9jYWxlIHRvIHdvcmsgY29ycmVjdGx5Lgog
ICAgICAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBGaW5kQW5kUmVwbGFjZUFjdGl2aXR5OiB7CisgICAg
ICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRSZXBs
YWNlOiB7CiAgICAgICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbiA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgLy8gV2hlbiBhcHBseWluZyBmaW5kIGFuZCByZXBsYWNlIGFjdGl2aXRpZXMsIHdl
IHdhbnQgdG8gbWF0Y2ggdGhlIGNhcGl0YWxpemF0aW9uIG9mIHRoZSByZXBsYWNlZCB0ZXh0LAog
ICAgICAgICAgICAgICAgIC8vICh1bmxlc3Mgd2UncmUgcmVwbGFjaW5nIHdpdGggYW4gYWJicmV2
aWF0aW9uLikKQEAgLTg3NSw3ICs4NjEsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6
c2VsZWN0VGV4dChBCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBGaW5kQW5kU2VsZWN0QWN0aXZpdHk6Cisg
ICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRT
ZWxlY3Q6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTkxMiwyNCArODk4LDIzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQXR0
cmlidXRlc1IKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFJbnB1dChBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZSkKIHsKLSAgICByZXR1cm4gYXJpYVJvbGUgPT0gUmFkaW9CdXR0
b25Sb2xlIHx8IGFyaWFSb2xlID09IENoZWNrQm94Um9sZSB8fCBhcmlhUm9sZSA9PSBUZXh0Rmll
bGRSb2xlIHx8IGFyaWFSb2xlID09IFN3aXRjaFJvbGUgfHwgYXJpYVJvbGUgPT0gU2VhcmNoRmll
bGRSb2xlOworICAgIHJldHVybiBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9C
dXR0b24gfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94IHx8IGFyaWFS
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQgfHwgYXJpYVJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaCB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Vh
cmNoRmllbGQ7CiB9ICAgIAogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFD
b250cm9sKEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlKQogewotICAgIHJldHVybiBpc0FSSUFJ
bnB1dChhcmlhUm9sZSkgfHwgYXJpYVJvbGUgPT0gVGV4dEFyZWFSb2xlIHx8IGFyaWFSb2xlID09
IEJ1dHRvblJvbGUgCi0gICAgfHwgYXJpYVJvbGUgPT0gQ29tYm9Cb3hSb2xlIHx8IGFyaWFSb2xl
ID09IFNsaWRlclJvbGU7IAorICAgIHJldHVybiBpc0FSSUFJbnB1dChhcmlhUm9sZSkgfHwgYXJp
YVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhIHx8IGFyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpCdXR0b24gfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bWJvQm94IHx8IGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7CiB9CiAgICAg
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFuZ2VDb250cm9sKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6
Ci0gICAgY2FzZSBTbGlkZXJSb2xlOgotICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKLSAgICBjYXNl
IFNwaW5CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5k
aWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3BpbkJ1dHRvbjoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBTcGxpdHRlclJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CiAgICAgICAgIHJldHVybiBj
YW5TZXRGb2N1c0F0dHJpYnV0ZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0NTksNyArMTQ0NCw3IEBAIFZpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojp2aXMKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIAogICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXMuCi0gICAgSW50
UG9pbnQgY29ybmVyID0gKHZpc2libGVQb3NpdGlvbkZvckJvdW5kcyA9PSBGaXJzdFZpc2libGVQ
b3NpdGlvbkZvckJvdW5kcykgPyByZWN0Lm1pblhNaW5ZQ29ybmVyKCkgOiByZWN0Lm1heFhNYXhZ
Q29ybmVyKCk7CisgICAgSW50UG9pbnQgY29ybmVyID0gKHZpc2libGVQb3NpdGlvbkZvckJvdW5k
cyA9PSBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzOjpGaXJzdCkgPyByZWN0
Lm1pblhNaW5ZQ29ybmVyKCkgOiByZWN0Lm1heFhNYXhZQ29ybmVyKCk7CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uID0gbWFpbkZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb3Ju
ZXIpOwogICAgIAogICAgIGlmIChyZWN0LmNvbnRhaW5zKHBvc2l0aW9uLmFic29sdXRlQ2FyZXRC
b3VuZHMoKS5jZW50ZXIoKSkpCkBAIC0xNjUyLDI5ICsxNjM3LDI5IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c3VwcG9ydHNBUklBUmUKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
ID0gcm9sZVZhbHVlKCk7CiAKLSAgICByZXR1cm4gcm9sZSA9PSBDaGVja0JveFJvbGUKLSAgICAg
ICAgfHwgcm9sZSA9PSBDb2x1bW5IZWFkZXJSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gQ29tYm9C
b3hSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gR3JpZFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBH
cmlkQ2VsbFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBMaXN0Qm94Um9sZQotICAgICAgICB8fCBy
b2xlID09IE1lbnVJdGVtQ2hlY2tib3hSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTWVudUl0ZW1S
YWRpb1JvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBSYWRpb0dyb3VwUm9sZQotICAgICAgICB8fCBy
b2xlID09IFJvd0hlYWRlclJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBTZWFyY2hGaWVsZFJvbGUK
LSAgICAgICAgfHwgcm9sZSA9PSBTbGlkZXJSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gU3BpbkJ1
dHRvblJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBTd2l0Y2hSb2xlCi0gICAgICAgIHx8IHJvbGUg
PT0gVGV4dEZpZWxkUm9sZQotICAgICAgICB8fCByb2xlID09IFRyZWVHcmlkUm9sZQorICAgIHJl
dHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveAorICAgICAgICB8fCByb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIKKyAgICAgICAgfHwgcm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3gKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JpZAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
Q2VsbAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94CisgICAg
ICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3gKKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbworICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwCisgICAgICAgIHx8IHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcgorICAgICAgICB8fCByb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTbGlkZXIKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvbgorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2gKKyAg
ICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkCisgICAgICAgIHx8
IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkCiAgICAgICAgIHx8IGlzUGFzc3dv
cmRGaWVsZCgpOwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJlYWRPbmx5
VmFsdWUoKSBjb25zdAogewogICAgIGlmICghaGFzQXR0cmlidXRlKGFyaWFfcmVhZG9ubHlBdHRy
KSkKLSAgICAgICAgcmV0dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUgJiYg
c3VwcG9ydHNBUklBUmVhZE9ubHkoKSA/ICJmYWxzZSIgOiBTdHJpbmcoKTsKKyAgICAgICAgcmV0
dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gJiYg
c3VwcG9ydHNBUklBUmVhZE9ubHkoKSA/ICJmYWxzZSIgOiBTdHJpbmcoKTsKIAogICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoYXJpYV9yZWFkb25seUF0dHIpLnN0cmluZygpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCk7CiB9CkBAIC0xODkxLDcgKzE4NzYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3Qg
PSByZW5kZXJPYmplY3QtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShy
ZW5kZXJPYmplY3QpOwogICAgIAogICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlP
YmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpheE9iamVjdCwgdHJ1
ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewotICAgICAgICByZXR1
cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEhlYWRpbmdSb2xlOworICAgICAgICByZXR1cm4gb2Jq
ZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOwogICAgIH0pKTsK
IH0KIApAQCAtMTkwOSw3ICsxODk0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
VHJlZVJvd3MoQQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7
CiAgICAgICAgIC8vIEFkZCB0cmVlIGl0ZW1zIGFzIHRoZSByb3dzLgotICAgICAgICBpZiAoY2hp
bGQtPnJvbGVWYWx1ZSgpID09IFRyZWVJdGVtUm9sZSkKKyAgICAgICAgaWYgKGNoaWxkLT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNoaWxkKTsKIAogICAgICAgICAvLyBOb3cgc2VlIGlmIHRoaXMgaXRlbSBhbHNv
IGhhcyByb3dzIGhpZGluZyBpbnNpZGUgb2YgaXQuCkBAIC0xOTIxLDcgKzE5MDYsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbUNvCiB7CiAgICAgLy8gVGhlIEFSSUEg
dHJlZSBpdGVtIGNvbnRlbnQgYXJlIHRoZSBpdGVtIHRoYXQgYXJlIG5vdCBvdGhlciB0cmVlIGl0
ZW1zIG9yIHRoZWlyIGNvbnRhaW5pbmcgZ3JvdXBzLgogICAgIGZvciAoY29uc3QgYXV0byYgY2hp
bGQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmICghY2hpbGQtPmlzR3JvdXAoKSAmJiBjaGls
ZC0+cm9sZVZhbHVlKCkgIT0gVHJlZUl0ZW1Sb2xlKQorICAgICAgICBpZiAoIWNoaWxkLT5pc0dy
b3VwKCkgJiYgY2hpbGQtPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRl
bSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hpbGQpOwogICAgIH0KIH0KQEAgLTE5MzAs
NyArMTkxNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVJdGVtRGkKIHsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iaiA6IGNoaWxkcmVuKCkpIHsKICAgICAgICAgLy8gQWRk
IHRyZWUgaXRlbXMgYXMgdGhlIHJvd3MuCi0gICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpID09
IFRyZWVJdGVtUm9sZSkKKyAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWVJdGVtKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChvYmopOwogICAg
ICAgICAvLyBJZiBpdCdzIG5vdCBhIHRyZWUgaXRlbSwgdGhlbiBkZXNjZW5kIGludG8gdGhlIGdy
b3VwIHRvIGZpbmQgbW9yZSB0cmVlIGl0ZW1zLgogICAgICAgICBlbHNlIApAQCAtMTk0MSwxNCAr
MTkyNiwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURpCiBjb25z
dCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JS
b2xlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiB7CiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAg
Y2FzZSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFs
b2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKICAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXNzZXJ0aXZlIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlv
bkxvZ1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInBvbGl0
ZSIpOwotICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlv
bk1hcnF1ZWVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGlt
ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlOgogICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvZmYiKTsKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKQEAgLTE5NzEsMjUgKzE5NTYsMjUgQEAgY29uc3QgU3RyaW5nJiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY3RpbwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTdHJpbmc+IGxpc3RJdGVtQWN0aW9uKEFYTGlzdEl0ZW1BY3Rpb25WZXJiKCkpOwogCiAgICAg
c3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFRv
Z2dsZUJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuIGJ1
dHRvbkFjdGlvbjsKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgogICAgICAgICByZXR1cm4gdGV4dEZpZWxkQWN0aW9u
OwotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJhZGlvQnV0dG9uOgogICAgICAgICByZXR1cm4gcmFkaW9CdXR0b25BY3Rpb247Ci0gICAgY2Fz
ZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoK
ICAgICAgICAgcmV0dXJuIGlzQ2hlY2tlZCgpID8gY2hlY2tlZENoZWNrQm94QWN0aW9uIDogdW5j
aGVja2VkQ2hlY2tCb3hBY3Rpb247Ci0gICAgY2FzZSBMaW5rUm9sZToKLSAgICBjYXNlIFdlYkNv
cmVMaW5rUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5rOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOgogICAgICAgICByZXR1cm4gbGlua0FjdGlv
bjsKLSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpQb3BVcEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIG1lbnVMaXN0QWN0aW9uOwotICAgIGNhc2Ug
TWVudUxpc3RQb3B1cFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQ
b3B1cDoKICAgICAgICAgcmV0dXJuIG1lbnVMaXN0UG9wdXBBY3Rpb247Ci0gICAgY2FzZSBMaXN0
SXRlbVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAgICAgICAg
IHJldHVybiBsaXN0SXRlbUFjdGlvbjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVs
bEF0b20oKTsKQEAgLTIwNTIsNDAgKzIwMzcsNDAgQEAgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGUgQWNjZXNzaWJpbAogICAgIAogICAgIC8vIElmICJmYWxzZSIsIGVtcHR5LCBvciBtaXNz
aW5nLCByZXR1cm4gZmFsc2Ugc3RhdGUuCiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlLmlzRW1w
dHkoKSB8fCBjdXJyZW50U3RhdGVWYWx1ZSA9PSAiZmFsc2UiKQotICAgICAgICByZXR1cm4gQVJJ
QUN1cnJlbnRGYWxzZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0
YXRlOjpGYWxzZTsKICAgICAKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUgPT0gInBhZ2UiKQot
ICAgICAgICByZXR1cm4gQVJJQUN1cnJlbnRQYWdlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eUFSSUFDdXJyZW50U3RhdGU6OlBhZ2U7CiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09
ICJzdGVwIikKLSAgICAgICAgcmV0dXJuIEFSSUFDdXJyZW50U3RlcDsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpTdGVwOwogICAgIGlmIChjdXJyZW50U3Rh
dGVWYWx1ZSA9PSAibG9jYXRpb24iKQotICAgICAgICByZXR1cm4gQVJJQUN1cnJlbnRMb2NhdGlv
bjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpMb2NhdGlv
bjsKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUgPT0gImRhdGUiKQotICAgICAgICByZXR1cm4g
QVJJQUN1cnJlbnREYXRlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGU6OkRhdGU7CiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09ICJ0aW1lIikKLSAgICAg
ICAgcmV0dXJuIEFSSUFDdXJyZW50VGltZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlB
UklBQ3VycmVudFN0YXRlOjpUaW1lOwogICAgIAogICAgIC8vIEFueSB2YWx1ZSBub3QgaW5jbHVk
ZWQgaW4gdGhlIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgInRy
dWUiLgotICAgIHJldHVybiBBUklBQ3VycmVudFRydWU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlBUklBQ3VycmVudFN0YXRlOjpUcnVlOwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYUN1cnJlbnRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChhcmlhQ3VycmVudFN0
YXRlKCkpIHsKLSAgICBjYXNlIEFSSUFDdXJyZW50RmFsc2U6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5QVJJQUN1cnJlbnRTdGF0ZTo6RmFsc2U6CiAgICAgICAgIHJldHVybiAiZmFsc2UiOwotICAg
IGNhc2UgQVJJQUN1cnJlbnRQYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGU6OlBhZ2U6CiAgICAgICAgIHJldHVybiAicGFnZSI7Ci0gICAgY2FzZSBBUklBQ3VycmVu
dFN0ZXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6U3RlcDoKICAg
ICAgICAgcmV0dXJuICJzdGVwIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50TG9jYXRpb246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6TG9jYXRpb246CiAgICAgICAgIHJl
dHVybiAibG9jYXRpb24iOwotICAgIGNhc2UgQVJJQUN1cnJlbnRUaW1lOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU6CiAgICAgICAgIHJldHVybiAidGltZSI7
Ci0gICAgY2FzZSBBUklBQ3VycmVudERhdGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1
cnJlbnRTdGF0ZTo6RGF0ZToKICAgICAgICAgcmV0dXJuICJkYXRlIjsKICAgICBkZWZhdWx0Ogot
ICAgIGNhc2UgQVJJQUN1cnJlbnRUcnVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJy
ZW50U3RhdGU6OlRydWU6CiAgICAgICAgIHJldHVybiAidHJ1ZSI7CiAgICAgfQogfQpAQCAtMjE2
NCwxMSArMjE0OSwxMSBAQCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eU9i
CiB7CiAgICAgTGF5b3V0UmVjdCBib3VuZHMgPSBlbGVtZW50UmVjdCgpOwogICAgIGlmIChib3Vu
ZHMuc2l6ZSgpLndpZHRoKCkgPiBib3VuZHMuc2l6ZSgpLmhlaWdodCgpKQotICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICBpZiAoYm91bmRzLnNpemUo
KS5oZWlnaHQoKSA+IGJvdW5kcy5zaXplKCkud2lkdGgoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25VbmRlZmluZWQ7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5k
ZWZpbmVkOwogfSAgICAKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRP
Zk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKQEAgLTIy
MTYsMTE3ICsyMjAxLDExNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUm9sZU1hcCgpCiAgICAg
QVNTRVJUKCFnQXJpYVJldmVyc2VSb2xlTWFwKTsKIAogICAgIGNvbnN0IFJvbGVFbnRyeSByb2xl
c1tdID0gewotICAgICAgICB7ICJhbGVydCIsIEFwcGxpY2F0aW9uQWxlcnRSb2xlIH0sCi0gICAg
ICAgIHsgImFsZXJ0ZGlhbG9nIiwgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGUgfSwKLSAgICAg
ICAgeyAiYXBwbGljYXRpb24iLCBXZWJBcHBsaWNhdGlvblJvbGUgfSwKLSAgICAgICAgeyAiYXJ0
aWNsZSIsIERvY3VtZW50QXJ0aWNsZVJvbGUgfSwKLSAgICAgICAgeyAiYmFubmVyIiwgTGFuZG1h
cmtCYW5uZXJSb2xlIH0sCi0gICAgICAgIHsgImJ1dHRvbiIsIEJ1dHRvblJvbGUgfSwKLSAgICAg
ICAgeyAiY2hlY2tib3giLCBDaGVja0JveFJvbGUgfSwKLSAgICAgICAgeyAiY29tcGxlbWVudGFy
eSIsIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUgfSwKLSAgICAgICAgeyAiY29udGVudGluZm8i
LCBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZSB9LAotICAgICAgICB7ICJkaWFsb2ciLCBBcHBsaWNh
dGlvbkRpYWxvZ1JvbGUgfSwKLSAgICAgICAgeyAiZGlyZWN0b3J5IiwgRGlyZWN0b3J5Um9sZSB9
LAorICAgICAgICB7ICJhbGVydCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0
IH0sCisgICAgICAgIHsgImFsZXJ0ZGlhbG9nIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uQWxlcnREaWFsb2cgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24iLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6V2ViQXBwbGljYXRpb24gfSwKKyAgICAgICAgeyAiYXJ0aWNsZSIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudEFydGljbGUgfSwKKyAgICAgICAgeyAiYmFubmVyIiwgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyIH0sCisgICAgICAgIHsgImJ1dHRvbiIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXR0b24gfSwKKyAgICAgICAgeyAiY2hlY2tib3giLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q2hlY2tCb3ggfSwKKyAgICAgICAgeyAiY29tcGxlbWVudGFyeSIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnkgfSwKKyAgICAgICAgeyAiY29udGVudGluZm8i
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbyB9LAorICAgICAgICB7ICJk
aWFsb2ciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cgfSwKKyAgICAgICAg
eyAiZGlyZWN0b3J5IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSB9LAogICAgICAgICAv
LyBUaGUgJ2RvYy0qJyByb2xlcyBhcmUgZGVmaW5lZCB0aGUgQVJJQSBEUFVCIG1vYmlsZTogaHR0
cHM6Ly93d3cudzMub3JnL1RSL2RwdWItYWFtLTEuMC8gCiAgICAgICAgIC8vIEVkaXRvcidzIGRy
YWZ0IGlzIGN1cnJlbnRseSBhdCBodHRwczovL3Jhd2dpdC5jb20vdzNjL2FyaWEvbWFzdGVyL2Rw
dWItYWFtL2RwdWItYWFtLmh0bWwgCi0gICAgICAgIHsgImRvYy1hYnN0cmFjdCIsIEFwcGxpY2F0
aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtYWNrbm93bGVkZ21lbnRzIiwgTGFu
ZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1hZnRlcndvcmQiLCBMYW5kbWFy
a0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWFwcGVuZGl4IiwgTGFuZG1hcmtEb2NS
ZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1iYWNrbGluayIsIFdlYkNvcmVMaW5rUm9sZSB9
LAotICAgICAgICB7ICJkb2MtYmlibGlvZW50cnkiLCBMaXN0SXRlbVJvbGUgfSwKLSAgICAgICAg
eyAiZG9jLWJpYmxpb2dyYXBoeSIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7
ICJkb2MtYmlibGlvcmVmIiwgV2ViQ29yZUxpbmtSb2xlIH0sCi0gICAgICAgIHsgImRvYy1jaGFw
dGVyIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1jb2xvcGhvbiIs
IEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtY29uY2x1c2lvbiIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtY292ZXIiLCBJbWFnZVJv
bGUgfSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdCIsIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9
LAotICAgICAgICB7ICJkb2MtY3JlZGl0cyIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAg
ICAgICB7ICJkb2MtZGVkaWNhdGlvbiIsIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAg
ICAgICB7ICJkb2MtZW5kbm90ZSIsIExpc3RJdGVtUm9sZSB9LAotICAgICAgICB7ICJkb2MtZW5k
bm90ZXMiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWVwaWdyYXBo
IiwgQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1lcGlsb2d1ZSIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtZXJyYXRhIiwgTGFuZG1h
cmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1leGFtcGxlIiwgQXBwbGljYXRpb25U
ZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1mb290bm90ZSIsIEZvb3Rub3RlUm9sZSB9
LAotICAgICAgICB7ICJkb2MtZm9yZXdvcmQiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAg
ICAgICAgeyAiZG9jLWdsb3NzYXJ5IiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAg
IHsgImRvYy1nbG9zc3JlZiIsIFdlYkNvcmVMaW5rUm9sZSB9LAotICAgICAgICB7ICJkb2MtaW5k
ZXgiLCBMYW5kbWFya05hdmlnYXRpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1pbnRyb2R1Y3Rp
b24iLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLW5vdGVyZWYiLCBX
ZWJDb3JlTGlua1JvbGUgfSwKLSAgICAgICAgeyAiZG9jLW5vdGljZSIsIERvY3VtZW50Tm90ZVJv
bGUgfSwKLSAgICAgICAgeyAiZG9jLXBhZ2VicmVhayIsIFNwbGl0dGVyUm9sZSB9LAotICAgICAg
ICB7ICJkb2MtcGFnZWxpc3QiLCBMYW5kbWFya05hdmlnYXRpb25Sb2xlIH0sCi0gICAgICAgIHsg
ImRvYy1wYXJ0IiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1wcmVm
YWNlIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1wcm9sb2d1ZSIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtcHVsbHF1b3RlIiwgQXBw
bGljYXRpb25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1xbmEiLCBBcHBsaWNhdGlv
blRleHRHcm91cFJvbGUgfSwKLSAgICAgICAgeyAiZG9jLXN1YnRpdGxlIiwgSGVhZGluZ1JvbGUg
fSwKLSAgICAgICAgeyAiZG9jLXRpcCIsIERvY3VtZW50Tm90ZVJvbGUgfSwKLSAgICAgICAgeyAi
ZG9jLXRvYyIsIExhbmRtYXJrTmF2aWdhdGlvblJvbGUgfSwKLSAgICAgICAgeyAiZmlndXJlIiwg
RmlndXJlUm9sZSB9LAotICAgICAgICB7ICJncmlkIiwgR3JpZFJvbGUgfSwKLSAgICAgICAgeyAi
Z3JpZGNlbGwiLCBHcmlkQ2VsbFJvbGUgfSwKLSAgICAgICAgeyAidGFibGUiLCBUYWJsZVJvbGUg
fSwKLSAgICAgICAgeyAiY2VsbCIsIENlbGxSb2xlIH0sCi0gICAgICAgIHsgImNvbHVtbmhlYWRl
ciIsIENvbHVtbkhlYWRlclJvbGUgfSwKLSAgICAgICAgeyAiY29tYm9ib3giLCBDb21ib0JveFJv
bGUgfSwKLSAgICAgICAgeyAiZGVmaW5pdGlvbiIsIERlZmluaXRpb25Sb2xlIH0sCi0gICAgICAg
IHsgImRvY3VtZW50IiwgRG9jdW1lbnRSb2xlIH0sCi0gICAgICAgIHsgImZlZWQiLCBGZWVkUm9s
ZSB9LAotICAgICAgICB7ICJmb3JtIiwgRm9ybVJvbGUgfSwKLSAgICAgICAgeyAicm93aGVhZGVy
IiwgUm93SGVhZGVyUm9sZSB9LAotICAgICAgICB7ICJncm91cCIsIEFwcGxpY2F0aW9uR3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgImhlYWRpbmciLCBIZWFkaW5nUm9sZSB9LAotICAgICAgICB7ICJp
bWciLCBJbWFnZVJvbGUgfSwKLSAgICAgICAgeyAibGluayIsIFdlYkNvcmVMaW5rUm9sZSB9LAot
ICAgICAgICB7ICJsaXN0IiwgTGlzdFJvbGUgfSwgICAgICAgIAotICAgICAgICB7ICJsaXN0aXRl
bSIsIExpc3RJdGVtUm9sZSB9LCAgICAgICAgCi0gICAgICAgIHsgImxpc3Rib3giLCBMaXN0Qm94
Um9sZSB9LAotICAgICAgICB7ICJsb2ciLCBBcHBsaWNhdGlvbkxvZ1JvbGUgfSwKLSAgICAgICAg
eyAibWFpbiIsIExhbmRtYXJrTWFpblJvbGUgfSwKLSAgICAgICAgeyAibWFycXVlZSIsIEFwcGxp
Y2F0aW9uTWFycXVlZVJvbGUgfSwKLSAgICAgICAgeyAibWF0aCIsIERvY3VtZW50TWF0aFJvbGUg
fSwKLSAgICAgICAgeyAibWVudSIsIE1lbnVSb2xlIH0sCi0gICAgICAgIHsgIm1lbnViYXIiLCBN
ZW51QmFyUm9sZSB9LAotICAgICAgICB7ICJtZW51aXRlbSIsIE1lbnVJdGVtUm9sZSB9LAotICAg
ICAgICB7ICJtZW51aXRlbWNoZWNrYm94IiwgTWVudUl0ZW1DaGVja2JveFJvbGUgfSwKLSAgICAg
ICAgeyAibWVudWl0ZW1yYWRpbyIsIE1lbnVJdGVtUmFkaW9Sb2xlIH0sCi0gICAgICAgIHsgIm5v
bmUiLCBQcmVzZW50YXRpb25hbFJvbGUgfSwKLSAgICAgICAgeyAibm90ZSIsIERvY3VtZW50Tm90
ZVJvbGUgfSwKLSAgICAgICAgeyAibmF2aWdhdGlvbiIsIExhbmRtYXJrTmF2aWdhdGlvblJvbGUg
fSwKLSAgICAgICAgeyAib3B0aW9uIiwgTGlzdEJveE9wdGlvblJvbGUgfSwKLSAgICAgICAgeyAi
cHJlc2VudGF0aW9uIiwgUHJlc2VudGF0aW9uYWxSb2xlIH0sCi0gICAgICAgIHsgInByb2dyZXNz
YmFyIiwgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCi0gICAgICAgIHsgInJhZGlvIiwgUmFkaW9C
dXR0b25Sb2xlIH0sCi0gICAgICAgIHsgInJhZGlvZ3JvdXAiLCBSYWRpb0dyb3VwUm9sZSB9LAot
ICAgICAgICB7ICJyZWdpb24iLCBMYW5kbWFya1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAicm93
IiwgUm93Um9sZSB9LAotICAgICAgICB7ICJyb3dncm91cCIsIFJvd0dyb3VwUm9sZSB9LAotICAg
ICAgICB7ICJzY3JvbGxiYXIiLCBTY3JvbGxCYXJSb2xlIH0sCi0gICAgICAgIHsgInNlYXJjaCIs
IExhbmRtYXJrU2VhcmNoUm9sZSB9LAotICAgICAgICB7ICJzZWFyY2hib3giLCBTZWFyY2hGaWVs
ZFJvbGUgfSwKLSAgICAgICAgeyAic2VwYXJhdG9yIiwgU3BsaXR0ZXJSb2xlIH0sCi0gICAgICAg
IHsgInNsaWRlciIsIFNsaWRlclJvbGUgfSwKLSAgICAgICAgeyAic3BpbmJ1dHRvbiIsIFNwaW5C
dXR0b25Sb2xlIH0sCi0gICAgICAgIHsgInN0YXR1cyIsIEFwcGxpY2F0aW9uU3RhdHVzUm9sZSB9
LAotICAgICAgICB7ICJzd2l0Y2giLCBTd2l0Y2hSb2xlIH0sCi0gICAgICAgIHsgInRhYiIsIFRh
YlJvbGUgfSwKLSAgICAgICAgeyAidGFibGlzdCIsIFRhYkxpc3RSb2xlIH0sCi0gICAgICAgIHsg
InRhYnBhbmVsIiwgVGFiUGFuZWxSb2xlIH0sCi0gICAgICAgIHsgInRleHQiLCBTdGF0aWNUZXh0
Um9sZSB9LAotICAgICAgICB7ICJ0ZXh0Ym94IiwgVGV4dEFyZWFSb2xlIH0sCi0gICAgICAgIHsg
InRlcm0iLCBUZXJtUm9sZSB9LAotICAgICAgICB7ICJ0aW1lciIsIEFwcGxpY2F0aW9uVGltZXJS
b2xlIH0sCi0gICAgICAgIHsgInRvb2xiYXIiLCBUb29sYmFyUm9sZSB9LAotICAgICAgICB7ICJ0
b29sdGlwIiwgVXNlckludGVyZmFjZVRvb2x0aXBSb2xlIH0sCi0gICAgICAgIHsgInRyZWUiLCBU
cmVlUm9sZSB9LAotICAgICAgICB7ICJ0cmVlZ3JpZCIsIFRyZWVHcmlkUm9sZSB9LAotICAgICAg
ICB7ICJ0cmVlaXRlbSIsIFRyZWVJdGVtUm9sZSB9CisgICAgICAgIHsgImRvYy1hYnN0cmFjdCIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJk
b2MtYWNrbm93bGVkZ21lbnRzIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCisgICAgICAgIHsgImRvYy1hZnRlcndvcmQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWFwcGVuZGl4IiwgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1iYWNrbGluayIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2MtYmlibGlvZW50cnki
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb2dy
YXBoeSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7
ICJkb2MtYmlibGlvcmVmIiwgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAg
ICAgIHsgImRvYy1jaGFwdGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCisgICAgICAgIHsgImRvYy1jb2xvcGhvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY29uY2x1c2lvbiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtY292ZXIiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6SW1hZ2UgfSwKKyAgICAgICAgeyAiZG9jLWNyZWRpdCIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY3JlZGl0
cyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJk
b2MtZGVkaWNhdGlvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9
LAorICAgICAgICB7ICJkb2MtZW5kbm90ZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSB9
LAorICAgICAgICB7ICJkb2MtZW5kbm90ZXMiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtE
b2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWVwaWdyYXBoIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1lcGlsb2d1ZSIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZXJyYXRh
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRv
Yy1leGFtcGxlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisg
ICAgICAgIHsgImRvYy1mb290bm90ZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290bm90ZSB9LAor
ICAgICAgICB7ICJkb2MtZm9yZXdvcmQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NS
ZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWdsb3NzYXJ5IiwgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1nbG9zc3JlZiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2MtaW5kZXgiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCisgICAgICAgIHsgImRvYy1pbnRyb2R1Y3Rp
b24iLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAi
ZG9jLW5vdGVyZWYiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAg
eyAiZG9jLW5vdGljZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKKyAgICAg
ICAgeyAiZG9jLXBhZ2VicmVhayIsIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlciB9LAorICAg
ICAgICB7ICJkb2MtcGFnZWxpc3QiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0
aW9uIH0sCisgICAgICAgIHsgImRvYy1wYXJ0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
RG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wcmVmYWNlIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wcm9sb2d1ZSIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtcHVsbHF1b3Rl
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsg
ImRvYy1xbmEiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAg
ICAgICAgeyAiZG9jLXN1YnRpdGxlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKKyAg
ICAgICAgeyAiZG9jLXRpcCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKKyAg
ICAgICAgeyAiZG9jLXRvYyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24g
fSwKKyAgICAgICAgeyAiZmlndXJlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZSB9LAorICAg
ICAgICB7ICJncmlkIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQgfSwKKyAgICAgICAgeyAiZ3Jp
ZGNlbGwiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGwgfSwKKyAgICAgICAgeyAidGFibGUi
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGUgfSwKKyAgICAgICAgeyAiY2VsbCIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpDZWxsIH0sCisgICAgICAgIHsgImNvbHVtbmhlYWRlciIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpDb2x1bW5IZWFkZXIgfSwKKyAgICAgICAgeyAiY29tYm9ib3giLCBBY2Nlc3NpYmls
aXR5Um9sZTo6Q29tYm9Cb3ggfSwKKyAgICAgICAgeyAiZGVmaW5pdGlvbiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEZWZpbml0aW9uIH0sCisgICAgICAgIHsgImRvY3VtZW50IiwgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50IH0sCisgICAgICAgIHsgImZlZWQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
RmVlZCB9LAorICAgICAgICB7ICJmb3JtIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0gfSwKKyAg
ICAgICAgeyAicm93aGVhZGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB9LAorICAg
ICAgICB7ICJncm91cCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwIH0sCisg
ICAgICAgIHsgImhlYWRpbmciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAorICAgICAg
ICB7ICJpbWciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UgfSwKKyAgICAgICAgeyAibGluayIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJsaXN0IiwgQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3QgfSwKKyAgICAgICAgeyAibGlzdGl0ZW0iLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAibGlzdGJveCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0Qm94IH0sCisgICAgICAgIHsgImxvZyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvbkxvZyB9LAorICAgICAgICB7ICJtYWluIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrTWFpbiB9LAorICAgICAgICB7ICJtYXJxdWVlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uTWFycXVlZSB9LAorICAgICAgICB7ICJtYXRoIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aCB9LAorICAgICAgICB7ICJtZW51IiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUg
fSwKKyAgICAgICAgeyAibWVudWJhciIsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyIH0sCisg
ICAgICAgIHsgIm1lbnVpdGVtIiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtIH0sCisgICAg
ICAgIHsgIm1lbnVpdGVtY2hlY2tib3giLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVj
a2JveCB9LAorICAgICAgICB7ICJtZW51aXRlbXJhZGlvIiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtUmFkaW8gfSwKKyAgICAgICAgeyAibm9uZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVz
ZW50YXRpb25hbCB9LAorICAgICAgICB7ICJub3RlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3Vt
ZW50Tm90ZSB9LAorICAgICAgICB7ICJuYXZpZ2F0aW9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrTmF2aWdhdGlvbiB9LAorICAgICAgICB7ICJvcHRpb24iLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEJveE9wdGlvbiB9LAorICAgICAgICB7ICJwcmVzZW50YXRpb24iLCBBY2Nlc3NpYmls
aXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfSwKKyAgICAgICAgeyAicHJvZ3Jlc3NiYXIiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgfSwKKyAgICAgICAgeyAicmFkaW8iLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gfSwKKyAgICAgICAgeyAicmFkaW9ncm91cCIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwIH0sCisgICAgICAgIHsgInJlZ2lvbiIsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiB9LAorICAgICAgICB7ICJyb3ciLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93IH0sCisgICAgICAgIHsgInJvd2dyb3VwIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OlJvd0dyb3VwIH0sCisgICAgICAgIHsgInNjcm9sbGJhciIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpTY3JvbGxCYXIgfSwKKyAgICAgICAgeyAic2VhcmNoIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrU2VhcmNoIH0sCisgICAgICAgIHsgInNlYXJjaGJveCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpTZWFyY2hGaWVsZCB9LAorICAgICAgICB7ICJzZXBhcmF0b3IiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3BsaXR0ZXIgfSwKKyAgICAgICAgeyAic2xpZGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OlNsaWRlciB9LAorICAgICAgICB7ICJzcGluYnV0dG9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlNw
aW5CdXR0b24gfSwKKyAgICAgICAgeyAic3RhdHVzIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uU3RhdHVzIH0sCisgICAgICAgIHsgInN3aXRjaCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpT
d2l0Y2ggfSwKKyAgICAgICAgeyAidGFiIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYiB9LAorICAg
ICAgICB7ICJ0YWJsaXN0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QgfSwKKyAgICAgICAg
eyAidGFicGFuZWwiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwgfSwKKyAgICAgICAgeyAi
dGV4dCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0IH0sCisgICAgICAgIHsgInRleHRi
b3giLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgfSwKKyAgICAgICAgeyAidGVybSIsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXJtIH0sCisgICAgICAgIHsgInRpbWVyIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uVGltZXIgfSwKKyAgICAgICAgeyAidG9vbGJhciIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpUb29sYmFyIH0sCisgICAgICAgIHsgInRvb2x0aXAiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6VXNlckludGVyZmFjZVRvb2x0aXAgfSwKKyAgICAgICAgeyAidHJlZSIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlIH0sCisgICAgICAgIHsgInRyZWVncmlkIiwgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVHcmlkIH0sCisgICAgICAgIHsgInRyZWVpdGVtIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OlRyZWVJdGVtIH0KICAgICB9OwogCiAgICAgZ0FyaWFSb2xlTWFwID0gbmV3IEFSSUFSb2xlTWFw
OwpAQCAtMjMzNCw3ICsyMzE5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJvbGVNYXAoKQog
ICAgIHNpemVfdCByb2xlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChyb2xlcyk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByb2xlTGVuZ3RoOyArK2kpIHsKICAgICAgICAgZ0FyaWFSb2xl
TWFwLT5zZXQocm9sZXNbaV0uYXJpYVJvbGUsIHJvbGVzW2ldLndlYmNvcmVSb2xlKTsKLSAgICAg
ICAgZ0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0KHJvbGVzW2ldLndlYmNvcmVSb2xlLCByb2xlc1tp
XS5hcmlhUm9sZSk7CisgICAgICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAtPnNldChzdGF0aWNfY2Fz
dDxpbnQ+KHJvbGVzW2ldLndlYmNvcmVSb2xlKSwgcm9sZXNbaV0uYXJpYVJvbGUpOwogICAgIH0K
IH0KIApAQCAtMjM1NCwxMCArMjMzOSwxMSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOwogICAgIGZvciAo
YXV0byByb2xlTmFtZSA6IFN0cmluZ1ZpZXcodmFsdWUpLnNwbGl0KCcgJykpIHsKLSAgICAgICAg
aWYgKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBhcmlhUm9sZU1hcCgpLmdldDxBU0NJSUNhc2VJ
bnNlbnNpdGl2ZVN0cmluZ1ZpZXdIYXNoVHJhbnNsYXRvcj4ocm9sZU5hbWUpKQorICAgICAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVNYXAoKS5nZXQ8QVNDSUlDYXNlSW5zZW5z
aXRpdmVTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I+KHJvbGVOYW1lKTsKKyAgICAgICAgaWYgKHN0
YXRpY19jYXN0PGludD4ocm9sZSkpCiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICB9Ci0g
ICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bjsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkUm9sZVN0cmlu
ZygpIGNvbnN0CkBAIC0yMzY2LDIzICsyMzUyLDIzIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpjb21wdXRlZFJvbGUKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVl
KCk7CiAKICAgICAvLyBXZSBkbyBub3QgY29tcHV0ZSBhIHJvbGUgc3RyaW5nIGZvciBnZW5lcmlj
IGJsb2NrIGVsZW1lbnRzIHdpdGggdXNlci1hZ2VudCBhc3NpZ25lZCByb2xlcy4KLSAgICBpZiAo
cm9sZSA9PSBHcm91cFJvbGUgfHwgcm9sZSA9PSBUZXh0R3JvdXBSb2xlKQorICAgIGlmIChyb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpUZXh0R3JvdXApCiAgICAgICAgIHJldHVybiAiIjsKIAogICAgIC8vIFdlIGRvIGNvbXB1dGUg
YSByb2xlIHN0cmluZyBmb3IgYmxvY2sgZWxlbWVudHMgd2l0aCBhdXRob3ItcHJvdmlkZWQgcm9s
ZXMuCi0gICAgaWYgKHJvbGUgPT0gQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlIHx8IHJvbGUgPT0g
Rm9vdG5vdGVSb2xlKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KEFw
cGxpY2F0aW9uR3JvdXBSb2xlKTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25UZXh0R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5v
dGUpCisgICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8
aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCkpOwogCi0gICAgaWYgKHJv
bGUgPT0gSG9yaXpvbnRhbFJ1bGVSb2xlKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xl
TWFwKCkuZ2V0KFNwbGl0dGVyUm9sZSk7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6Okhvcml6b250YWxSdWxlKQorICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCku
Z2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyKSk7CiAKLSAg
ICBpZiAocm9sZSA9PSBQb3BVcEJ1dHRvblJvbGUgfHwgcm9sZSA9PSBUb2dnbGVCdXR0b25Sb2xl
KQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KEJ1dHRvblJvbGUpOwor
ICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiB8fCByb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b24pCisgICAgICAgIHJldHVybiByZXZlcnNl
QXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0
dG9uKSk7CiAKLSAgICBpZiAocm9sZSA9PSBMYW5kbWFya0RvY1JlZ2lvblJvbGUpCi0gICAgICAg
IHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoTGFuZG1hcmtSZWdpb25Sb2xlKTsKKyAg
ICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24pCisgICAg
ICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24pKTsKIAotICAgIHJldHVybiByZXZlcnNlQXJp
YVJvbGVNYXAoKS5nZXQocm9sZSk7CisgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdl
dChzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpoYXNIaWdobGlnaHRpbmcoKSBjb25zdApAQCAtMjQwOSw3ICsyMzk1LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1ByZXNzQQogewogICAgIGlmIChpc0J1dHRvbigpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gRGV0YWlsc1JvbGUp
CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50ID0gdGhp
cy0+YWN0aW9uRWxlbWVudCgpOwpAQCAtMjQyMiw4ICsyNDA4LDggQEAgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c1ByZXNzQQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHJlc3VsdHM7CiAgICAgICAgICAgICAvLyBTZWFyY2ggd2l0aGluIGZvciBpbW1l
ZGlhdGUgZGVzY2VuZGFudHMgdGhhdCBhcmUgc3RhdGljIHRleHQuIElmIHdlIGZpbmQgbW9yZSB0
aGFuIG9uZQogICAgICAgICAgICAgLy8gdGhlbiB0aGlzIGlzIGFuIGV2ZW50IGRlbGVnYXRvciBh
Y3Rpb25FbGVtZW50IGFuZCB3ZSBzaG91bGQgZXhwb3NlIHRoZSBwcmVzcyBhY3Rpb24uCi0gICAg
ICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4ga2V5cyh7IFN0YXRpY1RleHRT
ZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXksIEdyYXBoaWNTZWFyY2hLZXksIEhlYWRpbmdTZWFy
Y2hLZXksIExpbmtTZWFyY2hLZXkgfSk7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEgY3JpdGVyaWEoYXhPYmosIFNlYXJjaERpcmVjdGlvbk5leHQsIGVtcHR5U3RyaW5n
KCksIDIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNl
YXJjaEtleT4ga2V5cyh7IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlN0YXRpY1RleHQsIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkNvbnRyb2wsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkdyYXBo
aWMsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmcsIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXk6OkxpbmsgfSk7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3Jp
dGVyaWEoYXhPYmosIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQsIGVtcHR5U3Ry
aW5nKCksIDIsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlz
ID0ga2V5czsKICAgICAgICAgICAgIGF4T2JqLT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJp
YSwgcmVzdWx0cyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0cy5zaXplKCkgPiAxKQpAQCAtMjU5
NCwxOCArMjU4MCwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
CiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpzb3J0RGly
ZWN0aW9uKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVl
KCk7Ci0gICAgaWYgKHJvbGUgIT0gUm93SGVhZGVyUm9sZSAmJiByb2xlICE9IENvbHVtbkhlYWRl
clJvbGUpCi0gICAgICAgIHJldHVybiBTb3J0RGlyZWN0aW9uSW52YWxpZDsKKyAgICBpZiAocm9s
ZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkNvbHVtbkhlYWRlcikKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uOjpJbnZhbGlkOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3J0QXR0cmlidXRl
ID0gZ2V0QXR0cmlidXRlKGFyaWFfc29ydEF0dHIpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzb3J0QXR0cmlidXRlLCAiYXNjZW5kaW5nIikpCi0gICAgICAgIHJldHVy
biBTb3J0RGlyZWN0aW9uQXNjZW5kaW5nOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNv
cnREaXJlY3Rpb246OkFzY2VuZGluZzsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoc29ydEF0dHJpYnV0ZSwgImRlc2NlbmRpbmciKSkKLSAgICAgICAgcmV0dXJuIFNvcnRE
aXJlY3Rpb25EZXNjZW5kaW5nOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNvcnREaXJl
Y3Rpb246OkRlc2NlbmRpbmc7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHNvcnRBdHRyaWJ1dGUsICJvdGhlciIpKQotICAgICAgICByZXR1cm4gU29ydERpcmVjdGlvbk90
aGVyOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok90aGVyOwog
ICAgIAotICAgIHJldHVybiBTb3J0RGlyZWN0aW9uTm9uZTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVNvcnREaXJlY3Rpb246Ok5vbmU7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3QKQEAgLTI2OTUsOSArMjY4MSw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNFeHBhbmQKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZXhwYW5kZWQsICJ0cnVlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZXhwYW5kZWQsICJmYWxzZSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBz
d2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBDb21ib0JveFJvbGU6Ci0gICAgY2FzZSBE
aXNjbG9zdXJlVHJpYW5nbGVSb2xlOgotICAgIGNhc2UgRGV0YWlsc1JvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RGlzY2xvc3VyZVRyaWFuZ2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI3MTUsNyArMjcwMSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBh
bmRlZCgpIGMKICAgICAvLyBTdW1tYXJ5IGVsZW1lbnQgc2hvdWxkIHVzZSBpdHMgZGV0YWlscyBw
YXJlbnQncyBleHBhbmRlZCBzdGF0dXMuCiAgICAgaWYgKGlzU3VtbWFyeSgpKSB7CiAgICAgICAg
IGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgewotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9
PSBEZXRhaWxzUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM7CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0
dXJuIHBhcmVudC0+aXNFeHBhbmRlZCgpOwogICAgIH0KQEAgLTI3MjYsMTEgKzI3MTIsMTEgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0V4cGFuZGVkKCkgYwogYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c0NoZWNrZWQoKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZh
bHVlKCkpIHsKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2ti
b3hSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRv
blJvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTd2l0Y2g6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI3NDYsMjcgKzI3MzIsMjcgQEAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0
YXRlIEFjY2Vzc2liaWxpdHlPYgogICAgIGlmIChpc1RvZ2dsZUJ1dHRvbigpKSB7CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYVByZXNzZWQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9wcmVz
c2VkQXR0cik7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlh
UHJlc3NlZCwgInRydWUiKSkKLSAgICAgICAgICAgIHJldHVybiBCdXR0b25TdGF0ZU9uOworICAg
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T247CiAgICAgICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhUHJlc3NlZCwgIm1peGVkIikpCi0g
ICAgICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVNaXhlZDsKLSAgICAgICAgcmV0dXJuIEJ1dHRv
blN0YXRlT2ZmOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6
TWl4ZWQ7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjsKICAg
ICB9CiAgICAgCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZXN1bHQgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9jaGVja2VkQXR0cik7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHJlc3VsdCwgInRydWUiKSkKLSAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT247CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9uOwogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN1bHQsICJtaXhlZCIpKSB7CiAgICAgICAgIC8vIEFSSUEg
c2F5cyB0aGF0IHJhZGlvLCBtZW51aXRlbXJhZGlvLCBhbmQgc3dpdGNoIGVsZW1lbnRzIG11c3Qg
Tk9UIGV4cG9zZSBidXR0b24gc3RhdGUgbWl4ZWQuCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xl
IGFyaWFSb2xlID0gYXJpYVJvbGVBdHRyaWJ1dGUoKTsKLSAgICAgICAgaWYgKGFyaWFSb2xlID09
IFJhZGlvQnV0dG9uUm9sZSB8fCBhcmlhUm9sZSA9PSBNZW51SXRlbVJhZGlvUm9sZSB8fCBhcmlh
Um9sZSA9PSBTd2l0Y2hSb2xlKQotICAgICAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOwot
ICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVNaXhlZDsKKyAgICAgICAgaWYgKGFyaWFSb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbiB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6TWVudUl0ZW1SYWRpbyB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3dpdGNoKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2Zm
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpNaXhlZDsKICAgICB9
CiAgICAgCiAgICAgaWYgKGlzSW5kZXRlcm1pbmF0ZSgpKQotICAgICAgICByZXR1cm4gQnV0dG9u
U3RhdGVNaXhlZDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4
ZWQ7CiAgICAgCi0gICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjsKIH0KIAogLy8gVGhpcyBpcyBhIDEtZGltZW5zaW9uYWwg
c2Nyb2xsIG9mZnNldCBoZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGFwcGxpZWQKQEAgLTMwNjUsMzQg
KzMwNTEsMzIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxCeVBhZ2UoUwogICAg
IEludFNpemUgc2Nyb2xsU2l6ZSA9IHNjcm9sbGFibGVBcmVhLT5jb250ZW50c1NpemUoKTsKICAg
ICBJbnRSZWN0IHNjcm9sbFZpc2libGVSZWN0ID0gc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVDb250
ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7CiAg
ICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFJpZ2h0OiB7CisgICAgY2FzZSBTY3Jv
bGxCeVBhZ2VEaXJlY3Rpb246OlJpZ2h0OiB7CiAgICAgICAgIGludCBzY3JvbGxBbW91bnQgPSBz
Y3JvbGxWaXNpYmxlUmVjdC5zaXplKCkud2lkdGgoKTsKICAgICAgICAgaW50IG5ld1ggPSBzY3Jv
bGxQb3NpdGlvbi54KCkgLSBzY3JvbGxBbW91bnQ7CiAgICAgICAgIG5ld1Njcm9sbFBvc2l0aW9u
LnNldFgoc3RkOjptYXgobmV3WCwgMCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fz
ZSBMZWZ0OiB7CisgICAgY2FzZSBTY3JvbGxCeVBhZ2VEaXJlY3Rpb246OkxlZnQ6IHsKICAgICAg
ICAgaW50IHNjcm9sbEFtb3VudCA9IHNjcm9sbFZpc2libGVSZWN0LnNpemUoKS53aWR0aCgpOwog
ICAgICAgICBpbnQgbmV3WCA9IHNjcm9sbEFtb3VudCArIHNjcm9sbFBvc2l0aW9uLngoKTsKICAg
ICAgICAgaW50IG1heFggPSBzY3JvbGxTaXplLndpZHRoKCkgLSBzY3JvbGxBbW91bnQ7CiAgICAg
ICAgIG5ld1Njcm9sbFBvc2l0aW9uLnNldFgoc3RkOjptaW4obmV3WCwgbWF4WCkpOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBVcDogeworICAgIGNhc2UgU2Nyb2xsQnlQYWdlRGly
ZWN0aW9uOjpVcDogewogICAgICAgICBpbnQgc2Nyb2xsQW1vdW50ID0gc2Nyb2xsVmlzaWJsZVJl
Y3Quc2l6ZSgpLmhlaWdodCgpOwogICAgICAgICBpbnQgbmV3WSA9IHNjcm9sbFBvc2l0aW9uLnko
KSAtIHNjcm9sbEFtb3VudDsKICAgICAgICAgbmV3U2Nyb2xsUG9zaXRpb24uc2V0WShzdGQ6Om1h
eChuZXdZLCAwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIERvd246IHsKKyAg
ICBjYXNlIFNjcm9sbEJ5UGFnZURpcmVjdGlvbjo6RG93bjogewogICAgICAgICBpbnQgc2Nyb2xs
QW1vdW50ID0gc2Nyb2xsVmlzaWJsZVJlY3Quc2l6ZSgpLmhlaWdodCgpOwogICAgICAgICBpbnQg
bmV3WSA9IHNjcm9sbEFtb3VudCArIHNjcm9sbFBvc2l0aW9uLnkoKTsKICAgICAgICAgaW50IG1h
eFkgPSBzY3JvbGxTaXplLmhlaWdodCgpIC0gc2Nyb2xsQW1vdW50OwogICAgICAgICBuZXdTY3Jv
bGxQb3NpdGlvbi5zZXRZKHN0ZDo6bWluKG5ld1ksIG1heFkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBpZiAo
bmV3U2Nyb2xsUG9zaXRpb24gIT0gc2Nyb2xsUG9zaXRpb24pIHsKQEAgLTMxMDcsMTUgKzMwOTEs
MTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxCeVBhZ2UoUwogCiBib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkKIHsKLSAgICBpZiAo
bV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9PSBEZWZhdWx0QmVoYXZpb3IpCi0gICAgICAgIG1f
bGFzdEtub3duSXNJZ25vcmVkVmFsdWUgPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgPyBJZ25v
cmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworICAgIGlmIChtX2xhc3RLbm93bklzSWdub3JlZFZh
bHVlID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcikKKyAg
ICAgICAgbV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSA/IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3Q7CiAKLSAgICByZXR1cm4gbV9sYXN0
S25vd25Jc0lnbm9yZWRWYWx1ZSA9PSBJZ25vcmVPYmplY3Q7CisgICAgcmV0dXJuIG1fbGFzdEtu
b3duSXNJZ25vcmVkVmFsdWUgPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RLbm93bklzSWdu
b3JlZFZhbHVlKGJvb2wgaXNJZ25vcmVkKQogewotICAgIG1fbGFzdEtub3duSXNJZ25vcmVkVmFs
dWUgPSBpc0lnbm9yZWQgPyBJZ25vcmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworICAgIG1fbGFz
dEtub3duSXNJZ25vcmVkVmFsdWUgPSBpc0lnbm9yZWQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNs
dWRlT2JqZWN0OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdub3Jl
ZFZhbHVlQ2hhbmdlZCgpCkBAIC0zMTUxLDI1ICszMTM1LDI1IEBAIEFjY2Vzc2liaWxpdHlSb2xl
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmIKICAgICAvLyBJZiBhcmlhLXByZXNzZWQgaXMgcHJlc2Vu
dCwgdGhlbiBpdCBzaG91bGQgYmUgZXhwb3NlZCBhcyBhIHRvZ2dsZSBidXR0b24uCiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvc3RhdGVzX2FuZF9wcm9wZXJ0aWVzI2FyaWEt
cHJlc3NlZAogICAgIGlmIChhcmlhUHJlc3NlZElzUHJlc2VudCgpKQotICAgICAgICByZXR1cm4g
VG9nZ2xlQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dn
bGVCdXR0b247CiAgICAgaWYgKGFyaWFIYXNQb3B1cCgpKQotICAgICAgICByZXR1cm4gUG9wVXBC
dXR0b25Sb2xlOwotICAgIC8vIFdlIGRvbid0IGNvbnRlbXBsYXRlIFJhZGlvQnV0dG9uUm9sZSwg
YXMgaXQgZGVwZW5kcyBvbiB0aGUgaW5wdXQKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbjsKKyAgICAvLyBXZSBkb24ndCBjb250ZW1wbGF0ZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UmFkaW9CdXR0b24sIGFzIGl0IGRlcGVuZHMgb24gdGhlIGlucHV0CiAgICAgLy8g
dHlwZS4KIAotICAgIHJldHVybiBCdXR0b25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6QnV0dG9uOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQnV0dG9uKCkg
Y29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVlKCk7CiAKLSAg
ICByZXR1cm4gcm9sZSA9PSBCdXR0b25Sb2xlIHx8IHJvbGUgPT0gUG9wVXBCdXR0b25Sb2xlIHx8
IHJvbGUgPT0gVG9nZ2xlQnV0dG9uUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6QnV0dG9uIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjsKIH0KIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpID09IElnbm9yZU9iamVj
dDsKKyAgICByZXR1cm4gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpID09IEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKIH0KIAogLy8gQVJJQSBjb21wb25lbnQgb2Yg
aGlkZGVuIGRlZmluaXRpb24uCkBAIC0zMjEyLDEzICszMTk2LDEzIEBAIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGkKICAgICBib29sIHVzZVBhcmVudERhdGEgPSAhbV9p
c0lnbm9yZWRGcm9tUGFyZW50RGF0YS5pc051bGwoKTsKICAgICAKICAgICBpZiAodXNlUGFyZW50
RGF0YSA/IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEuaXNBUklBSGlkZGVuIDogaXNBUklBSGlk
ZGVuKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAgCiAgICAgaWYgKGln
bm9yZWRGcm9tQVJJQU1vZGFsUHJlc2VuY2UoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVj
dDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9i
amVjdDsKICAgICAKICAgICBpZiAodXNlUGFyZW50RGF0YSA/IG1faXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEuaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSA6IGlzUHJlc2VudGF0aW9uYWxD
aGlsZE9mQXJpYVJvbGUoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAK
ICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKTsKIH0KQEAg
LTMyMzMsMTEgKzMyMTcsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5SQogICAgIGlmIChhdHRyaWJ1dGVDYWNoZSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGlnbm9yZWQgPSBhdHRyaWJ1dGVDYWNoZS0+Z2V0SWdub3JlZChheE9iamVj
dElEKCkpOwogICAgICAgICBzd2l0Y2ggKGlnbm9yZWQpIHsKLSAgICAgICAgY2FzZSBJZ25vcmVP
YmplY3Q6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgSW5jbHVkZU9i
amVjdDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRl
T2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIERlZmF1bHRC
ZWhhdmlvcjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZh
dWx0QmVoYXZpb3I6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTMy
NDYsNyArMzIzMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUkK
IAogICAgIC8vIEluIGNhc2UgY29tcHV0aW5nIGF4SXNJZ25vcmVkIGRpc2FibGVzIGF0dHJpYnV0
ZSBjYWNoaW5nLCB3ZSBzaG91bGQgcmVmZXRjaCB0aGUgb2JqZWN0IHRvIHNlZSBpZiBpdCBleGlz
dHMuCiAgICAgaWYgKGNhY2hlICYmIChhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9i
amVjdEF0dHJpYnV0ZUNhY2hlKCkpKQotICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3Jl
ZChheE9iamVjdElEKCksIHJlc3VsdCA/IElnbm9yZU9iamVjdCA6IEluY2x1ZGVPYmplY3QpOwor
ICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChheE9iamVjdElEKCksIHJlc3VsdCA/
IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTMzNjksNyArMzM1Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250
YWluZWRCeVAKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IG5vZGUtPnNoYWRvd0hvc3QoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTg3ICs5Miwx
ODcgQEAgY2xhc3MgV2lkZ2V0OwogCiB0eXBlZGVmIHVuc2lnbmVkIEFYSUQ7CiAKLWVudW0gQWNj
ZXNzaWJpbGl0eVJvbGUgewotICAgIEFubm90YXRpb25Sb2xlID0gMSwKLSAgICBBcHBsaWNhdGlv
blJvbGUsCi0gICAgQXBwbGljYXRpb25BbGVydFJvbGUsCi0gICAgQXBwbGljYXRpb25BbGVydERp
YWxvZ1JvbGUsCi0gICAgQXBwbGljYXRpb25EaWFsb2dSb2xlLAotICAgIEFwcGxpY2F0aW9uR3Jv
dXBSb2xlLAotICAgIEFwcGxpY2F0aW9uTG9nUm9sZSwKLSAgICBBcHBsaWNhdGlvbk1hcnF1ZWVS
b2xlLAotICAgIEFwcGxpY2F0aW9uU3RhdHVzUm9sZSwKLSAgICBBcHBsaWNhdGlvblRleHRHcm91
cFJvbGUsCi0gICAgQXBwbGljYXRpb25UaW1lclJvbGUsCi0gICAgQXVkaW9Sb2xlLAotICAgIEJs
b2NrcXVvdGVSb2xlLAotICAgIEJyb3dzZXJSb2xlLAotICAgIEJ1c3lJbmRpY2F0b3JSb2xlLAot
ICAgIEJ1dHRvblJvbGUsCi0gICAgQ2FudmFzUm9sZSwKLSAgICBDYXB0aW9uUm9sZSwKLSAgICBD
ZWxsUm9sZSwgCi0gICAgQ2hlY2tCb3hSb2xlLAotICAgIENvbG9yV2VsbFJvbGUsCi0gICAgQ29s
dW1uUm9sZSwKLSAgICBDb2x1bW5IZWFkZXJSb2xlLAotICAgIENvbWJvQm94Um9sZSwKLSAgICBE
ZWZpbml0aW9uUm9sZSwKLSAgICBEZXNjcmlwdGlvbkxpc3RSb2xlLAotICAgIERlc2NyaXB0aW9u
TGlzdFRlcm1Sb2xlLAotICAgIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGUsCi0gICAgRGV0YWls
c1JvbGUsCi0gICAgRGlyZWN0b3J5Um9sZSwKLSAgICBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLAot
ICAgIERpdlJvbGUsCi0gICAgRG9jdW1lbnRSb2xlLAotICAgIERvY3VtZW50QXJ0aWNsZVJvbGUs
Ci0gICAgRG9jdW1lbnRNYXRoUm9sZSwKLSAgICBEb2N1bWVudE5vdGVSb2xlLAotICAgIERyYXdl
clJvbGUsCi0gICAgRWRpdGFibGVUZXh0Um9sZSwKLSAgICBGZWVkUm9sZSwKLSAgICBGaWd1cmVS
b2xlLAotICAgIEZvb3RlclJvbGUsCi0gICAgRm9vdG5vdGVSb2xlLAotICAgIEZvcm1Sb2xlLAot
ICAgIEdyaWRSb2xlLAotICAgIEdyaWRDZWxsUm9sZSwKLSAgICBHcm91cFJvbGUsCi0gICAgR3Jv
d0FyZWFSb2xlLAotICAgIEhlYWRpbmdSb2xlLAotICAgIEhlbHBUYWdSb2xlLAotICAgIEhvcml6
b250YWxSdWxlUm9sZSwKLSAgICBJZ25vcmVkUm9sZSwKLSAgICBJbmxpbmVSb2xlLAotICAgIElt
YWdlUm9sZSwKLSAgICBJbWFnZU1hcFJvbGUsCi0gICAgSW1hZ2VNYXBMaW5rUm9sZSwKLSAgICBJ
bmNyZW1lbnRvclJvbGUsCi0gICAgTGFiZWxSb2xlLAotICAgIExhbmRtYXJrQmFubmVyUm9sZSwK
LSAgICBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlLAotICAgIExhbmRtYXJrQ29udGVudEluZm9S
b2xlLAotICAgIExhbmRtYXJrRG9jUmVnaW9uUm9sZSwKLSAgICBMYW5kbWFya01haW5Sb2xlLAot
ICAgIExhbmRtYXJrTmF2aWdhdGlvblJvbGUsCi0gICAgTGFuZG1hcmtSZWdpb25Sb2xlLAotICAg
IExhbmRtYXJrU2VhcmNoUm9sZSwKLSAgICBMZWdlbmRSb2xlLAotICAgIExpbmtSb2xlLAotICAg
IExpc3RSb2xlLAotICAgIExpc3RCb3hSb2xlLAotICAgIExpc3RCb3hPcHRpb25Sb2xlLAotICAg
IExpc3RJdGVtUm9sZSwKLSAgICBMaXN0TWFya2VyUm9sZSwKLSAgICBNYXJrUm9sZSwKLSAgICBN
YXRoRWxlbWVudFJvbGUsCi0gICAgTWF0dGVSb2xlLAotICAgIE1lbnVSb2xlLAotICAgIE1lbnVC
YXJSb2xlLAotICAgIE1lbnVCdXR0b25Sb2xlLAotICAgIE1lbnVJdGVtUm9sZSwKLSAgICBNZW51
SXRlbUNoZWNrYm94Um9sZSwKLSAgICBNZW51SXRlbVJhZGlvUm9sZSwKLSAgICBNZW51TGlzdFBv
cHVwUm9sZSwKLSAgICBNZW51TGlzdE9wdGlvblJvbGUsCi0gICAgT3V0bGluZVJvbGUsCi0gICAg
UGFyYWdyYXBoUm9sZSwKLSAgICBQb3BVcEJ1dHRvblJvbGUsCi0gICAgUHJlUm9sZSwKLSAgICBQ
cmVzZW50YXRpb25hbFJvbGUsCi0gICAgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlLAotICAgIFJhZGlv
QnV0dG9uUm9sZSwKLSAgICBSYWRpb0dyb3VwUm9sZSwKLSAgICBSb3dIZWFkZXJSb2xlLAotICAg
IFJvd1JvbGUsCi0gICAgUm93R3JvdXBSb2xlLAotICAgIFJ1YnlCYXNlUm9sZSwKLSAgICBSdWJ5
QmxvY2tSb2xlLAotICAgIFJ1YnlJbmxpbmVSb2xlLAotICAgIFJ1YnlSdW5Sb2xlLAotICAgIFJ1
YnlUZXh0Um9sZSwKLSAgICBSdWxlclJvbGUsCi0gICAgUnVsZXJNYXJrZXJSb2xlLAotICAgIFNj
cm9sbEFyZWFSb2xlLAotICAgIFNjcm9sbEJhclJvbGUsCi0gICAgU2VhcmNoRmllbGRSb2xlLAot
ICAgIFNoZWV0Um9sZSwKLSAgICBTbGlkZXJSb2xlLAotICAgIFNsaWRlclRodW1iUm9sZSwKLSAg
ICBTcGluQnV0dG9uUm9sZSwKLSAgICBTcGluQnV0dG9uUGFydFJvbGUsCi0gICAgU3BsaXRHcm91
cFJvbGUsCi0gICAgU3BsaXR0ZXJSb2xlLAotICAgIFN0YXRpY1RleHRSb2xlLAotICAgIFN1bW1h
cnlSb2xlLAotICAgIFN3aXRjaFJvbGUsCi0gICAgU3lzdGVtV2lkZVJvbGUsCi0gICAgU1ZHUm9v
dFJvbGUsCi0gICAgU1ZHVGV4dFJvbGUsCi0gICAgU1ZHVFNwYW5Sb2xlLAotICAgIFNWR1RleHRQ
YXRoUm9sZSwKLSAgICBUYWJHcm91cFJvbGUsCi0gICAgVGFiTGlzdFJvbGUsCi0gICAgVGFiUGFu
ZWxSb2xlLCAgICAgICAgICAgIAotICAgIFRhYlJvbGUsCi0gICAgVGFibGVSb2xlLAotICAgIFRh
YmxlSGVhZGVyQ29udGFpbmVyUm9sZSwKLSAgICBUZXh0QXJlYVJvbGUsCi0gICAgVGV4dEdyb3Vw
Um9sZSwKLSAgICBUZXJtUm9sZSwKLSAgICBUaW1lUm9sZSwKLSAgICBUcmVlUm9sZSwKLSAgICBU
cmVlR3JpZFJvbGUsCi0gICAgVHJlZUl0ZW1Sb2xlLAotICAgIFRleHRGaWVsZFJvbGUsCi0gICAg
VG9nZ2xlQnV0dG9uUm9sZSwKLSAgICBUb29sYmFyUm9sZSwKLSAgICBVbmtub3duUm9sZSwKLSAg
ICBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGUsCi0gICAgVmFsdWVJbmRpY2F0b3JSb2xlLAotICAg
IFZpZGVvUm9sZSwKLSAgICBXZWJBcHBsaWNhdGlvblJvbGUsCi0gICAgV2ViQXJlYVJvbGUsCi0g
ICAgV2ViQ29yZUxpbmtSb2xlLAotICAgIFdpbmRvd1JvbGUsCitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlSb2xlIHsKKyAgICBBbm5vdGF0aW9uID0gMSwKKyAgICBBcHBsaWNhdGlvbiwKKyAgICBB
cHBsaWNhdGlvbkFsZXJ0LAorICAgIEFwcGxpY2F0aW9uQWxlcnREaWFsb2csCisgICAgQXBwbGlj
YXRpb25EaWFsb2csCisgICAgQXBwbGljYXRpb25Hcm91cCwKKyAgICBBcHBsaWNhdGlvbkxvZywK
KyAgICBBcHBsaWNhdGlvbk1hcnF1ZWUsCisgICAgQXBwbGljYXRpb25TdGF0dXMsCisgICAgQXBw
bGljYXRpb25UZXh0R3JvdXAsCisgICAgQXBwbGljYXRpb25UaW1lciwKKyAgICBBdWRpbywKKyAg
ICBCbG9ja3F1b3RlLAorICAgIEJyb3dzZXIsCisgICAgQnVzeUluZGljYXRvciwKKyAgICBCdXR0
b24sCisgICAgQ2FudmFzLAorICAgIENhcHRpb24sCisgICAgQ2VsbCwKKyAgICBDaGVja0JveCwK
KyAgICBDb2xvcldlbGwsCisgICAgQ29sdW1uLAorICAgIENvbHVtbkhlYWRlciwKKyAgICBDb21i
b0JveCwKKyAgICBEZWZpbml0aW9uLAorICAgIERlc2NyaXB0aW9uTGlzdCwKKyAgICBEZXNjcmlw
dGlvbkxpc3RUZXJtLAorICAgIERlc2NyaXB0aW9uTGlzdERldGFpbCwKKyAgICBEZXRhaWxzLAor
ICAgIERpcmVjdG9yeSwKKyAgICBEaXNjbG9zdXJlVHJpYW5nbGUsCisgICAgRGl2LAorICAgIERv
Y3VtZW50LAorICAgIERvY3VtZW50QXJ0aWNsZSwKKyAgICBEb2N1bWVudE1hdGgsCisgICAgRG9j
dW1lbnROb3RlLAorICAgIERyYXdlciwKKyAgICBFZGl0YWJsZVRleHQsCisgICAgRmVlZCwKKyAg
ICBGaWd1cmUsCisgICAgRm9vdGVyLAorICAgIEZvb3Rub3RlLAorICAgIEZvcm0sCisgICAgR3Jp
ZCwKKyAgICBHcmlkQ2VsbCwKKyAgICBHcm91cCwKKyAgICBHcm93QXJlYSwKKyAgICBIZWFkaW5n
LAorICAgIEhlbHBUYWcsCisgICAgSG9yaXpvbnRhbFJ1bGUsCisgICAgSWdub3JlZCwKKyAgICBJ
bmxpbmUsCisgICAgSW1hZ2UsCisgICAgSW1hZ2VNYXAsCisgICAgSW1hZ2VNYXBMaW5rLAorICAg
IEluY3JlbWVudG9yLAorICAgIExhYmVsLAorICAgIExhbmRtYXJrQmFubmVyLAorICAgIExhbmRt
YXJrQ29tcGxlbWVudGFyeSwKKyAgICBMYW5kbWFya0NvbnRlbnRJbmZvLAorICAgIExhbmRtYXJr
RG9jUmVnaW9uLAorICAgIExhbmRtYXJrTWFpbiwKKyAgICBMYW5kbWFya05hdmlnYXRpb24sCisg
ICAgTGFuZG1hcmtSZWdpb24sCisgICAgTGFuZG1hcmtTZWFyY2gsCisgICAgTGVnZW5kLAorICAg
IExpbmssCisgICAgTGlzdCwKKyAgICBMaXN0Qm94LAorICAgIExpc3RCb3hPcHRpb24sCisgICAg
TGlzdEl0ZW0sCisgICAgTGlzdE1hcmtlciwKKyAgICBNYXJrLAorICAgIE1hdGhFbGVtZW50LAor
ICAgIE1hdHRlLAorICAgIE1lbnUsCisgICAgTWVudUJhciwKKyAgICBNZW51QnV0dG9uLAorICAg
IE1lbnVJdGVtLAorICAgIE1lbnVJdGVtQ2hlY2tib3gsCisgICAgTWVudUl0ZW1SYWRpbywKKyAg
ICBNZW51TGlzdFBvcHVwLAorICAgIE1lbnVMaXN0T3B0aW9uLAorICAgIE91dGxpbmUsCisgICAg
UGFyYWdyYXBoLAorICAgIFBvcFVwQnV0dG9uLAorICAgIFByZSwKKyAgICBQcmVzZW50YXRpb25h
bCwKKyAgICBQcm9ncmVzc0luZGljYXRvciwKKyAgICBSYWRpb0J1dHRvbiwKKyAgICBSYWRpb0dy
b3VwLAorICAgIFJvd0hlYWRlciwKKyAgICBSb3csCisgICAgUm93R3JvdXAsCisgICAgUnVieUJh
c2UsCisgICAgUnVieUJsb2NrLAorICAgIFJ1YnlJbmxpbmUsCisgICAgUnVieVJ1biwKKyAgICBS
dWJ5VGV4dCwKKyAgICBSdWxlciwKKyAgICBSdWxlck1hcmtlciwKKyAgICBTY3JvbGxBcmVhLAor
ICAgIFNjcm9sbEJhciwKKyAgICBTZWFyY2hGaWVsZCwKKyAgICBTaGVldCwKKyAgICBTbGlkZXIs
CisgICAgU2xpZGVyVGh1bWIsCisgICAgU3BpbkJ1dHRvbiwKKyAgICBTcGluQnV0dG9uUGFydCwK
KyAgICBTcGxpdEdyb3VwLAorICAgIFNwbGl0dGVyLAorICAgIFN0YXRpY1RleHQsCisgICAgU3Vt
bWFyeSwKKyAgICBTd2l0Y2gsCisgICAgU3lzdGVtV2lkZSwKKyAgICBTVkdSb290LAorICAgIFNW
R1RleHQsCisgICAgU1ZHVFNwYW4sCisgICAgU1ZHVGV4dFBhdGgsCisgICAgVGFiR3JvdXAsCisg
ICAgVGFiTGlzdCwKKyAgICBUYWJQYW5lbCwKKyAgICBUYWIsCisgICAgVGFibGUsCisgICAgVGFi
bGVIZWFkZXJDb250YWluZXIsCisgICAgVGV4dEFyZWEsCisgICAgVGV4dEdyb3VwLAorICAgIFRl
cm0sCisgICAgVGltZSwKKyAgICBUcmVlLAorICAgIFRyZWVHcmlkLAorICAgIFRyZWVJdGVtLAor
ICAgIFRleHRGaWVsZCwKKyAgICBUb2dnbGVCdXR0b24sCisgICAgVG9vbGJhciwKKyAgICBVbmtu
b3duLAorICAgIFVzZXJJbnRlcmZhY2VUb29sdGlwLAorICAgIFZhbHVlSW5kaWNhdG9yLAorICAg
IFZpZGVvLAorICAgIFdlYkFwcGxpY2F0aW9uLAorICAgIFdlYkFyZWEsCisgICAgV2ViQ29yZUxp
bmssCisgICAgV2luZG93LAogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7Ci0g
ICAgQWx0ZXJuYXRpdmVUZXh0LAotICAgIENoaWxkcmVuVGV4dCwKLSAgICBTdW1tYXJ5VGV4dCwK
LSAgICBIZWxwVGV4dCwKLSAgICBWaXNpYmxlVGV4dCwKLSAgICBUaXRsZVRhZ1RleHQsCi0gICAg
UGxhY2Vob2xkZXJUZXh0LAotICAgIExhYmVsQnlFbGVtZW50VGV4dCwKLSAgICBUaXRsZVRleHQs
Ci0gICAgU3VidGl0bGVUZXh0LAotICAgIEFjdGlvblRleHQsCitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlIHsKKyAgICBBbHRlcm5hdGl2ZSwKKyAgICBDaGlsZHJlbiwKKyAgICBT
dW1tYXJ5LAorICAgIEhlbHAsCisgICAgVmlzaWJsZSwKKyAgICBUaXRsZVRhZywKKyAgICBQbGFj
ZWhvbGRlciwKKyAgICBMYWJlbEJ5RWxlbWVudCwKKyAgICBUaXRsZSwKKyAgICBTdWJ0aXRsZSwK
KyAgICBBY3Rpb24sCiB9OwogICAgIAogc3RydWN0IEFjY2Vzc2liaWxpdHlUZXh0IHsKICAgICBT
dHJpbmcgdGV4dDsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB0ZXh0U291cmNlOwotICAg
IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IHRleHRFbGVtZW50czsKKyAgICBW
ZWN0b3I8UmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiB0ZXh0RWxlbWVudHM7CiAgICAgCiAgICAg
QWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZSYgcykKLSAgICA6IHRleHQodCkKLSAgICAsIHRleHRTb3VyY2UocykKKyAgICAgICAg
OiB0ZXh0KHQpCisgICAgICAgICwgdGV4dFNvdXJjZShzKQogICAgIHsgfQogCi0gICAgQWNjZXNz
aWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZSYgcywgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gZWxlbWVudHMpCi0gICAg
OiB0ZXh0KHQpCi0gICAgLCB0ZXh0U291cmNlKHMpCi0gICAgLCB0ZXh0RWxlbWVudHMoV1RGTW92
ZShlbGVtZW50cykpCisgICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25z
dCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSYgcywgVmVjdG9yPFJlZjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Pj4gZWxlbWVudHMpCisgICAgICAgIDogdGV4dCh0KQorICAgICAgICAsIHRleHRTb3VyY2Uo
cykKKyAgICAgICAgLCB0ZXh0RWxlbWVudHMoV1RGTW92ZShlbGVtZW50cykpCiAgICAgeyB9CiAK
LSAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxp
dHlUZXh0U291cmNlJiBzLCBjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gZWxlbWVu
dCkKLSAgICA6IHRleHQodCkKLSAgICAsIHRleHRTb3VyY2UocykKKyAgICBBY2Nlc3NpYmlsaXR5
VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlJiBzLCBS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mJiBlbGVtZW50KQorICAgICAgICA6IHRleHQodCkKKyAg
ICAgICAgLCB0ZXh0U291cmNlKHMpCiAgICAgewotICAgICAgICB0ZXh0RWxlbWVudHMuYXBwZW5k
KGVsZW1lbnQpOworICAgICAgICB0ZXh0RWxlbWVudHMuYXBwZW5kKFdURk1vdmUoZWxlbWVudCkp
OwogICAgIH0KIH07CiAKQEAgLTI5Nyw5OCArMjk3LDk1IEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5
VGV4dFVuZGVyRWxlbWVudE1vZGUKIC8vIFVzZSB0aGlzIHN0cnVjdCB0byBzdG9yZSB0aGUgaXNJ
Z25vcmVkIGRhdGEgdGhhdCBkZXBlbmRzIG9uIHRoZSBwYXJlbnRzLCBzbyB0aGF0IGluIGFkZENo
aWxkcmVuKCkKIC8vIHdlIGF2b2lkIGdvaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4gZm9yIGVhY2gg
ZWxlbWVudCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB0cmVlIHdpdGggdXNlZnVsIGluZm9ybWF0aW9u
IGFscmVhZHkuCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhIHsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQ7Ci0gICAgYm9vbCBpc0FSSUFIaWRkZW47
Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlOwotICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQ7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
IHsgbnVsbHB0ciB9OworICAgIGJvb2wgaXNBUklBSGlkZGVuIHsgZmFsc2UgfTsKKyAgICBib29s
IGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUgeyBmYWxzZSB9OworICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQgeyBmYWxzZSB9OwogICAgIAogICAgIEFjY2Vzc2liaWxp
dHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBu
dWxscHRyKQogICAgICAgICA6IHBhcmVudChwYXJlbnQpCi0gICAgICAgICwgaXNBUklBSGlkZGVu
KGZhbHNlKQotICAgICAgICAsIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoZmFsc2Up
Ci0gICAgICAgICwgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoZmFsc2UpCi0gICAgICAgIHsg
fQotICAgIAorICAgIHsgfQorCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFy
ZW50OyB9CiB9OwogICAgIAotZW51bSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewotICAgIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsLAotICAgIEFjY2Vzc2liaWxpdHlPcmllbnRh
dGlvbkhvcml6b250YWwsCi0gICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVkLAor
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24geworICAgIFZlcnRpY2FsLAorICAg
IEhvcml6b250YWwsCisgICAgVW5kZWZpbmVkLAogfTsKICAgICAKLWVudW0gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiB7CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b24gewogICAgIEluY2x1ZGVPYmplY3QsCiAgICAgSWdub3JlT2JqZWN0LAogICAgIERlZmF1bHRC
ZWhhdmlvciwKIH07CiAgICAgCi1lbnVtIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7Ci0gICAg
QnV0dG9uU3RhdGVPZmYgPSAwLAotICAgIEJ1dHRvblN0YXRlT24sIAotICAgIEJ1dHRvblN0YXRl
TWl4ZWQsCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7CisgICAgT2ZmID0g
MCwKKyAgICBPbiwKKyAgICBNaXhlZCwKIH07CiAgICAgCi1lbnVtIEFjY2Vzc2liaWxpdHlTb3J0
RGlyZWN0aW9uIHsKLSAgICBTb3J0RGlyZWN0aW9uTm9uZSwKLSAgICBTb3J0RGlyZWN0aW9uQXNj
ZW5kaW5nLAotICAgIFNvcnREaXJlY3Rpb25EZXNjZW5kaW5nLAotICAgIFNvcnREaXJlY3Rpb25P
dGhlciwKLSAgICBTb3J0RGlyZWN0aW9uSW52YWxpZAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
U29ydERpcmVjdGlvbiB7CisgICAgTm9uZSwKKyAgICBBc2NlbmRpbmcsCisgICAgRGVzY2VuZGlu
ZywKKyAgICBPdGhlciwKKyAgICBJbnZhbGlkLAogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5U2Vh
cmNoRGlyZWN0aW9uIHsKLSAgICBTZWFyY2hEaXJlY3Rpb25OZXh0ID0gMSwKLSAgICBTZWFyY2hE
aXJlY3Rpb25QcmV2aW91cworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9u
IHsKKyAgICBOZXh0ID0gMSwKKyAgICBQcmV2aW91cywKIH07CiAKLWVudW0gQWNjZXNzaWJpbGl0
eVNlYXJjaEtleSB7Ci0gICAgQW55VHlwZVNlYXJjaEtleSA9IDEsCi0gICAgQXJ0aWNsZVNlYXJj
aEtleSwKLSAgICBCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LAotICAgIEJsb2NrcXVvdGVT
ZWFyY2hLZXksCi0gICAgQm9sZEZvbnRTZWFyY2hLZXksCi0gICAgQnV0dG9uU2VhcmNoS2V5LAot
ICAgIENoZWNrQm94U2VhcmNoS2V5LAotICAgIENvbnRyb2xTZWFyY2hLZXksCi0gICAgRGlmZmVy
ZW50VHlwZVNlYXJjaEtleSwKLSAgICBGb250Q2hhbmdlU2VhcmNoS2V5LAotICAgIEZvbnRDb2xv
ckNoYW5nZVNlYXJjaEtleSwKLSAgICBGcmFtZVNlYXJjaEtleSwKLSAgICBHcmFwaGljU2VhcmNo
S2V5LAotICAgIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXksCi0gICAgSGVhZGluZ0xldmVsMlNlYXJj
aEtleSwKLSAgICBIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5LAotICAgIEhlYWRpbmdMZXZlbDRTZWFy
Y2hLZXksCi0gICAgSGVhZGluZ0xldmVsNVNlYXJjaEtleSwKLSAgICBIZWFkaW5nTGV2ZWw2U2Vh
cmNoS2V5LAotICAgIEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXksCi0gICAgSGVhZGluZ1NlYXJj
aEtleSwKLSAgICBIaWdobGlnaHRlZFNlYXJjaEtleSwKLSAgICBJdGFsaWNGb250U2VhcmNoS2V5
LAotICAgIExhbmRtYXJrU2VhcmNoS2V5LAotICAgIExpbmtTZWFyY2hLZXksCi0gICAgTGlzdFNl
YXJjaEtleSwKLSAgICBMaXZlUmVnaW9uU2VhcmNoS2V5LAotICAgIE1pc3NwZWxsZWRXb3JkU2Vh
cmNoS2V5LAotICAgIE91dGxpbmVTZWFyY2hLZXksCi0gICAgUGxhaW5UZXh0U2VhcmNoS2V5LAot
ICAgIFJhZGlvR3JvdXBTZWFyY2hLZXksCi0gICAgU2FtZVR5cGVTZWFyY2hLZXksCi0gICAgU3Rh
dGljVGV4dFNlYXJjaEtleSwKLSAgICBTdHlsZUNoYW5nZVNlYXJjaEtleSwKLSAgICBUYWJsZVNh
bWVMZXZlbFNlYXJjaEtleSwKLSAgICBUYWJsZVNlYXJjaEtleSwKLSAgICBUZXh0RmllbGRTZWFy
Y2hLZXksCi0gICAgVW5kZXJsaW5lU2VhcmNoS2V5LAotICAgIFVudmlzaXRlZExpbmtTZWFyY2hL
ZXksCi0gICAgVmlzaXRlZExpbmtTZWFyY2hLZXkKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleSB7CisgICAgQW55VHlwZSA9IDEsCisgICAgQXJ0aWNsZSwKKyAgICBCbG9ja3F1b3Rl
U2FtZUxldmVsLAorICAgIEJsb2NrcXVvdGUsCisgICAgQm9sZEZvbnQsCisgICAgQnV0dG9uLAor
ICAgIENoZWNrQm94LAorICAgIENvbnRyb2wsCisgICAgRGlmZmVyZW50VHlwZSwKKyAgICBGb250
Q2hhbmdlLAorICAgIEZvbnRDb2xvckNoYW5nZSwKKyAgICBGcmFtZSwKKyAgICBHcmFwaGljLAor
ICAgIEhlYWRpbmdMZXZlbDEsCisgICAgSGVhZGluZ0xldmVsMiwKKyAgICBIZWFkaW5nTGV2ZWwz
LAorICAgIEhlYWRpbmdMZXZlbDQsCisgICAgSGVhZGluZ0xldmVsNSwKKyAgICBIZWFkaW5nTGV2
ZWw2LAorICAgIEhlYWRpbmdTYW1lTGV2ZWwsCisgICAgSGVhZGluZywKKyAgICBIaWdobGlnaHRl
ZCwKKyAgICBJdGFsaWNGb250LAorICAgIExhbmRtYXJrLAorICAgIExpbmssCisgICAgTGlzdCwK
KyAgICBMaXZlUmVnaW9uLAorICAgIE1pc3NwZWxsZWRXb3JkLAorICAgIE91dGxpbmUsCisgICAg
UGxhaW5UZXh0LAorICAgIFJhZGlvR3JvdXAsCisgICAgU2FtZVR5cGUsCisgICAgU3RhdGljVGV4
dCwKKyAgICBTdHlsZUNoYW5nZSwKKyAgICBUYWJsZVNhbWVMZXZlbCwKKyAgICBUYWJsZSwKKyAg
ICBUZXh0RmllbGQsCisgICAgVW5kZXJsaW5lLAorICAgIFVudmlzaXRlZExpbmssCisgICAgVmlz
aXRlZExpbmssCiB9OwogCi1lbnVtIEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JCb3Vu
ZHMgewotICAgIEZpcnN0VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzLAotICAgIExhc3RWaXNpYmxl
UG9zaXRpb25Gb3JCb3VuZHMKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlv
bkZvckJvdW5kcyB7CisgICAgRmlyc3QsCisgICAgTGFzdCwKIH07CiAKIHN0cnVjdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgewpAQCAtNDEwLDcgKzQwNyw3IEBAIHN0cnVjdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgewogICAgIHsgfQogfTsKICAgICAKLWVudW0gQWNjZXNzaWJp
bGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQgfTsK
K2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQs
IEVsZW1lbnREZXN0cm95ZWQgfTsKIAogc3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKIApA
QCAtNDUwLDE4ICs0NDcsMTggQEAgc3RydWN0IFBsYWluVGV4dFJhbmdlIHsKICAgICBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9CiB9OwogCi1lbnVtIEFj
Y2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHkgewotICAgIEZpbmRBbmRSZXBsYWNlQWN0aXZp
dHksCi0gICAgRmluZEFuZFNlbGVjdEFjdGl2aXR5LAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
U2VsZWN0VGV4dEFjdGl2aXR5IHsKKyAgICBGaW5kQW5kUmVwbGFjZSwKKyAgICBGaW5kQW5kU2Vs
ZWN0LAogICAgIEZpbmRBbmRDYXBpdGFsaXplLAogICAgIEZpbmRBbmRMb3dlcmNhc2UsCiAgICAg
RmluZEFuZFVwcGVyY2FzZQogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmln
dWl0eVJlc29sdXRpb24gewotICAgIENsb3Nlc3RBZnRlclNlbGVjdGlvbkFtYmlndWl0eVJlc29s
dXRpb24sCi0gICAgQ2xvc2VzdEJlZm9yZVNlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24sCi0g
ICAgQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbgorZW51bSBjbGFzcyBBY2Nl
c3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb24geworICAgIENsb3Nlc3RBZnRl
ciwKKyAgICBDbG9zZXN0QmVmb3JlLAorICAgIENsb3Nlc3RUbwogfTsKIAogc3RydWN0IEFjY2Vz
c2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgewpAQCAtNDc3LDE2ICs0NzQsMTYgQEAgc3RydWN0
IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgewogICAgIHsgfQogfTsKIAotZW51bSBB
Y2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUgeyBTdWJzY3JpcHQsIFN1cGVyc2NyaXB0
IH07Ci1lbnVtIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlIHsgUHJlU3Vi
c2NyaXB0LCBQcmVTdXBlcnNjcmlwdCwgUG9zdFN1YnNjcmlwdCwgUG9zdFN1cGVyc2NyaXB0IH07
CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1YnNjcmlw
dCwgU3VwZXJzY3JpcHQgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vic2NyaXB0
LCBQb3N0U3VwZXJzY3JpcHQgfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0
ZSB7IEFSSUFDdXJyZW50RmFsc2UsIEFSSUFDdXJyZW50VHJ1ZSwgQVJJQUN1cnJlbnRQYWdlLCBB
UklBQ3VycmVudFN0ZXAsIEFSSUFDdXJyZW50TG9jYXRpb24sIEFSSUFDdXJyZW50RGF0ZSwgQVJJ
QUN1cnJlbnRUaW1lIH07CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRl
IHsgRmFsc2UsIFRydWUsIFBhZ2UsIFN0ZXAsIExvY2F0aW9uLCBEYXRlLCBUaW1lIH07CiAgICAg
CiBib29sIG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUqKTsKICAgICAKIGNsYXNzIEFjY2Vz
c2liaWxpdHlPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiB7
CiBwcm90ZWN0ZWQ6Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCgpOworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QoKSA9IGRlZmF1bHQ7CiAgICAgCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNz
aWJpbGl0eU9iamVjdCgpOwpAQCAtNTE3LDcgKzUxNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2VN
YXAoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBJbWFnZU1hcFJvbGU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dv
cmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01MjUsMTEgKzUyMiwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXNzd29yZEZpZWxkT3JD
b250YWluaW5nUGFzc3dvcmRGaWVsZCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaXNXZWJBcmVhKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gV2ViQXJlYVJv
bGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IENoZWNrQm94Um9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JhZGlvQnV0dG9u
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gUmFkaW9CdXR0b25Sb2xlOyB9CisgICAg
Ym9vbCBpc1dlYkFyZWEoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6V2ViQXJlYTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Cisg
ICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b247IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNOYXRpdmVMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlz
dEJveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IExpc3RCb3hSb2xlOyB9CisgICAg
Ym9vbCBpc0xpc3RCb3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEJveDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGltZWxpbmUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTU5LDQzICs1NTYsNDMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IFNwaW5CdXR0b25Sb2xlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGlu
QnV0dG9uOyB9CiAgICAgdmlydHVhbCBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tPYmplY3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbExhYmVs
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYU9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IFN3aXRjaFJvbGU7IH0KLSAgICBib29sIGlzVG9nZ2xlQnV0
dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVG9nZ2xlQnV0dG9uUm9sZTsgfQor
ICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0K
ICAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzQVJJQVRleHRDb250
cm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBUYWJMaXN0
Um9sZTsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gVGFiUm9sZTsgfQotICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gUmFkaW9Hcm91cFJvbGU7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBDb21ib0JveFJvbGU7IH0KLSAgICBib29sIGlzVHJl
ZSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRyZWVSb2xlOyB9Ci0gICAgYm9vbCBp
c1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVHJlZUdyaWRSb2xlOyB9
Ci0gICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVHJl
ZUl0ZW1Sb2xlOyB9Ci0gICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IFNjcm9sbEJhclJvbGU7IH0KKyAgICBib29sIGlzVGFiTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OyB9CisgICAg
Ym9vbCBpc1RhYkl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGFiOyB9CisgICAgYm9vbCBpc1JhZGlvR3JvdXAoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDsgfQorICAgIGJvb2wg
aXNDb21ib0JveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDb21ib0JveDsgfQorICAgIGJvb2wgaXNUcmVlKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU7IH0KKyAgICBib29sIGlzVHJlZUdyaWQo
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdy
aWQ7IH0KKyAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07IH0KKyAgICBib29sIGlzU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJh
cjsgfQogICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdDsKLSAgICBib29sIGlzTGlzdEl0ZW0oKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBMaXN0SXRlbVJvbGU7IH0KKyAgICBib29sIGlz
TGlzdEl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEl0ZW07IH0KICAgICBib29sIGlzQ2hlY2tib3hPclJhZGlvKCkgY29uc3QgeyByZXR1
cm4gaXNDaGVja2JveCgpIHx8IGlzUmFkaW9CdXR0b24oKTsgfQotICAgIGJvb2wgaXNTY3JvbGxW
aWV3KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU2Nyb2xsQXJlYVJvbGU7IH0KLSAg
ICBib29sIGlzQ2FudmFzKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQ2FudmFzUm9s
ZTsgfQotICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IFBvcFVwQnV0dG9uUm9sZTsgfQorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KKyAg
ICBib29sIGlzQ2FudmFzKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNhbnZhczsgfQorICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsgfQogICAg
IGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IENv
bG9yV2VsbFJvbGU7IH0KKyAgICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQogICAgIGJvb2wgaXNS
YW5nZUNvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzTWV0ZXIoKSBjb25zdDsKLSAgICBib29s
IGlzU3BsaXR0ZXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBTcGxpdHRlclJvbGU7
IH0KLSAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRv
b2xiYXJSb2xlOyB9CisgICAgYm9vbCBpc1NwbGl0dGVyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOyB9CisgICAgYm9vbCBpc1Rvb2xi
YXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9v
bGJhcjsgfQogICAgIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1N1YnNjcmlwdFN0eWxlR3JvdXAoKSBjb25zdDsKICAgICBib29sIGlzU3VwZXJzY3JpcHRTdHls
ZUdyb3VwKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdDsKLSAgICBi
b29sIGlzU3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFN1bW1hcnlSb2xl
OyB9CisgICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQogICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdDsK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTYyOCw3ICs2MjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVG
b250KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZTsgfQorICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkg
Y29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1Rl
eHQ7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0OwogCkBAIC03NTksNyArNzU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9u
ZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFVua25vd25Sb2xl
OyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNv
bnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbmhlcml0c1ByZXNl
bnRhdGlvbmFsUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMDA4LDcgKzEwMDUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gU2Nyb2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQg
aW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9mIHRoZSB0b3AtbGV2ZWwgd2luZG93LgogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAg
Ci0gICAgZW51bSBTY3JvbGxCeVBhZ2VEaXJlY3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQg
fTsKKyAgICBlbnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0
LCBSaWdodCB9OwogICAgIGJvb2wgc2Nyb2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikg
Y29uc3Q7CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKICAgICBJbnRTaXpl
IHNjcm9sbENvbnRlbnRzU2l6ZSgpIGNvbnN0OyAgICAKQEAgLTExMDIsNyArMTA5OSw3IEBAIHB1
YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0
Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Q7CiAjZWxzZQogICAgIGJvb2wgYWNjZXNzaWJpbGl0
eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCB7
IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTEzNSwxNCArMTEzMiwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2li
aWxpdHlPYmplY3QqKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBBWElEIG1faWQ7CisgICAgQVhJ
RCBtX2lkIHsgMCB9OwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVu
OwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGlsZHJlbjsKLSAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSBtX3JvbGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBtX2xhc3RLbm93bklz
SWdub3JlZFZhbHVlOwotICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSBt
X2lzSWdub3JlZEZyb21QYXJlbnREYXRhOwotICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OwotICAg
IGJvb2wgbV9zdWJ0cmVlRGlydHk7CisgICAgbXV0YWJsZSBib29sIG1faGF2ZUNoaWxkcmVuIHsg
ZmFsc2UgfTsKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGUgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VW5rbm93biB9OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gbV9sYXN0S25v
d25Jc0lnbm9yZWRWYWx1ZSB7IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRC
ZWhhdmlvciB9OworICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSBtX2lz
SWdub3JlZEZyb21QYXJlbnREYXRhIHsgfTsKKyAgICBib29sIG1fY2hpbGRyZW5EaXJ0eSB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3N1YnRyZWVEaXJ0eSB7IGZhbHNlIH07CiAKICAgICB2b2lkIHNl
dElzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YSYgZGF0YSkgeyBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCkBAIC0x
MTgwLDcgKzExNzcsNyBAQCBwcm90ZWN0ZWQ6CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgQ09N
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7CiAjZWxpZiBQTEFURk9S
TShHVEspCi0gICAgQXRrT2JqZWN0KiBtX3dyYXBwZXI7CisgICAgQXRrT2JqZWN0KiBtX3dyYXBw
ZXIgeyBudWxscHRyIH07CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFByb2dyZXNzSW5kaWNhdG9yUm9sZTsgfQorICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjsgfQogCiAgICAgYm9vbCBpc1Byb2dyZXNzSW5k
aWNhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5
MSwxMSArNDkxLDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXIK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAg
IGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVCYXJSb2xlKQorICAgIGlmIChhcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyKQogICAgICAgICByZXR1
cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtX3JlbmRlcmVyLT5wYXJlbnQoKSk7CiAK
ICAgICAvLyBtZW51QnV0dG9uIGFuZCBpdHMgY29ycmVzcG9uZGluZyBtZW51IGFyZSBET00gc2li
bGluZ3MsIGJ1dCBBY2Nlc3NpYmlsaXR5IG5lZWRzIHRoZW0gdG8gYmUgcGFyZW50L2NoaWxkCi0g
ICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudVJvbGUpIHsKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkgewogICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtZW51QnV0dG9uRm9yTWVudSgpOwogICAgICAgICBp
ZiAocGFyZW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudDsKQEAgLTUyNCw3ICs1MjQsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQXR0YWNoCiAgICAgLy8gV2lkZ2V0
cyBhcmUgdGhlIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgd2UgcmVwcmVzZW50IHRvIEFYIGFzIGF0
dGFjaG1lbnRzCiAgICAgYm9vbCBpc1dpZGdldCA9IHJlbmRlcmVyLT5pc1dpZGdldCgpOwogCi0g
ICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gVW5rbm93blJvbGU7
CisgICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlVua25vd247CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QKQEAgLTYxMiw3ICs2MTIsNyBAQCBTdHJpbmcgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRlCiAgICAgICAgIC8vIE9ubHkgdGFrZSBoZWxw
IHRleHQgZnJvbSBhbiBhbmNlc3RvciBlbGVtZW50IGlmIGl0cyBhIGdyb3VwIG9yIGFuIHVua25v
d24gcm9sZS4gSWYgaGVscCB3YXMgCiAgICAgICAgIC8vIGFkZGVkIHRvIHRob3NlIGtpbmRzIG9m
IGVsZW1lbnRzLCBpdCBpcyBsaWtlbHkgaXQgd2FzIG1lYW50IGZvciBhIGNoaWxkIGVsZW1lbnQu
CiAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iaiA9IGF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUoYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqLT5pc0dy
b3VwKCkgJiYgYXhPYmotPnJvbGVWYWx1ZSgpICE9IFVua25vd25Sb2xlKQorICAgICAgICAgICAg
aWYgKCFheE9iai0+aXNHcm91cCgpICYmIGF4T2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmls
aXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KQEAgLTc0Myw3ICs3NDMsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c3RyaW5nCiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3NzQm94ID0gcmVuZGVyQm94TW9k
ZWxPYmplY3QoKTsKIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFN0YXRpY1RleHRS
b2xlKSB7CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlN0YXRpY1RleHQpIHsKICAgICAgICAgU3RyaW5nIHN0YXRpY1RleHQgPSB0ZXh0KCk7CiAgICAg
ICAgIGlmICghc3RhdGljVGV4dC5sZW5ndGgoKSkKICAgICAgICAgICAgIHN0YXRpY1RleHQgPSB0
ZXh0VW5kZXJFbGVtZW50KCk7CkBAIC05NjEsNyArOTYxLDcgQEAgRVNwZWFrIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnNwZWFrUAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50LCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRyZW4oKSkgewotICAgICAg
ICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IFJhZGlvQnV0dG9uUm9sZSkKKyAgICAgICAgaWYg
KGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24pCiAg
ICAgICAgICAgICBsaW5rZWRVSUVsZW1lbnRzLmFwcGVuZChjaGlsZCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihjaGlsZC5nZXQoKSwgbGlu
a2VkVUlFbGVtZW50cyk7CkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphZGRSYWRpbwogICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7Ci0gICAgaWYgKHJvbGVWYWx1ZSgpICE9IFJhZGlv
QnV0dG9uUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJh
ZGlvQnV0dG9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IHRoaXMt
Pm5vZGUoKTsKQEAgLTk4Myw3ICs5ODMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZFJhZGlvCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQg
YW55IHJhZGlvIGJ1dHRvbiBzaWJsaW5ncyB3aXRoIHRoZSB0cmFkaXRpb25hbCBuYW1pbmcsIGxl
dHMgc2VhcmNoIGZvciBhIHJhZGlvIGdyb3VwIHJvbGUgYW5kIGZpbmQgaXRzIGNoaWxkcmVuLgog
ICAgICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKLSAgICAgICAgICAg
IGlmIChwYXJlbnQtPnJvbGVWYWx1ZSgpID09IFJhZGlvR3JvdXBSb2xlKQorICAgICAgICAgICAg
aWYgKHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAp
CiAgICAgICAgICAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKHBhcmVudCwgbGlu
a2VkVUlFbGVtZW50cyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDAxLDcgKzEwMDEsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmtlZFVJCiAgICAgICAgICAgICBsaW5r
ZWRVSUVsZW1lbnRzLmFwcGVuZChsaW5rZWRBWEVsZW1lbnQpOwogICAgIH0KIAotICAgIGlmIChy
b2xlVmFsdWUoKSA9PSBSYWRpb0J1dHRvblJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbikKICAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91
cE1lbWJlcnMobGlua2VkVUlFbGVtZW50cyk7CiB9CiAKQEAgLTExMDYsNyArMTEwNiw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBbGxvd2UKICAgICBib29sIGlzSW5UcmVl
ID0gZmFsc2U7CiAgICAgYm9vbCBpc1RyZWVJdGVtRGVzY2VuZGFudCA9IGZhbHNlOwogICAgIHdo
aWxlIChheE9iaikgewotICAgICAgICBpZiAoYXhPYmotPnJvbGVWYWx1ZSgpID09IFRyZWVJdGVt
Um9sZSkKKyAgICAgICAgaWYgKGF4T2JqLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VHJlZUl0ZW0pCiAgICAgICAgICAgICBpc1RyZWVJdGVtRGVzY2VuZGFudCA9IHRydWU7CiAg
ICAgICAgIGlmIChheE9iai0+aXNUcmVlKCkpIHsKICAgICAgICAgICAgIGlzSW5UcmVlID0gdHJ1
ZTsKQEAgLTExMTgsNyArMTExOCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNBbGxvd2UKICAgICAvLyBJZiB0aGUgb2JqZWN0IGlzIGluIGEgdHJlZSwgb25seSB0cmVlIGl0
ZW1zIHNob3VsZCBiZSBleHBvc2VkIChhbmQgdGhlIGNoaWxkcmVuIG9mIHRyZWUgaXRlbXMpLgog
ICAgIGlmIChpc0luVHJlZSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9s
ZVZhbHVlKCk7Ci0gICAgICAgIGlmIChyb2xlICE9IFRyZWVJdGVtUm9sZSAmJiByb2xlICE9IFN0
YXRpY1RleHRSb2xlICYmICFpc1RyZWVJdGVtRGVzY2VuZGFudCkKKyAgICAgICAgaWYgKHJvbGUg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlN0YXRpY1RleHQgJiYgIWlzVHJlZUl0ZW1EZXNjZW5kYW50KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMjgsMTMgKzExMjgsMTMg
QEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gb2JqZQogewogICAgIC8vIERv
bid0IGlnbm9yZSBhbiBpbWFnZSB0aGF0IGhhcyBhbiBhbHQgdGFnLgogICAgIGlmICghYWx0VGV4
dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCi0gICAgICAgIHJldHVybiBJbmNsdWRlT2JqZWN0
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9i
amVjdDsKICAgICAKICAgICAvLyBUaGUgaW5mb3JtYWwgc3RhbmRhcmQgaXMgdG8gaWdub3JlIGlt
YWdlcyB3aXRoIHplcm8tbGVuZ3RoIGFsdCBzdHJpbmdzLgogICAgIGlmICghYWx0VGV4dC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAKLSAgICByZXR1cm4g
RGVmYXVsdEJlaGF2aW9yOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
OjpEZWZhdWx0QmVoYXZpb3I7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0CkBA
IC0xMTQyLDE0ICsxMTQyLDE0IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNz
aWJpbGkKICAgICAvLyBUaGUgZm9sbG93aW5nIGNhc2VzIGNhbiBhcHBseSB0byBhbnkgZWxlbWVu
dCB0aGF0J3MgYSBzdWJjbGFzcyBvZiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgogICAgIAog
ICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKIAog
ICAgIGlmIChtX3JlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CiAg
ICAgICAgIC8vIGFyaWEtaGlkZGVuIGlzIG1lYW50IHRvIG92ZXJyaWRlIHZpc2liaWxpdHkgYXMg
dGhlIGRldGVybWluYW50IGluIEFYIGhpZXJhcmNoeSBpbmNsdXNpb24uCiAgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRy
KSwgImZhbHNlIikpCi0gICAgICAgICAgICByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOworICAgICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlv
cjsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAgfQogCiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsK
QEAgLTExNzksMTkgKzExNzksMTkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpj
b21wdXRlQQogICAgIC8vIFRoZW4gcHJvY2VzcyBvdGhlciB1c2UgY2FzZXMgdGhhdCBuZWVkIHRv
IGJlIGFwcGxpZWQgdG8gYWxsIHRoZSB2YXJpb3VzIHJvbGVzCiAgICAgLy8gdGhhdCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0cyB0YWtlIG9uLgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRlY2lz
aW9uID09IEluY2x1ZGVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAogICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYSBwYXJlbnQgdGhh
dCBjYW5ub3QgaGF2ZSBjaGlsZHJlbiwgaXQgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgogICAgIGlm
IChpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAg
CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IElnbm9yZWRSb2xlKQorICAgIGlmIChyb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IFByZXNlbnRhdGlvbmFsUm9sZSB8fCBp
bmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfHwgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJv
bGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gV2ViQXJlYXMgc2hvdWxk
IGJlIGlnbm9yZWQgaWYgdGhlaXIgaWZyYW1lIGNvbnRhaW5lciBpcyBtYXJrZWQgYXMgcHJlc2Vu
dGF0aW9uYWwuCkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmNvbXB1dGVBCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKSkgewog
ICAgICAgICAvLyBzdGF0aWMgdGV4dCBiZW5lYXRoIE1lbnVJdGVtcyBhbmQgTWVudUJ1dHRvbnMg
YXJlIGp1c3QgcmVwb3J0ZWQgYWxvbmcgd2l0aCB0aGUgbWVudSBpdGVtLCBzbyBpdCdzIGlnbm9y
ZWQgb24gYW4gaW5kaXZpZHVhbCBsZXZlbAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICAgICAgaWYgKHBhcmVudCAmJiAo
cGFyZW50LT5pc01lbnVJdGVtKCkgfHwgcGFyZW50LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1l
bnVCdXR0b25Sb2xlKSkKKyAgICAgICAgaWYgKHBhcmVudCAmJiAocGFyZW50LT5pc01lbnVJdGVt
KCkgfHwgcGFyZW50LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51QnV0dG9uKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBhdXRvJiByZW5k
ZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpOwogICAgICAgICBpZiAo
IXJlbmRlclRleHQuaGFzUmVuZGVyZWRUZXh0KCkpCkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAKICAgICAgICAgLy8gc3RhdGlj
IHRleHQgYmVuZWF0aCBUZXh0Q29udHJvbHMgaXMgcmVwb3J0ZWQgYWxvbmcgd2l0aCB0aGUgdGV4
dCBjb250cm9sIHRleHQgc28gaXQncyBpZ25vcmVkLgogICAgICAgICBmb3IgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVu
dC0+cGFyZW50T2JqZWN0KCkpIHsgCi0gICAgICAgICAgICBpZiAocGFyZW50LT5yb2xlVmFsdWUo
KSA9PSBUZXh0RmllbGRSb2xlKQorICAgICAgICAgICAgaWYgKHBhcmVudC0+cm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZCkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyNDUsOSArMTI0NSw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUEKICAgICAgICAgLy8gVGhlIGFsdCBhdHRy
aWJ1dGUgbWF5IGJlIHNldCBvbiBhIHRleHQgZnJhZ21lbnQgdGhyb3VnaCBDU1MsIHdoaWNoIHNo
b3VsZCBiZSBob25vcmVkLgogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5k
ZXJUZXh0KSkgewogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhbHRU
ZXh0SW5jbHVzaW9uID0gb2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQoZG93bmNhc3Q8UmVuZGVy
VGV4dEZyYWdtZW50PihyZW5kZXJUZXh0KS5hbHRUZXh0KCkpOwotICAgICAgICAgICAgaWYgKGFs
dFRleHRJbmNsdXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgICAgICAgICAgaWYgKGFsdFRleHRJ
bmNsdXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKGFsdFRleHRJbmNs
dXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICAgICAgICAgIGlmIChhbHRUZXh0SW5jbHVzaW9u
ID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKGRvd25jYXN0PFJlbmRlclRl
eHRGcmFnbWVudD4ocmVuZGVyVGV4dCkuZmlyc3RMZXR0ZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTEyNzQsMjQgKzEyNzQsMjQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpjb21wdXRlQQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzd2l0Y2gg
KHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBdWRpb1JvbGU6Ci0gICAgY2FzZSBEZXNjcmlwdGlv
bkxpc3RUZXJtUm9sZToKLSAgICBjYXNlIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6Ci0gICAg
Y2FzZSBEZXRhaWxzUm9sZToKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0gICAgY2FzZSBU
aW1lUm9sZToKLSAgICBjYXNlIFZpZGVvUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpBdWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJt
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1lOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlZpZGVvOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25S
b2xlKQorICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpV
bmtub3duKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgp
ID09IEhvcml6b250YWxSdWxlUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6Okhvcml6b250YWxSdWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgLy8gZG9uJ3QgaWdub3JlIGxhYmVscywgYmVjYXVzZSB0aGV5IHNlcnZlIGFzIFRpdGxlVUlF
bGVtZW50cwpAQCAtMTMzMSwxNiArMTMzMSwxNiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmNvbXB1dGVBCiAgICAgICAgIAogICAgICAgICAvLyBGaXJzdCBjaGVjayB0aGUgUmVu
ZGVySW1hZ2UncyBhbHRUZXh0ICh3aGljaCBjYW4gYmUgc2V0IHRocm91Z2ggYSBzdHlsZSBzaGVl
dCwgb3IgY29tZSBmcm9tIHRoZSBFbGVtZW50KS4KICAgICAgICAgLy8gSG93ZXZlciwgaWYgdGhp
cyBpcyBub3QgYSBuYXRpdmUgaW1hZ2UsIGZhbGxiYWNrIHRvIHRoZSBhdHRyaWJ1dGUgb24gdGhl
IEVsZW1lbnQuCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWx0VGV4dElu
Y2x1c2lvbiA9IERlZmF1bHRCZWhhdmlvcjsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbiBhbHRUZXh0SW5jbHVzaW9uID0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
RGVmYXVsdEJlaGF2aW9yOwogICAgICAgICBib29sIGlzUmVuZGVySW1hZ2UgPSBpczxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChpc1JlbmRlckltYWdlKQogICAgICAgICAg
ICAgYWx0VGV4dEluY2x1c2lvbiA9IG9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KGRvd25jYXN0
PFJlbmRlckltYWdlPigqbV9yZW5kZXJlcikuYWx0VGV4dCgpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgYWx0VGV4dEluY2x1c2lvbiA9IG9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KGdl
dEF0dHJpYnV0ZShhbHRBdHRyKS5zdHJpbmcoKSk7CiAKLSAgICAgICAgaWYgKGFsdFRleHRJbmNs
dXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgICAgICBpZiAoYWx0VGV4dEluY2x1c2lvbiA9PSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGFsdFRleHRJbmNsdXNpb24gPT0gSW5jbHVkZU9iamVj
dCkKKyAgICAgICAgaWYgKGFsdFRleHRJbmNsdXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbjo6SW5jbHVkZU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIElmIGFuIGltYWdlIGhhcyBhIHRpdGxlIGF0dHJpYnV0ZSBvbiBpdCwg
YWNjZXNzaWJpbGl0eSBzaG91bGQgYmUgbGVuaWVudCBhbmQgYWxsb3cgaXQgdG8gYXBwZWFyIGlu
IHRoZSBoaWVyYXJjaHkgKGFjY29yZGluZyB0byBXQUktQVJJQSkuCkBAIC0xNDAzLDcgKzE0MDMs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAKICAgICAvLyA8
c3Bhbj4gdGFncyBhcmUgaW5saW5lIHRhZ3MgYW5kIG5vdCBtZWFudCB0byBjb252ZXkgaW5mb3Jt
YXRpb24gaWYgdGhleSBoYXZlIG5vIG90aGVyIGFyaWEKICAgICAvLyBpbmZvcm1hdGlvbiBvbiB0
aGVtLiBJZiB3ZSBkb24ndCBpZ25vcmUgdGhlbSwgdGhleSBtYXkgZW1pdCBzaWduYWxzIGV4cGVj
dGVkIHRvIGNvbWUgZnJvbQotICAgIC8vIHRoZWlyIHBhcmVudC4gSW4gYWRkaXRpb24sIGJlY2F1
c2UgaW5jbHVkZWQgc3BhbnMgYXJlIEdyb3VwUm9sZSBvYmplY3RzLCBhbmQgR3JvdXBSb2xlCisg
ICAgLy8gdGhlaXIgcGFyZW50LiBJbiBhZGRpdGlvbiwgYmVjYXVzZSBpbmNsdWRlZCBzcGFucyBh
cmUgQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwIG9iamVjdHMsIGFuZCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JvdXAKICAgICAvLyBvYmplY3RzIGFyZSBvZnRlbiBjb250YWluZXJzIHdpdGggbWVhbmlu
Z2Z1bCBpbmZvcm1hdGlvbiwgdGhlIGluY2x1c2lvbiBvZiBhIHNwYW4gY2FuIGhhdmUKICAgICAv
LyB0aGUgc2lkZSBlZmZlY3Qgb2YgY2F1c2luZyB0aGUgaW1tZWRpYXRlIHBhcmVudCBhY2Nlc3Np
YmxlIHRvIGJlIGlnbm9yZWQuIFRoaXMgaXMgZXNwZWNpYWxseQogICAgIC8vIHByb2JsZW1hdGlj
IGZvciBwbGF0Zm9ybXMgd2hpY2ggaGF2ZSBkaXN0aW5jdCByb2xlcyBmb3IgdGV4dHVhbCBibG9j
ayBlbGVtZW50cy4KQEAgLTE1MjgsNyArMTUyOCw3IEBAIFBsYWluVGV4dFJhbmdlIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9
IGFyaWFSb2xlQXR0cmlidXRlKCk7CiAgICAgLy8gVXNlIHRoZSB0ZXh0IGNvbnRyb2wgbmF0aXZl
IHJhbmdlIGlmIGl0J3MgYSBuYXRpdmUgb2JqZWN0IGFuZCBpdCBoYXMgbm8gQVJJQSByb2xlIChv
ciBoYXMgYSB0ZXh0IGJhc2VkIEFSSUEgcm9sZSkuCi0gICAgaWYgKGlzTmF0aXZlVGV4dENvbnRy
b2woKSAmJiAoYXJpYVJvbGUgPT0gVW5rbm93blJvbGUgfHwgaXNBUklBVGV4dENvbnRyb2woKSkp
IHsKKyAgICBpZiAoaXNOYXRpdmVUZXh0Q29udHJvbCgpICYmIChhcmlhUm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VW5rbm93biB8fCBpc0FSSUFUZXh0Q29udHJvbCgpKSkgewogICAgICAgICBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0Q29udHJvbD4oKm1fcmVuZGVyZXIpLnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKTsKICAgICAg
ICAgcmV0dXJuIFBsYWluVGV4dFJhbmdlKHRleHRDb250cm9sLnNlbGVjdGlvblN0YXJ0KCksIHRl
eHRDb250cm9sLnNlbGVjdGlvbkVuZCgpIC0gdGV4dENvbnRyb2wuc2VsZWN0aW9uU3RhcnQoKSk7
CiAgICAgfQpAQCAtMTY3NSw3ICsxNjc1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc1RhYkl0ZQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJQYW5lbCA9IGNh
Y2hlLT5nZXRPckNyZWF0ZShlbGVtZW50KTsKIAogICAgICAgICAvLyBBIHRhYiBpdGVtIHNob3Vs
ZCBvbmx5IGNvbnRyb2wgdGFiIHBhbmVscy4KLSAgICAgICAgaWYgKCF0YWJQYW5lbCB8fCB0YWJQ
YW5lbC0+cm9sZVZhbHVlKCkgIT0gVGFiUGFuZWxSb2xlKQorICAgICAgICBpZiAoIXRhYlBhbmVs
IHx8IHRhYlBhbmVsLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoZWNrRm9jdXNFbGVtZW50ID0gZm9jdXNlZEVsZW1lbnQ7CkBAIC0xNzA0LDcgKzE3
MDQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRm9jdXNlCiAgICAgLy8g
QSB3ZWIgYXJlYSBpcyByZXByZXNlbnRlZCBieSB0aGUgRG9jdW1lbnQgbm9kZSBpbiB0aGUgRE9N
IHRyZWUsIHdoaWNoIGlzbid0IGZvY3VzYWJsZS4KICAgICAvLyBDaGVjayBpbnN0ZWFkIGlmIHRo
ZSBmcmFtZSdzIHNlbGVjdGlvbiBjb250cm9sbGVyIGlzIGZvY3VzZWQKICAgICBpZiAoZm9jdXNl
ZEVsZW1lbnQgPT0gbV9yZW5kZXJlci0+bm9kZSgpCi0gICAgICAgIHx8IChyb2xlVmFsdWUoKSA9
PSBXZWJBcmVhUm9sZSAmJiBkb2N1bWVudC5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRB
bmRBY3RpdmUoKSkpCisgICAgICAgIHx8IChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6V2ViQXJlYSAmJiBkb2N1bWVudC5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRB
Y3RpdmUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3NDYsNyArMTc0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
U2VsZWMKIHsKICAgICAvLyBTZXR0aW5nIHNlbGVjdGVkIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdHJl
ZXMgYW5kIHRhYmxlcyAoYW5kIHRyZWUtdGFibGVzKS4KICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgaWYgKHJvbGUgIT0gVHJlZVJvbGUgJiYgcm9sZSAhPSBU
cmVlR3JpZFJvbGUgJiYgcm9sZSAhPSBUYWJsZVJvbGUgJiYgcm9sZSAhPSBHcmlkUm9sZSkKKyAg
ICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSAmJiByb2xlICE9IEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlR3JpZCAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZSAm
JiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgYm9vbCBpc011bHRpID0gaXNNdWx0aVNlbGVjdGFibGUoKTsKQEAgLTE4MzUsNyArMTgz
NSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8qIHBhcmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUo
KTsKICAgICAgICAgICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+KCpjdXJyZW50KSAmJiBpczxI
VE1MTWFwRWxlbWVudD4ocGFyZW50KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGFyZWFPYmpl
Y3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShJbWFnZU1hcExpbmtSb2xlKSk7CisgICAgICAgICAgICAgICAgYXV0byYg
YXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVj
dENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbmspKTsK
ICAgICAgICAgICAgICAgICBIVE1MTWFwRWxlbWVudCYgbWFwID0gZG93bmNhc3Q8SFRNTE1hcEVs
ZW1lbnQ+KCpwYXJlbnQpOwogICAgICAgICAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTEFyZWFF
bGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oY3VycmVudCkpOwogICAgICAgICAgICAg
ICAgIGFyZWFPYmplY3Quc2V0SFRNTE1hcEVsZW1lbnQoJm1hcCk7CkBAIC0yNDExLDE4ICsyNDEx
LDE4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2hvdWxkTm8KIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGFyaWFSb2xlQXR0cmlidXRlKCkpIHsKLSAgICBjYXNlIEFwcGxp
Y2F0aW9uR3JvdXBSb2xlOgotICAgIGNhc2UgTGlzdEJveFJvbGU6Ci0gICAgY2FzZSBNZW51Um9s
ZToKLSAgICBjYXNlIE1lbnVCYXJSb2xlOgotICAgIGNhc2UgUmFkaW9Hcm91cFJvbGU6Ci0gICAg
Y2FzZSBSb3dSb2xlOgotICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgotICAgIGNhc2UgUHJvZ3Jl
c3NJbmRpY2F0b3JSb2xlOgotICAgIGNhc2UgVG9vbGJhclJvbGU6Ci0gICAgY2FzZSBPdXRsaW5l
Um9sZToKLSAgICBjYXNlIFRyZWVSb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0Qm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSYWRpb0dyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
b29sYmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok91dGxpbmU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
OgogICAgIC8qIEZJWE1FOiByZXBsYWNlIHRoZXNlIHdpdGggYWN0dWFsIHJvbGVzIHdoZW4gdGhl
eSBhcmUgYWRkZWQgdG8gQWNjZXNzaWJpbGl0eVJvbGUKICAgICBjb21wb3NpdGUKICAgICBhbGVy
dApAQCAtMjQ3NCwxMSArMjQ3NCwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmhhbmRsZUFyCiAgICAgICAgIGJvb2wgZm91bmRQYXJlbnQgPSBmYWxzZTsKICAgICAgICAgCiAg
ICAgICAgIHN3aXRjaCAoY29udGFpbmVyUGFyZW50LT5yb2xlVmFsdWUoKSkgewotICAgICAgICBj
YXNlIFRyZWVSb2xlOgotICAgICAgICBjYXNlIFRyZWVHcmlkUm9sZToKLSAgICAgICAgY2FzZSBH
cmlkUm9sZToKLSAgICAgICAgY2FzZSBUYWJsZVJvbGU6Ci0gICAgICAgIGNhc2UgQnJvd3NlclJv
bGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6CisgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpHcmlkOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToKKyAgICAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnJvd3NlcjoKICAgICAgICAgICAgIGZvdW5kUGFy
ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjUw
MCw3ICsyNTAwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYW5kbGVBcgog
ICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjb250YWluZXJQYXJlbnQsIGRvY3VtZW50
KCksIEFYT2JqZWN0Q2FjaGU6OkFYUm93Q291bnRDaGFuZ2VkKTsKIAogICAgIC8vIFBvc3QgdGhh
dCB0aGUgc3BlY2lmaWMgcm93IGVpdGhlciBjb2xsYXBzZWQgb3IgZXhwYW5kZWQuCi0gICAgaWYg
KHJvbGVWYWx1ZSgpID09IFJvd1JvbGUgfHwgcm9sZVZhbHVlKCkgPT0gVHJlZUl0ZW1Sb2xlKQor
ICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93IHx8IHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbSkKICAgICAgICAgY2FjaGUtPnBvc3RO
b3RpZmljYXRpb24odGhpcywgZG9jdW1lbnQoKSwgaXNFeHBhbmRlZCgpID8gQVhPYmplY3RDYWNo
ZTo6QVhSb3dFeHBhbmRlZCA6IEFYT2JqZWN0Q2FjaGU6OkFYUm93Q29sbGFwc2VkKTsKICAgICBl
bHNlCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50KCksIEFY
T2JqZWN0Q2FjaGU6OkFYRXhwYW5kZWRDaGFuZ2VkKTsKQEAgLTI2MDksNyArMjYwOSw3IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpleHBhbmQKIAogYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QKIHsKLSAg
ICBpZiAocm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpIHsKKyAgICBpZiAocm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsKICAgICAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpKQogICAgICAgICAgICAgcmV0
dXJuIHBhcmVudC0+aGFzVGFnTmFtZShhYmJyVGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUoYWNy
b255bVRhZyk7CiAgICAgfQpAQCAtMjYyMCwyNTEgKzI2MjAsMjUxIEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHMKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKICAgICBpZiAo
IW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCiAgICAgLy8gU29tZXRpbWVzIHdlIG5lZWQg
dG8gaWdub3JlIHRoZSBhdHRyaWJ1dGUgcm9sZS4gTGlrZSBpZiBhIHRyZWUgaXMgbWFsZm9ybWVk
LAogICAgIC8vIHdlIHdhbnQgdG8gaWdub3JlIHRoZSB0cmVlaXRlbSdzIGF0dHJpYnV0ZSByb2xl
LgotICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9
IFVua25vd25Sb2xlICYmICFzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkpCisgICAgaWYgKCht
X2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlVua25vd24gJiYgIXNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSkKICAgICAgICAg
cmV0dXJuIG1fYXJpYVJvbGU7CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5v
ZGUoKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3NzQm94ID0gcmVuZGVyQm94TW9kZWxP
YmplY3QoKTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmlzTGluaygpKQotICAgICAgICByZXR1
cm4gV2ViQ29yZUxpbmtSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Oldl
YkNvcmVMaW5rOwogICAgIGlmIChub2RlICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKSAm
JiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pigqbm9kZSkuaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih1c2VtYXBBdHRyKSkKLSAgICAgICAgcmV0dXJuIEltYWdlTWFwUm9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsKICAgICBpZiAoKGNz
c0JveCAmJiBjc3NCb3gtPmlzTGlzdEl0ZW0oKSkgfHwgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFt
ZShsaVRhZykpKQotICAgICAgICByZXR1cm4gTGlzdEl0ZW1Sb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc0xpc3RN
YXJrZXIoKSkKLSAgICAgICAgcmV0dXJuIExpc3RNYXJrZXJSb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJrZXI7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFz
VGFnTmFtZShidXR0b25UYWcpKQogICAgICAgICByZXR1cm4gYnV0dG9uUm9sZVR5cGUoKTsKICAg
ICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGxlZ2VuZFRhZykpCi0gICAgICAgIHJldHVy
biBMZWdlbmRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxlZ2VuZDsK
ICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTdGF0aWNUZXh0
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OwogICAg
IGlmIChjc3NCb3ggJiYgY3NzQm94LT5pc0ltYWdlKCkpIHsKICAgICAgICAgaWYgKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8g
UG9wVXBCdXR0b25Sb2xlIDogQnV0dG9uUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBhcmlhSGFz
UG9wdXAoKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiA6IEFjY2Vzc2liaWxpdHlS
b2xlOjpCdXR0b247CiAgICAgICAgIGlmIChpc1NWR0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1
cm4gU1ZHUm9vdFJvbGU7Ci0gICAgICAgIHJldHVybiBJbWFnZVJvbGU7CisgICAgICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1Jvb3Q7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6SW1hZ2U7CiAgICAgfQogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhh
c1RhZ05hbWUoY2FudmFzVGFnKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1JvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOwogCiAgICAgaWYgKGNzc0JveCAmJiBj
c3NCb3gtPmlzUmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gV2ViQXJlYVJvbGU7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsKICAgICAKICAgICBpZiAoY3Nz
Qm94ICYmIGNzc0JveC0+aXNUZXh0RmllbGQoKSkgewogICAgICAgICBpZiAoaXM8SFRNTElucHV0
RWxlbWVudD4obm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxl
bWVudD4oKm5vZGUpLmlzU2VhcmNoRmllbGQoKSA/IFNlYXJjaEZpZWxkUm9sZSA6IFRleHRGaWVs
ZFJvbGU7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5v
ZGUpLmlzU2VhcmNoRmllbGQoKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZCA6IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAgICAgfQogICAgIAogICAgIGlmIChjc3NCb3gg
JiYgY3NzQm94LT5pc1RleHRBcmVhKCkpCi0gICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE7CiAKICAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIGlmIChpbnB1
dC5pc0NoZWNrYm94KCkpCi0gICAgICAgICAgICByZXR1cm4gQ2hlY2tCb3hSb2xlOworICAgICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsKICAgICAgICAgaWYgKGlu
cHV0LmlzUmFkaW9CdXR0b24oKSkKLSAgICAgICAgICAgIHJldHVybiBSYWRpb0J1dHRvblJvbGU7
CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOwogICAg
ICAgICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYnV0dG9u
Um9sZVR5cGUoKTsKICAgICAgICAgLy8gT24gaU9TLCB0aGUgZGF0ZSBmaWVsZCBhbmQgdGltZSBm
aWVsZCBhcmUgcG9wdXAgYnV0dG9ucy4gT24gb3RoZXIgcGxhdGZvcm1zIHRoZXkgYXJlIHRleHQg
ZmllbGRzLgogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKGlucHV0LmlzRGF0ZUZpZWxk
KCkgfHwgaW5wdXQuaXNUaW1lRmllbGQoKSkKLSAgICAgICAgICAgIHJldHVybiBQb3BVcEJ1dHRv
blJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgICAgIGlmIChpbnB1
dC5pc0NvbG9yQ29udHJvbCgpKQotICAgICAgICAgICAgcmV0dXJuIENvbG9yV2VsbFJvbGU7Cisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsKICNlbmRpZgog
ICAgIH0KICAgICAKICAgICBpZiAoaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkpCi0g
ICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGV4dEFyZWE7CiAgICAgCiAgICAgaWYgKGlzRmlsZVVwbG9hZEJ1dHRvbigpKQotICAg
ICAgICByZXR1cm4gQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpCdXR0b247CiAgICAgCiAgICAgaWYgKGNzc0JveCAmJiBjc3NCb3gtPmlzTWVudUxpc3QoKSkK
LSAgICAgICAgcmV0dXJuIFBvcFVwQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsKICAgICAKICAgICBpZiAoaGVhZGluZ0xldmVsKCkpCi0g
ICAgICAgIHJldHVybiBIZWFkaW5nUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpIZWFkaW5nOwogICAgIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1Jvb3QoKSkKLSAg
ICAgICAgcmV0dXJuIFNWR1Jvb3RSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlNWR1Jvb3Q7CiAgICAgCiAgICAgaWYgKGlzU3R5bGVGb3JtYXRHcm91cCgpKQotICAgICAg
ICByZXR1cm4gaXM8UmVuZGVySW5saW5lPigqbV9yZW5kZXJlcikgPyBJbmxpbmVSb2xlIDogVGV4
dEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIGlzPFJlbmRlcklubGluZT4oKm1fcmVuZGVyZXIp
ID8gQWNjZXNzaWJpbGl0eVJvbGU6OklubGluZSA6IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3Jv
dXA7CiAgICAgCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkZFRhZykpCi0gICAg
ICAgIHJldHVybiBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDsKICAgICAKICAgICBpZiAobm9k
ZSAmJiBub2RlLT5oYXNUYWdOYW1lKGR0VGFnKSkKLSAgICAgICAgcmV0dXJuIERlc2NyaXB0aW9u
TGlzdFRlcm1Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0
aW9uTGlzdFRlcm07CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRsVGFnKSkK
LSAgICAgICAgcmV0dXJuIERlc2NyaXB0aW9uTGlzdFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0OwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+
aGFzVGFnTmFtZShmaWVsZHNldFRhZykpCi0gICAgICAgIHJldHVybiBHcm91cFJvbGU7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAKICAgICBpZiAobm9kZSAmJiBu
b2RlLT5oYXNUYWdOYW1lKGZpZ3VyZVRhZykpCi0gICAgICAgIHJldHVybiBGaWd1cmVSb2xlOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZTsKIAogICAgIC8vIENoZWNr
IGZvciBSdWJ5IGVsZW1lbnRzCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieVRleHQoKSkKLSAg
ICAgICAgcmV0dXJuIFJ1YnlUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpSdWJ5VGV4dDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5QmFzZSgpKQotICAgICAg
ICByZXR1cm4gUnVieUJhc2VSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OlJ1YnlCYXNlOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0
dXJuIFJ1YnlSdW5Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlS
dW47CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieUJsb2NrKCkpCi0gICAgICAgIHJldHVybiBS
dWJ5QmxvY2tSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlCbG9j
azsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5SW5saW5lKCkpCi0gICAgICAgIHJldHVybiBS
dWJ5SW5saW5lUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5SW5s
aW5lOwogICAgIAogICAgIC8vIFRoaXMgcmV0dXJuIHZhbHVlIGlzIHdoYXQgd2lsbCBiZSB1c2Vk
IGlmIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgZGV0ZXJtaW5lcwogICAgIC8vIHRoZSBjZWxsIHNo
b3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGNlbGwgKGUuZy4gYmVjYXVzZSBpdCBpcyBhIGxheW91
dCB0YWJsZS4KICAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAg
ICAgcmV0dXJuIFRleHRHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGV4dEdyb3VwOwogCiAgICAgLy8gVGFibGUgc2VjdGlvbnMgc2hvdWxkIGJlIGlnbm9yZWQu
CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzVGFibGVTZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBJ
Z25vcmVkUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOwog
CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzSFIoKSkKLSAgICAgICAgcmV0dXJuIEhvcml6b250YWxS
dWxlUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVs
ZTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUocFRhZykpCi0gICAgICAgIHJl
dHVybiBQYXJhZ3JhcGhSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlBh
cmFncmFwaDsKIAogICAgIGlmIChpczxIVE1MTGFiZWxFbGVtZW50Pihub2RlKSkKLSAgICAgICAg
cmV0dXJuIExhYmVsUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJl
bDsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGZuVGFnKSkKLSAgICAgICAg
cmV0dXJuIERlZmluaXRpb25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OkRlZmluaXRpb247CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRpdlRhZykp
Ci0gICAgICAgIHJldHVybiBEaXZSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OkRpdjsKIAogICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQotICAgICAgICBy
ZXR1cm4gRm9ybVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9ybTsK
IAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYXJ0aWNsZVRhZykpCi0gICAgICAg
IHJldHVybiBEb2N1bWVudEFydGljbGVSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50QXJ0aWNsZTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05h
bWUobWFpblRhZykpCi0gICAgICAgIHJldHVybiBMYW5kbWFya01haW5Sb2xlOworICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjsKIAogICAgIGlmIChub2RlICYm
IG5vZGUtPmhhc1RhZ05hbWUobmF2VGFnKSkKLSAgICAgICAgcmV0dXJuIExhbmRtYXJrTmF2aWdh
dGlvblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZp
Z2F0aW9uOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhc2lkZVRhZykpCi0g
ICAgICAgIHJldHVybiBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeTsKIAogICAgIC8vIFRoZSBk
ZWZhdWx0IHJvbGUgYXR0cmlidXRlIHZhbHVlIGZvciB0aGUgc2VjdGlvbiBlbGVtZW50LCByZWdp
b24sIGJlY2FtZSBhIGxhbmRtYXJrIGluIEFSSUEgMS4xLgogICAgIC8vIFRoZSBIVE1MIEFBTSBz
cGVjIHNheXMgaXQgaXMgInN0cm9uZ2x5IHJlY29tbWVuZGVkIiB0aGF0IEFUcyBvbmx5IGNvbnZl
eSBhbmQgcHJvdmlkZSBuYXZpZ2F0aW9uCiAgICAgLy8gZm9yIHNlY3Rpb24gZWxlbWVudHMgd2hp
Y2ggaGF2ZSBuYW1lcy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHNlY3Rpb25U
YWcpKQotICAgICAgICByZXR1cm4gaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKSB8fCBoYXNB
dHRyaWJ1dGUoYXJpYV9sYWJlbGxlZGJ5QXR0cikgPyBMYW5kbWFya1JlZ2lvblJvbGUgOiBUZXh0
R3JvdXBSb2xlOworICAgICAgICByZXR1cm4gaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKSB8
fCBoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbGxlZGJ5QXR0cikgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtSZWdpb24gOiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwOwogCiAgICAgaWYg
KG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhZGRyZXNzVGFnKSkKLSAgICAgICAgcmV0dXJuIExh
bmRtYXJrQ29udGVudEluZm9Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrQ29udGVudEluZm87CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1l
KGJsb2NrcXVvdGVUYWcpKQotICAgICAgICByZXR1cm4gQmxvY2txdW90ZVJvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QmxvY2txdW90ZTsKIAogICAgIGlmIChub2RlICYm
IG5vZGUtPmhhc1RhZ05hbWUoY2FwdGlvblRhZykpCi0gICAgICAgIHJldHVybiBDYXB0aW9uUm9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDYXB0aW9uOwogICAgIAogICAg
IGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUobWFya1RhZykpCi0gICAgICAgIHJldHVybiBN
YXJrUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXJrOwogCiAgICAg
aWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShwcmVUYWcpKQotICAgICAgICByZXR1cm4gUHJl
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmU7CiAKICAgICBpZiAo
aXM8SFRNTERldGFpbHNFbGVtZW50Pihub2RlKSkKLSAgICAgICAgcmV0dXJuIERldGFpbHNSb2xl
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM7CiAgICAgaWYgKGlz
PEhUTUxTdW1tYXJ5RWxlbWVudD4obm9kZSkpCi0gICAgICAgIHJldHVybiBTdW1tYXJ5Um9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OwogICAgIAogICAgIC8v
IGh0dHA6Ly9yYXdnaXQuY29tL3czYy9hcmlhL21hc3Rlci9odG1sLWFhbS9odG1sLWFhbS5odG1s
CiAgICAgLy8gT3V0cHV0IGVsZW1lbnRzIHNob3VsZCBiZSBtYXBwZWQgdG8gc3RhdHVzIHJvbGUu
CiAgICAgaWYgKGlzT3V0cHV0KCkpCi0gICAgICAgIHJldHVybiBBcHBsaWNhdGlvblN0YXR1c1Jv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM7
CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUp
KQotICAgICAgICByZXR1cm4gVmlkZW9Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OlZpZGVvOwogICAgIGlmIChpczxIVE1MQXVkaW9FbGVtZW50Pihub2RlKSkKLSAgICAg
ICAgcmV0dXJuIEF1ZGlvUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpB
dWRpbzsKICNlbmRpZgogICAgIAogICAgIC8vIFRoZSBIVE1MIGVsZW1lbnQgc2hvdWxkIG5vdCBi
ZSBleHBvc2VkIGFzIGFuIGVsZW1lbnQuIFRoYXQncyB3aGF0IHRoZSBSZW5kZXJWaWV3IGVsZW1l
bnQgZG9lcy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpKQotICAg
ICAgICByZXR1cm4gSWdub3JlZFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SWdub3JlZDsKIAogICAgIC8vIFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBiYW5uZXIvY29u
dGVudEluZm8gcGVyIHBhZ2UuIElmIGhlYWRlci9mb290ZXIgYXJlIGJlaW5nIHVzZWQgd2l0aGlu
IGFuIGFydGljbGUgb3Igc2VjdGlvbgogICAgIC8vIHRoZW4gaXQgc2hvdWxkIG5vdCBiZSBleHBv
c2VkIGFzIHdob2xlIHBhZ2UncyBiYW5uZXIvY29udGVudEluZm8KICAgICBpZiAobm9kZSAmJiBu
b2RlLT5oYXNUYWdOYW1lKGhlYWRlclRhZykgJiYgIWlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUo
YXJ0aWNsZVRhZykgJiYgIWlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoc2VjdGlvblRhZykpCi0g
ICAgICAgIHJldHVybiBMYW5kbWFya0Jhbm5lclJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFn
TmFtZShmb290ZXJUYWcpICYmICFpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKGFydGljbGVUYWcp
ICYmICFpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKHNlY3Rpb25UYWcpKQotICAgICAgICByZXR1
cm4gRm9vdGVyUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI7
CiAgICAgCiAgICAgLy8gbWVudSB0YWdzIHdpdGggdG9vbGJhciB0eXBlIHNob3VsZCBoYXZlIFRv
b2xiYXIgcm9sZS4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKG1lbnVUYWcpICYm
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJpYnV0ZSh0eXBlQXR0ciksICJ0
b29sYmFyIikpCi0gICAgICAgIHJldHVybiBUb29sYmFyUm9sZTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOwogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhh
c1RhZ05hbWUodGltZVRhZykpCi0gICAgICAgIHJldHVybiBUaW1lUm9sZTsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1lOwogICAgIAogICAgIC8vIElmIHRoZSBlbGVtZW50
IGRvZXMgbm90IGhhdmUgcm9sZSwgYnV0IGl0IGhhcyBBUklBIGF0dHJpYnV0ZXMsIG9yIGFjY2Vw
dHMgdGFiIGZvY3VzLCBhY2Nlc3NpYmlsaXR5IHNob3VsZCBmYWxsYmFjayB0byBleHBvc2luZyBp
dCBhcyBhIGdyb3VwLgogICAgIGlmIChzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgfHwgY2FuU2V0
Rm9jdXNBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsKIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1Jl
bmRlckJsb2NrRmxvdygpKQotICAgICAgICByZXR1cm4gbV9yZW5kZXJlci0+aXNBbm9ueW1vdXNC
bG9jaygpID8gVGV4dEdyb3VwUm9sZSA6IEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIG1fcmVu
ZGVyZXItPmlzQW5vbnltb3VzQmxvY2soKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAg
OiBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAgICAgCi0gICAgLy8gSW5saW5lUm9sZSBpcyB0
aGUgZmluYWwgZmFsbGJhY2sgYmVmb3JlIGFzc2lnbmluZyBVbmtub3duUm9sZSB0byBhbiBvYmpl
Y3QuIEl0IG1ha2VzIGl0CisgICAgLy8gSW5saW5lUm9sZSBpcyB0aGUgZmluYWwgZmFsbGJhY2sg
YmVmb3JlIGFzc2lnbmluZyBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biB0byBhbiBvYmplY3Qu
IEl0IG1ha2VzIGl0CiAgICAgLy8gcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggdHJ1bHkgdW5rbm93
biBvYmplY3RzIGZyb20gbm9uLWZvY3VzYWJsZSBpbmxpbmUgdGV4dCBlbGVtZW50cwogICAgIC8v
IHdoaWNoIGhhdmUgYW4gZXZlbnQgaGFuZGxlciBvciBhdHRyaWJ1dGUgc3VnZ2VzdGluZyBwb3Nz
aWJsZSBpbmNsdXNpb24gYnkgdGhlIHBsYXRmb3JtLgogICAgIGlmIChpczxSZW5kZXJJbmxpbmU+
KCptX3JlbmRlcmVyKQogICAgICAgICAmJiAoaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5jbHVz
aW9uKCkKICAgICAgICAgICAgIHx8IChub2RlICYmIG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkp
CiAgICAgICAgICAgICB8fCAoc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpICYmICFnZXRBdHRy
aWJ1dGUoZGF0ZXRpbWVBdHRyKS5pc0VtcHR5KCkpKSkKLSAgICAgICAgcmV0dXJuIElubGluZVJv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5lOwogCi0gICAgcmV0
dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsK
IH0KIAogQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFPcmll
bnRhdGlvbiA9IGdldEF0dHJpYnV0ZShhcmlhX29yaWVudGF0aW9uQXR0cik7CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgImhvcml6b250YWwi
KSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgInZlcnRp
Y2FsIikpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbDsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7CiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgInVuZGVm
aW5lZCIpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVk
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiAK
ICAgICAvLyBJbiBBUklBIDEuMSwgdGhlIGltcGxpY2l0IHZhbHVlIG9mIGFyaWEtb3JpZW50YXRp
b24gY2hhbmdlZCBmcm9tIGhvcml6b250YWwKICAgICAvLyB0byB1bmRlZmluZWQgb24gYWxsIHJv
bGVzIHRoYXQgZG9uJ3QgaGF2ZSB0aGVpciBvd24gcm9sZS1zcGVjaWZpYyB2YWx1ZXMuIEluCiAg
ICAgLy8gYWRkaXRpb24sIHRoZSBpbXBsaWNpdCB2YWx1ZSBvZiBjb21ib2JveCBiZWNhbWUgdW5k
ZWZpbmVkLgogICAgIGlmIChpc0NvbWJvQm94KCkgfHwgaXNSYWRpb0dyb3VwKCkgfHwgaXNUcmVl
R3JpZCgpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVk
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiAK
ICAgICBpZiAoaXNTY3JvbGxiYXIoKSB8fCBpc0xpc3RCb3goKSB8fCBpc01lbnUoKSB8fCBpc1Ry
ZWUoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKICAgICAK
ICAgICBpZiAoaXNNZW51QmFyKCkgfHwgaXNTcGxpdHRlcigpIHx8IGlzVGFiTGlzdCgpIHx8IGlz
VG9vbGJhcigpIHx8IGlzU2xpZGVyKCkpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uOjpIb3Jpem9udGFsOwogICAgIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpv
cmllbnRhdGlvbigpOwogfQpAQCAtMjg4MSwxNCArMjg4MSwxNCBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmluaGVyaXRzCiAKICAgICBjb25zdCBWZWN0b3I8Y29uc3QgSFRNTFF1
YWxpZmllZE5hbWUqPiogcGFyZW50VGFnczsKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0g
ICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0gICAgY2FzZSBMaXN0TWFya2VyUm9sZTogeworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RNYXJrZXI6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gbGlzdEl0ZW1QYXJl
bnRzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+
IHsgJmRsVGFnLCAmb2xUYWcsICZ1bFRhZyB9KTsKICAgICAgICAgcGFyZW50VGFncyA9ICZsaXN0
SXRlbVBhcmVudHMuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEdyaWRD
ZWxsUm9sZToKLSAgICBjYXNlIENlbGxSb2xlOiB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDogewogICAgICAg
ICBzdGF0aWMgY29uc3QgYXV0byB0YWJsZUNlbGxQYXJlbnRzID0gbWFrZU5ldmVyRGVzdHJveWVk
KFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+IHsgJnRhYmxlVGFnIH0pOwogICAgICAg
ICBwYXJlbnRUYWdzID0gJnRhYmxlQ2VsbFBhcmVudHMuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMjkxMCw3ICsyOTEwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhl
cml0cwogICAgICAgICAvLyBiYXNlZCBvbiBpdHMgcHJlc2VudGF0aW9uYWwgc3RhdHVzLgogICAg
ICAgICBhdXRvJiBuYW1lID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLnRhZ1FOYW1lKCk7CiAg
ICAgICAgIGlmIChzdGQ6OmFueV9vZihwYXJlbnRUYWdzLT5iZWdpbigpLCBwYXJlbnRUYWdzLT5l
bmQoKSwgWyZuYW1lXSAoYXV0byogcG9zc2libGVOYW1lKSB7IHJldHVybiAqcG9zc2libGVOYW1l
ID09IG5hbWU7IH0pKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+cm9sZVZhbHVlKCkgPT0g
UHJlc2VudGF0aW9uYWxSb2xlOworICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+cm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsOwogICAgIH0KIAogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI5MjksMTEgKzI5MjksMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc1ByZXNlbgogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojphcmlh
Um9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdAogewogICAgIHN3aXRjaCAobV9h
cmlhUm9sZSkgewotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFNsaWRlclJvbGU6Ci0g
ICAgY2FzZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6Ci0gICAg
Y2FzZSBTcGluQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5k
aWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b246CiAgICAgLy8g
Y2FzZSBTZXBhcmF0b3JSb2xlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpA
QCAtMjk0Myw3ICsyOTQzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojphcmlh
Um9sZQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0
cmlidXRlKCkgY29uc3QKIHsKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gRGV0YWlsc1JvbGUpCisg
ICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBBbiBvYmplY3QgY2FuIGJlIGV4cGFuZGVkIGlm
IGl0IGFyaWEtZXhwYW5kZWQgaXMgdHJ1ZSBvciBmYWxzZS4KQEAgLTI5OTcsNyArMjk5Nyw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2UKICAgICAgICAgLy8gYWRk
IGFuIDxhcmVhPiBlbGVtZW50IGZvciB0aGlzIGNoaWxkIGlmIGl0IGhhcyBhIGxpbmsKICAgICAg
ICAgaWYgKCFhcmVhLmlzTGluaygpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1
dG8mIGFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShJbWFnZU1hcExpbmtSb2xlKSk7CisgICAgICAgIGF1
dG8mIGFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5r
KSk7CiAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTEFyZWFFbGVtZW50KCZhcmVhKTsKICAgICAg
ICAgYXJlYU9iamVjdC5zZXRIVE1MTWFwRWxlbWVudChtYXApOwogICAgICAgICBhcmVhT2JqZWN0
LnNldFBhcmVudCh0aGlzKTsKQEAgLTMwMzIsNyArMzAzMiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkVGV4dEYKICAgICBpZiAoIWlzPFNwaW5CdXR0b25FbGVtZW50Pihz
cGluQnV0dG9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIGF4U3BpbkJ1
dHRvbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShTcGluQnV0dG9uUm9sZSkpOworICAgIGF1dG8mIGF4U3BpbkJ1dHRvbiA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbikpOwogICAgIGF4U3BpbkJ1dHRv
bi5zZXRTcGluQnV0dG9uRWxlbWVudChkb3duY2FzdDxTcGluQnV0dG9uRWxlbWVudD4oc3BpbkJ1
dHRvbkVsZW1lbnQpKTsKICAgICBheFNwaW5CdXR0b24uc2V0UGFyZW50KHRoaXMpOwogICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZheFNwaW5CdXR0b24pOwpAQCAtMzIwNSw3ICszMjA1LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRIaWRkZQogdm9pZCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojp1cGRhdGVSb2xlQWZ0ZXJDaGlsZHJlbkNyZWF0aW9uKCkKIHsKICAgICAv
LyBJZiBhIG1lbnUgZG9lcyBub3QgaGF2ZSB2YWxpZCBtZW51aXRlbSBjaGlsZHJlbiwgaXQgc2hv
dWxkIG5vdCBiZSBleHBvc2VkIGFzIGEgbWVudS4KLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gTWVu
dVJvbGUpIHsKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUp
IHsKICAgICAgICAgLy8gRWxlbWVudHMgbWFya2VkIGFzIG1lbnVzIG11c3QgaGF2ZSBhdCBsZWFz
dCBvbmUgbWVudSBpdGVtIGNoaWxkLgogICAgICAgICBzaXplX3QgbWVudUl0ZW1Db3VudCA9IDA7
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CkBAIC0zMjE2
LDcgKzMyMTYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIW1lbnVJdGVtQ291bnQpCi0gICAgICAgICAgICBtX3Jv
bGUgPSBHcm91cFJvbGU7CisgICAgICAgICAgICBtX3JvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JvdXA7CiAgICAgfQogfQogICAgIApAQCAtMzI5MCw4ICszMjkwLDggQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGl2ZQogCiAgICAgLy8gV0FJLUFSSUEgImFsZXJ0IiBh
bmQgInN0YXR1cyIgcm9sZXMgaGF2ZSBhbiBpbXBsaWNpdCBhcmlhLWF0b21pYyB2YWx1ZSBvZiB0
cnVlLgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnRSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzMDcsMTYgKzMzMDcsMTYgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5IYXZlUwogewogICAgIHN3aXRjaCAocm9sZVZhbHVl
KCkpIHsKICAgICAvLyBUaGVzZSByb2xlcyBhcmUgY29udGFpbmVycyB3aG9zZSBjaGlsZHJlbiBz
dXBwb3J0IGFyaWEtc2VsZWN0ZWQ6Ci0gICAgY2FzZSBHcmlkUm9sZToKLSAgICBjYXNlIExpc3RC
b3hSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2FzZSBUcmVlUm9sZToKLSAgICBj
YXNlIFRyZWVHcmlkUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFiTGlzdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgogICAgIC8vIFRoZXNlIHJvbGVzIGFyZSBj
b250YWluZXJzIHdob3NlIGNoaWxkcmVuIGFyZSB0cmVhdGVkIGFzIHNlbGVjdGVkIGJ5IGFzc2lz
dGl2ZQogICAgIC8vIHRlY2hub2xvZ2llcy4gV2UgY2FuIGdldCB0aGUgInNlbGVjdGVkIiBpdGVt
IHZpYSBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgb3IgdGhlCiAgICAgLy8gZm9jdXNlZCBlbGVtZW50
LgotICAgIGNhc2UgTWVudVJvbGU6Ci0gICAgY2FzZSBNZW51QmFyUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVC
YXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTMzNjMsNyArMzM2Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YXJpYUxpc3QKIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7
CiAgICAgICAgIC8vIEV2ZXJ5IGNoaWxkIHNob3VsZCBoYXZlIGFyaWEtcm9sZSBvcHRpb24sIGFu
ZCBpZiBzbywgY2hlY2sgZm9yIHNlbGVjdGVkIGF0dHJpYnV0ZS9zdGF0ZS4KLSAgICAgICAgaWYg
KGNoaWxkLT5pc1NlbGVjdGVkKCkgJiYgY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTGlz
dEJveE9wdGlvblJvbGUpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5pc1NlbGVjdGVkKCkgJiYgY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRp
b24pIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hpbGQpOwogICAgICAgICAgICAgaWYg
KCFpc011bHRpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzNzksMjEgKzMzNzksMjEg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZAogICAgICAgICByZXR1
cm47CiAKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OgogICAgICAgICAvLyBuYXRpdmUg
bGlzdCBib3hlcyB3b3VsZCBiZSBBY2Nlc3NpYmlsaXR5TGlzdEJveGVzLCBzbyBvbmx5IGNoZWNr
IGZvciBhcmlhIGxpc3QgYm94ZXMKICAgICAgICAgYXJpYUxpc3Rib3hTZWxlY3RlZENoaWxkcmVu
KHJlc3VsdCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEdyaWRSb2xlOgotICAgIGNhc2Ug
VHJlZVJvbGU6Ci0gICAgY2FzZSBUcmVlR3JpZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgogICAgICAgICBhcmlhU2VsZWN0ZWRSb3dzKHJl
c3VsdCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRhYkxpc3RSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q6CiAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBzZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChzZWxlY3RlZFRhYik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1lbnVSb2xl
OgotICAgIGNhc2UgTWVudUJhclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOgogICAgICAgICBpZiAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogZGVzY2VuZGFudCA9IGFjdGl2ZURlc2NlbmRhbnQoKSkgewogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChkZXNjZW5kYW50KTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM0MjQsNyArMzQyNCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlz
aWJsZUMKICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7CiAgICAgICAgIAogICAgIC8vIG9u
bHkgbGlzdGJveGVzIGFyZSBhc2tlZCBmb3IgdGhlaXIgdmlzaWJsZSBjaGlsZHJlbi4gCi0gICAg
aWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gTGlzdEJveFJvbGUpIHsgLy8gbmF0aXZlIGxpc3Qg
Ym94ZXMgd291bGQgYmUgQWNjZXNzaWJpbGl0eUxpc3RCb3hlcywgc28gb25seSBjaGVjayBmb3Ig
YXJpYSBsaXN0IGJveGVzCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RCb3gpIHsKKyAgICAgICAgLy8gbmF0aXZlIGxpc3QgYm94ZXMgd291bGQg
YmUgQWNjZXNzaWJpbGl0eUxpc3RCb3hlcywgc28gb25seSBjaGVjayBmb3IgYXJpYSBsaXN0IGJv
eGVzCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMzQzMyw3ICszNDM0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2
aXNpYmxlQwogIAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQocm9sZVZh
bHVlKCkgPT0gVGFiTGlzdFJvbGUpOworICAgIEFTU0VSVChyb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6
IGNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc1RhYkl0ZW0oKSkKQEAgLTM0NTMs
MTggKzM0NTQsMTggQEAgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ogog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGxpbmtBY3Rpb24oQVhMaW5r
QWN0aW9uVmVyYigpKTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEJ1
dHRvblJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0
b246CiAgICAgICAgIHJldHVybiBidXR0b25BY3Rpb247Ci0gICAgY2FzZSBUZXh0RmllbGRSb2xl
OgotICAgIGNhc2UgVGV4dEFyZWFSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRl
eHRGaWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKICAgICAgICAg
cmV0dXJuIHRleHRGaWVsZEFjdGlvbjsKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKICAgICAgICAgcmV0dXJuIHJhZGlv
QnV0dG9uQWN0aW9uOwotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OgogICAgICAgICByZXR1cm4gaXNDaGVja2VkKCkgPyBjaGVja2Vk
Q2hlY2tCb3hBY3Rpb24gOiB1bmNoZWNrZWRDaGVja0JveEFjdGlvbjsKLSAgICBjYXNlIExpbmtS
b2xlOgotICAgIGNhc2UgV2ViQ29yZUxpbmtSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms6CiAgICAg
ICAgIHJldHVybiBsaW5rQWN0aW9uOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOwpAQCAtMzY1NSwyNSArMzY1NiwyNSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6ZGVzY3JpCiBzdGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgbXNhYVJvbGVGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duOwogCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpCi0g
ICAgICAgIHJldHVybiBFZGl0YWJsZVRleHRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OkVkaXRhYmxlVGV4dDsKIAogICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4oKnJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIExpc3RJdGVtUm9sZTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsKIAotICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKIEFjY2Vzc2liaWxpdHlS
b2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdAog
ewotICAgIGlmIChtX3JvbGVGb3JNU0FBICE9IFVua25vd25Sb2xlKQorICAgIGlmIChtX3JvbGVG
b3JNU0FBICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gbV9y
b2xlRm9yTVNBQTsKIAogICAgIG1fcm9sZUZvck1TQUEgPSBtc2FhUm9sZUZvclJlbmRlcmVyKHJl
bmRlcmVyKCkpOwogCi0gICAgaWYgKG1fcm9sZUZvck1TQUEgPT0gVW5rbm93blJvbGUpCisgICAg
aWYgKG1fcm9sZUZvck1TQUEgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAg
IG1fcm9sZUZvck1TQUEgPSByb2xlVmFsdWUoKTsKIAogICAgIHJldHVybiBtX3JvbGVGb3JNU0FB
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsMTEgKzExMSwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojph
Y2Nlc3NpYmlsCiB7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCk7CiAgICAgaWYgKCFkZXNjcmlwdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIHRleHRP
cmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoZGVzY3JpcHRpb24sIEFsdGVybmF0aXZlVGV4
dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaXB0
aW9uLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKIAogICAgIFN0cmlu
ZyBoZWxwdGV4dCA9IGhlbHBUZXh0KCk7CiAgICAgaWYgKCFoZWxwdGV4dC5pc0VtcHR5KCkpCi0g
ICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaGVscHRleHQsIEhlbHBU
ZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaGVscHRl
eHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwKSk7CiB9CiAKIFN0cmluZyBBY2Nlc3Np
YmlsaXR5U1ZHRWxlbWVudDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTIx
Nyw3ICsyMTcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojpjb21wdXRlQWNjCiAg
ICAgLy8gKiBUaGV5IGhhdmUgYW4gYW5jZXN0b3Igd2l0aCBDaGlsZHJlbiBQcmVzZW50YXRpb25h
bDogVHJ1ZSAoY292ZXJlZCBieSBDb3JlIEFBTSkKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRl
Y2lzaW9uID09IElnbm9yZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR0hpZGRlbkNvbnRhaW5lcigpKQpAQCAtMjMwLDEwICsy
MzAsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6Y29tcHV0ZUFjYwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBQcmVz
ZW50YXRpb25hbFJvbGUgfHwgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSkKKyAgICBpZiAo
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsIHx8IGluaGVy
aXRzUHJlc2VudGF0aW9uYWxSb2xlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIFRoZSBTVkcgQUFNIHN0YXRlcyB0ZXh0IGVsZW1lbnRzIHNob3VsZCBh
bHNvIGJlIGluY2x1ZGVkLCBpZiB0aGV5IGhhdmUgY29udGVudC4KQEAgLTI1OCwxMiArMjU4LDEy
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmluaGVyaXRzUHIKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgpOwot
ICAgIGlmIChyb2xlICE9IFNWR1RleHRQYXRoUm9sZSAmJiByb2xlICE9IFNWR1RTcGFuUm9sZSkK
KyAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dFBhdGggJiYgcm9sZSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVFNwYW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBh
cmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAgICBpZiAoaXM8
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4oKnBhcmVudCkgJiYgcGFyZW50LT5lbGVtZW50KCkt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+cm9sZVZhbHVlKCkgPT0gUHJlc2VudGF0aW9uYWxSb2xlOworICAgICAgICAgICAgcmV0dXJu
IHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFs
OwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTI3Miw3ICsyNzIsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlTVkdFbGVtZW50Ojppbmhlcml0c1ByCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdAog
ewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChyb2xlICE9IFByZXNlbnRh
dGlvbmFsUm9sZSkKKyAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0
aW9uYWwpCiAgICAgICAgIHJldHVybiByb2xlOwogCiAgICAgLy8gVGhlIHByZXNlbmNlIG9mIGEg
J3RpdGxlJyBvciAnZGVzYycgY2hpbGQgZWxlbWVudCB0cnVtcHMgUHJlc2VudGF0aW9uYWxSb2xl
LgpAQCAtMjgwLDcgKzI4MCw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlTVkdF
bGVtZW4KICAgICAvLyBBdCB0aGlzIHRpbWUsIHRoZSBwcmVzZW5jZSBvZiBhIG1hdGNoaW5nICds
YW5nJyBhdHRyaWJ1dGUgaXMgbm90IG1lbnRpb25lZC4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkIDogY2hpbGRyZW5PZlR5cGU8U1ZHRWxlbWVudD4oKmVsZW1lbnQoKSkpIHsKICAgICAgICAg
aWYgKChpczxTVkdUaXRsZUVsZW1lbnQ+KGNoaWxkKSB8fCBpczxTVkdEZXNjRWxlbWVudD4oY2hp
bGQpKSkKLSAgICAgICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKICAgICB9CiAKICAgICByZXR1cm4gcm9sZTsK
QEAgLTI4OCwyMyArMjg4LDIzIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlTVkdF
bGVtZW4KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJv
bGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bikKICAgICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAKICAgICBFbGVtZW50KiBzdmdF
bGVtZW50ID0gZWxlbWVudCgpOwogCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHU2hhcGUoKSB8
fCBtX3JlbmRlcmVyLT5pc1NWR1BhdGgoKSB8fCBtX3JlbmRlcmVyLT5pc1NWR0ltYWdlKCkgfHwg
aXM8U1ZHVXNlRWxlbWVudD4oc3ZnRWxlbWVudCkpCi0gICAgICAgIHJldHVybiBJbWFnZVJvbGU7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U7CiAgICAgaWYgKG1fcmVu
ZGVyZXItPmlzU1ZHRm9yZWlnbk9iamVjdCgpIHx8IGlzPFNWR0dFbGVtZW50PihzdmdFbGVtZW50
KSkKLSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcm91cDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdUZXh0KCkpCi0gICAgICAg
IHJldHVybiBTVkdUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpT
VkdUZXh0OwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1RleHRQYXRoKCkpCi0gICAgICAgIHJl
dHVybiBTVkdUZXh0UGF0aFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U1ZHVGV4dFBhdGg7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHVFNwYW4oKSkKLSAgICAgICAg
cmV0dXJuIFNWR1RTcGFuUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpT
VkdUU3BhbjsKICAgICBpZiAoaXM8U1ZHQUVsZW1lbnQ+KHN2Z0VsZW1lbnQpKQotICAgICAgICBy
ZXR1cm4gV2ViQ29yZUxpbmtSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OldlYkNvcmVMaW5rOwogCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCShyZXZpc2lvbiAyMjQw
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICBXZWFrUHRyPEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+IG1fcGFyZW50OwotICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEdyb3Vw
Um9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsgfQogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gMjI0MDcxKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEwICs2NSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsCiAgICAgCiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewog
ICAgIC8vIEFSSUEgMS4xIEVsZW1lbnRzIHdpdGggdGhlIHJvbGUgc2Nyb2xsYmFyIGhhdmUgYW4g
aW1wbGljaXQgYXJpYS1vcmllbnRhdGlvbiB2YWx1ZSBvZiB2ZXJ0aWNhbC4KLSAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblVuZGVmaW5lZDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvblZlcnRpY2FsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpV
bmRlZmluZWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOgog
ICAgICAgICByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhciA/IG1fdmVydGljYWxTY3JvbGxiYXIu
Z2V0KCkgOiBudWxscHRyOwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpv
bnRhbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDoKICAg
ICAgICAgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbFNjcm9sbGJh
ci5nZXQoKSA6IG51bGxwdHI7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAkocmV2aXNp
b24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNjcm9s
bFZpZXc7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyBmaW5hbCA6IHB1YmxpYyBBY2Nl
c3NpYmlsaXR5T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3PiBjcmVhdGUoU2Nyb2xsVmlldyopOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbEFyZWFSb2xlOyB9CisgICAg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxWaWV3OyB9CiAKICAgICB2aXJ0dWFsIH5BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwCShyZXZpc2lvbiAyMjQwNzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxNCArNjcsMTQgQEAgQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uIEFjY2Vzc2liaWxpdHlTYwogewogICAgIC8vIEFSSUEgMS4xIEVsZW1lbnRzIHdpdGgg
dGhlIHJvbGUgc2Nyb2xsYmFyIGhhdmUgYW4gaW1wbGljaXQgYXJpYS1vcmllbnRhdGlvbiB2YWx1
ZSBvZiB2ZXJ0aWNhbC4KICAgICBpZiAoIW1fc2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwogCiAgICAgaWYgKG1fc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
OjpWZXJ0aWNhbDsKIAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNh
bDsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjppc0VuYWJsZWQoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyLmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbEJhclJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U2Nyb2xsQmFyOyB9CiAgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2
aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVNsCiB7CiAgICAgLy8gRGVmYXVsdCB0byBob3Jp
em9udGFsIGluIHRoZSB1bmtub3duIGNhc2UuCiAgICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICAKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBtX3JlbmRlcmVyLT5zdHlsZSgpOwogCkBAIC02NCwxNSAr
NjQsMTUgQEAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlTbAogICAgIGNh
c2UgU2xpZGVySG9yaXpvbnRhbFBhcnQ6CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6CiAgICAg
Y2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJQYXJ0OgotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICAKICAgICBjYXNlIFNsaWRlclRodW1i
VmVydGljYWxQYXJ0OiAKICAgICBjYXNlIFNsaWRlclZlcnRpY2FsUGFydDoKICAgICBjYXNlIE1l
ZGlhVm9sdW1lU2xpZGVyUGFydDoKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRh
dGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpW
ZXJ0aWNhbDsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAgfQogfQogICAgIApAQCAtODQsNyArODQsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKCkKIAogICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAK
LSAgICBhdXRvJiB0aHVtYiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNh
Y2hlLT5nZXRPckNyZWF0ZShTbGlkZXJUaHVtYlJvbGUpKTsKKyAgICBhdXRvJiB0aHVtYiA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIpKTsKICAgICB0aHVtYi5zZXRQYXJlbnQodGhpcyk7
CiAKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRoZSB2YWx1ZSBpbmRpY2F0b3IgdG8g
dGhlIGhpZXJhcmNoeSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2xpZGVyUm9s
ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7IH0KICAgICBib29sIGlzU2xpZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPiBjcmVhdGUoKTsKICAgICB2aXJ0
dWFsIH5BY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIoKSA9IGRlZmF1bHQ7CiAKLSAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTbGlkZXJUaHVt
YlJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI7IH0KICAgICBMYXlvdXRS
ZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEy
ICs4OCwxMiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjphZGRDaGlsZHJlCiAgICAg
CiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogICAgIAotICAgIGF1dG8mIGluY3JlbWVudG9y
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3Jl
YXRlKFNwaW5CdXR0b25QYXJ0Um9sZSkpOworICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOwogICAgIGluY3JlbWVudG9yLnNldElzSW5j
cmVtZW50b3IodHJ1ZSk7CiAgICAgaW5jcmVtZW50b3Iuc2V0UGFyZW50KHRoaXMpOwogICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZpbmNyZW1lbnRvcik7CiAKLSAgICBhdXRvJiBkZWNyZW1lbnRvciA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0
ZShTcGluQnV0dG9uUGFydFJvbGUpKTsKKyAgICBhdXRvJiBkZWNyZW1lbnRvciA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBkZWNyZW1lbnRvci5zZXRJc0luY3Jl
bWVudG9yKGZhbHNlKTsKICAgICBkZWNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9j
aGlsZHJlbi5hcHBlbmQoJmRlY3JlbWVudG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgJKHJldmlzaW9u
IDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKCk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTcGluQnV0dG9uUm9sZTsg
fQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9CiAgICAgYm9vbCBpc1NwaW5CdXR0
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVNw
aW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhZGRD
aGlsZHJlbigpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uUGFydCgpOwogICAgIAogICAgIGJvb2wgcHJlc3MoKSBvdmVycmlk
ZTsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBCdXR0b25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjsgfQogICAgIGJv
b2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJ
KHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6aGFzQVJJQVJvbGUoKSBjCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9IGFyaWFSb2xlQXR0cmlidXRl
KCk7Ci0gICAgaWYgKGFyaWFSb2xlICE9IFVua25vd25Sb2xlKQorICAgIGlmIChhcmlhUm9sZSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmFkZENoaWxkcmVuKCkKICAgICAvLyBtYWtlIHRoZSBjb2x1bW5zIGJhc2VkIG9uIHRoZSBu
dW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IG1heENvbHVtbkNvdW50OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4+KCpheENhY2hlLT5nZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGF1dG8m
IGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsKICAgICAgICAgY29sdW1uLnNl
dENvbHVtbkluZGV4KChpbnQpaSk7CiAgICAgICAgIGNvbHVtbi5zZXRQYXJlbnQodGhpcyk7CiAg
ICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7CkBAIC01MDUsNyArNTA1LDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOgogICAgIGlmIChtX2hlYWRlckNv
bnRhaW5lcikKICAgICAgICAgcmV0dXJuIG1faGVhZGVyQ29udGFpbmVyLmdldCgpOwogICAgIAot
ICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q+
KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKFRhYmxlSGVhZGVyQ29udGFpbmVyUm9sZSkp
OworICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3Q+KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJs
ZUhlYWRlckNvbnRhaW5lcikpOwogICAgIHRhYmxlSGVhZGVyLnNldFBhcmVudCh0aGlzKTsKIAog
ICAgIG1faGVhZGVyQ29udGFpbmVyID0gJnRhYmxlSGVhZGVyOwpAQCAtNjQ3LDE4ICs2NDcsMTgg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpybwogICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9sZVZhbHVlKCk7CiAgICAgCiAgICAgQWNj
ZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBhcmlhUm9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChh
cmlhUm9sZSA9PSBHcmlkUm9sZSB8fCBhcmlhUm9sZSA9PSBUcmVlR3JpZFJvbGUpCisgICAgaWYg
KGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkIHx8IGFyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpUcmVlR3JpZCkKICAgICAgICAgcmV0dXJuIGFyaWFSb2xlOwogCi0gICAg
cmV0dXJuIFRhYmxlUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlOwog
fQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lz
aW9uID0gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNs
dWRlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uOjpJbmNsdWRlT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lz
aW9uID09IElnbm9yZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
ICAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKQEAgLTY3MSw3ICs2
NzEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGVFbGVtZW50VGV4CiB7CiAgICAg
U3RyaW5nIHRpdGxlID0gdGhpcy0+dGl0bGUoKTsKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkK
LSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZSwgTGFiZWxC
eUVsZW1lbnRUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCkpOwogfQog
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDkgKzU4LDkg
QEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2liaWxpdAogYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmpl
Y3RJbmNsdXNpb24oKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICBp
ZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmpl
Y3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Okln
bm9yZU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gSWdub3JlIGFu
b255bW91cyB0YWJsZSBjZWxscyBhcyBsb25nIGFzIHRoZXkncmUgbm90IGluIGEgdGFibGUgKGll
LiB3aGVuIGRpc3BsYXk6dGFibGUgaXMgdXNlZCkuCkBAIC0xMjgsMTcgKzEyOCwxNyBAQCBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsCiAgICAgLy8gcm9sZSwgZmFsbGlu
ZyBiYWNrIG9uIHRoZSByb2xlIHRvIGJlIHVzZWQgaWYgd2UgZGV0ZXJtaW5lIGhlcmUgdGhhdCB0
aGUgZWxlbWVudAogICAgIC8vIHNob3VsZCBub3QgYmUgZXhwb3NlZCBhcyBhIGNlbGwuIFRodXMg
aWYgd2UgYWxyZWFkeSBrbm93IGl0J3MgYSBjZWxsLCByZXR1cm4gdGhhdC4KICAgICBBY2Nlc3Np
YmlsaXR5Um9sZSBkZWZhdWx0Um9sZSA9IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7Ci0gICAgaWYgKGRlZmF1bHRSb2xlID09IENvbHVtbkhl
YWRlclJvbGUgfHwgZGVmYXVsdFJvbGUgPT0gUm93SGVhZGVyUm9sZSB8fCBkZWZhdWx0Um9sZSA9
PSBDZWxsUm9sZSB8fCBkZWZhdWx0Um9sZSA9PSBHcmlkQ2VsbFJvbGUpCisgICAgaWYgKGRlZmF1
bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIgfHwgZGVmYXVsdFJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q2VsbCB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jp
ZENlbGwpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Um9sZTsKIAogICAgIGlmICghaXNUYWJsZUNl
bGwoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlOwogICAgIGlmIChpc0NvbHVtbkhlYWRl
ckNlbGwoKSkKLSAgICAgICAgcmV0dXJuIENvbHVtbkhlYWRlclJvbGU7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyOwogICAgIGlmIChpc1Jvd0hlYWRlckNl
bGwoKSkKLSAgICAgICAgcmV0dXJuIFJvd0hlYWRlclJvbGU7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOwogCi0gICAgcmV0dXJuIENlbGxSb2xlOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUhlYWRlckNlbGwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUMKICAgICAKICAgICBp
ZiAocGFyZW50VGFibGUuaXNBcmlhVGFibGUoKSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNlbGwgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAoY2VsbC0+YXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBDb2x1bW5IZWFkZXJSb2xlKQorICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFS
b2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcikKICAgICAg
ICAgICAgICAgICByZXR1cm4gY2VsbC5nZXQoKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVy
T2JqZWN0KCk7CiAgICAgICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbHVtblJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRleChpbnQgY29sdW1uSW5kZXgp
IHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CiAgICAgaW50IGNvbHVtbkluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9jb2x1bW5JbmRleDsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmls
aXR5VGFibGVIZWFkZXJDb250YWluZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2li
aWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcigpOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFRhYmxlSGVhZGVyQ29udGFpbmVy
Um9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjsgfQogICAg
IAogICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5j
cHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDEwIEBA
IEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzoKICAgICBpZiAoIWlzVGFi
bGVSb3coKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJv
bGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bikKICAgICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAKLSAgICByZXR1cm4gUm93Um9s
ZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzsKIH0KIAogYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGVSb3c6OmlzVGFibGVSb3coKSBjb25zdApAQCAtODAsOSArODAsOSBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSCiBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZVJvdzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogeyAgICAKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gZGVmYXVsdE9iamVjdElu
Y2x1c2lvbigpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQorICAgIGlmIChk
ZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkK
KyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoIWlzVGFibGVSb3co
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRyZWUuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5
LDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmNvbXB1dGVBY2Nlc3NpYmkKIAogQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRyZWU6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkKIHsKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgp
KSAhPSBUcmVlUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0
dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSkKICAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAK
LSAgICByZXR1cm4gaXNUcmVlVmFsaWQoKSA/IFRyZWVSb2xlIDogR3JvdXBSb2xlOworICAgIHJl
dHVybiBpc1RyZWVWYWxpZCgpID8gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWUgOiBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JvdXA7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6Om5vZGVIYXNUcmVl
SXRlbUNoaWxkKE5vZGUmIG5vZGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAkocmV2aXNpb24gMjI0
MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpkZXRhY2hXcmFwcGVyKEFjY2VzcwogCiAgICAgLy8gSWYgYW4gb2JqZWN0IGlzIGJlaW5nIGRl
dGFjaGVkIE5PVCBiZWNhdXNlIG9mIHRoZSBBWE9iamVjdENhY2hlIGJlaW5nIGRlc3Ryb3llZCwK
ICAgICAvLyB0aGVuIGl0J3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBhY2Nlc3NpYmlsaXR5IHRy
ZWUgYW5kIHdlIHNob3VsZCBlbWl0IGEgc2lnbmFsLgotICAgIGlmIChkZXRhY2htZW50VHlwZSAh
PSBDYWNoZURlc3Ryb3llZCkgeworICAgIGlmIChkZXRhY2htZW50VHlwZSAhPSBBY2Nlc3NpYmls
aXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKSB7CiAgICAgICAgIGlmIChvYmotPmRv
Y3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIExvb2sgZm9yIHRoZSByaWdodCBvYmplY3QgdG8g
ZW1pdCB0aGUgc2lnbmFsIGZyb20sIGJ1dCB1c2luZyB0aGUgaW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgIC8vIG9mIGF0a19vYmplY3RfZ2V0X3BhcmVudCBmcm9tIEF0a09iamVjdCBjbGFzcyAo
d2hpY2ggdXNlcyBhIGNhY2hlZCBwb2ludGVyIGlmIHNldCkKQEAgLTI0NCw3ICsyNDQsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhCiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBBWEN1cnJlbnRDaGFuZ2VkOgotICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9z
dGF0ZV9jaGFuZ2UoYXhPYmplY3QsIEFUS19TVEFURV9BQ1RJVkUsIGNvcmVPYmplY3QtPmFyaWFD
dXJyZW50U3RhdGUoKSAhPSBBUklBQ3VycmVudEZhbHNlKTsKKyAgICAgICAgYXRrX29iamVjdF9u
b3RpZnlfc3RhdGVfY2hhbmdlKGF4T2JqZWN0LCBBVEtfU1RBVEVfQUNUSVZFLCBjb3JlT2JqZWN0
LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZh
bHNlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFYUm93RXhwYW5kZWQ6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nlc3Np
YmlsaXR5T2JqZWN0QXRrLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDExNyArNDMsMTE3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNj
ZXNzaWJpbGkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3QoKTsKICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhh
dmlvcjsKIAogICAgIC8vIElmIHRoZSBhdXRob3IgaGFzIHByb3ZpZGVkIGEgcm9sZSwgcGxhdGZv
cm0tc3BlY2lmaWMgaW5jbHVzaW9uIGxpa2VseSBkb2Vzbid0IGFwcGx5LgotICAgIGlmIChhcmlh
Um9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlKQotICAgICAgICByZXR1cm4gRGVmYXVsdEJl
aGF2aW9yOworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xl
OjpVbmtub3duKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
RGVmYXVsdEJlaGF2aW9yOwogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1
ZSgpOwogICAgIC8vIFdlIGV4cG9zZSB0aGUgc2xpZGVyIGFzIGEgd2hvbGUgYnV0IG5vdCBpdHMg
dmFsdWUgaW5kaWNhdG9yLgotICAgIGlmIChyb2xlID09IFNsaWRlclRodW1iUm9sZSkKLSAgICAg
ICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyVGh1bWIpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uOjpJZ25vcmVPYmplY3Q7CiAKICAgICAvLyBXaGVuIGEgbGlzdCBpdGVtIGlzIG1hZGUgdXAg
ZW50aXJlbHkgb2YgY2hpbGRyZW4gKGUuZy4gcGFyYWdyYXBocykKICAgICAvLyB0aGUgbGlzdCBp
dGVtIGdldHMgaWdub3JlZC4gV2UgbmVlZCBpdC4KICAgICBpZiAoaXNHcm91cCgpICYmIHBhcmVu
dC0+aXNMaXN0KCkpCi0gICAgICAgIHJldHVybiBJbmNsdWRlT2JqZWN0OworICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdDsKIAogICAgIC8v
IEVudHJpZXMgYW5kIHBhc3N3b3JkIGZpZWxkcyBoYXZlIGV4dHJhbmVvdXMgY2hpbGRyZW4gd2hp
Y2ggd2Ugd2FudCB0byBpZ25vcmUuCiAgICAgaWYgKHBhcmVudC0+aXNQYXNzd29yZEZpZWxkKCkg
fHwgcGFyZW50LT5pc1RleHRDb250cm9sKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmpl
Y3Q7CiAKICAgICAvLyBJbmNsdWRlIGFsbCB0YWJsZXMsIGV2ZW4gbGF5b3V0IHRhYmxlcy4gVGhl
IEFUIGNhbiBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIGVhY2guCi0gICAgaWYgKHJvbGUgPT0gQ2Vs
bFJvbGUgfHwgcm9sZSA9PSBUYWJsZVJvbGUgfHwgcm9sZSA9PSBDb2x1bW5IZWFkZXJSb2xlIHx8
IHJvbGUgPT0gUm93SGVhZGVyUm9sZSkKLSAgICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7Cisg
ICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwgfHwgcm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFibGUgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVh
ZGVyIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcikKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3Q7CiAKICAgICAv
LyBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRleHQgc2hvdWxkIGltcGxlbWVudCBBdGtUZXh0
IGl0c2VsZi4KICAgICAvLyBIb3dldmVyLCBXZWJDb3JlIGFsc28gbWFwcyBBUklBJ3MgInRleHQi
IHJvbGUgdG8gdGhlIFN0YXRpY1RleHRSb2xlLgotICAgIGlmIChyb2xlID09IFN0YXRpY1RleHRS
b2xlKQotICAgICAgICByZXR1cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSA/
IERlZmF1bHRCZWhhdmlvciA6IElnbm9yZU9iamVjdDsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3RhdGljVGV4dCkKKyAgICAgICAgcmV0dXJuIGFyaWFSb2xlQXR0cmlidXRl
KCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uOjpEZWZhdWx0QmVoYXZpb3IgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJ
Z25vcmVPYmplY3Q7CiAKICAgICAvLyBJbmNsdWRlIGFsbCBsaXN0IGl0ZW1zLCByZWdhcmRsZXNz
IHRoZXkgaGF2ZSBvciBub3QgaW5saW5lIGNoaWxkcmVuCi0gICAgaWYgKHJvbGUgPT0gTGlzdEl0
ZW1Sb2xlKQotICAgICAgICByZXR1cm4gSW5jbHVkZU9iamVjdDsKKyAgICBpZiAocm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0OwogCiAgICAgLy8gQnVsbGV0cy9udW1iZXJz
IGZvciBsaXN0IGl0ZW1zIHNob3VsZG4ndCBiZSBleHBvc2VkIGFzIEF0a09iamVjdHMuCi0gICAg
aWYgKHJvbGUgPT0gTGlzdE1hcmtlclJvbGUpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7
CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJrZXIpCisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAKICAg
ICAvLyBOZXZlciBleHBvc2UgYW4gdW5rbm93biBvYmplY3QsIHNpbmNlIEFUJ3Mgd29uJ3Qga25v
dyB3aGF0IHRvCiAgICAgLy8gZG8gd2l0aCB0aGVtLiBUaGlzIGlzIHdoYXQgaXMgZG9uZSBvbiB0
aGUgTWFjIGFzIHdlbGwuCi0gICAgaWYgKHJvbGUgPT0gVW5rbm93blJvbGUpCi0gICAgICAgIHJl
dHVybiBJZ25vcmVPYmplY3Q7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVu
a25vd24pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25v
cmVPYmplY3Q7CiAKLSAgICBpZiAocm9sZSA9PSBJbmxpbmVSb2xlKQotICAgICAgICByZXR1cm4g
SW5jbHVkZU9iamVjdDsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5l
KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9i
amVjdDsKIAogICAgIC8vIExpbmVzIHBhc3QgdGhpcyBwb2ludCBvbmx5IG1ha2Ugc2Vuc2UgZm9y
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3RzLgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2Jq
ZWN0ID0gcmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlck9iamVjdCkKLSAgICAgICAgcmV0dXJu
IERlZmF1bHRCZWhhdmlvcjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb246OkRlZmF1bHRCZWhhdmlvcjsKIAogICAgIC8vIFdlIGFsd2F5cyB3YW50IHRvIGluY2x1
ZGUgcGFyYWdyYXBocyB0aGF0IGhhdmUgcmVuZGVyZWQgY29udGVudC4KICAgICAvLyBXZWJDb3Jl
IEFjY2Vzc2liaWxpdHkgZG9lcyBzbyB1bmxlc3MgdGhlcmUgaXMgYSBSZW5kZXJCbG9jayBjaGls
ZC4KLSAgICBpZiAocm9sZSA9PSBQYXJhZ3JhcGhSb2xlKSB7CisgICAgaWYgKHJvbGUgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaCkgewogICAgICAgICBhdXRvIGNoaWxkID0gY2hpbGRy
ZW5PZlR5cGU8UmVuZGVyQmxvY2s+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJPYmpl
Y3QpKS5maXJzdCgpOwotICAgICAgICByZXR1cm4gY2hpbGQgPyBJbmNsdWRlT2JqZWN0IDogRGVm
YXVsdEJlaGF2aW9yOworICAgICAgICByZXR1cm4gY2hpbGQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0IDogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
RGVmYXVsdEJlaGF2aW9yOwogICAgIH0KIAogICAgIC8vIFdlIGFsd2F5cyB3YW50IHRvIGluY2x1
ZGUgdGFibGUgY2VsbHMgKGxheW91dCBhbmQgQ1NTKSB0aGF0IGhhdmUgcmVuZGVyZWQgdGV4dCBj
b250ZW50LgogICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlck9iamVjdCkpIHsKICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVj
dD4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnJlbmRlck9iamVjdCkpKSB7CiAgICAgICAgICAg
ICBpZiAoaXM8UmVuZGVySW5saW5lPihjaGlsZCkgfHwgaXM8UmVuZGVyVGV4dD4oY2hpbGQpIHx8
IGlzPEhUTUxTcGFuRWxlbWVudD4oY2hpbGQubm9kZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gSW5jbHVkZU9iamVjdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
RGVmYXVsdEJlaGF2aW9yOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1
c2lvbjo6RGVmYXVsdEJlaGF2aW9yOwogICAgIH0KIAogICAgIGlmIChyZW5kZXJPYmplY3QtPmlz
QW5vbnltb3VzQmxvY2soKSkgewogICAgICAgICAvLyBUaGUgdGV4dCBkaXNwbGF5ZWQgYnkgYW4g
QVJJQSBtZW51IGl0ZW0gaXMgZXhwb3NlZCB0aHJvdWdoIHRoZSBhY2Nlc3NpYmxlIG5hbWUuCiAg
ICAgICAgIGlmIChwYXJlbnQtPmlzTWVudUl0ZW0oKSkKLSAgICAgICAgICAgIHJldHVybiBJZ25v
cmVPYmplY3Q7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lv
bjo6SWdub3JlT2JqZWN0OwogCiAgICAgICAgIC8vIFRoZSB0ZXh0IGRpc3BsYXllZCBpbiBoZWFk
aW5ncyBpcyB0eXBpY2FsbHkgZXhwb3NlZCBpbiB0aGUgaGVhZGluZyBpdHNlbGYuCiAgICAgICAg
IGlmIChwYXJlbnQtPmlzSGVhZGluZygpKQotICAgICAgICAgICAgcmV0dXJuIElnbm9yZU9iamVj
dDsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25v
cmVPYmplY3Q7CiAKICAgICAgICAgLy8gVGhlIHRleHQgZGlzcGxheWVkIGluIGxpc3QgaXRlbXMg
aXMgdHlwaWNhbGx5IGV4cG9zZWQgaW4gdGhlIGxpc3QgaXRlbSBpdHNlbGYuCiAgICAgICAgIGlm
IChwYXJlbnQtPmlzTGlzdEl0ZW0oKSkKLSAgICAgICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7
CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0OwogCiAgICAgICAgIC8vIFRoZSB0ZXh0IGRpc3BsYXllZCBpbiBsaW5rcyBpcyB0eXBp
Y2FsbHkgZXhwb3NlZCBpbiB0aGUgbGluayBpdHNlbGYuCiAgICAgICAgIGlmIChwYXJlbnQtPmlz
TGluaygpKQotICAgICAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgbmV4dCBvbmUgbmVlZHMgc29tZSBmdXJ0aGVyIGNvbnNpZGVyYXRp
b24uIEJ1dCBwYXJhZ3JhcGhzIGFyZSBub3QKICAgICAgICAgLy8gdHlwaWNhbGx5IGh1Z2UgKGxp
a2UgZGl2cykuIEFuZCBpZ25vcmluZyBhbm9ueW1vdXMgYmxvY2sgY2hpbGRyZW4gb2YgcGFyYWdy
YXBocwogICAgICAgICAvLyB3aWxsIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW9yLgotICAgICAg
ICBpZiAocGFyZW50LT5yb2xlVmFsdWUoKSA9PSBQYXJhZ3JhcGhSb2xlKQotICAgICAgICAgICAg
cmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgaWYgKHBhcmVudC0+cm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaCkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAKLSAgICAgICAgcmV0dXJuIERl
ZmF1bHRCZWhhdmlvcjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b246OkRlZmF1bHRCZWhhdmlvcjsKICAgICB9CiAKICAgICBOb2RlKiBub2RlID0gcmVuZGVyT2Jq
ZWN0LT5ub2RlKCk7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gRGVmYXVsdEJlaGF2
aW9yOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVs
dEJlaGF2aW9yOwogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCA8c3Bhbj4gZWxlbWVudHMgdG8gc2hv
dyB1cCBpbiB0aGUgYWNjZXNzaWJpbGl0eSBoaWVyYXJjaHkgdW5sZXNzCiAgICAgLy8gd2UgaGF2
ZSBnb29kIHJlYXNvbnMgZm9yIHRoYXQgKGUuZy4gZm9jdXNhYmxlIG9yIHZpc2libGUgYmVjYXVz
ZSBvZiBjb250YWluaW5nCiAgICAgLy8gYSBtZWFuaW5nZnVsIGFjY2Vzc2libGUgbmFtZSwgbWF5
YmUgc2V0IHRocm91Z2ggQVJJQSksIHNvIHdlIGNhbiB1c2UKICAgICAvLyBhdGtfY29tcG9uZW50
X2dyYWJfZm9jdXMoKSB0byBzZXQgdGhlIGZvY3VzIHRvIGl0LgogICAgIGlmIChpczxIVE1MU3Bh
bkVsZW1lbnQ+KG5vZGUpICYmICFjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpICYmICFoYXNBdHRyaWJ1
dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSAmJiAhc3VwcG9ydHNBUklBQXR0cmlidXRlcygpKQot
ICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogCiAgICAgLy8gSWYgd2UgaW5jbHVkZSBU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQgY2hpbGRyZW4sIGNoYW5nZXMgdG8gdGhvc2UgY2hp
bGRyZW4KICAgICAvLyB3aWxsIHJlc3VsdCBpbiBmb2N1cyBhbmQgdGV4dCBub3RpZmljYXRpb25z
IHRoYXQgc3VnZ2VzdCB0aGUgdXNlciBpcyBubyBsb25nZXIKICAgICAvLyBpbiB0aGUgY29udHJv
bC4gVGhpcyBjYW4gYmUgZXNwZWNpYWxseSBwcm9ibGVtYXRpYyBmb3Igc2NyZWVuIHJlYWRlciB1
c2VycyB3aXRoCiAgICAgLy8ga2V5IGVjaG8gZW5hYmxlZCB3aGVuIHR5cGluZyBpbiBhIHBhc3N3
b3JkIGlucHV0LgogICAgIGlmIChpczxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+KG5vZGUp
KQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogCi0gICAgcmV0dXJuIERlZmF1bHRC
ZWhhdmlvcjsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVs
dEJlaGF2aW9yOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQWNjZXNzaWJpbGl0
eU9iamVjdDo6d3JhcHBlcigpIGNvbnN0CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZwogCiAgICAgLy8gQ2hlY2sgcm9sZXMgYXMgdGhl
IGxhc3QgZmFsbGJhY2sgbWVjaGFuaXNtLgogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBy
b2xlVmFsdWUoKTsKLSAgICByZXR1cm4gcm9sZSA9PSBQYXJhZ3JhcGhSb2xlIHx8IHJvbGUgPT0g
TGFiZWxSb2xlIHx8IHJvbGUgPT0gRGl2Um9sZSB8fCByb2xlID09IEZvcm1Sb2xlIHx8IHJvbGUg
PT0gUHJlUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UGFyYWdy
YXBoIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsIHx8IHJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkRpdiB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtIHx8IHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZTsKIH0KIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Z2V0TGVuZ3RoRm9yVGV4dFJhbmdlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRp
bC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMjEgKzk2
LDIxIEBAIFN0cmluZyBhY2Nlc3NpYmlsaXR5VGl0bGUoQWNjZXNzaWJpbGl0eU8KIAogICAgIGZv
ciAoY29uc3QgQWNjZXNzaWJpbGl0eVRleHQmIHRleHQgOiB0ZXh0T3JkZXIpIHsKICAgICAgICAg
Ly8gT25jZSB3ZSBlbmNvdW50ZXIgdmlzaWJsZSB0ZXh0LCBvciB0aGUgdGV4dCBmcm9tIG91ciBj
aGlsZHJlbiB0aGF0IHNob3VsZCBiZSB1c2VkIGZvcmVtb3N0LgotICAgICAgICBpZiAodGV4dC50
ZXh0U291cmNlID09IFZpc2libGVUZXh0IHx8IHRleHQudGV4dFNvdXJjZSA9PSBDaGlsZHJlblRl
eHQpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2U6OlZpc2libGUgfHwgdGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNl
OjpDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRleHQ7CiAKICAgICAgICAgLy8g
SWYgdGhlcmUncyBhbiBlbGVtZW50IHRoYXQgbGFiZWxzIHRoaXMgb2JqZWN0IGFuZCBpdCdzIG5v
dCBleHBvc2VkLCB0aGVuIHdlIHNob3VsZCB1c2UKICAgICAgICAgLy8gdGhhdCB0ZXh0IGFzIG91
ciB0aXRsZS4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBMYWJlbEJ5RWxlbWVudFRl
eHQgJiYgIWNvcmVPYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQorICAgICAgICBpZiAo
dGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVu
dCAmJiAhY29yZU9iamVjdC0+ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdGV4dC50ZXh0OwogCi0gICAgICAgIC8vIEVsZW1lbnRzIG9mIHJvbGUgVG9vbGJhclJv
bGUgd2lsbCByZXR1cm4gaXRzIHRpdGxlIGFzIEFsdGVybmF0aXZlVGV4dC4KLSAgICAgICAgaWYg
KGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IFRvb2xiYXJSb2xlICYmIHRleHQudGV4dFNvdXJj
ZSA9PSBBbHRlcm5hdGl2ZVRleHQpCisgICAgICAgIC8vIEVsZW1lbnRzIG9mIHJvbGUgQWNjZXNz
aWJpbGl0eVJvbGU6OlRvb2xiYXIgd2lsbCByZXR1cm4gaXRzIHRpdGxlIGFzIEFjY2Vzc2liaWxp
dHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZS4KKyAgICAgICAgaWYgKGNvcmVPYmplY3QtPnJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyICYmIHRleHQudGV4dFNvdXJjZSA9
PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpCiAgICAgICAgICAgICByZXR1
cm4gdGV4dC50ZXh0OwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgdGl0bGUgdGFnIGlzIHVzZWQg
aW4gY2VydGFpbiBjYXNlcyBmb3IgdGhlIHRpdGxlLiBUaGlzIHVzYWdlIHNob3VsZAogICAgICAg
ICAvLyBwcm9iYWJseSBiZSBpbiB0aGUgZGVzY3JpcHRpb24gZmllbGQgc2luY2UgaXQncyBub3Qg
InZpc2libGUiLgotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IFRpdGxlVGFnVGV4dCAm
JiAhdGl0bGVUYWdTaG91bGRCZVVzZWRJbkRlc2NyaXB0aW9uRmllbGQoY29yZU9iamVjdCkpCisg
ICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlRp
dGxlVGFnICYmICF0aXRsZVRhZ1Nob3VsZEJlVXNlZEluRGVzY3JpcHRpb25GaWVsZChjb3JlT2Jq
ZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRleHQ7CiAgICAgfQogCkBAIC0xMjQsMTkg
KzEyNCwxOSBAQCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKEFjY2Vzc2liCiAKICAg
ICBib29sIHZpc2libGVUZXh0QXZhaWxhYmxlID0gZmFsc2U7CiAgICAgZm9yIChjb25zdCBBY2Nl
c3NpYmlsaXR5VGV4dCYgdGV4dCA6IHRleHRPcmRlcikgewotICAgICAgICBpZiAodGV4dC50ZXh0
U291cmNlID09IEFsdGVybmF0aXZlVGV4dCkKKyAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9
PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpCiAgICAgICAgICAgICByZXR1
cm4gdGV4dC50ZXh0OwogCiAgICAgICAgIHN3aXRjaCAodGV4dC50ZXh0U291cmNlKSB7Ci0gICAg
ICAgIGNhc2UgVmlzaWJsZVRleHQ6Ci0gICAgICAgIGNhc2UgQ2hpbGRyZW5UZXh0OgotICAgICAg
ICBjYXNlIExhYmVsQnlFbGVtZW50VGV4dDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZTo6VmlzaWJsZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
Q2hpbGRyZW46CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkxhYmVsQnlF
bGVtZW50OgogICAgICAgICAgICAgdmlzaWJsZVRleHRBdmFpbGFibGUgPSB0cnVlOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
dGV4dC50ZXh0U291cmNlID09IFRpdGxlVGFnVGV4dCAmJiAhdmlzaWJsZVRleHRBdmFpbGFibGUp
CisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6
OlRpdGxlVGFnICYmICF2aXNpYmxlVGV4dEF2YWlsYWJsZSkKICAgICAgICAgICAgIHJldHVybiB0
ZXh0LnRleHQ7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCShy
ZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYs
NyBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVHZXROCiAgICAgICAgIC8v
IFdlYkNvcmUgQWNjZXNzaWJpbGl0eSBzaG91bGQgcHJvdmlkZSB1cyB3aXRoIHRoZSB0ZXh0IGFs
dGVybmF0aXZlIGNvbXB1dGF0aW9uCiAgICAgICAgIC8vIGluIHRoZSBvcmRlciBkZWZpbmVkIGJ5
IHRoYXQgc3BlYy4gU28gdGFrZSB0aGUgZmlyc3QgdGhpbmcgdGhhdCBvdXIgcGxhdGZvcm0KICAg
ICAgICAgLy8gZG9lcyBub3QgZXhwb3NlIHZpYSB0aGUgQXRrT2JqZWN0IGRlc2NyaXB0aW9uLgot
ICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlICE9IEhlbHBUZXh0ICYmIHRleHQudGV4dFNvdXJj
ZSAhPSBTdW1tYXJ5VGV4dCkKKyAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSAhPSBBY2Nlc3Np
YmlsaXR5VGV4dFNvdXJjZTo6SGVscCAmJiB0ZXh0LnRleHRTb3VyY2UgIT0gQWNjZXNzaWJpbGl0
eVRleHRTb3VyY2U6OlN1bW1hcnkpCiAgICAgICAgICAgICByZXR1cm4gY2FjaGVBbmRSZXR1cm5B
dGtQcm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZEFjY2Vzc2libGVOYW1lLCB0ZXh0LnRleHQpOwog
ICAgIH0KIApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRB
Y2Nlc3NpYmxlR2V0RAogICAgICAgICAvLyBXZWJDb3JlIEFjY2Vzc2liaWxpdHkgc2hvdWxkIHBy
b3ZpZGUgdXMgd2l0aCB0aGUgdGV4dCBhbHRlcm5hdGl2ZSBjb21wdXRhdGlvbgogICAgICAgICAv
LyBpbiB0aGUgb3JkZXIgZGVmaW5lZCBieSB0aGF0IHNwZWMuIFNvIHRha2UgdGhlIGZpcnN0IHRo
aW5nIHRoYXQgb3VyIHBsYXRmb3JtCiAgICAgICAgIC8vIGRvZXMgbm90IGV4cG9zZSB2aWEgdGhl
IEF0a09iamVjdCBuYW1lLgotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEhlbHBUZXh0
IHx8IHRleHQudGV4dFNvdXJjZSA9PSBTdW1tYXJ5VGV4dCkKKyAgICAgICAgaWYgKHRleHQudGV4
dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCB8fCB0ZXh0LnRleHRTb3Vy
Y2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpCiAgICAgICAgICAgICByZXR1
cm4gY2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZEFjY2Vzc2libGVE
ZXNjcmlwdGlvbiwgdGV4dC50ZXh0KTsKIAogICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBvdGhl
ciB0ZXh0IGFsdGVybmF0aXZlLCB0aGUgdGl0bGUgdGFnIGNvbnRlbnRzIHdpbGwgaGF2ZSBiZWVu
CiAgICAgICAgIC8vIHVzZWQgZm9yIHRoZSBBdGtPYmplY3QgbmFtZS4gV2UgZG9uJ3Qgd2FudCB0
byBkdXBsaWNhdGUgaXQgaGVyZS4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBUaXRs
ZVRhZ1RleHQgJiYgbmFtZVRleHRBdmFpbGFibGUpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3Vy
Y2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlRpdGxlVGFnICYmIG5hbWVUZXh0QXZhaWxh
YmxlKQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkob2JqZWN0
LCBBdGtDYWNoZWRBY2Nlc3NpYmxlRGVzY3JpcHRpb24sIHRleHQudGV4dCk7CiAKICAgICAgICAg
bmFtZVRleHRBdmFpbGFibGUgPSB0cnVlOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyB2b2lk
IHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmoKICAgICB9IGVsc2UgaWYgKGNvcmVPYmplY3Qt
PmlzRmllbGRzZXQoKSkgewogICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogbGFiZWwg
PSBjb3JlT2JqZWN0LT50aXRsZVVJRWxlbWVudCgpKQogICAgICAgICAgICAgYXRrX3JlbGF0aW9u
X3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVM
TEVEX0JZLCBsYWJlbC0+d3JhcHBlcigpKTsKLSAgICB9IGVsc2UgaWYgKGNvcmVPYmplY3QtPnJv
bGVWYWx1ZSgpID09IExlZ2VuZFJvbGUpIHsKKyAgICB9IGVsc2UgaWYgKGNvcmVPYmplY3QtPnJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMZWdlbmQpIHsKICAgICAgICAgaWYgKFJl
bmRlckJsb2NrKiByZW5kZXJGaWVsZHNldCA9IGFuY2VzdG9yc09mVHlwZTxSZW5kZXJCbG9jaz4o
KmNvcmVPYmplY3QtPnJlbmRlcmVyKCkpLmZpcnN0KCkpIHsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJGaWVsZHNldC0+aXNGaWVsZHNldCgpKSB7CiAgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogZmllbGRzZXQgPSBjb3JlT2JqZWN0LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKHJlbmRlckZpZWxkc2V0KTsKQEAgLTQ1NSwxMCArNDU1LDEwIEBAIHN0YXRpYyBBdGtBdHRy
aWJ1dGVTZXQqIHdlYmtpdEFjY2Vzc2libGUKICAgICAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9B
dGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAibGV2ZWwiLCB2YWx1ZS51dGY4KCkuZGF0YSgp
KTsKICAgICB9CiAKLSAgICBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gTWF0aEVsZW1l
bnRSb2xlKSB7Ci0gICAgICAgIGlmIChjb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChQcmVTdXBlcnNjcmlwdCkgfHwgY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3Qo
UHJlU3Vic2NyaXB0KSkKKyAgICBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6Ok1hdGhFbGVtZW50KSB7CisgICAgICAgIGlmIChjb3JlT2JqZWN0LT5pc01h
dGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlw
ZTo6UHJlU3VwZXJzY3JpcHQpIHx8IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0
KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdWJzY3JpcHQpKQog
ICAgICAgICAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRl
U2V0LCAibXVsdGlzY3JpcHQtdHlwZSIsICJwcmUiKTsKLSAgICAgICAgZWxzZSBpZiAoY29yZU9i
amVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoUG9zdFN1cGVyc2NyaXB0KSB8fCBjb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChQb3N0U3Vic2NyaXB0KSkKKyAgICAgICAgZWxz
ZSBpZiAoY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBvc3RTdXBlcnNjcmlwdCkgfHwgY29yZU9iamVjdC0+
aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVj
dFR5cGU6OlBvc3RTdWJzY3JpcHQpKQogICAgICAgICAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9B
dGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7
CiAgICAgfQogCkBAIC01MTEsMTggKzUxMSwxOCBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3
ZWJraXRBY2Nlc3NpYmxlCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRlcyB0aGF0IGFuIGV4cGxp
Y2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRpbmcgIm5vbmUiLgogICAg
IGlmIChjb3JlT2JqZWN0LT5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX3NvcnRBdHRyKSkg
ewogICAgICAgICBzd2l0Y2ggKGNvcmVPYmplY3QtPnNvcnREaXJlY3Rpb24oKSkgewotICAgICAg
ICBjYXNlIFNvcnREaXJlY3Rpb25JbnZhbGlkOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlT
b3J0RGlyZWN0aW9uOjpJbnZhbGlkOgogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U29ydERpcmVjdGlvbkFzY2VuZGluZzoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERp
cmVjdGlvbjo6QXNjZW5kaW5nOgogICAgICAgICAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtB
dHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAic29ydCIsICJhc2NlbmRpbmciKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNvcnREaXJlY3Rpb25EZXNjZW5kaW5nOgorICAgICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpEZXNjZW5kaW5nOgogICAgICAgICAg
ICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAic29y
dCIsICJkZXNjZW5kaW5nIik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTb3J0
RGlyZWN0aW9uT3RoZXI6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246
Ok90aGVyOgogICAgICAgICAgICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQo
YXR0cmlidXRlU2V0LCAic29ydCIsICJvdGhlciIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok5v
bmU6CiAgICAgICAgICAgICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChhdHRy
aWJ1dGVTZXQsICJzb3J0IiwgIm5vbmUiKTsKICAgICAgICAgfQogICAgIH0KQEAgLTU1Niw3ICs1
NTYsNyBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlCiAKICAgICAg
ICAgLy8gVGhlIEhUTUwgQUFNIG1hcHMgc2V2ZXJhbCBlbGVtZW50cyB0byBBUklBIGxhbmRtYXJr
IHJvbGVzLiBJbiBvcmRlciBmb3IgdGhlIHR5cGUgb2YgbGFuZG1hcmsKICAgICAgICAgLy8gdG8g
YmUgb2J0YWluYWJsZSBpbiB0aGUgc2FtZSBmYXNoaW9uIGFzIGFuIEFSSUEgbGFuZG1hcmssIGZh
bGwgYmFjayBvbiB0aGUgY29tcHV0ZWRSb2xlU3RyaW5nLgotICAgICAgICBpZiAoY29yZU9iamVj
dC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBVbmtub3duUm9sZSAmJiBjb3JlT2JqZWN0LT5pc0xh
bmRtYXJrKCkpCisgICAgICAgIGlmIChjb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIGNvcmVPYmplY3QtPmlzTGFuZG1hcmsoKSkK
ICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0
ZVNldCwgInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZy51dGY4KCkuZGF0YSgpKTsKICAg
ICB9CiAKQEAgLTYxMywyMDIgKzYxMywyMDIgQEAgc3RhdGljIEF0a1JvbGUgYXRrUm9sZShBY2Nl
c3NpYmlsaXR5T2JqZQogewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBjb3JlT2JqZWN0
LT5yb2xlVmFsdWUoKTsKICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNlIEFwcGxpY2F0aW9u
QWxlcnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9BTEVSVDsKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnREaWFsb2dSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2c6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2c6CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9ESUFMT0c7Ci0gICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9TVEFUVVNCQVI7Ci0gICAgY2FzZSBVbmtub3duUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVU5LTk9XTjsKLSAgICBj
YXNlIEF1ZGlvUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBdWRpbzoKICNpZiBB
VEtfQ0hFQ0tfVkVSU0lPTigyLCAxMSwgMykKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0FVRElP
OwogI2VuZGlmCi0gICAgY2FzZSBWaWRlb1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VmlkZW86CiAjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTEsIDMpCiAgICAgICAgIHJldHVy
biBBVEtfUk9MRV9WSURFTzsKICNlbmRpZgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRU1CRURE
RUQ7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1
dHRvbjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1BVU0hfQlVUVE9OOwotICAgIGNhc2UgU3dp
dGNoUm9sZToKLSAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6U3dpdGNoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRv
bjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RPR0dMRV9CVVRUT047Ci0gICAgY2FzZSBSYWRp
b0J1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CiAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9SQURJT19CVVRUT047Ci0gICAgY2FzZSBDaGVja0JveFJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CiAgICAgICAgIHJldHVy
biBBVEtfUk9MRV9DSEVDS19CT1g7Ci0gICAgY2FzZSBTbGlkZXJSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NMSURFUjsK
LSAgICBjYXNlIFRhYkdyb3VwUm9sZToKLSAgICBjYXNlIFRhYkxpc3RSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYkdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYkxpc3Q6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9QQUdFX1RBQl9MSVNUOwotICAgIGNh
c2UgVGV4dEZpZWxkUm9sZToKLSAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICBjYXNlIFNlYXJj
aEZpZWxkUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2VhcmNoRmllbGQ6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9FTlRSWTsKLSAgICBj
YXNlIFN0YXRpY1RleHRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1Rl
eHQ6CiAjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTUsIDIpCiAgICAgICAgIHJldHVybiBBVEtf
Uk9MRV9TVEFUSUM7CiAjZWxzZQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVEVYVDsKICNlbmRp
ZgotICAgIGNhc2UgT3V0bGluZVJvbGU6Ci0gICAgY2FzZSBUcmVlUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpPdXRsaW5lOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRy
ZWU6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9UUkVFOwotICAgIGNhc2UgVHJlZUl0ZW1Sb2xl
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOgogICAgICAgICByZXR1cm4g
QVRLX1JPTEVfVFJFRV9JVEVNOwotICAgIGNhc2UgTWVudUJhclJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUJhcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX01FTlVfQkFS
OwotICAgIGNhc2UgTWVudUxpc3RQb3B1cFJvbGU6Ci0gICAgY2FzZSBNZW51Um9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnU6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9NRU5VOwotICAgIGNhc2Ug
TWVudUxpc3RPcHRpb25Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgTWVu
dUJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TWVudUJ1dHRvbjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX01FTlVfSVRF
TTsKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9DSEVDS19N
RU5VX0lURU07Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUkFESU9f
TUVOVV9JVEVNOwotICAgIGNhc2UgQ29sdW1uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpDb2x1bW46CiAgICAgICAgIC8vIHJldHVybiBBVEtfUk9MRV9UQUJMRV9DT0xVTU5fSEVB
REVSOyAvLyBJcyB0aGlzIHJpZ2h0PwogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVU5LTk9XTjsg
Ly8gTWF0Y2hlcyBNb3ppbGxhCi0gICAgY2FzZSBSb3dSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlJvdzoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RBQkxFX1JPVzsKLSAgICBj
YXNlIFRvb2xiYXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI6CiAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9UT09MX0JBUjsKLSAgICBjYXNlIEJ1c3lJbmRpY2F0b3JS
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1c3lJbmRpY2F0b3I6CiAgICAgICAg
IHJldHVybiBBVEtfUk9MRV9QUk9HUkVTU19CQVI7IC8vIElzIHRoaXMgcmlnaHQ/Ci0gICAgY2Fz
ZSBQcm9ncmVzc0luZGljYXRvclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJv
Z3Jlc3NJbmRpY2F0b3I6CiAgICAgICAgIHJldHVybiBjb3JlT2JqZWN0LT5pc01ldGVyKCkgPyBB
VEtfUk9MRV9MRVZFTF9CQVIgOiBBVEtfUk9MRV9QUk9HUkVTU19CQVI7Ci0gICAgY2FzZSBXaW5k
b3dSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldpbmRvdzoKICAgICAgICAgcmV0
dXJuIEFUS19ST0xFX1dJTkRPVzsKLSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIGNvcmVPYmpl
Y3QtPmFyaWFIYXNQb3B1cCgpID8gQVRLX1JPTEVfUFVTSF9CVVRUT04gOiBBVEtfUk9MRV9DT01C
T19CT1g7Ci0gICAgY2FzZSBDb21ib0JveFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q29tYm9Cb3g6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9DT01CT19CT1g7Ci0gICAgY2Fz
ZSBTcGxpdEdyb3VwUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdEdyb3Vw
OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfU1BMSVRfUEFORTsKLSAgICBjYXNlIFNwbGl0dGVy
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjoKICAgICAgICAgcmV0
dXJuIEFUS19ST0xFX1NFUEFSQVRPUjsKLSAgICBjYXNlIENvbG9yV2VsbFJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAg
ICAgLy8gQVRLX1JPTEVfQ09MT1JfQ0hPT1NFUiBpcyBkZWZpbmVkIGFzIGEgZGlhbG9nIChpLmUu
IGl0J3Mgd2hhdCBhcHBlYXJzIHdoZW4geW91IHB1c2ggdGhlIGJ1dHRvbikuCiAgICAgICAgIHJl
dHVybiBBVEtfUk9MRV9QVVNIX0JVVFRPTjsKICNlbmRpZgotICAgIGNhc2UgTGlzdFJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xF
X0xJU1Q7Ci0gICAgY2FzZSBTY3JvbGxCYXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlNjcm9sbEJhcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NDUk9MTF9CQVI7Ci0gICAg
Y2FzZSBTY3JvbGxBcmVhUm9sZToKLSAgICBjYXNlIFRhYlBhbmVsUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYlBhbmVsOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfU0NST0xMX1BBTkU7Ci0gICAgY2Fz
ZSBHcmlkUm9sZToKLSAgICBjYXNlIFRhYmxlUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlOgogICAgICAgICBy
ZXR1cm4gQVRLX1JPTEVfVEFCTEU7Ci0gICAgY2FzZSBUcmVlR3JpZFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9UUkVF
X1RBQkxFOwotICAgIGNhc2UgQXBwbGljYXRpb25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQVBQTElDQVRJT047
Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkdyb3VwUm9sZToKLSAgICBjYXNlIEZlZWRSb2xlOgotICAg
IGNhc2UgRmlndXJlUm9sZToKLSAgICBjYXNlIEdyb3VwUm9sZToKLSAgICBjYXNlIFJhZGlvR3Jv
dXBSb2xlOgotICAgIGNhc2UgU1ZHUm9vdFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1Jvb3Q6CiAgICAgICAgIHJldHVybiBBVEtf
Uk9MRV9QQU5FTDsKLSAgICBjYXNlIFJvd0hlYWRlclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6Um93SGVhZGVyOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUk9XX0hFQURFUjsK
LSAgICBjYXNlIENvbHVtbkhlYWRlclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
Q29sdW1uSGVhZGVyOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ09MVU1OX0hFQURFUjsKLSAg
ICBjYXNlIENhcHRpb25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNhcHRpb246
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9DQVBUSU9OOwotICAgIGNhc2UgQ2VsbFJvbGU6Ci0g
ICAgY2FzZSBHcmlkQ2VsbFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbDoKICAgICAgICAgcmV0dXJuIGNv
cmVPYmplY3QtPmluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgPyBBVEtfUk9MRV9TRUNUSU9O
IDogQVRLX1JPTEVfVEFCTEVfQ0VMTDsKLSAgICBjYXNlIExpbmtSb2xlOgotICAgIGNhc2UgV2Vi
Q29yZUxpbmtSb2xlOgotICAgIGNhc2UgSW1hZ2VNYXBMaW5rUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMaW5rOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVM
aW5rOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwTGluazoKICAgICAgICAg
cmV0dXJuIEFUS19ST0xFX0xJTks7Ci0gICAgY2FzZSBJbWFnZU1hcFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9JTUFH
RV9NQVA7Ci0gICAgY2FzZSBJbWFnZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
SW1hZ2U6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9JTUFHRTsKLSAgICBjYXNlIExpc3RNYXJr
ZXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJrZXI6CiAgICAgICAg
IHJldHVybiBBVEtfUk9MRV9URVhUOwotICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xlUm9sZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU6CiAjaWYgQVRLX0NIRUNL
X1ZFUlNJT04oMiwgMTEsIDMpCiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9BUlRJQ0xFOwogI2Vu
ZGlmCi0gICAgY2FzZSBEb2N1bWVudFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RG9jdW1lbnQ6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9ET0NVTUVOVF9GUkFNRTsKLSAgICBj
YXNlIERvY3VtZW50Tm90ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1l
bnROb3RlOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ09NTUVOVDsKLSAgICBjYXNlIEhlYWRp
bmdSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc6CiAgICAgICAgIHJl
dHVybiBBVEtfUk9MRV9IRUFESU5HOwotICAgIGNhc2UgTGlzdEJveFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDoKICAgICAgICAgLy8gaHR0cHM6Ly9yYXdnaXQuY29t
L3czYy9hcmlhL21hc3Rlci9jb3JlLWFhbS9jb3JlLWFhbS5odG1sI3JvbGUtbWFwLWxpc3Rib3gK
LSAgICAgICAgcmV0dXJuIGNvcmVPYmplY3QtPmlzRGVzY2VuZGFudE9mUm9sZShDb21ib0JveFJv
bGUpID8gQVRLX1JPTEVfTUVOVSA6IEFUS19ST0xFX0xJU1RfQk9YOwotICAgIGNhc2UgTGlzdEl0
ZW1Sb2xlOgorICAgICAgICByZXR1cm4gY29yZU9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKEFj
Y2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveCkgPyBBVEtfUk9MRV9NRU5VIDogQVRLX1JPTEVfTElT
VF9CT1g7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAgICAgICAgIHJl
dHVybiBjb3JlT2JqZWN0LT5pbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpID8gQVRLX1JPTEVf
U0VDVElPTiA6IEFUS19ST0xFX0xJU1RfSVRFTTsKLSAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xl
OgotICAgICAgICByZXR1cm4gY29yZU9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKENvbWJvQm94
Um9sZSkgPyBBVEtfUk9MRV9NRU5VX0lURU0gOiBBVEtfUk9MRV9MSVNUX0lURU07Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRp
b246CisgICAgICAgIHJldHVybiBjb3JlT2JqZWN0LT5pc0Rlc2NlbmRhbnRPZlJvbGUoQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbWJvQm94KSA/IEFUS19ST0xFX01FTlVfSVRFTSA6IEFUS19ST0xFX0xJ
U1RfSVRFTTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGg6CiAgICAgICAg
IHJldHVybiBBVEtfUk9MRV9QQVJBR1JBUEg7Ci0gICAgY2FzZSBMYWJlbFJvbGU6Ci0gICAgY2Fz
ZSBMZWdlbmRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxlZ2VuZDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0xB
QkVMOwotICAgIGNhc2UgQmxvY2txdW90ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QmxvY2txdW90ZToKICNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxMSwgMykKICAgICAgICAg
cmV0dXJuIEFUS19ST0xFX0JMT0NLX1FVT1RFOwogI2VuZGlmCi0gICAgY2FzZSBGb290bm90ZVJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGU6CiAjaWYgQVRLX0NIRUNL
X1ZFUlNJT04oMiwgMjUsIDIpCiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9GT09UTk9URTsKICNl
bmRpZgotICAgIGNhc2UgQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlOgotICAgIGNhc2UgRGl2Um9s
ZToKLSAgICBjYXNlIFByZVJvbGU6Ci0gICAgY2FzZSBTVkdUZXh0Um9sZToKLSAgICBjYXNlIFRl
eHRHcm91cFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0
R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGl2OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlByZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUZXh0Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cDoKICAgICAgICAgcmV0dXJuIEFU
S19ST0xFX1NFQ1RJT047Ci0gICAgY2FzZSBGb290ZXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkZvb3RlcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0ZPT1RFUjsKLSAgICBj
YXNlIEZvcm1Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm06CiAjaWYgQVRL
X0NIRUNLX1ZFUlNJT04oMiwgMTEsIDMpCi0gICAgICAgIGlmIChjb3JlT2JqZWN0LT5hcmlhUm9s
ZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlKQorICAgICAgICBpZiAoY29yZU9iamVjdC0+YXJp
YVJvbGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAg
ICAgIHJldHVybiBBVEtfUk9MRV9MQU5ETUFSSzsKICNlbmRpZgogICAgICAgICByZXR1cm4gQVRL
X1JPTEVfRk9STTsKLSAgICBjYXNlIENhbnZhc1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q2FudmFzOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ0FOVkFTOwotICAgIGNhc2Ug
SG9yaXpvbnRhbFJ1bGVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250
YWxSdWxlOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfU0VQQVJBVE9SOwotICAgIGNhc2UgU3Bp
bkJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKICAg
ICAgICAgcmV0dXJuIEFUS19ST0xFX1NQSU5fQlVUVE9OOwotICAgIGNhc2UgVGFiUm9sZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9Q
QUdFX1RBQjsKLSAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpVc2VySW50ZXJmYWNlVG9vbHRpcDoKICAgICAgICAgcmV0dXJuIEFU
S19ST0xFX1RPT0xfVElQOwotICAgIGNhc2UgV2ViQXJlYVJvbGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6V2ViQXJlYToKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0RPQ1VNRU5UX1dF
QjsKLSAgICBjYXNlIFdlYkFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpXZWJBcHBsaWNhdGlvbjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0VNQkVEREVEOwog
I2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDExLCAzKQotICAgIGNhc2UgQXBwbGljYXRpb25Mb2dS
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nOgogICAgICAg
ICByZXR1cm4gQVRLX1JPTEVfTE9HOwotICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWU6CiAgICAgICAg
IHJldHVybiBBVEtfUk9MRV9NQVJRVUVFOwotICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UaW1lcjoKICAgICAgICAg
cmV0dXJuIEFUS19ST0xFX1RJTUVSOwotICAgIGNhc2UgRGVmaW5pdGlvblJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVmaW5pdGlvbjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xF
X0RFRklOSVRJT047Ci0gICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkRvY3VtZW50TWF0aDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX01BVEg7
Ci0gICAgY2FzZSBNYXRoRWxlbWVudFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWF0aEVsZW1lbnQ6CiAgICAgICAgIGlmIChjb3JlT2JqZWN0LT5pc01hdGhSb3coKSkKICAgICAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9QQU5FTDsKICAgICAgICAgaWYgKGNvcmVPYmplY3QtPmlz
TWF0aFRhYmxlKCkpCkBAIC04MjUsMTAgKzgyNSwxMCBAQCBzdGF0aWMgQXRrUm9sZSBhdGtSb2xl
KEFjY2Vzc2liaWxpdHlPYmplCiAgICAgICAgIGlmIChjb3JlT2JqZWN0LT5pc01hdGhTcXVhcmVS
b290KCkgfHwgY29yZU9iamVjdC0+aXNNYXRoUm9vdCgpKQogICAgICAgICAgICAgcmV0dXJuIEFU
S19ST0xFX01BVEhfUk9PVDsKICAgICAgICAgaWYgKGNvcmVPYmplY3QtPmlzTWF0aFNjcmlwdE9i
amVjdChTdWJzY3JpcHQpCi0gICAgICAgICAgICB8fCBjb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNj
cmlwdE9iamVjdChQcmVTdWJzY3JpcHQpIHx8IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0
T2JqZWN0KFBvc3RTdWJzY3JpcHQpKQorICAgICAgICAgICAgfHwgY29yZU9iamVjdC0+aXNNYXRo
TXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6
OlByZVN1YnNjcmlwdCkgfHwgY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNj
ZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBvc3RTdWJzY3JpcHQpKQogICAg
ICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NVQlNDUklQVDsKICAgICAgICAgaWYgKGNvcmVPYmpl
Y3QtPmlzTWF0aFNjcmlwdE9iamVjdChTdXBlcnNjcmlwdCkKLSAgICAgICAgICAgIHx8IGNvcmVP
YmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KFByZVN1cGVyc2NyaXB0KSB8fCBjb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChQb3N0U3VwZXJzY3JpcHQpKQorICAgICAgICAg
ICAgfHwgY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlByZVN1cGVyc2NyaXB0KSB8fCBjb3JlT2JqZWN0LT5p
c01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0
VHlwZTo6UG9zdFN1cGVyc2NyaXB0KSkKICAgICAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TVVBF
UlNDUklQVDsKICNlbmRpZgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDE1LCAyKQpAQCAtODM2
LDI2ICs4MzYsMjYgQEAgc3RhdGljIEF0a1JvbGUgYXRrUm9sZShBY2Nlc3NpYmlsaXR5T2JqZQog
ICAgICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NUQVRJQzsKICNlbmRpZgogICAgICAgICByZXR1
cm4gQVRLX1JPTEVfVU5LTk9XTjsKLSAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKLSAgICBj
YXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJ
bmZvUm9sZToKLSAgICBjYXNlIExhbmRtYXJrRG9jUmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRt
YXJrTWFpblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgotICAgIGNhc2Ug
TGFuZG1hcmtSZWdpb25Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hSb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrRG9jUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFp
bjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb246CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2g6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9MQU5E
TUFSSzsKICNlbmRpZgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDExLCA0KQotICAgIGNhc2Ug
RGVzY3JpcHRpb25MaXN0Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlw
dGlvbkxpc3Q6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9ERVNDUklQVElPTl9MSVNUOwotICAg
IGNhc2UgVGVybVJvbGU6Ci0gICAgY2FzZSBEZXNjcmlwdGlvbkxpc3RUZXJtUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXJtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkRlc2NyaXB0aW9uTGlzdFRlcm06CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9ERVNDUklQVElP
Tl9URVJNOwotICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0RGV0YWlsUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3REZXRhaWw6CiAgICAgICAgIHJldHVybiBB
VEtfUk9MRV9ERVNDUklQVElPTl9WQUxVRTsKICNlbmRpZgotICAgIGNhc2UgSW5saW5lUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbmxpbmU6CiAjaWYgQVRLX0NIRUNLX1ZFUlNJ
T04oMiwgMTUsIDQpCiAgICAgICAgIGlmIChjb3JlT2JqZWN0LT5pc1N1YnNjcmlwdFN0eWxlR3Jv
dXAoKSkKICAgICAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TVUJTQ1JJUFQ7CkBAIC04NjQsOSAr
ODY0LDkgQEAgc3RhdGljIEF0a1JvbGUgYXRrUm9sZShBY2Nlc3NpYmlsaXR5T2JqZQogI2VuZGlm
CiAjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTUsIDIpCiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9TVEFUSUM7Ci0gICAgY2FzZSBTVkdUZXh0UGF0aFJvbGU6Ci0gICAgY2FzZSBTVkdUU3BhblJv
bGU6Ci0gICAgY2FzZSBUaW1lUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdU
ZXh0UGF0aDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUU3BhbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1lOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfU1RBVElD
OwogI2VuZGlmCiAgICAgZGVmYXVsdDoKQEAgLTkzMCw3ICs5MzAsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0CiAKICAgICAvLyBQbGVhc2Uga2VlcCB0aGUgc3Rh
dGUgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIKICAgICBpZiAoKGlzTGlzdEJveE9wdGlvbiAm
JiBjb3JlT2JqZWN0LT5pc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkpCi0gICAgICAgIHx8IGNvcmVP
YmplY3QtPmFyaWFDdXJyZW50U3RhdGUoKSAhPSBBUklBQ3VycmVudEZhbHNlKQorICAgICAgICB8
fCBjb3JlT2JqZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQWNjZXNzaWJpbGl0eUFSSUFDdXJy
ZW50U3RhdGU6OkZhbHNlKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNl
dCwgQVRLX1NUQVRFX0FDVElWRSk7CiAKICAgICBpZiAoY29yZU9iamVjdC0+aXNCdXN5KCkpCkBA
IC05NzIsOSArOTcyLDkgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVj
dAogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0ZP
Q1VTRUQpOwogICAgIH0KIAotICAgIGlmIChjb3JlT2JqZWN0LT5vcmllbnRhdGlvbigpID09IEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWwpCisgICAgaWYgKGNvcmVPYmplY3QtPm9y
aWVudGF0aW9uKCkgPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9udGFsKQogICAg
ICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0hPUklaT05U
QUwpOwotICAgIGVsc2UgaWYgKGNvcmVPYmplY3QtPm9yaWVudGF0aW9uKCkgPT0gQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uVmVydGljYWwpCisgICAgZWxzZSBpZiAoY29yZU9iamVjdC0+b3JpZW50
YXRpb24oKSA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsKQogICAgICAgICBh
dGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX1ZFUlRJQ0FMKTsKIAog
ICAgIGlmIChjb3JlT2JqZWN0LT5hcmlhSGFzUG9wdXAoKSkKQEAgLTk4Myw3ICs5ODMsNyBAQCBz
dGF0aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0CiAgICAgaWYgKGNvcmVPYmpl
Y3QtPmlzSW5kZXRlcm1pbmF0ZSgpKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShz
dGF0ZVNldCwgQVRLX1NUQVRFX0lOREVURVJNSU5BVEUpOwogICAgIGVsc2UgaWYgKGNvcmVPYmpl
Y3QtPmlzQ2hlY2tib3hPclJhZGlvKCkgfHwgY29yZU9iamVjdC0+aXNNZW51SXRlbSgpIHx8IGNv
cmVPYmplY3QtPmlzVG9nZ2xlQnV0dG9uKCkpIHsKLSAgICAgICAgaWYgKGNvcmVPYmplY3QtPmNo
ZWNrYm94T3JSYWRpb1ZhbHVlKCkgPT0gQnV0dG9uU3RhdGVNaXhlZCkKKyAgICAgICAgaWYgKGNv
cmVPYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eUJ1dHRvblN0
YXRlOjpNaXhlZCkKICAgICAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0
LCBBVEtfU1RBVEVfSU5ERVRFUk1JTkFURSk7CiAgICAgfQogCkBAIC0xMDM5LDkgKzEwMzksOSBA
QCBzdGF0aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0CiAgICAgfQogCiAgICAg
Ly8gTXV0dWFsbHkgZXhjbHVzaXZlLCBzbyB3ZSBncm91cCB0aGVzZSB0d28KLSAgICBpZiAoY29y
ZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gVGV4dEFyZWFSb2xlIHx8IGNvcmVPYmplY3QtPmFyaWFJ
c011bHRpbGluZSgpKQorICAgIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGV4dEFyZWEgfHwgY29yZU9iamVjdC0+YXJpYUlzTXVsdGlsaW5lKCkpCiAg
ICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfTVVMVElf
TElORSk7Ci0gICAgZWxzZSBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gVGV4dEZpZWxk
Um9sZSB8fCBjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTZWFyY2hGaWVsZFJvbGUpCisgICAg
ZWxzZSBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRl
eHRGaWVsZCB8fCBjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U2VhcmNoRmllbGQpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBB
VEtfU1RBVEVfU0lOR0xFX0xJTkUpOwogCiAgICAgLy8gVE9ETzogQVRLX1NUQVRFX1NFTlNJVElW
RQpAQCAtMTI2MCw5ICsxMjYwLDE3IEBAIHN0YXRpYyBHVHlwZSBHZXRBdGtJbnRlcmZhY2VUeXBl
RnJvbVdBSVQKIAogc3RhdGljIGJvb2wgcm9sZUlzVGV4dFR5cGUoQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZSkKIHsKLSAgICByZXR1cm4gcm9sZSA9PSBQYXJhZ3JhcGhSb2xlIHx8IHJvbGUgPT0gSGVh
ZGluZ1JvbGUgfHwgcm9sZSA9PSBEaXZSb2xlIHx8IHJvbGUgPT0gQ2VsbFJvbGUKLSAgICAgICAg
fHwgcm9sZSA9PSBMaW5rUm9sZSB8fCByb2xlID09IFdlYkNvcmVMaW5rUm9sZSB8fCByb2xlID09
IExpc3RJdGVtUm9sZSB8fCByb2xlID09IFByZVJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBHcmlk
Q2VsbFJvbGUgfHwgcm9sZSA9PSBUZXh0R3JvdXBSb2xlIHx8IHJvbGUgPT0gQXBwbGljYXRpb25U
ZXh0R3JvdXBSb2xlOworICAgIHJldHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJh
Z3JhcGgKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZworICAg
ICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEaXYKKyAgICAgICAgfHwgcm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpMaW5rCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNv
cmVMaW5rCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtCisg
ICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZQorICAgICAgICB8fCByb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbAorICAgICAgICB8fCByb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpUZXh0R3JvdXAKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXA7CiB9CiAKIHN0YXRpYyBndWludDE2IGdldEludGVy
ZmFjZU1hc2tGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCkBAIC0x
Mjk2LDE0ICsxMzA0LDE0IEBAIHN0YXRpYyBndWludDE2IGdldEludGVyZmFjZU1hc2tGcm9tT2Jq
ZWMKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSUh5cGVybGluazsKIAogICAgIC8v
IFRleHQsIEVkaXRhYmxlIFRleHQgJiBIeXBlcnRleHQKLSAgICBpZiAocm9sZSA9PSBTdGF0aWNU
ZXh0Um9sZSB8fCBjb3JlT2JqZWN0LT5pc01lbnVMaXN0T3B0aW9uKCkpCisgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgfHwgY29yZU9iamVjdC0+aXNNZW51TGlz
dE9wdGlvbigpKQogICAgICAgICBpbnRlcmZhY2VNYXNrIHw9IDEgPDwgV0FJVGV4dDsKICAgICBl
bHNlIGlmIChjb3JlT2JqZWN0LT5pc1RleHRDb250cm9sKCkgfHwgY29yZU9iamVjdC0+aXNOb25O
YXRpdmVUZXh0Q29udHJvbCgpKSB7CiAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlU
ZXh0OwogICAgICAgICBpZiAoY29yZU9iamVjdC0+Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSkKICAg
ICAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlFZGl0YWJsZVRleHQ7CiAgICAgfSBl
bHNlIGlmICghY29yZU9iamVjdC0+aXNXZWJBcmVhKCkpIHsKLSAgICAgICAgaWYgKHJvbGUgIT0g
VGFibGVSb2xlKSB7CisgICAgICAgIGlmIChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJs
ZSkgewogICAgICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSUh5cGVydGV4dDsKICAg
ICAgICAgICAgIGlmICgocmVuZGVyZXIgJiYgcmVuZGVyZXItPmNoaWxkcmVuSW5saW5lKCkpIHx8
IHJvbGVJc1RleHRUeXBlKHJvbGUpIHx8IGNvcmVPYmplY3QtPmlzTWF0aFRva2VuKCkpCiAgICAg
ICAgICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSVRleHQ7CkBAIC0xMzExLDcgKzEz
MTksNyBAQCBzdGF0aWMgZ3VpbnQxNiBnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjCiAKICAgICAg
ICAgLy8gQWRkIHRoZSBURVhUIGludGVyZmFjZSBmb3IgbGlzdCBpdGVtcyB3aG9zZQogICAgICAg
ICAvLyBmaXJzdCBhY2Nlc3NpYmxlIGNoaWxkIGhhcyBhIHRleHQgcmVuZGVyZXIKLSAgICAgICAg
aWYgKHJvbGUgPT0gTGlzdEl0ZW1Sb2xlKSB7CisgICAgICAgIGlmIChyb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0SXRlbSkgewogICAgICAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbiA9IGNvcmVPYmplY3Qt
PmNoaWxkcmVuKCk7CiAgICAgICAgICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAgICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhSZW5kZXJDaGlsZCA9IGNoaWxkcmVuLmF0
KDApLmdldCgpOwpAQCAtMTMyOSwxMiArMTMzNywxMiBAQCBzdGF0aWMgZ3VpbnQxNiBnZXRJbnRl
cmZhY2VNYXNrRnJvbU9iamVjCiAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlUYWJs
ZTsKIAogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTApCi0gICAgaWYgKHJvbGUgPT0gQ2Vs
bFJvbGUgfHwgcm9sZSA9PSBHcmlkQ2VsbFJvbGUgfHwgcm9sZSA9PSBDb2x1bW5IZWFkZXJSb2xl
IHx8IHJvbGUgPT0gUm93SGVhZGVyUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q2VsbCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbCB8fCByb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIgfHwgcm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6Um93SGVhZGVyKQogICAgICAgICBpbnRlcmZhY2VNYXNrIHw9IDEgPDwgV0FJVGFi
bGVDZWxsOwogI2VuZGlmCiAKICAgICAvLyBEb2N1bWVudAotICAgIGlmIChyb2xlID09IFdlYkFy
ZWFSb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQogICAg
ICAgICBpbnRlcmZhY2VNYXNrIHw9IDEgPDwgV0FJRG9jdW1lbnQ7CiAKICAgICAvLyBWYWx1ZQpA
QCAtMTM0Myw3ICsxMzUxLDcgQEAgc3RhdGljIGd1aW50MTYgZ2V0SW50ZXJmYWNlTWFza0Zyb21P
YmplYwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgLy8gQ29sb3IgdHlwZS4K
LSAgICBpZiAocm9sZSA9PSBDb2xvcldlbGxSb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpDb2xvcldlbGwpCiAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlU
ZXh0OwogI2VuZGlmCiAKQEAgLTE0MTIsNyArMTQyMCw3IEBAIHZvaWQgd2Via2l0QWNjZXNzaWJs
ZURldGFjaChXZWJLaXRBY2Nlc3MKIHsKICAgICBBU1NFUlQoYWNjZXNzaWJsZS0+bV9vYmplY3Qp
OwogCi0gICAgaWYgKGFjY2Vzc2libGUtPm1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBXZWJBcmVh
Um9sZSkKKyAgICBpZiAoYWNjZXNzaWJsZS0+bV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpXZWJBcmVhKQogICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9j
aGFuZ2UoQVRLX09CSkVDVChhY2Nlc3NpYmxlKSwgQVRLX1NUQVRFX0RFRlVOQ1QsIHRydWUpOwog
CiAgICAgLy8gV2UgcmVwbGFjZSB0aGUgV2ViQ29yZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IHdpdGgg
YSBmYWxsYmFjayBvYmplY3QgdGhhdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCShyZXZpc2lv
biAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmls
aXR5T2JqZWN0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUkKICAgICAKIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5j
bHVkZXNPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBEZWZhdWx0QmVoYXZpb3I7CisgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcjsKIH0K
IAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNUb3VjaEV2ZW50TGlzdGVuZXIoKSBjb25z
dApAQCAtODEsNyArODEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc1RvdWNoRXZl
bnRMCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5wdXRUeXBlUG9wdXBCdXR0b24oKSBj
b25zdAogewogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKCkpKQotICAgICAgICBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gUG9wVXBCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0J
KHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIs
MzAgKzM0MiwzMCBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlDYW5GdXp6eUhpdFRlc3QKICAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwogICAgIC8vIEVs
ZW1lbnRzIHRoYXQgY2FuIGJlIHJldHVybmVkIHdoZW4gcGVyZm9ybWluZyBmdXp6eSBoaXQgdGVz
dGluZy4KICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2Fz
ZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBDb21ib0JveFJvbGU6Ci0gICAgY2FzZSBEaXNjbG9z
dXJlVHJpYW5nbGVSb2xlOgotICAgIGNhc2UgSGVhZGluZ1JvbGU6Ci0gICAgY2FzZSBJbWFnZU1h
cExpbmtSb2xlOgotICAgIGNhc2UgSW1hZ2VSb2xlOgotICAgIGNhc2UgTGlua1JvbGU6Ci0gICAg
Y2FzZSBMaXN0Qm94Um9sZToKLSAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xlOgotICAgIGNhc2Ug
TWVudUJ1dHRvblJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRl
bUNoZWNrYm94Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgUG9w
VXBCdXR0b25Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgIGNhc2UgU2Nyb2xs
QmFyUm9sZToKLSAgICBjYXNlIFNlYXJjaEZpZWxkUm9sZToKLSAgICBjYXNlIFNsaWRlclJvbGU6
Ci0gICAgY2FzZSBTdGF0aWNUZXh0Um9sZToKLSAgICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgY2Fz
ZSBUYWJSb2xlOgotICAgIGNhc2UgVGV4dEZpZWxkUm9sZToKLSAgICBjYXNlIFRvZ2dsZUJ1dHRv
blJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRpc2Nsb3N1cmVUcmlhbmdsZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlTWFwTGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFn
ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5rOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9w
dGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1S
YWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlN0YXRpY1RleHQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNo
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpUZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0
dG9uOgogICAgICAgICByZXR1cm4gIW1fb2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTE0LDI0ICs1MTQsMjQg
QEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNEaWFsb2cKICAgICAgICAgcmV0dXJuIE5POwogCiAg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwot
ICAgIHJldHVybiByb2xlVmFsdWUgPT0gQXBwbGljYXRpb25EaWFsb2dSb2xlIHx8IHJvbGVWYWx1
ZSA9PSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZyB8fCByb2xlVmFsdWUgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2c7CiB9CiAKIC0gKEJPT0wpX2Fj
Y2Vzc2liaWxpdHlJc0xhbmRtYXJrUm9sZTooQWNjZXNzaWJpbGl0eVJvbGUpcm9sZQogewogICAg
IHN3aXRjaCAocm9sZSkgewotICAgIGNhc2UgRG9jdW1lbnRSb2xlOgotICAgIGNhc2UgRG9jdW1l
bnRBcnRpY2xlUm9sZToKLSAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6Ci0gICAgY2FzZSBGb290
ZXJSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtD
b21wbGVtZW50YXJ5Um9sZToKLSAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAg
IGNhc2UgTGFuZG1hcmtEb2NSZWdpb25Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToK
LSAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya1JlZ2lv
blJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya1NlYXJjaFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6RG9jdW1lbnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRB
cnRpY2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGFuZG1hcmtCYW5uZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtD
b21wbGVtZW50YXJ5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVu
dEluZm86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a1NlYXJjaDoKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gTk87CkBAIC01NDIsNyArNTQyLDcgQEAgLSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
KV9hY2Nlc3NpYgogewogICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3QmIG9iamVjdCkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gb2Jq
ZWN0LnJvbGVWYWx1ZSgpOwotICAgICAgICByZXR1cm4gcm9sZSA9PSBUcmVlUm9sZTsKKyAgICAg
ICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU7CiAgICAgfTsKICAgICAK
ICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0
eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIGZhbHNlLCBXVEZNb3ZlKG1hdGNoRnVu
YykpKQpAQCAtNTU0LDcgKzU1NCw3IEBAIC0gKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilf
YWNjZXNzaWIKIHsKICAgICBhdXRvIG1hdGNoRnVuYyA9IFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0JiBvYmplY3QpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG9iamVj
dC5yb2xlVmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIHJvbGUgPT0gTGlzdFJvbGUgfHwgcm9sZSA9
PSBMaXN0Qm94Um9sZTsKKyAgICAgICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3QgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsKICAgICB9OwogICAg
IAogICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCptX29iamVjdCwgZmFsc2UsIFdURk1vdmUobWF0Y2hG
dW5jKSkpCkBAIC01NjUsNyArNTY1LDcgQEAgLSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
KV9hY2Nlc3NpYgogLSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYmlsaXR5
QXJ0aWNsZUFuY2VzdG9yCiB7CiAgICAgaWYgKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNoZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxz
ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewotICAgICAgICByZXR1
cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IERvY3VtZW50QXJ0aWNsZVJvbGU7CisgICAgICAgIHJl
dHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50QXJ0
aWNsZTsKICAgICB9KSkKICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwogICAgIHJl
dHVybiBuaWw7CkBAIC02MTgsNDggKzYxOCw0NyBAQCAtICh1aW50NjRfdClfYWNjZXNzaWJpbGl0
eVRyYWl0c0Zyb21BbmNlCiAgICAgLy8gVGhlIHBhcmVudE9iamVjdCBpcyBuZWVkZWQgaW5zdGVh
ZCBvZiB0aGUgdW5pZ25vcmVkUGFyZW50T2JqZWN0LCBiZWNhdXNlIGEgdGFibGUgbWlnaHQgYmUg
aWdub3JlZCwgYnV0IGluZm9ybWF0aW9uIHN0aWxsIG5lZWRzIHRvIGJlIGdhdGhlcmVkIGZyb20g
aXQuICAgIAogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3Qt
PnBhcmVudE9iamVjdCgpOyBwYXJlbnQgIT0gbmlsOyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9i
amVjdCgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHBhcmVudFJvbGUgPSBwYXJlbnQt
PnJvbGVWYWx1ZSgpOwotICAgICAgICBpZiAocGFyZW50Um9sZSA9PSBXZWJBcmVhUm9sZSkKKyAg
ICAgICAgaWYgKHBhcmVudFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWEpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAocGFyZW50Um9sZSkgewot
ICAgICAgICAgICAgY2FzZSBMaW5rUm9sZToKLSAgICAgICAgICAgIGNhc2UgV2ViQ29yZUxpbmtS
b2xlOgotICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhMaW5rVHJhaXRdOwotICAg
ICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVmlzaXRlZCgpKQotICAgICAgICAgICAgICAgICAg
ICB0cmFpdHMgfD0gW3NlbGYgX2F4VmlzaXRlZFRyYWl0XTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgSGVhZGluZ1JvbGU6Ci0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEhlYWRlclRyYWl0XTsKLSAgICAgICAgICAgICAg
ICAvLyBJZiB0aGlzIG9iamVjdCBoYXMgdGhlIGhlYWRlciB0cmFpdCwgd2Ugc2hvdWxkIHNldCB0
aGUgdmFsdWUKLSAgICAgICAgICAgICAgICAvLyB0byB0aGUgaGVhZGluZyBsZXZlbC4gSWYgaXQg
d2FzIGEgc3RhdGljIHRleHQgZWxlbWVudCwgd2UgbmVlZCB0byBzdG9yZQotICAgICAgICAgICAg
ICAgIC8vIHRoZSB2YWx1ZSBhcyB0aGUgbGFiZWwsIGJlY2F1c2UgdGhlIGhlYWRpbmcgbGV2ZWwg
bmVlZHMgdG8gdGhlIHZhbHVlLgotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKiB3cmFwcGVyID0gcGFyZW50LT53cmFwcGVyKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHJvbGUgPT0gU3RhdGljVGV4dFJvbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgc2V0IHRoZSB0ZXh0IHZhbHVlIGFzIHRoZSBsYWJlbCB3aGVuIHRoZXJlJ3Mgbm8K
LSAgICAgICAgICAgICAgICAgICAgLy8gYWx0ZXJuYXRlIHRleHQgb24gdGhlIGhlYWRpbmcgcGFy
ZW50LgotICAgICAgICAgICAgICAgICAgICBOU1N0cmluZyAqaGVhZGluZ0xhYmVsID0gW3dyYXBw
ZXIgYmFzZUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbl07Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghW2hlYWRpbmdMYWJlbCBsZW5ndGhdKQotICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYg
c2V0QWNjZXNzaWJpbGl0eUxhYmVsOm1fb2JqZWN0LT5zdHJpbmdWYWx1ZSgpXTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgc2V0QWNjZXNz
aWJpbGl0eUxhYmVsOmhlYWRpbmdMYWJlbF07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIFtzZWxmIHNldEFjY2Vzc2liaWxpdHlWYWx1ZTpbd3JhcHBlciBhY2Nlc3NpYmlsaXR5
VmFsdWVdXTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGluazoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxp
bms6CisgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4TGlua1RyYWl0XTsKKyAgICAgICAg
ICAgIGlmIChwYXJlbnQtPmlzVmlzaXRlZCgpKQorICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBb
c2VsZiBfYXhWaXNpdGVkVHJhaXRdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmc6IHsKKyAgICAgICAgICAgIHRyYWl0cyB8PSBbc2Vs
ZiBfYXhIZWFkZXJUcmFpdF07CisgICAgICAgICAgICAvLyBJZiB0aGlzIG9iamVjdCBoYXMgdGhl
IGhlYWRlciB0cmFpdCwgd2Ugc2hvdWxkIHNldCB0aGUgdmFsdWUKKyAgICAgICAgICAgIC8vIHRv
IHRoZSBoZWFkaW5nIGxldmVsLiBJZiBpdCB3YXMgYSBzdGF0aWMgdGV4dCBlbGVtZW50LCB3ZSBu
ZWVkIHRvIHN0b3JlCisgICAgICAgICAgICAvLyB0aGUgdmFsdWUgYXMgdGhlIGxhYmVsLCBiZWNh
dXNlIHRoZSBoZWFkaW5nIGxldmVsIG5lZWRzIHRvIHRoZSB2YWx1ZS4KKyAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gcGFyZW50LT53cmFwcGVyKCk7Cisg
ICAgICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCkgewor
ICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IHNldCB0aGUgdGV4dCB2YWx1ZSBhcyB0
aGUgbGFiZWwgd2hlbiB0aGVyZSdzIG5vCisgICAgICAgICAgICAgICAgLy8gYWx0ZXJuYXRlIHRl
eHQgb24gdGhlIGhlYWRpbmcgcGFyZW50LgorICAgICAgICAgICAgICAgIE5TU3RyaW5nICpoZWFk
aW5nTGFiZWwgPSBbd3JhcHBlciBiYXNlQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uXTsKKyAgICAg
ICAgICAgICAgICBpZiAoIVtoZWFkaW5nTGFiZWwgbGVuZ3RoXSkKKyAgICAgICAgICAgICAgICAg
ICAgW3NlbGYgc2V0QWNjZXNzaWJpbGl0eUxhYmVsOm1fb2JqZWN0LT5zdHJpbmdWYWx1ZSgpXTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIFtzZWxmIHNldEFjY2Vz
c2liaWxpdHlMYWJlbDpoZWFkaW5nTGFiZWxdOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y2FzZSBMaXN0Qm94Um9sZToKLSAgICAgICAgICAgIGNhc2UgTGlzdFJvbGU6Ci0gICAgICAgICAg
ICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENvbnRhaW5lZEJ5TGlzdFRyYWl0XTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgICAgICAgICBj
YXNlIFRhYmxlUm9sZToKLSAgICAgICAgICAgIGNhc2UgVHJlZUdyaWRSb2xlOgotICAgICAgICAg
ICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeVRhYmxlVHJhaXRdOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBp
ZiAoW3NlbGYgX2FjY2Vzc2liaWxpdHlJc0xhbmRtYXJrUm9sZTpwYXJlbnRSb2xlXSkKLSAgICAg
ICAgICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENvbnRhaW5lZEJ5TGFuZG1hcmtUcmFp
dF07Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBbc2VsZiBzZXRBY2Nlc3Np
YmlsaXR5VmFsdWU6W3dyYXBwZXIgYWNjZXNzaWJpbGl0eVZhbHVlXV07CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94
OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OgorICAgICAgICAgICAgdHJh
aXRzIHw9IFtzZWxmIF9heENvbnRhaW5lZEJ5TGlzdFRyYWl0XTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkOgorICAgICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUYWJsZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VHJlZUdyaWQ6CisgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4Q29udGFpbmVkQnlUYWJs
ZVRyYWl0XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgaWYgKFtzZWxmIF9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFya1JvbGU6cGFyZW50Um9sZV0pCisg
ICAgICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heENvbnRhaW5lZEJ5TGFuZG1hcmtUcmFp
dF07CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
SWYgdGhpcyBvYmplY3QgaGFzIGZpZWxkc2V0IHBhcmVudCwgd2Ugc2hvdWxkIGFkZCBjb250YWlu
ZWRCeUZpZWxkc2V0VHJhaXQgdG8gaXQuCkBAIC02NzYsNyArNjc1LDcgQEAgLSAoQk9PTClhY2Nl
c3NpYmlsaXR5SXNXZWJJbnRlcmFjdGl2ZVZpZAogICAgICAgICByZXR1cm4gTk87CiAgICAgCiAg
ICAgLy8gT25seSBtYWtlIHRoZSB2aWRlbyBvYmplY3QgaW50ZXJhY3RpdmUgaWYgaXQgcGxheXMg
aW5saW5lIGFuZCBoYXMgbm8gbmF0aXZlIGNvbnRyb2xzLgotICAgIGlmIChtX29iamVjdC0+cm9s
ZVZhbHVlKCkgIT0gVmlkZW9Sb2xlIHx8ICFpczxBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Q+KG1f
b2JqZWN0KSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlS
b2xlOjpWaWRlbyB8fCAhaXM8QWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0PihtX29iamVjdCkpCiAg
ICAgICAgIHJldHVybiBOTzsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QqIG1l
ZGlhT2JqZWN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0PihtX29iamVjdCk7
CkBAIC03NDEsOSArNzQwLDkgQEAgLSAodWludDY0X3QpX2FjY2Vzc2liaWxpdHlUZXh0RW50cnlU
cmFpdAogICAgICAgICB0cmFpdHMgfD0gKFtzZWxmIF9heEhhc1RleHRDdXJzb3JUcmFpdF0gfCBb
c2VsZiBfYXhUZXh0T3BlcmF0aW9uc0F2YWlsYWJsZVRyYWl0XSk7CiAgICAgaWYgKG1fb2JqZWN0
LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFNlY3VyZVRl
eHRGaWVsZFRyYWl0XTsKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IFNlYXJjaEZp
ZWxkUm9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpTZWFyY2hGaWVsZCkKICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFNlYXJjaEZpZWxk
VHJhaXRdOwotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gVGV4dEFyZWFSb2xlKQor
ICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRB
cmVhKQogICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VGV4dEFyZWFUcmFpdF07CiAgICAgcmV0
dXJuIHRyYWl0czsKIH0KQEAgLTc1Niw1OCArNzU1LDU4IEBAIC0gKHVpbnQ2NF90KWFjY2Vzc2li
aWxpdHlUcmFpdHMKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gbV9vYmplY3QtPnJvbGVW
YWx1ZSgpOwogICAgIHVpbnQ2NF90IHRyYWl0cyA9IFtzZWxmIF9heFdlYkNvbnRlbnRUcmFpdF07
CiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgICAgIGNhc2UgTGlua1JvbGU6Ci0gICAgICAgIGNh
c2UgV2ViQ29yZUxpbmtSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heExpbmtU
cmFpdF07Ci0gICAgICAgICAgICBpZiAobV9vYmplY3QtPmlzVmlzaXRlZCgpKQotICAgICAgICAg
ICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhWaXNpdGVkVHJhaXRdOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgVGV4dEZpZWxkUm9sZToKLSAgICAgICAgY2FzZSBTZWFyY2hGaWVs
ZFJvbGU6Ci0gICAgICAgIGNhc2UgVGV4dEFyZWFSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9
IFtzZWxmIF9hY2Nlc3NpYmlsaXR5VGV4dEVudHJ5VHJhaXRzXTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEltYWdlUm9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBf
YXhJbWFnZVRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRhYlJvbGU6
Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VGFiQnV0dG9uVHJhaXRdOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICAgICAgICAgIHRyYWl0
cyB8PSBbc2VsZiBfYXhCdXR0b25UcmFpdF07Ci0gICAgICAgICAgICBpZiAobV9vYmplY3QtPmlz
UHJlc3NlZCgpKQotICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhUb2dnbGVUcmFp
dF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6Ci0g
ICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4UG9wdXBCdXR0b25UcmFpdF07Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0gICAgICAgICAgICB0
cmFpdHMgfD0gW3NlbGYgX2F4UmFkaW9CdXR0b25UcmFpdF0gfCBbc2VsZiBfYXhUb2dnbGVUcmFp
dF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgot
ICAgICAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICAgICAgY2FzZSBTd2l0Y2hSb2xlOgotICAg
ICAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBfYXhCdXR0b25UcmFpdF0gfCBbc2VsZiBfYXhUb2dn
bGVUcmFpdF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSGVhZGluZ1JvbGU6
Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4SGVhZGVyVHJhaXRdOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RhdGljVGV4dFJvbGU6Ci0gICAgICAgICAgICB0cmFp
dHMgfD0gW3NlbGYgX2F4U3RhdGljVGV4dFRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNsaWRlclJvbGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4QWRq
dXN0YWJsZVRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lbnVCdXR0
b25Sb2xlOgotICAgICAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8
PSBbc2VsZiBfYXhNZW51SXRlbVRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAgICAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xl
OgotICAgICAgICAgICAgdHJhaXRzIHw9IChbc2VsZiBfYXhNZW51SXRlbVRyYWl0XSB8IFtzZWxm
IF9heFRvZ2dsZVRyYWl0XSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpbms6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms6CisgICAgICAgIHRyYWl0cyB8
PSBbc2VsZiBfYXhMaW5rVHJhaXRdOworICAgICAgICBpZiAobV9vYmplY3QtPmlzVmlzaXRlZCgp
KQorICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFZpc2l0ZWRUcmFpdF07CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpUZXh0QXJlYToKKyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5VGV4
dEVudHJ5VHJhaXRzXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SW1hZ2U6CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhJbWFnZVRyYWl0XTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgorICAgICAgICB0cmFp
dHMgfD0gW3NlbGYgX2F4VGFiQnV0dG9uVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhC
dXR0b25UcmFpdF07CisgICAgICAgIGlmIChtX29iamVjdC0+aXNQcmVzc2VkKCkpCisgICAgICAg
ICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4VG9nZ2xlVHJhaXRdOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICAgICAgdHJhaXRzIHw9
IFtzZWxmIF9heFBvcHVwQnV0dG9uVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9h
eFJhZGlvQnV0dG9uVHJhaXRdIHwgW3NlbGYgX2F4VG9nZ2xlVHJhaXRdOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3dpdGNoOgorICAgICAgICB0cmFpdHMgfD0gKFtzZWxmIF9heEJ1dHRvblRyYWl0XSB8IFtzZWxm
IF9heFRvZ2dsZVRyYWl0XSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkhlYWRpbmc6CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhIZWFkZXJUcmFpdF07
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQ6
CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhTdGF0aWNUZXh0VHJhaXRdOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgICAgIHRyYWl0
cyB8PSBbc2VsZiBfYXhBZGp1c3RhYmxlVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Ok1lbnVJdGVtOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4TWVudUl0ZW1UcmFpdF07
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hl
Y2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICAg
ICAgdHJhaXRzIHw9IChbc2VsZiBfYXhNZW51SXRlbVRyYWl0XSB8IFtzZWxmIF9heFRvZ2dsZVRy
YWl0XSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50RWxlbWVudCgpKQpAQCAtODQ5LDE3
OCArODQ4LDE3NyBAQCAtIChCT09MKWRldGVybWluZUlzQWNjZXNzaWJpbGl0eUVsZW1lbnQKICAg
ICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgCiAgICAgc3dpdGNoIChtX29i
amVjdC0+cm9sZVZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBUZXh0RmllbGRSb2xlOgotICAgICAg
ICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICAgICAgY2FzZSBCdXR0b25Sb2xlOgotICAgICAgICBj
YXNlIFRvZ2dsZUJ1dHRvblJvbGU6Ci0gICAgICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgotICAg
ICAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICAgICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0g
ICAgICAgIGNhc2UgU2xpZGVyUm9sZToKLSAgICAgICAgY2FzZSBNZW51QnV0dG9uUm9sZToKLSAg
ICAgICAgY2FzZSBWYWx1ZUluZGljYXRvclJvbGU6Ci0gICAgICAgIGNhc2UgSW1hZ2VSb2xlOgot
ICAgICAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6Ci0gICAgICAgIGNhc2UgUHJvZ3Jlc3NJbmRp
Y2F0b3JSb2xlOgotICAgICAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICAgICAgY2FzZSBNZW51
SXRlbUNoZWNrYm94Um9sZToKLSAgICAgICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICAg
ICAgY2FzZSBJbmNyZW1lbnRvclJvbGU6Ci0gICAgICAgIGNhc2UgQ29tYm9Cb3hSb2xlOgotICAg
ICAgICBjYXNlIERpc2Nsb3N1cmVUcmlhbmdsZVJvbGU6Ci0gICAgICAgIGNhc2UgSW1hZ2VNYXBS
b2xlOgotICAgICAgICBjYXNlIExpc3RNYXJrZXJSb2xlOgotICAgICAgICBjYXNlIExpc3RCb3hP
cHRpb25Sb2xlOgotICAgICAgICBjYXNlIFRhYlJvbGU6Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRN
YXRoUm9sZToKLSAgICAgICAgY2FzZSBIb3Jpem9udGFsUnVsZVJvbGU6Ci0gICAgICAgIGNhc2Ug
U2xpZGVyVGh1bWJSb2xlOgotICAgICAgICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgICAgIGNhc2Ug
U2VhcmNoRmllbGRSb2xlOgotICAgICAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgU3RhdGljVGV4dFJvbGU6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIC8vIE1hbnkgdGV4dCBlbGVtZW50cyBvbmx5IGNvbnRhaW4gYSBzcGFjZS4K
LSAgICAgICAgICAgIGlmICghW1tbc2VsZiBhY2Nlc3NpYmlsaXR5TGFiZWxdIHN0cmluZ0J5VHJp
bW1pbmdDaGFyYWN0ZXJzSW5TZXQ6W05TQ2hhcmFjdGVyU2V0IHdoaXRlc3BhY2VDaGFyYWN0ZXJT
ZXRdXSBsZW5ndGhdKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAg
ICAgLy8gVGV4dCBlbGVtZW50cyB0aGF0IGFyZSBqdXN0IHBpZWNlcyBvZiBsaW5rcyBvciBoZWFk
ZXJzIHNob3VsZCBub3QgYmUgZXhwb3NlZC4KLSAgICAgICAgICAgIGlmIChbQWNjZXNzaWJpbGl0
eVVuaWdub3JlZEFuY2VzdG9yKFtzZWxmIGFjY2Vzc2liaWxpdHlDb250YWluZXJdKSBjb250YWlu
c1VubmF0dXJhbGx5U2VnbWVudGVkQ2hpbGRyZW5dKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgICAgICAK
LSAgICAgICAgLy8gRG9uJ3QgZXhwb3NlIGhlYWRlcnMgYXMgZWxlbWVudHM7IGluc3RlYWQgZXhw
b3NlIHRoZWlyIGNoaWxkcmVuIGFzIGVsZW1lbnRzLCB3aXRoIHRoZSBoZWFkZXIgdHJhaXQgKHVu
bGVzcyB0aGV5IGhhdmUgbm8gY2hpbGRyZW4pCi0gICAgICAgIGNhc2UgSGVhZGluZ1JvbGU6Ci0g
ICAgICAgICAgICBpZiAoIVtzZWxmIGFjY2Vzc2liaWxpdHlFbGVtZW50Q291bnRdKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRG
aWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9n
Z2xlQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlZhbHVlSW5kaWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkltYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwTGluazoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
SXRlbUNoZWNrYm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtUmFkaW86
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5jcmVtZW50b3I6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlz
Y2xvc3VyZVRyaWFuZ2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJrZXI6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
YWI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlNsaWRlclRodW1iOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OiB7CisgICAgICAgIC8vIE1hbnkgdGV4dCBl
bGVtZW50cyBvbmx5IGNvbnRhaW4gYSBzcGFjZS4KKyAgICAgICAgaWYgKCFbW1tzZWxmIGFjY2Vz
c2liaWxpdHlMYWJlbF0gc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFyYWN0
ZXJTZXQgd2hpdGVzcGFjZUNoYXJhY3RlclNldF1dIGxlbmd0aF0pCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBWaWRlb1JvbGU6Ci0gICAgICAg
ICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eUlzV2ViSW50ZXJhY3RpdmVWaWRlb107Ci0g
ICAgICAgICAgICAKLSAgICAgICAgLy8gTGlua3MgY2FuIHNvbWV0aW1lcyBiZSBlbGVtZW50cyAo
d2hlbiB0aGV5IG9ubHkgY29udGFpbiBzdGF0aWMgdGV4dCBvciBkb24ndCBjb250YWluIGFueXRo
aW5nKS4KLSAgICAgICAgLy8gVGhleSBzaG91bGQgbm90IGJlIGVsZW1lbnRzIHdoZW4gY29udGFp
bmluZyB0ZXh0IGFuZCBvdGhlciB0eXBlcy4KLSAgICAgICAgY2FzZSBXZWJDb3JlTGlua1JvbGU6
Ci0gICAgICAgIGNhc2UgTGlua1JvbGU6Ci0gICAgICAgICAgICBpZiAoW3NlbGYgY29udGFpbnNV
bm5hdHVyYWxseVNlZ21lbnRlZENoaWxkcmVuXSB8fCAhW3NlbGYgYWNjZXNzaWJpbGl0eUVsZW1l
bnRDb3VudF0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgR3JvdXBSb2xlOgotICAgICAgICAgICAgaWYgKFtzZWxm
IGlzU1ZHR3JvdXBFbGVtZW50XSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAvLyBBbGwgb3RoZXIgZWxlbWVudHMgYXJlIGln
bm9yZWQgb24gdGhlIGlwaG9uZS4KLSAgICAgICAgY2FzZSBBbm5vdGF0aW9uUm9sZToKLSAgICAg
ICAgY2FzZSBBcHBsaWNhdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25BbGVydFJv
bGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGU6Ci0gICAgICAgIGNh
c2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uR3JvdXBS
b2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9sZToKLSAgICAgICAgY2FzZSBBcHBs
aWNhdGlvbk1hcnF1ZWVSb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToK
LSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRleHRHcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgQXBw
bGljYXRpb25UaW1lclJvbGU6Ci0gICAgICAgIGNhc2UgQXVkaW9Sb2xlOgotICAgICAgICBjYXNl
IEJsb2NrcXVvdGVSb2xlOgotICAgICAgICBjYXNlIEJyb3dzZXJSb2xlOgotICAgICAgICBjYXNl
IEJ1c3lJbmRpY2F0b3JSb2xlOgotICAgICAgICBjYXNlIENhbnZhc1JvbGU6Ci0gICAgICAgIGNh
c2UgQ2FwdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgQ2VsbFJvbGU6Ci0gICAgICAgIGNhc2UgQ29s
b3JXZWxsUm9sZToKLSAgICAgICAgY2FzZSBDb2x1bW5Sb2xlOgotICAgICAgICBjYXNlIENvbHVt
bkhlYWRlclJvbGU6Ci0gICAgICAgIGNhc2UgRGVmaW5pdGlvblJvbGU6Ci0gICAgICAgIGNhc2Ug
RGVzY3JpcHRpb25MaXN0Um9sZToKLSAgICAgICAgY2FzZSBEZXNjcmlwdGlvbkxpc3RUZXJtUm9s
ZToKLSAgICAgICAgY2FzZSBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlOgotICAgICAgICBjYXNl
IERldGFpbHNSb2xlOgotICAgICAgICBjYXNlIERpcmVjdG9yeVJvbGU6Ci0gICAgICAgIGNhc2Ug
RGl2Um9sZToKLSAgICAgICAgY2FzZSBEb2N1bWVudFJvbGU6Ci0gICAgICAgIGNhc2UgRG9jdW1l
bnRBcnRpY2xlUm9sZToKLSAgICAgICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgotICAgICAgICBj
YXNlIERyYXdlclJvbGU6Ci0gICAgICAgIGNhc2UgRWRpdGFibGVUZXh0Um9sZToKLSAgICAgICAg
Y2FzZSBGZWVkUm9sZToKLSAgICAgICAgY2FzZSBGaWd1cmVSb2xlOgotICAgICAgICBjYXNlIEZv
b3RlclJvbGU6Ci0gICAgICAgIGNhc2UgRm9vdG5vdGVSb2xlOgotICAgICAgICBjYXNlIEZvcm1S
b2xlOgotICAgICAgICBjYXNlIEdyaWRSb2xlOgotICAgICAgICBjYXNlIEdyaWRDZWxsUm9sZToK
LSAgICAgICAgY2FzZSBHcm93QXJlYVJvbGU6Ci0gICAgICAgIGNhc2UgSGVscFRhZ1JvbGU6Ci0g
ICAgICAgIGNhc2UgSWdub3JlZFJvbGU6Ci0gICAgICAgIGNhc2UgSW5saW5lUm9sZToKLSAgICAg
ICAgY2FzZSBMYWJlbFJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAg
ICAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1h
cmtDb250ZW50SW5mb1JvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtEb2NSZWdpb25Sb2xlOgot
ICAgICAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtOYXZp
Z2F0aW9uUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya1JlZ2lvblJvbGU6Ci0gICAgICAgIGNh
c2UgTGFuZG1hcmtTZWFyY2hSb2xlOgotICAgICAgICBjYXNlIExlZ2VuZFJvbGU6Ci0gICAgICAg
IGNhc2UgTGlzdFJvbGU6Ci0gICAgICAgIGNhc2UgTGlzdEJveFJvbGU6Ci0gICAgICAgIGNhc2Ug
TGlzdEl0ZW1Sb2xlOgotICAgICAgICBjYXNlIE1hcmtSb2xlOgotICAgICAgICBjYXNlIE1hdGhF
bGVtZW50Um9sZToKLSAgICAgICAgY2FzZSBNYXR0ZVJvbGU6Ci0gICAgICAgIGNhc2UgTWVudVJv
bGU6Ci0gICAgICAgIGNhc2UgTWVudUJhclJvbGU6Ci0gICAgICAgIGNhc2UgTWVudUxpc3RQb3B1
cFJvbGU6Ci0gICAgICAgIGNhc2UgTWVudUxpc3RPcHRpb25Sb2xlOgotICAgICAgICBjYXNlIE91
dGxpbmVSb2xlOgotICAgICAgICBjYXNlIFBhcmFncmFwaFJvbGU6Ci0gICAgICAgIGNhc2UgUHJl
Um9sZToKLSAgICAgICAgY2FzZSBQcmVzZW50YXRpb25hbFJvbGU6Ci0gICAgICAgIGNhc2UgUmFk
aW9Hcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgUm93SGVhZGVyUm9sZToKLSAgICAgICAgY2FzZSBS
b3dSb2xlOgotICAgICAgICBjYXNlIFJ1YnlCYXNlUm9sZToKLSAgICAgICAgY2FzZSBSdWJ5Qmxv
Y2tSb2xlOgotICAgICAgICBjYXNlIFJ1YnlJbmxpbmVSb2xlOgotICAgICAgICBjYXNlIFJ1YnlS
dW5Sb2xlOgotICAgICAgICBjYXNlIFJ1YnlUZXh0Um9sZToKLSAgICAgICAgY2FzZSBSdWxlclJv
bGU6Ci0gICAgICAgIGNhc2UgUnVsZXJNYXJrZXJSb2xlOgotICAgICAgICBjYXNlIFNjcm9sbEFy
ZWFSb2xlOgotICAgICAgICBjYXNlIFNjcm9sbEJhclJvbGU6Ci0gICAgICAgIGNhc2UgU2hlZXRS
b2xlOgotICAgICAgICBjYXNlIFNwaW5CdXR0b25QYXJ0Um9sZToKLSAgICAgICAgY2FzZSBTcGxp
dEdyb3VwUm9sZToKLSAgICAgICAgY2FzZSBTcGxpdHRlclJvbGU6Ci0gICAgICAgIGNhc2UgU3Vt
bWFyeVJvbGU6Ci0gICAgICAgIGNhc2UgU3lzdGVtV2lkZVJvbGU6Ci0gICAgICAgIGNhc2UgU1ZH
Um9vdFJvbGU6Ci0gICAgICAgIGNhc2UgU1ZHVGV4dFBhdGhSb2xlOgotICAgICAgICBjYXNlIFNW
R1RleHRSb2xlOgotICAgICAgICBjYXNlIFNWR1RTcGFuUm9sZToKLSAgICAgICAgY2FzZSBUYWJH
cm91cFJvbGU6Ci0gICAgICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgICAgIGNhc2UgVGFiUGFu
ZWxSb2xlOgotICAgICAgICBjYXNlIFRhYmxlUm9sZToKLSAgICAgICAgY2FzZSBUYWJsZUhlYWRl
ckNvbnRhaW5lclJvbGU6Ci0gICAgICAgIGNhc2UgVGVybVJvbGU6Ci0gICAgICAgIGNhc2UgVGV4
dEdyb3VwUm9sZToKLSAgICAgICAgY2FzZSBUaW1lUm9sZToKLSAgICAgICAgY2FzZSBUcmVlUm9s
ZToKLSAgICAgICAgY2FzZSBUcmVlSXRlbVJvbGU6Ci0gICAgICAgIGNhc2UgVHJlZUdyaWRSb2xl
OgotICAgICAgICBjYXNlIFRvb2xiYXJSb2xlOgotICAgICAgICBjYXNlIFVua25vd25Sb2xlOgot
ICAgICAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZToKLSAgICAgICAgY2FzZSBXZWJB
cHBsaWNhdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgV2ViQXJlYVJvbGU6Ci0gICAgICAgIGNhc2Ug
V2luZG93Um9sZToKLSAgICAgICAgY2FzZSBSb3dHcm91cFJvbGU6CisKKyAgICAgICAgLy8gVGV4
dCBlbGVtZW50cyB0aGF0IGFyZSBqdXN0IHBpZWNlcyBvZiBsaW5rcyBvciBoZWFkZXJzIHNob3Vs
ZCBub3QgYmUgZXhwb3NlZC4KKyAgICAgICAgaWYgKFtBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5j
ZXN0b3IoW3NlbGYgYWNjZXNzaWJpbGl0eUNvbnRhaW5lcl0pIGNvbnRhaW5zVW5uYXR1cmFsbHlT
ZWdtZW50ZWRDaGlsZHJlbl0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICAgICAgCisgICAgLy8gRG9uJ3QgZXhwb3NlIGhlYWRlcnMg
YXMgZWxlbWVudHM7IGluc3RlYWQgZXhwb3NlIHRoZWlyIGNoaWxkcmVuIGFzIGVsZW1lbnRzLCB3
aXRoIHRoZSBoZWFkZXIgdHJhaXQgKHVubGVzcyB0aGV5IGhhdmUgbm8gY2hpbGRyZW4pCisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzoKKyAgICAgICAgaWYgKCFbc2VsZiBhY2Nl
c3NpYmlsaXR5RWxlbWVudENvdW50XSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlZp
ZGVvOgorICAgICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eUlzV2ViSW50ZXJhY3RpdmVW
aWRlb107CisgICAgICAgIAorICAgIC8vIExpbmtzIGNhbiBzb21ldGltZXMgYmUgZWxlbWVudHMg
KHdoZW4gdGhleSBvbmx5IGNvbnRhaW4gc3RhdGljIHRleHQgb3IgZG9uJ3QgY29udGFpbiBhbnl0
aGluZykuCisgICAgLy8gVGhleSBzaG91bGQgbm90IGJlIGVsZW1lbnRzIHdoZW4gY29udGFpbmlu
ZyB0ZXh0IGFuZCBvdGhlciB0eXBlcy4KKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJD
b3JlTGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5rOgorICAgICAgICBpZiAo
W3NlbGYgY29udGFpbnNVbm5hdHVyYWxseVNlZ21lbnRlZENoaWxkcmVuXSB8fCAhW3NlbGYgYWNj
ZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwOgorICAg
ICAgICBpZiAoW3NlbGYgaXNTVkdHcm91cEVsZW1lbnRdKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIC8vIEFsbCBvdGhlciBlbGVtZW50cyBhcmUg
aWdub3JlZCBvbiB0aGUgaXBob25lLgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFubm90
YXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uR3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25M
b2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXVkaW86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QmxvY2txdW90ZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpCcm93c2VyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkJ1c3lJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNhcHRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q2VsbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2xvcldlbGw6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbHVtbkhlYWRlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9u
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJtOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpEZXRhaWxzOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXY6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6RG9jdW1lbnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRp
Y2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpEcmF3ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RWRpdGFibGVUZXh0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZlZWQ6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkZvb3RlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290bm90ZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okdy
aWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGw6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6R3Jvd0FyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVs
cFRhZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OklubGluZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJl
bDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnk6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya01haW46CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0
aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkxlZ2VuZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGlzdEl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWFyazoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpNYXR0ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUxpc3RQb3B1cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9w
dGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpPdXRsaW5lOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQ
cmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWw6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSb3dIZWFkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlCYXNlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlJ1YnlCbG9jazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5SW5saW5lOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlSdW46CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UnVieVRleHQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVsZXI6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVsZXJNYXJrZXI6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U2Nyb2xsQXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3Jv
bGxCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2hlZXQ6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3BsaXRHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlcjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlN5c3RlbVdpZGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9vdDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdUZXh0UGF0aDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTVkdUZXh0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RT
cGFuOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkdyb3VwOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFi
UGFuZWw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFibGVIZWFkZXJDb250YWluZXI6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGVybToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXA6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRvb2xiYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50ZXJmYWNlVG9vbHRpcDoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBsaWNhdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpXZWJBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldpbmRvdzoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dHcm91cDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEwNDIsNyArMTA0MCw3
IEBAIC0gKEJPT0wpc3RyaW5nVmFsdWVTaG91bGRCZVVzZWRJbkxhYmVsCiB7CiAgICAgaWYgKG1f
b2JqZWN0LT5pc1RleHRDb250cm9sKCkpCiAgICAgICAgIHJldHVybiBOTzsKLSAgICBpZiAobV9v
YmplY3QtPnJvbGVWYWx1ZSgpID09IFBvcFVwQnV0dG9uUm9sZSkKKyAgICBpZiAobV9vYmplY3Qt
PnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbikKICAgICAgICAg
cmV0dXJuIE5POwogICAgIGlmIChtX29iamVjdC0+aXNGaWxlVXBsb2FkQnV0dG9uKCkpCiAgICAg
ICAgIHJldHVybiBOTzsKQEAgLTExMjYsMTMgKzExMjQsMTMgQEAgLSAoTlNTdHJpbmcgKilhY2Nl
c3NpYmlsaXR5TGFiZWwKICAgICAgICAgYXhUaXRsZSA9IG5pbDsKIAogICAgIC8vIEZvb3RlciBp
cyBub3QgY29uc2lkZXJlZCBhIGxhbmRtYXJrLCBidXQgd2Ugd2FudCB0aGUgcm9sZSBkZXNjcmlw
dGlvbi4KLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEZvb3RlclJvbGUpCisgICAg
aWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdGVyKQog
ICAgICAgICBsYW5kbWFya0Rlc2NyaXB0aW9uID0gQVhGb290ZXJSb2xlRGVzY3JpcHRpb25UZXh0
KCk7CiAKICAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9IFtOU011dGFibGVTdHJpbmcgc3Ry
aW5nXTsKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEhvcml6b250YWxSdWxlUm9s
ZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpI
b3Jpem9udGFsUnVsZSkKICAgICAgICAgYXBwZW5kU3RyaW5nVG9SZXN1bHQocmVzdWx0LCBBWEhv
cml6b250YWxSdWxlRGVzY3JpcHRpb25UZXh0KCkpOwotICAgICAgICAKKwogICAgIGFwcGVuZFN0
cmluZ1RvUmVzdWx0KHJlc3VsdCwgYXhUaXRsZSk7CiAgICAgYXBwZW5kU3RyaW5nVG9SZXN1bHQo
cmVzdWx0LCBheERlc2NyaXB0aW9uKTsKICAgICBpZiAoW3NlbGYgc3RyaW5nVmFsdWVTaG91bGRC
ZVVzZWRJbkxhYmVsXSkgewpAQCAtMTM5MCwxMyArMTM4OCwxMyBAQCAtIChOU1N0cmluZyAqKWFj
Y2Vzc2liaWxpdHlWYWx1ZQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgCiAgICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZSA9IG1fb2JqZWN0LT5yb2xlVmFsdWUoKTsKLSAgICBpZiAobV9vYmpl
Y3QtPmlzQ2hlY2tib3hPclJhZGlvKCkgfHwgcm9sZSA9PSBNZW51SXRlbUNoZWNrYm94Um9sZSB8
fCByb2xlID09IE1lbnVJdGVtUmFkaW9Sb2xlKSB7CisgICAgaWYgKG1fb2JqZWN0LT5pc0NoZWNr
Ym94T3JSYWRpbygpIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2ti
b3ggfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbykgewogICAgICAg
ICBzd2l0Y2ggKG1fb2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpKSB7Ci0gICAgICAgIGNh
c2UgQnV0dG9uU3RhdGVPZmY6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
OjpPZmY6CiAgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
ZCIsIDBdOwotICAgICAgICBjYXNlIEJ1dHRvblN0YXRlT246CisgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eUJ1dHRvblN0YXRlOjpPbjoKICAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVkIiwgMV07Ci0gICAgICAgIGNhc2UgQnV0dG9uU3RhdGVNaXhlZDoK
KyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkOgogICAgICAgICAg
ICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWQiLCAyXTsKICAgICAgICAg
fQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE0NTAsNyArMTQ0OCw3IEBAIC0g
KEJPT0wpYWNjZXNzaWJpbGl0eUlzQ29tYm9Cb3gKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNj
ZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICByZXR1cm4gbV9vYmpl
Y3QtPnJvbGVWYWx1ZSgpID09IENvbWJvQm94Um9sZTsKKyAgICByZXR1cm4gbV9vYmplY3QtPnJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveDsKIH0KIAogLSAoTlNTdHJp
bmcgKilhY2Nlc3NpYmlsaXR5SGludApAQCAtMTY3MCw3ICsxNjY4LDcgQEAgLSAoQk9PTCljb250
YWluc1VubmF0dXJhbGx5U2VnbWVudGVkQ2hpbAogICAgICAgICByZXR1cm4gTk87CiAgICAgCiAg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1fb2JqZWN0LT5yb2xlVmFsdWUoKTsKLSAgICBp
ZiAocm9sZSAhPSBMaW5rUm9sZSAmJiByb2xlICE9IFdlYkNvcmVMaW5rUm9sZSkKKyAgICBpZiAo
cm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluayAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlS
b2xlOjpXZWJDb3JlTGluaykKICAgICAgICAgcmV0dXJuIE5POwogICAgIAogICAgIGNvbnN0IGF1
dG8mIGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7CkBAIC0xNjgyLDcgKzE2ODAsNyBA
QCAtIChCT09MKWNvbnRhaW5zVW5uYXR1cmFsbHlTZWdtZW50ZWRDaGlsCiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuU2l6ZTsgKytpKSB7CiAgICAgICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGUgPSBjaGlsZHJlbltpXS0+cm9sZVZhbHVlKCk7Ci0gICAgICAgIGlm
IChyb2xlICE9IFN0YXRpY1RleHRSb2xlICYmIHJvbGUgIT0gSW1hZ2VSb2xlICYmIHJvbGUgIT0g
R3JvdXBSb2xlICYmIHJvbGUgIT0gVGV4dEdyb3VwUm9sZSkKKyAgICAgICAgaWYgKHJvbGUgIT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SW1hZ2UgJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAgJiYgcm9sZSAhPSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwKQogICAgICAgICAgICAgcmV0dXJuIE5POwogICAg
IH0KICAgICAKQEAgLTE4MjYsNyArMTgyNCw3IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlMaW5rZWRF
bGVtZW50CiAgICAgCiAgICAgLy8gSWYgdGhpcyBzdGF0aWMgdGV4dCBpbnNpZGUgb2YgYSBsaW5r
LCBpdCBzaG91bGQgdXNlIGl0cyBwYXJlbnQncyBsaW5rZWQgZWxlbWVudC4KICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBlbGVtZW50ID0gbV9vYmplY3Q7Ci0gICAgaWYgKG1fb2JqZWN0LT5yb2xl
VmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZSAmJiBtX29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25v
cmVkKCktPmlzTGluaygpKQorICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpLT5pc0xpbmsoKSkKICAgICAgICAgZWxlbWVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3RV
bmlnbm9yZWQoKTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW47CkBAIC0yMDAwLDcgKzE5OTgsNyBAQCAtIChBY2Nlc3Np
YmlsaXR5T2JqZWN0Kil0cmVlSXRlbVBhcmVudEZvCiB7CiAgICAgLy8gVXNlIHRoaXMgdG8gY2hl
Y2sgaWYgYW4gb2JqZWN0IGlzIGluc2lkZSBhIHRyZWVpdGVtIG9iamVjdC4KICAgICBpZiAoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWF0
Y2hlZFBhcmVudCgqb2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYg
b2JqZWN0KSB7Ci0gICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gVHJlZUl0ZW1S
b2xlOworICAgICAgICByZXR1cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpUcmVlSXRlbTsKICAgICB9KSkKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNz
aWJpbGl0eU9iamVjdCo+KHBhcmVudCk7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTIwMjIsNyArMjAy
MCw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eUVsZW1lbnREaWRCZWNvbWVGb2MKICAgICAvLyBU
aGUgZm9jdXNlZCBWb2ljZU92ZXIgZWxlbWVudCBtaWdodCBiZSB0aGUgdGV4dCBpbnNpZGUgYSBs
aW5rLgogICAgIC8vIEluIHRob3NlIGNhc2VzIHdlIHNob3VsZCBmb2N1cyBvbiB0aGUgbGluayBp
dHNlbGYuCiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBtX29iamVjdDsg
b2JqZWN0ICE9IG5pbDsgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnRPYmplY3QoKSkgewotICAgICAg
ICBpZiAob2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBXZWJBcmVhUm9sZSkKKyAgICAgICAgaWYgKG9i
amVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWEpCiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRGb2N1c0F0dHJpYnV0ZSgp
KSB7CkBAIC0yOTcxLDIwICsyOTY5LDE5IEBAIC0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eUFS
SUFDdXJyZW50U3QKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBzd2l0Y2ggKG1fb2Jq
ZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkpIHsKLSAgICBjYXNlIEFSSUFDdXJyZW50RmFsc2U6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6RmFsc2U6CiAgICAgICAgIHJl
dHVybiBAImZhbHNlIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50UGFnZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpQYWdlOgogICAgICAgICByZXR1cm4gQCJwYWdlIjsK
LSAgICBjYXNlIEFSSUFDdXJyZW50U3RlcDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3Vy
cmVudFN0YXRlOjpTdGVwOgogICAgICAgICByZXR1cm4gQCJzdGVwIjsKLSAgICBjYXNlIEFSSUFD
dXJyZW50TG9jYXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6
TG9jYXRpb246CiAgICAgICAgIHJldHVybiBAImxvY2F0aW9uIjsKLSAgICBjYXNlIEFSSUFDdXJy
ZW50VGltZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpUaW1lOgog
ICAgICAgICByZXR1cm4gQCJ0aW1lIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50RGF0ZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpEYXRlOgogICAgICAgICByZXR1cm4g
QCJkYXRlIjsKLSAgICBkZWZhdWx0OgotICAgIGNhc2UgQVJJQUN1cnJlbnRUcnVlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRydWU6CiAgICAgICAgIHJldHVybiBA
InRydWUiOwogICAgIH0KIH0KQEAgLTI5OTUsMTQgKzI5OTIsMTQgQEAgLSAoTlNTdHJpbmcgKilh
Y2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbgogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAg
IHN3aXRjaCAobV9vYmplY3QtPnNvcnREaXJlY3Rpb24oKSkgewotICAgIGNhc2UgU29ydERpcmVj
dGlvbkFzY2VuZGluZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpBc2Nl
bmRpbmc6CiAgICAgICAgIHJldHVybiBAImFzY2VuZGluZyI7Ci0gICAgY2FzZSBTb3J0RGlyZWN0
aW9uRGVzY2VuZGluZzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpEZXNj
ZW5kaW5nOgogICAgICAgICByZXR1cm4gQCJkZXNjZW5kaW5nIjsKLSAgICBjYXNlIFNvcnREaXJl
Y3Rpb25PdGhlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoK
ICAgICAgICAgcmV0dXJuIEAib3RoZXIiOwotICAgIGRlZmF1bHQ6Ci0gICAgY2FzZSBTb3J0RGly
ZWN0aW9uTm9uZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpJbnZhbGlk
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok5vbmU6CiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgfQogfQpAQCAtMzEyNiw3ICszMTIzLDcgQEAgLSAoQk9PTClhY2Nlc3Np
YmlsaXR5SXNNYXRoVG9wT2JqZWN0CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxp
dHlDYWxsXSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgcmV0dXJuIG1fb2JqZWN0LT5yb2xl
VmFsdWUoKSA9PSBEb2N1bWVudE1hdGhSb2xlOworICAgIHJldHVybiBtX29iamVjdC0+cm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50TWF0aDsKIH0KIAogLSAoTlNJbnRl
Z2VyKWFjY2Vzc2liaWxpdHlNYXRoTGluZVRoaWNrbmVzcwpAQCAtMzE0Miw3ICszMTM5LDcgQEAg
LSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5TWF0aFR5cGUKICAgICBpZiAoIVtzZWxmIF9wcmVw
YXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKG1f
b2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBNYXRoRWxlbWVudFJvbGUpIHsKKyAgICBpZiAobV9vYmpl
Y3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudCkgewogICAg
ICAgICBpZiAobV9vYmplY3QtPmlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
QCJBWE1hdGhGcmFjdGlvbiI7CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoRmVuY2VkKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0JKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTgyLDMyICs4MiwzMiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlJCiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3QKIHsKICAg
ICBpZiAoaXNNZW51TGlzdFBvcHVwKCkgfHwgaXNNZW51TGlzdE9wdGlvbigpKQotICAgICAgICBy
ZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbjo6SWdub3JlT2JqZWN0OwogCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IENhcHRpb25S
b2xlKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgIGlmIChyb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FwdGlvbikKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAKLSAgICBpZiAocm9sZVZhbHVl
KCkgPT0gTWFya1JvbGUpCi0gICAgICAgIHJldHVybiBJbmNsdWRlT2JqZWN0OworICAgIGlmIChy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWFyaykKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3Q7CiAKICAgICAvLyBOZXZl
ciBleHBvc2UgYW4gdW5rbm93biBvYmplY3Qgb24gdGhlIE1hYy4gQ2xpZW50cyBvZiB0aGUgQVgg
QVBJIHdpbGwgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIGl0LgogICAgIC8vIFNwZWNpYWwgY2Fz
ZSBpcyB3aGVuIHRoZSB1bmtub3duIG9iamVjdCBpcyBhY3R1YWxseSBhbiBhdHRhY2htZW50Lgot
ICAgIGlmIChyb2xlVmFsdWUoKSA9PSBVbmtub3duUm9sZSAmJiAhaXNBdHRhY2htZW50KCkpCi0g
ICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpVbmtub3duICYmICFpc0F0dGFjaG1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAKLSAgICBp
ZiAocm9sZVZhbHVlKCkgPT0gSW5saW5lUm9sZSAmJiAhaXNTdHlsZUZvcm1hdEdyb3VwKCkpCi0g
ICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpJbmxpbmUgJiYgIWlzU3R5bGVGb3JtYXRHcm91cCgpKQorICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogCiAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAgICAgICAg
IC8vIFRoZSBsZWdlbmQgZWxlbWVudCBpcyBpZ25vcmVkIGlmIGl0IGxpdmVzIGluc2lkZSBvZiBh
IGZpZWxkc2V0IGVsZW1lbnQgdGhhdCB1c2VzIGl0IHRvIGdlbmVyYXRlIGFsdGVybmF0aXZlIHRl
eHQuCiAgICAgICAgIGlmIChyZW5kZXJlci0+aXNMZWdlbmQoKSkgewogICAgICAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50
ICYmIGFuY2VzdG9yc09mVHlwZTxIVE1MRmllbGRTZXRFbGVtZW50PigqZWxlbWVudCkuZmlyc3Qo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOwogfQogICAg
IAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCShyZXZpc2lv
biAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYs
NyBAQCAtIChCT09MKWZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpCiAtIChOU1N0cmlu
ZyAqKWJhc2VBY2Nlc3NpYmlsaXR5VGl0bGUKIHsKICAgICAvLyBTdGF0aWMgdGV4dCBvYmplY3Rz
IHNob3VsZCBub3QgaGF2ZSBhIHRpdGxlLiBJdHMgY29udGVudCBpcyBjb21tdW5pY2F0ZWQgaW4g
aXRzIEFYVmFsdWUuCi0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0
Um9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpTdGF0aWNUZXh0KQogICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107CiAKICAgICAv
LyBBIGZpbGUgdXBsb2FkIGJ1dHRvbiBwcmVzZW50cyBhIGNoYWxsZW5nZSBiZWNhdXNlIGl0IGhh
cyBidXR0b24gdGV4dCBhbmQgYSB2YWx1ZSwgYnV0IHRoZQpAQCAtMzQwLDE2ICszNDAsMTYgQEAg
LSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eVRpdGxlCiAgICAgCiAgICAgZm9yIChjb25z
dCBhdXRvJiB0ZXh0IDogdGV4dE9yZGVyKSB7CiAgICAgICAgIC8vIElmIHdlIGhhdmUgYWx0ZXJu
YXRpdmUgdGV4dCwgdGhlbiB3ZSBzaG91bGQgbm90IGV4cG9zZSBhIHRpdGxlLgotICAgICAgICBp
ZiAodGV4dC50ZXh0U291cmNlID09IEFsdGVybmF0aXZlVGV4dCkKKyAgICAgICAgaWYgKHRleHQu
dGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAgIC8vIE9uY2Ugd2UgZW5jb3VudGVyIHZp
c2libGUgdGV4dCwgb3IgdGhlIHRleHQgZnJvbSBvdXIgY2hpbGRyZW4gdGhhdCBzaG91bGQgYmUg
dXNlZCBmb3JlbW9zdC4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBWaXNpYmxlVGV4
dCB8fCB0ZXh0LnRleHRTb3VyY2UgPT0gQ2hpbGRyZW5UZXh0KQorICAgICAgICBpZiAodGV4dC50
ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpWaXNpYmxlIHx8IHRleHQudGV4
dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6Q2hpbGRyZW4pCiAgICAgICAgICAg
ICByZXR1cm4gdGV4dC50ZXh0OwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBl
bGVtZW50IHRoYXQgbGFiZWxzIHRoaXMgb2JqZWN0IGFuZCBpdCdzIG5vdCBleHBvc2VkLCB0aGVu
IHdlIHNob3VsZCB1c2UKICAgICAgICAgLy8gdGhhdCB0ZXh0IGFzIG91ciB0aXRsZS4KLSAgICAg
ICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBMYWJlbEJ5RWxlbWVudFRleHQgJiYgIW1fb2JqZWN0
LT5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKKyAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9
PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQgJiYgIW1fb2JqZWN0LT5l
eHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRleHQ7CiAg
ICAgfQogICAgIApAQCAtMzYwLDcgKzM2MCw3IEBAIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2li
aWxpdHlEZXNjcmlwdGkKIHsKICAgICAvLyBTdGF0aWMgdGV4dCBvYmplY3RzIHNob3VsZCBub3Qg
aGF2ZSBhIGRlc2NyaXB0aW9uLiBJdHMgY29udGVudCBpcyBjb21tdW5pY2F0ZWQgaW4gaXRzIEFY
VmFsdWUuCiAgICAgLy8gT25lIGV4Y2VwdGlvbiBpcyB0aGUgbWVkaWEgY29udHJvbCBsYWJlbHMg
dGhhdCBoYXZlIGEgdmFsdWUgYW5kIGEgZGVzY3JpcHRpb24uIFRob3NlIGFyZSBzZXQgcHJvZ3Jh
bWF0aWNhbGx5LgotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJv
bGUgJiYgIW1fb2JqZWN0LT5pc01lZGlhQ29udHJvbExhYmVsKCkpCisgICAgaWYgKG1fb2JqZWN0
LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCAmJiAhbV9vYmpl
Y3QtPmlzTWVkaWFDb250cm9sTGFiZWwoKSkKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmddOwogICAgIAogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4gdGV4dE9yZGVyOwpAQCAt
MzY5LDE2ICszNjksMTYgQEAgLSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eURlc2NyaXB0
aQogICAgIE5TTXV0YWJsZVN0cmluZyAqcmV0dXJuVGV4dCA9IFtOU011dGFibGVTdHJpbmcgc3Ry
aW5nXTsKICAgICBib29sIHZpc2libGVUZXh0QXZhaWxhYmxlID0gZmFsc2U7CiAgICAgZm9yIChj
b25zdCBhdXRvJiB0ZXh0IDogdGV4dE9yZGVyKSB7Ci0gICAgICAgIGlmICh0ZXh0LnRleHRTb3Vy
Y2UgPT0gQWx0ZXJuYXRpdmVUZXh0KSB7CisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0g
QWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSB7CiAgICAgICAgICAgICBbcmV0
dXJuVGV4dCBhcHBlbmRTdHJpbmc6dGV4dC50ZXh0XTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHRleHQudGV4dFNvdXJjZSkgewogICAg
ICAgICAvLyBUaGVzZSBhcmUgc3ViLWNvbXBvbmVudHMgb2Ygb25lIGVsZW1lbnQgKEF0dGFjaG1l
bnQpIHRoYXQgYXJlIHJlLWNvbWJpbmVkIGluIE9TWCBhbmQgaU9TLgotICAgICAgICBjYXNlIFRp
dGxlVGV4dDoKLSAgICAgICAgY2FzZSBTdWJ0aXRsZVRleHQ6Ci0gICAgICAgIGNhc2UgQWN0aW9u
VGV4dDogeworICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZToKKyAg
ICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VidGl0bGU6CisgICAgICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFjdGlvbjogewogICAgICAgICAgICAgaWYgKCF0
ZXh0LnRleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBp
ZiAoW3JldHVyblRleHQgbGVuZ3RoXSkKQEAgLTM4NiwxNiArMzg2LDE2IEBAIC0gKE5TU3RyaW5n
ICopYmFzZUFjY2Vzc2liaWxpdHlEZXNjcmlwdGkKICAgICAgICAgICAgIFtyZXR1cm5UZXh0IGFw
cGVuZFN0cmluZzp0ZXh0LnRleHRdOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBWaXNpYmxlVGV4dDoKLSAgICAgICAgY2FzZSBDaGlsZHJlblRleHQ6Ci0gICAg
ICAgIGNhc2UgTGFiZWxCeUVsZW1lbnRUZXh0OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlU
ZXh0U291cmNlOjpWaXNpYmxlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNl
OjpDaGlsZHJlbjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxC
eUVsZW1lbnQ6CiAgICAgICAgICAgICB2aXNpYmxlVGV4dEF2YWlsYWJsZSA9IHRydWU7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IFRpdGxlVGFn
VGV4dCAmJiAhdmlzaWJsZVRleHRBdmFpbGFibGUpIHsKKyAgICAgICAgaWYgKHRleHQudGV4dFNv
dXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VGl0bGVUYWcgJiYgIXZpc2libGVUZXh0
QXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBbcmV0dXJuVGV4dCBhcHBlbmRTdHJpbmc6dGV4dC50
ZXh0XTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MTEsMjMgKzQxMSwyMyBA
QCAtIChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5SGVscFRleHQKICAgICAKICAgICBib29s
IGRlc2NyaXB0aXZlVGV4dEF2YWlsYWJsZSA9IGZhbHNlOwogICAgIGZvciAoY29uc3QgYXV0byYg
dGV4dCA6IHRleHRPcmRlcikgewotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEhlbHBU
ZXh0IHx8IHRleHQudGV4dFNvdXJjZSA9PSBTdW1tYXJ5VGV4dCkKKyAgICAgICAgaWYgKHRleHQu
dGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCB8fCB0ZXh0LnRleHRT
b3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpCiAgICAgICAgICAgICBy
ZXR1cm4gdGV4dC50ZXh0OwogICAgICAgICAKICAgICAgICAgLy8gSWYgYW4gZWxlbWVudCBkb2Vz
IE5PVCBoYXZlIG90aGVyIGRlc2NyaXB0aXZlIHRleHQgdGhlIHRpdGxlIHRhZyBzaG91bGQgYmUg
dXNlZCBhcyBpdHMgZGVzY3JpcHRpdmUgdGV4dC4KICAgICAgICAgLy8gQnV0LCBpZiB0aG9zZSBB
UkUgYXZhaWxhYmxlLCB0aGVuIHRoZSB0aXRsZSB0YWcgc2hvdWxkIGJlIHVzZWQgZm9yIGhlbHAg
dGV4dCBpbnN0ZWFkLgogICAgICAgICBzd2l0Y2ggKHRleHQudGV4dFNvdXJjZSkgewotICAgICAg
ICBjYXNlIEFsdGVybmF0aXZlVGV4dDoKLSAgICAgICAgY2FzZSBWaXNpYmxlVGV4dDoKLSAgICAg
ICAgY2FzZSBDaGlsZHJlblRleHQ6Ci0gICAgICAgIGNhc2UgTGFiZWxCeUVsZW1lbnRUZXh0Ogor
ICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZToKKyAgICAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VmlzaWJsZToKKyAgICAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6Q2hpbGRyZW46CisgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVRleHRTb3VyY2U6OkxhYmVsQnlFbGVtZW50OgogICAgICAgICAgICAgZGVzY3JpcHRpdmVU
ZXh0QXZhaWxhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICh0
ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmIGRlc2NyaXB0aXZlVGV4dEF2YWlsYWJs
ZSkKKyAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6VGl0bGVUYWcgJiYgZGVzY3JpcHRpdmVUZXh0QXZhaWxhYmxlKQogICAgICAgICAgICAgcmV0
dXJuIHRleHQudGV4dDsKICAgICB9CiAgICAgCkBAIC00OTgsNDggKzQ5OCw0OCBAQCAtIChDR1Bv
aW50KWNvbnZlcnRQb2ludFRvU2NyZWVuU3BhY2U6KEZsCiAtIChOU1N0cmluZyAqKWFyaWFMYW5k
bWFya1JvbGVEZXNjcmlwdGlvbgogewogICAgIHN3aXRjaCAobV9vYmplY3QtPnJvbGVWYWx1ZSgp
KSB7Ci0gICAgY2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtCYW5uZXI6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KEAiQVJJQUxhbmRtYXJrQmFubmVyIik7Ci0gICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRh
cnlSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFy
eToKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtD
b21wbGVtZW50YXJ5Iik7Ci0gICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvOgogICAgICAgICByZXR1
cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0NvbnRlbnRJbmZvIik7Ci0g
ICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrTWFpbjoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklB
TGFuZG1hcmtNYWluIik7Ci0gICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKICAgICAgICAgcmV0dXJu
IEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtOYXZpZ2F0aW9uIik7Ci0gICAg
Y2FzZSBMYW5kbWFya0RvY1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya1JlZ2lvblJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb246CiAgICAgICAgIHJldHVybiBBWEFS
SUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrUmVnaW9uIik7Ci0gICAgY2FzZSBMYW5k
bWFya1NlYXJjaFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFy
Y2g6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJr
U2VhcmNoIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgogICAgICAgICByZXR1cm4gQVhBUklBQ29u
dGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvbkFsZXJ0Iik7Ci0gICAgY2FzZSBBcHBsaWNh
dGlvbkFsZXJ0RGlhbG9nUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvbkFsZXJ0RGlhbG9nOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChA
IkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkRpYWxv
Z1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2c6CiAg
ICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uRGlh
bG9nIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkxvZ1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3Jv
dXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uTG9nIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbk1hcnF1
ZWVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToK
ICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25N
YXJxdWVlIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiBBWEFSSUFD
b250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uU3RhdHVzIik7Ci0gICAgY2FzZSBBcHBs
aWNhdGlvblRpbWVyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
blRpbWVyOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBs
aWNhdGlvblRpbWVyIik7Ci0gICAgY2FzZSBEb2N1bWVudFJvbGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6RG9jdW1lbnQ6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KEAiQVJJQURvY3VtZW50Iik7Ci0gICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50QXJ0aWNsZToKICAgICAgICAgcmV0dXJu
IEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBRG9jdW1lbnRBcnRpY2xlIik7Ci0gICAgY2Fz
ZSBEb2N1bWVudE1hdGhSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50
TWF0aDoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBRG9jdW1l
bnRNYXRoIik7Ci0gICAgY2FzZSBEb2N1bWVudE5vdGVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkRvY3VtZW50Tm90ZToKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91
cFRleHQoQCJBUklBRG9jdW1lbnROb3RlIik7Ci0gICAgY2FzZSBVc2VySW50ZXJmYWNlVG9vbHRp
cFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVyZmFjZVRvb2x0aXA6
CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQVVzZXJJbnRlcmZh
Y2VUb29sdGlwIik7Ci0gICAgY2FzZSBUYWJQYW5lbFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGFiUGFuZWw6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0
KEAiQVJJQVRhYlBhbmVsIik7Ci0gICAgY2FzZSBXZWJBcHBsaWNhdGlvblJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGljYXRpb246CiAgICAgICAgIHJldHVybiBBWEFS
SUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQVdlYkFwcGxpY2F0aW9uIik7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTY1Miw0NiArNjUyLDQ2IEBAIHN0cnVjdCBTZWFyY2hL
ZXlFbnRyeSB7CiBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogY3JlYXRlQWNjZXNz
aWJpbGl0eVNlYXJjaEtleU1hcCgpCiB7CiAgICAgY29uc3QgU2VhcmNoS2V5RW50cnkgc2VhcmNo
S2V5c1tdID0gewotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hLZXksIEFu
eVR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlBcnRpY2xlU2VhcmNo
S2V5LCBBcnRpY2xlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2tx
dW90ZVNhbWVMZXZlbFNlYXJjaEtleSwgQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXksIEJsb2NrcXVvdGVT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCb2xkRm9udFNlYXJjaEtleSwg
Qm9sZEZvbnRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCdXR0b25TZWFy
Y2hLZXksIEJ1dHRvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUNoZWNr
Qm94U2VhcmNoS2V5LCBDaGVja0JveFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUNvbnRyb2xTZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5LCBEaWZmZXJlbnRUeXBlU2VhcmNoS2V5
IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSwgRm9udENo
YW5nZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5n
ZVNlYXJjaEtleSwgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5RnJhbWVTZWFyY2hLZXksIEZyYW1lU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtleSwgR3JhcGhpY1NlYXJjaEtleSB9LAotICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDFT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwyU2VhcmNo
S2V5LCBIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
SGVhZGluZ0xldmVsM1NlYXJjaEtleSwgSGVhZGluZ0xldmVsM1NlYXJjaEtleSB9LAotICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDRT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw1U2VhcmNo
S2V5LCBIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
SGVhZGluZ0xldmVsNlNlYXJjaEtleSwgSGVhZGluZ0xldmVsNlNlYXJjaEtleSB9LAotICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXksIEhlYWRpbmdTYW1l
TGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2VhcmNo
S2V5LCBIZWFkaW5nU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGlnaGxp
Z2h0ZWRTZWFyY2hLZXksIEhpZ2hsaWdodGVkU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSwgSXRhbGljRm9udFNlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5LCBMYW5kbWFya1NlYXJjaEtl
eSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpbmtTZWFyY2hLZXksIExpbmtTZWFyY2hL
ZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNoS2V5LCBMaXN0U2VhcmNo
S2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleSwgTGl2
ZVJlZ2lvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRX
b3JkU2VhcmNoS2V5LCBNaXNzcGVsbGVkV29yZFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXksIE91dGxpbmVTZWFyY2hLZXkgfSwKLSAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXksIFBsYWluVGV4dFNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXksIFJhZGlvR3Jv
dXBTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTYW1lVHlwZVNlYXJjaEtl
eSwgU2FtZVR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdGF0aWNU
ZXh0U2VhcmNoS2V5LCBTdGF0aWNUZXh0U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXksIFN0eWxlQ2hhbmdlU2VhcmNoS2V5IH0sCi0gICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXksIFRhYmxlU2FtZUxl
dmVsU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXks
IFRhYmxlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2Vh
cmNoS2V5LCBUZXh0RmllbGRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlV
bmRlcmxpbmVTZWFyY2hLZXksIFVuZGVybGluZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXksIFVudmlzaXRlZExpbmtTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlWaXNpdGVkTGlua1NlYXJjaEtleSwgVmlzaXRl
ZExpbmtTZWFyY2hLZXkgfQorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hL
ZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGUgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlBcnRpY2xlU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBcnRpY2xl
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtl
eSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QmxvY2txdW90ZVNhbWVMZXZlbCB9LAorICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk6OkJsb2NrcXVvdGUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCb2xkRm9udFNl
YXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Qm9sZEZvbnQgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlCdXR0b25TZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkJ1
dHRvbiB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5LCBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpDaGVja0JveCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUNvbnRyb2xTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkNvbnRyb2wgfSwKKyAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5LCBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpEaWZmZXJlbnRUeXBlIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
Rm9udENoYW5nZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Rm9udENoYW5nZSB9
LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSwgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleTo6Rm9udENvbG9yQ2hhbmdlIH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5RnJhbWVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkZyYW1lIH0s
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtleSwgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6R3JhcGhpYyB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdM
ZXZlbDFTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDEgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWwyIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGlu
Z0xldmVsMyB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hL
ZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDQgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5OjpIZWFkaW5nTGV2ZWw1IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xl
dmVsNlNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsNiB9LAor
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXksIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdTYW1lTGV2ZWwgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlIZWFkaW5nU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5n
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXksIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkhpZ2hsaWdodGVkIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5SXRhbGljRm9udFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SXRhbGljRm9u
dCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpMYW5kbWFyayB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxp
bmtTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkxpbmsgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpMaXN0
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleSwgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6TGl2ZVJlZ2lvbiB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eU1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpNaXNzcGVs
bGVkV29yZCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXksIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6Ok91dGxpbmUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlQbGFpblRleHRTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlBsYWluVGV4dCB9
LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXksIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6OlJhZGlvR3JvdXAgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlT
YW1lVHlwZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6U2FtZVR5cGUgfSwKKyAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5OjpTdGF0aWNUZXh0IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U3R5bGVD
aGFuZ2VTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlN0eWxlQ2hhbmdlIH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXksIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6OlRhYmxlU2FtZUxldmVsIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5VGFibGVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlRhYmxlIH0sCisgICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpUZXh0RmllbGQgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVT
ZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlVuZGVybGluZSB9LAorICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk6OlVudmlzaXRlZExpbmsgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlWaXNpdGVk
TGlua1NlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6VmlzaXRlZExpbmsgfQogICAg
IH07CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0g
bmV3IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXA7CkBAIC03MDQsMTEgKzcwNCwxMSBAQCBzdGF0
aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogY3JlYXRlCiBzdGF0aWMgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEFueVR5
cGVTZWFyY2hLZXk7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBbnlU
eXBlOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBz
ZWFyY2hLZXlNYXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKCk7CiAgICAgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFyY2hLZXkgPSBzZWFyY2hLZXlNYXAtPmdldCh2YWx1ZSk7
ICAgIAotICAgIHJldHVybiBzZWFyY2hLZXkgPyBzZWFyY2hLZXkgOiBBbnlUeXBlU2VhcmNoS2V5
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHNlYXJjaEtleSkgPyBzZWFyY2hLZXkgOiBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpBbnlUeXBlOwogfQogCiBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFy
YW1ldGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUpCkBAIC03MjEsOSArNzIxLDkgQEAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGFj
Y2Vzc2liaWxpdAogICAgIE5TTnVtYmVyICp2aXNpYmxlT25seVBhcmFtZXRlciA9IFtwYXJhbWV0
ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYVmlzaWJsZU9ubHkiXTsKICAgICBpZCBz
ZWFyY2hLZXlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6
QCJBWFNlYXJjaEtleSJdOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24g
ZGlyZWN0aW9uID0gU2VhcmNoRGlyZWN0aW9uTmV4dDsKKyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNo
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQ7
CiAgICAgaWYgKFtkaXJlY3Rpb25QYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKLSAgICAgICAgZGlyZWN0aW9uID0gW2RpcmVjdGlvblBhcmFtZXRlciBpc0VxdWFsVG9T
dHJpbmc6QCJBWERpcmVjdGlvbk5leHQiXSA/IFNlYXJjaERpcmVjdGlvbk5leHQgOiBTZWFyY2hE
aXJlY3Rpb25QcmV2aW91czsKKyAgICAgICAgZGlyZWN0aW9uID0gW2RpcmVjdGlvblBhcmFtZXRl
ciBpc0VxdWFsVG9TdHJpbmc6QCJBWERpcmVjdGlvbk5leHQiXSA/IEFjY2Vzc2liaWxpdHlTZWFy
Y2hEaXJlY3Rpb246Ok5leHQgOiBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91
czsKICAgICAKICAgICBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSA9IGZhbHNlOwogICAg
IGlmIChbaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05T
TnVtYmVyIGNsYXNzXV0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ5NCwyNCArNDk0LDI0IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dENyaXRlcmlh
IGEKICAgICBOU1N0cmluZyAqcmVwbGFjZW1lbnRTdHJpbmdQYXJhbWV0ZXIgPSBbcGFyYW1ldGVy
aXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dFJlcGxh
Y2VtZW50U3RyaW5nXTsKICAgICBOU0FycmF5ICpzZWFyY2hTdHJpbmdzUGFyYW1ldGVyID0gW3Bh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdFRl
eHRTZWFyY2hTdHJpbmdzXTsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2
aXR5IGFjdGl2aXR5ID0gRmluZEFuZFNlbGVjdEFjdGl2aXR5OworICAgIEFjY2Vzc2liaWxpdHlT
ZWxlY3RUZXh0QWN0aXZpdHkgYWN0aXZpdHkgPSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2
aXR5OjpGaW5kQW5kU2VsZWN0OwogICAgIGlmIChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewogICAgICAgICBpZiAoW2FjdGl2aXR5UGFyYW1ldGVy
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHlGaW5kQW5k
UmVwbGFjZV0pCi0gICAgICAgICAgICBhY3Rpdml0eSA9IEZpbmRBbmRSZXBsYWNlQWN0aXZpdHk7
CisgICAgICAgICAgICBhY3Rpdml0eSA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6
OkZpbmRBbmRSZXBsYWNlOwogICAgICAgICBlbHNlIGlmIChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNF
cXVhbFRvU3RyaW5nOmtBWFNlbGVjdFRleHRBY3Rpdml0eUZpbmRBbmRDYXBpdGFsaXplXSkKLSAg
ICAgICAgICAgIGFjdGl2aXR5ID0gRmluZEFuZENhcGl0YWxpemU7CisgICAgICAgICAgICBhY3Rp
dml0eSA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRDYXBpdGFsaXpl
OwogICAgICAgICBlbHNlIGlmIChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNFcXVhbFRvU3RyaW5nOmtB
WFNlbGVjdFRleHRBY3Rpdml0eUZpbmRBbmRMb3dlcmNhc2VdKQotICAgICAgICAgICAgYWN0aXZp
dHkgPSBGaW5kQW5kTG93ZXJjYXNlOworICAgICAgICAgICAgYWN0aXZpdHkgPSBBY2Nlc3NpYmls
aXR5U2VsZWN0VGV4dEFjdGl2aXR5OjpGaW5kQW5kTG93ZXJjYXNlOwogICAgICAgICBlbHNlIGlm
IChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNFcXVhbFRvU3RyaW5nOmtBWFNlbGVjdFRleHRBY3Rpdml0
eUZpbmRBbmRVcHBlcmNhc2VdKQotICAgICAgICAgICAgYWN0aXZpdHkgPSBGaW5kQW5kVXBwZXJj
YXNlOworICAgICAgICAgICAgYWN0aXZpdHkgPSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFjdGl2
aXR5OjpGaW5kQW5kVXBwZXJjYXNlOwogICAgIH0KICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5U2Vs
ZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb24gYW1iaWd1aXR5UmVzb2x1dGlvbiA9IENsb3Nlc3RU
b1NlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb247CisgICAgQWNjZXNzaWJpbGl0eVNlbGVjdFRl
eHRBbWJpZ3VpdHlSZXNvbHV0aW9uIGFtYmlndWl0eVJlc29sdXRpb24gPSBBY2Nlc3NpYmlsaXR5
U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RUbzsKICAgICBpZiAoW2FtYmln
dWl0eVJlc29sdXRpb25QYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewogICAgICAgICBpZiAoW2FtYmlndWl0eVJlc29sdXRpb25QYXJhbWV0ZXIgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uQ2xvc2VzdEFm
dGVyU2VsZWN0aW9uXSkKLSAgICAgICAgICAgIGFtYmlndWl0eVJlc29sdXRpb24gPSBDbG9zZXN0
QWZ0ZXJTZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uOworICAgICAgICAgICAgYW1iaWd1aXR5
UmVzb2x1dGlvbiA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbjo6
Q2xvc2VzdEFmdGVyOwogICAgICAgICBlbHNlIGlmIChbYW1iaWd1aXR5UmVzb2x1dGlvblBhcmFt
ZXRlciBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJl
c29sdXRpb25DbG9zZXN0QmVmb3JlU2VsZWN0aW9uXSkKLSAgICAgICAgICAgIGFtYmlndWl0eVJl
c29sdXRpb24gPSBDbG9zZXN0QmVmb3JlU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbjsKKyAg
ICAgICAgICAgIGFtYmlndWl0eVJlc29sdXRpb24gPSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFt
YmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RCZWZvcmU7CiAgICAgfQogICAgIAogICAgIFN0cmlu
ZyByZXBsYWNlbWVudFN0cmluZzsKQEAgLTExOTgsNyArMTE5OCw3IEBAIC0gKE5TQXJyYXkqKWFk
ZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmkKICAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eUFSSUFQb3NJblNldEF0dHJpYnV0ZV07CiAgICAgCiAgICAgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb24gc29ydERpcmVjdGlvbiA9IG1fb2JqZWN0LT5zb3J0RGlyZWN0
aW9uKCk7Ci0gICAgaWYgKHNvcnREaXJlY3Rpb24gIT0gU29ydERpcmVjdGlvbk5vbmUgJiYgc29y
dERpcmVjdGlvbiAhPSBTb3J0RGlyZWN0aW9uSW52YWxpZCkKKyAgICBpZiAoc29ydERpcmVjdGlv
biAhPSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9uZSAmJiBzb3J0RGlyZWN0aW9uICE9
IEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpJbnZhbGlkKQogICAgICAgICBbYWRkaXRpb25h
bCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZV07CiAgICAg
CiAgICAgLy8gSWYgYW4gb2JqZWN0IGlzIGEgY2hpbGQgb2YgYSBsaXZlIHJlZ2lvbiwgdGhlbiBh
ZGQgdGhlc2UKQEAgLTE2NjEsNyArMTY2MSw3IEBAIC0gKE5TQXJyYXkqKWFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVOYW1lcwogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gW29iamVjdEF0dHJpYnV0
ZXMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6YWRkaXRpb25hbEF0dHJpYnV0ZXNdOwog
ICAgIAogICAgIC8vIE9ubHkgZXhwb3NlIEFYQVJJQUN1cnJlbnQgYXR0cmlidXRlIHdoZW4gdGhl
IGVsZW1lbnQgaXMgc2V0IHRvIGJlIGN1cnJlbnQgaXRlbS4KLSAgICBpZiAobV9vYmplY3QtPmFy
aWFDdXJyZW50U3RhdGUoKSAhPSBBUklBQ3VycmVudEZhbHNlKQorICAgIGlmIChtX29iamVjdC0+
YXJpYUN1cnJlbnRTdGF0ZSgpICE9IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpGYWxz
ZSkKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IFtvYmplY3RBdHRyaWJ1dGVzIGFycmF5QnlB
ZGRpbmdPYmplY3RzRnJvbUFycmF5OkBbIE5TQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50QXR0cmli
dXRlIF1dOwogICAgIAogICAgIHJldHVybiBvYmplY3RBdHRyaWJ1dGVzOwpAQCAtMTg0OSwxNTQg
KzE4NDksMTU0IEBAIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgY3JlYXQKICAg
ICB9OwogICAgIAogICAgIHN0YXRpYyBjb25zdCBSb2xlRW50cnkgcm9sZXNbXSA9IHsKLSAgICAg
ICAgeyBVbmtub3duUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGUgfSwKLSAgICAgICAg
eyBCdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0sCi0gICAgICAgIHsgUmFk
aW9CdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlSYWRpb0J1dHRvblJvbGUgfSwKLSAgICAgICAg
eyBDaGVja0JveFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9sZSB9LAotICAgICAgICB7
IFNsaWRlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVNsaWRlclJvbGUgfSwKLSAgICAgICAgeyBUYWJH
cm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eVRhYkdyb3VwUm9sZSB9LAotICAgICAgICB7IFRleHRG
aWVsZFJvbGUsIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFJvbGUgfSwKLSAgICAgICAgeyBTdGF0
aWNUZXh0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFJvbGUgfSwKLSAgICAgICAgeyBU
ZXh0QXJlYVJvbGUsIE5TQWNjZXNzaWJpbGl0eVRleHRBcmVhUm9sZSB9LAotICAgICAgICB7IFNj
cm9sbEFyZWFSb2xlLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxBcmVhUm9sZSB9LAotICAgICAgICB7
IFBvcFVwQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UG9wVXBCdXR0b25Sb2xlIH0sCi0gICAg
ICAgIHsgTWVudUJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVCdXR0b25Sb2xlIH0sCi0g
ICAgICAgIHsgVGFibGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGUgfSwKLSAgICAgICAg
eyBBcHBsaWNhdGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUFwcGxpY2F0aW9uUm9sZSB9LAotICAg
ICAgICB7IEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
VGV4dEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUmFk
aW9Hcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
TGlzdFJvbGUsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCi0gICAgICAgIHsgRGlyZWN0b3J5
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUgfSwKLSAgICAgICAgeyBTY3JvbGxCYXJSb2xl
LCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxCYXJSb2xlIH0sCi0gICAgICAgIHsgVmFsdWVJbmRpY2F0
b3JSb2xlLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUluZGljYXRvclJvbGUgfSwKLSAgICAgICAgeyBJ
bWFnZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAotICAgICAgICB7IE1lbnVCYXJS
b2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51QmFyUm9sZSB9LAotICAgICAgICB7IE1lbnVSb2xlLCBO
U0FjY2Vzc2liaWxpdHlNZW51Um9sZSB9LAotICAgICAgICB7IE1lbnVJdGVtUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0sCi0gICAgICAgIHsgTWVudUl0ZW1DaGVja2JveFJvbGUs
IE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVtUm9sZSB9LAotICAgICAgICB7IE1lbnVJdGVtUmFkaW9S
b2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51SXRlbVJvbGUgfSwKLSAgICAgICAgeyBDb2x1bW5Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlDb2x1bW5Sb2xlIH0sCi0gICAgICAgIHsgUm93Um9sZSwgTlNBY2Nl
c3NpYmlsaXR5Um93Um9sZSB9LAotICAgICAgICB7IFRvb2xiYXJSb2xlLCBOU0FjY2Vzc2liaWxp
dHlUb29sYmFyUm9sZSB9LAotICAgICAgICB7IEJ1c3lJbmRpY2F0b3JSb2xlLCBOU0FjY2Vzc2li
aWxpdHlCdXN5SW5kaWNhdG9yUm9sZSB9LAotICAgICAgICB7IFByb2dyZXNzSW5kaWNhdG9yUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCi0gICAgICAgIHsgV2lu
ZG93Um9sZSwgTlNBY2Nlc3NpYmlsaXR5V2luZG93Um9sZSB9LAotICAgICAgICB7IERyYXdlclJv
bGUsIE5TQWNjZXNzaWJpbGl0eURyYXdlclJvbGUgfSwKLSAgICAgICAgeyBTeXN0ZW1XaWRlUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5U3lzdGVtV2lkZVJvbGUgfSwKLSAgICAgICAgeyBPdXRsaW5lUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKLSAgICAgICAgeyBJbmNyZW1lbnRvclJv
bGUsIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9sZSB9LAotICAgICAgICB7IEJyb3dzZXJS
b2xlLCBOU0FjY2Vzc2liaWxpdHlCcm93c2VyUm9sZSB9LAotICAgICAgICB7IENvbWJvQm94Um9s
ZSwgTlNBY2Nlc3NpYmlsaXR5Q29tYm9Cb3hSb2xlIH0sCi0gICAgICAgIHsgU3BsaXRHcm91cFJv
bGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgU3BsaXR0ZXJS
b2xlLCBOU0FjY2Vzc2liaWxpdHlTcGxpdHRlclJvbGUgfSwKLSAgICAgICAgeyBDb2xvcldlbGxS
b2xlLCBOU0FjY2Vzc2liaWxpdHlDb2xvcldlbGxSb2xlIH0sCi0gICAgICAgIHsgR3Jvd0FyZWFS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm93QXJlYVJvbGUgfSwKLSAgICAgICAgeyBTaGVldFJvbGUs
IE5TQWNjZXNzaWJpbGl0eVNoZWV0Um9sZSB9LAotICAgICAgICB7IEhlbHBUYWdSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlIZWxwVGFnUm9sZSB9LAotICAgICAgICB7IE1hdHRlUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5TWF0dGVSb2xlIH0sCi0gICAgICAgIHsgUnVsZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlS
dWxlclJvbGUgfSwKLSAgICAgICAgeyBSdWxlck1hcmtlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVJ1
bGVyTWFya2VyUm9sZSB9LAotICAgICAgICB7IExpbmtSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaW5r
Um9sZSB9LAotICAgICAgICB7IERpc2Nsb3N1cmVUcmlhbmdsZVJvbGUsIE5TQWNjZXNzaWJpbGl0
eURpc2Nsb3N1cmVUcmlhbmdsZVJvbGUgfSwKLSAgICAgICAgeyBHcmlkUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5VGFibGVSb2xlIH0sCi0gICAgICAgIHsgVHJlZUdyaWRSb2xlLCBOU0FjY2Vzc2liaWxp
dHlUYWJsZVJvbGUgfSwKLSAgICAgICAgeyBXZWJDb3JlTGlua1JvbGUsIE5TQWNjZXNzaWJpbGl0
eUxpbmtSb2xlIH0sCi0gICAgICAgIHsgSW1hZ2VNYXBMaW5rUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
TGlua1JvbGUgfSwKLSAgICAgICAgeyBJbWFnZU1hcFJvbGUsIEAiQVhJbWFnZU1hcCIgfSwKLSAg
ICAgICAgeyBMaXN0TWFya2VyUm9sZSwgQCJBWExpc3RNYXJrZXIiIH0sCi0gICAgICAgIHsgV2Vi
QXJlYVJvbGUsIEAiQVhXZWJBcmVhIiB9LAotICAgICAgICB7IEhlYWRpbmdSb2xlLCBAIkFYSGVh
ZGluZyIgfSwKLSAgICAgICAgeyBMaXN0Qm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUg
fSwKLSAgICAgICAgeyBMaXN0Qm94T3B0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4
dFJvbGUgfSwKLSAgICAgICAgeyBDZWxsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwK
LSAgICAgICAgeyBHcmlkQ2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCi0gICAg
ICAgIHsgVGFibGVIZWFkZXJDb250YWluZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKLSAgICAgICAgeyBDb2x1bW5IZWFkZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlDZWxsUm9sZSB9
LAotICAgICAgICB7IFJvd0hlYWRlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCi0g
ICAgICAgIHsgRGVmaW5pdGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IERlc2NyaXB0aW9uTGlzdFRlcm1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKLSAgICAgICAgeyBUZXJtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgRGVzY3JpcHRpb25MaXN0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJv
bGUgfSwKLSAgICAgICAgeyBTbGlkZXJUaHVtYlJvbGUsIE5TQWNjZXNzaWJpbGl0eVZhbHVlSW5k
aWNhdG9yUm9sZSB9LAotICAgICAgICB7IFdlYkFwcGxpY2F0aW9uUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFuZG1hcmtCYW5uZXJSb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya0RvY1JlZ2lvblJv
bGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrQ29udGVu
dEluZm9Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFy
a01haW5Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFy
a05hdmlnYXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBM
YW5kbWFya1JlZ2lvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7
IExhbmRtYXJrU2VhcmNoUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgQXBwbGljYXRpb25BbGVydFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkRpYWxvZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uR3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvblRleHRHcm91cFJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uTG9nUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25NYXJxdWVlUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25TdGF0
dXNSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlv
blRpbWVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRG9jdW1l
bnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEb2N1bWVudEFy
dGljbGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEb2N1bWVu
dE1hdGhSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEb2N1bWVu
dE5vdGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBVc2VySW50
ZXJmYWNlVG9vbHRpcFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7
IFRhYlJvbGUsIE5TQWNjZXNzaWJpbGl0eVJhZGlvQnV0dG9uUm9sZSB9LAotICAgICAgICB7IFRh
Ykxpc3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUYWJQ
YW5lbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFRyZWVSb2xl
LCBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm9sZSB9LAotICAgICAgICB7IFRyZWVJdGVtUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5Um93Um9sZSB9LAotICAgICAgICB7IExpc3RJdGVtUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUGFyYWdyYXBoUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFiZWxSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKLSAgICAgICAgeyBEaXZSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKLSAgICAgICAgeyBGb3JtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgU3BpbkJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9sZSB9LAot
ICAgICAgICB7IEZvb3RlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAg
ICB7IFRvZ2dsZUJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9sZSB9LAotICAg
ICAgICB7IENhbnZhc1JvbGUsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAotICAgICAgICB7
IFNWR1Jvb3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMZWdl
bmRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBNYXRoRWxlbWVu
dFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEF1ZGlvUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVmlkZW9Sb2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBIb3Jpem9udGFsUnVsZVJvbGUsIE5TQWNj
ZXNzaWJpbGl0eVNwbGl0dGVyUm9sZSB9LAotICAgICAgICB7IEJsb2NrcXVvdGVSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTd2l0Y2hSb2xlLCBOU0FjY2Vzc2li
aWxpdHlDaGVja0JveFJvbGUgfSwKLSAgICAgICAgeyBTZWFyY2hGaWVsZFJvbGUsIE5TQWNjZXNz
aWJpbGl0eVRleHRGaWVsZFJvbGUgfSwKLSAgICAgICAgeyBQcmVSb2xlLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBSdWJ5QmFzZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAotICAgICAgICB7IFJ1YnlCbG9ja1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IFJ1YnlJbmxpbmVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKLSAgICAgICAgeyBSdWJ5UnVuUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgUnVieVRleHRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAg
ICAgICAgeyBEZXRhaWxzUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgU3VtbWFyeVJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBT
VkdUZXh0UGF0aFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFNW
R1RleHRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTVkdUU3Bh
blJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IElubGluZVJvbGUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IE1hcmtSb2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUaW1lUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRmVlZFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IEZpZ3VyZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAot
ICAgICAgICB7IEZvb3Rub3RlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24sIE5TQWNjZXNzaWJpbGl0eVVua25vd25S
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbiwgTlNBY2Nlc3NpYmls
aXR5QnV0dG9uUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRv
biwgTlNBY2Nlc3NpYmlsaXR5UmFkaW9CdXR0b25Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94LCBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyLCBOU0FjY2Vzc2liaWxpdHlTbGlkZXJSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkdyb3VwLCBOU0FjY2Vzc2liaWxp
dHlUYWJHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxk
LCBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlN0YXRpY1RleHQsIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhLCBOU0FjY2Vzc2liaWxpdHlUZXh0QXJl
YVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQXJlYSwgTlNBY2Nl
c3NpYmlsaXR5U2Nyb2xsQXJlYVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
UG9wVXBCdXR0b24sIE5TQWNjZXNzaWJpbGl0eVBvcFVwQnV0dG9uUm9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlNZW51QnV0dG9u
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZSwgTlNBY2Nlc3NpYmls
aXR5VGFibGVSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9u
LCBOU0FjY2Vzc2liaWxpdHlBcHBsaWNhdGlvblJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JvdXAsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwLCBOU0FjY2Vzc2liaWxpdHlS
YWRpb0dyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0LCBOU0Fj
Y2Vzc2liaWxpdHlMaXN0Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEaXJl
Y3RvcnksIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlNjcm9sbEJhciwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsQmFyUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpWYWx1ZUluZGljYXRvciwgTlNBY2Nlc3NpYmlsaXR5VmFs
dWVJbmRpY2F0b3JSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlLCBO
U0FjY2Vzc2liaWxpdHlJbWFnZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUJhciwgTlNBY2Nlc3NpYmlsaXR5TWVudUJhclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6TWVudSwgTlNBY2Nlc3NpYmlsaXR5TWVudVJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW0sIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVtUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94LCBOU0FjY2Vz
c2liaWxpdHlNZW51SXRlbVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW1SYWRpbywgTlNBY2Nlc3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6OkNvbHVtbiwgTlNBY2Nlc3NpYmlsaXR5Q29sdW1uUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3csIE5TQWNjZXNzaWJpbGl0eVJvd1JvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhciwgTlNBY2Nlc3NpYmlsaXR5VG9v
bGJhclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QnVzeUluZGljYXRvciwg
TlNBY2Nlc3NpYmlsaXR5QnVzeUluZGljYXRvclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IsIE5TQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNh
dG9yUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpXaW5kb3csIE5TQWNjZXNz
aWJpbGl0eVdpbmRvd1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RHJhd2Vy
LCBOU0FjY2Vzc2liaWxpdHlEcmF3ZXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OlN5c3RlbVdpZGUsIE5TQWNjZXNzaWJpbGl0eVN5c3RlbVdpZGVSb2xlIH0sCisgICAgICAg
IHsgQWNjZXNzaWJpbGl0eVJvbGU6Ok91dGxpbmUsIE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkluY3JlbWVudG9yLCBOU0FjY2Vzc2li
aWxpdHlJbmNyZW1lbnRvclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QnJv
d3NlciwgTlNBY2Nlc3NpYmlsaXR5QnJvd3NlclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6Q29tYm9Cb3gsIE5TQWNjZXNzaWJpbGl0eUNvbWJvQm94Um9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdEdyb3VwLCBOU0FjY2Vzc2liaWxpdHlTcGxpdEdy
b3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlciwgTlNBY2Nl
c3NpYmlsaXR5U3BsaXR0ZXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bG9yV2VsbCwgTlNBY2Nlc3NpYmlsaXR5Q29sb3JXZWxsUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpHcm93QXJlYSwgTlNBY2Nlc3NpYmlsaXR5R3Jvd0FyZWFSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNoZWV0LCBOU0FjY2Vzc2liaWxpdHlTaGVldFJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVscFRhZywgTlNBY2Nlc3NpYmls
aXR5SGVscFRhZ1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0dGUsIE5T
QWNjZXNzaWJpbGl0eU1hdHRlUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpS
dWxlciwgTlNBY2Nlc3NpYmlsaXR5UnVsZXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlJ1bGVyTWFya2VyLCBOU0FjY2Vzc2liaWxpdHlSdWxlck1hcmtlclJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluaywgTlNBY2Nlc3NpYmlsaXR5TGlua1JvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlzY2xvc3VyZVRyaWFuZ2xlLCBOU0Fj
Y2Vzc2liaWxpdHlEaXNjbG9zdXJlVHJpYW5nbGVSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkdyaWQsIE5TQWNjZXNzaWJpbGl0eVRhYmxlUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZCwgTlNBY2Nlc3NpYmlsaXR5VGFibGVSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rLCBOU0FjY2Vzc2liaWxpdHlM
aW5rUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbmssIE5T
QWNjZXNzaWJpbGl0eUxpbmtSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Oklt
YWdlTWFwLCBAIkFYSW1hZ2VNYXAiIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RNYXJrZXIsIEAiQVhMaXN0TWFya2VyIiB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpXZWJBcmVhLCBAIkFYV2ViQXJlYSIgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
SGVhZGluZywgQCJBWEhlYWRpbmciIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RCb3gsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6Okxpc3RCb3hPcHRpb24sIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWRDZWxsLCBOU0FjY2Vzc2liaWxp
dHlDZWxsUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNv
bnRhaW5lciwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkNvbHVtbkhlYWRlciwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyLCBOU0FjY2Vzc2liaWxpdHlDZWxsUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRp
b25MaXN0RGV0YWlsLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0VGVybSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRlcm0sIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxp
c3QsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OlNsaWRlclRodW1iLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUluZGljYXRvclJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGljYXRpb24sIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5l
ciwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtD
b250ZW50SW5mbywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbiwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
UmVnaW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtTZWFyY2gsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0LCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25B
bGVydERpYWxvZywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlhbG9nLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uVGV4dEdyb3VwLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2csIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpB
cHBsaWNhdGlvblN0YXR1cywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXIsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudCwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50
QXJ0aWNsZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkRvY3VtZW50TWF0aCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZSwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlVzZXJJbnRlcmZhY2VUb29s
dGlwLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFiLCBOU0FjY2Vzc2liaWxpdHlSYWRpb0J1dHRvblJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdCwgTlNBY2Nlc3NpYmlsaXR5VGFiR3JvdXBSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSwgTlNBY2Nlc3Np
YmlsaXR5T3V0bGluZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0
ZW0sIE5TQWNjZXNzaWJpbGl0eVJvd1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEl0ZW0sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpQYXJhZ3JhcGgsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJlbCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRpdiwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0sIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9u
LCBOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRvclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6Rm9vdGVyLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VG9nZ2xlQnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzLCBOU0FjY2Vzc2liaWxp
dHlJbWFnZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9vdCwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okxl
Z2VuZCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6Ok1hdGhFbGVtZW50LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVkaW8sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpWaWRlbywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxlLCBOU0Fj
Y2Vzc2liaWxpdHlTcGxpdHRlclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
QmxvY2txdW90ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaCwgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkLCBOU0FjY2Vzc2liaWxpdHlUZXh0
RmllbGRSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlByZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlCYXNl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UnVieUJsb2NrLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6UnVieUlubGluZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlSdW4sIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5VGV4dCwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHMs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpTdW1tYXJ5LCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlNWR1RleHRQYXRoLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RTcGFuLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5lLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWFyaywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlRpbWUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpGZWVkLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6RmlndXJlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAgPSAq
bmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwogICAgIAogICAgIGNvbnN0IHVuc2lnbmVkIG51bVJv
bGVzID0gc2l6ZW9mKHJvbGVzKSAvIHNpemVvZihyb2xlc1swXSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bVJvbGVzOyArK2kpCi0gICAgICAgIHJvbGVNYXAuc2V0KHJvbGVzW2ld
LnZhbHVlLCByb2xlc1tpXS5zdHJpbmcpOworICAgICAgICByb2xlTWFwLnNldChzdGF0aWNfY2Fz
dDxpbnQ+KHJvbGVzW2ldLnZhbHVlKSwgcm9sZXNbaV0uc3RyaW5nKTsKICAgICByZXR1cm4gcm9s
ZU1hcDsKIH0KIAogc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2li
aWxpdHlSb2xlIHZhbHVlKQogewotICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PGludD4odmFsdWUpKTsKICAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVJvbGVN
YXAmIHJvbGVNYXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCgpOwotICAgIHJldHVybiBy
b2xlTWFwLmdldCh2YWx1ZSk7CisgICAgcmV0dXJuIHJvbGVNYXAuZ2V0KHN0YXRpY19jYXN0PGlu
dD4odmFsdWUpKTsKIH0KIAogLSAoTlNTdHJpbmcqKXJvbGUKQEAgLTIwMDgsMTcgKzIwMDgsMTcg
QEAgLSAoTlNTdHJpbmcqKXJvbGUKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwogCi0gICAgaWYg
KHJvbGUgPT0gTGFiZWxSb2xlICYmIGlzPEFjY2Vzc2liaWxpdHlMYWJlbD4oKm1fb2JqZWN0KSAm
JiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGFiZWw+KCptX29iamVjdCkuY29udGFpbnNPbmx5U3Rh
dGljVGV4dCgpKQotICAgICAgICByb2xlID0gU3RhdGljVGV4dFJvbGU7CisgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsICYmIGlzPEFjY2Vzc2liaWxpdHlMYWJlbD4oKm1f
b2JqZWN0KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGFiZWw+KCptX29iamVjdCkuY29udGFp
bnNPbmx5U3RhdGljVGV4dCgpKQorICAgICAgICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0
YXRpY1RleHQ7CiAKICAgICAvLyBUaGUgbWZlbmNlZCBlbGVtZW50IGNyZWF0ZXMgYW5vbnltb3Vz
IFJlbmRlck1hdGhNTE9wZXJhdG9ycyB3aXRoIG5vIFJlbmRlclRleHQKICAgICAvLyBkZXNjZW5k
YW50cy4gQmVjYXVzZSB0aGVzZSBhbm9ueW1vdXMgcmVuZGVyZXJzIGFyZSB0aGUgb25seSBhY2Nl
c3NpYmxlIG9iamVjdHMKLSAgICAvLyBjb250YWluaW5nIHRoZSBvcGVyYXRvciwgYXNzaWduIFN0
YXRpY1RleHRSb2xlLgorICAgIC8vIGNvbnRhaW5pbmcgdGhlIG9wZXJhdG9yLCBhc3NpZ24gQWNj
ZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQuCiAgICAgaWYgKG1fb2JqZWN0LT5pc0Fub255bW91
c01hdGhPcGVyYXRvcigpKQotICAgICAgICByb2xlID0gU3RhdGljVGV4dFJvbGU7CisgICAgICAg
IHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsKIAotICAgIGlmIChyb2xlID09
IENhbnZhc1JvbGUgJiYgbV9vYmplY3QtPmNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpKQotICAg
ICAgICByb2xlID0gR3JvdXBSb2xlOworICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpDYW52YXMgJiYgbV9vYmplY3QtPmNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpKQorICAgICAg
ICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwOwogICAgIE5TU3RyaW5nKiBzdHJpbmcg
PSByb2xlVmFsdWVUb05TU3RyaW5nKHJvbGUpOwogICAgIGlmIChzdHJpbmcgIT0gbmlsKQogICAg
ICAgICByZXR1cm4gc3RyaW5nOwpAQCAtMjA0MSw5ICsyMDQxLDkgQEAgLSAoTlNTdHJpbmcqKXN1
YnJvbGUKICAgICB9CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IG1fb2JqZWN0
LT5yb2xlVmFsdWUoKTsKLSAgICBpZiAocm9sZSA9PSBIb3Jpem9udGFsUnVsZVJvbGUpCisgICAg
aWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxlKQogICAgICAgICBy
ZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Q29udGVudFNlcGFyYXRvclN1YnJvbGU7Ci0gICAgaWYgKHJv
bGUgPT0gVG9nZ2xlQnV0dG9uUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VG9nZ2xlQnV0dG9uKQogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VG9nZ2xlU3Vi
cm9sZTsKICAgICAKICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqbV9v
YmplY3QpKSB7CkBAIC0yMDczLDY5ICsyMDczLDY5IEBAIC0gKE5TU3RyaW5nKilzdWJyb2xlCiAg
ICAgCiAgICAgLy8gQVJJQSBjb250ZW50IHN1YnJvbGVzLgogICAgIHN3aXRjaCAocm9sZSkgewot
ICAgICAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFY
TGFuZG1hcmtCYW5uZXIiOwotICAgICAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrQ29tcGxlbWVudGFyeSI7Ci0gICAgICAg
ICAgICAvLyBGb290ZXIgcm9sZXMgc2hvdWxkIGFwcGVhciBhcyBjb250ZW50IGluZm8gdHlwZXMu
Ci0gICAgICAgIGNhc2UgRm9vdGVyUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJ
bmZvUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtDb250ZW50SW5mbyI7Ci0g
ICAgICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFu
ZG1hcmtNYWluIjsKLSAgICAgICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgotICAgICAg
ICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya05hdmlnYXRpb24iOwotICAgICAgICBjYXNlIExhbmRt
YXJrRG9jUmVnaW9uUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya1JlZ2lvblJvbGU6Ci0gICAg
ICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrUmVnaW9uIjsKLSAgICAgICAgY2FzZSBMYW5kbWFy
a1NlYXJjaFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrU2VhcmNoIjsKLSAg
ICAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFY
QXBwbGljYXRpb25BbGVydCI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25BbGVydERpYWxvZ1Jv
bGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uQWxlcnREaWFsb2ciOwotICAg
ICAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFY
QXBwbGljYXRpb25EaWFsb2ciOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uR3JvdXBSb2xlOgot
ICAgICAgICBjYXNlIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZToKLSAgICAgICAgY2FzZSBGZWVk
Um9sZToKLSAgICAgICAgY2FzZSBGb290bm90ZVJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJB
WEFwcGxpY2F0aW9uR3JvdXAiOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9sZToKLSAg
ICAgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25Mb2ciOwotICAgICAgICBjYXNlIEFwcGxp
Y2F0aW9uTWFycXVlZVJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uTWFy
cXVlZSI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgotICAgICAgICAgICAg
cmV0dXJuIEAiQVhBcHBsaWNhdGlvblN0YXR1cyI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25U
aW1lclJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uVGltZXIiOwotICAg
ICAgICBjYXNlIERvY3VtZW50Um9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnQi
OwotICAgICAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgICAgICAgICByZXR1cm4g
QCJBWERvY3VtZW50QXJ0aWNsZSI7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKLSAg
ICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnRNYXRoIjsKLSAgICAgICAgY2FzZSBEb2N1bWVu
dE5vdGVSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudE5vdGUiOwotICAgICAg
ICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFY
VXNlckludGVyZmFjZVRvb2x0aXAiOwotICAgICAgICBjYXNlIFRhYlBhbmVsUm9sZToKLSAgICAg
ICAgICAgIHJldHVybiBAIkFYVGFiUGFuZWwiOwotICAgICAgICBjYXNlIERlZmluaXRpb25Sb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEZWZpbml0aW9uIjsKLSAgICAgICAgY2FzZSBEZXNj
cmlwdGlvbkxpc3RUZXJtUm9sZToKLSAgICAgICAgY2FzZSBUZXJtUm9sZToKLSAgICAgICAgICAg
IHJldHVybiBAIkFYVGVybSI7Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0RGV0YWlsUm9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRGVzY3JpcHRpb24iOwotICAgICAgICBjYXNlIFdl
YkFwcGxpY2F0aW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYV2ViQXBwbGljYXRpb24i
OwotICAgICAgICAgICAgLy8gRGVmYXVsdCBkb2Vzbid0IHJldHVybiBhbnl0aGluZywgc28gcm9s
ZXMgZGVmaW5lZCBiZWxvdyBjYW4gYmUgY2hvc2VuLgotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI6
CisgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtCYW5uZXIiOworICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeToKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5k
bWFya0NvbXBsZW1lbnRhcnkiOworICAgIC8vIEZvb3RlciByb2xlcyBzaG91bGQgYXBwZWFyIGFz
IGNvbnRlbnQgaW5mbyB0eXBlcy4KKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoKKyAgICAg
ICAgcmV0dXJuIEAiQVhMYW5kbWFya0NvbnRlbnRJbmZvIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya01haW46CisgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtNYWluIjsK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CisgICAgICAg
IHJldHVybiBAIkFYTGFuZG1hcmtOYXZpZ2F0aW9uIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya1JlZ2lvbjoKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya1JlZ2lvbiI7CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2g6CisgICAgICAgIHJldHVybiBAIkFY
TGFuZG1hcmtTZWFyY2giOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9u
QWxlcnQ6CisgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25BbGVydCI7CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoKKyAgICAgICAgcmV0dXJu
IEAiQVhBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvbkRpYWxvZzoKKyAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkRpYWxv
ZyI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cDoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cDoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpGZWVkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Ru
b3RlOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uR3JvdXAiOworICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxp
Y2F0aW9uTG9nIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1
ZWU6CisgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25NYXJxdWVlIjsKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1czoKKyAgICAgICAgcmV0dXJuIEAiQVhB
cHBsaWNhdGlvblN0YXR1cyI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25UaW1lcjoKKyAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvblRpbWVyIjsKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudDoKKyAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVu
dCI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgorICAgICAg
ICByZXR1cm4gQCJBWERvY3VtZW50QXJ0aWNsZSI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RG9jdW1lbnRNYXRoOgorICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50TWF0aCI7CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlOgorICAgICAgICByZXR1cm4gQCJB
WERvY3VtZW50Tm90ZSI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVyZmFj
ZVRvb2x0aXA6CisgICAgICAgIHJldHVybiBAIkFYVXNlckludGVyZmFjZVRvb2x0aXAiOworICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYlBhbmVsOgorICAgICAgICByZXR1cm4gQCJBWFRh
YlBhbmVsIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uOgorICAgICAg
ICByZXR1cm4gQCJBWERlZmluaXRpb24iOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRl
c2NyaXB0aW9uTGlzdFRlcm06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGVybToKKyAg
ICAgICAgcmV0dXJuIEAiQVhUZXJtIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNj
cmlwdGlvbkxpc3REZXRhaWw6CisgICAgICAgIHJldHVybiBAIkFYRGVzY3JpcHRpb24iOworICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uOgorICAgICAgICByZXR1cm4g
QCJBWFdlYkFwcGxpY2F0aW9uIjsKKyAgICAgICAgLy8gRGVmYXVsdCBkb2Vzbid0IHJldHVybiBh
bnl0aGluZywgc28gcm9sZXMgZGVmaW5lZCBiZWxvdyBjYW4gYmUgY2hvc2VuLgorICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAocm9sZSA9PSBNYXRoRWxl
bWVudFJvbGUpIHsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0aEVsZW1l
bnQpIHsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhGcmFjdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIEAiQVhNYXRoRnJhY3Rpb24iOwogICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0
aEZlbmNlZCgpKQpAQCAtMjE3MiwxNSArMjE3MiwxNSBAQCAtIChOU1N0cmluZyopc3Vicm9sZQog
ICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoTXVsdGlzY3JpcHQiOwogICAgIH0KICAgICAKLSAg
ICBpZiAocm9sZSA9PSBWaWRlb1JvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlZpZGVvKQogICAgICAgICByZXR1cm4gQCJBWFZpZGVvIjsKLSAgICBpZiAocm9sZSA9PSBB
dWRpb1JvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkF1ZGlvKQogICAg
ICAgICByZXR1cm4gQCJBWEF1ZGlvIjsKLSAgICBpZiAocm9sZSA9PSBEZXRhaWxzUm9sZSkKKyAg
ICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlscykKICAgICAgICAgcmV0dXJu
IEAiQVhEZXRhaWxzIjsKLSAgICBpZiAocm9sZSA9PSBTdW1tYXJ5Um9sZSkKKyAgICBpZiAocm9s
ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeSkKICAgICAgICAgcmV0dXJuIEAiQVhTdW1t
YXJ5IjsKLSAgICBpZiAocm9sZSA9PSBUaW1lUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGltZSkKICAgICAgICAgcmV0dXJuIEAiQVhUaW1lR3JvdXAiOwogCiAgICAg
aWYgKG1fb2JqZWN0LT5pc01lZGlhVGltZWxpbmUoKSkKQEAgLTIyMTYsMTUgKzIyMTYsMTUgQEAg
LSAoTlNTdHJpbmcqKXN1YnJvbGUKICAgICAKICAgICAvLyBSdWJ5IHN1YnJvbGVzCiAgICAgc3dp
dGNoIChyb2xlKSB7Ci0gICAgY2FzZSBSdWJ5QmFzZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UnVieUJhc2U6CiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSdWJ5QmFz
ZVN1YnJvbGU7Ci0gICAgY2FzZSBSdWJ5QmxvY2tSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlJ1YnlCbG9jazoKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVJ1YnlCbG9j
a1N1YnJvbGU7Ci0gICAgY2FzZSBSdWJ5SW5saW5lUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSdWJ5SW5saW5lOgogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5UnVieUlu
bGluZVN1YnJvbGU7Ci0gICAgY2FzZSBSdWJ5UnVuUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpSdWJ5UnVuOgogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5UnVieVJ1blN1
YnJvbGU7Ci0gICAgY2FzZSBSdWJ5VGV4dFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UnVieVRleHQ6CiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSdWJ5VGV4dFN1YnJv
bGU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0yMjYyLDI2ICsyMjYyLDI2IEBA
IC0gKE5TU3RyaW5nKilyb2xlRGVzY3JpcHRpb24KICAgICAgICAgICAgIHJldHVybiBhcmlhTGFu
ZG1hcmtSb2xlRGVzY3JpcHRpb247CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fb2JqZWN0
LT5yb2xlVmFsdWUoKSkgewotICAgICAgICBjYXNlIEF1ZGlvUm9sZToKKyAgICAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QXVkaW86CiAgICAgICAgICAgICByZXR1cm4gbG9jYWxpemVkTWVk
aWFDb250cm9sRWxlbWVudFN0cmluZygiQXVkaW9FbGVtZW50Iik7Ci0gICAgICAgIGNhc2UgRGVm
aW5pdGlvblJvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlZmluaXRpb246
CiAgICAgICAgICAgICByZXR1cm4gQVhEZWZpbml0aW9uVGV4dCgpOwotICAgICAgICBjYXNlIERl
c2NyaXB0aW9uTGlzdFRlcm1Sb2xlOgotICAgICAgICBjYXNlIFRlcm1Sb2xlOgorICAgICAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJtOgorICAgICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXJtOgogICAgICAgICAgICAgcmV0dXJuIEFYRGVzY3JpcHRp
b25MaXN0VGVybVRleHQoKTsKLSAgICAgICAgY2FzZSBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xl
OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3REZXRhaWw6
CiAgICAgICAgICAgICByZXR1cm4gQVhEZXNjcmlwdGlvbkxpc3REZXRhaWxUZXh0KCk7Ci0gICAg
ICAgIGNhc2UgRGV0YWlsc1JvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRl
dGFpbHM6CiAgICAgICAgICAgICByZXR1cm4gQVhEZXRhaWxzVGV4dCgpOwotICAgICAgICBjYXNl
IEZlZWRSb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGZWVkOgogICAgICAg
ICAgICAgcmV0dXJuIEFYRmVlZFRleHQoKTsKLSAgICAgICAgY2FzZSBGaWd1cmVSb2xlOgorICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGaWd1cmU6CiAgICAgICAgICAgICByZXR1cm4g
QVhGaWd1cmVUZXh0KCk7Ci0gICAgICAgIGNhc2UgRm9vdGVyUm9sZToKKyAgICAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdGVyOgogICAgICAgICAgICAgcmV0dXJuIEFYRm9vdGVyUm9s
ZURlc2NyaXB0aW9uVGV4dCgpOwotICAgICAgICBjYXNlIE1hcmtSb2xlOgorICAgICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpNYXJrOgogICAgICAgICAgICAgcmV0dXJuIEFYTWFya1RleHQo
KTsKLSAgICAgICAgY2FzZSBWaWRlb1JvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlZpZGVvOgogICAgICAgICAgICAgcmV0dXJuIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1l
bnRTdHJpbmcoIlZpZGVvRWxlbWVudCIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbihOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUsIFtzZWxmIHN1YnJvbGVdKTsKQEAgLTIzNDEsNyArMjM0MSw3IEBAIC0gKE5TU3RyaW5n
Kilyb2xlRGVzY3JpcHRpb24KICAgICAgICAgICAgIHJldHVybiBBWERlc2NyaXB0aW9uTGlzdFRl
eHQoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBIb3Jp
em9udGFsUnVsZVJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGUpCiAgICAgICAgIHJldHVybiBBWEhvcml6b250YWxS
dWxlRGVzY3JpcHRpb25UZXh0KCk7CiAgICAgCiAgICAgLy8gQXBwS2l0IGFsc28gcmV0dXJucyBB
WFRhYiBmb3IgdGhlIHJvbGUgZGVzY3JpcHRpb24gZm9yIGEgdGFiIGl0ZW0uCkBAIC0yNjE4LDE5
ICsyNjE4LDE5IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAg
ICAgICAgfQogICAgICAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzUmFuZ2VWYWx1ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPnZhbHVl
Rm9yUmFuZ2UoKV07Ci0gICAgICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gU2xpZGVy
VGh1bWJSb2xlKQorICAgICAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTbGlkZXJUaHVtYikKICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEZsb2F0Om1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKS0+dmFsdWVGb3JSYW5nZSgpXTsK
ICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0hlYWRpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+aGVhZGluZ0xldmVsKCldOwogICAgICAg
ICAKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpIHx8IG1fb2JqZWN0
LT5pc01lbnVJdGVtKCkgfHwgbV9vYmplY3QtPmlzU3dpdGNoKCkgfHwgbV9vYmplY3QtPmlzVG9n
Z2xlQnV0dG9uKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9vYmplY3QtPmNoZWNrYm94T3JS
YWRpb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEJ1dHRvblN0YXRlT2ZmOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF07Ci0gICAg
ICAgICAgICAgICAgY2FzZSBCdXR0b25TdGF0ZU9uOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07Ci0gICAgICAgICAgICAgICAgY2FzZSBCdXR0
b25TdGF0ZU1peGVkOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6Ml07CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6
T2ZmOgorICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXTsK
KyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV07CisgICAgICAgICAgICBj
YXNlIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4ZWQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjJdOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIApAQCAtMjY2OCwxNCArMjY2OCwxNCBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdKSB7CiAgICAgICAgIC8v
IEluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIHNob3VsZCByZXR1cm4gMC4KLSAgICAg
ICAgaWYgKG1fb2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IFByb2dyZXNzSW5kaWNhdG9y
Um9sZSAmJiAhbV9vYmplY3QtPmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikpCisgICAg
ICAgIGlmIChtX29iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgJiYgIW1fb2JqZWN0LT5oYXNBdHRyaWJ1dGUoYXJpYV92YWx1
ZW5vd0F0dHIpKQogICAgICAgICAgICAgcmV0dXJuIEAwOwogICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+bWluVmFsdWVGb3JSYW5nZSgpXTsKICAgICB9
CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3Np
YmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVdKSB7CiAgICAgICAgIC8vIEluZGV0ZXJtaW5hdGUgcHJv
Z3Jlc3MgaW5kaWNhdG9yIHNob3VsZCByZXR1cm4gMC4KLSAgICAgICAgaWYgKG1fb2JqZWN0LT5h
cmlhUm9sZUF0dHJpYnV0ZSgpID09IFByb2dyZXNzSW5kaWNhdG9yUm9sZSAmJiAhbV9vYmplY3Qt
Pmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikpCisgICAgICAgIGlmIChtX29iamVjdC0+
YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0
b3IgJiYgIW1fb2JqZWN0LT5oYXNBdHRyaWJ1dGUoYXJpYV92YWx1ZW5vd0F0dHIpKQogICAgICAg
ICAgICAgcmV0dXJuIEAwOwogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9h
dDptX29iamVjdC0+bWF4VmFsdWVGb3JSYW5nZSgpXTsKICAgICB9CkBAIC0zMDA1LDIzICszMDA1
LDIzIEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICAKICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uQXR0cmlidXRlXSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gZWxl
bWVudE9yaWVudGF0aW9uID0gbV9vYmplY3QtPm9yaWVudGF0aW9uKCk7Ci0gICAgICAgIGlmIChl
bGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWwpCisg
ICAgICAgIGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
OjpWZXJ0aWNhbCkKICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbE9y
aWVudGF0aW9uVmFsdWU7Ci0gICAgICAgIGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNz
aWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbCkKKyAgICAgICAgaWYgKGVsZW1lbnRPcmllbnRh
dGlvbiA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgICAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbE9yaWVudGF0aW9uVmFsdWU7Ci0gICAg
ICAgIGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5k
ZWZpbmVkKQorICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbjo6VW5kZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0
eVVua25vd25PcmllbnRhdGlvblZhbHVlOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KICAg
ICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uSG9yaXpvbnRhbCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJh
ciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpIb3Jpem9u
dGFsKTsKICAgICAgICAgaWYgKHNjcm9sbEJhcikKICAgICAgICAgICAgIHJldHVybiBzY3JvbGxC
YXItPndyYXBwZXIoKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJh
ckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyID0g
bV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbCk7Cisg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxC
YXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCk7CiAgICAgICAgIGlmIChzY3Jv
bGxCYXIpCiAgICAgICAgICAgICByZXR1cm4gc2Nyb2xsQmFyLT53cmFwcGVyKCk7CiAgICAgICAg
IHJldHVybiBuaWw7CkBAIC0zMDI5LDEyICszMDI5LDEyIEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTooTlNTdHIKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGVdKSB7CiAgICAg
ICAgIHN3aXRjaCAobV9vYmplY3QtPnNvcnREaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgY2Fz
ZSBTb3J0RGlyZWN0aW9uQXNjZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vz
c2liaWxpdHlBc2NlbmRpbmdTb3J0RGlyZWN0aW9uVmFsdWU7Ci0gICAgICAgICAgICBjYXNlIFNv
cnREaXJlY3Rpb25EZXNjZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2li
aWxpdHlEZXNjZW5kaW5nU29ydERpcmVjdGlvblZhbHVlOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blNvcnREaXJlY3Rp
b25WYWx1ZTsKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5k
aW5nOgorICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUFzY2VuZGluZ1NvcnREaXJl
Y3Rpb25WYWx1ZTsKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6RGVz
Y2VuZGluZzoKKyAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlEZXNjZW5kaW5nU29y
dERpcmVjdGlvblZhbHVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIE5T
QWNjZXNzaWJpbGl0eVVua25vd25Tb3J0RGlyZWN0aW9uVmFsdWU7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCkBAIC0zNDgxLDcgKzM0ODEsNyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3Jt
RGVjcmVtZW50QWN0CiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVBlcmZvcm1TaG93TWVudUFjdGlv
bgogewotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQ29tYm9Cb3hSb2xlKQorICAg
IGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94
KQogICAgICAgICBtX29iamVjdC0+c2V0SXNFeHBhbmRlZCh0cnVlKTsKICAgICBlbHNlIHsKICAg
ICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBwZXJmb3JtZWQgaW4gYW4gaXRlcmF0aW9uIG9mIHRo
ZSBydW4gbG9vcCB0aGF0IGRpZCBub3Qgc3RhcnQgZnJvbSBhbiBBWCBjYWxsLgpAQCAtMzYyOSw3
ICszNjI5LDkgQEAgLSAodm9pZClfYWNjZXNzaWJpbGl0eVNldFZhbHVlOihpZCl2YWx1ZQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWQoW251bWJlciBi
b29sVmFsdWVdKTsKICAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAg
aWYgKCFhcnJheSB8fCBtX29iamVjdC0+cm9sZVZhbHVlKCkgIT0gTGlzdEJveFJvbGUpCisgICAg
ICAgIGlmICghYXJyYXkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX29iamVj
dC0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3gpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwogICAgICAgICBjb252ZXJ0VG9WZWN0b3IoYXJy
YXksIHNlbGVjdGVkQ2hpbGRyZW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzI4LDEwICsxNzI4LDEwIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vz
c2kKIAogICAgICAgICAgICAgc3VwcG9ydHNDaGVja2VkID0gYXhPYmplY3QtPnN1cHBvcnRzQ2hl
Y2tlZCgpOwogICAgICAgICAgICAgaWYgKHN1cHBvcnRzQ2hlY2tlZCkgewotICAgICAgICAgICAg
ICAgIGludCBjaGVja1ZhbHVlID0gYXhPYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCk7IC8v
IEVsZW1lbnQgdXNpbmcgYXJpYS1jaGVja2VkLgotICAgICAgICAgICAgICAgIGlmIChjaGVja1Zh
bHVlID09IDEpCisgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNr
VmFsdWUgPSBheE9iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKTsgLy8gRWxlbWVudCB1c2lu
ZyBhcmlhLWNoZWNrZWQuCisgICAgICAgICAgICAgICAgaWYgKGNoZWNrVmFsdWUgPT0gQWNjZXNz
aWJpbGl0eUJ1dHRvblN0YXRlOjpPbikKICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6
OlRydWU7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2tWYWx1ZSA9PSAyKQorICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGNoZWNrVmFsdWUgPT0gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRl
OjpNaXhlZCkKICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6Ok1peGVkOwogICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGF4T2JqZWN0LT5pc0NoZWNrZWQoKSkgLy8gTmF0aXZlIGNoZWNr
Ym94LgogICAgICAgICAgICAgICAgICAgICBjaGVja2VkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q2hlY2tlZDo6VHJ1ZTsKQEAgLTE3NDgsMjYg
KzE3NDgsMjUgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaQogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKGF4T2JqZWN0LT5h
cmlhQ3VycmVudFN0YXRlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQVJJQUN1cnJlbnRGYWxzZToK
KyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZhbHNlOgog
ICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OkZhbHNlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVudFBhZ2U6CisgICAgICAgICAgICBj
YXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpQYWdlOgogICAgICAgICAgICAgICAg
IGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXM6OkN1cnJlbnQ6OlBhZ2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEFSSUFDdXJyZW50U3RlcDoKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eUFSSUFDdXJyZW50U3RhdGU6OlN0ZXA6CiAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVu
dDo6U3RlcDsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQVJJQUN1
cnJlbnRMb2NhdGlvbjoKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGU6OkxvY2F0aW9uOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OkxvY2F0
aW9uOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVu
dERhdGU6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpE
YXRlOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OkRhdGU7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFSSUFDdXJyZW50VGltZToKKyAgICAgICAg
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU6CiAgICAgICAgICAg
ICAgICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmls
aXR5UHJvcGVydGllczo6Q3VycmVudDo6VGltZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjYXNlIEFSSUFDdXJyZW50VHJ1ZToKKyAg
ICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRydWU6CiAgICAg
ICAgICAgICAgICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nl
c3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVudDo6VHJ1ZTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325084</attachid>
            <date>2017-10-26 17:29:32 -0700</date>
            <delta_ts>2017-10-26 19:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178892-20171026172931.patch</filename>
            <type>text/plain</type>
            <size>356252</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxMiBAQAorMjAxNy0xMC0yNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3ODg5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgVGhlIGVudW1zIGluIEFjY2Vzc2liaWxpdHlPYmplY3QuaCBhcmUgY2F1c2lu
ZyBuYW1pbmcgY29sbGlzaW9ucyB3aXRoIHVuaWZpZWQgYnVpbGRzLgorICAgICAgICBUaGlzIGlz
IHdoYXQgZW51bSBjbGFzc2VzIGFyZSBmb3IuCisgICAgICAgIEhhc2hNYXBzIG9mIGVudW0gY2xh
c3NlcyBzdGlsbCBuZWVkIGEgZmV3IGNhc3RzIHRvL2Zyb20gaW50LgorICAgICAgICAKKyAgICAg
ICAgSSBhbHNvIG1hZGUgc29tZSBSZWZQdHIncyBSZWYncywgdXNlIHNvbWUgaW5pdGlhbGl6ZXIg
bGlzdHMgaW5zdGVhZCBvZiB2YWx1ZXMgaW4gdGhlIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9u
LCBhbmQgaW5kZW50YXRpb24gZml4aW5nLgorICAgICAgICAKKyAgICAgICAgTm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6Z2V0SWdu
b3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp+QVhPYmplY3RD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhDb21w
dXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpDYWNoZWRBWE9iamVjdEF0dHJpYnV0ZXM6OkNhY2hl
ZEFYT2JqZWN0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWENvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGU6OmdldElnbm9yZWQgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91cCBjb25zdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eUF0dGFjaG1lbnQ6OmFjY2Vzc2liaWxpdHlUZXh0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50Lmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnJvbGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjphY2Nlc3NpYmlsaXR5VGV4dCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2hpbGRyZW5Db250YWluT25seVN0YXRpY1RleHQpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlz
dDo6aXNVbm9yZGVyZWRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlMaXN0Ojppc09yZGVyZWRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlMaXN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5TGlzdDo6cm9sZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlMaXN0Qm94OjpzZXRTZWxlY3RlZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlMaXN0Qm94OjpsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdCBj
b25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50OjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudDo6aXNNYXRoU2NyaXB0T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50Ojppc01hdGhNdWx0aXNjcmlwdE9iamVjdCBjb25zdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjphY2Nlc3NpYmlsaXR5
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpyb2xl
VmFsdWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbHMuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmFkZENoaWxk
cmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6bWVudUxpc3RPcHRp
b25BY2Nlc3NpYmlsaXR5T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpZWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0ltYWdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Bhc3N3b3JkRmllbGQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcm9n
cmVzc0luZGljYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNTbGlkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUl0ZW0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRW5hYmxlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNDaGVja2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdXBw
b3J0c1JlcXVpcmVkQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpoZWFkaW5nTGV2ZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNMaW5rIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dyb3VwIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGVja2JveE9yUmFk
aW9WYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6YWN0aW9uRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6YWx0ZXJTbGlkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUVsZW1lbnRGb3JNZW51
QnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjptZW51SXRlbUVsZW1lbnRGb3JNZW51IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1lbnRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2ZVRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2libGVUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNj
ZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmFyaWFMYWJlbGVkQnlUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnJvbGVJZ25vcmVzVGl0bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhpZXJhcmNo
aWNhbExldmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojp0aXRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6c3RyaW5nVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpyZW1hcEFyaWFSb2xlRHVlVG9QYXJl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNh
blNldFNlbGVjdGVkQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjY2Vz
c2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJsZU5hbWVEZXJpdmVzRnJvbUNvbnRlbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNCbG9ja3F1b3RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENvbnRy
b2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklB
VGV4dENvbnRyb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNMYW5kbWFyayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpmaW5kTWF0Y2hpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1JhbmdlQ29udHJvbCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JC
b3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3Vw
cG9ydHNBUklBUmVhZE9ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYVJlYWRPbmx5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1Db250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25T
dGF0dXNGb3JSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFj
dGlvblZlcmIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUN1cnJlbnRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhQ3VycmVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVSb2xlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFyaWFSb2xlVG9XZWJDb3JlUm9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb21wdXRlZFJvbGVTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc0FjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpzb3J0RGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzRXhwYW5kZWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBhbmRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0NoZWNr
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2ti
b3hPclJhZGlvVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsQnlQYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6Omxhc3RLbm93bklzSWdub3JlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJ1dHRvblJvbGVUeXBlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQnV0dG9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWRCeURlZmF1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29udGFpbmVkQnlQYXNzd29yZEZpZWxk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRleHQ6OkFjY2Vz
c2liaWxpdHlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJc0lnbm9yZWRG
cm9tUGFyZW50RGF0YTo6QWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW1hZ2VNYXAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNXZWJBcmVhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ2hlY2tib3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNSYWRpb0J1dHRvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xpc3RCb3gg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTcGluQnV0
dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3dp
dGNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVG9n
Z2xlQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzVGFiTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc1RhYkl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNSYWRpb0dyb3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzQ29tYm9Cb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUcmVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmlzVHJlZUdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNUcmVlSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1Njcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0xpc3RJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzU2Nyb2xsVmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0NhbnZhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1BvcFVwQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQ29sb3JXZWxsIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BsaXR0ZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUb29sYmFyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3VtbWFyeSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1N0YXRpY1RleHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJvbGVBdHRyaWJ1dGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnBhcmVudE9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0F0dGFjaG1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRleHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFs
dWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBNZW1iZXJzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmtlZFVJ
RWxlbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b2Jq
ZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpzZWxlY3RlZFRleHRSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZvY3VzZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWN0ZWRSb3dz
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3Vt
ZW50TGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNFeHBhbmRl
ZFRleHRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0c1ByZXNlbnRhdGlvbmFs
Um9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRk
SW1hZ2VNYXBDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp1cGRhdGVSb2xlQWZ0ZXJDaGlsZHJlbkNyZWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9u
QXRvbWljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZENoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2li
bGVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp0YWJDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphY3Rpb25WZXJiIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om1zYWFSb2xlRm9yUmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9s
ZVZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudDo6YWNjZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNWR0VsZW1lbnQ6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojppbmhlcml0c1ByZXNlbnRhdGlv
bmFsUm9sZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsQmFyKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlTY3JvbGxiYXI6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNsaWRlcjo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246
OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpoYXNBUklBUm9sZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxl
Ojp0aXRsZUVsZW1lbnRUZXh0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJv
bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2Jq
ZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5o
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFp
bmVyLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUcmVlOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5wdXRU
eXBlUG9wdXBCdXR0b24gY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Q2FuRnV6enlIaXRUZXN0XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5SXNMYW5kbWFy
a1JvbGU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nl
c3NpYmlsaXR5VHJlZUFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5TGlzdEFuY2VzdG9yXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5QXJ0aWNsZUFuY2VzdG9yXSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5
VHJhaXRzRnJvbUFuY2VzdG9yc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfYWNjZXNzaWJpbGl0eVRleHRFbnRyeVRyYWl0c10pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VHJhaXRzXSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRldGVybWluZUlzQWNjZXNzaWJpbGl0
eUVsZW1lbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Ry
aW5nVmFsdWVTaG91bGRCZVVzZWRJbkxhYmVsXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMYWJlbF0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5VmFsdWVdKToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUlzQ29tYm9Cb3hdKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY29udGFpbnNVbm5hdHVy
YWxseVNlZ21lbnRlZENoaWxkcmVuXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50XSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRyZWVJdGVtUGFyZW50Rm9yT2JqZWN0Ol0pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5RWxlbWVu
dERpZEJlY29tZUZvY3VzZWRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25dKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29u
c3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlIGJhc2VBY2Nlc3NpYmlsaXR5VGl0bGVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25dKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGJhc2VBY2Nlc3NpYmlsaXR5
SGVscFRleHRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
IGFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbl0pOgorICAgICAgICAoY3JlYXRlQWNjZXNzaWJp
bGl0eVNlYXJjaEtleU1hcCk6CisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3Ry
aW5nKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRp
Y2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoYWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRDcml0ZXJpYUZvckNyaXRlcmlhUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFkZGl0aW9uYWxBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgIChjcmVh
dGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCk6CisgICAgICAgIChyb2xlVmFsdWVUb05TU3RyaW5nKToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZV0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzdWJyb2xlXSk6CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJvbGVEZXNjcmlwdGlvbl0pOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb25dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzKToKKwogMjAxNy0xMC0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgaW1wb3J0U2NyaXB0cyBpbiBzZXJ2aWNlIHdvcmtlciBzaG91bGQgdXNlIFNl
cnZpY2VXb3JrZXJzTW9kZTo6Tm9uZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsOCArMTIwLDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgYWNjZXNzaWJpbGl0eUZvY3VzQQog
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVD
YWNoZTo6Z2V0SWdub3JlZChBWElEIGlkKSBjb25zdAogewotICAgIEhhc2hNYXA8QVhJRCwgQ2Fj
aGVkQVhPYmplY3RBdHRyaWJ1dGVzPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2lkTWFwcGluZy5m
aW5kKGlkKTsKLSAgICByZXR1cm4gaXQgIT0gbV9pZE1hcHBpbmcuZW5kKCkgPyBpdC0+dmFsdWUu
aWdub3JlZCA6IERlZmF1bHRCZWhhdmlvcjsKKyAgICBhdXRvIGl0ID0gbV9pZE1hcHBpbmcuZmlu
ZChpZCk7CisgICAgcmV0dXJuIGl0ICE9IG1faWRNYXBwaW5nLmVuZCgpID8gaXQtPnZhbHVlLmln
bm9yZWQgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7CiB9
CiAKIHZvaWQgQVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlOjpzZXRJZ25vcmVkKEFYSUQg
aWQsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gaW5jbHVzaW9uKQpAQCAtMjAzLDggKzIw
Myw4IEBAIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkKICAgICBtX2ZvY3VzQXJpYU1v
ZGFsTm9kZVRpbWVyLnN0b3AoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0IDogbV9v
YmplY3RzLnZhbHVlcygpKSB7Ci0gICAgICAgIGRldGFjaFdyYXBwZXIob2JqZWN0LmdldCgpLCBD
YWNoZURlc3Ryb3llZCk7Ci0gICAgICAgIG9iamVjdC0+ZGV0YWNoKENhY2hlRGVzdHJveWVkKTsK
KyAgICAgICAgZGV0YWNoV3JhcHBlcihvYmplY3QuZ2V0KCksIEFjY2Vzc2liaWxpdHlEZXRhY2ht
ZW50VHlwZTo6Q2FjaGVEZXN0cm95ZWQpOworICAgICAgICBvYmplY3QtPmRldGFjaChBY2Nlc3Np
YmlsaXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKTsKICAgICAgICAgcmVtb3ZlQVhJ
RChvYmplY3QuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTY0NywzMSArNjQ3LDMxIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE8KICAgICAKICAgICAvLyB3aWxsIGJlIGZp
bGxlZCBpbi4uLgogICAgIHN3aXRjaCAocm9sZSkgewotICAgIGNhc2UgTGlzdEJveE9wdGlvblJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNyZWF0ZSgpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SW1hZ2VNYXBMaW5rOgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
OjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2x1bW5Sb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCi0gICAg
Y2FzZSBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGFibGVIZWFkZXJDb250YWluZXI6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lcjo6Y3JlYXRlKCk7CiAgICAgICAgIGJyZWFrOyAgIAotICAgIGNhc2Ug
U2xpZGVyVGh1bWJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlclRodW1i
OgogICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSgpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1lbnVMaXN0UG9wdXBSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVMaXN0UG9wdXA6CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZW51TGlz
dE9wdGlvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RPcHRpb246
CiAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjoKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVNwaW5C
dXR0b246OmNyZWF0ZSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNwaW5CdXR0b25QYXJ0
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydDoKICAgICAg
ICAgb2JqID0gQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0OjpjcmVhdGUoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTY5OSw4ICs2OTksOCBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnJlbW92ZShBWElEIGF4SUQpCiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBkZXRhY2hXcmFwcGVyKG9iaiwgRWxlbWVudERlc3Ryb3llZCk7Ci0gICAgb2JqLT5k
ZXRhY2goRWxlbWVudERlc3Ryb3llZCwgdGhpcyk7CisgICAgZGV0YWNoV3JhcHBlcihvYmosIEFj
Y2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCk7CisgICAgb2JqLT5k
ZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50RGVzdHJveWVkLCB0aGlz
KTsKICAgICByZW1vdmVBWElEKG9iaik7CiAgICAgCiAgICAgLy8gZmluYWxseSByZW1vdmUgdGhl
IG9iamVjdApAQCAtOTIwLDcgKzkyMCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUG9zdFRpbWUKICAgICAgICAgLy8gdGhlIGF4Q2hpbGRyZW4gd2hlbiB0aGUgbWVudSBpcyBt
YXJrZWQgYXMgb3BlbmluZy4KICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSBBWE1lbnVPcGVu
ZWQpIHsKICAgICAgICAgICAgIG9iai0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwotICAg
ICAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgIT0gTWVudVJvbGUpCisgICAgICAgICAgICBp
ZiAob2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiAyMjQwNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNyArOTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENh
Y2hlZEFYT2JqZWN0QXR0cmlidXRlcyB7Ci0gICAgICAgIENhY2hlZEFYT2JqZWN0QXR0cmlidXRl
cygpIDogaWdub3JlZChEZWZhdWx0QmVoYXZpb3IpIHsgfQorICAgICAgICBDYWNoZWRBWE9iamVj
dEF0dHJpYnV0ZXMoKQorICAgICAgICAgICAgOiBpZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcikKKyAgICAgICAgeyB9CiAKICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBpZ25vcmVkOwogICAgIH07CkBAIC00NjYsNyArNDY4LDcg
QEAgYm9vbCBub2RlSGFzUm9sZShOb2RlKiwgY29uc3QgU3RyaW5nJiBybwogYm9vbCBpc05vZGVB
cmlhVmlzaWJsZShOb2RlKik7CiAgICAgCiAjaWYgIUhBVkUoQUNDRVNTSUJJTElUWSkKLWlubGlu
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVD
YWNoZTo6Z2V0SWdub3JlZChBWElEKSBjb25zdCB7IHJldHVybiBEZWZhdWx0QmVoYXZpb3I7IH0K
K2lubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVDYWNoZTo6Z2V0SWdub3JlZChBWElEKSBjb25zdCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0KIGlubGluZSBBY2Nlc3NpYmlsaXR5
UmVwbGFjZWRUZXh0OjpBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0KGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKSB7IH0KIGlubGluZSB2b2lkIEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQ6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oQVhPYmplY3RDYWNoZSosIEFYVGV4dEVkaXRUeXBl
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9p
ZCBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU6OnNldElnbm9yZWQoQVhJRCwgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCShyZXZpc2lvbiAy
MjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4oCiAgICAgCiAgICAgLy8gbWFrZSB0aGUgY29sdW1u
cyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZpcnN0IGJvZHkKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7ICsraSkgewotICAgICAgICBhdXRv
JiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4+KCpheENhY2hlLT5n
ZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vzc2li
aWxpdHlSb2xlOjpDb2x1bW4pKTsKICAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KHN0YXRp
Y19jYXN0PGludD4oaSkpOwogICAgICAgICBjb2x1bW4uc2V0UGFyZW50KHRoaXMpOwogICAgICAg
ICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCShy
ZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbgogQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50Um93R3JvdXAoKSBjb25zdAog
ewogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7
IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewotICAgICAgICBpZiAo
cGFyZW50LT5oYXNUYWdOYW1lKHRoZWFkVGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUodGJvZHlU
YWcpIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgcGFyZW50LT5yb2xlVmFsdWUo
KSA9PSBSb3dHcm91cFJvbGUpCisgICAgICAgIGlmIChwYXJlbnQtPmhhc1RhZ05hbWUodGhlYWRU
YWcpIHx8IHBhcmVudC0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1l
KHRmb290VGFnKSB8fCBwYXJlbnQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpS
b3dHcm91cCkKICAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CiAgICAgfQogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkUm93LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzYsNyArMTM2LDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpoZWFkZXJP
YmplY3QoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7Ci0g
ICAgICAgIGlmIChjaGlsZC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBSb3dIZWFkZXJSb2xlKQor
ICAgICAgICBpZiAoY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlJvd0hlYWRlcikKICAgICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKICAgICB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRh
Y2htZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBdHRhY2htZW50LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QXR0YWNobWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDEzICs5NSwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHRhY2htZW50Ojph
Y2Nlc3NpYmlsCiAgICAgYXV0byYgYWN0aW9uID0gZ2V0QXR0cmlidXRlKGFjdGlvbkF0dHIpOwog
ICAgIAogICAgIGlmIChhY3Rpb24ubGVuZ3RoKCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQo
QWNjZXNzaWJpbGl0eVRleHQoYWN0aW9uLCBBY3Rpb25UZXh0KSk7CisgICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWN0aW9uLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6QWN0aW9uKSk7CiAKICAgICBpZiAodGl0bGUubGVuZ3RoKCkpCi0gICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIFRpdGxlVGV4dCkpOworICAgICAgICB0
ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZTo6VGl0bGUpKTsKIAogICAgIGlmIChzdWJ0aXRsZS5sZW5ndGgoKSkKLSAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChzdWJ0aXRsZSwgU3VidGl0bGVUZXh0
KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VidGl0bGUs
IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpTdWJ0aXRsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBdHRhY2htZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QXR0YWNobWVudC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBdHRhY2htZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJvZ3Jlc3MoZmxv
YXQqIHByb2dyZXNzID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJ1dHRvblJv
bGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOyB9CiAgICAgYm9vbCBpc0F0dGFjaG1l
bnRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgU3RyaW5n
IHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
Y3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYs
MTMgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUltYWdlTQogQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6cm9sZVZhbHVlKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fYXJlYUVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXZWJDb3JlTGlua1JvbGU7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CiAgICAgCiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7
CiAgICAgaWYgKCFhcmlhUm9sZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphcmlhUm9sZVRvV2ViQ29yZVJvbGUoYXJpYVJvbGUpOwogCi0gICAgcmV0dXJu
IFdlYkNvcmVMaW5rUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVM
aW5rOwogfQogICAgIAogRWxlbWVudCogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6YWN0aW9u
RWxlbWVudCgpIGNvbnN0CkBAIC05NywxNSArOTcsMTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rOjphY2Nlc3NpYgogewogICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpOwogICAgIGlmICghZGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAg
ICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaXB0aW9uLCBBbHRl
cm5hdGl2ZVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChkZXNjcmlwdGlvbiwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlVGV4dCA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0
dHIpOwogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZVRleHQsIFRpdGxlVGFnVGV4dCkpOworICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRpdGxlVGV4dCwgQWNjZXNzaWJp
bGl0eVRleHRTb3VyY2U6OlRpdGxlVGFnKSk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1
bW1hcnkgPSBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogICAgIGlmICghc3VtbWFyeS5pc0Vt
cHR5KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VtbWFy
eSwgU3VtbWFyeVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dChzdW1tYXJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogfQogICAg
IAogU3RyaW5nIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMYWJlbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGFiZWwuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJlbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDkgKzY1LDkgQEAgc3RhdGljIGJvb2wgY2hpbGRyZW5Db250YWluT25seVN0YXRpY1Rl
eAogICAgIGlmICghY2hpbGRyZW4uc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+
cm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCisgICAgICAgIGlmIChjaGlsZC0+cm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBHcm91cFJvbGUpIHsKKyAg
ICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAp
IHsKICAgICAgICAgICAgIGlmICghY2hpbGRyZW5Db250YWluT25seVN0YXRpY1RleHQoY2hpbGQt
PmNoaWxkcmVuKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSBl
bHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMYWJl
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxhYmVsLmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxhYmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TGFiZWwoUmVu
ZGVyT2JqZWN0Kik7CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IGZpbmFsOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIExhYmVsUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJlbDsgfQogICAgIGJv
b2wgaXNMYWJlbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBTdHJpbmcgc3Ry
aW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3Nh
cnkoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxpc3QuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0Ojppc1Vub3JkZXJlZExpc3QoCiAg
ICAgLy8gVGhlIEFSSUEgc3BlYyBzYXlzIHRoZSAibGlzdCIgcm9sZSBpcyBzdXBwb3NlZCB0byBt
aW1pYyBhIFVMIG9yIE9MIHRhZy4KICAgICAvLyBTaW5jZSBpdCBjYW4ndCBiZSBib3RoLCBpdCdz
IHByb2JhYmx5IE9LIHRvIHNheSB0aGF0IGl0J3MgYW4gdW4tb3JkZXJlZCBsaXN0LgogICAgIC8v
IE9uIHRoZSBNYWMsIHRoZXJlJ3Mgbm8gZGlzdGluY3Rpb24gdG8gdGhlIGNsaWVudC4KLSAgICBp
ZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBMaXN0Um9sZSkKKyAgICBpZiAoYXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgCiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZSh1bFRhZyk7CkBAIC03
OSw3ICs3OSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmlzT3JkZXJlZExpc3QoKSAKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQVJJQSBzYXlzIGEgZGlyZWN0b3J5IGlzIGxp
a2UgYSBzdGF0aWMgdGFibGUgb2YgY29udGVudHMsIHdoaWNoIHNvdW5kcyBsaWtlIGFuIG9yZGVy
ZWQgbGlzdC4KLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBEaXJlY3RvcnlSb2xlKQor
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEaXJlY3Rv
cnkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXIt
Pm5vZGUoKTsKQEAgLTEyOSw4ICsxMjksOCBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5TGlzdDo6ZGV0CiAgICAgbV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRl
KCk7CiAgICAgCiAgICAgLy8gRGlyZWN0b3J5IGlzIG1hcHBlZCB0byBsaXN0IGZvciBub3csIGJ1
dCBkb2VzIG5vdCBhZGhlcmUgdG8gdGhlIHNhbWUgaGV1cmlzdGljcy4KLSAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBEaXJlY3RvcnlSb2xlKQotICAgICAgICByZXR1cm4gTGlzdFJvbGU7
CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVj
dG9yeSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OwogICAgIAogICAg
IC8vIEhldXJpc3RpYyB0byBkZXRlcm1pbmUgaWYgdGhpcyBsaXN0IGlzIGJlaW5nIHVzZWQgZm9y
IGxheW91dCBvciBmb3IgY29udGVudC4KICAgICAvLyAgIDEuIElmIGl0J3MgYSBuYW1lZCBsaXN0
LCBsaWtlIG9sIG9yIGFyaWE9bGlzdCwgdGhlbiBpdCdzIGEgbGlzdC4KQEAgLTE0MCw3ICsxNDAs
NyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6ZGV0CiAgICAgLy8gICA0
LiBJZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBsaXN0aXRlbSBjaGlsZHJlbiwgaXQncyBub3QgYSBs
aXN0LgogICAgIC8vICAgNS4gT3RoZXJ3aXNlIGl0J3MgYSBsaXN0IChmb3Igbm93KS4KICAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gTGlzdFJvbGU7CisgICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OwogICAgIAogICAgIC8vIFRlbXBv
cmFyaWx5IHNldCByb2xlIHNvIHRoYXQgd2UgY2FuIHF1ZXJ5IGNoaWxkcmVuIChvdGhlcndpc2Ug
Y2FuSGF2ZUNoaWxkcmVuIHJldHVybnMgZmFsc2UpLgogICAgIG1fcm9sZSA9IHJvbGU7CkBAIC0x
NTEsMTIgKzE1MSwxMiBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5TGlzdDo6ZGV0
CiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOwogICAgIC8vIERl
c2NyaXB0aW9uTGlzdHMgYXJlIGFsd2F5cyBzZW1hbnRpY2FsbHkgYSBkZXNjcmlwdGlvbiBsaXN0
LCBzbyBkbyBub3QgYXBwbHkgaGV1cmlzdGljcy4KICAgICBpZiAoaXNEZXNjcmlwdGlvbkxpc3Qo
KSAmJiBjaGlsZHJlbi5zaXplKCkpCi0gICAgICAgIHJldHVybiBEZXNjcmlwdGlvbkxpc3RSb2xl
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdDsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbikgewotICAgICAgICBpZiAoY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTGlzdEl0ZW1Sb2xlKQorICAgICAgICBpZiAoY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtKQog
ICAgICAgICAgICAgbGlzdEl0ZW1Db3VudCsrOwotICAgICAgICBlbHNlIGlmIChjaGlsZC0+cm9s
ZVZhbHVlKCkgPT0gTGlzdEl0ZW1Sb2xlKSB7CisgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0pIHsKICAgICAgICAgICAgIFJl
bmRlck9iamVjdCogbGlzdEl0ZW0gPSBjaGlsZC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlm
ICghbGlzdEl0ZW0pCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjgsNyArMTY4LDcg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eUxpc3Q6OmRldAogICAgICAgICAgICAg
ICAgIGxpc3RJdGVtQ291bnQrKzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdEl0ZW0tPm5v
ZGUoKSAmJiBsaXN0SXRlbS0+bm9kZSgpLT5oYXNUYWdOYW1lKGxpVGFnKSkgewogICAgICAgICAg
ICAgICAgIC8vIElubGluZSBlbGVtZW50cyB0aGF0IGFyZSBpbiBhIGxpc3Qgd2l0aCBhbiBleHBs
aWNpdCByb2xlIHNob3VsZCBhbHNvIGNvdW50LgotICAgICAgICAgICAgICAgIGlmIChtX2FyaWFS
b2xlID09IExpc3RSb2xlKQorICAgICAgICAgICAgICAgIGlmIChtX2FyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0KQogICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbUNvdW50Kys7
CiAKICAgICAgICAgICAgICAgICBpZiAoY2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJr
ZXJzKGxpc3RJdGVtKSkgewpAQCAtMTgxLDE4ICsxODEsMTggQEAgQWNjZXNzaWJpbGl0eVJvbGUg
QWNjZXNzaWJpbGl0eUxpc3Q6OmRldAogICAgIAogICAgIC8vIE5vbiA8dWw+IGxpc3RzIGFuZCBB
UklBIGxpc3RzIG9ubHkgbmVlZCB0byBoYXZlIG9uZSBjaGlsZC4KICAgICAvLyA8dWw+LCA8b2w+
IGxpc3RzIG5lZWQgdG8gaGF2ZSB2aXNpYmxlIG1hcmtlcnMuCi0gICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gVW5rbm93blJvbGUpIHsKKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikgewogICAgICAgICBpZiAoIWxpc3RJdGVtQ291
bnQpCi0gICAgICAgICAgICByb2xlID0gQXBwbGljYXRpb25Hcm91cFJvbGU7CisgICAgICAgICAg
ICByb2xlID0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXA7CiAgICAgfSBlbHNl
IGlmICghaGFzVmlzaWJsZU1hcmtlcnMpCi0gICAgICAgIHJvbGUgPSBHcm91cFJvbGU7CisgICAg
ICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAKICAgICByZXR1cm4gcm9sZTsK
IH0KICAgICAKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlMaXN0Ojpyb2xlVmFsdWUo
KSBjb25zdAogewotICAgIEFTU0VSVChtX3JvbGUgIT0gVW5rbm93blJvbGUpOworICAgIEFTU0VS
VChtX3JvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pOwogICAgIHJldHVybiBtX3Jv
bGU7CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk2LDkgKzk2LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6c2V0U2Vs
ZWN0ZWRDaAogICAgIH0KICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iaiA6IGNoaWxkcmVu
KSB7Ci0gICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpICE9IExpc3RCb3hPcHRpb25Sb2xlKQor
ICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJv
eE9wdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uPigqb2JqKS5zZXRTZWxlY3Rl
ZCh0cnVlKTsKICAgICB9CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eUxpc3RCbwogICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LT5oYXNU
YWdOYW1lKGhyVGFnKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCYgbGlzdEJveE9iamVjdCA9ICptX3JlbmRlcmVyLT5kb2N1bWVudCgpLmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoTGlzdEJveE9wdGlvblJvbGUpOworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QmIGxpc3RCb3hPYmplY3QgPSAqbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5h
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0
aW9uKTsKICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbj4obGlzdEJveE9i
amVjdCkuc2V0SFRNTEVsZW1lbnQoZWxlbWVudCk7CiAgICAgCiAgICAgcmV0dXJuICZsaXN0Qm94
T2JqZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRy
ZW5BdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRy
ZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGlzdEJveFJvbGU7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDsgfQogICAgICAgICAKICAgICB2b2lkIHNlbGVj
dGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SFRN
TEVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsgbV9vcHRpb25FbGVtZW50ID0gZWxlbWVu
dDsgfQogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIExpc3RCb3hPcHRpb25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RCb3hPcHRpb247IH0KICAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNTZWxlY3RlZE9w
dGlvbkFjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxOCArNTEsMTgg
QEAgUmVmPEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50PiBBY2Nlc3NpYgogQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmRldGVybWluZUFjY2Vzc2liaWxpdHlS
b2xlKCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBVbmtub3duUm9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYg
KChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJv
bGUpCisgICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBtX2FyaWFSb2xl
OwogCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAobm9kZSAm
JiBub2RlLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKLSAgICAgICAgcmV0dXJu
IERvY3VtZW50TWF0aFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9j
dW1lbnRNYXRoOwogCiAgICAgLy8gSXQncyBub3QgY2xlYXIgd2hpY2ggcm9sZSBhIHBsYXRmb3Jt
IHNob3VsZCBjaG9vc2UgZm9yIGEgbWF0aCBlbGVtZW50LgogICAgIC8vIERlY2xhcmluZyBhIG1h
dGggZWxlbWVudCByb2xlIHNob3VsZCBnaXZlIGZsZXhpYmlsaXR5IHRvIHBsYXRmb3JtcyB0byBj
aG9vc2UuCi0gICAgcmV0dXJuIE1hdGhFbGVtZW50Um9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6Ok1hdGhFbGVtZW50OwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQ6OnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2Rl
IG1vZGUpIGNvbnN0CkBAIC0yMDYsNyArMjA2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudDo6aXNNYXRoUwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gdHlwZSA9PSBTdWJzY3JpcHQgPyB0aGlzID09IHBhcmVudC0+bWF0aFN1
YnNjcmlwdE9iamVjdCgpIDogdGhpcyA9PSBwYXJlbnQtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgp
OworICAgIHJldHVybiB0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZTo6
U3Vic2NyaXB0ID8gdGhpcyA9PSBwYXJlbnQtPm1hdGhTdWJzY3JpcHRPYmplY3QoKSA6IHRoaXMg
PT0gcGFyZW50LT5tYXRoU3VwZXJzY3JpcHRPYmplY3QoKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5TWF0aE1MRWxlbWVudDo6aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgdHlwZSkgY29uc3QKQEAgLTIyMSwxNiArMjIxLDE2IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQ6OmlzTWF0aE0KICAgICAvLyB0aGlzIHRv
a2VuIGlzIHByZXNlbnQgYW5kIGluIHRoZSBwb3NpdGlvbiBjb3JyZXNwb25kaW5nIHdpdGggdGhl
IHR5cGUuCiAKICAgICBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMgcGFpcnM7Ci0g
ICAgaWYgKHR5cGUgPT0gUHJlU3Vic2NyaXB0IHx8IHR5cGUgPT0gUHJlU3VwZXJzY3JpcHQpCisg
ICAgaWYgKHR5cGUgPT0gQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBy
ZVN1YnNjcmlwdCB8fCB0eXBlID09IEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RU
eXBlOjpQcmVTdXBlcnNjcmlwdCkKICAgICAgICAgcGFyZW50LT5tYXRoUHJlc2NyaXB0cyhwYWly
cyk7CiAgICAgZWxzZQogICAgICAgICBwYXJlbnQtPm1hdGhQb3N0c2NyaXB0cyhwYWlycyk7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBwYWlycykgewogICAgICAgICBpZiAodGhpcyA9
PSBwYWlyLmZpcnN0KQotICAgICAgICAgICAgcmV0dXJuICh0eXBlID09IFByZVN1YnNjcmlwdCB8
fCB0eXBlID09IFBvc3RTdWJzY3JpcHQpOworICAgICAgICAgICAgcmV0dXJuICh0eXBlID09IEFj
Y2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdWJzY3JpcHQgfHwgdHlw
ZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1YnNjcmlw
dCk7CiAgICAgICAgIGlmICh0aGlzID09IHBhaXIuc2Vjb25kKQotICAgICAgICAgICAgcmV0dXJu
ICh0eXBlID09IFByZVN1cGVyc2NyaXB0IHx8IHR5cGUgPT0gUG9zdFN1cGVyc2NyaXB0KTsKKyAg
ICAgICAgICAgIHJldHVybiAodHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2Jq
ZWN0VHlwZTo6UHJlU3VwZXJzY3JpcHQgfHwgdHlwZSA9PSBBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0KTsKICAgICB9CiAKICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxNSArMTQyLDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eU1lZGlhQ29udHJvbDo6YWNjZXNzaWIKIHsKICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBhY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24oKTsKICAgICBpZiAoIWRlc2NyaXB0aW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmlwdGlvbiwg
QWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0
eVRleHQoZGVzY3JpcHRpb24sIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkp
OwogCiAgICAgU3RyaW5nIHRpdGxlID0gdGhpcy0+dGl0bGUoKTsKICAgICBpZiAoIXRpdGxlLmlz
RW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRs
ZSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJp
bGl0eVRleHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwog
CiAgICAgU3RyaW5nIGhlbHB0ZXh0ID0gaGVscFRleHQoKTsKICAgICBpZiAoIWhlbHB0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChoZWxw
dGV4dCwgSGVscFRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dChoZWxwdGV4dCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHApKTsKIH0KICAgICAK
IApAQCAtMTk3LDIzICsxOTcsMjIgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU1l
ZGlhQ29udAogICAgIGNhc2UgTWVkaWFQYXVzZUJ1dHRvbjoKICAgICBjYXNlIE1lZGlhU2hvd0Ns
b3NlZENhcHRpb25zQnV0dG9uOgogICAgIGNhc2UgTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0
b246Ci0gICAgICAgIHJldHVybiBCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OkJ1dHRvbjsKIAogICAgIGNhc2UgTWVkaWFTdGF0dXNEaXNwbGF5OgotICAgICAg
ICByZXR1cm4gU3RhdGljVGV4dFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3RhdGljVGV4dDsKIAogICAgIGNhc2UgTWVkaWFUaW1lbGluZUNvbnRhaW5lcjoKLSAgICAg
ICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cm91cDsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVy
biBVbmtub3duUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9
CiAKIAotCiAvLwogLy8gQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9s
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5
TWVkaWFDb250cm9sc0NvbnRhaW5lcigpID0gZGVmYXVsdDsKIAotICAgIEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFRvb2xiYXJSb2xlOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OlRvb2xiYXI7IH0KIAogICAgIFN0cmluZyBoZWxwVGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5KCkgPSBkZWZhdWx0OwogCi0gICAgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQXBwbGljYXRpb25U
aW1lclJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UaW1lcjsgfQogCiAg
ICAgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGFjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAko
cmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU1lbnVMaXN0OjphZGRDaGlsZHJlbigKICAgICBpZiAoIWNhY2hlKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdCA9IGNhY2hl
LT5nZXRPckNyZWF0ZShNZW51TGlzdFBvcHVwUm9sZSk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogbGlzdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQ
b3B1cCk7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAko
cmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZW51TGlzdChSZW5kZXJNZW51TGlzdCopOwog
CiAgICAgYm9vbCBpc01lbnVMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBvcFVwQnV0dG9uUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsgfQog
ICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaAkocmV2
aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RPcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBpc01lbnVMaXN0T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gTWVudUxpc3RPcHRpb25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVMaXN0T3B0aW9uOyB9CiAgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNv
bnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAJKHJldmlzaW9uIDIyNDA3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIEFjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbiogQWNjZXNzaWJpbGkKICAgICBpZiAoIWlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSB8fCAhZWxlbWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byYgb3B0aW9uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uPigqZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShNZW51TGlzdE9wdGlvblJvbGUpKTsKKyAgICBhdXRvJiBvcHRpb24gPSBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24+KCpkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdE9wdGlvbikpOwogICAgIG9wdGlv
bi5zZXRFbGVtZW50KGVsZW1lbnQpOwogCiAgICAgcmV0dXJuICZvcHRpb247CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZW51TGlzdFBvcHVwUm9s
ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVwOyB9CiAKICAgICBib29sIGlz
VmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgcHJlc3MoKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODMsMTEgKzgzLDYgQEAgc3RhdGljIFN0cmluZyBhY2Nlc3NpYmxlTmFtZUZvck5vZGUoTm9k
ZQogCiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoTm9k
ZSogbm9kZSkKICAgICA6IEFjY2Vzc2liaWxpdHlPYmplY3QoKQotICAgICwgbV9hcmlhUm9sZShV
bmtub3duUm9sZSkKLSAgICAsIG1fcm9sZUZvck1TQUEoVW5rbm93blJvbGUpCi0jaWZuZGVmIE5E
RUJVRwotICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKLSNlbmRpZgogICAgICwgbV9ub2RlKG5v
ZGUpCiB7CiB9CkBAIC0yODIsNTcgKzI3Nyw1NyBAQCBEb2N1bWVudCogQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmRvY3VtCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQogewogICAgIGlmICghbm9kZSgpKQotICAg
ICAgICByZXR1cm4gVW5rbm93blJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VW5rbm93bjsKIAotICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0
cmlidXRlKCkpICE9IFVua25vd25Sb2xlKQorICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWlu
ZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAg
ICAgICByZXR1cm4gbV9hcmlhUm9sZTsKICAgICAKICAgICBpZiAobm9kZSgpLT5pc0xpbmsoKSkK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmVMaW5rUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpXZWJDb3JlTGluazsKICAgICBpZiAobm9kZSgpLT5pc1RleHROb2RlKCkpCi0g
ICAgICAgIHJldHVybiBTdGF0aWNUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpTdGF0aWNUZXh0OwogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoYnV0dG9uVGFn
KSkKICAgICAgICAgcmV0dXJuIGJ1dHRvblJvbGVUeXBlKCk7CiAgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKCkpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0g
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUoKSk7CiAgICAgICAgIGlmIChpbnB1dC5p
c0NoZWNrYm94KCkpCi0gICAgICAgICAgICByZXR1cm4gQ2hlY2tCb3hSb2xlOworICAgICAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsKICAgICAgICAgaWYgKGlucHV0
LmlzUmFkaW9CdXR0b24oKSkKLSAgICAgICAgICAgIHJldHVybiBSYWRpb0J1dHRvblJvbGU7Cisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOwogICAgICAg
ICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYnV0dG9uUm9s
ZVR5cGUoKTsKICAgICAgICAgaWYgKGlucHV0LmlzUmFuZ2VDb250cm9sKCkpCi0gICAgICAgICAg
ICByZXR1cm4gU2xpZGVyUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyOwogICAgICAgICBpZiAoaW5wdXQuaXNJbnB1dFR5cGVIaWRkZW4oKSkKLSAgICAg
ICAgICAgIHJldHVybiBJZ25vcmVkUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Um9sZTo6SWdub3JlZDsKICAgICAgICAgaWYgKGlucHV0LmlzU2VhcmNoRmllbGQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBTZWFyY2hGaWVsZFJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgICAgICBpZiAoaW5wdXQuaXNDb2xvckNvbnRyb2woKSkKLSAgICAgICAgICAgIHJldHVy
biBDb2xvcldlbGxSb2xlOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpD
b2xvcldlbGw7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIFRleHRGaWVsZFJvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOwogICAgIH0KICAgICBpZiAobm9k
ZSgpLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpIHsKICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQm
IHNlbGVjdEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUoKSk7Ci0g
ICAgICAgIHJldHVybiBzZWxlY3RFbGVtZW50Lm11bHRpcGxlKCkgPyBMaXN0Qm94Um9sZSA6IFBv
cFVwQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIHNlbGVjdEVsZW1lbnQubXVsdGlwbGUoKSA/
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94IDogQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0
dG9uOwogICAgIH0KICAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKm5vZGUoKSkpCi0g
ICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGV4dEFyZWE7CiAgICAgaWYgKGhlYWRpbmdMZXZlbCgpKQotICAgICAgICByZXR1cm4g
SGVhZGluZ1JvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsK
ICAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGJsb2NrcXVvdGVUYWcpKQotICAgICAgICByZXR1
cm4gQmxvY2txdW90ZVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Qmxv
Y2txdW90ZTsKICAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGRpdlRhZykpCi0gICAgICAgIHJl
dHVybiBEaXZSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRpdjsKICAg
ICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKHBUYWcpKQotICAgICAgICByZXR1cm4gUGFyYWdyYXBo
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQYXJhZ3JhcGg7CiAgICAg
aWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KCpub2RlKCkpKQotICAgICAgICByZXR1cm4gTGFiZWxS
b2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsOwogICAgIGlmIChp
czxFbGVtZW50Pigqbm9kZSgpKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSgpKS5pc0ZvY3Vz
YWJsZSgpKQotICAgICAgICByZXR1cm4gR3JvdXBSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwOwogICAgIAotICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmFkZENoaWxkcmVuKCkKQEAgLTM3MCwyMyArMzY1LDIzIEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNhbkhhdmVDaGkKICAgICAKICAgICAvLyBFbGVtZW50cyB0
aGF0IHNob3VsZCBub3QgaGF2ZSBjaGlsZHJlbgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsK
LSAgICBjYXNlIEltYWdlUm9sZToKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBQb3BV
cEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRv
blJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKLSAg
ICBjYXNlIFN0YXRpY1RleHRSb2xlOgotICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6Ci0gICAg
Y2FzZSBTY3JvbGxCYXJSb2xlOgotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgotICAg
IGNhc2UgU3dpdGNoUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAgIGNh
c2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBTcGxpdHRlclJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0
dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3RhdGljVGV4dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0
aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpTd2l0Y2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVj
a2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aDoKICNpZiBFTkFCTEUoTUFUSE1MKQogICAgICAgICByZXR1cm4gbm9kZSgpLT5p
c01hdGhNTEVsZW1lbnQoKTsKICNlbmRpZgpAQCAtNDE3LDE4ICs0MTIsMTggQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29tcHV0ZUFjYwogICAgIH0KIAogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0g
ICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgIGlmIChkZWNp
c2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYSBwYXJl
bnQgdGhhdCBjYW5ub3QgaGF2ZSBjaGlsZHJlbiwgaXQgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgog
ICAgIGlmIChpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBJZ25vcmVkUm9sZSkKKyAgICBpZiAocm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAotICAgIHJldHVybiBtX3JvbGUgPT0gVW5rbm93blJvbGU7CisgICAgcmV0dXJuIG1f
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKIH0KIAogYm9vbCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6Y2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3QKQEAgLTQ3MSw3
ICs0NjYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NlYXJjaEZpCiAgICAg
aWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocm9sZVZhbHVlKCkg
PT0gU2VhcmNoRmllbGRSb2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2VhcmNoRmllbGQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFpczxI
VE1MSW5wdXRFbGVtZW50Pigqbm9kZSkpCkBAIC01MTgsNyArNTEzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVJbQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc0ltYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gSW1hZ2VS
b2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U7
CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUGFzc3dvcmRGaWVsZCgpIGNv
bnN0CkBAIC01MjcsNyArNTIyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQ
YXNzd29yZAogICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xl
KQorICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtu
b3duKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpOwpAQCAtNTU1LDcgKzU1MCw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2IKIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSgpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9
IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgcm9s
ZVZhbHVlKCkgPT0gQnV0dG9uUm9sZSkgeworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihu
b2RlKSAmJiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKSB7CiAgICAg
ICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUpOwogICAgICAgICByZXR1cm4gaW5wdXQuaXNJbWFnZUJ1dHRvbigpOwogICAgIH0KQEAg
LTU2NSwyMyArNTYwLDIzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJ
bWEKIAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNQcm9ncmVzc0luZGljYXRvcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFByb2dyZXNzSW5kaWNhdG9yUm9s
ZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNz
SW5kaWNhdG9yOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NsaWRlcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNsaWRlclJvbGU7CisgICAgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0ZWQoKSBjb25zdAogewogICAgIHN3
aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIE1lbnVSb2xlOgotICAgIGNhc2UgTWVudUJh
clJvbGU6Ci0gICAgY2FzZSBNZW51QnV0dG9uUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToK
LSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1Jv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51QmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpNZW51SXRlbVJhZGlvOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTAsMjUgKzU4NSwyNSBAQCBib29sIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc01lbnVSZWxhCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzTWVudSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IE1lbnVSb2xl
OworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudTsKIH0K
IAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTWVudUJhclJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOwogfQogCiBib29sIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24oKSBjb25zdAogewotICAgIHJldHVybiByb2xlVmFs
dWUoKSA9PSBNZW51QnV0dG9uUm9sZTsKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVCdXR0b247CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzTWVudUl0ZW0oKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAg
ICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNh
c2UgTWVudUl0ZW1DaGVja2JveFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzYsNyArNjMx
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNFbmFibGVkKAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBIb3Jpem9udGFs
UnVsZVJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jp
em9udGFsUnVsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIE5vZGUqIG5vZGUg
PSB0aGlzLT5ub2RlKCk7CkBAIC02ODIsMTIgKzY3NywxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojppc0NoZWNrZWQoCiAgICAgLy8gRWxzZSwgaWYgdGhpcyBpcyBhbiBBUklBIGNo
ZWNrYm94IG9yIHJhZGlvLCByZXNwZWN0IHRoZSBhcmlhLWNoZWNrZWQgYXR0cmlidXRlCiAgICAg
Ym9vbCB2YWxpZFJvbGUgPSBmYWxzZTsKICAgICBzd2l0Y2ggKGFyaWFSb2xlQXR0cmlidXRlKCkp
IHsKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAg
ICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgotICAg
IGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTd2l0Y2g6CiAgICAgICAgIHZhbGlkUm9sZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CkBAIC03MzYsMjYgKzczMSwyNiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc1JlcXVpcmVkCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdXBwb3J0c1Jl
cXVpcmVkQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0g
ICAgY2FzZSBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoK
ICAgICAgICAgcmV0dXJuIGlzRmlsZVVwbG9hZEJ1dHRvbigpOwotICAgIGNhc2UgQ2VsbFJvbGU6
Ci0gICAgY2FzZSBDb2x1bW5IZWFkZXJSb2xlOgotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgotICAg
IGNhc2UgQ29tYm9Cb3hSb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBHcmlkQ2Vs
bFJvbGU6Ci0gICAgY2FzZSBJbmNyZW1lbnRvclJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToK
LSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAg
ICBjYXNlIFJhZGlvR3JvdXBSb2xlOgotICAgIGNhc2UgUm93SGVhZGVyUm9sZToKLSAgICBjYXNl
IFNsaWRlclJvbGU6Ci0gICAgY2FzZSBTcGluQnV0dG9uUm9sZToKLSAgICBjYXNlIFRhYmxlSGVh
ZGVyQ29udGFpbmVyUm9sZToKLSAgICBjYXNlIFRleHRBcmVhUm9sZToKLSAgICBjYXNlIFRleHRG
aWVsZFJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVy
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkNvbWJvQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQ6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6SW5jcmVtZW50b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlz
dEJveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSYWRpb0dyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6U3BpbkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhl
YWRlckNvbnRhaW5lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VG9nZ2xlQnV0dG9uOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03OTUsNyArNzkwLDcgQEAgaW50IEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpoZWFkaW5nTGV2ZQogCiAgICAgLy8gVGhlIGltcGxpY2l0IHZhbHVl
IG9mIGFyaWEtbGV2ZWwgaXMgMiBmb3IgdGhlIGhlYWRpbmcgcm9sZS4KICAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNoZWFkaW5nCi0gICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgPT0gSGVhZGluZ1JvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcpCiAgICAgICAgIHJldHVybiAyOwogCiAgICAgcmV0
dXJuIDA7CkBAIC04NzYsMTIgKzg3MSwxMiBAQCBmbG9hdCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6c3RlcFZhbHVlCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVhZGluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEhlYWRpbmdSb2xlOworICAgIHJl
dHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzsKIH0KIAogYm9v
bCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNMaW5rKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gV2ViQ29yZUxpbmtSb2xlOworICAgIHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmlzQ29udHJvbCgpIGNvbnN0CkBAIC05MDUsNyArOTAwLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNGaWVsZHNldAogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNHcm91cCgpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9
IHJvbGVWYWx1ZSgpOwotICAgIHJldHVybiByb2xlID09IEdyb3VwUm9sZSB8fCByb2xlID09IFRl
eHRHcm91cFJvbGUgfHwgcm9sZSA9PSBBcHBsaWNhdGlvbkdyb3VwUm9sZSB8fCByb2xlID09IEFw
cGxpY2F0aW9uVGV4dEdyb3VwUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwIHx8IHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uR3JvdXAgfHwgcm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXA7CiB9CiAKIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKQEAg
LTkxNSw3ICs5MTAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9i
CiAKICAgICAvLyBGaW5kIHRoZSBjaGlsZCByYWRpbyBidXR0b24gdGhhdCBpcyBzZWxlY3RlZCAo
aWUuIHRoZSBpbnRWYWx1ZSA9PSAxKS4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hp
bGRyZW4oKSkgewotICAgICAgICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IFJhZGlvQnV0dG9u
Um9sZSAmJiBjaGlsZC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSA9PSBCdXR0b25TdGF0ZU9uKQor
ICAgICAgICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRp
b0J1dHRvbiAmJiBjaGlsZC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGU6Ok9uKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk0MSw3ICs5MzYsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iCiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3QKIHsKICAgICBp
ZiAoaXNOYXRpdmVDaGVja2JveE9yUmFkaW8oKSkKLSAgICAgICAgcmV0dXJuIGlzSW5kZXRlcm1p
bmF0ZSgpID8gQnV0dG9uU3RhdGVNaXhlZCA6IGlzQ2hlY2tlZCgpID8gQnV0dG9uU3RhdGVPbiA6
IEJ1dHRvblN0YXRlT2ZmOworICAgICAgICByZXR1cm4gaXNJbmRldGVybWluYXRlKCkgPyBBY2Nl
c3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkIDogaXNDaGVja2VkKCkgPyBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGU6Ok9uIDogQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY7CiAKICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2tib3hPclJhZGlvVmFsdWUoKTsKIH0KQEAg
LTEwMDgsMTQgKzEwMDMsMTQgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFj
dGlvbgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiAKICAgICBzd2l0
Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgUG9wVXBC
dXR0b25Sb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToK
LSAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVt
Q2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKICAgICAgICAgLy8gQ2hlY2sgaWYg
dGhlIGF1dGhvciBpcyBoaWRpbmcgdGhlIHJlYWwgY29udHJvbCBlbGVtZW50IGluc2lkZSB0aGUg
QVJJQSBlbGVtZW50LgogICAgICAgICBpZiAoRWxlbWVudCogbmF0aXZlRWxlbWVudCA9IG5hdGl2
ZUFjdGlvbkVsZW1lbnQobm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gbmF0aXZlRWxlbWVudDsK
QEAgLTEwNjYsNyArMTA2MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzRGVz
Y2VuZGEKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJTbGlkZXJWYWx1ZShi
b29sIGluY3JlYXNlKQogewotICAgIGlmIChyb2xlVmFsdWUoKSAhPSBTbGlkZXJSb2xlKQorICAg
IGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzdGVwQXR0cikuaXNFbXB0eSgpKQpAQCAt
MTEyNSwxMSArMTEyMCwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0dlbmVy
aWNGCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgaWYgKHJvbGUgPT0gVmlkZW9Sb2xlIHx8IHJvbGUgPT0g
QXVkaW9Sb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpWaWRlbyB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBdWRpbykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgLy8gSWYgaXQgaGFzIGFuIGFyaWEgcm9sZSwgaXQncyBub3QgZ2VuZXJpYy4KLSAgICBp
ZiAobV9hcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAobV9hcmlhUm9sZSAhPSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
SWYgdGhlIGNvbnRlbnQgZWRpdGFibGUgYXR0cmlidXRlIGlzIHNldCBvbiB0aGlzIGVsZW1lbnQs
IHRoYXQncyB0aGUgcmVhc29uCkBAIC0xMTQxLDE0ICsxMTM2LDE0IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmlzR2VuZXJpY0YKIAogICAgIC8vIFRoZSB3ZWIgYXJlYSBhbmQgYm9k
eSBlbGVtZW50IGFyZSBib3RoIGZvY3VzYWJsZSwgYnV0IGV4aXN0aW5nIGxvZ2ljIGhhbmRsZXMg
dGhlc2UKICAgICAvLyBjYXNlcyBhbHJlYWR5LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGluY2x1ZGUg
dGhlbSBoZXJlLgotICAgIGlmIChyb2xlID09IFdlYkFyZWFSb2xlKQorICAgIGlmIChyb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoYm9keVRhZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIEFuIFNWRyByb290IGlzIGZvY3VzYWJsZSBieSBkZWZhdWx0LCBi
dXQgaXQncyBwcm9iYWJseSBub3QgaW50ZXJhY3RpdmUsIHNvIGRvbid0CiAgICAgLy8gaW5jbHVk
ZSBpdC4gSXQgY2FuIHN0aWxsIGJlIG1hZGUgYWNjZXNzaWJsZSBieSBnaXZpbmcgaXQgYW4gQVJJ
QSByb2xlLgotICAgIGlmIChyb2xlID09IFNWR1Jvb3RSb2xlKQorICAgIGlmIChyb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpTVkdSb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTExOTksNyArMTE5NCw3IEBAIHN0YXRpYyBFbGVtZW50KiBzaWJsaW5n
V2l0aEFyaWFSb2xlKE5vZGUKIAogRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1l
bnVFbGVtZW50Rm9yTWVudUJ1dHRvbigpIGNvbnN0CiB7Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmli
dXRlKCkgIT0gTWVudUJ1dHRvblJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0g
QWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgcmV0dXJuIHNpYmxpbmdXaXRoQXJpYVJvbGUobm9kZSgpLCAibWVudSIpOwpAQCAtMTIx
NCw3ICsxMjA5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYgog
CiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWVudUl0ZW1FbGVtZW50Rm9yTWVu
dSgpIGNvbnN0CiB7Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gTWVudVJvbGUpCisg
ICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVybiBzaWJsaW5nV2l0aEFyaWFS
b2xlKG5vZGUoKSwgIm1lbnVpdGVtIik7CkBAIC0xMjk4LDE1ICsxMjkzLDE1IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlRWxlbWUKICAgICAgICAgICAgIFN0cmluZyBpbm5l
clRleHQgPSB0ZXh0Rm9yTGFiZWxFbGVtZW50KGxhYmVsKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gT25seSB1c2UgdGhlIDxsYWJlbD4gdGV4dCBpZiB0aGVyZSdzIG5vIEFSSUEgb3Zl
cnJpZGUuCi0gICAgICAgICAgICBpZiAoIWlubmVyVGV4dC5pc0VtcHR5KCkgJiYgIWFyaWFBY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5k
KEFjY2Vzc2liaWxpdHlUZXh0KGlubmVyVGV4dCwgaXNNZXRlcigpID8gQWx0ZXJuYXRpdmVUZXh0
IDogTGFiZWxCeUVsZW1lbnRUZXh0LCBsYWJlbE9iamVjdCkpOworICAgICAgICAgICAgaWYgKGxh
YmVsT2JqZWN0ICYmICFpbm5lclRleHQuaXNFbXB0eSgpICYmICFhcmlhQWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uKCkpCisgICAgICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmls
aXR5VGV4dChpbm5lclRleHQsIGlzTWV0ZXIoKSA/IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpB
bHRlcm5hdGl2ZSA6IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCwgKmxh
YmVsT2JqZWN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAg
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQgPSB0aGlzLT50aXRsZVVJ
RWxlbWVudCgpOwogICAgIGlmICh0aXRsZVVJRWxlbWVudCkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dChTdHJpbmcoKSwgTGFiZWxCeUVsZW1lbnRUZXh0LCB0aXRs
ZVVJRWxlbWVudCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0
KFN0cmluZygpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQsICp0aXRs
ZVVJRWxlbWVudCkpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5h
dGl2ZVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9yZGVyKSBjb25zdApAQCAt
MTMxNCw3ICsxMzA5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRp
dgogICAgIGlmIChpc1dlYkFyZWEoKSkgewogICAgICAgICBTdHJpbmcgd2ViQXJlYVRleHQgPSBh
bHRlcm5hdGl2ZVRleHRGb3JXZWJBcmVhKCk7CiAgICAgICAgIGlmICghd2ViQXJlYVRleHQuaXNF
bXB0eSgpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh3
ZWJBcmVhVGV4dCwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBw
ZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHdlYkFyZWFUZXh0LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTEzMjIs
NyArMTMxNyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKICAg
ICAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFMYWJlbCA9IGdldEF0dHJpYnV0ZShhcmlh
X2xhYmVsQXR0cik7CiAgICAgaWYgKCFhcmlhTGFiZWwuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0
T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFyaWFMYWJlbCwgQWx0ZXJuYXRpdmVUZXh0
KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYXJpYUxhYmVs
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAKICAgICBpZiAo
dXNlc0FsdFRhZ0ZvclRleHRDb21wdXRhdGlvbigpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIoKSkpIHsKQEAgLTEzMzAsNyArMTMyNSw3IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKIAogICAgICAgICAgICAgLy8gUmVuZGVySW1hZ2Ug
d2lsbCByZXR1cm4gdGl0bGUgYXMgYSBmYWxsYmFjayBmcm9tIGFsdFRleHQsIGJ1dCB3ZSBkb24n
dCB3YW50IHRpdGxlIGhlcmUgYmVjYXVzZSB3ZSBjb25zaWRlciB0aGF0IGluIGhlbHBUZXh0Lgog
ICAgICAgICAgICAgaWYgKCFyZW5kZXJBbHRUZXh0LmlzRW1wdHkoKSAmJiByZW5kZXJBbHRUZXh0
ICE9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpKSB7Ci0gICAgICAgICAgICAgICAgdGV4dE9yZGVy
LmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChyZW5kZXJBbHRUZXh0LCBBbHRlcm5hdGl2ZVRleHQp
KTsKKyAgICAgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHJl
bmRlckFsdFRleHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTMzOCw3
ICsxMzMzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdgogICAg
ICAgICAvLyBPdGhlcndpc2UsIGl0IHNob3VsZCBmYWxsYmFjayB0byBvdGhlciBtZXRob2RzLCBs
aWtlIHRoZSB0aXRsZSBhdHRyaWJ1dGUuCiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0
ID0gZ2V0QXR0cmlidXRlKGFsdEF0dHIpOwogICAgICAgICBpZiAoIWFsdC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFsdCwgQWx0ZXJu
YXRpdmVUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlU
ZXh0KGFsdCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAgICAgfQog
ICAgIAogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CkBAIC0xMzQ5LDIzICsxMzQ0LDIz
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0aXYKICAgICBpZiAoaXM8
SFRNTEZpZWxkU2V0RWxlbWVudD4oKm5vZGUpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZG93bmNhc3Q8SFRNTEZp
ZWxkU2V0RWxlbWVudD4oKm5vZGUpLmxlZ2VuZCgpKTsKICAgICAgICAgaWYgKG9iamVjdCAmJiAh
b2JqZWN0LT5pc0hpZGRlbigpKQotICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3Np
YmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUob2JqZWN0LT5ub2RlKCkpLCBBbHRlcm5h
dGl2ZVRleHQpKTsKKyAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG9iamVjdC0+bm9kZSgpKSwgQWNjZXNzaWJpbGl0eVRl
eHRTb3VyY2U6OkFsdGVybmF0aXZlKSk7CiAgICAgfQogICAgIAogICAgIC8vIFRoZSBmaWd1cmUg
ZWxlbWVudCBkZXJpdmVzIGl0cyBhbHRlcm5hdGl2ZSB0ZXh0IGZyb20gdGhlIGZpcnN0IGFzc29j
aWF0ZWQgZmlnY2FwdGlvbiBlbGVtZW50IGlmIG9uZSBpcyBhdmFpbGFibGUuCiAgICAgaWYgKGlz
RmlndXJlRWxlbWVudCgpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNhcHRpb25G
b3JGaWd1cmUgPSB0aGlzLT5jYXB0aW9uRm9yRmlndXJlKCk7CiAgICAgICAgIGlmIChjYXB0aW9u
Rm9yRmlndXJlICYmICFjYXB0aW9uRm9yRmlndXJlLT5pc0hpZGRlbigpKQotICAgICAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUo
Y2FwdGlvbkZvckZpZ3VyZS0+bm9kZSgpKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgICAg
ICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2libGVOYW1lRm9yTm9k
ZShjYXB0aW9uRm9yRmlndXJlLT5ub2RlKCkpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0
ZXJuYXRpdmUpKTsKICAgICB9CiAgICAgCiAgICAgLy8gVHJlZSBpdGVtcyBtaXNzaW5nIGEgbGFi
ZWwgYXJlIGxhYmVsZWQgYnkgYWxsIGNoaWxkIGVsZW1lbnRzLgogICAgIGlmIChpc1RyZWVJdGVt
KCkgJiYgYXJpYUxhYmVsLmlzRW1wdHkoKSAmJiBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkuaXNF
bXB0eSgpKQotICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vz
c2libGVOYW1lRm9yTm9kZShub2RlKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRP
cmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG5vZGUp
LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKICAgICAKICNpZiBFTkFC
TEUoTUFUSE1MKQogICAgIGlmIChub2RlLT5pc01hdGhNTEVsZW1lbnQoKSkKLSAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6
OmFsdHRleHRBdHRyKSwgQWx0ZXJuYXRpdmVUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBl
bmQoQWNjZXNzaWJpbGl0eVRleHQoZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjphbHR0ZXh0QXR0
ciksIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkpOwogI2VuZGlmCiB9CiAK
QEAgLTEzNzksNyArMTM3NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZpc2li
bGVUZXgKICAgICBpZiAoaXNJbnB1dFRhZykgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBp
bnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgaWYgKGlu
cHV0LmlzVGV4dEJ1dHRvbigpKSB7Ci0gICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vz
c2liaWxpdHlUZXh0KGlucHV0LnZhbHVlV2l0aERlZmF1bHQoKSwgVmlzaWJsZVRleHQpKTsKKyAg
ICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaW5wdXQudmFsdWVX
aXRoRGVmYXVsdCgpLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6VmlzaWJsZSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM5MSwyNiArMTM4NiwyNiBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2aXNpYmxlVGV4CiAgICAgYm9vbCB1c2VUZXh0
VW5kZXJFbGVtZW50ID0gZmFsc2U7CiAgICAgCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewot
ICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBv
cFVwQnV0dG9uOgogICAgICAgICAvLyBOYXRpdmUgcG9wdXAgYnV0dG9ucyBzaG91bGQgbm90IHVz
ZSB0aGVpciBidXR0b24gY2hpbGRyZW4ncyB0ZXh0IGFzIGEgdGl0bGUuIFRoYXQgdmFsdWUgaXMg
cmV0cmlldmVkIHRocm91Z2ggc3RyaW5nVmFsdWUoKS4KICAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoc2VsZWN0VGFnKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBGQUxMVEhST1VH
SDsKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgotICAg
IGNhc2UgQ2hlY2tCb3hSb2xlOgotICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRvZ2dsZUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgogICAgIC8vIE1hY09TIGRv
ZXMgbm90IGV4cGVjdCBuYXRpdmUgPGxpPiBlbGVtZW50cyB0byBleHBvc2UgbGFiZWwgaW5mb3Jt
YXRpb24sIGl0IG9ubHkgZXhwZWN0cyBsZWFmIG5vZGUgZWxlbWVudHMgdG8gZG8gdGhhdC4KICNp
ZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgY2FzZSBMaXN0SXRlbVJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAjZW5kaWYKLSAgICBjYXNlIE1lbnVCdXR0b25Sb2xl
OgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1DaGVja2JveFJvbGU6
Ci0gICAgY2FzZSBNZW51SXRlbVJhZGlvUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToK
LSAgICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgY2FzZSBUYWJSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3
aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CiAgICAgICAgIHVzZVRleHRV
bmRlckVsZW1lbnQgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTQz
NCw3ICsxNDI5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmlzaWJsZVRleAog
CiAgICAgICAgIFN0cmluZyB0ZXh0ID0gdGV4dFVuZGVyRWxlbWVudChtb2RlKTsKICAgICAgICAg
aWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNz
aWJpbGl0eVRleHQodGV4dCwgQ2hpbGRyZW5UZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIu
YXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KHRleHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpD
aGlsZHJlbikpOwogICAgIH0KIH0KIApAQCAtMTQ0MiwyOCArMTQzNywyOCBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4dChWCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhcmlhSGVscCA9IGdldEF0dHJpYnV0ZShhcmlhX2hlbHBBdHRyKTsKICAgICBpZiAoIWFyaWFI
ZWxwLmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChhcmlhSGVscCwgSGVscFRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3Np
YmlsaXR5VGV4dChhcmlhSGVscCwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHApKTsKICAg
ICAKICAgICBTdHJpbmcgZGVzY3JpYmVkQnkgPSBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKTsK
ICAgICBpZiAoIWRlc2NyaWJlZEJ5LmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFwcGVu
ZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmliZWRCeSwgU3VtbWFyeVRleHQpKTsKKyAgICAgICAg
dGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChkZXNjcmliZWRCeSwgQWNjZXNzaWJp
bGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpKTsKIAogICAgIC8vIFN1bW1hcnkgYXR0cmlidXRlIHVz
ZWQgYXMgaGVscCB0ZXh0IG9uIHRhYmxlcy4KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1h
cnkgPSBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogICAgIGlmICghc3VtbWFyeS5pc0VtcHR5
KCkpCi0gICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoc3VtbWFyeSwg
U3VtbWFyeVRleHQpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4
dChzdW1tYXJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkpOwogCiAgICAgLy8g
VGhlIHRpdGxlIGF0dHJpYnV0ZSBzaG91bGQgYmUgdXNlZCBhcyBoZWxwIHRleHQgdW5sZXNzIGl0
IGlzIGFscmVhZHkgYmVpbmcgdXNlZCBhcyBkZXNjcmlwdGl2ZSB0ZXh0LgogICAgIC8vIEhvd2V2
ZXIsIHdoZW4gdGhlIHRpdGxlIGF0dHJpYnV0ZSBpcyB0aGUgb25seSB0ZXh0IGFsdGVybmF0aXZl
IHByb3ZpZGVkLCBpdCBtYXkgYmUgZXhwb3NlZCBhcyB0aGUKICAgICAvLyBkZXNjcmlwdGl2ZSB0
ZXh0LiBUaGlzIGlzIHByb2JsZW1hdGljIGluIHRoZSBjYXNlIG9mIG1ldGVycyBiZWNhdXNlIHRo
ZSBIVE1MIHNwZWMgc3VnZ2VzdHMgYXV0aG9ycwogICAgIC8vIGNhbiBleHBvc2UgdW5pdHMgdGhy
b3VnaCB0aGlzIGF0dHJpYnV0ZS4gVGhlcmVmb3JlLCBpZiB0aGUgZWxlbWVudCBpcyBhIG1ldGVy
LCBjaGFuZ2UgaXRzIHNvdXJjZQotICAgIC8vIHR5cGUgdG8gSGVscFRleHQuCisgICAgLy8gdHlw
ZSB0byBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscC4KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHRpdGxlID0gZ2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CiAgICAgaWYgKCF0aXRsZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKCFpc01ldGVyKCkgJiYgIXJvbGVJZ25vcmVzVGl0bGUoKSkK
LSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0bGUsIFRp
dGxlVGFnVGV4dCkpOworICAgICAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5
VGV4dCh0aXRsZSwgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlRpdGxlVGFnKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQodGl0
bGUsIEhlbHBUZXh0KSk7CisgICAgICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxp
dHlUZXh0KHRpdGxlLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCkpOwogICAgIH0KIH0K
IApAQCAtMTQ3Niw3ICsxNDcxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNj
ZXNzaWJpbAogICAgIAogICAgIFN0cmluZyBwbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyVmFsdWUo
KTsKICAgICBpZiAoIXBsYWNlaG9sZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgdGV4dE9yZGVyLmFw
cGVuZChBY2Nlc3NpYmlsaXR5VGV4dChwbGFjZWhvbGRlciwgUGxhY2Vob2xkZXJUZXh0KSk7Cisg
ICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQocGxhY2Vob2xkZXIsIEFj
Y2Vzc2liaWxpdHlUZXh0U291cmNlOjpQbGFjZWhvbGRlcikpOwogfQogICAgIAogdm9pZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQoVmVjdG9yPEFjY2Vzc2liaWxp
dHlUZXh0PiYgdGV4dE9yZGVyKSBjb25zdApAQCAtMTQ4NiwxMyArMTQ4MSwxMyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlCiAgICAgICAgIFZlY3RvcjxFbGVtZW50
Kj4gZWxlbWVudHM7CiAgICAgICAgIGFyaWFMYWJlbGVkQnlFbGVtZW50cyhlbGVtZW50cyk7CiAg
ICAgICAgIAotICAgICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVs
ZW1lbnRzOworICAgICAgICBWZWN0b3I8UmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBheEVsZW1l
bnRzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewotICAg
ICAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4RWxlbWVudCA9IGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7Ci0gICAgICAgICAgICBheEVsZW1lbnRzLmFw
cGVuZChheEVsZW1lbnQpOworICAgICAgICAgICAgaWYgKGF1dG8gYXhFbGVtZW50ID0gYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVtZW50KSkKKyAgICAgICAgICAgICAgICBheEVsZW1l
bnRzLmFwcGVuZCgqYXhFbGVtZW50KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdGV4
dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBbHRlcm5hdGl2
ZVRleHQsIFdURk1vdmUoYXhFbGVtZW50cykpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChB
Y2Nlc3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
QWx0ZXJuYXRpdmUsIFdURk1vdmUoYXhFbGVtZW50cykpKTsKICAgICB9CiB9CiAgICAgCkBAIC0x
NTQxLDcgKzE1MzYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVybmF0
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpIGNvbnN0CiB7CiAgICAgLy8gU3RhdGljIHRleHQgc2hvdWxkIG5vdCBoYXZlIGEgZGVzY3Jp
cHRpb24sIGl0IHNob3VsZCBvbmx5IGhhdmUgYSBzdHJpbmdWYWx1ZS4KLSAgICBpZiAocm9sZVZh
bHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBT
dHJpbmcgYXJpYURlc2NyaXB0aW9uID0gYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwpA
QCAtMTU3NiwxMiArMTU3MSwxMiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFj
Y2Vzc2liCiAvLyBhY2Nlc3NpYmlsaXR5IGhpZXJhcmNoeS4gVGhpcyBhcHBsaWVzIHRvIGdlbmVy
aWMgZ3JvdXBzIGxpa2UgPGRpdj4ncyB3aXRoIG5vIHJvbGUgdmFsdWUgc2V0LgogYm9vbCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6cm9sZUlnbm9yZXNUaXRsZSgpIGNvbnN0CiB7Ci0gICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIERpdlJvbGU6Ci0g
ICAgY2FzZSBVbmtub3duUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXY6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTYxOSw3ICsxNjE0LDcg
QEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoZWxwVGV4dAogICAgICAgICAvLyBP
bmx5IHRha2UgaGVscCB0ZXh0IGZyb20gYW4gYW5jZXN0b3IgZWxlbWVudCBpZiBpdHMgYSBncm91
cCBvciBhbiB1bmtub3duIHJvbGUuIElmIGhlbHAgd2FzIAogICAgICAgICAvLyBhZGRlZCB0byB0
aG9zZSBraW5kcyBvZiBlbGVtZW50cywgaXQgaXMgbGlrZWx5IGl0IHdhcyBtZWFudCBmb3IgYSBj
aGlsZCBlbGVtZW50LgogICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmogPSBh
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGFuY2VzdG9yKSkgewotICAgICAgICAgICAgaWYg
KCFheE9iai0+aXNHcm91cCgpICYmIGF4T2JqLT5yb2xlVmFsdWUoKSAhPSBVbmtub3duUm9sZSkK
KyAgICAgICAgICAgIGlmICghYXhPYmotPmlzR3JvdXAoKSAmJiBheE9iai0+cm9sZVZhbHVlKCkg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjM4LDcgKzE2MzMsNyBAQCB1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aGllcmFyCiAgICAgICAgIHJldHVybiBhcmlhTGV2ZWwudG9JbnQoKTsK
ICAgICAKICAgICAvLyBPbmx5IHRyZWUgaXRlbSB3aWxsIGNhbGN1bGF0ZSBpdHMgbGV2ZWwgdGhy
b3VnaCB0aGUgRE9NIGN1cnJlbnRseS4KLSAgICBpZiAocm9sZVZhbHVlKCkgIT0gVHJlZUl0ZW1S
b2xlKQorICAgIGlmIChyb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0p
CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIC8vIEhpZXJhcmNoeSBsZXZlbGluZyBzdGFy
dHMgYXQgMSwgdG8gbWF0Y2ggdGhlIGFyaWEtbGV2ZWwgc3BlYy4KQEAgLTE2NDYsOSArMTY0MSw5
IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpoaWVyYXIKICAgICB1bnNpZ25l
ZCBsZXZlbCA9IDE7CiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJl
bnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHBhcmVudFJvbGUgPSBwYXJlbnQtPmFyaWFSb2xlQXR0
cmlidXRlKCk7Ci0gICAgICAgIGlmIChwYXJlbnRSb2xlID09IEFwcGxpY2F0aW9uR3JvdXBSb2xl
KQorICAgICAgICBpZiAocGFyZW50Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25Hcm91cCkKICAgICAgICAgICAgIGxldmVsKys7Ci0gICAgICAgIGVsc2UgaWYgKHBhcmVudFJv
bGUgPT0gVHJlZVJvbGUpCisgICAgICAgIGVsc2UgaWYgKHBhcmVudFJvbGUgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgCkBAIC0xODA1
LDI2ICsxODAwLDI2IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGUoKSAK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewot
ICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBv
cFVwQnV0dG9uOgogICAgICAgICAvLyBOYXRpdmUgcG9wdXAgYnV0dG9ucyBzaG91bGQgbm90IHVz
ZSB0aGVpciBidXR0b24gY2hpbGRyZW4ncyB0ZXh0IGFzIGEgdGl0bGUuIFRoYXQgdmFsdWUgaXMg
cmV0cmlldmVkIHRocm91Z2ggc3RyaW5nVmFsdWUoKS4KICAgICAgICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoc2VsZWN0VGFnKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAg
RkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9u
Um9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xl
OgotICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgotICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6Ci0gICAg
Y2FzZSBNZW51SXRlbVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAgICBj
YXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgIGNh
c2UgU3dpdGNoUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6QnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxp
c3RJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpUYWI6CiAgICAgICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7CiAgICAgLy8gU1ZHUm9v
dHMgc2hvdWxkIG5vdCB1c2UgdGhlIHRleHQgdW5kZXIgaXRzZWxmIGFzIGEgdGl0bGUuIFRoYXQg
Y291bGQgaW5jbHVkZSB0aGUgdGV4dCBvZiBvYmplY3RzIGxpa2UgPHRleHQ+LgotICAgIGNhc2Ug
U1ZHUm9vdFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9vdDoKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMTg0
MSw3ICsxODM2LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZSgpIAog
U3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0KCkgY29uc3QKIHsKICAgICAvLyBJ
ZiB0aGlzIGlzIGEgdXNlciBkZWZpbmVkIHN0YXRpYyB0ZXh0LCB1c2UgdGhlIGFjY2Vzc2libGUg
bmFtZSBjb21wdXRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFN0YXRpY1RleHRSb2xlKSB7CisgICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsK
ICAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0T3JkZXI7CiAgICAgICAgIGFs
dGVybmF0aXZlVGV4dCh0ZXh0T3JkZXIpOwogICAgICAgICBpZiAodGV4dE9yZGVyLnNpemUoKSA+
IDAgJiYgdGV4dE9yZGVyWzBdLnRleHQubGVuZ3RoKCkpCkBAIC0xODcwLDcgKzE4NjUsNyBAQCBT
dHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnN0cmluZ1ZhCiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9
PSBTdGF0aWNUZXh0Um9sZSkgeworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0KSB7CiAgICAgICAgIFN0cmluZyBzdGF0aWNUZXh0ID0g
dGV4dCgpOwogICAgICAgICBpZiAoIXN0YXRpY1RleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICBz
dGF0aWNUZXh0ID0gdGV4dFVuZGVyRWxlbWVudCgpOwpAQCAtMjEyOCwzNyArMjEyMywzNyBAQCBB
Y2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjCiB7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7CiAgICAgaWYgKGFy
aWFSb2xlLmlzTnVsbCgpIHx8IGFyaWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFVu
a25vd25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiAg
ICAgCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IGFyaWFSb2xlVG9XZWJDb3JlUm9sZShh
cmlhUm9sZSk7CiAKICAgICAvLyBBUklBIHN0YXRlcyBpZiBhbiBpdGVtIGNhbiBnZXQgZm9jdXMs
IGl0IHNob3VsZCBub3QgYmUgcHJlc2VudGF0aW9uYWwuCi0gICAgaWYgKHJvbGUgPT0gUHJlc2Vu
dGF0aW9uYWxSb2xlICYmIGNhblNldEZvY3VzQXR0cmlidXRlKCkpCi0gICAgICAgIHJldHVybiBV
bmtub3duUm9sZTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0
aW9uYWwgJiYgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYgKHJvbGUgPT0gQnV0dG9uUm9sZSkKKyAgICBp
ZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uKQogICAgICAgICByb2xlID0gYnV0
dG9uUm9sZVR5cGUoKTsKIAotICAgIGlmIChyb2xlID09IFRleHRBcmVhUm9sZSAmJiAhYXJpYUlz
TXVsdGlsaW5lKCkpCi0gICAgICAgIHJvbGUgPSBUZXh0RmllbGRSb2xlOworICAgIGlmIChyb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYSAmJiAhYXJpYUlzTXVsdGlsaW5lKCkpCisg
ICAgICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOwogCiAgICAgcm9sZSA9
IHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChyb2xlKTsKICAgICAKICAgICAvLyBQcmVzZW50YXRp
b25hbCByb2xlcyBhcmUgaW52YWxpZGF0ZWQgYnkgdGhlIHByZXNlbmNlIG9mIEFSSUEgYXR0cmli
dXRlcy4KLSAgICBpZiAocm9sZSA9PSBQcmVzZW50YXRpb25hbFJvbGUgJiYgc3VwcG9ydHNBUklB
QXR0cmlidXRlcygpKQotICAgICAgICByb2xlID0gVW5rbm93blJvbGU7CisgICAgaWYgKHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsICYmIHN1cHBvcnRzQVJJQUF0dHJp
YnV0ZXMoKSkKKyAgICAgICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogICAg
IAogICAgIC8vIFRoZSBBUklBIHNwZWMgc3RhdGVzLCAiQXV0aG9ycyBtdXN0IGdpdmUgZWFjaCBl
bGVtZW50IHdpdGggcm9sZSByZWdpb24gYSBicmllZiBsYWJlbCB0aGF0CiAgICAgLy8gZGVzY3Jp
YmVzIHRoZSBwdXJwb3NlIG9mIHRoZSBjb250ZW50IGluIHRoZSByZWdpb24uIiBUaGUgQ29yZSBB
QU0gc3RhdGVzLCAiU3BlY2lhbCBjYXNlOgogICAgIC8vIGlmIHRoZSByZWdpb24gZG9lcyBub3Qg
aGF2ZSBhbiBhY2Nlc3NpYmxlIG5hbWUsIGRvIG5vdCBleHBvc2UgdGhlIGVsZW1lbnQgYXMgYSBs
YW5kbWFyay4KICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHJvbGUgb2YgdGhl
IGVsZW1lbnQgaW5zdGVhZC4iCi0gICAgaWYgKHJvbGUgPT0gTGFuZG1hcmtSZWdpb25Sb2xlICYm
ICFoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbEF0dHIpICYmICFoYXNBdHRyaWJ1dGUoYXJpYV9sYWJl
bGxlZGJ5QXR0cikpCi0gICAgICAgIHJvbGUgPSBVbmtub3duUm9sZTsKKyAgICBpZiAocm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24gJiYgIWhhc0F0dHJpYnV0ZShhcmlh
X2xhYmVsQXR0cikgJiYgIWhhc0F0dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKSkKKyAgICAg
ICAgcm9sZSA9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCi0gICAgaWYgKHJvbGUpCisg
ICAgaWYgKHN0YXRpY19jYXN0PGludD4ocm9sZSkpCiAgICAgICAgIHJldHVybiByb2xlOwogCi0g
ICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bjsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3QKQEAgLTIxNzMsMjEgKzIxNjgsMjEgQEAgQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplYwogICAgIC8vIFdoaWxlIGluc2lkZSB0aGUg
Y2FsbCBzdGFjayBvZiBjcmVhdGluZyBhbiBlbGVtZW50LCB3ZSBuZWVkIHRvIGF2b2lkIGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjUxNzQKIAotICAgIGlmIChyb2xlICE9IExpc3RCb3hPcHRpb25Sb2xlICYm
IHJvbGUgIT0gTWVudUl0ZW1Sb2xlKQorICAgIGlmIChyb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xl
OjpMaXN0Qm94T3B0aW9uICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtKQog
ICAgICAgICByZXR1cm4gcm9sZTsKICAgICAKICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQgJiYgIXBhcmVudC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpOyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHBhcmVudEFyaWFSb2xlID0gcGFyZW50LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpOwogCiAgICAgICAgIC8vIFNlbGVjdHMgYW5kIGxpc3Rib3hlcyBib3RoIGhhdmUgb3B0
aW9ucyBhcyBjaGlsZCByb2xlcywgYnV0IHRoZXkgbWFwIHRvIGRpZmZlcmVudCByb2xlcyB3aXRo
aW4gV2ViQ29yZS4KLSAgICAgICAgaWYgKHJvbGUgPT0gTGlzdEJveE9wdGlvblJvbGUgJiYgcGFy
ZW50QXJpYVJvbGUgPT0gTWVudVJvbGUpCi0gICAgICAgICAgICByZXR1cm4gTWVudUl0ZW1Sb2xl
OworICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbiAm
JiBwYXJlbnRBcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkKKyAgICAgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW07CiAgICAgICAgIC8vIEFuIGFyaWEg
Im1lbnVpdGVtIiBtYXkgbWFwIHRvIE1lbnVCdXR0b24gb3IgTWVudUl0ZW0gZGVwZW5kaW5nIG9u
IGl0cyBwYXJlbnQuCi0gICAgICAgIGlmIChyb2xlID09IE1lbnVJdGVtUm9sZSAmJiBwYXJlbnRB
cmlhUm9sZSA9PSBBcHBsaWNhdGlvbkdyb3VwUm9sZSkKLSAgICAgICAgICAgIHJldHVybiBNZW51
QnV0dG9uUm9sZTsKKyAgICAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJ
dGVtICYmIHBhcmVudEFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdy
b3VwKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0dG9uOwog
ICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHBhcmVudCBoYWQgYSBkaWZmZXJlbnQgcm9sZSwg
dGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNvbnRpbnVlIHNlYXJjaGluZyB1cCB0aGUgY2hhaW4uCi0g
ICAgICAgIGlmIChwYXJlbnRBcmlhUm9sZSkKKyAgICAgICAgaWYgKHBhcmVudEFyaWFSb2xlICE9
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIApAQCAtMjE5OCwxOSArMjE5MywxOSBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpjYW5TZXRTZWxlCiB7CiAgICAgLy8gRWxlbWVudHMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQKICAg
ICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBDZWxsUm9sZToKLSAgICBjYXNlIEdy
aWRDZWxsUm9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBjYXNlIFJvd0hlYWRl
clJvbGU6Ci0gICAgY2FzZSBSb3dSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2Fz
ZSBUYWJSb2xlOgotICAgIGNhc2UgVHJlZUdyaWRSb2xlOgotICAgIGNhc2UgVHJlZUl0ZW1Sb2xl
OgotICAgIGNhc2UgVHJlZVJvbGU6Ci0gICAgY2FzZSBNZW51SXRlbUNoZWNrYm94Um9sZToKLSAg
ICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlJvdzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
cmVlR3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtQ2hlY2tib3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRp
bzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbToKICAgICAgICAgcmV0dXJu
IGlzRW5hYmxlZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDEw
ICsxNDQsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0KE5vZGUqKTsKIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1fYXJpYVJvbGU7
Ci0gICAgbXV0YWJsZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOworICAgIEFjY2Vz
c2liaWxpdHlSb2xlIG1fYXJpYVJvbGUgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biB9Owor
ICAgIG11dGFibGUgQWNjZXNzaWJpbGl0eVJvbGUgbV9yb2xlRm9yTVNBQSB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duIH07CiAjaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgbV9pbml0aWFsaXpl
ZDsKKyAgICBib29sIG1faW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKICAgICBib29s
IGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9ub2RlOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDIwICs4NCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU9iamVjdCgpCi0gICAgOiBtX2lkKDApCi0g
ICAgLCBtX2hhdmVDaGlsZHJlbihmYWxzZSkKLSAgICAsIG1fcm9sZShVbmtub3duUm9sZSkKLSAg
ICAsIG1fbGFzdEtub3duSXNJZ25vcmVkVmFsdWUoRGVmYXVsdEJlaGF2aW9yKQotICAgICwgbV9p
c0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoKSkKLSAgICAsIG1fY2hpbGRyZW5EaXJ0eShmYWxzZSkKLSAgICAsIG1fc3VidHJlZURpcnR5
KGZhbHNlKQotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAsIG1fd3JhcHBlcihudWxscHRyKQotI2Vu
ZGlmCi17Ci19Ci0KIEFjY2Vzc2liaWxpdHlPYmplY3Q6On5BY2Nlc3NpYmlsaXR5T2JqZWN0KCkK
IHsKICAgICBBU1NFUlQoaXNEZXRhY2hlZCgpKTsKQEAgLTEwNiw3ICs5Miw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3Q6On5BY2Nlc3NpYmlsaXR5T2JqZWMKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dDo6ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSBkZXRhY2htZW50VHlwZSwgQVhP
YmplY3RDYWNoZSogY2FjaGUpCiB7CiAgICAgLy8gTWVudSBjbG9zZSBldmVudHMgbmVlZCB0byBu
b3RpZnkgdGhlIHBsYXRmb3JtLiBObyBlbGVtZW50IGlzIHVzZWQgaW4gdGhlIG5vdGlmaWNhdGlv
biBiZWNhdXNlIGl0J3MgYSBkZXN0cnVjdGlvbiBldmVudC4KLSAgICBpZiAoZGV0YWNobWVudFR5
cGUgPT0gRWxlbWVudERlc3Ryb3llZCAmJiByb2xlVmFsdWUoKSA9PSBNZW51Um9sZSAmJiBjYWNo
ZSkKKyAgICBpZiAoZGV0YWNobWVudFR5cGUgPT0gQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBl
OjpFbGVtZW50RGVzdHJveWVkICYmIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51ICYmIGNhY2hlKQogICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihudWxscHRyLCAm
Y2FjaGUtPmRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYTWVudUNsb3NlZCk7CiAgICAgCiAg
ICAgLy8gQ2xlYXIgYW55IGNoaWxkcmVuIGFuZCBjYWxsIGRldGFjaEZyb21QYXJlbnQgb24gdGhl
bSBzbyB0aGF0CkBAIC0xMzAsMTQyICsxMTYsMTQyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNEZXRhY2hlZCgpIGMKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmls
aXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqIGNyaXRlcmlhLCBzaXplX3QgaW5kZXgpCiB7
CiAgICAgc3dpdGNoIChjcml0ZXJpYS0+c2VhcmNoS2V5c1tpbmRleF0pIHsKLSAgICAvLyBUaGUg
QW55VHlwZVNlYXJjaEtleSBtYXRjaGVzIGFueSBub24tbnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
LgotICAgIGNhc2UgQW55VHlwZVNlYXJjaEtleToKKyAgICAvLyBUaGUgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6QW55VHlwZSBtYXRjaGVzIGFueSBub24tbnVsbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
LgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QW55VHlwZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIAotICAgIGNhc2UgQXJ0aWNsZVNlYXJjaEtleToKLSAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBEb2N1bWVudEFydGljbGVSb2xlOworICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QXJ0aWNsZToKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xl
OwogICAgICAgICAgICAgCi0gICAgY2FzZSBCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QmxvY2txdW90ZVNhbWVMZXZlbDoKICAg
ICAgICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgYXhPYmpl
Y3QtPmlzQmxvY2txdW90ZSgpCiAgICAgICAgICAgICAmJiBheE9iamVjdC0+YmxvY2txdW90ZUxl
dmVsKCkgPT0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKTsKICAgICAg
ICAgCi0gICAgY2FzZSBCbG9ja3F1b3RlU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6QmxvY2txdW90ZToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0Jsb2Nr
cXVvdGUoKTsKICAgICAgICAgCi0gICAgY2FzZSBCb2xkRm9udFNlYXJjaEtleToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkJvbGRGb250OgogICAgICAgICByZXR1cm4gYXhPYmpl
Y3QtPmhhc0JvbGRGb250KCk7CiAgICAgICAgIAotICAgIGNhc2UgQnV0dG9uU2VhcmNoS2V5Ogor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QnV0dG9uOgogICAgICAgICByZXR1cm4g
YXhPYmplY3QtPmlzQnV0dG9uKCk7CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tCb3hTZWFyY2hL
ZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpDaGVja0JveDoKICAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT5pc0NoZWNrYm94KCk7CiAgICAgICAgIAotICAgIGNhc2UgQ29udHJv
bFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkNvbnRyb2w6CiAg
ICAgICAgIHJldHVybiBheE9iamVjdC0+aXNDb250cm9sKCk7CiAgICAgICAgIAotICAgIGNhc2Ug
RGlmZmVyZW50VHlwZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6
OkRpZmZlcmVudFR5cGU6CiAgICAgICAgIHJldHVybiBjcml0ZXJpYS0+c3RhcnRPYmplY3QKICAg
ICAgICAgICAgICYmIGF4T2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBjcml0ZXJpYS0+c3RhcnRPYmpl
Y3QtPnJvbGVWYWx1ZSgpOwogICAgICAgICAKLSAgICBjYXNlIEZvbnRDaGFuZ2VTZWFyY2hLZXk6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpGb250Q2hhbmdlOgogICAgICAgICBy
ZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhh
c1NhbWVGb250KGNyaXRlcmlhLT5zdGFydE9iamVjdC0+cmVuZGVyZXIoKSk7CiAgICAgICAgIAot
ICAgIGNhc2UgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6Rm9udENvbG9yQ2hhbmdlOgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0
YXJ0T2JqZWN0CiAgICAgICAgICAgICAmJiAhYXhPYmplY3QtPmhhc1NhbWVGb250Q29sb3IoY3Jp
dGVyaWEtPnN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKICAgICAgICAgCi0gICAgY2FzZSBGcmFt
ZVNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkZyYW1lOgogICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPmlzV2ViQXJlYSgpOwogICAgICAgICAKLSAgICBjYXNlIEdy
YXBoaWNTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpHcmFwaGlj
OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzSW1hZ2UoKTsKICAgICAgICAgCi0gICAgY2Fz
ZSBIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6SGVhZGluZ0xldmVsMToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oZWFkaW5nTGV2ZWwo
KSA9PSAxOwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdMZXZlbDJTZWFyY2hLZXk6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWwyOgogICAgICAgICByZXR1
cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDI7CiAgICAgICAgIAotICAgIGNhc2UgSGVh
ZGluZ0xldmVsM1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okhl
YWRpbmdMZXZlbDM6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGVhZGluZ0xldmVsKCkgPT0g
MzsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5OgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsNDoKICAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSA0OwogICAgICAgICAKLSAgICBjYXNlIEhlYWRpbmdM
ZXZlbDVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5n
TGV2ZWw1OgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZlbCgpID09IDU7CiAg
ICAgICAgIAotICAgIGNhc2UgSGVhZGluZ0xldmVsNlNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDY6CiAgICAgICAgIHJldHVybiBheE9iamVj
dC0+aGVhZGluZ0xldmVsKCkgPT0gNjsKICAgICAgICAgCi0gICAgY2FzZSBIZWFkaW5nU2FtZUxl
dmVsU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ1Nh
bWVMZXZlbDoKICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAg
ICAgJiYgYXhPYmplY3QtPmlzSGVhZGluZygpCiAgICAgICAgICAgICAmJiBheE9iamVjdC0+aGVh
ZGluZ0xldmVsKCkgPT0gY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKTsKICAg
ICAgICAgCi0gICAgY2FzZSBIZWFkaW5nU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6SGVhZGluZzoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0hlYWRpbmco
KTsKICAgICAKLSAgICBjYXNlIEhpZ2hsaWdodGVkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6SGlnaGxpZ2h0ZWQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
aGFzSGlnaGxpZ2h0aW5nKCk7CiAgICAgICAgICAgICAKLSAgICBjYXNlIEl0YWxpY0ZvbnRTZWFy
Y2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpJdGFsaWNGb250OgogICAg
ICAgICByZXR1cm4gYXhPYmplY3QtPmhhc0l0YWxpY0ZvbnQoKTsKICAgICAgICAgCi0gICAgY2Fz
ZSBMYW5kbWFya1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okxh
bmRtYXJrOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzTGFuZG1hcmsoKTsKICAgICAgICAg
Ci0gICAgY2FzZSBMaW5rU2VhcmNoS2V5OiB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5OjpMaW5rOiB7CiAgICAgICAgIGJvb2wgaXNMaW5rID0gYXhPYmplY3QtPmlzTGluaygpOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKCFpc0xpbmspCi0gICAgICAgICAgICBpc0xp
bmsgPSBheE9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKFdlYkNvcmVMaW5rUm9sZSk7CisgICAg
ICAgICAgICBpc0xpbmsgPSBheE9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxp
dHlSb2xlOjpXZWJDb3JlTGluayk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIGlzTGluazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgTGlzdFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlTZWFyY2hLZXk6Okxpc3Q6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNMaXN0KCk7
CiAgICAgICAgIAotICAgIGNhc2UgTGl2ZVJlZ2lvblNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkxpdmVSZWdpb246CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
c3VwcG9ydHNBUklBTGl2ZVJlZ2lvbigpOwogICAgICAgICAKLSAgICBjYXNlIE1pc3NwZWxsZWRX
b3JkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6TWlzc3BlbGxl
ZFdvcmQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzTWlzc3BlbGxpbmcoKTsKICAgICAg
ICAgCi0gICAgY2FzZSBPdXRsaW5lU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleTo6T3V0bGluZToKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1RyZWUoKTsKICAg
ICAgICAgCi0gICAgY2FzZSBQbGFpblRleHRTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpQbGFpblRleHQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aGFzUGxh
aW5UZXh0KCk7CiAgICAgICAgIAotICAgIGNhc2UgUmFkaW9Hcm91cFNlYXJjaEtleToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlJhZGlvR3JvdXA6CiAgICAgICAgIHJldHVybiBh
eE9iamVjdC0+aXNSYWRpb0dyb3VwKCk7CiAgICAgICAgIAotICAgIGNhc2UgU2FtZVR5cGVTZWFy
Y2hLZXk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTYW1lVHlwZToKICAgICAg
ICAgcmV0dXJuIGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgYXhPYmplY3Qt
PnJvbGVWYWx1ZSgpID09IGNyaXRlcmlhLT5zdGFydE9iamVjdC0+cm9sZVZhbHVlKCk7CiAgICAg
ICAgIAotICAgIGNhc2UgU3RhdGljVGV4dFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OlN0YXRpY1RleHQ6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+aXNTdGF0
aWNUZXh0KCk7CiAgICAgICAgIAotICAgIGNhc2UgU3R5bGVDaGFuZ2VTZWFyY2hLZXk6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTdHlsZUNoYW5nZToKICAgICAgICAgcmV0dXJu
IGNyaXRlcmlhLT5zdGFydE9iamVjdAogICAgICAgICAgICAgJiYgIWF4T2JqZWN0LT5oYXNTYW1l
U3R5bGUoY3JpdGVyaWEtPnN0YXJ0T2JqZWN0LT5yZW5kZXJlcigpKTsKICAgICAgICAgCi0gICAg
Y2FzZSBUYWJsZVNhbWVMZXZlbFNlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk6OlRhYmxlU2FtZUxldmVsOgogICAgICAgICByZXR1cm4gY3JpdGVyaWEtPnN0YXJ0T2Jq
ZWN0CiAgICAgICAgICAgICAmJiBpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpheE9iamVjdCkgJiYg
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqYXhPYmplY3QpLmlzRXhwb3NhYmxlVGhyb3Vn
aEFjY2Vzc2liaWxpdHkoKQogICAgICAgICAgICAgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlPigqYXhPYmplY3QpLnRhYmxlTGV2ZWwoKSA9PSBjcml0ZXJpYS0+c3RhcnRPYmplY3QtPnRh
YmxlTGV2ZWwoKTsKICAgICAgICAgCi0gICAgY2FzZSBUYWJsZVNlYXJjaEtleToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlRhYmxlOgogICAgICAgICByZXR1cm4gaXM8QWNjZXNz
aWJpbGl0eVRhYmxlPigqYXhPYmplY3QpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
KmF4T2JqZWN0KS5pc0V4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiAgICAgICAgIAot
ICAgIGNhc2UgVGV4dEZpZWxkU2VhcmNoS2V5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6VGV4dEZpZWxkOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVGV4dENvbnRyb2wo
KTsKICAgICAgICAgCi0gICAgY2FzZSBVbmRlcmxpbmVTZWFyY2hLZXk6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5OjpVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBheE9iamVjdC0+
aGFzVW5kZXJsaW5lKCk7CiAgICAgICAgIAotICAgIGNhc2UgVW52aXNpdGVkTGlua1NlYXJjaEtl
eToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlVudmlzaXRlZExpbms6CiAgICAg
ICAgIHJldHVybiBheE9iamVjdC0+aXNVbnZpc2l0ZWQoKTsKICAgICAgICAgCi0gICAgY2FzZSBW
aXNpdGVkTGlua1NlYXJjaEtleToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlZp
c2l0ZWRMaW5rOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzVmlzaXRlZCgpOwogICAgICAg
ICAKICAgICBkZWZhdWx0OgpAQCAtMzEyLDUxICsyOTgsNTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY2Nlc3NpYmxlTmFtZQogewogICAgIC8vIEZpcnN0IGNoZWNrIGZvciBvYmplY3Rz
IHNwZWNpZmljYWxseSBpZGVudGlmaWVkIGJ5IEFSSUEuCiAgICAgc3dpdGNoIChhcmlhUm9sZUF0
dHJpYnV0ZSgpKSB7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKLSAgICBjYXNlIEFw
cGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xl
OgotICAgIGNhc2UgQXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkxv
Z1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgotICAgIGNhc2UgQXBwbGlj
YXRpb25TdGF0dXNSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0gICAgY2Fz
ZSBDb21ib0JveFJvbGU6Ci0gICAgY2FzZSBEZWZpbml0aW9uUm9sZToKLSAgICBjYXNlIERvY3Vt
ZW50Um9sZToKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgY2FzZSBEb2N1bWVu
dE1hdGhSb2xlOgotICAgIGNhc2UgRG9jdW1lbnROb3RlUm9sZToKLSAgICBjYXNlIExhbmRtYXJr
UmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrRG9jUmVnaW9uUm9sZToKLSAgICBjYXNlIEZv
cm1Sb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6Ci0gICAgY2FzZSBHcm91cFJvbGU6Ci0gICAgY2Fz
ZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBMaXN0Um9sZToKLSAgICBjYXNlIExpc3RCb3hSb2xlOgot
ICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50
YXJ5Um9sZToKLSAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAgIGNhc2UgTGFu
ZG1hcmtOYXZpZ2F0aW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya1NlYXJjaFJvbGU6Ci0gICAgY2FzZSBNZW51Um9sZToKLSAgICBjYXNlIE1lbnVC
YXJSb2xlOgotICAgIGNhc2UgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOgotICAgIGNhc2UgUmFkaW9H
cm91cFJvbGU6Ci0gICAgY2FzZSBTY3JvbGxCYXJSb2xlOgotICAgIGNhc2UgU2xpZGVyUm9sZToK
LSAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgotICAgIGNhc2UgU3BsaXR0ZXJSb2xlOgotICAgIGNh
c2UgVGFibGVSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2FzZSBUYWJQYW5lbFJv
bGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAgY2FzZSBUZXh0RmllbGRSb2xlOgotICAg
IGNhc2UgVG9vbGJhclJvbGU6Ci0gICAgY2FzZSBUcmVlR3JpZFJvbGU6Ci0gICAgY2FzZSBUcmVl
Um9sZToKLSAgICBjYXNlIFdlYkFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uQWxlcnREaWFsb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25EaWFsb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91
cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25UaW1lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0Jv
eDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZWZpbml0aW9uOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm06
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5OgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm86CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a1NlYXJjaDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJv
Z3Jlc3NJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFibGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlz
dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpUZXh0QXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0
RmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
cmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0zNjQsNyAr
MzUwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmxlTmFtZQogICAgIAog
ICAgIC8vIE5vdyBjaGVjayBmb3IgZ2VuZXJpY2FsbHkgZGVyaXZlZCBlbGVtZW50cyBub3cgdGhh
dCB3ZSBrbm93IHRoZSBlbGVtZW50IGRvZXMgbm90IG1hdGNoIGEgc3BlY2lmaWMgQVJJQSByb2xl
LgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIFNsaWRlclJvbGU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0zODgsMTYgKzM3NCwxNiBAQCBTdHJpbmcg
QWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRMYWJlCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6aXNCbG9ja3F1b3RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
QmxvY2txdW90ZVJvbGU7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpCbG9ja3F1b3RlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENv
bnRyb2woKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIENv
bWJvQm94Um9sZToKLSAgICBjYXNlIFNlYXJjaEZpZWxkUm9sZToKLSAgICBjYXNlIFRleHRBcmVh
Um9sZToKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGV4dEZpZWxkOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDYsNyArMzkyLDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1RleHRDb250cm9sKAogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FSSUFUZXh0Q29udHJvbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFyaWFSb2xlQXR0cmli
dXRlKCkgPT0gVGV4dEFyZWFSb2xlIHx8IGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gVGV4dEZpZWxk
Um9sZSB8fCBhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFNlYXJjaEZpZWxkUm9sZTsKKyAgICByZXR1
cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgfHwg
YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkIHx8IGFy
aWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOwogfQog
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTm9uTmF0aXZlVGV4dENvbnRyb2woKSBjb25z
dApAQCAtNDE4LDE0ICs0MDQsMTQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhbmRt
YXJrKCkgYwogewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKICAg
ICAKLSAgICByZXR1cm4gcm9sZSA9PSBMYW5kbWFya0Jhbm5lclJvbGUKLSAgICAgICAgfHwgcm9s
ZSA9PSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTGFuZG1h
cmtDb250ZW50SW5mb1JvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya0RvY1JlZ2lvblJv
bGUKLSAgICAgICAgfHwgcm9sZSA9PSBMYW5kbWFya01haW5Sb2xlCi0gICAgICAgIHx8IHJvbGUg
PT0gTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZQotICAgICAgICB8fCByb2xlID09IExhbmRtYXJrUmVn
aW9uUm9sZQotICAgICAgICB8fCByb2xlID09IExhbmRtYXJrU2VhcmNoUm9sZTsKKyAgICByZXR1
cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXIKKyAgICAgICAgfHwg
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5CisgICAgICAg
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm8KKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24KKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluCisgICAgICAgIHx8
IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbgorICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbgorICAgICAgICB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaDsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZygpIGNvbnN0CkBAIC02NzcsNyArNjYzLDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5kTWF0Y2hpbmdPYgogICAgIGlmICghc3Rh
cnRPYmplY3QpCiAgICAgICAgIHN0YXJ0T2JqZWN0ID0gdGhpczsKICAgICAKLSAgICBib29sIGlz
Rm9yd2FyZCA9IGNyaXRlcmlhLT5zZWFyY2hEaXJlY3Rpb24gPT0gU2VhcmNoRGlyZWN0aW9uTmV4
dDsKKyAgICBib29sIGlzRm9yd2FyZCA9IGNyaXRlcmlhLT5zZWFyY2hEaXJlY3Rpb24gPT0gQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dDsKICAgICAKICAgICAvLyBUaGUgZmlyc3Qg
aXRlcmF0aW9uIG9mIHRoZSBvdXRlciBsb29wIHdpbGwgZXhhbWluZSB0aGUgY2hpbGRyZW4gb2Yg
dGhlIHN0YXJ0IG9iamVjdCBmb3IgbWF0Y2hlcy4gSG93ZXZlciwgd2hlbgogICAgIC8vIGl0ZXJh
dGluZyBiYWNrd2FyZHMsIHRoZSBzdGFydCBvYmplY3QgY2hpbGRyZW4gc2hvdWxkIG5vdCBiZSBj
b25zaWRlcmVkLCBzbyB0aGUgbG9vcCBpcyBza2lwcGVkIGFoZWFkLiBXZSBtYWtlIGFuCkBAIC03
NjAsNyArNzQ2LDcgQEAgUmVmUHRyPFJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYW5nZQog
ICAgIGlmICghcmVmZXJlbmNlUmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAot
ICAgIGJvb2wgaXNCYWNrd2FyZFNlYXJjaCA9IHNlYXJjaERpcmVjdGlvbiA9PSBTZWFyY2hEaXJl
Y3Rpb25QcmV2aW91czsKKyAgICBib29sIGlzQmFja3dhcmRTZWFyY2ggPSBzZWFyY2hEaXJlY3Rp
b24gPT0gQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6UHJldmlvdXM7CiAgICAgRmluZE9w
dGlvbnMgZmluZE9wdGlvbnMgPSBBdFdvcmRTdGFydHMgfCBBdFdvcmRFbmRzIHwgQ2FzZUluc2Vu
c2l0aXZlIHwgU3RhcnRJblNlbGVjdGlvbjsKICAgICBpZiAoaXNCYWNrd2FyZFNlYXJjaCkKICAg
ICAgICAgZmluZE9wdGlvbnMgfD0gQmFja3dhcmRzOwpAQCAtODMyLDExICs4MTgsMTEgQEAgU3Ry
aW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQQogICAgIFJlZlB0cjxSYW5nZT4g
Y2xvc2VzdEFmdGVyU3RyaW5nUmFuZ2UgPSBudWxscHRyOwogICAgIFJlZlB0cjxSYW5nZT4gY2xv
c2VzdEJlZm9yZVN0cmluZ1JhbmdlID0gbnVsbHB0cjsKICAgICAvLyBTZWFyY2ggZm9yd2FyZCBp
ZiBuZWNlc3NhcnkuCi0gICAgaWYgKGFtYmlndWl0eVJlc29sdXRpb24gPT0gQ2xvc2VzdEFmdGVy
U2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbiB8fCBhbWJpZ3VpdHlSZXNvbHV0aW9uID09IENs
b3Nlc3RUb1NlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24pCi0gICAgICAgIGNsb3Nlc3RBZnRl
clN0cmluZ1JhbmdlID0gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3Rpb24oc2Vs
ZWN0ZWRTdHJpbmdSYW5nZS5nZXQoKSwgU2VhcmNoRGlyZWN0aW9uTmV4dCwgc2VhcmNoU3RyaW5n
cyk7CisgICAgaWYgKGFtYmlndWl0eVJlc29sdXRpb24gPT0gQWNjZXNzaWJpbGl0eVNlbGVjdFRl
eHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0QWZ0ZXIgfHwgYW1iaWd1aXR5UmVzb2x1dGlv
biA9PSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb246OkNsb3Nlc3RU
bykKKyAgICAgICAgY2xvc2VzdEFmdGVyU3RyaW5nUmFuZ2UgPSByYW5nZU9mU3RyaW5nQ2xvc2Vz
dFRvUmFuZ2VJbkRpcmVjdGlvbihzZWxlY3RlZFN0cmluZ1JhbmdlLmdldCgpLCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uOjpOZXh0LCBzZWFyY2hTdHJpbmdzKTsKICAgICAvLyBTZWFyY2gg
YmFja3dhcmQgaWYgbmVjZXNzYXJ5LgotICAgIGlmIChhbWJpZ3VpdHlSZXNvbHV0aW9uID09IENs
b3Nlc3RCZWZvcmVTZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uIHx8IGFtYmlndWl0eVJlc29s
dXRpb24gPT0gQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbikKLSAgICAgICAg
Y2xvc2VzdEJlZm9yZVN0cmluZ1JhbmdlID0gcmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5E
aXJlY3Rpb24oc2VsZWN0ZWRTdHJpbmdSYW5nZS5nZXQoKSwgU2VhcmNoRGlyZWN0aW9uUHJldmlv
dXMsIHNlYXJjaFN0cmluZ3MpOworICAgIGlmIChhbWJpZ3VpdHlSZXNvbHV0aW9uID09IEFjY2Vz
c2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbjo6Q2xvc2VzdEJlZm9yZSB8fCBh
bWJpZ3VpdHlSZXNvbHV0aW9uID09IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVz
b2x1dGlvbjo6Q2xvc2VzdFRvKQorICAgICAgICBjbG9zZXN0QmVmb3JlU3RyaW5nUmFuZ2UgPSBy
YW5nZU9mU3RyaW5nQ2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihzZWxlY3RlZFN0cmluZ1Jhbmdl
LmdldCgpLCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91cywgc2VhcmNoU3Ry
aW5ncyk7CiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGNhbmRpZGF0ZSBpcyBjbG9zZXN0
IHRvIHRoZSBzZWxlY3Rpb24gYW5kIHBlcmZvcm0gdGhlIGFjdGl2aXR5LgogICAgIGlmIChSZWZQ
dHI8UmFuZ2U+IGNsb3Nlc3RTdHJpbmdSYW5nZSA9IHJhbmdlQ2xvc2VzdFRvUmFuZ2Uoc2VsZWN0
ZWRTdHJpbmdSYW5nZS5nZXQoKSwgV1RGTW92ZShjbG9zZXN0QWZ0ZXJTdHJpbmdSYW5nZSksIFdU
Rk1vdmUoY2xvc2VzdEJlZm9yZVN0cmluZ1JhbmdlKSkpIHsKQEAgLTg1MCwyMCArODM2LDIwIEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RUZXh0KEEKICAgICAgICAgYm9vbCBy
ZXBsYWNlU2VsZWN0aW9uID0gZmFsc2U7CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0ZWRSYW5nZShjbG9zZXN0U3RyaW5nUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIHRy
dWUpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGFjdGl2aXR5KSB7Ci0gICAgICAgICAgICBjYXNl
IEZpbmRBbmRDYXBpdGFsaXplOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VsZWN0
VGV4dEFjdGl2aXR5OjpGaW5kQW5kQ2FwaXRhbGl6ZToKICAgICAgICAgICAgICAgICByZXBsYWNl
bWVudFN0cmluZyA9IGNsb3Nlc3RTdHJpbmc7CiAgICAgICAgICAgICAgICAgbWFrZUNhcGl0YWxp
emVkKCZyZXBsYWNlbWVudFN0cmluZywgMCk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZVNlbGVj
dGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEZp
bmRBbmRVcHBlcmNhc2U6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0
QWN0aXZpdHk6OkZpbmRBbmRVcHBlcmNhc2U6CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRT
dHJpbmcgPSBjbG9zZXN0U3RyaW5nLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsg
Ly8gRklYTUU6IE5lZWRzIGxvY2FsZSB0byB3b3JrIGNvcnJlY3RseS4KICAgICAgICAgICAgICAg
ICByZXBsYWNlU2VsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgRmluZEFuZExvd2VyY2FzZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZExvd2VyY2FzZToKICAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudFN0cmluZyA9IGNsb3Nlc3RTdHJpbmcuY29udmVydFRvTG93ZXJjYXNlV2l0
aG91dExvY2FsZSgpOyAvLyBGSVhNRTogTmVlZHMgbG9jYWxlIHRvIHdvcmsgY29ycmVjdGx5Lgog
ICAgICAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBGaW5kQW5kUmVwbGFjZUFjdGl2aXR5OiB7CisgICAg
ICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRSZXBs
YWNlOiB7CiAgICAgICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbiA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgLy8gV2hlbiBhcHBseWluZyBmaW5kIGFuZCByZXBsYWNlIGFjdGl2aXRpZXMsIHdl
IHdhbnQgdG8gbWF0Y2ggdGhlIGNhcGl0YWxpemF0aW9uIG9mIHRoZSByZXBsYWNlZCB0ZXh0LAog
ICAgICAgICAgICAgICAgIC8vICh1bmxlc3Mgd2UncmUgcmVwbGFjaW5nIHdpdGggYW4gYWJicmV2
aWF0aW9uLikKQEAgLTg3NSw3ICs4NjEsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6
c2VsZWN0VGV4dChBCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBGaW5kQW5kU2VsZWN0QWN0aXZpdHk6Cisg
ICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRT
ZWxlY3Q6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTkxMiwyNCArODk4LDIzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzQXR0
cmlidXRlc1IKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFJbnB1dChBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZSkKIHsKLSAgICByZXR1cm4gYXJpYVJvbGUgPT0gUmFkaW9CdXR0
b25Sb2xlIHx8IGFyaWFSb2xlID09IENoZWNrQm94Um9sZSB8fCBhcmlhUm9sZSA9PSBUZXh0Rmll
bGRSb2xlIHx8IGFyaWFSb2xlID09IFN3aXRjaFJvbGUgfHwgYXJpYVJvbGUgPT0gU2VhcmNoRmll
bGRSb2xlOworICAgIHJldHVybiBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9C
dXR0b24gfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94IHx8IGFyaWFS
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQgfHwgYXJpYVJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlN3aXRjaCB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Vh
cmNoRmllbGQ7CiB9ICAgIAogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFD
b250cm9sKEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlKQogewotICAgIHJldHVybiBpc0FSSUFJ
bnB1dChhcmlhUm9sZSkgfHwgYXJpYVJvbGUgPT0gVGV4dEFyZWFSb2xlIHx8IGFyaWFSb2xlID09
IEJ1dHRvblJvbGUgCi0gICAgfHwgYXJpYVJvbGUgPT0gQ29tYm9Cb3hSb2xlIHx8IGFyaWFSb2xl
ID09IFNsaWRlclJvbGU7IAorICAgIHJldHVybiBpc0FSSUFJbnB1dChhcmlhUm9sZSkgfHwgYXJp
YVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhIHx8IGFyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpCdXR0b24gfHwgYXJpYVJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bWJvQm94IHx8IGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7CiB9CiAgICAg
CiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzUmFuZ2VDb250cm9sKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6
Ci0gICAgY2FzZSBTbGlkZXJSb2xlOgotICAgIGNhc2UgU2Nyb2xsQmFyUm9sZToKLSAgICBjYXNl
IFNwaW5CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5k
aWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3BpbkJ1dHRvbjoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBTcGxpdHRlclJvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CiAgICAgICAgIHJldHVybiBj
YW5TZXRGb2N1c0F0dHJpYnV0ZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0NTksNyArMTQ0NCw3IEBAIFZpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojp2aXMKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIAogICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXMuCi0gICAgSW50
UG9pbnQgY29ybmVyID0gKHZpc2libGVQb3NpdGlvbkZvckJvdW5kcyA9PSBGaXJzdFZpc2libGVQ
b3NpdGlvbkZvckJvdW5kcykgPyByZWN0Lm1pblhNaW5ZQ29ybmVyKCkgOiByZWN0Lm1heFhNYXhZ
Q29ybmVyKCk7CisgICAgSW50UG9pbnQgY29ybmVyID0gKHZpc2libGVQb3NpdGlvbkZvckJvdW5k
cyA9PSBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzOjpGaXJzdCkgPyByZWN0
Lm1pblhNaW5ZQ29ybmVyKCkgOiByZWN0Lm1heFhNYXhZQ29ybmVyKCk7CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uID0gbWFpbkZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb3Ju
ZXIpOwogICAgIAogICAgIGlmIChyZWN0LmNvbnRhaW5zKHBvc2l0aW9uLmFic29sdXRlQ2FyZXRC
b3VuZHMoKS5jZW50ZXIoKSkpCkBAIC0xNjUyLDI5ICsxNjM3LDI5IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c3VwcG9ydHNBUklBUmUKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
ID0gcm9sZVZhbHVlKCk7CiAKLSAgICByZXR1cm4gcm9sZSA9PSBDaGVja0JveFJvbGUKLSAgICAg
ICAgfHwgcm9sZSA9PSBDb2x1bW5IZWFkZXJSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gQ29tYm9C
b3hSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gR3JpZFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBH
cmlkQ2VsbFJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBMaXN0Qm94Um9sZQotICAgICAgICB8fCBy
b2xlID09IE1lbnVJdGVtQ2hlY2tib3hSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gTWVudUl0ZW1S
YWRpb1JvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBSYWRpb0dyb3VwUm9sZQotICAgICAgICB8fCBy
b2xlID09IFJvd0hlYWRlclJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBTZWFyY2hGaWVsZFJvbGUK
LSAgICAgICAgfHwgcm9sZSA9PSBTbGlkZXJSb2xlCi0gICAgICAgIHx8IHJvbGUgPT0gU3BpbkJ1
dHRvblJvbGUKLSAgICAgICAgfHwgcm9sZSA9PSBTd2l0Y2hSb2xlCi0gICAgICAgIHx8IHJvbGUg
PT0gVGV4dEZpZWxkUm9sZQotICAgICAgICB8fCByb2xlID09IFRyZWVHcmlkUm9sZQorICAgIHJl
dHVybiByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveAorICAgICAgICB8fCByb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIKKyAgICAgICAgfHwgcm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3gKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JpZAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
Q2VsbAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94CisgICAg
ICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3gKKyAgICAg
ICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbworICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwCisgICAgICAgIHx8IHJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcgorICAgICAgICB8fCByb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTbGlkZXIKKyAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Bp
bkJ1dHRvbgorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2gKKyAg
ICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkCisgICAgICAgIHx8
IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkCiAgICAgICAgIHx8IGlzUGFzc3dv
cmRGaWVsZCgpOwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVJlYWRPbmx5
VmFsdWUoKSBjb25zdAogewogICAgIGlmICghaGFzQXR0cmlidXRlKGFyaWFfcmVhZG9ubHlBdHRy
KSkKLSAgICAgICAgcmV0dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUgJiYg
c3VwcG9ydHNBUklBUmVhZE9ubHkoKSA/ICJmYWxzZSIgOiBTdHJpbmcoKTsKKyAgICAgICAgcmV0
dXJuIGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gJiYg
c3VwcG9ydHNBUklBUmVhZE9ubHkoKSA/ICJmYWxzZSIgOiBTdHJpbmcoKTsKIAogICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUoYXJpYV9yZWFkb25seUF0dHIpLnN0cmluZygpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCk7CiB9CkBAIC0xODkxLDcgKzE4NzYsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3Qg
PSByZW5kZXJPYmplY3QtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShy
ZW5kZXJPYmplY3QpOwogICAgIAogICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlP
YmplY3QqPihBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpheE9iamVjdCwgdHJ1
ZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgewotICAgICAgICByZXR1
cm4gb2JqZWN0LnJvbGVWYWx1ZSgpID09IEhlYWRpbmdSb2xlOworICAgICAgICByZXR1cm4gb2Jq
ZWN0LnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOwogICAgIH0pKTsK
IH0KIApAQCAtMTkwOSw3ICsxODk0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
VHJlZVJvd3MoQQogewogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7
CiAgICAgICAgIC8vIEFkZCB0cmVlIGl0ZW1zIGFzIHRoZSByb3dzLgotICAgICAgICBpZiAoY2hp
bGQtPnJvbGVWYWx1ZSgpID09IFRyZWVJdGVtUm9sZSkKKyAgICAgICAgaWYgKGNoaWxkLT5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNoaWxkKTsKIAogICAgICAgICAvLyBOb3cgc2VlIGlmIHRoaXMgaXRlbSBhbHNv
IGhhcyByb3dzIGhpZGluZyBpbnNpZGUgb2YgaXQuCkBAIC0xOTIxLDcgKzE5MDYsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbUNvCiB7CiAgICAgLy8gVGhlIEFSSUEg
dHJlZSBpdGVtIGNvbnRlbnQgYXJlIHRoZSBpdGVtIHRoYXQgYXJlIG5vdCBvdGhlciB0cmVlIGl0
ZW1zIG9yIHRoZWlyIGNvbnRhaW5pbmcgZ3JvdXBzLgogICAgIGZvciAoY29uc3QgYXV0byYgY2hp
bGQgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgIGlmICghY2hpbGQtPmlzR3JvdXAoKSAmJiBjaGls
ZC0+cm9sZVZhbHVlKCkgIT0gVHJlZUl0ZW1Sb2xlKQorICAgICAgICBpZiAoIWNoaWxkLT5pc0dy
b3VwKCkgJiYgY2hpbGQtPnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRl
bSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hpbGQpOwogICAgIH0KIH0KQEAgLTE5MzAs
NyArMTkxNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVJdGVtRGkKIHsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iaiA6IGNoaWxkcmVuKCkpIHsKICAgICAgICAgLy8gQWRk
IHRyZWUgaXRlbXMgYXMgdGhlIHJvd3MuCi0gICAgICAgIGlmIChvYmotPnJvbGVWYWx1ZSgpID09
IFRyZWVJdGVtUm9sZSkKKyAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlRyZWVJdGVtKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChvYmopOwogICAg
ICAgICAvLyBJZiBpdCdzIG5vdCBhIHRyZWUgaXRlbSwgdGhlbiBkZXNjZW5kIGludG8gdGhlIGdy
b3VwIHRvIGZpbmQgbW9yZSB0cmVlIGl0ZW1zLgogICAgICAgICBlbHNlIApAQCAtMTk0MSwxNCAr
MTkyNiwxNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURpCiBjb25z
dCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JS
b2xlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiB7CiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAg
Y2FzZSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFs
b2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKICAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYXNzZXJ0aXZlIik7Ci0gICAgY2FzZSBBcHBsaWNhdGlv
bkxvZ1JvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInBvbGl0
ZSIpOwotICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0gICAgY2FzZSBBcHBsaWNhdGlv
bk1hcnF1ZWVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGlt
ZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlOgogICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJvZmYiKTsKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKQEAgLTE5NzEsMjUgKzE5NTYsMjUgQEAgY29uc3QgU3RyaW5nJiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY3RpbwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTdHJpbmc+IGxpc3RJdGVtQWN0aW9uKEFYTGlzdEl0ZW1BY3Rpb25WZXJiKCkpOwogCiAgICAg
c3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFRv
Z2dsZUJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKICAgICAgICAgcmV0dXJuIGJ1
dHRvbkFjdGlvbjsKLSAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgogICAgICAgICByZXR1cm4gdGV4dEZpZWxkQWN0aW9u
OwotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJhZGlvQnV0dG9uOgogICAgICAgICByZXR1cm4gcmFkaW9CdXR0b25BY3Rpb247Ci0gICAgY2Fz
ZSBDaGVja0JveFJvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRjaDoK
ICAgICAgICAgcmV0dXJuIGlzQ2hlY2tlZCgpID8gY2hlY2tlZENoZWNrQm94QWN0aW9uIDogdW5j
aGVja2VkQ2hlY2tCb3hBY3Rpb247Ci0gICAgY2FzZSBMaW5rUm9sZToKLSAgICBjYXNlIFdlYkNv
cmVMaW5rUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5rOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOgogICAgICAgICByZXR1cm4gbGlua0FjdGlv
bjsKLSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpQb3BVcEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIG1lbnVMaXN0QWN0aW9uOwotICAgIGNhc2Ug
TWVudUxpc3RQb3B1cFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUxpc3RQ
b3B1cDoKICAgICAgICAgcmV0dXJuIG1lbnVMaXN0UG9wdXBBY3Rpb247Ci0gICAgY2FzZSBMaXN0
SXRlbVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW06CiAgICAgICAg
IHJldHVybiBsaXN0SXRlbUFjdGlvbjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVs
bEF0b20oKTsKQEAgLTIwNTIsNDAgKzIwMzcsNDAgQEAgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGUgQWNjZXNzaWJpbAogICAgIAogICAgIC8vIElmICJmYWxzZSIsIGVtcHR5LCBvciBtaXNz
aW5nLCByZXR1cm4gZmFsc2Ugc3RhdGUuCiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlLmlzRW1w
dHkoKSB8fCBjdXJyZW50U3RhdGVWYWx1ZSA9PSAiZmFsc2UiKQotICAgICAgICByZXR1cm4gQVJJ
QUN1cnJlbnRGYWxzZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0
YXRlOjpGYWxzZTsKICAgICAKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUgPT0gInBhZ2UiKQot
ICAgICAgICByZXR1cm4gQVJJQUN1cnJlbnRQYWdlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eUFSSUFDdXJyZW50U3RhdGU6OlBhZ2U7CiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09
ICJzdGVwIikKLSAgICAgICAgcmV0dXJuIEFSSUFDdXJyZW50U3RlcDsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpTdGVwOwogICAgIGlmIChjdXJyZW50U3Rh
dGVWYWx1ZSA9PSAibG9jYXRpb24iKQotICAgICAgICByZXR1cm4gQVJJQUN1cnJlbnRMb2NhdGlv
bjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpMb2NhdGlv
bjsKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUgPT0gImRhdGUiKQotICAgICAgICByZXR1cm4g
QVJJQUN1cnJlbnREYXRlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGU6OkRhdGU7CiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09ICJ0aW1lIikKLSAgICAg
ICAgcmV0dXJuIEFSSUFDdXJyZW50VGltZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlB
UklBQ3VycmVudFN0YXRlOjpUaW1lOwogICAgIAogICAgIC8vIEFueSB2YWx1ZSBub3QgaW5jbHVk
ZWQgaW4gdGhlIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgInRy
dWUiLgotICAgIHJldHVybiBBUklBQ3VycmVudFRydWU7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlBUklBQ3VycmVudFN0YXRlOjpUcnVlOwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYUN1cnJlbnRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChhcmlhQ3VycmVudFN0
YXRlKCkpIHsKLSAgICBjYXNlIEFSSUFDdXJyZW50RmFsc2U6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5QVJJQUN1cnJlbnRTdGF0ZTo6RmFsc2U6CiAgICAgICAgIHJldHVybiAiZmFsc2UiOwotICAg
IGNhc2UgQVJJQUN1cnJlbnRQYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGU6OlBhZ2U6CiAgICAgICAgIHJldHVybiAicGFnZSI7Ci0gICAgY2FzZSBBUklBQ3VycmVu
dFN0ZXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6U3RlcDoKICAg
ICAgICAgcmV0dXJuICJzdGVwIjsKLSAgICBjYXNlIEFSSUFDdXJyZW50TG9jYXRpb246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6TG9jYXRpb246CiAgICAgICAgIHJl
dHVybiAibG9jYXRpb24iOwotICAgIGNhc2UgQVJJQUN1cnJlbnRUaW1lOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU6CiAgICAgICAgIHJldHVybiAidGltZSI7
Ci0gICAgY2FzZSBBUklBQ3VycmVudERhdGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1
cnJlbnRTdGF0ZTo6RGF0ZToKICAgICAgICAgcmV0dXJuICJkYXRlIjsKICAgICBkZWZhdWx0Ogot
ICAgIGNhc2UgQVJJQUN1cnJlbnRUcnVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJy
ZW50U3RhdGU6OlRydWU6CiAgICAgICAgIHJldHVybiAidHJ1ZSI7CiAgICAgfQogfQpAQCAtMjE2
NCwxMSArMjE0OSwxMSBAQCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eU9i
CiB7CiAgICAgTGF5b3V0UmVjdCBib3VuZHMgPSBlbGVtZW50UmVjdCgpOwogICAgIGlmIChib3Vu
ZHMuc2l6ZSgpLndpZHRoKCkgPiBib3VuZHMuc2l6ZSgpLmhlaWdodCgpKQotICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICBpZiAoYm91bmRzLnNpemUo
KS5oZWlnaHQoKSA+IGJvdW5kcy5zaXplKCkud2lkdGgoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25VbmRlZmluZWQ7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VW5k
ZWZpbmVkOwogfSAgICAKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRP
Zk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCkgY29uc3QKQEAgLTIy
MTYsMTE3ICsyMjAxLDExNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUm9sZU1hcCgpCiAgICAg
QVNTRVJUKCFnQXJpYVJldmVyc2VSb2xlTWFwKTsKIAogICAgIGNvbnN0IFJvbGVFbnRyeSByb2xl
c1tdID0gewotICAgICAgICB7ICJhbGVydCIsIEFwcGxpY2F0aW9uQWxlcnRSb2xlIH0sCi0gICAg
ICAgIHsgImFsZXJ0ZGlhbG9nIiwgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGUgfSwKLSAgICAg
ICAgeyAiYXBwbGljYXRpb24iLCBXZWJBcHBsaWNhdGlvblJvbGUgfSwKLSAgICAgICAgeyAiYXJ0
aWNsZSIsIERvY3VtZW50QXJ0aWNsZVJvbGUgfSwKLSAgICAgICAgeyAiYmFubmVyIiwgTGFuZG1h
cmtCYW5uZXJSb2xlIH0sCi0gICAgICAgIHsgImJ1dHRvbiIsIEJ1dHRvblJvbGUgfSwKLSAgICAg
ICAgeyAiY2hlY2tib3giLCBDaGVja0JveFJvbGUgfSwKLSAgICAgICAgeyAiY29tcGxlbWVudGFy
eSIsIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUgfSwKLSAgICAgICAgeyAiY29udGVudGluZm8i
LCBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZSB9LAotICAgICAgICB7ICJkaWFsb2ciLCBBcHBsaWNh
dGlvbkRpYWxvZ1JvbGUgfSwKLSAgICAgICAgeyAiZGlyZWN0b3J5IiwgRGlyZWN0b3J5Um9sZSB9
LAorICAgICAgICB7ICJhbGVydCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0
IH0sCisgICAgICAgIHsgImFsZXJ0ZGlhbG9nIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0
aW9uQWxlcnREaWFsb2cgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24iLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6V2ViQXBwbGljYXRpb24gfSwKKyAgICAgICAgeyAiYXJ0aWNsZSIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudEFydGljbGUgfSwKKyAgICAgICAgeyAiYmFubmVyIiwgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyIH0sCisgICAgICAgIHsgImJ1dHRvbiIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpCdXR0b24gfSwKKyAgICAgICAgeyAiY2hlY2tib3giLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6Q2hlY2tCb3ggfSwKKyAgICAgICAgeyAiY29tcGxlbWVudGFyeSIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnkgfSwKKyAgICAgICAgeyAiY29udGVudGluZm8i
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbyB9LAorICAgICAgICB7ICJk
aWFsb2ciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2cgfSwKKyAgICAgICAg
eyAiZGlyZWN0b3J5IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSB9LAogICAgICAgICAv
LyBUaGUgJ2RvYy0qJyByb2xlcyBhcmUgZGVmaW5lZCB0aGUgQVJJQSBEUFVCIG1vYmlsZTogaHR0
cHM6Ly93d3cudzMub3JnL1RSL2RwdWItYWFtLTEuMC8gCiAgICAgICAgIC8vIEVkaXRvcidzIGRy
YWZ0IGlzIGN1cnJlbnRseSBhdCBodHRwczovL3Jhd2dpdC5jb20vdzNjL2FyaWEvbWFzdGVyL2Rw
dWItYWFtL2RwdWItYWFtLmh0bWwgCi0gICAgICAgIHsgImRvYy1hYnN0cmFjdCIsIEFwcGxpY2F0
aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtYWNrbm93bGVkZ21lbnRzIiwgTGFu
ZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1hZnRlcndvcmQiLCBMYW5kbWFy
a0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWFwcGVuZGl4IiwgTGFuZG1hcmtEb2NS
ZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1iYWNrbGluayIsIFdlYkNvcmVMaW5rUm9sZSB9
LAotICAgICAgICB7ICJkb2MtYmlibGlvZW50cnkiLCBMaXN0SXRlbVJvbGUgfSwKLSAgICAgICAg
eyAiZG9jLWJpYmxpb2dyYXBoeSIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7
ICJkb2MtYmlibGlvcmVmIiwgV2ViQ29yZUxpbmtSb2xlIH0sCi0gICAgICAgIHsgImRvYy1jaGFw
dGVyIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1jb2xvcGhvbiIs
IEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAgICAgICB7ICJkb2MtY29uY2x1c2lvbiIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtY292ZXIiLCBJbWFnZVJv
bGUgfSwKLSAgICAgICAgeyAiZG9jLWNyZWRpdCIsIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9
LAotICAgICAgICB7ICJkb2MtY3JlZGl0cyIsIExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAg
ICAgICB7ICJkb2MtZGVkaWNhdGlvbiIsIEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSB9LAotICAg
ICAgICB7ICJkb2MtZW5kbm90ZSIsIExpc3RJdGVtUm9sZSB9LAotICAgICAgICB7ICJkb2MtZW5k
bm90ZXMiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLWVwaWdyYXBo
IiwgQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1lcGlsb2d1ZSIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtZXJyYXRhIiwgTGFuZG1h
cmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1leGFtcGxlIiwgQXBwbGljYXRpb25U
ZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1mb290bm90ZSIsIEZvb3Rub3RlUm9sZSB9
LAotICAgICAgICB7ICJkb2MtZm9yZXdvcmQiLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAg
ICAgICAgeyAiZG9jLWdsb3NzYXJ5IiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAg
IHsgImRvYy1nbG9zc3JlZiIsIFdlYkNvcmVMaW5rUm9sZSB9LAotICAgICAgICB7ICJkb2MtaW5k
ZXgiLCBMYW5kbWFya05hdmlnYXRpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1pbnRyb2R1Y3Rp
b24iLCBMYW5kbWFya0RvY1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAiZG9jLW5vdGVyZWYiLCBX
ZWJDb3JlTGlua1JvbGUgfSwKLSAgICAgICAgeyAiZG9jLW5vdGljZSIsIERvY3VtZW50Tm90ZVJv
bGUgfSwKLSAgICAgICAgeyAiZG9jLXBhZ2VicmVhayIsIFNwbGl0dGVyUm9sZSB9LAotICAgICAg
ICB7ICJkb2MtcGFnZWxpc3QiLCBMYW5kbWFya05hdmlnYXRpb25Sb2xlIH0sCi0gICAgICAgIHsg
ImRvYy1wYXJ0IiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1wcmVm
YWNlIiwgTGFuZG1hcmtEb2NSZWdpb25Sb2xlIH0sCi0gICAgICAgIHsgImRvYy1wcm9sb2d1ZSIs
IExhbmRtYXJrRG9jUmVnaW9uUm9sZSB9LAotICAgICAgICB7ICJkb2MtcHVsbHF1b3RlIiwgQXBw
bGljYXRpb25UZXh0R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgImRvYy1xbmEiLCBBcHBsaWNhdGlv
blRleHRHcm91cFJvbGUgfSwKLSAgICAgICAgeyAiZG9jLXN1YnRpdGxlIiwgSGVhZGluZ1JvbGUg
fSwKLSAgICAgICAgeyAiZG9jLXRpcCIsIERvY3VtZW50Tm90ZVJvbGUgfSwKLSAgICAgICAgeyAi
ZG9jLXRvYyIsIExhbmRtYXJrTmF2aWdhdGlvblJvbGUgfSwKLSAgICAgICAgeyAiZmlndXJlIiwg
RmlndXJlUm9sZSB9LAotICAgICAgICB7ICJncmlkIiwgR3JpZFJvbGUgfSwKLSAgICAgICAgeyAi
Z3JpZGNlbGwiLCBHcmlkQ2VsbFJvbGUgfSwKLSAgICAgICAgeyAidGFibGUiLCBUYWJsZVJvbGUg
fSwKLSAgICAgICAgeyAiY2VsbCIsIENlbGxSb2xlIH0sCi0gICAgICAgIHsgImNvbHVtbmhlYWRl
ciIsIENvbHVtbkhlYWRlclJvbGUgfSwKLSAgICAgICAgeyAiY29tYm9ib3giLCBDb21ib0JveFJv
bGUgfSwKLSAgICAgICAgeyAiZGVmaW5pdGlvbiIsIERlZmluaXRpb25Sb2xlIH0sCi0gICAgICAg
IHsgImRvY3VtZW50IiwgRG9jdW1lbnRSb2xlIH0sCi0gICAgICAgIHsgImZlZWQiLCBGZWVkUm9s
ZSB9LAotICAgICAgICB7ICJmb3JtIiwgRm9ybVJvbGUgfSwKLSAgICAgICAgeyAicm93aGVhZGVy
IiwgUm93SGVhZGVyUm9sZSB9LAotICAgICAgICB7ICJncm91cCIsIEFwcGxpY2F0aW9uR3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgImhlYWRpbmciLCBIZWFkaW5nUm9sZSB9LAotICAgICAgICB7ICJp
bWciLCBJbWFnZVJvbGUgfSwKLSAgICAgICAgeyAibGluayIsIFdlYkNvcmVMaW5rUm9sZSB9LAot
ICAgICAgICB7ICJsaXN0IiwgTGlzdFJvbGUgfSwgICAgICAgIAotICAgICAgICB7ICJsaXN0aXRl
bSIsIExpc3RJdGVtUm9sZSB9LCAgICAgICAgCi0gICAgICAgIHsgImxpc3Rib3giLCBMaXN0Qm94
Um9sZSB9LAotICAgICAgICB7ICJsb2ciLCBBcHBsaWNhdGlvbkxvZ1JvbGUgfSwKLSAgICAgICAg
eyAibWFpbiIsIExhbmRtYXJrTWFpblJvbGUgfSwKLSAgICAgICAgeyAibWFycXVlZSIsIEFwcGxp
Y2F0aW9uTWFycXVlZVJvbGUgfSwKLSAgICAgICAgeyAibWF0aCIsIERvY3VtZW50TWF0aFJvbGUg
fSwKLSAgICAgICAgeyAibWVudSIsIE1lbnVSb2xlIH0sCi0gICAgICAgIHsgIm1lbnViYXIiLCBN
ZW51QmFyUm9sZSB9LAotICAgICAgICB7ICJtZW51aXRlbSIsIE1lbnVJdGVtUm9sZSB9LAotICAg
ICAgICB7ICJtZW51aXRlbWNoZWNrYm94IiwgTWVudUl0ZW1DaGVja2JveFJvbGUgfSwKLSAgICAg
ICAgeyAibWVudWl0ZW1yYWRpbyIsIE1lbnVJdGVtUmFkaW9Sb2xlIH0sCi0gICAgICAgIHsgIm5v
bmUiLCBQcmVzZW50YXRpb25hbFJvbGUgfSwKLSAgICAgICAgeyAibm90ZSIsIERvY3VtZW50Tm90
ZVJvbGUgfSwKLSAgICAgICAgeyAibmF2aWdhdGlvbiIsIExhbmRtYXJrTmF2aWdhdGlvblJvbGUg
fSwKLSAgICAgICAgeyAib3B0aW9uIiwgTGlzdEJveE9wdGlvblJvbGUgfSwKLSAgICAgICAgeyAi
cHJlc2VudGF0aW9uIiwgUHJlc2VudGF0aW9uYWxSb2xlIH0sCi0gICAgICAgIHsgInByb2dyZXNz
YmFyIiwgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCi0gICAgICAgIHsgInJhZGlvIiwgUmFkaW9C
dXR0b25Sb2xlIH0sCi0gICAgICAgIHsgInJhZGlvZ3JvdXAiLCBSYWRpb0dyb3VwUm9sZSB9LAot
ICAgICAgICB7ICJyZWdpb24iLCBMYW5kbWFya1JlZ2lvblJvbGUgfSwKLSAgICAgICAgeyAicm93
IiwgUm93Um9sZSB9LAotICAgICAgICB7ICJyb3dncm91cCIsIFJvd0dyb3VwUm9sZSB9LAotICAg
ICAgICB7ICJzY3JvbGxiYXIiLCBTY3JvbGxCYXJSb2xlIH0sCi0gICAgICAgIHsgInNlYXJjaCIs
IExhbmRtYXJrU2VhcmNoUm9sZSB9LAotICAgICAgICB7ICJzZWFyY2hib3giLCBTZWFyY2hGaWVs
ZFJvbGUgfSwKLSAgICAgICAgeyAic2VwYXJhdG9yIiwgU3BsaXR0ZXJSb2xlIH0sCi0gICAgICAg
IHsgInNsaWRlciIsIFNsaWRlclJvbGUgfSwKLSAgICAgICAgeyAic3BpbmJ1dHRvbiIsIFNwaW5C
dXR0b25Sb2xlIH0sCi0gICAgICAgIHsgInN0YXR1cyIsIEFwcGxpY2F0aW9uU3RhdHVzUm9sZSB9
LAotICAgICAgICB7ICJzd2l0Y2giLCBTd2l0Y2hSb2xlIH0sCi0gICAgICAgIHsgInRhYiIsIFRh
YlJvbGUgfSwKLSAgICAgICAgeyAidGFibGlzdCIsIFRhYkxpc3RSb2xlIH0sCi0gICAgICAgIHsg
InRhYnBhbmVsIiwgVGFiUGFuZWxSb2xlIH0sCi0gICAgICAgIHsgInRleHQiLCBTdGF0aWNUZXh0
Um9sZSB9LAotICAgICAgICB7ICJ0ZXh0Ym94IiwgVGV4dEFyZWFSb2xlIH0sCi0gICAgICAgIHsg
InRlcm0iLCBUZXJtUm9sZSB9LAotICAgICAgICB7ICJ0aW1lciIsIEFwcGxpY2F0aW9uVGltZXJS
b2xlIH0sCi0gICAgICAgIHsgInRvb2xiYXIiLCBUb29sYmFyUm9sZSB9LAotICAgICAgICB7ICJ0
b29sdGlwIiwgVXNlckludGVyZmFjZVRvb2x0aXBSb2xlIH0sCi0gICAgICAgIHsgInRyZWUiLCBU
cmVlUm9sZSB9LAotICAgICAgICB7ICJ0cmVlZ3JpZCIsIFRyZWVHcmlkUm9sZSB9LAotICAgICAg
ICB7ICJ0cmVlaXRlbSIsIFRyZWVJdGVtUm9sZSB9CisgICAgICAgIHsgImRvYy1hYnN0cmFjdCIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJk
b2MtYWNrbm93bGVkZ21lbnRzIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCisgICAgICAgIHsgImRvYy1hZnRlcndvcmQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWFwcGVuZGl4IiwgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1iYWNrbGluayIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2MtYmlibGlvZW50cnki
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAiZG9jLWJpYmxpb2dy
YXBoeSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7
ICJkb2MtYmlibGlvcmVmIiwgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rIH0sCisgICAg
ICAgIHsgImRvYy1jaGFwdGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9u
IH0sCisgICAgICAgIHsgImRvYy1jb2xvcGhvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY29uY2x1c2lvbiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtY292ZXIiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6SW1hZ2UgfSwKKyAgICAgICAgeyAiZG9jLWNyZWRpdCIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9LAorICAgICAgICB7ICJkb2MtY3JlZGl0
cyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJk
b2MtZGVkaWNhdGlvbiIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRleHRHcm91cCB9
LAorICAgICAgICB7ICJkb2MtZW5kbm90ZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSB9
LAorICAgICAgICB7ICJkb2MtZW5kbm90ZXMiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtE
b2NSZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWVwaWdyYXBoIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsgImRvYy1lcGlsb2d1ZSIsIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtZXJyYXRh
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRv
Yy1leGFtcGxlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisg
ICAgICAgIHsgImRvYy1mb290bm90ZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290bm90ZSB9LAor
ICAgICAgICB7ICJkb2MtZm9yZXdvcmQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NS
ZWdpb24gfSwKKyAgICAgICAgeyAiZG9jLWdsb3NzYXJ5IiwgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1nbG9zc3JlZiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJkb2MtaW5kZXgiLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uIH0sCisgICAgICAgIHsgImRvYy1pbnRyb2R1Y3Rp
b24iLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24gfSwKKyAgICAgICAgeyAi
ZG9jLW5vdGVyZWYiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsgfSwKKyAgICAgICAg
eyAiZG9jLW5vdGljZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKKyAgICAg
ICAgeyAiZG9jLXBhZ2VicmVhayIsIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdHRlciB9LAorICAg
ICAgICB7ICJkb2MtcGFnZWxpc3QiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0
aW9uIH0sCisgICAgICAgIHsgImRvYy1wYXJ0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
RG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wcmVmYWNlIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrRG9jUmVnaW9uIH0sCisgICAgICAgIHsgImRvYy1wcm9sb2d1ZSIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbiB9LAorICAgICAgICB7ICJkb2MtcHVsbHF1b3Rl
IiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwIH0sCisgICAgICAgIHsg
ImRvYy1xbmEiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAgfSwKKyAg
ICAgICAgeyAiZG9jLXN1YnRpdGxlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRpbmcgfSwKKyAg
ICAgICAgeyAiZG9jLXRpcCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE5vdGUgfSwKKyAg
ICAgICAgeyAiZG9jLXRvYyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb24g
fSwKKyAgICAgICAgeyAiZmlndXJlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZSB9LAorICAg
ICAgICB7ICJncmlkIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQgfSwKKyAgICAgICAgeyAiZ3Jp
ZGNlbGwiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGwgfSwKKyAgICAgICAgeyAidGFibGUi
LCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFibGUgfSwKKyAgICAgICAgeyAiY2VsbCIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpDZWxsIH0sCisgICAgICAgIHsgImNvbHVtbmhlYWRlciIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpDb2x1bW5IZWFkZXIgfSwKKyAgICAgICAgeyAiY29tYm9ib3giLCBBY2Nlc3NpYmls
aXR5Um9sZTo6Q29tYm9Cb3ggfSwKKyAgICAgICAgeyAiZGVmaW5pdGlvbiIsIEFjY2Vzc2liaWxp
dHlSb2xlOjpEZWZpbml0aW9uIH0sCisgICAgICAgIHsgImRvY3VtZW50IiwgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50IH0sCisgICAgICAgIHsgImZlZWQiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6
RmVlZCB9LAorICAgICAgICB7ICJmb3JtIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkZvcm0gfSwKKyAg
ICAgICAgeyAicm93aGVhZGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB9LAorICAg
ICAgICB7ICJncm91cCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwIH0sCisg
ICAgICAgIHsgImhlYWRpbmciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZyB9LAorICAgICAg
ICB7ICJpbWciLCBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UgfSwKKyAgICAgICAgeyAibGluayIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluayB9LAorICAgICAgICB7ICJsaXN0IiwgQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpc3QgfSwKKyAgICAgICAgeyAibGlzdGl0ZW0iLCBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEl0ZW0gfSwKKyAgICAgICAgeyAibGlzdGJveCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0Qm94IH0sCisgICAgICAgIHsgImxvZyIsIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBs
aWNhdGlvbkxvZyB9LAorICAgICAgICB7ICJtYWluIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRt
YXJrTWFpbiB9LAorICAgICAgICB7ICJtYXJxdWVlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uTWFycXVlZSB9LAorICAgICAgICB7ICJtYXRoIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRv
Y3VtZW50TWF0aCB9LAorICAgICAgICB7ICJtZW51IiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUg
fSwKKyAgICAgICAgeyAibWVudWJhciIsIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyIH0sCisg
ICAgICAgIHsgIm1lbnVpdGVtIiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtIH0sCisgICAg
ICAgIHsgIm1lbnVpdGVtY2hlY2tib3giLCBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVj
a2JveCB9LAorICAgICAgICB7ICJtZW51aXRlbXJhZGlvIiwgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtUmFkaW8gfSwKKyAgICAgICAgeyAibm9uZSIsIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVz
ZW50YXRpb25hbCB9LAorICAgICAgICB7ICJub3RlIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3Vt
ZW50Tm90ZSB9LAorICAgICAgICB7ICJuYXZpZ2F0aW9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6Okxh
bmRtYXJrTmF2aWdhdGlvbiB9LAorICAgICAgICB7ICJvcHRpb24iLCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEJveE9wdGlvbiB9LAorICAgICAgICB7ICJwcmVzZW50YXRpb24iLCBBY2Nlc3NpYmls
aXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfSwKKyAgICAgICAgeyAicHJvZ3Jlc3NiYXIiLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6UHJvZ3Jlc3NJbmRpY2F0b3IgfSwKKyAgICAgICAgeyAicmFkaW8iLCBB
Y2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gfSwKKyAgICAgICAgeyAicmFkaW9ncm91cCIs
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0dyb3VwIH0sCisgICAgICAgIHsgInJlZ2lvbiIsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbiB9LAorICAgICAgICB7ICJyb3ciLCBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93IH0sCisgICAgICAgIHsgInJvd2dyb3VwIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OlJvd0dyb3VwIH0sCisgICAgICAgIHsgInNjcm9sbGJhciIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpTY3JvbGxCYXIgfSwKKyAgICAgICAgeyAic2VhcmNoIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrU2VhcmNoIH0sCisgICAgICAgIHsgInNlYXJjaGJveCIsIEFjY2Vzc2liaWxpdHlS
b2xlOjpTZWFyY2hGaWVsZCB9LAorICAgICAgICB7ICJzZXBhcmF0b3IiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3BsaXR0ZXIgfSwKKyAgICAgICAgeyAic2xpZGVyIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OlNsaWRlciB9LAorICAgICAgICB7ICJzcGluYnV0dG9uIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlNw
aW5CdXR0b24gfSwKKyAgICAgICAgeyAic3RhdHVzIiwgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uU3RhdHVzIH0sCisgICAgICAgIHsgInN3aXRjaCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpT
d2l0Y2ggfSwKKyAgICAgICAgeyAidGFiIiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYiB9LAorICAg
ICAgICB7ICJ0YWJsaXN0IiwgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3QgfSwKKyAgICAgICAg
eyAidGFicGFuZWwiLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwgfSwKKyAgICAgICAgeyAi
dGV4dCIsIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0IH0sCisgICAgICAgIHsgInRleHRi
b3giLCBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEgfSwKKyAgICAgICAgeyAidGVybSIsIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXJtIH0sCisgICAgICAgIHsgInRpbWVyIiwgQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uVGltZXIgfSwKKyAgICAgICAgeyAidG9vbGJhciIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpUb29sYmFyIH0sCisgICAgICAgIHsgInRvb2x0aXAiLCBBY2Nlc3NpYmlsaXR5
Um9sZTo6VXNlckludGVyZmFjZVRvb2x0aXAgfSwKKyAgICAgICAgeyAidHJlZSIsIEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlIH0sCisgICAgICAgIHsgInRyZWVncmlkIiwgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVHcmlkIH0sCisgICAgICAgIHsgInRyZWVpdGVtIiwgQWNjZXNzaWJpbGl0eVJvbGU6
OlRyZWVJdGVtIH0KICAgICB9OwogCiAgICAgZ0FyaWFSb2xlTWFwID0gbmV3IEFSSUFSb2xlTWFw
OwpAQCAtMjMzNCw3ICsyMzE5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJvbGVNYXAoKQog
ICAgIHNpemVfdCByb2xlTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChyb2xlcyk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByb2xlTGVuZ3RoOyArK2kpIHsKICAgICAgICAgZ0FyaWFSb2xl
TWFwLT5zZXQocm9sZXNbaV0uYXJpYVJvbGUsIHJvbGVzW2ldLndlYmNvcmVSb2xlKTsKLSAgICAg
ICAgZ0FyaWFSZXZlcnNlUm9sZU1hcC0+c2V0KHJvbGVzW2ldLndlYmNvcmVSb2xlLCByb2xlc1tp
XS5hcmlhUm9sZSk7CisgICAgICAgIGdBcmlhUmV2ZXJzZVJvbGVNYXAtPnNldChzdGF0aWNfY2Fz
dDxpbnQ+KHJvbGVzW2ldLndlYmNvcmVSb2xlKSwgcm9sZXNbaV0uYXJpYVJvbGUpOwogICAgIH0K
IH0KIApAQCAtMjM1NCwxMCArMjMzOSwxMSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5T2JqZWN0OjphCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOwogICAgIGZvciAo
YXV0byByb2xlTmFtZSA6IFN0cmluZ1ZpZXcodmFsdWUpLnNwbGl0KCcgJykpIHsKLSAgICAgICAg
aWYgKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBhcmlhUm9sZU1hcCgpLmdldDxBU0NJSUNhc2VJ
bnNlbnNpdGl2ZVN0cmluZ1ZpZXdIYXNoVHJhbnNsYXRvcj4ocm9sZU5hbWUpKQorICAgICAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gYXJpYVJvbGVNYXAoKS5nZXQ8QVNDSUlDYXNlSW5zZW5z
aXRpdmVTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I+KHJvbGVOYW1lKTsKKyAgICAgICAgaWYgKHN0
YXRpY19jYXN0PGludD4ocm9sZSkpCiAgICAgICAgICAgICByZXR1cm4gcm9sZTsKICAgICB9Ci0g
ICAgcmV0dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5r
bm93bjsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkUm9sZVN0cmlu
ZygpIGNvbnN0CkBAIC0yMzY2LDIzICsyMzUyLDIzIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpjb21wdXRlZFJvbGUKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVl
KCk7CiAKICAgICAvLyBXZSBkbyBub3QgY29tcHV0ZSBhIHJvbGUgc3RyaW5nIGZvciBnZW5lcmlj
IGJsb2NrIGVsZW1lbnRzIHdpdGggdXNlci1hZ2VudCBhc3NpZ25lZCByb2xlcy4KLSAgICBpZiAo
cm9sZSA9PSBHcm91cFJvbGUgfHwgcm9sZSA9PSBUZXh0R3JvdXBSb2xlKQorICAgIGlmIChyb2xl
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpUZXh0R3JvdXApCiAgICAgICAgIHJldHVybiAiIjsKIAogICAgIC8vIFdlIGRvIGNvbXB1dGUg
YSByb2xlIHN0cmluZyBmb3IgYmxvY2sgZWxlbWVudHMgd2l0aCBhdXRob3ItcHJvdmlkZWQgcm9s
ZXMuCi0gICAgaWYgKHJvbGUgPT0gQXBwbGljYXRpb25UZXh0R3JvdXBSb2xlIHx8IHJvbGUgPT0g
Rm9vdG5vdGVSb2xlKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KEFw
cGxpY2F0aW9uR3JvdXBSb2xlKTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25UZXh0R3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5v
dGUpCisgICAgICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8
aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cCkpOwogCi0gICAgaWYgKHJv
bGUgPT0gSG9yaXpvbnRhbFJ1bGVSb2xlKQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xl
TWFwKCkuZ2V0KFNwbGl0dGVyUm9sZSk7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6Okhvcml6b250YWxSdWxlKQorICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCku
Z2V0KHN0YXRpY19jYXN0PGludD4oQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyKSk7CiAKLSAg
ICBpZiAocm9sZSA9PSBQb3BVcEJ1dHRvblJvbGUgfHwgcm9sZSA9PSBUb2dnbGVCdXR0b25Sb2xl
KQotICAgICAgICByZXR1cm4gcmV2ZXJzZUFyaWFSb2xlTWFwKCkuZ2V0KEJ1dHRvblJvbGUpOwor
ICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiB8fCByb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b24pCisgICAgICAgIHJldHVybiByZXZlcnNl
QXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0
dG9uKSk7CiAKLSAgICBpZiAocm9sZSA9PSBMYW5kbWFya0RvY1JlZ2lvblJvbGUpCi0gICAgICAg
IHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoTGFuZG1hcmtSZWdpb25Sb2xlKTsKKyAg
ICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24pCisgICAg
ICAgIHJldHVybiByZXZlcnNlQXJpYVJvbGVNYXAoKS5nZXQoc3RhdGljX2Nhc3Q8aW50PihBY2Nl
c3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24pKTsKIAotICAgIHJldHVybiByZXZlcnNlQXJp
YVJvbGVNYXAoKS5nZXQocm9sZSk7CisgICAgcmV0dXJuIHJldmVyc2VBcmlhUm9sZU1hcCgpLmdl
dChzdGF0aWNfY2FzdDxpbnQ+KHJvbGUpKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpoYXNIaWdobGlnaHRpbmcoKSBjb25zdApAQCAtMjQwOSw3ICsyMzk1LDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c1ByZXNzQQogewogICAgIGlmIChpc0J1dHRvbigpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gRGV0YWlsc1JvbGUp
CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50ID0gdGhp
cy0+YWN0aW9uRWxlbWVudCgpOwpAQCAtMjQyMiw4ICsyNDA4LDggQEAgYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c1ByZXNzQQogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHJlc3VsdHM7CiAgICAgICAgICAgICAvLyBTZWFyY2ggd2l0aGluIGZvciBpbW1l
ZGlhdGUgZGVzY2VuZGFudHMgdGhhdCBhcmUgc3RhdGljIHRleHQuIElmIHdlIGZpbmQgbW9yZSB0
aGFuIG9uZQogICAgICAgICAgICAgLy8gdGhlbiB0aGlzIGlzIGFuIGV2ZW50IGRlbGVnYXRvciBh
Y3Rpb25FbGVtZW50IGFuZCB3ZSBzaG91bGQgZXhwb3NlIHRoZSBwcmVzcyBhY3Rpb24uCi0gICAg
ICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNlYXJjaEtleT4ga2V5cyh7IFN0YXRpY1RleHRT
ZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXksIEdyYXBoaWNTZWFyY2hLZXksIEhlYWRpbmdTZWFy
Y2hLZXksIExpbmtTZWFyY2hLZXkgfSk7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEgY3JpdGVyaWEoYXhPYmosIFNlYXJjaERpcmVjdGlvbk5leHQsIGVtcHR5U3RyaW5n
KCksIDIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVNl
YXJjaEtleT4ga2V5cyh7IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlN0YXRpY1RleHQsIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXk6OkNvbnRyb2wsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkdyYXBo
aWMsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmcsIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXk6OkxpbmsgfSk7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3Jp
dGVyaWEoYXhPYmosIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQsIGVtcHR5U3Ry
aW5nKCksIDIsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlz
ID0ga2V5czsKICAgICAgICAgICAgIGF4T2JqLT5maW5kTWF0Y2hpbmdPYmplY3RzKCZjcml0ZXJp
YSwgcmVzdWx0cyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0cy5zaXplKCkgPiAxKQpAQCAtMjU5
NCwxOCArMjU4MCwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
CiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpzb3J0RGly
ZWN0aW9uKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVl
KCk7Ci0gICAgaWYgKHJvbGUgIT0gUm93SGVhZGVyUm9sZSAmJiByb2xlICE9IENvbHVtbkhlYWRl
clJvbGUpCi0gICAgICAgIHJldHVybiBTb3J0RGlyZWN0aW9uSW52YWxpZDsKKyAgICBpZiAocm9s
ZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkNvbHVtbkhlYWRlcikKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uOjpJbnZhbGlkOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3J0QXR0cmlidXRl
ID0gZ2V0QXR0cmlidXRlKGFyaWFfc29ydEF0dHIpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShzb3J0QXR0cmlidXRlLCAiYXNjZW5kaW5nIikpCi0gICAgICAgIHJldHVy
biBTb3J0RGlyZWN0aW9uQXNjZW5kaW5nOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNv
cnREaXJlY3Rpb246OkFzY2VuZGluZzsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoc29ydEF0dHJpYnV0ZSwgImRlc2NlbmRpbmciKSkKLSAgICAgICAgcmV0dXJuIFNvcnRE
aXJlY3Rpb25EZXNjZW5kaW5nOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNvcnREaXJl
Y3Rpb246OkRlc2NlbmRpbmc7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHNvcnRBdHRyaWJ1dGUsICJvdGhlciIpKQotICAgICAgICByZXR1cm4gU29ydERpcmVjdGlvbk90
aGVyOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok90aGVyOwog
ICAgIAotICAgIHJldHVybiBTb3J0RGlyZWN0aW9uTm9uZTsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVNvcnREaXJlY3Rpb246Ok5vbmU7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNSYW5nZVZhbHVlKCkgY29uc3QKQEAgLTI2OTUsOSArMjY4MSw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNFeHBhbmQKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZXhwYW5kZWQsICJ0cnVlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZXhwYW5kZWQsICJmYWxzZSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBz
d2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBDb21ib0JveFJvbGU6Ci0gICAgY2FzZSBE
aXNjbG9zdXJlVHJpYW5nbGVSb2xlOgotICAgIGNhc2UgRGV0YWlsc1JvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
RGlzY2xvc3VyZVRyaWFuZ2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI3MTUsNyArMjcwMSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNFeHBh
bmRlZCgpIGMKICAgICAvLyBTdW1tYXJ5IGVsZW1lbnQgc2hvdWxkIHVzZSBpdHMgZGV0YWlscyBw
YXJlbnQncyBleHBhbmRlZCBzdGF0dXMuCiAgICAgaWYgKGlzU3VtbWFyeSgpKSB7CiAgICAgICAg
IGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCBmYWxzZSwgW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCkgewotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9
PSBEZXRhaWxzUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM7CiAgICAgICAgIH0pKQogICAgICAgICAgICAgcmV0
dXJuIHBhcmVudC0+aXNFeHBhbmRlZCgpOwogICAgIH0KQEAgLTI3MjYsMTEgKzI3MTIsMTEgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0V4cGFuZGVkKCkgYwogYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c0NoZWNrZWQoKSBjb25zdAogewogICAgIHN3aXRjaCAocm9sZVZh
bHVlKCkpIHsKLSAgICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2ti
b3hSb2xlOgotICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBSYWRpb0J1dHRv
blJvbGU6Ci0gICAgY2FzZSBTd2l0Y2hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkNoZWNrQm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTd2l0Y2g6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI3NDYsMjcgKzI3MzIsMjcgQEAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0
YXRlIEFjY2Vzc2liaWxpdHlPYgogICAgIGlmIChpc1RvZ2dsZUJ1dHRvbigpKSB7CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYVByZXNzZWQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9wcmVz
c2VkQXR0cik7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlh
UHJlc3NlZCwgInRydWUiKSkKLSAgICAgICAgICAgIHJldHVybiBCdXR0b25TdGF0ZU9uOworICAg
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T247CiAgICAgICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhUHJlc3NlZCwgIm1peGVkIikpCi0g
ICAgICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVNaXhlZDsKLSAgICAgICAgcmV0dXJuIEJ1dHRv
blN0YXRlT2ZmOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6
TWl4ZWQ7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjsKICAg
ICB9CiAgICAgCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZXN1bHQgPSBnZXRBdHRyaWJ1dGUo
YXJpYV9jaGVja2VkQXR0cik7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHJlc3VsdCwgInRydWUiKSkKLSAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT247CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9uOwogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN1bHQsICJtaXhlZCIpKSB7CiAgICAgICAgIC8vIEFSSUEg
c2F5cyB0aGF0IHJhZGlvLCBtZW51aXRlbXJhZGlvLCBhbmQgc3dpdGNoIGVsZW1lbnRzIG11c3Qg
Tk9UIGV4cG9zZSBidXR0b24gc3RhdGUgbWl4ZWQuCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xl
IGFyaWFSb2xlID0gYXJpYVJvbGVBdHRyaWJ1dGUoKTsKLSAgICAgICAgaWYgKGFyaWFSb2xlID09
IFJhZGlvQnV0dG9uUm9sZSB8fCBhcmlhUm9sZSA9PSBNZW51SXRlbVJhZGlvUm9sZSB8fCBhcmlh
Um9sZSA9PSBTd2l0Y2hSb2xlKQotICAgICAgICAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOwot
ICAgICAgICByZXR1cm4gQnV0dG9uU3RhdGVNaXhlZDsKKyAgICAgICAgaWYgKGFyaWFSb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbiB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6TWVudUl0ZW1SYWRpbyB8fCBhcmlhUm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3dpdGNoKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2Zm
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpNaXhlZDsKICAgICB9
CiAgICAgCiAgICAgaWYgKGlzSW5kZXRlcm1pbmF0ZSgpKQotICAgICAgICByZXR1cm4gQnV0dG9u
U3RhdGVNaXhlZDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4
ZWQ7CiAgICAgCi0gICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjsKIH0KIAogLy8gVGhpcyBpcyBhIDEtZGltZW5zaW9uYWwg
c2Nyb2xsIG9mZnNldCBoZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGFwcGxpZWQKQEAgLTMwNjUsMzQg
KzMwNTEsMzIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxCeVBhZ2UoUwogICAg
IEludFNpemUgc2Nyb2xsU2l6ZSA9IHNjcm9sbGFibGVBcmVhLT5jb250ZW50c1NpemUoKTsKICAg
ICBJbnRSZWN0IHNjcm9sbFZpc2libGVSZWN0ID0gc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVDb250
ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7CiAg
ICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIFJpZ2h0OiB7CisgICAgY2FzZSBTY3Jv
bGxCeVBhZ2VEaXJlY3Rpb246OlJpZ2h0OiB7CiAgICAgICAgIGludCBzY3JvbGxBbW91bnQgPSBz
Y3JvbGxWaXNpYmxlUmVjdC5zaXplKCkud2lkdGgoKTsKICAgICAgICAgaW50IG5ld1ggPSBzY3Jv
bGxQb3NpdGlvbi54KCkgLSBzY3JvbGxBbW91bnQ7CiAgICAgICAgIG5ld1Njcm9sbFBvc2l0aW9u
LnNldFgoc3RkOjptYXgobmV3WCwgMCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fz
ZSBMZWZ0OiB7CisgICAgY2FzZSBTY3JvbGxCeVBhZ2VEaXJlY3Rpb246OkxlZnQ6IHsKICAgICAg
ICAgaW50IHNjcm9sbEFtb3VudCA9IHNjcm9sbFZpc2libGVSZWN0LnNpemUoKS53aWR0aCgpOwog
ICAgICAgICBpbnQgbmV3WCA9IHNjcm9sbEFtb3VudCArIHNjcm9sbFBvc2l0aW9uLngoKTsKICAg
ICAgICAgaW50IG1heFggPSBzY3JvbGxTaXplLndpZHRoKCkgLSBzY3JvbGxBbW91bnQ7CiAgICAg
ICAgIG5ld1Njcm9sbFBvc2l0aW9uLnNldFgoc3RkOjptaW4obmV3WCwgbWF4WCkpOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBVcDogeworICAgIGNhc2UgU2Nyb2xsQnlQYWdlRGly
ZWN0aW9uOjpVcDogewogICAgICAgICBpbnQgc2Nyb2xsQW1vdW50ID0gc2Nyb2xsVmlzaWJsZVJl
Y3Quc2l6ZSgpLmhlaWdodCgpOwogICAgICAgICBpbnQgbmV3WSA9IHNjcm9sbFBvc2l0aW9uLnko
KSAtIHNjcm9sbEFtb3VudDsKICAgICAgICAgbmV3U2Nyb2xsUG9zaXRpb24uc2V0WShzdGQ6Om1h
eChuZXdZLCAwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIERvd246IHsKKyAg
ICBjYXNlIFNjcm9sbEJ5UGFnZURpcmVjdGlvbjo6RG93bjogewogICAgICAgICBpbnQgc2Nyb2xs
QW1vdW50ID0gc2Nyb2xsVmlzaWJsZVJlY3Quc2l6ZSgpLmhlaWdodCgpOwogICAgICAgICBpbnQg
bmV3WSA9IHNjcm9sbEFtb3VudCArIHNjcm9sbFBvc2l0aW9uLnkoKTsKICAgICAgICAgaW50IG1h
eFkgPSBzY3JvbGxTaXplLmhlaWdodCgpIC0gc2Nyb2xsQW1vdW50OwogICAgICAgICBuZXdTY3Jv
bGxQb3NpdGlvbi5zZXRZKHN0ZDo6bWluKG5ld1ksIG1heFkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBpZiAo
bmV3U2Nyb2xsUG9zaXRpb24gIT0gc2Nyb2xsUG9zaXRpb24pIHsKQEAgLTMxMDcsMTUgKzMwOTEs
MTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxCeVBhZ2UoUwogCiBib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RLbm93bklzSWdub3JlZFZhbHVlKCkKIHsKLSAgICBpZiAo
bV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9PSBEZWZhdWx0QmVoYXZpb3IpCi0gICAgICAgIG1f
bGFzdEtub3duSXNJZ25vcmVkVmFsdWUgPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgPyBJZ25v
cmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworICAgIGlmIChtX2xhc3RLbm93bklzSWdub3JlZFZh
bHVlID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlvcikKKyAg
ICAgICAgbV9sYXN0S25vd25Jc0lnbm9yZWRWYWx1ZSA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSA/IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3Q7CiAKLSAgICByZXR1cm4gbV9sYXN0
S25vd25Jc0lnbm9yZWRWYWx1ZSA9PSBJZ25vcmVPYmplY3Q7CisgICAgcmV0dXJuIG1fbGFzdEtu
b3duSXNJZ25vcmVkVmFsdWUgPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RLbm93bklzSWdu
b3JlZFZhbHVlKGJvb2wgaXNJZ25vcmVkKQogewotICAgIG1fbGFzdEtub3duSXNJZ25vcmVkVmFs
dWUgPSBpc0lnbm9yZWQgPyBJZ25vcmVPYmplY3QgOiBJbmNsdWRlT2JqZWN0OworICAgIG1fbGFz
dEtub3duSXNJZ25vcmVkVmFsdWUgPSBpc0lnbm9yZWQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uOjpJZ25vcmVPYmplY3QgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNs
dWRlT2JqZWN0OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdub3Jl
ZFZhbHVlQ2hhbmdlZCgpCkBAIC0zMTUxLDI1ICszMTM1LDI1IEBAIEFjY2Vzc2liaWxpdHlSb2xl
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmIKICAgICAvLyBJZiBhcmlhLXByZXNzZWQgaXMgcHJlc2Vu
dCwgdGhlbiBpdCBzaG91bGQgYmUgZXhwb3NlZCBhcyBhIHRvZ2dsZSBidXR0b24uCiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvc3RhdGVzX2FuZF9wcm9wZXJ0aWVzI2FyaWEt
cHJlc3NlZAogICAgIGlmIChhcmlhUHJlc3NlZElzUHJlc2VudCgpKQotICAgICAgICByZXR1cm4g
VG9nZ2xlQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dn
bGVCdXR0b247CiAgICAgaWYgKGFyaWFIYXNQb3B1cCgpKQotICAgICAgICByZXR1cm4gUG9wVXBC
dXR0b25Sb2xlOwotICAgIC8vIFdlIGRvbid0IGNvbnRlbXBsYXRlIFJhZGlvQnV0dG9uUm9sZSwg
YXMgaXQgZGVwZW5kcyBvbiB0aGUgaW5wdXQKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpQb3BVcEJ1dHRvbjsKKyAgICAvLyBXZSBkb24ndCBjb250ZW1wbGF0ZSBBY2Nlc3NpYmls
aXR5Um9sZTo6UmFkaW9CdXR0b24sIGFzIGl0IGRlcGVuZHMgb24gdGhlIGlucHV0CiAgICAgLy8g
dHlwZS4KIAotICAgIHJldHVybiBCdXR0b25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6QnV0dG9uOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQnV0dG9uKCkg
Y29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9sZVZhbHVlKCk7CiAKLSAg
ICByZXR1cm4gcm9sZSA9PSBCdXR0b25Sb2xlIHx8IHJvbGUgPT0gUG9wVXBCdXR0b25Sb2xlIHx8
IHJvbGUgPT0gVG9nZ2xlQnV0dG9uUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6QnV0dG9uIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
IHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjsKIH0KIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpID09IElnbm9yZU9iamVj
dDsKKyAgICByZXR1cm4gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpID09IEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKIH0KIAogLy8gQVJJQSBjb21wb25lbnQgb2Yg
aGlkZGVuIGRlZmluaXRpb24uCkBAIC0zMjEyLDEzICszMTk2LDEzIEBAIEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGkKICAgICBib29sIHVzZVBhcmVudERhdGEgPSAhbV9p
c0lnbm9yZWRGcm9tUGFyZW50RGF0YS5pc051bGwoKTsKICAgICAKICAgICBpZiAodXNlUGFyZW50
RGF0YSA/IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEuaXNBUklBSGlkZGVuIDogaXNBUklBSGlk
ZGVuKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAgCiAgICAgaWYgKGln
bm9yZWRGcm9tQVJJQU1vZGFsUHJlc2VuY2UoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVj
dDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9i
amVjdDsKICAgICAKICAgICBpZiAodXNlUGFyZW50RGF0YSA/IG1faXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEuaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSA6IGlzUHJlc2VudGF0aW9uYWxD
aGlsZE9mQXJpYVJvbGUoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAK
ICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKTsKIH0KQEAg
LTMyMzMsMTEgKzMyMTcsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5SQogICAgIGlmIChhdHRyaWJ1dGVDYWNoZSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGlnbm9yZWQgPSBhdHRyaWJ1dGVDYWNoZS0+Z2V0SWdub3JlZChheE9iamVj
dElEKCkpOwogICAgICAgICBzd2l0Y2ggKGlnbm9yZWQpIHsKLSAgICAgICAgY2FzZSBJZ25vcmVP
YmplY3Q6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgSW5jbHVkZU9i
amVjdDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRl
T2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIERlZmF1bHRC
ZWhhdmlvcjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZh
dWx0QmVoYXZpb3I6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTMy
NDYsNyArMzIzMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUkK
IAogICAgIC8vIEluIGNhc2UgY29tcHV0aW5nIGF4SXNJZ25vcmVkIGRpc2FibGVzIGF0dHJpYnV0
ZSBjYWNoaW5nLCB3ZSBzaG91bGQgcmVmZXRjaCB0aGUgb2JqZWN0IHRvIHNlZSBpZiBpdCBleGlz
dHMuCiAgICAgaWYgKGNhY2hlICYmIChhdHRyaWJ1dGVDYWNoZSA9IGNhY2hlLT5jb21wdXRlZE9i
amVjdEF0dHJpYnV0ZUNhY2hlKCkpKQotICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3Jl
ZChheE9iamVjdElEKCksIHJlc3VsdCA/IElnbm9yZU9iamVjdCA6IEluY2x1ZGVPYmplY3QpOwor
ICAgICAgICBhdHRyaWJ1dGVDYWNoZS0+c2V0SWdub3JlZChheE9iamVjdElEKCksIHJlc3VsdCA/
IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdCA6IEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTMzNjksNyArMzM1Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNDb250
YWluZWRCeVAKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IG5vZGUtPnNoYWRvd0hvc3QoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTg3ICs5Miwx
ODcgQEAgY2xhc3MgV2lkZ2V0OwogCiB0eXBlZGVmIHVuc2lnbmVkIEFYSUQ7CiAKLWVudW0gQWNj
ZXNzaWJpbGl0eVJvbGUgewotICAgIEFubm90YXRpb25Sb2xlID0gMSwKLSAgICBBcHBsaWNhdGlv
blJvbGUsCi0gICAgQXBwbGljYXRpb25BbGVydFJvbGUsCi0gICAgQXBwbGljYXRpb25BbGVydERp
YWxvZ1JvbGUsCi0gICAgQXBwbGljYXRpb25EaWFsb2dSb2xlLAotICAgIEFwcGxpY2F0aW9uR3Jv
dXBSb2xlLAotICAgIEFwcGxpY2F0aW9uTG9nUm9sZSwKLSAgICBBcHBsaWNhdGlvbk1hcnF1ZWVS
b2xlLAotICAgIEFwcGxpY2F0aW9uU3RhdHVzUm9sZSwKLSAgICBBcHBsaWNhdGlvblRleHRHcm91
cFJvbGUsCi0gICAgQXBwbGljYXRpb25UaW1lclJvbGUsCi0gICAgQXVkaW9Sb2xlLAotICAgIEJs
b2NrcXVvdGVSb2xlLAotICAgIEJyb3dzZXJSb2xlLAotICAgIEJ1c3lJbmRpY2F0b3JSb2xlLAot
ICAgIEJ1dHRvblJvbGUsCi0gICAgQ2FudmFzUm9sZSwKLSAgICBDYXB0aW9uUm9sZSwKLSAgICBD
ZWxsUm9sZSwgCi0gICAgQ2hlY2tCb3hSb2xlLAotICAgIENvbG9yV2VsbFJvbGUsCi0gICAgQ29s
dW1uUm9sZSwKLSAgICBDb2x1bW5IZWFkZXJSb2xlLAotICAgIENvbWJvQm94Um9sZSwKLSAgICBE
ZWZpbml0aW9uUm9sZSwKLSAgICBEZXNjcmlwdGlvbkxpc3RSb2xlLAotICAgIERlc2NyaXB0aW9u
TGlzdFRlcm1Sb2xlLAotICAgIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGUsCi0gICAgRGV0YWls
c1JvbGUsCi0gICAgRGlyZWN0b3J5Um9sZSwKLSAgICBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLAot
ICAgIERpdlJvbGUsCi0gICAgRG9jdW1lbnRSb2xlLAotICAgIERvY3VtZW50QXJ0aWNsZVJvbGUs
Ci0gICAgRG9jdW1lbnRNYXRoUm9sZSwKLSAgICBEb2N1bWVudE5vdGVSb2xlLAotICAgIERyYXdl
clJvbGUsCi0gICAgRWRpdGFibGVUZXh0Um9sZSwKLSAgICBGZWVkUm9sZSwKLSAgICBGaWd1cmVS
b2xlLAotICAgIEZvb3RlclJvbGUsCi0gICAgRm9vdG5vdGVSb2xlLAotICAgIEZvcm1Sb2xlLAot
ICAgIEdyaWRSb2xlLAotICAgIEdyaWRDZWxsUm9sZSwKLSAgICBHcm91cFJvbGUsCi0gICAgR3Jv
d0FyZWFSb2xlLAotICAgIEhlYWRpbmdSb2xlLAotICAgIEhlbHBUYWdSb2xlLAotICAgIEhvcml6
b250YWxSdWxlUm9sZSwKLSAgICBJZ25vcmVkUm9sZSwKLSAgICBJbmxpbmVSb2xlLAotICAgIElt
YWdlUm9sZSwKLSAgICBJbWFnZU1hcFJvbGUsCi0gICAgSW1hZ2VNYXBMaW5rUm9sZSwKLSAgICBJ
bmNyZW1lbnRvclJvbGUsCi0gICAgTGFiZWxSb2xlLAotICAgIExhbmRtYXJrQmFubmVyUm9sZSwK
LSAgICBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlLAotICAgIExhbmRtYXJrQ29udGVudEluZm9S
b2xlLAotICAgIExhbmRtYXJrRG9jUmVnaW9uUm9sZSwKLSAgICBMYW5kbWFya01haW5Sb2xlLAot
ICAgIExhbmRtYXJrTmF2aWdhdGlvblJvbGUsCi0gICAgTGFuZG1hcmtSZWdpb25Sb2xlLAotICAg
IExhbmRtYXJrU2VhcmNoUm9sZSwKLSAgICBMZWdlbmRSb2xlLAotICAgIExpbmtSb2xlLAotICAg
IExpc3RSb2xlLAotICAgIExpc3RCb3hSb2xlLAotICAgIExpc3RCb3hPcHRpb25Sb2xlLAotICAg
IExpc3RJdGVtUm9sZSwKLSAgICBMaXN0TWFya2VyUm9sZSwKLSAgICBNYXJrUm9sZSwKLSAgICBN
YXRoRWxlbWVudFJvbGUsCi0gICAgTWF0dGVSb2xlLAotICAgIE1lbnVSb2xlLAotICAgIE1lbnVC
YXJSb2xlLAotICAgIE1lbnVCdXR0b25Sb2xlLAotICAgIE1lbnVJdGVtUm9sZSwKLSAgICBNZW51
SXRlbUNoZWNrYm94Um9sZSwKLSAgICBNZW51SXRlbVJhZGlvUm9sZSwKLSAgICBNZW51TGlzdFBv
cHVwUm9sZSwKLSAgICBNZW51TGlzdE9wdGlvblJvbGUsCi0gICAgT3V0bGluZVJvbGUsCi0gICAg
UGFyYWdyYXBoUm9sZSwKLSAgICBQb3BVcEJ1dHRvblJvbGUsCi0gICAgUHJlUm9sZSwKLSAgICBQ
cmVzZW50YXRpb25hbFJvbGUsCi0gICAgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlLAotICAgIFJhZGlv
QnV0dG9uUm9sZSwKLSAgICBSYWRpb0dyb3VwUm9sZSwKLSAgICBSb3dIZWFkZXJSb2xlLAotICAg
IFJvd1JvbGUsCi0gICAgUm93R3JvdXBSb2xlLAotICAgIFJ1YnlCYXNlUm9sZSwKLSAgICBSdWJ5
QmxvY2tSb2xlLAotICAgIFJ1YnlJbmxpbmVSb2xlLAotICAgIFJ1YnlSdW5Sb2xlLAotICAgIFJ1
YnlUZXh0Um9sZSwKLSAgICBSdWxlclJvbGUsCi0gICAgUnVsZXJNYXJrZXJSb2xlLAotICAgIFNj
cm9sbEFyZWFSb2xlLAotICAgIFNjcm9sbEJhclJvbGUsCi0gICAgU2VhcmNoRmllbGRSb2xlLAot
ICAgIFNoZWV0Um9sZSwKLSAgICBTbGlkZXJSb2xlLAotICAgIFNsaWRlclRodW1iUm9sZSwKLSAg
ICBTcGluQnV0dG9uUm9sZSwKLSAgICBTcGluQnV0dG9uUGFydFJvbGUsCi0gICAgU3BsaXRHcm91
cFJvbGUsCi0gICAgU3BsaXR0ZXJSb2xlLAotICAgIFN0YXRpY1RleHRSb2xlLAotICAgIFN1bW1h
cnlSb2xlLAotICAgIFN3aXRjaFJvbGUsCi0gICAgU3lzdGVtV2lkZVJvbGUsCi0gICAgU1ZHUm9v
dFJvbGUsCi0gICAgU1ZHVGV4dFJvbGUsCi0gICAgU1ZHVFNwYW5Sb2xlLAotICAgIFNWR1RleHRQ
YXRoUm9sZSwKLSAgICBUYWJHcm91cFJvbGUsCi0gICAgVGFiTGlzdFJvbGUsCi0gICAgVGFiUGFu
ZWxSb2xlLCAgICAgICAgICAgIAotICAgIFRhYlJvbGUsCi0gICAgVGFibGVSb2xlLAotICAgIFRh
YmxlSGVhZGVyQ29udGFpbmVyUm9sZSwKLSAgICBUZXh0QXJlYVJvbGUsCi0gICAgVGV4dEdyb3Vw
Um9sZSwKLSAgICBUZXJtUm9sZSwKLSAgICBUaW1lUm9sZSwKLSAgICBUcmVlUm9sZSwKLSAgICBU
cmVlR3JpZFJvbGUsCi0gICAgVHJlZUl0ZW1Sb2xlLAotICAgIFRleHRGaWVsZFJvbGUsCi0gICAg
VG9nZ2xlQnV0dG9uUm9sZSwKLSAgICBUb29sYmFyUm9sZSwKLSAgICBVbmtub3duUm9sZSwKLSAg
ICBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGUsCi0gICAgVmFsdWVJbmRpY2F0b3JSb2xlLAotICAg
IFZpZGVvUm9sZSwKLSAgICBXZWJBcHBsaWNhdGlvblJvbGUsCi0gICAgV2ViQXJlYVJvbGUsCi0g
ICAgV2ViQ29yZUxpbmtSb2xlLAotICAgIFdpbmRvd1JvbGUsCitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlSb2xlIHsKKyAgICBBbm5vdGF0aW9uID0gMSwKKyAgICBBcHBsaWNhdGlvbiwKKyAgICBB
cHBsaWNhdGlvbkFsZXJ0LAorICAgIEFwcGxpY2F0aW9uQWxlcnREaWFsb2csCisgICAgQXBwbGlj
YXRpb25EaWFsb2csCisgICAgQXBwbGljYXRpb25Hcm91cCwKKyAgICBBcHBsaWNhdGlvbkxvZywK
KyAgICBBcHBsaWNhdGlvbk1hcnF1ZWUsCisgICAgQXBwbGljYXRpb25TdGF0dXMsCisgICAgQXBw
bGljYXRpb25UZXh0R3JvdXAsCisgICAgQXBwbGljYXRpb25UaW1lciwKKyAgICBBdWRpbywKKyAg
ICBCbG9ja3F1b3RlLAorICAgIEJyb3dzZXIsCisgICAgQnVzeUluZGljYXRvciwKKyAgICBCdXR0
b24sCisgICAgQ2FudmFzLAorICAgIENhcHRpb24sCisgICAgQ2VsbCwKKyAgICBDaGVja0JveCwK
KyAgICBDb2xvcldlbGwsCisgICAgQ29sdW1uLAorICAgIENvbHVtbkhlYWRlciwKKyAgICBDb21i
b0JveCwKKyAgICBEZWZpbml0aW9uLAorICAgIERlc2NyaXB0aW9uTGlzdCwKKyAgICBEZXNjcmlw
dGlvbkxpc3RUZXJtLAorICAgIERlc2NyaXB0aW9uTGlzdERldGFpbCwKKyAgICBEZXRhaWxzLAor
ICAgIERpcmVjdG9yeSwKKyAgICBEaXNjbG9zdXJlVHJpYW5nbGUsCisgICAgRGl2LAorICAgIERv
Y3VtZW50LAorICAgIERvY3VtZW50QXJ0aWNsZSwKKyAgICBEb2N1bWVudE1hdGgsCisgICAgRG9j
dW1lbnROb3RlLAorICAgIERyYXdlciwKKyAgICBFZGl0YWJsZVRleHQsCisgICAgRmVlZCwKKyAg
ICBGaWd1cmUsCisgICAgRm9vdGVyLAorICAgIEZvb3Rub3RlLAorICAgIEZvcm0sCisgICAgR3Jp
ZCwKKyAgICBHcmlkQ2VsbCwKKyAgICBHcm91cCwKKyAgICBHcm93QXJlYSwKKyAgICBIZWFkaW5n
LAorICAgIEhlbHBUYWcsCisgICAgSG9yaXpvbnRhbFJ1bGUsCisgICAgSWdub3JlZCwKKyAgICBJ
bmxpbmUsCisgICAgSW1hZ2UsCisgICAgSW1hZ2VNYXAsCisgICAgSW1hZ2VNYXBMaW5rLAorICAg
IEluY3JlbWVudG9yLAorICAgIExhYmVsLAorICAgIExhbmRtYXJrQmFubmVyLAorICAgIExhbmRt
YXJrQ29tcGxlbWVudGFyeSwKKyAgICBMYW5kbWFya0NvbnRlbnRJbmZvLAorICAgIExhbmRtYXJr
RG9jUmVnaW9uLAorICAgIExhbmRtYXJrTWFpbiwKKyAgICBMYW5kbWFya05hdmlnYXRpb24sCisg
ICAgTGFuZG1hcmtSZWdpb24sCisgICAgTGFuZG1hcmtTZWFyY2gsCisgICAgTGVnZW5kLAorICAg
IExpbmssCisgICAgTGlzdCwKKyAgICBMaXN0Qm94LAorICAgIExpc3RCb3hPcHRpb24sCisgICAg
TGlzdEl0ZW0sCisgICAgTGlzdE1hcmtlciwKKyAgICBNYXJrLAorICAgIE1hdGhFbGVtZW50LAor
ICAgIE1hdHRlLAorICAgIE1lbnUsCisgICAgTWVudUJhciwKKyAgICBNZW51QnV0dG9uLAorICAg
IE1lbnVJdGVtLAorICAgIE1lbnVJdGVtQ2hlY2tib3gsCisgICAgTWVudUl0ZW1SYWRpbywKKyAg
ICBNZW51TGlzdFBvcHVwLAorICAgIE1lbnVMaXN0T3B0aW9uLAorICAgIE91dGxpbmUsCisgICAg
UGFyYWdyYXBoLAorICAgIFBvcFVwQnV0dG9uLAorICAgIFByZSwKKyAgICBQcmVzZW50YXRpb25h
bCwKKyAgICBQcm9ncmVzc0luZGljYXRvciwKKyAgICBSYWRpb0J1dHRvbiwKKyAgICBSYWRpb0dy
b3VwLAorICAgIFJvd0hlYWRlciwKKyAgICBSb3csCisgICAgUm93R3JvdXAsCisgICAgUnVieUJh
c2UsCisgICAgUnVieUJsb2NrLAorICAgIFJ1YnlJbmxpbmUsCisgICAgUnVieVJ1biwKKyAgICBS
dWJ5VGV4dCwKKyAgICBSdWxlciwKKyAgICBSdWxlck1hcmtlciwKKyAgICBTY3JvbGxBcmVhLAor
ICAgIFNjcm9sbEJhciwKKyAgICBTZWFyY2hGaWVsZCwKKyAgICBTaGVldCwKKyAgICBTbGlkZXIs
CisgICAgU2xpZGVyVGh1bWIsCisgICAgU3BpbkJ1dHRvbiwKKyAgICBTcGluQnV0dG9uUGFydCwK
KyAgICBTcGxpdEdyb3VwLAorICAgIFNwbGl0dGVyLAorICAgIFN0YXRpY1RleHQsCisgICAgU3Vt
bWFyeSwKKyAgICBTd2l0Y2gsCisgICAgU3lzdGVtV2lkZSwKKyAgICBTVkdSb290LAorICAgIFNW
R1RleHQsCisgICAgU1ZHVFNwYW4sCisgICAgU1ZHVGV4dFBhdGgsCisgICAgVGFiR3JvdXAsCisg
ICAgVGFiTGlzdCwKKyAgICBUYWJQYW5lbCwKKyAgICBUYWIsCisgICAgVGFibGUsCisgICAgVGFi
bGVIZWFkZXJDb250YWluZXIsCisgICAgVGV4dEFyZWEsCisgICAgVGV4dEdyb3VwLAorICAgIFRl
cm0sCisgICAgVGltZSwKKyAgICBUcmVlLAorICAgIFRyZWVHcmlkLAorICAgIFRyZWVJdGVtLAor
ICAgIFRleHRGaWVsZCwKKyAgICBUb2dnbGVCdXR0b24sCisgICAgVG9vbGJhciwKKyAgICBVbmtu
b3duLAorICAgIFVzZXJJbnRlcmZhY2VUb29sdGlwLAorICAgIFZhbHVlSW5kaWNhdG9yLAorICAg
IFZpZGVvLAorICAgIFdlYkFwcGxpY2F0aW9uLAorICAgIFdlYkFyZWEsCisgICAgV2ViQ29yZUxp
bmssCisgICAgV2luZG93LAogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB7Ci0g
ICAgQWx0ZXJuYXRpdmVUZXh0LAotICAgIENoaWxkcmVuVGV4dCwKLSAgICBTdW1tYXJ5VGV4dCwK
LSAgICBIZWxwVGV4dCwKLSAgICBWaXNpYmxlVGV4dCwKLSAgICBUaXRsZVRhZ1RleHQsCi0gICAg
UGxhY2Vob2xkZXJUZXh0LAotICAgIExhYmVsQnlFbGVtZW50VGV4dCwKLSAgICBUaXRsZVRleHQs
Ci0gICAgU3VidGl0bGVUZXh0LAotICAgIEFjdGlvblRleHQsCitlbnVtIGNsYXNzIEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlIHsKKyAgICBBbHRlcm5hdGl2ZSwKKyAgICBDaGlsZHJlbiwKKyAgICBT
dW1tYXJ5LAorICAgIEhlbHAsCisgICAgVmlzaWJsZSwKKyAgICBUaXRsZVRhZywKKyAgICBQbGFj
ZWhvbGRlciwKKyAgICBMYWJlbEJ5RWxlbWVudCwKKyAgICBUaXRsZSwKKyAgICBTdWJ0aXRsZSwK
KyAgICBBY3Rpb24sCiB9OwogICAgIAogc3RydWN0IEFjY2Vzc2liaWxpdHlUZXh0IHsKICAgICBT
dHJpbmcgdGV4dDsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSB0ZXh0U291cmNlOwotICAg
IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IHRleHRFbGVtZW50czsKKyAgICBW
ZWN0b3I8UmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiB0ZXh0RWxlbWVudHM7CiAgICAgCiAgICAg
QWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZSYgcykKLSAgICA6IHRleHQodCkKLSAgICAsIHRleHRTb3VyY2UocykKKyAgICAgICAg
OiB0ZXh0KHQpCisgICAgICAgICwgdGV4dFNvdXJjZShzKQogICAgIHsgfQogCi0gICAgQWNjZXNz
aWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJj
ZSYgcywgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gZWxlbWVudHMpCi0gICAg
OiB0ZXh0KHQpCi0gICAgLCB0ZXh0U291cmNlKHMpCi0gICAgLCB0ZXh0RWxlbWVudHMoV1RGTW92
ZShlbGVtZW50cykpCisgICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25z
dCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSYgcywgVmVjdG9yPFJlZjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Pj4gZWxlbWVudHMpCisgICAgICAgIDogdGV4dCh0KQorICAgICAgICAsIHRleHRTb3VyY2Uo
cykKKyAgICAgICAgLCB0ZXh0RWxlbWVudHMoV1RGTW92ZShlbGVtZW50cykpCiAgICAgeyB9CiAK
LSAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxp
dHlUZXh0U291cmNlJiBzLCBjb25zdCBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gZWxlbWVu
dCkKLSAgICA6IHRleHQodCkKLSAgICAsIHRleHRTb3VyY2UocykKKyAgICBBY2Nlc3NpYmlsaXR5
VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlJiBzLCBS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mJiBlbGVtZW50KQorICAgICAgICA6IHRleHQodCkKKyAg
ICAgICAgLCB0ZXh0U291cmNlKHMpCiAgICAgewotICAgICAgICB0ZXh0RWxlbWVudHMuYXBwZW5k
KGVsZW1lbnQpOworICAgICAgICB0ZXh0RWxlbWVudHMuYXBwZW5kKFdURk1vdmUoZWxlbWVudCkp
OwogICAgIH0KIH07CiAKQEAgLTI5Nyw5OCArMjk3LDk1IEBAIHN0cnVjdCBBY2Nlc3NpYmlsaXR5
VGV4dFVuZGVyRWxlbWVudE1vZGUKIC8vIFVzZSB0aGlzIHN0cnVjdCB0byBzdG9yZSB0aGUgaXNJ
Z25vcmVkIGRhdGEgdGhhdCBkZXBlbmRzIG9uIHRoZSBwYXJlbnRzLCBzbyB0aGF0IGluIGFkZENo
aWxkcmVuKCkKIC8vIHdlIGF2b2lkIGdvaW5nIHVwIHRoZSBwYXJlbnQgY2hhaW4gZm9yIGVhY2gg
ZWxlbWVudCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSB0cmVlIHdpdGggdXNlZnVsIGluZm9ybWF0aW9u
IGFscmVhZHkuCiBzdHJ1Y3QgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhIHsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQ7Ci0gICAgYm9vbCBpc0FSSUFIaWRkZW47
Ci0gICAgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlOwotICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQ7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
IHsgbnVsbHB0ciB9OworICAgIGJvb2wgaXNBUklBSGlkZGVuIHsgZmFsc2UgfTsKKyAgICBib29s
IGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUgeyBmYWxzZSB9OworICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQgeyBmYWxzZSB9OwogICAgIAogICAgIEFjY2Vzc2liaWxp
dHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBu
dWxscHRyKQogICAgICAgICA6IHBhcmVudChwYXJlbnQpCi0gICAgICAgICwgaXNBUklBSGlkZGVu
KGZhbHNlKQotICAgICAgICAsIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoZmFsc2Up
Ci0gICAgICAgICwgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoZmFsc2UpCi0gICAgICAgIHsg
fQotICAgIAorICAgIHsgfQorCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhcGFy
ZW50OyB9CiB9OwogICAgIAotZW51bSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gewotICAgIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsLAotICAgIEFjY2Vzc2liaWxpdHlPcmllbnRh
dGlvbkhvcml6b250YWwsCi0gICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVkLAor
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24geworICAgIFZlcnRpY2FsLAorICAg
IEhvcml6b250YWwsCisgICAgVW5kZWZpbmVkLAogfTsKICAgICAKLWVudW0gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiB7CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b24gewogICAgIEluY2x1ZGVPYmplY3QsCiAgICAgSWdub3JlT2JqZWN0LAogICAgIERlZmF1bHRC
ZWhhdmlvciwKIH07CiAgICAgCi1lbnVtIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7Ci0gICAg
QnV0dG9uU3RhdGVPZmYgPSAwLAotICAgIEJ1dHRvblN0YXRlT24sIAotICAgIEJ1dHRvblN0YXRl
TWl4ZWQsCitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSB7CisgICAgT2ZmID0g
MCwKKyAgICBPbiwKKyAgICBNaXhlZCwKIH07CiAgICAgCi1lbnVtIEFjY2Vzc2liaWxpdHlTb3J0
RGlyZWN0aW9uIHsKLSAgICBTb3J0RGlyZWN0aW9uTm9uZSwKLSAgICBTb3J0RGlyZWN0aW9uQXNj
ZW5kaW5nLAotICAgIFNvcnREaXJlY3Rpb25EZXNjZW5kaW5nLAotICAgIFNvcnREaXJlY3Rpb25P
dGhlciwKLSAgICBTb3J0RGlyZWN0aW9uSW52YWxpZAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
U29ydERpcmVjdGlvbiB7CisgICAgTm9uZSwKKyAgICBBc2NlbmRpbmcsCisgICAgRGVzY2VuZGlu
ZywKKyAgICBPdGhlciwKKyAgICBJbnZhbGlkLAogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5U2Vh
cmNoRGlyZWN0aW9uIHsKLSAgICBTZWFyY2hEaXJlY3Rpb25OZXh0ID0gMSwKLSAgICBTZWFyY2hE
aXJlY3Rpb25QcmV2aW91cworZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9u
IHsKKyAgICBOZXh0ID0gMSwKKyAgICBQcmV2aW91cywKIH07CiAKLWVudW0gQWNjZXNzaWJpbGl0
eVNlYXJjaEtleSB7Ci0gICAgQW55VHlwZVNlYXJjaEtleSA9IDEsCi0gICAgQXJ0aWNsZVNlYXJj
aEtleSwKLSAgICBCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LAotICAgIEJsb2NrcXVvdGVT
ZWFyY2hLZXksCi0gICAgQm9sZEZvbnRTZWFyY2hLZXksCi0gICAgQnV0dG9uU2VhcmNoS2V5LAot
ICAgIENoZWNrQm94U2VhcmNoS2V5LAotICAgIENvbnRyb2xTZWFyY2hLZXksCi0gICAgRGlmZmVy
ZW50VHlwZVNlYXJjaEtleSwKLSAgICBGb250Q2hhbmdlU2VhcmNoS2V5LAotICAgIEZvbnRDb2xv
ckNoYW5nZVNlYXJjaEtleSwKLSAgICBGcmFtZVNlYXJjaEtleSwKLSAgICBHcmFwaGljU2VhcmNo
S2V5LAotICAgIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXksCi0gICAgSGVhZGluZ0xldmVsMlNlYXJj
aEtleSwKLSAgICBIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5LAotICAgIEhlYWRpbmdMZXZlbDRTZWFy
Y2hLZXksCi0gICAgSGVhZGluZ0xldmVsNVNlYXJjaEtleSwKLSAgICBIZWFkaW5nTGV2ZWw2U2Vh
cmNoS2V5LAotICAgIEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXksCi0gICAgSGVhZGluZ1NlYXJj
aEtleSwKLSAgICBIaWdobGlnaHRlZFNlYXJjaEtleSwKLSAgICBJdGFsaWNGb250U2VhcmNoS2V5
LAotICAgIExhbmRtYXJrU2VhcmNoS2V5LAotICAgIExpbmtTZWFyY2hLZXksCi0gICAgTGlzdFNl
YXJjaEtleSwKLSAgICBMaXZlUmVnaW9uU2VhcmNoS2V5LAotICAgIE1pc3NwZWxsZWRXb3JkU2Vh
cmNoS2V5LAotICAgIE91dGxpbmVTZWFyY2hLZXksCi0gICAgUGxhaW5UZXh0U2VhcmNoS2V5LAot
ICAgIFJhZGlvR3JvdXBTZWFyY2hLZXksCi0gICAgU2FtZVR5cGVTZWFyY2hLZXksCi0gICAgU3Rh
dGljVGV4dFNlYXJjaEtleSwKLSAgICBTdHlsZUNoYW5nZVNlYXJjaEtleSwKLSAgICBUYWJsZVNh
bWVMZXZlbFNlYXJjaEtleSwKLSAgICBUYWJsZVNlYXJjaEtleSwKLSAgICBUZXh0RmllbGRTZWFy
Y2hLZXksCi0gICAgVW5kZXJsaW5lU2VhcmNoS2V5LAotICAgIFVudmlzaXRlZExpbmtTZWFyY2hL
ZXksCi0gICAgVmlzaXRlZExpbmtTZWFyY2hLZXkKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleSB7CisgICAgQW55VHlwZSA9IDEsCisgICAgQXJ0aWNsZSwKKyAgICBCbG9ja3F1b3Rl
U2FtZUxldmVsLAorICAgIEJsb2NrcXVvdGUsCisgICAgQm9sZEZvbnQsCisgICAgQnV0dG9uLAor
ICAgIENoZWNrQm94LAorICAgIENvbnRyb2wsCisgICAgRGlmZmVyZW50VHlwZSwKKyAgICBGb250
Q2hhbmdlLAorICAgIEZvbnRDb2xvckNoYW5nZSwKKyAgICBGcmFtZSwKKyAgICBHcmFwaGljLAor
ICAgIEhlYWRpbmdMZXZlbDEsCisgICAgSGVhZGluZ0xldmVsMiwKKyAgICBIZWFkaW5nTGV2ZWwz
LAorICAgIEhlYWRpbmdMZXZlbDQsCisgICAgSGVhZGluZ0xldmVsNSwKKyAgICBIZWFkaW5nTGV2
ZWw2LAorICAgIEhlYWRpbmdTYW1lTGV2ZWwsCisgICAgSGVhZGluZywKKyAgICBIaWdobGlnaHRl
ZCwKKyAgICBJdGFsaWNGb250LAorICAgIExhbmRtYXJrLAorICAgIExpbmssCisgICAgTGlzdCwK
KyAgICBMaXZlUmVnaW9uLAorICAgIE1pc3NwZWxsZWRXb3JkLAorICAgIE91dGxpbmUsCisgICAg
UGxhaW5UZXh0LAorICAgIFJhZGlvR3JvdXAsCisgICAgU2FtZVR5cGUsCisgICAgU3RhdGljVGV4
dCwKKyAgICBTdHlsZUNoYW5nZSwKKyAgICBUYWJsZVNhbWVMZXZlbCwKKyAgICBUYWJsZSwKKyAg
ICBUZXh0RmllbGQsCisgICAgVW5kZXJsaW5lLAorICAgIFVudmlzaXRlZExpbmssCisgICAgVmlz
aXRlZExpbmssCiB9OwogCi1lbnVtIEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9zaXRpb25Gb3JCb3Vu
ZHMgewotICAgIEZpcnN0VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzLAotICAgIExhc3RWaXNpYmxl
UG9zaXRpb25Gb3JCb3VuZHMKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlv
bkZvckJvdW5kcyB7CisgICAgRmlyc3QsCisgICAgTGFzdCwKIH07CiAKIHN0cnVjdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgewpAQCAtNDEwLDcgKzQwNyw3IEBAIHN0cnVjdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWEgewogICAgIHsgfQogfTsKICAgICAKLWVudW0gQWNjZXNzaWJp
bGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQsIEVsZW1lbnREZXN0cm95ZWQgfTsK
K2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIHsgQ2FjaGVEZXN0cm95ZWQs
IEVsZW1lbnREZXN0cm95ZWQgfTsKIAogc3RydWN0IFZpc2libGVQb3NpdGlvblJhbmdlIHsKIApA
QCAtNDUwLDE4ICs0NDcsMTggQEAgc3RydWN0IFBsYWluVGV4dFJhbmdlIHsKICAgICBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFzdGFydCAmJiAhbGVuZ3RoOyB9CiB9OwogCi1lbnVtIEFj
Y2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHkgewotICAgIEZpbmRBbmRSZXBsYWNlQWN0aXZp
dHksCi0gICAgRmluZEFuZFNlbGVjdEFjdGl2aXR5LAorZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5
U2VsZWN0VGV4dEFjdGl2aXR5IHsKKyAgICBGaW5kQW5kUmVwbGFjZSwKKyAgICBGaW5kQW5kU2Vs
ZWN0LAogICAgIEZpbmRBbmRDYXBpdGFsaXplLAogICAgIEZpbmRBbmRMb3dlcmNhc2UsCiAgICAg
RmluZEFuZFVwcGVyY2FzZQogfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmln
dWl0eVJlc29sdXRpb24gewotICAgIENsb3Nlc3RBZnRlclNlbGVjdGlvbkFtYmlndWl0eVJlc29s
dXRpb24sCi0gICAgQ2xvc2VzdEJlZm9yZVNlbGVjdGlvbkFtYmlndWl0eVJlc29sdXRpb24sCi0g
ICAgQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1aXR5UmVzb2x1dGlvbgorZW51bSBjbGFzcyBBY2Nl
c3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb24geworICAgIENsb3Nlc3RBZnRl
ciwKKyAgICBDbG9zZXN0QmVmb3JlLAorICAgIENsb3Nlc3RUbwogfTsKIAogc3RydWN0IEFjY2Vz
c2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgewpAQCAtNDc3LDE2ICs0NzQsMTYgQEAgc3RydWN0
IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgewogICAgIHsgfQogfTsKIAotZW51bSBB
Y2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUgeyBTdWJzY3JpcHQsIFN1cGVyc2NyaXB0
IH07Ci1lbnVtIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlIHsgUHJlU3Vi
c2NyaXB0LCBQcmVTdXBlcnNjcmlwdCwgUG9zdFN1YnNjcmlwdCwgUG9zdFN1cGVyc2NyaXB0IH07
CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1YnNjcmlw
dCwgU3VwZXJzY3JpcHQgfTsKK2VudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vic2NyaXB0
LCBQb3N0U3VwZXJzY3JpcHQgfTsKIAotZW51bSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0
ZSB7IEFSSUFDdXJyZW50RmFsc2UsIEFSSUFDdXJyZW50VHJ1ZSwgQVJJQUN1cnJlbnRQYWdlLCBB
UklBQ3VycmVudFN0ZXAsIEFSSUFDdXJyZW50TG9jYXRpb24sIEFSSUFDdXJyZW50RGF0ZSwgQVJJ
QUN1cnJlbnRUaW1lIH07CitlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRl
IHsgRmFsc2UsIFRydWUsIFBhZ2UsIFN0ZXAsIExvY2F0aW9uLCBEYXRlLCBUaW1lIH07CiAgICAg
CiBib29sIG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUqKTsKICAgICAKIGNsYXNzIEFjY2Vz
c2liaWxpdHlPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0PiB7
CiBwcm90ZWN0ZWQ6Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCgpOworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QoKSA9IGRlZmF1bHQ7CiAgICAgCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNz
aWJpbGl0eU9iamVjdCgpOwpAQCAtNTE3LDcgKzUxNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2VN
YXAoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBJbWFnZU1hcFJvbGU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2ZUlt
YWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dv
cmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC01MjUsMTEgKzUyMiwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXNzd29yZEZpZWxkT3JD
b250YWluaW5nUGFzc3dvcmRGaWVsZCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IGJvb2wgaXNXZWJBcmVhKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gV2ViQXJlYVJv
bGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2JveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IENoZWNrQm94Um9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JhZGlvQnV0dG9u
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gUmFkaW9CdXR0b25Sb2xlOyB9CisgICAg
Ym9vbCBpc1dlYkFyZWEoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6V2ViQXJlYTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkgY29uc3Qg
eyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OyB9Cisg
ICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b247IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNOYXRpdmVMaXN0Qm94KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTGlz
dEJveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IExpc3RCb3hSb2xlOyB9CisgICAg
Ym9vbCBpc0xpc3RCb3goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEJveDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGltZWxpbmUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNTU5LDQzICs1NTYsNDMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IFNwaW5CdXR0b25Sb2xlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTcGlu
QnV0dG9uOyB9CiAgICAgdmlydHVhbCBib29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tPYmplY3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbExhYmVs
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYU9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IFN3aXRjaFJvbGU7IH0KLSAgICBib29sIGlzVG9nZ2xlQnV0
dG9uKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVG9nZ2xlQnV0dG9uUm9sZTsgfQor
ICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3dpdGNoOyB9CisgICAgYm9vbCBpc1RvZ2dsZUJ1dHRvbigpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247IH0K
ICAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzQVJJQVRleHRDb250
cm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBUYWJMaXN0
Um9sZTsgfQotICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkg
PT0gVGFiUm9sZTsgfQotICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gUmFkaW9Hcm91cFJvbGU7IH0KLSAgICBib29sIGlzQ29tYm9Cb3goKSBjb25z
dCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBDb21ib0JveFJvbGU7IH0KLSAgICBib29sIGlzVHJl
ZSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRyZWVSb2xlOyB9Ci0gICAgYm9vbCBp
c1RyZWVHcmlkKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVHJlZUdyaWRSb2xlOyB9
Ci0gICAgYm9vbCBpc1RyZWVJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVHJl
ZUl0ZW1Sb2xlOyB9Ci0gICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IFNjcm9sbEJhclJvbGU7IH0KKyAgICBib29sIGlzVGFiTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OyB9CisgICAg
Ym9vbCBpc1RhYkl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGFiOyB9CisgICAgYm9vbCBpc1JhZGlvR3JvdXAoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDsgfQorICAgIGJvb2wg
aXNDb21ib0JveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDb21ib0JveDsgfQorICAgIGJvb2wgaXNUcmVlKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU7IH0KKyAgICBib29sIGlzVHJlZUdyaWQo
KSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdy
aWQ7IH0KKyAgICBib29sIGlzVHJlZUl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW07IH0KKyAgICBib29sIGlzU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJh
cjsgfQogICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdDsKLSAgICBib29sIGlzTGlzdEl0ZW0oKSBj
b25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBMaXN0SXRlbVJvbGU7IH0KKyAgICBib29sIGlz
TGlzdEl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TGlzdEl0ZW07IH0KICAgICBib29sIGlzQ2hlY2tib3hPclJhZGlvKCkgY29uc3QgeyByZXR1
cm4gaXNDaGVja2JveCgpIHx8IGlzUmFkaW9CdXR0b24oKTsgfQotICAgIGJvb2wgaXNTY3JvbGxW
aWV3KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gU2Nyb2xsQXJlYVJvbGU7IH0KLSAg
ICBib29sIGlzQ2FudmFzKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQ2FudmFzUm9s
ZTsgfQotICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgp
ID09IFBvcFVwQnV0dG9uUm9sZTsgfQorICAgIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3QgeyBy
ZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KKyAg
ICBib29sIGlzQ2FudmFzKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNhbnZhczsgfQorICAgIGJvb2wgaXNQb3BVcEJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsgfQogICAg
IGJvb2wgaXNCbG9ja3F1b3RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0xhbmRtYXJrKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc0NvbG9yV2VsbCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IENv
bG9yV2VsbFJvbGU7IH0KKyAgICBib29sIGlzQ29sb3JXZWxsKCkgY29uc3QgeyByZXR1cm4gcm9s
ZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsgfQogICAgIGJvb2wgaXNS
YW5nZUNvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzTWV0ZXIoKSBjb25zdDsKLSAgICBib29s
IGlzU3BsaXR0ZXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBTcGxpdHRlclJvbGU7
IH0KLSAgICBib29sIGlzVG9vbGJhcigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRv
b2xiYXJSb2xlOyB9CisgICAgYm9vbCBpc1NwbGl0dGVyKCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOyB9CisgICAgYm9vbCBpc1Rvb2xi
YXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9v
bGJhcjsgfQogICAgIGJvb2wgaXNTdHlsZUZvcm1hdEdyb3VwKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1N1YnNjcmlwdFN0eWxlR3JvdXAoKSBjb25zdDsKICAgICBib29sIGlzU3VwZXJzY3JpcHRTdHls
ZUdyb3VwKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpZ3VyZUVsZW1lbnQoKSBjb25zdDsKLSAgICBi
b29sIGlzU3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFN1bW1hcnlSb2xl
OyB9CisgICAgYm9vbCBpc1N1bW1hcnkoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U3VtbWFyeTsgfQogICAgIGJvb2wgaXNPdXRwdXQoKSBjb25zdDsK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTYyOCw3ICs2MjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVG
b250KFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZVN0eWxlKFJlbmRlck9iamVjdCopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc1N0YXRpY1RleHQoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZTsgfQorICAgIGJvb2wgaXNTdGF0aWNUZXh0KCkg
Y29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1Rl
eHQ7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGhhc0hpZ2hsaWdodGluZygpIGNvbnN0OwogCkBAIC03NTksNyArNzU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9u
ZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFVua25vd25Sb2xl
OyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNv
bnN0IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpbmhlcml0c1ByZXNl
bnRhdGlvbmFsUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMDA4LDcgKzEwMDUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gU2Nyb2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQg
aW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9mIHRoZSB0b3AtbGV2ZWwgd2luZG93LgogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAg
Ci0gICAgZW51bSBTY3JvbGxCeVBhZ2VEaXJlY3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQg
fTsKKyAgICBlbnVtIGNsYXNzIFNjcm9sbEJ5UGFnZURpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0
LCBSaWdodCB9OwogICAgIGJvb2wgc2Nyb2xsQnlQYWdlKFNjcm9sbEJ5UGFnZURpcmVjdGlvbikg
Y29uc3Q7CiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKICAgICBJbnRTaXpl
IHNjcm9sbENvbnRlbnRzU2l6ZSgpIGNvbnN0OyAgICAKQEAgLTExMDIsNyArMTA5OSw3IEBAIHB1
YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlQbGF0
Zm9ybUluY2x1ZGVzT2JqZWN0KCkgY29uc3Q7CiAjZWxzZQogICAgIGJvb2wgYWNjZXNzaWJpbGl0
eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdCB7
IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7IH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTEzNSwxNCArMTEzMiwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJc0lnbm9yZWRGcm9tUGFyZW50RGF0YUZvckNoaWxkKEFjY2Vzc2li
aWxpdHlPYmplY3QqKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBBWElEIG1faWQ7CisgICAgQVhJ
RCBtX2lkIHsgMCB9OwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVu
OwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGlsZHJlbjsKLSAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSBtX3JvbGU7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBtX2xhc3RLbm93bklz
SWdub3JlZFZhbHVlOwotICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSBt
X2lzSWdub3JlZEZyb21QYXJlbnREYXRhOwotICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OwotICAg
IGJvb2wgbV9zdWJ0cmVlRGlydHk7CisgICAgbXV0YWJsZSBib29sIG1faGF2ZUNoaWxkcmVuIHsg
ZmFsc2UgfTsKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGUgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VW5rbm93biB9OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gbV9sYXN0S25v
d25Jc0lnbm9yZWRWYWx1ZSB7IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRC
ZWhhdmlvciB9OworICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50RGF0YSBtX2lz
SWdub3JlZEZyb21QYXJlbnREYXRhIHsgfTsKKyAgICBib29sIG1fY2hpbGRyZW5EaXJ0eSB7IGZh
bHNlIH07CisgICAgYm9vbCBtX3N1YnRyZWVEaXJ0eSB7IGZhbHNlIH07CiAKICAgICB2b2lkIHNl
dElzSWdub3JlZEZyb21QYXJlbnREYXRhKEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9tUGFyZW50
RGF0YSYgZGF0YSkgeyBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhID0gZGF0YTsgfQogCkBAIC0x
MTgwLDcgKzExNzcsNyBAQCBwcm90ZWN0ZWQ6CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgQ09N
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7CiAjZWxpZiBQTEFURk9S
TShHVEspCi0gICAgQXRrT2JqZWN0KiBtX3dyYXBwZXI7CisgICAgQXRrT2JqZWN0KiBtX3dyYXBw
ZXIgeyBudWxscHRyIH07CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFByb2dyZXNzSW5kaWNhdG9yUm9sZTsgfQorICAgIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjsgfQogCiAgICAgYm9vbCBpc1Byb2dyZXNzSW5k
aWNhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5
MSwxMSArNDkxLDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXIK
ICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAg
IGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1lbnVCYXJSb2xlKQorICAgIGlmIChhcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyKQogICAgICAgICByZXR1
cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtX3JlbmRlcmVyLT5wYXJlbnQoKSk7CiAK
ICAgICAvLyBtZW51QnV0dG9uIGFuZCBpdHMgY29ycmVzcG9uZGluZyBtZW51IGFyZSBET00gc2li
bGluZ3MsIGJ1dCBBY2Nlc3NpYmlsaXR5IG5lZWRzIHRoZW0gdG8gYmUgcGFyZW50L2NoaWxkCi0g
ICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTWVudVJvbGUpIHsKKyAgICBpZiAoYXJpYVJv
bGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkgewogICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtZW51QnV0dG9uRm9yTWVudSgpOwogICAgICAgICBp
ZiAocGFyZW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudDsKQEAgLTUyNCw3ICs1MjQsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQXR0YWNoCiAgICAgLy8gV2lkZ2V0
cyBhcmUgdGhlIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgd2UgcmVwcmVzZW50IHRvIEFYIGFzIGF0
dGFjaG1lbnRzCiAgICAgYm9vbCBpc1dpZGdldCA9IHJlbmRlcmVyLT5pc1dpZGdldCgpOwogCi0g
ICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gVW5rbm93blJvbGU7
CisgICAgcmV0dXJuIGlzV2lkZ2V0ICYmIGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlVua25vd247CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QKQEAgLTYxMiw3ICs2MTIsNyBAQCBTdHJpbmcgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRlCiAgICAgICAgIC8vIE9ubHkgdGFrZSBoZWxw
IHRleHQgZnJvbSBhbiBhbmNlc3RvciBlbGVtZW50IGlmIGl0cyBhIGdyb3VwIG9yIGFuIHVua25v
d24gcm9sZS4gSWYgaGVscCB3YXMgCiAgICAgICAgIC8vIGFkZGVkIHRvIHRob3NlIGtpbmRzIG9m
IGVsZW1lbnRzLCBpdCBpcyBsaWtlbHkgaXQgd2FzIG1lYW50IGZvciBhIGNoaWxkIGVsZW1lbnQu
CiAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iaiA9IGF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUoYW5jZXN0b3IpKSB7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqLT5pc0dy
b3VwKCkgJiYgYXhPYmotPnJvbGVWYWx1ZSgpICE9IFVua25vd25Sb2xlKQorICAgICAgICAgICAg
aWYgKCFheE9iai0+aXNHcm91cCgpICYmIGF4T2JqLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmls
aXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KQEAgLTc0Myw3ICs3NDMsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c3RyaW5nCiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3NzQm94ID0gcmVuZGVyQm94TW9k
ZWxPYmplY3QoKTsKIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFN0YXRpY1RleHRS
b2xlKSB7CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlN0YXRpY1RleHQpIHsKICAgICAgICAgU3RyaW5nIHN0YXRpY1RleHQgPSB0ZXh0KCk7CiAgICAg
ICAgIGlmICghc3RhdGljVGV4dC5sZW5ndGgoKSkKICAgICAgICAgICAgIHN0YXRpY1RleHQgPSB0
ZXh0VW5kZXJFbGVtZW50KCk7CkBAIC05NjEsNyArOTYxLDcgQEAgRVNwZWFrIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnNwZWFrUAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRSYWRpb0J1dHRvbkdyb3VwQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50LCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHBhcmVudC0+Y2hpbGRyZW4oKSkgewotICAgICAg
ICBpZiAoY2hpbGQtPnJvbGVWYWx1ZSgpID09IFJhZGlvQnV0dG9uUm9sZSkKKyAgICAgICAgaWYg
KGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24pCiAg
ICAgICAgICAgICBsaW5rZWRVSUVsZW1lbnRzLmFwcGVuZChjaGlsZCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGFkZFJhZGlvQnV0dG9uR3JvdXBDaGlsZHJlbihjaGlsZC5nZXQoKSwgbGlu
a2VkVUlFbGVtZW50cyk7CkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphZGRSYWRpbwogICAgIAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7Ci0gICAgaWYgKHJvbGVWYWx1ZSgpICE9IFJhZGlv
QnV0dG9uUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJh
ZGlvQnV0dG9uKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IHRoaXMt
Pm5vZGUoKTsKQEAgLTk4Myw3ICs5ODMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFkZFJhZGlvCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQg
YW55IHJhZGlvIGJ1dHRvbiBzaWJsaW5ncyB3aXRoIHRoZSB0cmFkaXRpb25hbCBuYW1pbmcsIGxl
dHMgc2VhcmNoIGZvciBhIHJhZGlvIGdyb3VwIHJvbGUgYW5kIGZpbmQgaXRzIGNoaWxkcmVuLgog
ICAgICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKLSAgICAgICAgICAg
IGlmIChwYXJlbnQtPnJvbGVWYWx1ZSgpID09IFJhZGlvR3JvdXBSb2xlKQorICAgICAgICAgICAg
aWYgKHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAp
CiAgICAgICAgICAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91cENoaWxkcmVuKHBhcmVudCwgbGlu
a2VkVUlFbGVtZW50cyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDAxLDcgKzEwMDEsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpbmtlZFVJCiAgICAgICAgICAgICBsaW5r
ZWRVSUVsZW1lbnRzLmFwcGVuZChsaW5rZWRBWEVsZW1lbnQpOwogICAgIH0KIAotICAgIGlmIChy
b2xlVmFsdWUoKSA9PSBSYWRpb0J1dHRvblJvbGUpCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbikKICAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91
cE1lbWJlcnMobGlua2VkVUlFbGVtZW50cyk7CiB9CiAKQEAgLTExMDYsNyArMTEwNiw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBbGxvd2UKICAgICBib29sIGlzSW5UcmVl
ID0gZmFsc2U7CiAgICAgYm9vbCBpc1RyZWVJdGVtRGVzY2VuZGFudCA9IGZhbHNlOwogICAgIHdo
aWxlIChheE9iaikgewotICAgICAgICBpZiAoYXhPYmotPnJvbGVWYWx1ZSgpID09IFRyZWVJdGVt
Um9sZSkKKyAgICAgICAgaWYgKGF4T2JqLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VHJlZUl0ZW0pCiAgICAgICAgICAgICBpc1RyZWVJdGVtRGVzY2VuZGFudCA9IHRydWU7CiAg
ICAgICAgIGlmIChheE9iai0+aXNUcmVlKCkpIHsKICAgICAgICAgICAgIGlzSW5UcmVlID0gdHJ1
ZTsKQEAgLTExMTgsNyArMTExOCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNBbGxvd2UKICAgICAvLyBJZiB0aGUgb2JqZWN0IGlzIGluIGEgdHJlZSwgb25seSB0cmVlIGl0
ZW1zIHNob3VsZCBiZSBleHBvc2VkIChhbmQgdGhlIGNoaWxkcmVuIG9mIHRyZWUgaXRlbXMpLgog
ICAgIGlmIChpc0luVHJlZSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gcm9s
ZVZhbHVlKCk7Ci0gICAgICAgIGlmIChyb2xlICE9IFRyZWVJdGVtUm9sZSAmJiByb2xlICE9IFN0
YXRpY1RleHRSb2xlICYmICFpc1RyZWVJdGVtRGVzY2VuZGFudCkKKyAgICAgICAgaWYgKHJvbGUg
IT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJv
bGU6OlN0YXRpY1RleHQgJiYgIWlzVHJlZUl0ZW1EZXNjZW5kYW50KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMjgsMTMgKzExMjgsMTMg
QEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gb2JqZQogewogICAgIC8vIERv
bid0IGlnbm9yZSBhbiBpbWFnZSB0aGF0IGhhcyBhbiBhbHQgdGFnLgogICAgIGlmICghYWx0VGV4
dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCi0gICAgICAgIHJldHVybiBJbmNsdWRlT2JqZWN0
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9i
amVjdDsKICAgICAKICAgICAvLyBUaGUgaW5mb3JtYWwgc3RhbmRhcmQgaXMgdG8gaWdub3JlIGlt
YWdlcyB3aXRoIHplcm8tbGVuZ3RoIGFsdCBzdHJpbmdzLgogICAgIGlmICghYWx0VGV4dC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAKLSAgICByZXR1cm4g
RGVmYXVsdEJlaGF2aW9yOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
OjpEZWZhdWx0QmVoYXZpb3I7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0CkBA
IC0xMTQyLDE0ICsxMTQyLDE0IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNz
aWJpbGkKICAgICAvLyBUaGUgZm9sbG93aW5nIGNhc2VzIGNhbiBhcHBseSB0byBhbnkgZWxlbWVu
dCB0aGF0J3MgYSBzdWJjbGFzcyBvZiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgogICAgIAog
ICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKIAog
ICAgIGlmIChtX3JlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CiAg
ICAgICAgIC8vIGFyaWEtaGlkZGVuIGlzIG1lYW50IHRvIG92ZXJyaWRlIHZpc2liaWxpdHkgYXMg
dGhlIGRldGVybWluYW50IGluIEFYIGhpZXJhcmNoeSBpbmNsdXNpb24uCiAgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRy
KSwgImZhbHNlIikpCi0gICAgICAgICAgICByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOworICAgICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhhdmlv
cjsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAgICAgfQogCiAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsK
QEAgLTExNzksMTkgKzExNzksMTkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpj
b21wdXRlQQogICAgIC8vIFRoZW4gcHJvY2VzcyBvdGhlciB1c2UgY2FzZXMgdGhhdCBuZWVkIHRv
IGJlIGFwcGxpZWQgdG8gYWxsIHRoZSB2YXJpb3VzIHJvbGVzCiAgICAgLy8gdGhhdCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0cyB0YWtlIG9uLgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRlY2lz
aW9uID09IEluY2x1ZGVPYmplY3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlP
YmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAogICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYSBwYXJlbnQgdGhh
dCBjYW5ub3QgaGF2ZSBjaGlsZHJlbiwgaXQgc2hvdWxkIG5vdCBiZSBleHBvc2VkLgogICAgIGlm
IChpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAg
CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IElnbm9yZWRSb2xlKQorICAgIGlmIChyb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IFByZXNlbnRhdGlvbmFsUm9sZSB8fCBp
bmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpKQorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWwgfHwgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJv
bGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gV2ViQXJlYXMgc2hvdWxk
IGJlIGlnbm9yZWQgaWYgdGhlaXIgaWZyYW1lIGNvbnRhaW5lciBpcyBtYXJrZWQgYXMgcHJlc2Vu
dGF0aW9uYWwuCkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmNvbXB1dGVBCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCptX3JlbmRlcmVyKSkgewog
ICAgICAgICAvLyBzdGF0aWMgdGV4dCBiZW5lYXRoIE1lbnVJdGVtcyBhbmQgTWVudUJ1dHRvbnMg
YXJlIGp1c3QgcmVwb3J0ZWQgYWxvbmcgd2l0aCB0aGUgbWVudSBpdGVtLCBzbyBpdCdzIGlnbm9y
ZWQgb24gYW4gaW5kaXZpZHVhbCBsZXZlbAogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICAgICAgaWYgKHBhcmVudCAmJiAo
cGFyZW50LT5pc01lbnVJdGVtKCkgfHwgcGFyZW50LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IE1l
bnVCdXR0b25Sb2xlKSkKKyAgICAgICAgaWYgKHBhcmVudCAmJiAocGFyZW50LT5pc01lbnVJdGVt
KCkgfHwgcGFyZW50LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
ZW51QnV0dG9uKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBhdXRvJiByZW5k
ZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fcmVuZGVyZXIpOwogICAgICAgICBpZiAo
IXJlbmRlclRleHQuaGFzUmVuZGVyZWRUZXh0KCkpCkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAKICAgICAgICAgLy8gc3RhdGlj
IHRleHQgYmVuZWF0aCBUZXh0Q29udHJvbHMgaXMgcmVwb3J0ZWQgYWxvbmcgd2l0aCB0aGUgdGV4
dCBjb250cm9sIHRleHQgc28gaXQncyBpZ25vcmVkLgogICAgICAgICBmb3IgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVu
dC0+cGFyZW50T2JqZWN0KCkpIHsgCi0gICAgICAgICAgICBpZiAocGFyZW50LT5yb2xlVmFsdWUo
KSA9PSBUZXh0RmllbGRSb2xlKQorICAgICAgICAgICAgaWYgKHBhcmVudC0+cm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVsZCkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEyNDUsOSArMTI0NSw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUEKICAgICAgICAgLy8gVGhlIGFsdCBhdHRy
aWJ1dGUgbWF5IGJlIHNldCBvbiBhIHRleHQgZnJhZ21lbnQgdGhyb3VnaCBDU1MsIHdoaWNoIHNo
b3VsZCBiZSBob25vcmVkLgogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5k
ZXJUZXh0KSkgewogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhbHRU
ZXh0SW5jbHVzaW9uID0gb2JqZWN0SW5jbHVzaW9uRnJvbUFsdFRleHQoZG93bmNhc3Q8UmVuZGVy
VGV4dEZyYWdtZW50PihyZW5kZXJUZXh0KS5hbHRUZXh0KCkpOwotICAgICAgICAgICAgaWYgKGFs
dFRleHRJbmNsdXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgICAgICAgICAgaWYgKGFsdFRleHRJ
bmNsdXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKGFsdFRleHRJbmNs
dXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICAgICAgICAgIGlmIChhbHRUZXh0SW5jbHVzaW9u
ID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3QpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKGRvd25jYXN0PFJlbmRlclRl
eHRGcmFnbWVudD4ocmVuZGVyVGV4dCkuZmlyc3RMZXR0ZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTEyNzQsMjQgKzEyNzQsMjQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpjb21wdXRlQQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzd2l0Y2gg
KHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBdWRpb1JvbGU6Ci0gICAgY2FzZSBEZXNjcmlwdGlv
bkxpc3RUZXJtUm9sZToKLSAgICBjYXNlIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6Ci0gICAg
Y2FzZSBEZXRhaWxzUm9sZToKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0gICAgY2FzZSBU
aW1lUm9sZToKLSAgICBjYXNlIFZpZGVvUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpBdWRpbzoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3RUZXJt
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50QXJ0aWNsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1lOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlZpZGVvOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25S
b2xlKQorICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpV
bmtub3duKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHJvbGVWYWx1ZSgp
ID09IEhvcml6b250YWxSdWxlUm9sZSkKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6Okhvcml6b250YWxSdWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgLy8gZG9uJ3QgaWdub3JlIGxhYmVscywgYmVjYXVzZSB0aGV5IHNlcnZlIGFzIFRpdGxlVUlF
bGVtZW50cwpAQCAtMTMzMSwxNiArMTMzMSwxNiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmNvbXB1dGVBCiAgICAgICAgIAogICAgICAgICAvLyBGaXJzdCBjaGVjayB0aGUgUmVu
ZGVySW1hZ2UncyBhbHRUZXh0ICh3aGljaCBjYW4gYmUgc2V0IHRocm91Z2ggYSBzdHlsZSBzaGVl
dCwgb3IgY29tZSBmcm9tIHRoZSBFbGVtZW50KS4KICAgICAgICAgLy8gSG93ZXZlciwgaWYgdGhp
cyBpcyBub3QgYSBuYXRpdmUgaW1hZ2UsIGZhbGxiYWNrIHRvIHRoZSBhdHRyaWJ1dGUgb24gdGhl
IEVsZW1lbnQuCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWx0VGV4dElu
Y2x1c2lvbiA9IERlZmF1bHRCZWhhdmlvcjsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbiBhbHRUZXh0SW5jbHVzaW9uID0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
RGVmYXVsdEJlaGF2aW9yOwogICAgICAgICBib29sIGlzUmVuZGVySW1hZ2UgPSBpczxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChpc1JlbmRlckltYWdlKQogICAgICAgICAg
ICAgYWx0VGV4dEluY2x1c2lvbiA9IG9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KGRvd25jYXN0
PFJlbmRlckltYWdlPigqbV9yZW5kZXJlcikuYWx0VGV4dCgpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgYWx0VGV4dEluY2x1c2lvbiA9IG9iamVjdEluY2x1c2lvbkZyb21BbHRUZXh0KGdl
dEF0dHJpYnV0ZShhbHRBdHRyKS5zdHJpbmcoKSk7CiAKLSAgICAgICAgaWYgKGFsdFRleHRJbmNs
dXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgICAgICBpZiAoYWx0VGV4dEluY2x1c2lvbiA9PSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGFsdFRleHRJbmNsdXNpb24gPT0gSW5jbHVkZU9iamVj
dCkKKyAgICAgICAgaWYgKGFsdFRleHRJbmNsdXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdElu
Y2x1c2lvbjo6SW5jbHVkZU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIElmIGFuIGltYWdlIGhhcyBhIHRpdGxlIGF0dHJpYnV0ZSBvbiBpdCwg
YWNjZXNzaWJpbGl0eSBzaG91bGQgYmUgbGVuaWVudCBhbmQgYWxsb3cgaXQgdG8gYXBwZWFyIGlu
IHRoZSBoaWVyYXJjaHkgKGFjY29yZGluZyB0byBXQUktQVJJQSkuCkBAIC0xNDAzLDcgKzE0MDMs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAKICAgICAvLyA8
c3Bhbj4gdGFncyBhcmUgaW5saW5lIHRhZ3MgYW5kIG5vdCBtZWFudCB0byBjb252ZXkgaW5mb3Jt
YXRpb24gaWYgdGhleSBoYXZlIG5vIG90aGVyIGFyaWEKICAgICAvLyBpbmZvcm1hdGlvbiBvbiB0
aGVtLiBJZiB3ZSBkb24ndCBpZ25vcmUgdGhlbSwgdGhleSBtYXkgZW1pdCBzaWduYWxzIGV4cGVj
dGVkIHRvIGNvbWUgZnJvbQotICAgIC8vIHRoZWlyIHBhcmVudC4gSW4gYWRkaXRpb24sIGJlY2F1
c2UgaW5jbHVkZWQgc3BhbnMgYXJlIEdyb3VwUm9sZSBvYmplY3RzLCBhbmQgR3JvdXBSb2xlCisg
ICAgLy8gdGhlaXIgcGFyZW50LiBJbiBhZGRpdGlvbiwgYmVjYXVzZSBpbmNsdWRlZCBzcGFucyBh
cmUgQWNjZXNzaWJpbGl0eVJvbGU6Okdyb3VwIG9iamVjdHMsIGFuZCBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JvdXAKICAgICAvLyBvYmplY3RzIGFyZSBvZnRlbiBjb250YWluZXJzIHdpdGggbWVhbmlu
Z2Z1bCBpbmZvcm1hdGlvbiwgdGhlIGluY2x1c2lvbiBvZiBhIHNwYW4gY2FuIGhhdmUKICAgICAv
LyB0aGUgc2lkZSBlZmZlY3Qgb2YgY2F1c2luZyB0aGUgaW1tZWRpYXRlIHBhcmVudCBhY2Nlc3Np
YmxlIHRvIGJlIGlnbm9yZWQuIFRoaXMgaXMgZXNwZWNpYWxseQogICAgIC8vIHByb2JsZW1hdGlj
IGZvciBwbGF0Zm9ybXMgd2hpY2ggaGF2ZSBkaXN0aW5jdCByb2xlcyBmb3IgdGV4dHVhbCBibG9j
ayBlbGVtZW50cy4KQEAgLTE1MjgsNyArMTUyOCw3IEBAIFBsYWluVGV4dFJhbmdlIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9
IGFyaWFSb2xlQXR0cmlidXRlKCk7CiAgICAgLy8gVXNlIHRoZSB0ZXh0IGNvbnRyb2wgbmF0aXZl
IHJhbmdlIGlmIGl0J3MgYSBuYXRpdmUgb2JqZWN0IGFuZCBpdCBoYXMgbm8gQVJJQSByb2xlIChv
ciBoYXMgYSB0ZXh0IGJhc2VkIEFSSUEgcm9sZSkuCi0gICAgaWYgKGlzTmF0aXZlVGV4dENvbnRy
b2woKSAmJiAoYXJpYVJvbGUgPT0gVW5rbm93blJvbGUgfHwgaXNBUklBVGV4dENvbnRyb2woKSkp
IHsKKyAgICBpZiAoaXNOYXRpdmVUZXh0Q29udHJvbCgpICYmIChhcmlhUm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VW5rbm93biB8fCBpc0FSSUFUZXh0Q29udHJvbCgpKSkgewogICAgICAgICBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wgPSBkb3duY2FzdDxSZW5kZXJU
ZXh0Q29udHJvbD4oKm1fcmVuZGVyZXIpLnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKTsKICAgICAg
ICAgcmV0dXJuIFBsYWluVGV4dFJhbmdlKHRleHRDb250cm9sLnNlbGVjdGlvblN0YXJ0KCksIHRl
eHRDb250cm9sLnNlbGVjdGlvbkVuZCgpIC0gdGV4dENvbnRyb2wuc2VsZWN0aW9uU3RhcnQoKSk7
CiAgICAgfQpAQCAtMTY3NSw3ICsxNjc1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc1RhYkl0ZQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJQYW5lbCA9IGNh
Y2hlLT5nZXRPckNyZWF0ZShlbGVtZW50KTsKIAogICAgICAgICAvLyBBIHRhYiBpdGVtIHNob3Vs
ZCBvbmx5IGNvbnRyb2wgdGFiIHBhbmVscy4KLSAgICAgICAgaWYgKCF0YWJQYW5lbCB8fCB0YWJQ
YW5lbC0+cm9sZVZhbHVlKCkgIT0gVGFiUGFuZWxSb2xlKQorICAgICAgICBpZiAoIXRhYlBhbmVs
IHx8IHRhYlBhbmVsLT5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoZWNrRm9jdXNFbGVtZW50ID0gZm9jdXNlZEVsZW1lbnQ7CkBAIC0xNzA0LDcgKzE3
MDQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRm9jdXNlCiAgICAgLy8g
QSB3ZWIgYXJlYSBpcyByZXByZXNlbnRlZCBieSB0aGUgRG9jdW1lbnQgbm9kZSBpbiB0aGUgRE9N
IHRyZWUsIHdoaWNoIGlzbid0IGZvY3VzYWJsZS4KICAgICAvLyBDaGVjayBpbnN0ZWFkIGlmIHRo
ZSBmcmFtZSdzIHNlbGVjdGlvbiBjb250cm9sbGVyIGlzIGZvY3VzZWQKICAgICBpZiAoZm9jdXNl
ZEVsZW1lbnQgPT0gbV9yZW5kZXJlci0+bm9kZSgpCi0gICAgICAgIHx8IChyb2xlVmFsdWUoKSA9
PSBXZWJBcmVhUm9sZSAmJiBkb2N1bWVudC5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRB
bmRBY3RpdmUoKSkpCisgICAgICAgIHx8IChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6V2ViQXJlYSAmJiBkb2N1bWVudC5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRB
Y3RpdmUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3NDYsNyArMTc0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
U2VsZWMKIHsKICAgICAvLyBTZXR0aW5nIHNlbGVjdGVkIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdHJl
ZXMgYW5kIHRhYmxlcyAoYW5kIHRyZWUtdGFibGVzKS4KICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgaWYgKHJvbGUgIT0gVHJlZVJvbGUgJiYgcm9sZSAhPSBU
cmVlR3JpZFJvbGUgJiYgcm9sZSAhPSBUYWJsZVJvbGUgJiYgcm9sZSAhPSBHcmlkUm9sZSkKKyAg
ICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSAmJiByb2xlICE9IEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlR3JpZCAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZSAm
JiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgYm9vbCBpc011bHRpID0gaXNNdWx0aVNlbGVjdGFibGUoKTsKQEAgLTE4MzUsNyArMTgz
NSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8qIHBhcmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUo
KTsKICAgICAgICAgICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+KCpjdXJyZW50KSAmJiBpczxI
VE1MTWFwRWxlbWVudD4ocGFyZW50KSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGFyZWFPYmpl
Y3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShJbWFnZU1hcExpbmtSb2xlKSk7CisgICAgICAgICAgICAgICAgYXV0byYg
YXJlYU9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms+KCpheE9iamVj
dENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbmspKTsK
ICAgICAgICAgICAgICAgICBIVE1MTWFwRWxlbWVudCYgbWFwID0gZG93bmNhc3Q8SFRNTE1hcEVs
ZW1lbnQ+KCpwYXJlbnQpOwogICAgICAgICAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTEFyZWFF
bGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oY3VycmVudCkpOwogICAgICAgICAgICAg
ICAgIGFyZWFPYmplY3Quc2V0SFRNTE1hcEVsZW1lbnQoJm1hcCk7CkBAIC0yNDExLDE4ICsyNDEx
LDE4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2hvdWxkTm8KIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGFyaWFSb2xlQXR0cmlidXRlKCkpIHsKLSAgICBjYXNlIEFwcGxp
Y2F0aW9uR3JvdXBSb2xlOgotICAgIGNhc2UgTGlzdEJveFJvbGU6Ci0gICAgY2FzZSBNZW51Um9s
ZToKLSAgICBjYXNlIE1lbnVCYXJSb2xlOgotICAgIGNhc2UgUmFkaW9Hcm91cFJvbGU6Ci0gICAg
Y2FzZSBSb3dSb2xlOgotICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgotICAgIGNhc2UgUHJvZ3Jl
c3NJbmRpY2F0b3JSb2xlOgotICAgIGNhc2UgVG9vbGJhclJvbGU6Ci0gICAgY2FzZSBPdXRsaW5l
Um9sZToKLSAgICBjYXNlIFRyZWVSb2xlOgotICAgIGNhc2UgR3JpZFJvbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMaXN0Qm94OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSYWRpb0dyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpQcm9ncmVzc0luZGljYXRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
b29sYmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok91dGxpbmU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
OgogICAgIC8qIEZJWE1FOiByZXBsYWNlIHRoZXNlIHdpdGggYWN0dWFsIHJvbGVzIHdoZW4gdGhl
eSBhcmUgYWRkZWQgdG8gQWNjZXNzaWJpbGl0eVJvbGUKICAgICBjb21wb3NpdGUKICAgICBhbGVy
dApAQCAtMjQ3NCwxMSArMjQ3NCwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmhhbmRsZUFyCiAgICAgICAgIGJvb2wgZm91bmRQYXJlbnQgPSBmYWxzZTsKICAgICAgICAgCiAg
ICAgICAgIHN3aXRjaCAoY29udGFpbmVyUGFyZW50LT5yb2xlVmFsdWUoKSkgewotICAgICAgICBj
YXNlIFRyZWVSb2xlOgotICAgICAgICBjYXNlIFRyZWVHcmlkUm9sZToKLSAgICAgICAgY2FzZSBH
cmlkUm9sZToKLSAgICAgICAgY2FzZSBUYWJsZVJvbGU6Ci0gICAgICAgIGNhc2UgQnJvd3NlclJv
bGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6CisgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpHcmlkOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToKKyAgICAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnJvd3NlcjoKICAgICAgICAgICAgIGZvdW5kUGFy
ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjUw
MCw3ICsyNTAwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYW5kbGVBcgog
ICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjb250YWluZXJQYXJlbnQsIGRvY3VtZW50
KCksIEFYT2JqZWN0Q2FjaGU6OkFYUm93Q291bnRDaGFuZ2VkKTsKIAogICAgIC8vIFBvc3QgdGhh
dCB0aGUgc3BlY2lmaWMgcm93IGVpdGhlciBjb2xsYXBzZWQgb3IgZXhwYW5kZWQuCi0gICAgaWYg
KHJvbGVWYWx1ZSgpID09IFJvd1JvbGUgfHwgcm9sZVZhbHVlKCkgPT0gVHJlZUl0ZW1Sb2xlKQor
ICAgIGlmIChyb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93IHx8IHJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbSkKICAgICAgICAgY2FjaGUtPnBvc3RO
b3RpZmljYXRpb24odGhpcywgZG9jdW1lbnQoKSwgaXNFeHBhbmRlZCgpID8gQVhPYmplY3RDYWNo
ZTo6QVhSb3dFeHBhbmRlZCA6IEFYT2JqZWN0Q2FjaGU6OkFYUm93Q29sbGFwc2VkKTsKICAgICBl
bHNlCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIGRvY3VtZW50KCksIEFY
T2JqZWN0Q2FjaGU6OkFYRXhwYW5kZWRDaGFuZ2VkKTsKQEAgLTI2MDksNyArMjYwOSw3IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpleHBhbmQKIAogYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QKIHsKLSAg
ICBpZiAocm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpIHsKKyAgICBpZiAocm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsKICAgICAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpKQogICAgICAgICAgICAgcmV0
dXJuIHBhcmVudC0+aGFzVGFnTmFtZShhYmJyVGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUoYWNy
b255bVRhZyk7CiAgICAgfQpAQCAtMjYyMCwyNTEgKzI2MjAsMjUxIEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHMKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKICAgICBpZiAo
IW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOwogCiAgICAgLy8gU29tZXRpbWVzIHdlIG5lZWQg
dG8gaWdub3JlIHRoZSBhdHRyaWJ1dGUgcm9sZS4gTGlrZSBpZiBhIHRyZWUgaXMgbWFsZm9ybWVk
LAogICAgIC8vIHdlIHdhbnQgdG8gaWdub3JlIHRoZSB0cmVlaXRlbSdzIGF0dHJpYnV0ZSByb2xl
LgotICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9
IFVua25vd25Sb2xlICYmICFzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkpCisgICAgaWYgKCht
X2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlVua25vd24gJiYgIXNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSkKICAgICAgICAg
cmV0dXJuIG1fYXJpYVJvbGU7CiAgICAgCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5v
ZGUoKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3NzQm94ID0gcmVuZGVyQm94TW9kZWxP
YmplY3QoKTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmlzTGluaygpKQotICAgICAgICByZXR1
cm4gV2ViQ29yZUxpbmtSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6Oldl
YkNvcmVMaW5rOwogICAgIGlmIChub2RlICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKSAm
JiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pigqbm9kZSkuaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih1c2VtYXBBdHRyKSkKLSAgICAgICAgcmV0dXJuIEltYWdlTWFwUm9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcDsKICAgICBpZiAoKGNz
c0JveCAmJiBjc3NCb3gtPmlzTGlzdEl0ZW0oKSkgfHwgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFt
ZShsaVRhZykpKQotICAgICAgICByZXR1cm4gTGlzdEl0ZW1Sb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc0xpc3RN
YXJrZXIoKSkKLSAgICAgICAgcmV0dXJuIExpc3RNYXJrZXJSb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJrZXI7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFz
VGFnTmFtZShidXR0b25UYWcpKQogICAgICAgICByZXR1cm4gYnV0dG9uUm9sZVR5cGUoKTsKICAg
ICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGxlZ2VuZFRhZykpCi0gICAgICAgIHJldHVy
biBMZWdlbmRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxlZ2VuZDsK
ICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTdGF0aWNUZXh0
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OwogICAg
IGlmIChjc3NCb3ggJiYgY3NzQm94LT5pc0ltYWdlKCkpIHsKICAgICAgICAgaWYgKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8g
UG9wVXBCdXR0b25Sb2xlIDogQnV0dG9uUm9sZTsKKyAgICAgICAgICAgIHJldHVybiBhcmlhSGFz
UG9wdXAoKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiA6IEFjY2Vzc2liaWxpdHlS
b2xlOjpCdXR0b247CiAgICAgICAgIGlmIChpc1NWR0ltYWdlKCkpCi0gICAgICAgICAgICByZXR1
cm4gU1ZHUm9vdFJvbGU7Ci0gICAgICAgIHJldHVybiBJbWFnZVJvbGU7CisgICAgICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1Jvb3Q7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6SW1hZ2U7CiAgICAgfQogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhh
c1RhZ05hbWUoY2FudmFzVGFnKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1JvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2FudmFzOwogCiAgICAgaWYgKGNzc0JveCAmJiBj
c3NCb3gtPmlzUmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gV2ViQXJlYVJvbGU7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYTsKICAgICAKICAgICBpZiAoY3Nz
Qm94ICYmIGNzc0JveC0+aXNUZXh0RmllbGQoKSkgewogICAgICAgICBpZiAoaXM8SFRNTElucHV0
RWxlbWVudD4obm9kZSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxl
bWVudD4oKm5vZGUpLmlzU2VhcmNoRmllbGQoKSA/IFNlYXJjaEZpZWxkUm9sZSA6IFRleHRGaWVs
ZFJvbGU7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5v
ZGUpLmlzU2VhcmNoRmllbGQoKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZCA6IEFj
Y2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ7CiAgICAgfQogICAgIAogICAgIGlmIChjc3NCb3gg
JiYgY3NzQm94LT5pc1RleHRBcmVhKCkpCi0gICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWE7CiAKICAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIGlmIChpbnB1
dC5pc0NoZWNrYm94KCkpCi0gICAgICAgICAgICByZXR1cm4gQ2hlY2tCb3hSb2xlOworICAgICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDaGVja0JveDsKICAgICAgICAgaWYgKGlu
cHV0LmlzUmFkaW9CdXR0b24oKSkKLSAgICAgICAgICAgIHJldHVybiBSYWRpb0J1dHRvblJvbGU7
CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOwogICAg
ICAgICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpCiAgICAgICAgICAgICByZXR1cm4gYnV0dG9u
Um9sZVR5cGUoKTsKICAgICAgICAgLy8gT24gaU9TLCB0aGUgZGF0ZSBmaWVsZCBhbmQgdGltZSBm
aWVsZCBhcmUgcG9wdXAgYnV0dG9ucy4gT24gb3RoZXIgcGxhdGZvcm1zIHRoZXkgYXJlIHRleHQg
ZmllbGRzLgogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKGlucHV0LmlzRGF0ZUZpZWxk
KCkgfHwgaW5wdXQuaXNUaW1lRmllbGQoKSkKLSAgICAgICAgICAgIHJldHVybiBQb3BVcEJ1dHRv
blJvbGU7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgICAgIGlmIChpbnB1
dC5pc0NvbG9yQ29udHJvbCgpKQotICAgICAgICAgICAgcmV0dXJuIENvbG9yV2VsbFJvbGU7Cisg
ICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDsKICNlbmRpZgog
ICAgIH0KICAgICAKICAgICBpZiAoaGFzQ29udGVudEVkaXRhYmxlQXR0cmlidXRlU2V0KCkpCi0g
ICAgICAgIHJldHVybiBUZXh0QXJlYVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGV4dEFyZWE7CiAgICAgCiAgICAgaWYgKGlzRmlsZVVwbG9hZEJ1dHRvbigpKQotICAg
ICAgICByZXR1cm4gQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xl
OjpCdXR0b247CiAgICAgCiAgICAgaWYgKGNzc0JveCAmJiBjc3NCb3gtPmlzTWVudUxpc3QoKSkK
LSAgICAgICAgcmV0dXJuIFBvcFVwQnV0dG9uUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpQb3BVcEJ1dHRvbjsKICAgICAKICAgICBpZiAoaGVhZGluZ0xldmVsKCkpCi0g
ICAgICAgIHJldHVybiBIZWFkaW5nUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpIZWFkaW5nOwogICAgIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1Jvb3QoKSkKLSAg
ICAgICAgcmV0dXJuIFNWR1Jvb3RSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OlNWR1Jvb3Q7CiAgICAgCiAgICAgaWYgKGlzU3R5bGVGb3JtYXRHcm91cCgpKQotICAgICAg
ICByZXR1cm4gaXM8UmVuZGVySW5saW5lPigqbV9yZW5kZXJlcikgPyBJbmxpbmVSb2xlIDogVGV4
dEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIGlzPFJlbmRlcklubGluZT4oKm1fcmVuZGVyZXIp
ID8gQWNjZXNzaWJpbGl0eVJvbGU6OklubGluZSA6IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3Jv
dXA7CiAgICAgCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkZFRhZykpCi0gICAg
ICAgIHJldHVybiBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDsKICAgICAKICAgICBpZiAobm9k
ZSAmJiBub2RlLT5oYXNUYWdOYW1lKGR0VGFnKSkKLSAgICAgICAgcmV0dXJuIERlc2NyaXB0aW9u
TGlzdFRlcm1Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0
aW9uTGlzdFRlcm07CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRsVGFnKSkK
LSAgICAgICAgcmV0dXJuIERlc2NyaXB0aW9uTGlzdFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0OwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+
aGFzVGFnTmFtZShmaWVsZHNldFRhZykpCi0gICAgICAgIHJldHVybiBHcm91cFJvbGU7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAKICAgICBpZiAobm9kZSAmJiBu
b2RlLT5oYXNUYWdOYW1lKGZpZ3VyZVRhZykpCi0gICAgICAgIHJldHVybiBGaWd1cmVSb2xlOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkZpZ3VyZTsKIAogICAgIC8vIENoZWNr
IGZvciBSdWJ5IGVsZW1lbnRzCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieVRleHQoKSkKLSAg
ICAgICAgcmV0dXJuIFJ1YnlUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpSdWJ5VGV4dDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5QmFzZSgpKQotICAgICAg
ICByZXR1cm4gUnVieUJhc2VSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OlJ1YnlCYXNlOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0
dXJuIFJ1YnlSdW5Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlS
dW47CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUnVieUJsb2NrKCkpCi0gICAgICAgIHJldHVybiBS
dWJ5QmxvY2tSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlCbG9j
azsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSdWJ5SW5saW5lKCkpCi0gICAgICAgIHJldHVybiBS
dWJ5SW5saW5lUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5SW5s
aW5lOwogICAgIAogICAgIC8vIFRoaXMgcmV0dXJuIHZhbHVlIGlzIHdoYXQgd2lsbCBiZSB1c2Vk
IGlmIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgZGV0ZXJtaW5lcwogICAgIC8vIHRoZSBjZWxsIHNo
b3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGNlbGwgKGUuZy4gYmVjYXVzZSBpdCBpcyBhIGxheW91
dCB0YWJsZS4KICAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAg
ICAgcmV0dXJuIFRleHRHcm91cFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGV4dEdyb3VwOwogCiAgICAgLy8gVGFibGUgc2VjdGlvbnMgc2hvdWxkIGJlIGlnbm9yZWQu
CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzVGFibGVTZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBJ
Z25vcmVkUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpJZ25vcmVkOwog
CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzSFIoKSkKLSAgICAgICAgcmV0dXJuIEhvcml6b250YWxS
dWxlUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVs
ZTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUocFRhZykpCi0gICAgICAgIHJl
dHVybiBQYXJhZ3JhcGhSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlBh
cmFncmFwaDsKIAogICAgIGlmIChpczxIVE1MTGFiZWxFbGVtZW50Pihub2RlKSkKLSAgICAgICAg
cmV0dXJuIExhYmVsUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJl
bDsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGZuVGFnKSkKLSAgICAgICAg
cmV0dXJuIERlZmluaXRpb25Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OkRlZmluaXRpb247CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRpdlRhZykp
Ci0gICAgICAgIHJldHVybiBEaXZSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJv
bGU6OkRpdjsKIAogICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQotICAgICAgICBy
ZXR1cm4gRm9ybVJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9ybTsK
IAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYXJ0aWNsZVRhZykpCi0gICAgICAg
IHJldHVybiBEb2N1bWVudEFydGljbGVSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OkRvY3VtZW50QXJ0aWNsZTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05h
bWUobWFpblRhZykpCi0gICAgICAgIHJldHVybiBMYW5kbWFya01haW5Sb2xlOworICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjsKIAogICAgIGlmIChub2RlICYm
IG5vZGUtPmhhc1RhZ05hbWUobmF2VGFnKSkKLSAgICAgICAgcmV0dXJuIExhbmRtYXJrTmF2aWdh
dGlvblJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZp
Z2F0aW9uOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhc2lkZVRhZykpCi0g
ICAgICAgIHJldHVybiBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeTsKIAogICAgIC8vIFRoZSBk
ZWZhdWx0IHJvbGUgYXR0cmlidXRlIHZhbHVlIGZvciB0aGUgc2VjdGlvbiBlbGVtZW50LCByZWdp
b24sIGJlY2FtZSBhIGxhbmRtYXJrIGluIEFSSUEgMS4xLgogICAgIC8vIFRoZSBIVE1MIEFBTSBz
cGVjIHNheXMgaXQgaXMgInN0cm9uZ2x5IHJlY29tbWVuZGVkIiB0aGF0IEFUcyBvbmx5IGNvbnZl
eSBhbmQgcHJvdmlkZSBuYXZpZ2F0aW9uCiAgICAgLy8gZm9yIHNlY3Rpb24gZWxlbWVudHMgd2hp
Y2ggaGF2ZSBuYW1lcy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHNlY3Rpb25U
YWcpKQotICAgICAgICByZXR1cm4gaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKSB8fCBoYXNB
dHRyaWJ1dGUoYXJpYV9sYWJlbGxlZGJ5QXR0cikgPyBMYW5kbWFya1JlZ2lvblJvbGUgOiBUZXh0
R3JvdXBSb2xlOworICAgICAgICByZXR1cm4gaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKSB8
fCBoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbGxlZGJ5QXR0cikgPyBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtSZWdpb24gOiBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwOwogCiAgICAgaWYg
KG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhZGRyZXNzVGFnKSkKLSAgICAgICAgcmV0dXJuIExh
bmRtYXJrQ29udGVudEluZm9Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OkxhbmRtYXJrQ29udGVudEluZm87CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1l
KGJsb2NrcXVvdGVUYWcpKQotICAgICAgICByZXR1cm4gQmxvY2txdW90ZVJvbGU7CisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QmxvY2txdW90ZTsKIAogICAgIGlmIChub2RlICYm
IG5vZGUtPmhhc1RhZ05hbWUoY2FwdGlvblRhZykpCi0gICAgICAgIHJldHVybiBDYXB0aW9uUm9s
ZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDYXB0aW9uOwogICAgIAogICAg
IGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUobWFya1RhZykpCi0gICAgICAgIHJldHVybiBN
YXJrUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXJrOwogCiAgICAg
aWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShwcmVUYWcpKQotICAgICAgICByZXR1cm4gUHJl
Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpQcmU7CiAKICAgICBpZiAo
aXM8SFRNTERldGFpbHNFbGVtZW50Pihub2RlKSkKLSAgICAgICAgcmV0dXJuIERldGFpbHNSb2xl
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM7CiAgICAgaWYgKGlz
PEhUTUxTdW1tYXJ5RWxlbWVudD4obm9kZSkpCi0gICAgICAgIHJldHVybiBTdW1tYXJ5Um9sZTsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTdW1tYXJ5OwogICAgIAogICAgIC8v
IGh0dHA6Ly9yYXdnaXQuY29tL3czYy9hcmlhL21hc3Rlci9odG1sLWFhbS9odG1sLWFhbS5odG1s
CiAgICAgLy8gT3V0cHV0IGVsZW1lbnRzIHNob3VsZCBiZSBtYXBwZWQgdG8gc3RhdHVzIHJvbGUu
CiAgICAgaWYgKGlzT3V0cHV0KCkpCi0gICAgICAgIHJldHVybiBBcHBsaWNhdGlvblN0YXR1c1Jv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM7
CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUp
KQotICAgICAgICByZXR1cm4gVmlkZW9Sb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OlZpZGVvOwogICAgIGlmIChpczxIVE1MQXVkaW9FbGVtZW50Pihub2RlKSkKLSAgICAg
ICAgcmV0dXJuIEF1ZGlvUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpB
dWRpbzsKICNlbmRpZgogICAgIAogICAgIC8vIFRoZSBIVE1MIGVsZW1lbnQgc2hvdWxkIG5vdCBi
ZSBleHBvc2VkIGFzIGFuIGVsZW1lbnQuIFRoYXQncyB3aGF0IHRoZSBSZW5kZXJWaWV3IGVsZW1l
bnQgZG9lcy4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpKQotICAg
ICAgICByZXR1cm4gSWdub3JlZFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SWdub3JlZDsKIAogICAgIC8vIFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBiYW5uZXIvY29u
dGVudEluZm8gcGVyIHBhZ2UuIElmIGhlYWRlci9mb290ZXIgYXJlIGJlaW5nIHVzZWQgd2l0aGlu
IGFuIGFydGljbGUgb3Igc2VjdGlvbgogICAgIC8vIHRoZW4gaXQgc2hvdWxkIG5vdCBiZSBleHBv
c2VkIGFzIHdob2xlIHBhZ2UncyBiYW5uZXIvY29udGVudEluZm8KICAgICBpZiAobm9kZSAmJiBu
b2RlLT5oYXNUYWdOYW1lKGhlYWRlclRhZykgJiYgIWlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUo
YXJ0aWNsZVRhZykgJiYgIWlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoc2VjdGlvblRhZykpCi0g
ICAgICAgIHJldHVybiBMYW5kbWFya0Jhbm5lclJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFn
TmFtZShmb290ZXJUYWcpICYmICFpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKGFydGljbGVUYWcp
ICYmICFpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKHNlY3Rpb25UYWcpKQotICAgICAgICByZXR1
cm4gRm9vdGVyUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXI7
CiAgICAgCiAgICAgLy8gbWVudSB0YWdzIHdpdGggdG9vbGJhciB0eXBlIHNob3VsZCBoYXZlIFRv
b2xiYXIgcm9sZS4KICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKG1lbnVUYWcpICYm
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJpYnV0ZSh0eXBlQXR0ciksICJ0
b29sYmFyIikpCi0gICAgICAgIHJldHVybiBUb29sYmFyUm9sZTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOwogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhh
c1RhZ05hbWUodGltZVRhZykpCi0gICAgICAgIHJldHVybiBUaW1lUm9sZTsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1lOwogICAgIAogICAgIC8vIElmIHRoZSBlbGVtZW50
IGRvZXMgbm90IGhhdmUgcm9sZSwgYnV0IGl0IGhhcyBBUklBIGF0dHJpYnV0ZXMsIG9yIGFjY2Vw
dHMgdGFiIGZvY3VzLCBhY2Nlc3NpYmlsaXR5IHNob3VsZCBmYWxsYmFjayB0byBleHBvc2luZyBp
dCBhcyBhIGdyb3VwLgogICAgIGlmIChzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgfHwgY2FuU2V0
Rm9jdXNBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsKIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc1Jl
bmRlckJsb2NrRmxvdygpKQotICAgICAgICByZXR1cm4gbV9yZW5kZXJlci0+aXNBbm9ueW1vdXNC
bG9jaygpID8gVGV4dEdyb3VwUm9sZSA6IEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIG1fcmVu
ZGVyZXItPmlzQW5vbnltb3VzQmxvY2soKSA/IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0R3JvdXAg
OiBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA7CiAgICAgCi0gICAgLy8gSW5saW5lUm9sZSBpcyB0
aGUgZmluYWwgZmFsbGJhY2sgYmVmb3JlIGFzc2lnbmluZyBVbmtub3duUm9sZSB0byBhbiBvYmpl
Y3QuIEl0IG1ha2VzIGl0CisgICAgLy8gSW5saW5lUm9sZSBpcyB0aGUgZmluYWwgZmFsbGJhY2sg
YmVmb3JlIGFzc2lnbmluZyBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biB0byBhbiBvYmplY3Qu
IEl0IG1ha2VzIGl0CiAgICAgLy8gcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggdHJ1bHkgdW5rbm93
biBvYmplY3RzIGZyb20gbm9uLWZvY3VzYWJsZSBpbmxpbmUgdGV4dCBlbGVtZW50cwogICAgIC8v
IHdoaWNoIGhhdmUgYW4gZXZlbnQgaGFuZGxlciBvciBhdHRyaWJ1dGUgc3VnZ2VzdGluZyBwb3Nz
aWJsZSBpbmNsdXNpb24gYnkgdGhlIHBsYXRmb3JtLgogICAgIGlmIChpczxSZW5kZXJJbmxpbmU+
KCptX3JlbmRlcmVyKQogICAgICAgICAmJiAoaGFzQXR0cmlidXRlc1JlcXVpcmVkRm9ySW5jbHVz
aW9uKCkKICAgICAgICAgICAgIHx8IChub2RlICYmIG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkp
CiAgICAgICAgICAgICB8fCAoc3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpICYmICFnZXRBdHRy
aWJ1dGUoZGF0ZXRpbWVBdHRyKS5pc0VtcHR5KCkpKSkKLSAgICAgICAgcmV0dXJuIElubGluZVJv
bGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5lOwogCi0gICAgcmV0
dXJuIFVua25vd25Sb2xlOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsK
IH0KIAogQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFPcmll
bnRhdGlvbiA9IGdldEF0dHJpYnV0ZShhcmlhX29yaWVudGF0aW9uQXR0cik7CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgImhvcml6b250YWwi
KSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgInZlcnRp
Y2FsIikpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbDsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWw7CiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgInVuZGVm
aW5lZCIpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVk
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiAK
ICAgICAvLyBJbiBBUklBIDEuMSwgdGhlIGltcGxpY2l0IHZhbHVlIG9mIGFyaWEtb3JpZW50YXRp
b24gY2hhbmdlZCBmcm9tIGhvcml6b250YWwKICAgICAvLyB0byB1bmRlZmluZWQgb24gYWxsIHJv
bGVzIHRoYXQgZG9uJ3QgaGF2ZSB0aGVpciBvd24gcm9sZS1zcGVjaWZpYyB2YWx1ZXMuIEluCiAg
ICAgLy8gYWRkaXRpb24sIHRoZSBpbXBsaWNpdCB2YWx1ZSBvZiBjb21ib2JveCBiZWNhbWUgdW5k
ZWZpbmVkLgogICAgIGlmIChpc0NvbWJvQm94KCkgfHwgaXNSYWRpb0dyb3VwKCkgfHwgaXNUcmVl
R3JpZCgpKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVW5kZWZpbmVk
OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRlZmluZWQ7CiAK
ICAgICBpZiAoaXNTY3JvbGxiYXIoKSB8fCBpc0xpc3RCb3goKSB8fCBpc01lbnUoKSB8fCBpc1Ry
ZWUoKSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKICAgICAK
ICAgICBpZiAoaXNNZW51QmFyKCkgfHwgaXNTcGxpdHRlcigpIHx8IGlzVGFiTGlzdCgpIHx8IGlz
VG9vbGJhcigpIHx8IGlzU2xpZGVyKCkpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uOjpIb3Jpem9udGFsOwogICAgIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpv
cmllbnRhdGlvbigpOwogfQpAQCAtMjg4MSwxNCArMjg4MSwxNCBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmluaGVyaXRzCiAKICAgICBjb25zdCBWZWN0b3I8Y29uc3QgSFRNTFF1
YWxpZmllZE5hbWUqPiogcGFyZW50VGFnczsKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0g
ICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0gICAgY2FzZSBMaXN0TWFya2VyUm9sZTogeworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RNYXJrZXI6IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gbGlzdEl0ZW1QYXJl
bnRzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+
IHsgJmRsVGFnLCAmb2xUYWcsICZ1bFRhZyB9KTsKICAgICAgICAgcGFyZW50VGFncyA9ICZsaXN0
SXRlbVBhcmVudHMuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEdyaWRD
ZWxsUm9sZToKLSAgICBjYXNlIENlbGxSb2xlOiB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6R3JpZENlbGw6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDogewogICAgICAg
ICBzdGF0aWMgY29uc3QgYXV0byB0YWJsZUNlbGxQYXJlbnRzID0gbWFrZU5ldmVyRGVzdHJveWVk
KFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+IHsgJnRhYmxlVGFnIH0pOwogICAgICAg
ICBwYXJlbnRUYWdzID0gJnRhYmxlQ2VsbFBhcmVudHMuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMjkxMCw3ICsyOTEwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhl
cml0cwogICAgICAgICAvLyBiYXNlZCBvbiBpdHMgcHJlc2VudGF0aW9uYWwgc3RhdHVzLgogICAg
ICAgICBhdXRvJiBuYW1lID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLnRhZ1FOYW1lKCk7CiAg
ICAgICAgIGlmIChzdGQ6OmFueV9vZihwYXJlbnRUYWdzLT5iZWdpbigpLCBwYXJlbnRUYWdzLT5l
bmQoKSwgWyZuYW1lXSAoYXV0byogcG9zc2libGVOYW1lKSB7IHJldHVybiAqcG9zc2libGVOYW1l
ID09IG5hbWU7IH0pKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+cm9sZVZhbHVlKCkgPT0g
UHJlc2VudGF0aW9uYWxSb2xlOworICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+cm9sZVZhbHVl
KCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsOwogICAgIH0KIAogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI5MjksMTEgKzI5MjksMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc1ByZXNlbgogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojphcmlh
Um9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdAogewogICAgIHN3aXRjaCAobV9h
cmlhUm9sZSkgewotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFNsaWRlclJvbGU6Ci0g
ICAgY2FzZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6Ci0gICAg
Y2FzZSBTcGluQnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkltYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5k
aWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b246CiAgICAgLy8g
Y2FzZSBTZXBhcmF0b3JSb2xlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpA
QCAtMjk0Myw3ICsyOTQzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojphcmlh
Um9sZQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0
cmlidXRlKCkgY29uc3QKIHsKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gRGV0YWlsc1JvbGUpCisg
ICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBBbiBvYmplY3QgY2FuIGJlIGV4cGFuZGVkIGlm
IGl0IGFyaWEtZXhwYW5kZWQgaXMgdHJ1ZSBvciBmYWxzZS4KQEAgLTI5OTcsNyArMjk5Nyw3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkSW1hZ2UKICAgICAgICAgLy8gYWRk
IGFuIDxhcmVhPiBlbGVtZW50IGZvciB0aGlzIGNoaWxkIGlmIGl0IGhhcyBhIGxpbmsKICAgICAg
ICAgaWYgKCFhcmVhLmlzTGluaygpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1
dG8mIGFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShJbWFnZU1hcExpbmtSb2xlKSk7CisgICAgICAgIGF1
dG8mIGFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rPigqYXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5r
KSk7CiAgICAgICAgIGFyZWFPYmplY3Quc2V0SFRNTEFyZWFFbGVtZW50KCZhcmVhKTsKICAgICAg
ICAgYXJlYU9iamVjdC5zZXRIVE1MTWFwRWxlbWVudChtYXApOwogICAgICAgICBhcmVhT2JqZWN0
LnNldFBhcmVudCh0aGlzKTsKQEAgLTMwMzIsNyArMzAzMiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkVGV4dEYKICAgICBpZiAoIWlzPFNwaW5CdXR0b25FbGVtZW50Pihz
cGluQnV0dG9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIGF4U3BpbkJ1
dHRvbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShTcGluQnV0dG9uUm9sZSkpOworICAgIGF1dG8mIGF4U3BpbkJ1dHRvbiA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uPigqYXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbikpOwogICAgIGF4U3BpbkJ1dHRv
bi5zZXRTcGluQnV0dG9uRWxlbWVudChkb3duY2FzdDxTcGluQnV0dG9uRWxlbWVudD4oc3BpbkJ1
dHRvbkVsZW1lbnQpKTsKICAgICBheFNwaW5CdXR0b24uc2V0UGFyZW50KHRoaXMpOwogICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZheFNwaW5CdXR0b24pOwpAQCAtMzIwNSw3ICszMjA1LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRIaWRkZQogdm9pZCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojp1cGRhdGVSb2xlQWZ0ZXJDaGlsZHJlbkNyZWF0aW9uKCkKIHsKICAgICAv
LyBJZiBhIG1lbnUgZG9lcyBub3QgaGF2ZSB2YWxpZCBtZW51aXRlbSBjaGlsZHJlbiwgaXQgc2hv
dWxkIG5vdCBiZSBleHBvc2VkIGFzIGEgbWVudS4KLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gTWVu
dVJvbGUpIHsKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnUp
IHsKICAgICAgICAgLy8gRWxlbWVudHMgbWFya2VkIGFzIG1lbnVzIG11c3QgaGF2ZSBhdCBsZWFz
dCBvbmUgbWVudSBpdGVtIGNoaWxkLgogICAgICAgICBzaXplX3QgbWVudUl0ZW1Db3VudCA9IDA7
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CkBAIC0zMjE2
LDcgKzMyMTYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIW1lbnVJdGVtQ291bnQpCi0gICAgICAgICAgICBtX3Jv
bGUgPSBHcm91cFJvbGU7CisgICAgICAgICAgICBtX3JvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JvdXA7CiAgICAgfQogfQogICAgIApAQCAtMzI5MCw4ICszMjkwLDggQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGl2ZQogCiAgICAgLy8gV0FJLUFSSUEgImFsZXJ0IiBh
bmQgInN0YXR1cyIgcm9sZXMgaGF2ZSBhbiBpbXBsaWNpdCBhcmlhLWF0b21pYyB2YWx1ZSBvZiB0
cnVlLgogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxl
cnRSb2xlOgotICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25TdGF0dXM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzMDcsMTYgKzMzMDcsMTYgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5IYXZlUwogewogICAgIHN3aXRjaCAocm9sZVZhbHVl
KCkpIHsKICAgICAvLyBUaGVzZSByb2xlcyBhcmUgY29udGFpbmVycyB3aG9zZSBjaGlsZHJlbiBz
dXBwb3J0IGFyaWEtc2VsZWN0ZWQ6Ci0gICAgY2FzZSBHcmlkUm9sZToKLSAgICBjYXNlIExpc3RC
b3hSb2xlOgotICAgIGNhc2UgVGFiTGlzdFJvbGU6Ci0gICAgY2FzZSBUcmVlUm9sZToKLSAgICBj
YXNlIFRyZWVHcmlkUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFiTGlzdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgogICAgIC8vIFRoZXNlIHJvbGVzIGFyZSBj
b250YWluZXJzIHdob3NlIGNoaWxkcmVuIGFyZSB0cmVhdGVkIGFzIHNlbGVjdGVkIGJ5IGFzc2lz
dGl2ZQogICAgIC8vIHRlY2hub2xvZ2llcy4gV2UgY2FuIGdldCB0aGUgInNlbGVjdGVkIiBpdGVt
IHZpYSBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgb3IgdGhlCiAgICAgLy8gZm9jdXNlZCBlbGVtZW50
LgotICAgIGNhc2UgTWVudVJvbGU6Ci0gICAgY2FzZSBNZW51QmFyUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpNZW51OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVC
YXI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTMzNjMsNyArMzM2Myw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YXJpYUxpc3QKIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7
CiAgICAgICAgIC8vIEV2ZXJ5IGNoaWxkIHNob3VsZCBoYXZlIGFyaWEtcm9sZSBvcHRpb24sIGFu
ZCBpZiBzbywgY2hlY2sgZm9yIHNlbGVjdGVkIGF0dHJpYnV0ZS9zdGF0ZS4KLSAgICAgICAgaWYg
KGNoaWxkLT5pc1NlbGVjdGVkKCkgJiYgY2hpbGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gTGlz
dEJveE9wdGlvblJvbGUpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5pc1NlbGVjdGVkKCkgJiYgY2hp
bGQtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3hPcHRp
b24pIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hpbGQpOwogICAgICAgICAgICAgaWYg
KCFpc011bHRpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzNzksMjEgKzMzNzksMjEg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZAogICAgICAgICByZXR1
cm47CiAKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBMaXN0Qm94Um9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OgogICAgICAgICAvLyBuYXRpdmUg
bGlzdCBib3hlcyB3b3VsZCBiZSBBY2Nlc3NpYmlsaXR5TGlzdEJveGVzLCBzbyBvbmx5IGNoZWNr
IGZvciBhcmlhIGxpc3QgYm94ZXMKICAgICAgICAgYXJpYUxpc3Rib3hTZWxlY3RlZENoaWxkcmVu
KHJlc3VsdCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEdyaWRSb2xlOgotICAgIGNhc2Ug
VHJlZVJvbGU6Ci0gICAgY2FzZSBUcmVlR3JpZFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgogICAgICAgICBhcmlhU2VsZWN0ZWRSb3dzKHJl
c3VsdCk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRhYkxpc3RSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Q6CiAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBzZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiSXRlbSgpKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChzZWxlY3RlZFRhYik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIE1lbnVSb2xl
OgotICAgIGNhc2UgTWVudUJhclJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyOgogICAgICAgICBpZiAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogZGVzY2VuZGFudCA9IGFjdGl2ZURlc2NlbmRhbnQoKSkgewogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChkZXNjZW5kYW50KTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM0MjQsNyArMzQyNCw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlz
aWJsZUMKICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7CiAgICAgICAgIAogICAgIC8vIG9u
bHkgbGlzdGJveGVzIGFyZSBhc2tlZCBmb3IgdGhlaXIgdmlzaWJsZSBjaGlsZHJlbi4gCi0gICAg
aWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gTGlzdEJveFJvbGUpIHsgLy8gbmF0aXZlIGxpc3Qg
Ym94ZXMgd291bGQgYmUgQWNjZXNzaWJpbGl0eUxpc3RCb3hlcywgc28gb25seSBjaGVjayBmb3Ig
YXJpYSBsaXN0IGJveGVzCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RCb3gpIHsKKyAgICAgICAgLy8gbmF0aXZlIGxpc3QgYm94ZXMgd291bGQg
YmUgQWNjZXNzaWJpbGl0eUxpc3RCb3hlcywgc28gb25seSBjaGVjayBmb3IgYXJpYSBsaXN0IGJv
eGVzCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMzQzMyw3ICszNDM0LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2
aXNpYmxlQwogIAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0YWJDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQocm9sZVZh
bHVlKCkgPT0gVGFiTGlzdFJvbGUpOworICAgIEFTU0VSVChyb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiTGlzdCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6
IGNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc1RhYkl0ZW0oKSkKQEAgLTM0NTMs
MTggKzM0NTQsMTggQEAgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ogog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGxpbmtBY3Rpb24oQVhMaW5r
QWN0aW9uVmVyYigpKTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEJ1
dHRvblJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0
b246CiAgICAgICAgIHJldHVybiBidXR0b25BY3Rpb247Ci0gICAgY2FzZSBUZXh0RmllbGRSb2xl
OgotICAgIGNhc2UgVGV4dEFyZWFSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRl
eHRGaWVsZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKICAgICAgICAg
cmV0dXJuIHRleHRGaWVsZEFjdGlvbjsKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSYWRpb0J1dHRvbjoKICAgICAgICAgcmV0dXJuIHJhZGlv
QnV0dG9uQWN0aW9uOwotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkNoZWNrQm94OgogICAgICAgICByZXR1cm4gaXNDaGVja2VkKCkgPyBjaGVja2Vk
Q2hlY2tCb3hBY3Rpb24gOiB1bmNoZWNrZWRDaGVja0JveEFjdGlvbjsKLSAgICBjYXNlIExpbmtS
b2xlOgotICAgIGNhc2UgV2ViQ29yZUxpbmtSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbms6CiAgICAg
ICAgIHJldHVybiBsaW5rQWN0aW9uOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOwpAQCAtMzY1NSwyNSArMzY1NiwyNSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6ZGVzY3JpCiBzdGF0aWMgQWNjZXNzaWJpbGl0eVJvbGUgbXNhYVJvbGVGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duOwogCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpCi0g
ICAgICAgIHJldHVybiBFZGl0YWJsZVRleHRSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVJvbGU6OkVkaXRhYmxlVGV4dDsKIAogICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4oKnJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIExpc3RJdGVtUm9sZTsKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbTsKIAotICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd247CiB9CiAKIEFjY2Vzc2liaWxpdHlS
b2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdAog
ewotICAgIGlmIChtX3JvbGVGb3JNU0FBICE9IFVua25vd25Sb2xlKQorICAgIGlmIChtX3JvbGVG
b3JNU0FBICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gbV9y
b2xlRm9yTVNBQTsKIAogICAgIG1fcm9sZUZvck1TQUEgPSBtc2FhUm9sZUZvclJlbmRlcmVyKHJl
bmRlcmVyKCkpOwogCi0gICAgaWYgKG1fcm9sZUZvck1TQUEgPT0gVW5rbm93blJvbGUpCisgICAg
aWYgKG1fcm9sZUZvck1TQUEgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAg
IG1fcm9sZUZvck1TQUEgPSByb2xlVmFsdWUoKTsKIAogICAgIHJldHVybiBtX3JvbGVGb3JNU0FB
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsMTEgKzExMSwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojph
Y2Nlc3NpYmlsCiB7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCk7CiAgICAgaWYgKCFkZXNjcmlwdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIHRleHRP
cmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoZGVzY3JpcHRpb24sIEFsdGVybmF0aXZlVGV4
dCkpOworICAgICAgICB0ZXh0T3JkZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGRlc2NyaXB0
aW9uLCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6QWx0ZXJuYXRpdmUpKTsKIAogICAgIFN0cmlu
ZyBoZWxwdGV4dCA9IGhlbHBUZXh0KCk7CiAgICAgaWYgKCFoZWxwdGV4dC5pc0VtcHR5KCkpCi0g
ICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaGVscHRleHQsIEhlbHBU
ZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoaGVscHRl
eHQsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwKSk7CiB9CiAKIFN0cmluZyBBY2Nlc3Np
YmlsaXR5U1ZHRWxlbWVudDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTIx
Nyw3ICsyMTcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Ojpjb21wdXRlQWNjCiAg
ICAgLy8gKiBUaGV5IGhhdmUgYW4gYW5jZXN0b3Igd2l0aCBDaGlsZHJlbiBQcmVzZW50YXRpb25h
bDogVHJ1ZSAoY292ZXJlZCBieSBDb3JlIEFBTSkKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7Ci0gICAgaWYgKGRl
Y2lzaW9uID09IElnbm9yZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR0hpZGRlbkNvbnRhaW5lcigpKQpAQCAtMjMwLDEwICsy
MzAsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVudDo6Y29tcHV0ZUFjYwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBQcmVz
ZW50YXRpb25hbFJvbGUgfHwgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSkKKyAgICBpZiAo
cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsIHx8IGluaGVy
aXRzUHJlc2VudGF0aW9uYWxSb2xlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gVW5rbm93blJvbGUpCisgICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIFRoZSBTVkcgQUFNIHN0YXRlcyB0ZXh0IGVsZW1lbnRzIHNob3VsZCBh
bHNvIGJlIGluY2x1ZGVkLCBpZiB0aGV5IGhhdmUgY29udGVudC4KQEAgLTI1OCwxMiArMjU4LDEy
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmluaGVyaXRzUHIKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgpOwot
ICAgIGlmIChyb2xlICE9IFNWR1RleHRQYXRoUm9sZSAmJiByb2xlICE9IFNWR1RTcGFuUm9sZSkK
KyAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dFBhdGggJiYgcm9sZSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVFNwYW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBh
cmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAgICBpZiAoaXM8
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4oKnBhcmVudCkgJiYgcGFyZW50LT5lbGVtZW50KCkt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dC0+cm9sZVZhbHVlKCkgPT0gUHJlc2VudGF0aW9uYWxSb2xlOworICAgICAgICAgICAgcmV0dXJu
IHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFs
OwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTI3Miw3ICsyNzIsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlTVkdFbGVtZW50Ojppbmhlcml0c1ByCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudDo6ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdAog
ewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChyb2xlICE9IFByZXNlbnRh
dGlvbmFsUm9sZSkKKyAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0
aW9uYWwpCiAgICAgICAgIHJldHVybiByb2xlOwogCiAgICAgLy8gVGhlIHByZXNlbmNlIG9mIGEg
J3RpdGxlJyBvciAnZGVzYycgY2hpbGQgZWxlbWVudCB0cnVtcHMgUHJlc2VudGF0aW9uYWxSb2xl
LgpAQCAtMjgwLDcgKzI4MCw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlTVkdF
bGVtZW4KICAgICAvLyBBdCB0aGlzIHRpbWUsIHRoZSBwcmVzZW5jZSBvZiBhIG1hdGNoaW5nICds
YW5nJyBhdHRyaWJ1dGUgaXMgbm90IG1lbnRpb25lZC4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkIDogY2hpbGRyZW5PZlR5cGU8U1ZHRWxlbWVudD4oKmVsZW1lbnQoKSkpIHsKICAgICAgICAg
aWYgKChpczxTVkdUaXRsZUVsZW1lbnQ+KGNoaWxkKSB8fCBpczxTVkdEZXNjRWxlbWVudD4oY2hp
bGQpKSkKLSAgICAgICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKKyAgICAgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bjsKICAgICB9CiAKICAgICByZXR1cm4gcm9sZTsK
QEAgLTI4OCwyMyArMjg4LDIzIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlTVkdF
bGVtZW4KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQ6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJv
bGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bikKICAgICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAKICAgICBFbGVtZW50KiBzdmdF
bGVtZW50ID0gZWxlbWVudCgpOwogCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHU2hhcGUoKSB8
fCBtX3JlbmRlcmVyLT5pc1NWR1BhdGgoKSB8fCBtX3JlbmRlcmVyLT5pc1NWR0ltYWdlKCkgfHwg
aXM8U1ZHVXNlRWxlbWVudD4oc3ZnRWxlbWVudCkpCi0gICAgICAgIHJldHVybiBJbWFnZVJvbGU7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U7CiAgICAgaWYgKG1fcmVu
ZGVyZXItPmlzU1ZHRm9yZWlnbk9iamVjdCgpIHx8IGlzPFNWR0dFbGVtZW50PihzdmdFbGVtZW50
KSkKLSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSb2xlOjpHcm91cDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdUZXh0KCkpCi0gICAgICAg
IHJldHVybiBTVkdUZXh0Um9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpT
VkdUZXh0OwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1RleHRQYXRoKCkpCi0gICAgICAgIHJl
dHVybiBTVkdUZXh0UGF0aFJvbGU7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U1ZHVGV4dFBhdGg7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzU1ZHVFNwYW4oKSkKLSAgICAgICAg
cmV0dXJuIFNWR1RTcGFuUm9sZTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpT
VkdUU3BhbjsKICAgICBpZiAoaXM8U1ZHQUVsZW1lbnQ+KHN2Z0VsZW1lbnQpKQotICAgICAgICBy
ZXR1cm4gV2ViQ29yZUxpbmtSb2xlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6
OldlYkNvcmVMaW5rOwogCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCShyZXZpc2lvbiAyMjQw
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
QWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICBXZWFrUHRyPEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+IG1fcGFyZW50OwotICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEdyb3Vw
Um9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cDsgfQogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gMjI0MDcxKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEwICs2NSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsCiAgICAgCiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewog
ICAgIC8vIEFSSUEgMS4xIEVsZW1lbnRzIHdpdGggdGhlIHJvbGUgc2Nyb2xsYmFyIGhhdmUgYW4g
aW1wbGljaXQgYXJpYS1vcmllbnRhdGlvbiB2YWx1ZSBvZiB2ZXJ0aWNhbC4KLSAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblVuZGVmaW5lZDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvblZlcnRpY2FsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpV
bmRlZmluZWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsOgog
ICAgICAgICByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhciA/IG1fdmVydGljYWxTY3JvbGxiYXIu
Z2V0KCkgOiBudWxscHRyOwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpv
bnRhbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDoKICAg
ICAgICAgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhciA/IG1faG9yaXpvbnRhbFNjcm9sbGJh
ci5nZXQoKSA6IG51bGxwdHI7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAkocmV2aXNp
b24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNjcm9s
bFZpZXc7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyBmaW5hbCA6IHB1YmxpYyBBY2Nl
c3NpYmlsaXR5T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3PiBjcmVhdGUoU2Nyb2xsVmlldyopOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbEFyZWFSb2xlOyB9CisgICAg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNj
ZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxWaWV3OyB9CiAKICAgICB2aXJ0dWFsIH5BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwCShyZXZpc2lvbiAyMjQwNzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxNCArNjcsMTQgQEAgQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uIEFjY2Vzc2liaWxpdHlTYwogewogICAgIC8vIEFSSUEgMS4xIEVsZW1lbnRzIHdpdGgg
dGhlIHJvbGUgc2Nyb2xsYmFyIGhhdmUgYW4gaW1wbGljaXQgYXJpYS1vcmllbnRhdGlvbiB2YWx1
ZSBvZiB2ZXJ0aWNhbC4KICAgICBpZiAoIW1fc2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb246OlZlcnRpY2FsOwogCiAgICAgaWYgKG1fc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uOjpIb3Jpem9udGFsOwogICAgIGlmIChtX3Njcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
OjpWZXJ0aWNhbDsKIAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNh
bDsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbDsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjppc0VuYWJsZWQoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyLmgJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbEJhclJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U2Nyb2xsQmFyOyB9CiAgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2
aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24gQWNjZXNzaWJpbGl0eVNsCiB7CiAgICAgLy8gRGVmYXVsdCB0byBob3Jp
em9udGFsIGluIHRoZSB1bmtub3duIGNhc2UuCiAgICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICAKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBtX3JlbmRlcmVyLT5zdHlsZSgpOwogCkBAIC02NCwxNSAr
NjQsMTUgQEAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlTbAogICAgIGNh
c2UgU2xpZGVySG9yaXpvbnRhbFBhcnQ6CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6CiAgICAg
Y2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJQYXJ0OgotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAgICAKICAgICBjYXNlIFNsaWRlclRodW1i
VmVydGljYWxQYXJ0OiAKICAgICBjYXNlIFNsaWRlclZlcnRpY2FsUGFydDoKICAgICBjYXNlIE1l
ZGlhVm9sdW1lU2xpZGVyUGFydDoKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRh
dGlvblZlcnRpY2FsOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpW
ZXJ0aWNhbDsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkhvcml6b250YWw7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb246Okhvcml6b250YWw7CiAgICAgfQogfQogICAgIApAQCAtODQsNyArODQsNyBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmFkZENoaWxkcmVuKCkKIAogICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAK
LSAgICBhdXRvJiB0aHVtYiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNh
Y2hlLT5nZXRPckNyZWF0ZShTbGlkZXJUaHVtYlJvbGUpKTsKKyAgICBhdXRvJiB0aHVtYiA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIpKTsKICAgICB0aHVtYi5zZXRQYXJlbnQodGhpcyk7
CiAKICAgICAvLyBCZWZvcmUgYWN0dWFsbHkgYWRkaW5nIHRoZSB2YWx1ZSBpbmRpY2F0b3IgdG8g
dGhlIGhpZXJhcmNoeSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2xpZGVyUm9s
ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7IH0KICAgICBib29sIGlzU2xpZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPiBjcmVhdGUoKTsKICAgICB2aXJ0
dWFsIH5BY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIoKSA9IGRlZmF1bHQ7CiAKLSAgICBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTbGlkZXJUaHVt
YlJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWI7IH0KICAgICBMYXlvdXRS
ZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEy
ICs4OCwxMiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjphZGRDaGlsZHJlCiAgICAg
CiAgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOwogICAgIAotICAgIGF1dG8mIGluY3JlbWVudG9y
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3Jl
YXRlKFNwaW5CdXR0b25QYXJ0Um9sZSkpOworICAgIGF1dG8mIGluY3JlbWVudG9yID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0PigqY2FjaGUtPmdldE9yQ3JlYXRlKEFjY2Vz
c2liaWxpdHlSb2xlOjpTcGluQnV0dG9uUGFydCkpOwogICAgIGluY3JlbWVudG9yLnNldElzSW5j
cmVtZW50b3IodHJ1ZSk7CiAgICAgaW5jcmVtZW50b3Iuc2V0UGFyZW50KHRoaXMpOwogICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKCZpbmNyZW1lbnRvcik7CiAKLSAgICBhdXRvJiBkZWNyZW1lbnRvciA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0
ZShTcGluQnV0dG9uUGFydFJvbGUpKTsKKyAgICBhdXRvJiBkZWNyZW1lbnRvciA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydD4oKmNhY2hlLT5nZXRPckNyZWF0ZShBY2Nlc3Np
YmlsaXR5Um9sZTo6U3BpbkJ1dHRvblBhcnQpKTsKICAgICBkZWNyZW1lbnRvci5zZXRJc0luY3Jl
bWVudG9yKGZhbHNlKTsKICAgICBkZWNyZW1lbnRvci5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9j
aGlsZHJlbi5hcHBlbmQoJmRlY3JlbWVudG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgJKHJldmlzaW9u
IDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKCk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTcGluQnV0dG9uUm9sZTsg
fQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGluQnV0dG9uOyB9CiAgICAgYm9vbCBpc1NwaW5CdXR0
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc05hdGl2ZVNw
aW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhZGRD
aGlsZHJlbigpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uUGFydCgpOwogICAgIAogICAgIGJvb2wgcHJlc3MoKSBvdmVycmlk
ZTsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBCdXR0b25Sb2xlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjsgfQogICAgIGJv
b2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJ
KHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6aGFzQVJJQVJvbGUoKSBjCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9IGFyaWFSb2xlQXR0cmlidXRl
KCk7Ci0gICAgaWYgKGFyaWFSb2xlICE9IFVua25vd25Sb2xlKQorICAgIGlmIChhcmlhUm9sZSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93bikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmFkZENoaWxkcmVuKCkKICAgICAvLyBtYWtlIHRoZSBjb2x1bW5zIGJhc2VkIG9uIHRoZSBu
dW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IG1heENvbHVtbkNvdW50OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4+KCpheENhY2hlLT5nZXRPckNyZWF0ZShDb2x1bW5Sb2xlKSk7CisgICAgICAgIGF1dG8m
IGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsKICAgICAgICAgY29sdW1uLnNl
dENvbHVtbkluZGV4KChpbnQpaSk7CiAgICAgICAgIGNvbHVtbi5zZXRQYXJlbnQodGhpcyk7CiAg
ICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7CkBAIC01MDUsNyArNTA1LDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOgogICAgIGlmIChtX2hlYWRlckNv
bnRhaW5lcikKICAgICAgICAgcmV0dXJuIG1faGVhZGVyQ29udGFpbmVyLmdldCgpOwogICAgIAot
ICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q+
KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKFRhYmxlSGVhZGVyQ29udGFpbmVyUm9sZSkp
OworICAgIGF1dG8mIHRhYmxlSGVhZGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3Q+KCpheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJs
ZUhlYWRlckNvbnRhaW5lcikpOwogICAgIHRhYmxlSGVhZGVyLnNldFBhcmVudCh0aGlzKTsKIAog
ICAgIG1faGVhZGVyQ29udGFpbmVyID0gJnRhYmxlSGVhZGVyOwpAQCAtNjQ3LDE4ICs2NDcsMTgg
QEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpybwogICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9sZVZhbHVlKCk7CiAgICAgCiAgICAgQWNj
ZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBhcmlhUm9sZUF0dHJpYnV0ZSgpOwotICAgIGlmIChh
cmlhUm9sZSA9PSBHcmlkUm9sZSB8fCBhcmlhUm9sZSA9PSBUcmVlR3JpZFJvbGUpCisgICAgaWYg
KGFyaWFSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkIHx8IGFyaWFSb2xlID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpUcmVlR3JpZCkKICAgICAgICAgcmV0dXJuIGFyaWFSb2xlOwogCi0gICAg
cmV0dXJuIFRhYmxlUm9sZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlOwog
fQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lz
aW9uID0gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNs
dWRlT2JqZWN0KQorICAgIGlmIChkZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uOjpJbmNsdWRlT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lz
aW9uID09IElnbm9yZU9iamVjdCkKKyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
ICAgICBpZiAoIWlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSkKQEAgLTY3MSw3ICs2
NzEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGVFbGVtZW50VGV4CiB7CiAgICAg
U3RyaW5nIHRpdGxlID0gdGhpcy0+dGl0bGUoKTsKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkK
LSAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dCh0aXRsZSwgTGFiZWxC
eUVsZW1lbnRUZXh0KSk7CisgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRl
eHQodGl0bGUsIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCkpOwogfQog
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDkgKzU4LDkg
QEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2liaWxpdAogYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmpl
Y3RJbmNsdXNpb24oKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAgICBp
ZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmpl
Y3QpCisgICAgaWYgKGRlY2lzaW9uID09IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Okln
bm9yZU9iamVjdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gSWdub3JlIGFu
b255bW91cyB0YWJsZSBjZWxscyBhcyBsb25nIGFzIHRoZXkncmUgbm90IGluIGEgdGFibGUgKGll
LiB3aGVuIGRpc3BsYXk6dGFibGUgaXMgdXNlZCkuCkBAIC0xMjgsMTcgKzEyOCwxNyBAQCBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsCiAgICAgLy8gcm9sZSwgZmFsbGlu
ZyBiYWNrIG9uIHRoZSByb2xlIHRvIGJlIHVzZWQgaWYgd2UgZGV0ZXJtaW5lIGhlcmUgdGhhdCB0
aGUgZWxlbWVudAogICAgIC8vIHNob3VsZCBub3QgYmUgZXhwb3NlZCBhcyBhIGNlbGwuIFRodXMg
aWYgd2UgYWxyZWFkeSBrbm93IGl0J3MgYSBjZWxsLCByZXR1cm4gdGhhdC4KICAgICBBY2Nlc3Np
YmlsaXR5Um9sZSBkZWZhdWx0Um9sZSA9IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7Ci0gICAgaWYgKGRlZmF1bHRSb2xlID09IENvbHVtbkhl
YWRlclJvbGUgfHwgZGVmYXVsdFJvbGUgPT0gUm93SGVhZGVyUm9sZSB8fCBkZWZhdWx0Um9sZSA9
PSBDZWxsUm9sZSB8fCBkZWZhdWx0Um9sZSA9PSBHcmlkQ2VsbFJvbGUpCisgICAgaWYgKGRlZmF1
bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIgfHwgZGVmYXVsdFJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q2VsbCB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jp
ZENlbGwpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Um9sZTsKIAogICAgIGlmICghaXNUYWJsZUNl
bGwoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlOwogICAgIGlmIChpc0NvbHVtbkhlYWRl
ckNlbGwoKSkKLSAgICAgICAgcmV0dXJuIENvbHVtbkhlYWRlclJvbGU7CisgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyOwogICAgIGlmIChpc1Jvd0hlYWRlckNl
bGwoKSkKLSAgICAgICAgcmV0dXJuIFJvd0hlYWRlclJvbGU7CisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyOwogCi0gICAgcmV0dXJuIENlbGxSb2xlOworICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbDsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUhlYWRlckNlbGwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUMKICAgICAKICAgICBp
ZiAocGFyZW50VGFibGUuaXNBcmlhVGFibGUoKSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNlbGwgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAoY2VsbC0+YXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBDb2x1bW5IZWFkZXJSb2xlKQorICAgICAgICAgICAgaWYgKGNlbGwtPmFyaWFS
b2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcikKICAgICAg
ICAgICAgICAgICByZXR1cm4gY2VsbC5nZXQoKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVy
T2JqZWN0KCk7CiAgICAgICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbHVtblJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6
Q29sdW1uOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRleChpbnQgY29sdW1uSW5kZXgp
IHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CiAgICAgaW50IGNvbHVtbkluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9jb2x1bW5JbmRleDsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuaAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmls
aXR5VGFibGVIZWFkZXJDb250YWluZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2li
aWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcigpOwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFRhYmxlSGVhZGVyQ29udGFpbmVy
Um9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZUhlYWRlckNvbnRhaW5lcjsgfQogICAg
IAogICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5j
cHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDEwIEBA
IEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzoKICAgICBpZiAoIWlzVGFi
bGVSb3coKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJv
bGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VW5rbm93bikKICAgICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAKLSAgICByZXR1cm4gUm93Um9s
ZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlJvdzsKIH0KIAogYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGVSb3c6OmlzVGFibGVSb3coKSBjb25zdApAQCAtODAsOSArODAsOSBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSCiBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZVJvdzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogeyAgICAKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gZGVmYXVsdE9iamVjdElu
Y2x1c2lvbigpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQorICAgIGlmIChk
ZWNpc2lvbiA9PSBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkK
KyAgICBpZiAoZGVjaXNpb24gPT0gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoIWlzVGFibGVSb3co
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRyZWUuY3BwCShyZXZpc2lvbiAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5
LDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmNvbXB1dGVBY2Nlc3NpYmkKIAogQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRyZWU6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkKIHsKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgp
KSAhPSBUcmVlUm9sZSkKKyAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0
dHJpYnV0ZSgpKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZSkKICAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAK
LSAgICByZXR1cm4gaXNUcmVlVmFsaWQoKSA/IFRyZWVSb2xlIDogR3JvdXBSb2xlOworICAgIHJl
dHVybiBpc1RyZWVWYWxpZCgpID8gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWUgOiBBY2Nlc3NpYmls
aXR5Um9sZTo6R3JvdXA7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6Om5vZGVIYXNUcmVl
SXRlbUNoaWxkKE5vZGUmIG5vZGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAkocmV2aXNpb24gMjI0
MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpkZXRhY2hXcmFwcGVyKEFjY2VzcwogCiAgICAgLy8gSWYgYW4gb2JqZWN0IGlzIGJlaW5nIGRl
dGFjaGVkIE5PVCBiZWNhdXNlIG9mIHRoZSBBWE9iamVjdENhY2hlIGJlaW5nIGRlc3Ryb3llZCwK
ICAgICAvLyB0aGVuIGl0J3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBhY2Nlc3NpYmlsaXR5IHRy
ZWUgYW5kIHdlIHNob3VsZCBlbWl0IGEgc2lnbmFsLgotICAgIGlmIChkZXRhY2htZW50VHlwZSAh
PSBDYWNoZURlc3Ryb3llZCkgeworICAgIGlmIChkZXRhY2htZW50VHlwZSAhPSBBY2Nlc3NpYmls
aXR5RGV0YWNobWVudFR5cGU6OkNhY2hlRGVzdHJveWVkKSB7CiAgICAgICAgIGlmIChvYmotPmRv
Y3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIExvb2sgZm9yIHRoZSByaWdodCBvYmplY3QgdG8g
ZW1pdCB0aGUgc2lnbmFsIGZyb20sIGJ1dCB1c2luZyB0aGUgaW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgIC8vIG9mIGF0a19vYmplY3RfZ2V0X3BhcmVudCBmcm9tIEF0a09iamVjdCBjbGFzcyAo
d2hpY2ggdXNlcyBhIGNhY2hlZCBwb2ludGVyIGlmIHNldCkKQEAgLTI0NCw3ICsyNDQsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhCiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBBWEN1cnJlbnRDaGFuZ2VkOgotICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9z
dGF0ZV9jaGFuZ2UoYXhPYmplY3QsIEFUS19TVEFURV9BQ1RJVkUsIGNvcmVPYmplY3QtPmFyaWFD
dXJyZW50U3RhdGUoKSAhPSBBUklBQ3VycmVudEZhbHNlKTsKKyAgICAgICAgYXRrX29iamVjdF9u
b3RpZnlfc3RhdGVfY2hhbmdlKGF4T2JqZWN0LCBBVEtfU1RBVEVfQUNUSVZFLCBjb3JlT2JqZWN0
LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZh
bHNlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFYUm93RXhwYW5kZWQ6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nlc3Np
YmlsaXR5T2JqZWN0QXRrLmNwcAkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDExNyArNDMsMTE3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNj
ZXNzaWJpbGkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmpl
Y3QoKTsKICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsK
KyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRlZmF1bHRCZWhh
dmlvcjsKIAogICAgIC8vIElmIHRoZSBhdXRob3IgaGFzIHByb3ZpZGVkIGEgcm9sZSwgcGxhdGZv
cm0tc3BlY2lmaWMgaW5jbHVzaW9uIGxpa2VseSBkb2Vzbid0IGFwcGx5LgotICAgIGlmIChhcmlh
Um9sZUF0dHJpYnV0ZSgpICE9IFVua25vd25Sb2xlKQotICAgICAgICByZXR1cm4gRGVmYXVsdEJl
aGF2aW9yOworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xl
OjpVbmtub3duKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
RGVmYXVsdEJlaGF2aW9yOwogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1
ZSgpOwogICAgIC8vIFdlIGV4cG9zZSB0aGUgc2xpZGVyIGFzIGEgd2hvbGUgYnV0IG5vdCBpdHMg
dmFsdWUgaW5kaWNhdG9yLgotICAgIGlmIChyb2xlID09IFNsaWRlclRodW1iUm9sZSkKLSAgICAg
ICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyVGh1bWIpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uOjpJZ25vcmVPYmplY3Q7CiAKICAgICAvLyBXaGVuIGEgbGlzdCBpdGVtIGlzIG1hZGUgdXAg
ZW50aXJlbHkgb2YgY2hpbGRyZW4gKGUuZy4gcGFyYWdyYXBocykKICAgICAvLyB0aGUgbGlzdCBp
dGVtIGdldHMgaWdub3JlZC4gV2UgbmVlZCBpdC4KICAgICBpZiAoaXNHcm91cCgpICYmIHBhcmVu
dC0+aXNMaXN0KCkpCi0gICAgICAgIHJldHVybiBJbmNsdWRlT2JqZWN0OworICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdDsKIAogICAgIC8v
IEVudHJpZXMgYW5kIHBhc3N3b3JkIGZpZWxkcyBoYXZlIGV4dHJhbmVvdXMgY2hpbGRyZW4gd2hp
Y2ggd2Ugd2FudCB0byBpZ25vcmUuCiAgICAgaWYgKHBhcmVudC0+aXNQYXNzd29yZEZpZWxkKCkg
fHwgcGFyZW50LT5pc1RleHRDb250cm9sKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmpl
Y3Q7CiAKICAgICAvLyBJbmNsdWRlIGFsbCB0YWJsZXMsIGV2ZW4gbGF5b3V0IHRhYmxlcy4gVGhl
IEFUIGNhbiBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIGVhY2guCi0gICAgaWYgKHJvbGUgPT0gQ2Vs
bFJvbGUgfHwgcm9sZSA9PSBUYWJsZVJvbGUgfHwgcm9sZSA9PSBDb2x1bW5IZWFkZXJSb2xlIHx8
IHJvbGUgPT0gUm93SGVhZGVyUm9sZSkKLSAgICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7Cisg
ICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwgfHwgcm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFibGUgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVh
ZGVyIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcikKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkluY2x1ZGVPYmplY3Q7CiAKICAgICAv
LyBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRleHQgc2hvdWxkIGltcGxlbWVudCBBdGtUZXh0
IGl0c2VsZi4KICAgICAvLyBIb3dldmVyLCBXZWJDb3JlIGFsc28gbWFwcyBBUklBJ3MgInRleHQi
IHJvbGUgdG8gdGhlIFN0YXRpY1RleHRSb2xlLgotICAgIGlmIChyb2xlID09IFN0YXRpY1RleHRS
b2xlKQotICAgICAgICByZXR1cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSA/
IERlZmF1bHRCZWhhdmlvciA6IElnbm9yZU9iamVjdDsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6U3RhdGljVGV4dCkKKyAgICAgICAgcmV0dXJuIGFyaWFSb2xlQXR0cmlidXRl
KCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gPyBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uOjpEZWZhdWx0QmVoYXZpb3IgOiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJ
Z25vcmVPYmplY3Q7CiAKICAgICAvLyBJbmNsdWRlIGFsbCBsaXN0IGl0ZW1zLCByZWdhcmRsZXNz
IHRoZXkgaGF2ZSBvciBub3QgaW5saW5lIGNoaWxkcmVuCi0gICAgaWYgKHJvbGUgPT0gTGlzdEl0
ZW1Sb2xlKQotICAgICAgICByZXR1cm4gSW5jbHVkZU9iamVjdDsKKyAgICBpZiAocm9sZSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0OwogCiAgICAgLy8gQnVsbGV0cy9udW1iZXJz
IGZvciBsaXN0IGl0ZW1zIHNob3VsZG4ndCBiZSBleHBvc2VkIGFzIEF0a09iamVjdHMuCi0gICAg
aWYgKHJvbGUgPT0gTGlzdE1hcmtlclJvbGUpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7
CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJrZXIpCisgICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAKICAg
ICAvLyBOZXZlciBleHBvc2UgYW4gdW5rbm93biBvYmplY3QsIHNpbmNlIEFUJ3Mgd29uJ3Qga25v
dyB3aGF0IHRvCiAgICAgLy8gZG8gd2l0aCB0aGVtLiBUaGlzIGlzIHdoYXQgaXMgZG9uZSBvbiB0
aGUgTWFjIGFzIHdlbGwuCi0gICAgaWYgKHJvbGUgPT0gVW5rbm93blJvbGUpCi0gICAgICAgIHJl
dHVybiBJZ25vcmVPYmplY3Q7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVu
a25vd24pCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25v
cmVPYmplY3Q7CiAKLSAgICBpZiAocm9sZSA9PSBJbmxpbmVSb2xlKQotICAgICAgICByZXR1cm4g
SW5jbHVkZU9iamVjdDsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW5saW5l
KQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SW5jbHVkZU9i
amVjdDsKIAogICAgIC8vIExpbmVzIHBhc3QgdGhpcyBwb2ludCBvbmx5IG1ha2Ugc2Vuc2UgZm9y
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3RzLgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2Jq
ZWN0ID0gcmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlck9iamVjdCkKLSAgICAgICAgcmV0dXJu
IERlZmF1bHRCZWhhdmlvcjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb246OkRlZmF1bHRCZWhhdmlvcjsKIAogICAgIC8vIFdlIGFsd2F5cyB3YW50IHRvIGluY2x1
ZGUgcGFyYWdyYXBocyB0aGF0IGhhdmUgcmVuZGVyZWQgY29udGVudC4KICAgICAvLyBXZWJDb3Jl
IEFjY2Vzc2liaWxpdHkgZG9lcyBzbyB1bmxlc3MgdGhlcmUgaXMgYSBSZW5kZXJCbG9jayBjaGls
ZC4KLSAgICBpZiAocm9sZSA9PSBQYXJhZ3JhcGhSb2xlKSB7CisgICAgaWYgKHJvbGUgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaCkgewogICAgICAgICBhdXRvIGNoaWxkID0gY2hpbGRy
ZW5PZlR5cGU8UmVuZGVyQmxvY2s+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJPYmpl
Y3QpKS5maXJzdCgpOwotICAgICAgICByZXR1cm4gY2hpbGQgPyBJbmNsdWRlT2JqZWN0IDogRGVm
YXVsdEJlaGF2aW9yOworICAgICAgICByZXR1cm4gY2hpbGQgPyBBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uOjpJbmNsdWRlT2JqZWN0IDogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
RGVmYXVsdEJlaGF2aW9yOwogICAgIH0KIAogICAgIC8vIFdlIGFsd2F5cyB3YW50IHRvIGluY2x1
ZGUgdGFibGUgY2VsbHMgKGxheW91dCBhbmQgQ1NTKSB0aGF0IGhhdmUgcmVuZGVyZWQgdGV4dCBj
b250ZW50LgogICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlck9iamVjdCkpIHsKICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVj
dD4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnJlbmRlck9iamVjdCkpKSB7CiAgICAgICAgICAg
ICBpZiAoaXM8UmVuZGVySW5saW5lPihjaGlsZCkgfHwgaXM8UmVuZGVyVGV4dD4oY2hpbGQpIHx8
IGlzPEhUTUxTcGFuRWxlbWVudD4oY2hpbGQubm9kZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gSW5jbHVkZU9iamVjdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
RGVmYXVsdEJlaGF2aW9yOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1
c2lvbjo6RGVmYXVsdEJlaGF2aW9yOwogICAgIH0KIAogICAgIGlmIChyZW5kZXJPYmplY3QtPmlz
QW5vbnltb3VzQmxvY2soKSkgewogICAgICAgICAvLyBUaGUgdGV4dCBkaXNwbGF5ZWQgYnkgYW4g
QVJJQSBtZW51IGl0ZW0gaXMgZXhwb3NlZCB0aHJvdWdoIHRoZSBhY2Nlc3NpYmxlIG5hbWUuCiAg
ICAgICAgIGlmIChwYXJlbnQtPmlzTWVudUl0ZW0oKSkKLSAgICAgICAgICAgIHJldHVybiBJZ25v
cmVPYmplY3Q7CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lv
bjo6SWdub3JlT2JqZWN0OwogCiAgICAgICAgIC8vIFRoZSB0ZXh0IGRpc3BsYXllZCBpbiBoZWFk
aW5ncyBpcyB0eXBpY2FsbHkgZXhwb3NlZCBpbiB0aGUgaGVhZGluZyBpdHNlbGYuCiAgICAgICAg
IGlmIChwYXJlbnQtPmlzSGVhZGluZygpKQotICAgICAgICAgICAgcmV0dXJuIElnbm9yZU9iamVj
dDsKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25v
cmVPYmplY3Q7CiAKICAgICAgICAgLy8gVGhlIHRleHQgZGlzcGxheWVkIGluIGxpc3QgaXRlbXMg
aXMgdHlwaWNhbGx5IGV4cG9zZWQgaW4gdGhlIGxpc3QgaXRlbSBpdHNlbGYuCiAgICAgICAgIGlm
IChwYXJlbnQtPmlzTGlzdEl0ZW0oKSkKLSAgICAgICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7
CisgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3Jl
T2JqZWN0OwogCiAgICAgICAgIC8vIFRoZSB0ZXh0IGRpc3BsYXllZCBpbiBsaW5rcyBpcyB0eXBp
Y2FsbHkgZXhwb3NlZCBpbiB0aGUgbGluayBpdHNlbGYuCiAgICAgICAgIGlmIChwYXJlbnQtPmlz
TGluaygpKQotICAgICAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgbmV4dCBvbmUgbmVlZHMgc29tZSBmdXJ0aGVyIGNvbnNpZGVyYXRp
b24uIEJ1dCBwYXJhZ3JhcGhzIGFyZSBub3QKICAgICAgICAgLy8gdHlwaWNhbGx5IGh1Z2UgKGxp
a2UgZGl2cykuIEFuZCBpZ25vcmluZyBhbm9ueW1vdXMgYmxvY2sgY2hpbGRyZW4gb2YgcGFyYWdy
YXBocwogICAgICAgICAvLyB3aWxsIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW9yLgotICAgICAg
ICBpZiAocGFyZW50LT5yb2xlVmFsdWUoKSA9PSBQYXJhZ3JhcGhSb2xlKQotICAgICAgICAgICAg
cmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAgICAgaWYgKHBhcmVudC0+cm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaCkKKyAgICAgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAKLSAgICAgICAgcmV0dXJuIERl
ZmF1bHRCZWhhdmlvcjsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b246OkRlZmF1bHRCZWhhdmlvcjsKICAgICB9CiAKICAgICBOb2RlKiBub2RlID0gcmVuZGVyT2Jq
ZWN0LT5ub2RlKCk7CiAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gRGVmYXVsdEJlaGF2
aW9yOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVs
dEJlaGF2aW9yOwogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCA8c3Bhbj4gZWxlbWVudHMgdG8gc2hv
dyB1cCBpbiB0aGUgYWNjZXNzaWJpbGl0eSBoaWVyYXJjaHkgdW5sZXNzCiAgICAgLy8gd2UgaGF2
ZSBnb29kIHJlYXNvbnMgZm9yIHRoYXQgKGUuZy4gZm9jdXNhYmxlIG9yIHZpc2libGUgYmVjYXVz
ZSBvZiBjb250YWluaW5nCiAgICAgLy8gYSBtZWFuaW5nZnVsIGFjY2Vzc2libGUgbmFtZSwgbWF5
YmUgc2V0IHRocm91Z2ggQVJJQSksIHNvIHdlIGNhbiB1c2UKICAgICAvLyBhdGtfY29tcG9uZW50
X2dyYWJfZm9jdXMoKSB0byBzZXQgdGhlIGZvY3VzIHRvIGl0LgogICAgIGlmIChpczxIVE1MU3Bh
bkVsZW1lbnQ+KG5vZGUpICYmICFjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpICYmICFoYXNBdHRyaWJ1
dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSAmJiAhc3VwcG9ydHNBUklBQXR0cmlidXRlcygpKQot
ICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogCiAgICAgLy8gSWYgd2UgaW5jbHVkZSBU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQgY2hpbGRyZW4sIGNoYW5nZXMgdG8gdGhvc2UgY2hp
bGRyZW4KICAgICAvLyB3aWxsIHJlc3VsdCBpbiBmb2N1cyBhbmQgdGV4dCBub3RpZmljYXRpb25z
IHRoYXQgc3VnZ2VzdCB0aGUgdXNlciBpcyBubyBsb25nZXIKICAgICAvLyBpbiB0aGUgY29udHJv
bC4gVGhpcyBjYW4gYmUgZXNwZWNpYWxseSBwcm9ibGVtYXRpYyBmb3Igc2NyZWVuIHJlYWRlciB1
c2VycyB3aXRoCiAgICAgLy8ga2V5IGVjaG8gZW5hYmxlZCB3aGVuIHR5cGluZyBpbiBhIHBhc3N3
b3JkIGlucHV0LgogICAgIGlmIChpczxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+KG5vZGUp
KQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogCi0gICAgcmV0dXJuIERlZmF1bHRC
ZWhhdmlvcjsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVs
dEJlaGF2aW9yOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQWNjZXNzaWJpbGl0
eU9iamVjdDo6d3JhcHBlcigpIGNvbnN0CkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphbGxvd3NUZXh0UmFuZwogCiAgICAgLy8gQ2hlY2sgcm9sZXMgYXMgdGhl
IGxhc3QgZmFsbGJhY2sgbWVjaGFuaXNtLgogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBy
b2xlVmFsdWUoKTsKLSAgICByZXR1cm4gcm9sZSA9PSBQYXJhZ3JhcGhSb2xlIHx8IHJvbGUgPT0g
TGFiZWxSb2xlIHx8IHJvbGUgPT0gRGl2Um9sZSB8fCByb2xlID09IEZvcm1Sb2xlIHx8IHJvbGUg
PT0gUHJlUm9sZTsKKyAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UGFyYWdy
YXBoIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsIHx8IHJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkRpdiB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtIHx8IHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlByZTsKIH0KIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Z2V0TGVuZ3RoRm9yVGV4dFJhbmdlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN0YXRpYyBnY2hhciogd2Via2l0QWNj
ZXNzaWJsZVRleHRHZXRUZXgKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0g
Y29yZSh0ZXh0KTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGlmIChjb3Jl
T2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBDb2xvcldlbGxSb2xlKSB7CisgICAgaWYgKGNvcmVPYmpl
Y3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2xvcldlbGwpIHsKICAgICAg
ICAgaW50IHIsIGcsIGI7CiAgICAgICAgIGNvcmVPYmplY3QtPmNvbG9yVmFsdWUociwgZywgYik7
CiAgICAgICAgIHJldHVybiBnX3N0cmR1cF9wcmludGYoInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAx
IiwgciAvIDI1NS4sIGcgLyAyNTUuLCBiIC8gMjU1Lik7CkBAIC00NjUsNyArNDY1LDcgQEAgc3Rh
dGljIGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogCiAgICAgLy8gUHJlZml4IGEg
aXRlbSBudW1iZXIvYnVsbGV0IGlmIG5lZWRlZAogICAgIGludCBhY3R1YWxFbmRPZmZzZXQgPSBl
bmRPZmZzZXQgPT0gLTEgPyByZXQubGVuZ3RoKCkgOiBlbmRPZmZzZXQ7Ci0gICAgaWYgKGNvcmVP
YmplY3QtPnJvbGVWYWx1ZSgpID09IExpc3RJdGVtUm9sZSkgeworICAgIGlmIChjb3JlT2JqZWN0
LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0pIHsKICAgICAgICAg
UmVuZGVyT2JqZWN0KiBvYmpSZW5kZXJlciA9IGNvcmVPYmplY3QtPnJlbmRlcmVyKCk7CiAgICAg
ICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4ob2JqUmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBT
dHJpbmcgbWFya2VyVGV4dCA9IGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqb2JqUmVuZGVyZXIp
Lm1hcmtlclRleHRXaXRoU3VmZml4KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCShyZXZpc2lv
biAyMjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlVXRpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDIxICs5NiwyMSBAQCBTdHJpbmcg
YWNjZXNzaWJpbGl0eVRpdGxlKEFjY2Vzc2liaWxpdHlPCiAKICAgICBmb3IgKGNvbnN0IEFjY2Vz
c2liaWxpdHlUZXh0JiB0ZXh0IDogdGV4dE9yZGVyKSB7CiAgICAgICAgIC8vIE9uY2Ugd2UgZW5j
b3VudGVyIHZpc2libGUgdGV4dCwgb3IgdGhlIHRleHQgZnJvbSBvdXIgY2hpbGRyZW4gdGhhdCBz
aG91bGQgYmUgdXNlZCBmb3JlbW9zdC4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBW
aXNpYmxlVGV4dCB8fCB0ZXh0LnRleHRTb3VyY2UgPT0gQ2hpbGRyZW5UZXh0KQorICAgICAgICBp
ZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpWaXNpYmxlIHx8
IHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6Q2hpbGRyZW4pCiAg
ICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwogCiAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4g
ZWxlbWVudCB0aGF0IGxhYmVscyB0aGlzIG9iamVjdCBhbmQgaXQncyBub3QgZXhwb3NlZCwgdGhl
biB3ZSBzaG91bGQgdXNlCiAgICAgICAgIC8vIHRoYXQgdGV4dCBhcyBvdXIgdGl0bGUuCi0gICAg
ICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gTGFiZWxCeUVsZW1lbnRUZXh0ICYmICFjb3JlT2Jq
ZWN0LT5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKKyAgICAgICAgaWYgKHRleHQudGV4dFNvdXJj
ZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6TGFiZWxCeUVsZW1lbnQgJiYgIWNvcmVPYmpl
Y3QtPmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4
dDsKIAotICAgICAgICAvLyBFbGVtZW50cyBvZiByb2xlIFRvb2xiYXJSb2xlIHdpbGwgcmV0dXJu
IGl0cyB0aXRsZSBhcyBBbHRlcm5hdGl2ZVRleHQuCi0gICAgICAgIGlmIChjb3JlT2JqZWN0LT5y
b2xlVmFsdWUoKSA9PSBUb29sYmFyUm9sZSAmJiB0ZXh0LnRleHRTb3VyY2UgPT0gQWx0ZXJuYXRp
dmVUZXh0KQorICAgICAgICAvLyBFbGVtZW50cyBvZiByb2xlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
b29sYmFyIHdpbGwgcmV0dXJuIGl0cyB0aXRsZSBhcyBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
QWx0ZXJuYXRpdmUuCisgICAgICAgIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VG9vbGJhciAmJiB0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0
eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKQogICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsK
IAogICAgICAgICAvLyBGSVhNRTogVGhlIHRpdGxlIHRhZyBpcyB1c2VkIGluIGNlcnRhaW4gY2Fz
ZXMgZm9yIHRoZSB0aXRsZS4gVGhpcyB1c2FnZSBzaG91bGQKICAgICAgICAgLy8gcHJvYmFibHkg
YmUgaW4gdGhlIGRlc2NyaXB0aW9uIGZpZWxkIHNpbmNlIGl0J3Mgbm90ICJ2aXNpYmxlIi4KLSAg
ICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBUaXRsZVRhZ1RleHQgJiYgIXRpdGxlVGFnU2hv
dWxkQmVVc2VkSW5EZXNjcmlwdGlvbkZpZWxkKGNvcmVPYmplY3QpKQorICAgICAgICBpZiAodGV4
dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiAhdGl0
bGVUYWdTaG91bGRCZVVzZWRJbkRlc2NyaXB0aW9uRmllbGQoY29yZU9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gdGV4dC50ZXh0OwogICAgIH0KIApAQCAtMTI0LDE5ICsxMjQsMTkgQEAgU3Ry
aW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbihBY2Nlc3NpYgogCiAgICAgYm9vbCB2aXNpYmxl
VGV4dEF2YWlsYWJsZSA9IGZhbHNlOwogICAgIGZvciAoY29uc3QgQWNjZXNzaWJpbGl0eVRleHQm
IHRleHQgOiB0ZXh0T3JkZXIpIHsKLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBbHRl
cm5hdGl2ZVRleHQpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNjZXNzaWJpbGl0
eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlKQogICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsK
IAogICAgICAgICBzd2l0Y2ggKHRleHQudGV4dFNvdXJjZSkgewotICAgICAgICBjYXNlIFZpc2li
bGVUZXh0OgotICAgICAgICBjYXNlIENoaWxkcmVuVGV4dDoKLSAgICAgICAgY2FzZSBMYWJlbEJ5
RWxlbWVudFRleHQ6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlZpc2li
bGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkNoaWxkcmVuOgorICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudDoKICAgICAg
ICAgICAgIHZpc2libGVUZXh0QXZhaWxhYmxlID0gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJj
ZSA9PSBUaXRsZVRhZ1RleHQgJiYgIXZpc2libGVUZXh0QXZhaWxhYmxlKQorICAgICAgICBpZiAo
dGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiAh
dmlzaWJsZVRleHRBdmFpbGFibGUpCiAgICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVdyYXBwZXJBdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAkocmV2aXNpb24gMjI0MDcx
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdy
YXBwZXJBdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgc3RhdGljIGNv
bnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0TgogICAgICAgICAvLyBXZWJDb3JlIEFjY2Vz
c2liaWxpdHkgc2hvdWxkIHByb3ZpZGUgdXMgd2l0aCB0aGUgdGV4dCBhbHRlcm5hdGl2ZSBjb21w
dXRhdGlvbgogICAgICAgICAvLyBpbiB0aGUgb3JkZXIgZGVmaW5lZCBieSB0aGF0IHNwZWMuIFNv
IHRha2UgdGhlIGZpcnN0IHRoaW5nIHRoYXQgb3VyIHBsYXRmb3JtCiAgICAgICAgIC8vIGRvZXMg
bm90IGV4cG9zZSB2aWEgdGhlIEF0a09iamVjdCBkZXNjcmlwdGlvbi4KLSAgICAgICAgaWYgKHRl
eHQudGV4dFNvdXJjZSAhPSBIZWxwVGV4dCAmJiB0ZXh0LnRleHRTb3VyY2UgIT0gU3VtbWFyeVRl
eHQpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgIT0gQWNjZXNzaWJpbGl0eVRleHRTb3Vy
Y2U6OkhlbHAgJiYgdGV4dC50ZXh0U291cmNlICE9IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpT
dW1tYXJ5KQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkob2Jq
ZWN0LCBBdGtDYWNoZWRBY2Nlc3NpYmxlTmFtZSwgdGV4dC50ZXh0KTsKICAgICB9CiAKQEAgLTE0
NiwxMiArMTQ2LDEyIEBAIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldEQK
ICAgICAgICAgLy8gV2ViQ29yZSBBY2Nlc3NpYmlsaXR5IHNob3VsZCBwcm92aWRlIHVzIHdpdGgg
dGhlIHRleHQgYWx0ZXJuYXRpdmUgY29tcHV0YXRpb24KICAgICAgICAgLy8gaW4gdGhlIG9yZGVy
IGRlZmluZWQgYnkgdGhhdCBzcGVjLiBTbyB0YWtlIHRoZSBmaXJzdCB0aGluZyB0aGF0IG91ciBw
bGF0Zm9ybQogICAgICAgICAvLyBkb2VzIG5vdCBleHBvc2UgdmlhIHRoZSBBdGtPYmplY3QgbmFt
ZS4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBIZWxwVGV4dCB8fCB0ZXh0LnRleHRT
b3VyY2UgPT0gU3VtbWFyeVRleHQpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNj
ZXNzaWJpbGl0eVRleHRTb3VyY2U6OkhlbHAgfHwgdGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpTdW1tYXJ5KQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlQW5kUmV0
dXJuQXRrUHJvcGVydHkob2JqZWN0LCBBdGtDYWNoZWRBY2Nlc3NpYmxlRGVzY3JpcHRpb24sIHRl
eHQudGV4dCk7CiAKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCBhbHRlcm5h
dGl2ZSwgdGhlIHRpdGxlIHRhZyBjb250ZW50cyB3aWxsIGhhdmUgYmVlbgogICAgICAgICAvLyB1
c2VkIGZvciB0aGUgQXRrT2JqZWN0IG5hbWUuIFdlIGRvbid0IHdhbnQgdG8gZHVwbGljYXRlIGl0
IGhlcmUuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmIG5h
bWVUZXh0QXZhaWxhYmxlKQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiBuYW1lVGV4dEF2YWlsYWJsZSkKICAgICAgICAg
ICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVkQWNj
ZXNzaWJsZURlc2NyaXB0aW9uLCB0ZXh0LnRleHQpOwogCiAgICAgICAgIG5hbWVUZXh0QXZhaWxh
YmxlID0gdHJ1ZTsKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgdm9pZCBzZXRBdGtSZWxhdGlv
blNldEZyb21Db3JlT2JqCiAgICAgfSBlbHNlIGlmIChjb3JlT2JqZWN0LT5pc0ZpZWxkc2V0KCkp
IHsKICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhYmVsID0gY29yZU9iamVjdC0+
dGl0bGVVSUVsZW1lbnQoKSkKICAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0
aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTExFRF9CWSwgbGFiZWwt
PndyYXBwZXIoKSk7Ci0gICAgfSBlbHNlIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBM
ZWdlbmRSb2xlKSB7CisgICAgfSBlbHNlIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGVnZW5kKSB7CiAgICAgICAgIGlmIChSZW5kZXJCbG9jayogcmVu
ZGVyRmllbGRzZXQgPSBhbmNlc3RvcnNPZlR5cGU8UmVuZGVyQmxvY2s+KCpjb3JlT2JqZWN0LT5y
ZW5kZXJlcigpKS5maXJzdCgpKSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyRmllbGRzZXQtPmlz
RmllbGRzZXQoKSkgewogICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpZWxk
c2V0ID0gY29yZU9iamVjdC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJGaWVs
ZHNldCk7CkBAIC00NTUsMTAgKzQ1NSwxMCBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJr
aXRBY2Nlc3NpYmxlCiAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KGF0dHJpYnV0ZVNldCwgImxldmVsIiwgdmFsdWUudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCi0g
ICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IE1hdGhFbGVtZW50Um9sZSkgewotICAg
ICAgICBpZiAoY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoUHJlU3VwZXJzY3Jp
cHQpIHx8IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KFByZVN1YnNjcmlwdCkp
CisgICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
YXRoRWxlbWVudCkgeworICAgICAgICBpZiAoY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRP
YmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlByZVN1cGVyc2Ny
aXB0KSB8fCBjb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5
TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKICAgICAgICAgICAgIGF0
dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgIm11bHRpc2Ny
aXB0LXR5cGUiLCAicHJlIik7Ci0gICAgICAgIGVsc2UgaWYgKGNvcmVPYmplY3QtPmlzTWF0aE11
bHRpc2NyaXB0T2JqZWN0KFBvc3RTdXBlcnNjcmlwdCkgfHwgY29yZU9iamVjdC0+aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QoUG9zdFN1YnNjcmlwdCkpCisgICAgICAgIGVsc2UgaWYgKGNvcmVPYmpl
Y3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRP
YmplY3RUeXBlOjpQb3N0U3VwZXJzY3JpcHQpIHx8IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2Ny
aXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vi
c2NyaXB0KSkKICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KGF0dHJpYnV0ZVNldCwgIm11bHRpc2NyaXB0LXR5cGUiLCAicG9zdCIpOwogICAgIH0KIApAQCAt
NTExLDE4ICs1MTEsMTggQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogd2Via2l0QWNjZXNzaWJs
ZQogICAgIC8vIFRoZSBDb3JlIEFBTSBzdGF0ZXMgdGhhdCBhbiBleHBsaWNpdGx5LXNldCB2YWx1
ZSBzaG91bGQgYmUgZXhwb3NlZCwgaW5jbHVkaW5nICJub25lIi4KICAgICBpZiAoY29yZU9iamVj
dC0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKICAgICAgICAgc3dp
dGNoIChjb3JlT2JqZWN0LT5zb3J0RGlyZWN0aW9uKCkpIHsKLSAgICAgICAgY2FzZSBTb3J0RGly
ZWN0aW9uSW52YWxpZDoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6
SW52YWxpZDoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNvcnREaXJlY3Rpb25B
c2NlbmRpbmc6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246OkFzY2Vu
ZGluZzoKICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0
dHJpYnV0ZVNldCwgInNvcnQiLCAiYXNjZW5kaW5nIik7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTb3J0RGlyZWN0aW9uRGVzY2VuZGluZzoKKyAgICAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5U29ydERpcmVjdGlvbjo6RGVzY2VuZGluZzoKICAgICAgICAgICAgIGF0dHJpYnV0ZVNl
dCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgInNvcnQiLCAiZGVzY2VuZGlu
ZyIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU29ydERpcmVjdGlvbk90aGVy
OgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKICAgICAg
ICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwg
InNvcnQiLCAib3RoZXIiKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpOb25lOgogICAgICAgICAg
ICAgYXR0cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAic29y
dCIsICJub25lIik7CiAgICAgICAgIH0KICAgICB9CkBAIC01NTYsNyArNTU2LDcgQEAgc3RhdGlj
IEF0a0F0dHJpYnV0ZVNldCogd2Via2l0QWNjZXNzaWJsZQogCiAgICAgICAgIC8vIFRoZSBIVE1M
IEFBTSBtYXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3Jk
ZXIgZm9yIHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUg
aW4gdGhlIHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhl
IGNvbXB1dGVkUm9sZVN0cmluZy4KLSAgICAgICAgaWYgKGNvcmVPYmplY3QtPmFyaWFSb2xlQXR0
cmlidXRlKCkgPT0gVW5rbm93blJvbGUgJiYgY29yZU9iamVjdC0+aXNMYW5kbWFyaygpKQorICAg
ICAgICBpZiAoY29yZU9iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VW5rbm93biAmJiBjb3JlT2JqZWN0LT5pc0xhbmRtYXJrKCkpCiAgICAgICAgICAgICBh
dHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChhdHRyaWJ1dGVTZXQsICJ4bWwtcm9s
ZXMiLCBjb21wdXRlZFJvbGVTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCkBAIC02MTMs
MjAyICs2MTMsMjAyIEBAIHN0YXRpYyBBdGtSb2xlIGF0a1JvbGUoQWNjZXNzaWJpbGl0eU9iamUK
IHsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gY29yZU9iamVjdC0+cm9sZVZhbHVlKCk7
CiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgogICAgICAgICByZXR1
cm4gQVRLX1JPTEVfQUxFUlQ7Ci0gICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToK
LSAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uRGlhbG9nOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRElBTE9HOwotICAg
IGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uU3RhdHVzOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfU1RBVFVTQkFSOwot
ICAgIGNhc2UgVW5rbm93blJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93
bjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1VOS05PV047Ci0gICAgY2FzZSBBdWRpb1JvbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVkaW86CiAjaWYgQVRLX0NIRUNLX1ZFUlNJ
T04oMiwgMTEsIDMpCiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9BVURJTzsKICNlbmRpZgotICAg
IGNhc2UgVmlkZW9Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlZpZGVvOgogI2lm
IEFUS19DSEVDS19WRVJTSU9OKDIsIDExLCAzKQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVklE
RU87CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0VNQkVEREVEOwotICAgIGNhc2Ug
QnV0dG9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CiAgICAgICAg
IHJldHVybiBBVEtfUk9MRV9QVVNIX0JVVFRPTjsKLSAgICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAg
Y2FzZSBUb2dnbGVCdXR0b25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlN3aXRj
aDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CiAgICAgICAgIHJl
dHVybiBBVEtfUk9MRV9UT0dHTEVfQlVUVE9OOwotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uOgogICAgICAgICByZXR1cm4g
QVRLX1JPTEVfUkFESU9fQlVUVE9OOwotICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkNoZWNrQm94OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ0hF
Q0tfQk9YOwotICAgIGNhc2UgU2xpZGVyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpTbGlkZXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TTElERVI7Ci0gICAgY2FzZSBUYWJH
cm91cFJvbGU6Ci0gICAgY2FzZSBUYWJMaXN0Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpUYWJHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OgogICAg
ICAgICByZXR1cm4gQVRLX1JPTEVfUEFHRV9UQUJfTElTVDsKLSAgICBjYXNlIFRleHRGaWVsZFJv
bGU6Ci0gICAgY2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAgY2FzZSBTZWFyY2hGaWVsZFJvbGU6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlRleHRBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZp
ZWxkOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRU5UUlk7Ci0gICAgY2FzZSBTdGF0aWNUZXh0
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OgogI2lmIEFUS19D
SEVDS19WRVJTSU9OKDIsIDE1LCAyKQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfU1RBVElDOwog
I2Vsc2UKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RFWFQ7CiAjZW5kaWYKLSAgICBjYXNlIE91
dGxpbmVSb2xlOgotICAgIGNhc2UgVHJlZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6T3V0bGluZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlOgogICAgICAgICBy
ZXR1cm4gQVRLX1JPTEVfVFJFRTsKLSAgICBjYXNlIFRyZWVJdGVtUm9sZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbToKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RSRUVf
SVRFTTsKLSAgICBjYXNlIE1lbnVCYXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
Ok1lbnVCYXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9NRU5VX0JBUjsKLSAgICBjYXNlIE1l
bnVMaXN0UG9wdXBSb2xlOgotICAgIGNhc2UgTWVudVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TWVudUxpc3RQb3B1cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfTUVOVTsKLSAgICBjYXNlIE1lbnVMaXN0T3B0aW9u
Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVCdXR0b25Sb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0T3B0aW9uOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVCdXR0b246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9NRU5VX0lURU07Ci0gICAgY2FzZSBN
ZW51SXRlbUNoZWNrYm94Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bUNoZWNrYm94OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ0hFQ0tfTUVOVV9JVEVNOwotICAg
IGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW1SYWRpbzoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1JBRElPX01FTlVfSVRFTTsKLSAg
ICBjYXNlIENvbHVtblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uOgog
ICAgICAgICAvLyByZXR1cm4gQVRLX1JPTEVfVEFCTEVfQ09MVU1OX0hFQURFUjsgLy8gSXMgdGhp
cyByaWdodD8KICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1VOS05PV047IC8vIE1hdGNoZXMgTW96
aWxsYQotICAgIGNhc2UgUm93Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9UQUJMRV9ST1c7Ci0gICAgY2FzZSBUb29sYmFyUm9s
ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb29sYmFyOgogICAgICAgICByZXR1cm4g
QVRLX1JPTEVfVE9PTF9CQVI7Ci0gICAgY2FzZSBCdXN5SW5kaWNhdG9yUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXN5SW5kaWNhdG9yOgogICAgICAgICByZXR1cm4gQVRLX1JP
TEVfUFJPR1JFU1NfQkFSOyAvLyBJcyB0aGlzIHJpZ2h0PwotICAgIGNhc2UgUHJvZ3Jlc3NJbmRp
Y2F0b3JSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9y
OgogICAgICAgICByZXR1cm4gY29yZU9iamVjdC0+aXNNZXRlcigpID8gQVRLX1JPTEVfTEVWRUxf
QkFSIDogQVRLX1JPTEVfUFJPR1JFU1NfQkFSOwotICAgIGNhc2UgV2luZG93Um9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXaW5kb3c6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9X
SU5ET1c7Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UG9wVXBCdXR0b246CiAgICAgICAgIHJldHVybiBjb3JlT2JqZWN0LT5hcmlhSGFzUG9w
dXAoKSA/IEFUS19ST0xFX1BVU0hfQlVUVE9OIDogQVRLX1JPTEVfQ09NQk9fQk9YOwotICAgIGNh
c2UgQ29tYm9Cb3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94Ogog
ICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ09NQk9fQk9YOwotICAgIGNhc2UgU3BsaXRHcm91cFJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXRHcm91cDoKICAgICAgICAgcmV0
dXJuIEFUS19ST0xFX1NQTElUX1BBTkU7Ci0gICAgY2FzZSBTcGxpdHRlclJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BsaXR0ZXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9T
RVBBUkFUT1I7Ci0gICAgY2FzZSBDb2xvcldlbGxSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkNvbG9yV2VsbDoKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgIC8vIEFUS19ST0xF
X0NPTE9SX0NIT09TRVIgaXMgZGVmaW5lZCBhcyBhIGRpYWxvZyAoaS5lLiBpdCdzIHdoYXQgYXBw
ZWFycyB3aGVuIHlvdSBwdXNoIHRoZSBidXR0b24pLgogICAgICAgICByZXR1cm4gQVRLX1JPTEVf
UFVTSF9CVVRUT047CiAjZW5kaWYKLSAgICBjYXNlIExpc3RSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Okxpc3Q6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9MSVNUOwotICAgIGNh
c2UgU2Nyb2xsQmFyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxCYXI6
CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TQ1JPTExfQkFSOwotICAgIGNhc2UgU2Nyb2xsQXJl
YVJvbGU6Ci0gICAgY2FzZSBUYWJQYW5lbFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2Nyb2xsQXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbDoKICAg
ICAgICAgcmV0dXJuIEFUS19ST0xFX1NDUk9MTF9QQU5FOwotICAgIGNhc2UgR3JpZFJvbGU6Ci0g
ICAgY2FzZSBUYWJsZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToKICAgICAgICAgcmV0dXJuIEFUS19ST0xF
X1RBQkxFOwotICAgIGNhc2UgVHJlZUdyaWRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRyZWVHcmlkOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfVFJFRV9UQUJMRTsKLSAgICBj
YXNlIEFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvbjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0FQUExJQ0FUSU9OOwotICAgIGNhc2UgQXBw
bGljYXRpb25Hcm91cFJvbGU6Ci0gICAgY2FzZSBGZWVkUm9sZToKLSAgICBjYXNlIEZpZ3VyZVJv
bGU6Ci0gICAgY2FzZSBHcm91cFJvbGU6Ci0gICAgY2FzZSBSYWRpb0dyb3VwUm9sZToKLSAgICBj
YXNlIFNWR1Jvb3RSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9u
R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RmVlZDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpGaWd1cmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9Hcm91cDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTVkdSb290OgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUEFORUw7Ci0g
ICAgY2FzZSBSb3dIZWFkZXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hl
YWRlcjoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1JPV19IRUFERVI7Ci0gICAgY2FzZSBDb2x1
bW5IZWFkZXJSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcjoK
ICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0NPTFVNTl9IRUFERVI7Ci0gICAgY2FzZSBDYXB0aW9u
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDYXB0aW9uOgogICAgICAgICByZXR1
cm4gQVRLX1JPTEVfQ0FQVElPTjsKLSAgICBjYXNlIENlbGxSb2xlOgotICAgIGNhc2UgR3JpZENl
bGxSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGw6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6R3JpZENlbGw6CiAgICAgICAgIHJldHVybiBjb3JlT2JqZWN0LT5pbmhl
cml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpID8gQVRLX1JPTEVfU0VDVElPTiA6IEFUS19ST0xFX1RB
QkxFX0NFTEw7Ci0gICAgY2FzZSBMaW5rUm9sZToKLSAgICBjYXNlIFdlYkNvcmVMaW5rUm9sZToK
LSAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGluazoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZU1hcExpbms6CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9MSU5LOwotICAgIGNhc2UgSW1hZ2VNYXBSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkltYWdlTWFwOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfSU1BR0VfTUFQOwotICAgIGNh
c2UgSW1hZ2VSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlOgogICAgICAg
ICByZXR1cm4gQVRLX1JPTEVfSU1BR0U7Ci0gICAgY2FzZSBMaXN0TWFya2VyUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0TWFya2VyOgogICAgICAgICByZXR1cm4gQVRLX1JP
TEVfVEVYVDsKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDEx
LCAzKQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfQVJUSUNMRTsKICNlbmRpZgotICAgIGNhc2Ug
RG9jdW1lbnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgogICAg
ICAgICByZXR1cm4gQVRLX1JPTEVfRE9DVU1FTlRfRlJBTUU7Ci0gICAgY2FzZSBEb2N1bWVudE5v
dGVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50Tm90ZToKICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX0NPTU1FTlQ7Ci0gICAgY2FzZSBIZWFkaW5nUm9sZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVf
SEVBRElORzsKLSAgICBjYXNlIExpc3RCb3hSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RCb3g6CiAgICAgICAgIC8vIGh0dHBzOi8vcmF3Z2l0LmNvbS93M2MvYXJpYS9tYXN0
ZXIvY29yZS1hYW0vY29yZS1hYW0uaHRtbCNyb2xlLW1hcC1saXN0Ym94Ci0gICAgICAgIHJldHVy
biBjb3JlT2JqZWN0LT5pc0Rlc2NlbmRhbnRPZlJvbGUoQ29tYm9Cb3hSb2xlKSA/IEFUS19ST0xF
X01FTlUgOiBBVEtfUk9MRV9MSVNUX0JPWDsKLSAgICBjYXNlIExpc3RJdGVtUm9sZToKKyAgICAg
ICAgcmV0dXJuIGNvcmVPYmplY3QtPmlzRGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9s
ZTo6Q29tYm9Cb3gpID8gQVRLX1JPTEVfTUVOVSA6IEFUS19ST0xFX0xJU1RfQk9YOworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgogICAgICAgICByZXR1cm4gY29yZU9iamVj
dC0+aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSA/IEFUS19ST0xFX1NFQ1RJT04gOiBBVEtf
Uk9MRV9MSVNUX0lURU07Ci0gICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToKLSAgICAgICAgcmV0
dXJuIGNvcmVPYmplY3QtPmlzRGVzY2VuZGFudE9mUm9sZShDb21ib0JveFJvbGUpID8gQVRLX1JP
TEVfTUVOVV9JVEVNIDogQVRLX1JPTEVfTElTVF9JVEVNOwotICAgIGNhc2UgUGFyYWdyYXBoUm9s
ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgorICAgICAgICBy
ZXR1cm4gY29yZU9iamVjdC0+aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlOjpD
b21ib0JveCkgPyBBVEtfUk9MRV9NRU5VX0lURU0gOiBBVEtfUk9MRV9MSVNUX0lURU07CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UGFyYWdyYXBoOgogICAgICAgICByZXR1cm4gQVRLX1JP
TEVfUEFSQUdSQVBIOwotICAgIGNhc2UgTGFiZWxSb2xlOgotICAgIGNhc2UgTGVnZW5kUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYWJlbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMZWdlbmQ6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9MQUJFTDsKLSAgICBjYXNl
IEJsb2NrcXVvdGVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkJsb2NrcXVvdGU6
CiAjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTEsIDMpCiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9CTE9DS19RVU9URTsKICNlbmRpZgotICAgIGNhc2UgRm9vdG5vdGVSb2xlOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Rub3RlOgogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsIDI1
LCAyKQogICAgICAgICByZXR1cm4gQVRLX1JPTEVfRk9PVE5PVEU7CiAjZW5kaWYKLSAgICBjYXNl
IEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZToKLSAgICBjYXNlIERpdlJvbGU6Ci0gICAgY2FzZSBQ
cmVSb2xlOgotICAgIGNhc2UgU1ZHVGV4dFJvbGU6Ci0gICAgY2FzZSBUZXh0R3JvdXBSb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRpdjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpQ
cmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVGV4dDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpUZXh0R3JvdXA6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TRUNUSU9O
OwotICAgIGNhc2UgRm9vdGVyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb290
ZXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9GT09URVI7Ci0gICAgY2FzZSBGb3JtUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpGb3JtOgogI2lmIEFUS19DSEVDS19WRVJTSU9O
KDIsIDExLCAzKQotICAgICAgICBpZiAoY29yZU9iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSAh
PSBVbmtub3duUm9sZSkKKyAgICAgICAgaWYgKGNvcmVPYmplY3QtPmFyaWFSb2xlQXR0cmlidXRl
KCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24pCiAgICAgICAgICAgICByZXR1cm4gQVRL
X1JPTEVfTEFORE1BUks7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0ZPUk07Ci0g
ICAgY2FzZSBDYW52YXNSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhczoK
ICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0NBTlZBUzsKLSAgICBjYXNlIEhvcml6b250YWxSdWxl
Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jpem9udGFsUnVsZToKICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX1NFUEFSQVRPUjsKLSAgICBjYXNlIFNwaW5CdXR0b25Sb2xlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b246CiAgICAgICAgIHJldHVybiBB
VEtfUk9MRV9TUElOX0JVVFRPTjsKLSAgICBjYXNlIFRhYlJvbGU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6VGFiOgogICAgICAgICByZXR1cm4gQVRLX1JPTEVfUEFHRV9UQUI7Ci0gICAg
Y2FzZSBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VXNlckludGVyZmFjZVRvb2x0aXA6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9UT09MX1RJ
UDsKLSAgICBjYXNlIFdlYkFyZWFSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Oldl
YkFyZWE6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9ET0NVTUVOVF9XRUI7Ci0gICAgY2FzZSBX
ZWJBcHBsaWNhdGlvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXBwbGlj
YXRpb246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9FTUJFRERFRDsKICNpZiBBVEtfQ0hFQ0tf
VkVSU0lPTigyLCAxMSwgMykKLSAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZzoKICAgICAgICAgcmV0dXJuIEFUS19S
T0xFX0xPRzsKLSAgICBjYXNlIEFwcGxpY2F0aW9uTWFycXVlZVJvbGU6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlOgogICAgICAgICByZXR1cm4gQVRLX1JP
TEVfTUFSUVVFRTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXI6CiAgICAgICAgIHJldHVybiBBVEtfUk9M
RV9USU1FUjsKLSAgICBjYXNlIERlZmluaXRpb25Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkRlZmluaXRpb246CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9ERUZJTklUSU9OOwot
ICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpE
b2N1bWVudE1hdGg6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9NQVRIOwotICAgIGNhc2UgTWF0
aEVsZW1lbnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1hdGhFbGVtZW50Ogog
ICAgICAgICBpZiAoY29yZU9iamVjdC0+aXNNYXRoUm93KCkpCiAgICAgICAgICAgICByZXR1cm4g
QVRLX1JPTEVfUEFORUw7CiAgICAgICAgIGlmIChjb3JlT2JqZWN0LT5pc01hdGhUYWJsZSgpKQpA
QCAtODI0LDExICs4MjQsMTEgQEAgc3RhdGljIEF0a1JvbGUgYXRrUm9sZShBY2Nlc3NpYmlsaXR5
T2JqZQogICAgICAgICAgICAgcmV0dXJuIEFUS19ST0xFX01BVEhfRlJBQ1RJT047CiAgICAgICAg
IGlmIChjb3JlT2JqZWN0LT5pc01hdGhTcXVhcmVSb290KCkgfHwgY29yZU9iamVjdC0+aXNNYXRo
Um9vdCgpKQogICAgICAgICAgICAgcmV0dXJuIEFUS19ST0xFX01BVEhfUk9PVDsKLSAgICAgICAg
aWYgKGNvcmVPYmplY3QtPmlzTWF0aFNjcmlwdE9iamVjdChTdWJzY3JpcHQpCi0gICAgICAgICAg
ICB8fCBjb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChQcmVTdWJzY3JpcHQpIHx8
IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KFBvc3RTdWJzY3JpcHQpKQorICAg
ICAgICBpZiAoY29yZU9iamVjdC0+aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRo
U2NyaXB0T2JqZWN0VHlwZTo6U3Vic2NyaXB0KQorICAgICAgICAgICAgfHwgY29yZU9iamVjdC0+
aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVj
dFR5cGU6OlByZVN1YnNjcmlwdCkgfHwgY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmpl
Y3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBvc3RTdWJzY3JpcHQp
KQogICAgICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NVQlNDUklQVDsKLSAgICAgICAgaWYgKGNv
cmVPYmplY3QtPmlzTWF0aFNjcmlwdE9iamVjdChTdXBlcnNjcmlwdCkKLSAgICAgICAgICAgIHx8
IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KFByZVN1cGVyc2NyaXB0KSB8fCBj
b3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChQb3N0U3VwZXJzY3JpcHQpKQorICAg
ICAgICBpZiAoY29yZU9iamVjdC0+aXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRo
U2NyaXB0T2JqZWN0VHlwZTo6U3VwZXJzY3JpcHQpCisgICAgICAgICAgICB8fCBjb3JlT2JqZWN0
LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2Jq
ZWN0VHlwZTo6UHJlU3VwZXJzY3JpcHQpIHx8IGNvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0
T2JqZWN0KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3VwZXJz
Y3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NVUEVSU0NSSVBUOwogI2VuZGlm
CiAjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTUsIDIpCkBAIC04MzYsMjYgKzgzNiwyNiBAQCBz
dGF0aWMgQXRrUm9sZSBhdGtSb2xlKEFjY2Vzc2liaWxpdHlPYmplCiAgICAgICAgICAgICByZXR1
cm4gQVRLX1JPTEVfU1RBVElDOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9VTktO
T1dOOwotICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgIGNhc2UgTGFuZG1hcmtDb21w
bGVtZW50YXJ5Um9sZToKLSAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAgIGNh
c2UgTGFuZG1hcmtEb2NSZWdpb25Sb2xlOgotICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKLSAg
ICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya1JlZ2lvblJv
bGU6Ci0gICAgY2FzZSBMYW5kbWFya1NlYXJjaFJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtCYW5uZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtDb21wbGVtZW50YXJ5OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29u
dGVudEluZm86CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpMYW5kbWFya1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya1NlYXJjaDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0xBTkRNQVJLOwogI2VuZGlmCiAj
aWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwgMTEsIDQpCi0gICAgY2FzZSBEZXNjcmlwdGlvbkxpc3RS
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdDoKICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX0RFU0NSSVBUSU9OX0xJU1Q7Ci0gICAgY2FzZSBUZXJtUm9sZToK
LSAgICBjYXNlIERlc2NyaXB0aW9uTGlzdFRlcm1Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlRlcm06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0
VGVybToKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0RFU0NSSVBUSU9OX1RFUk07Ci0gICAgY2Fz
ZSBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkRlc2NyaXB0aW9uTGlzdERldGFpbDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0RFU0NSSVBU
SU9OX1ZBTFVFOwogI2VuZGlmCi0gICAgY2FzZSBJbmxpbmVSb2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OklubGluZToKICNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNSwgNCkKICAg
ICAgICAgaWYgKGNvcmVPYmplY3QtPmlzU3Vic2NyaXB0U3R5bGVHcm91cCgpKQogICAgICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX1NVQlNDUklQVDsKQEAgLTg2NCw5ICs4NjQsOSBAQCBzdGF0aWMg
QXRrUm9sZSBhdGtSb2xlKEFjY2Vzc2liaWxpdHlPYmplCiAjZW5kaWYKICNpZiBBVEtfQ0hFQ0tf
VkVSU0lPTigyLCAxNSwgMikKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NUQVRJQzsKLSAgICBj
YXNlIFNWR1RleHRQYXRoUm9sZToKLSAgICBjYXNlIFNWR1RTcGFuUm9sZToKLSAgICBjYXNlIFRp
bWVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RleHRQYXRoOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNWR1RTcGFuOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRpbWU6CiAgICAgICAgIHJldHVybiBBVEtfUk9MRV9TVEFUSUM7CiAjZW5kaWYKICAgICBk
ZWZhdWx0OgpAQCAtOTMwLDcgKzkzMCw3IEBAIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJv
bUNvcmVPYmplY3QKIAogICAgIC8vIFBsZWFzZSBrZWVwIHRoZSBzdGF0ZSBsaXN0IGluIGFscGhh
YmV0aWNhbCBvcmRlcgogICAgIGlmICgoaXNMaXN0Qm94T3B0aW9uICYmIGNvcmVPYmplY3QtPmlz
U2VsZWN0ZWRPcHRpb25BY3RpdmUoKSkKLSAgICAgICAgfHwgY29yZU9iamVjdC0+YXJpYUN1cnJl
bnRTdGF0ZSgpICE9IEFSSUFDdXJyZW50RmFsc2UpCisgICAgICAgIHx8IGNvcmVPYmplY3QtPmFy
aWFDdXJyZW50U3RhdGUoKSAhPSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6RmFsc2Up
CiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfQUNU
SVZFKTsKIAogICAgIGlmIChjb3JlT2JqZWN0LT5pc0J1c3koKSkKQEAgLTk3Miw5ICs5NzIsOSBA
QCBzdGF0aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0CiAgICAgICAgIGF0a19z
dGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNFRCk7CiAgICAgfQog
Ci0gICAgaWYgKGNvcmVPYmplY3QtPm9yaWVudGF0aW9uKCkgPT0gQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uSG9yaXpvbnRhbCkKKyAgICBpZiAoY29yZU9iamVjdC0+b3JpZW50YXRpb24oKSA9PSBB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWwpCiAgICAgICAgIGF0a19zdGF0ZV9z
ZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfSE9SSVpPTlRBTCk7Ci0gICAgZWxzZSBp
ZiAoY29yZU9iamVjdC0+b3JpZW50YXRpb24oKSA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25W
ZXJ0aWNhbCkKKyAgICBlbHNlIGlmIChjb3JlT2JqZWN0LT5vcmllbnRhdGlvbigpID09IEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRk
X3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfVkVSVElDQUwpOwogCiAgICAgaWYgKGNvcmVPYmpl
Y3QtPmFyaWFIYXNQb3B1cCgpKQpAQCAtOTgzLDcgKzk4Myw3IEBAIHN0YXRpYyB2b2lkIHNldEF0
a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QKICAgICBpZiAoY29yZU9iamVjdC0+aXNJbmRldGVybWlu
YXRlKCkpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RB
VEVfSU5ERVRFUk1JTkFURSk7CiAgICAgZWxzZSBpZiAoY29yZU9iamVjdC0+aXNDaGVja2JveE9y
UmFkaW8oKSB8fCBjb3JlT2JqZWN0LT5pc01lbnVJdGVtKCkgfHwgY29yZU9iamVjdC0+aXNUb2dn
bGVCdXR0b24oKSkgewotICAgICAgICBpZiAoY29yZU9iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFs
dWUoKSA9PSBCdXR0b25TdGF0ZU1peGVkKQorICAgICAgICBpZiAoY29yZU9iamVjdC0+Y2hlY2ti
b3hPclJhZGlvVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkKQogICAg
ICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9JTkRF
VEVSTUlOQVRFKTsKICAgICB9CiAKQEAgLTEwMzksOSArMTAzOSw5IEBAIHN0YXRpYyB2b2lkIHNl
dEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QKICAgICB9CiAKICAgICAvLyBNdXR1YWxseSBleGNs
dXNpdmUsIHNvIHdlIGdyb3VwIHRoZXNlIHR3bwotICAgIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFs
dWUoKSA9PSBUZXh0QXJlYVJvbGUgfHwgY29yZU9iamVjdC0+YXJpYUlzTXVsdGlsaW5lKCkpCisg
ICAgaWYgKGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0
QXJlYSB8fCBjb3JlT2JqZWN0LT5hcmlhSXNNdWx0aWxpbmUoKSkKICAgICAgICAgYXRrX3N0YXRl
X3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9NVUxUSV9MSU5FKTsKLSAgICBlbHNl
IGlmIChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBUZXh0RmllbGRSb2xlIHx8IGNvcmVPYmpl
Y3QtPnJvbGVWYWx1ZSgpID09IFNlYXJjaEZpZWxkUm9sZSkKKyAgICBlbHNlIGlmIChjb3JlT2Jq
ZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkIHx8IGNvcmVP
YmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZCkKICAg
ICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9TSU5HTEVf
TElORSk7CiAKICAgICAvLyBUT0RPOiBBVEtfU1RBVEVfU0VOU0lUSVZFCkBAIC0xMjYwLDkgKzEy
NjAsMTcgQEAgc3RhdGljIEdUeXBlIEdldEF0a0ludGVyZmFjZVR5cGVGcm9tV0FJVAogCiBzdGF0
aWMgYm9vbCByb2xlSXNUZXh0VHlwZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQogewotICAgIHJl
dHVybiByb2xlID09IFBhcmFncmFwaFJvbGUgfHwgcm9sZSA9PSBIZWFkaW5nUm9sZSB8fCByb2xl
ID09IERpdlJvbGUgfHwgcm9sZSA9PSBDZWxsUm9sZQotICAgICAgICB8fCByb2xlID09IExpbmtS
b2xlIHx8IHJvbGUgPT0gV2ViQ29yZUxpbmtSb2xlIHx8IHJvbGUgPT0gTGlzdEl0ZW1Sb2xlIHx8
IHJvbGUgPT0gUHJlUm9sZQotICAgICAgICB8fCByb2xlID09IEdyaWRDZWxsUm9sZSB8fCByb2xl
ID09IFRleHRHcm91cFJvbGUgfHwgcm9sZSA9PSBBcHBsaWNhdGlvblRleHRHcm91cFJvbGU7Cisg
ICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlBhcmFncmFwaAorICAgICAgICB8
fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nCisgICAgICAgIHx8IHJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkRpdgorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDZWxsCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkxpbmsKKyAg
ICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQ29yZUxpbmsKKyAgICAgICAg
fHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEl0ZW0KKyAgICAgICAgfHwgcm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkdyaWRDZWxsCisgICAgICAgIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRl
eHRHcm91cAorICAgICAgICB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlv
blRleHRHcm91cDsKIH0KIAogc3RhdGljIGd1aW50MTYgZ2V0SW50ZXJmYWNlTWFza0Zyb21PYmpl
Y3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkKQEAgLTEyOTYsMTQgKzEzMDQsMTQg
QEAgc3RhdGljIGd1aW50MTYgZ2V0SW50ZXJmYWNlTWFza0Zyb21PYmplYwogICAgICAgICBpbnRl
cmZhY2VNYXNrIHw9IDEgPDwgV0FJSHlwZXJsaW5rOwogCiAgICAgLy8gVGV4dCwgRWRpdGFibGUg
VGV4dCAmIEh5cGVydGV4dAotICAgIGlmIChyb2xlID09IFN0YXRpY1RleHRSb2xlIHx8IGNvcmVP
YmplY3QtPmlzTWVudUxpc3RPcHRpb24oKSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U3RhdGljVGV4dCB8fCBjb3JlT2JqZWN0LT5pc01lbnVMaXN0T3B0aW9uKCkpCiAgICAg
ICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlUZXh0OwogICAgIGVsc2UgaWYgKGNvcmVPYmpl
Y3QtPmlzVGV4dENvbnRyb2woKSB8fCBjb3JlT2JqZWN0LT5pc05vbk5hdGl2ZVRleHRDb250cm9s
KCkpIHsKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSVRleHQ7CiAgICAgICAgIGlm
IChjb3JlT2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpKQogICAgICAgICAgICAgaW50ZXJm
YWNlTWFzayB8PSAxIDw8IFdBSUVkaXRhYmxlVGV4dDsKICAgICB9IGVsc2UgaWYgKCFjb3JlT2Jq
ZWN0LT5pc1dlYkFyZWEoKSkgewotICAgICAgICBpZiAocm9sZSAhPSBUYWJsZVJvbGUpIHsKKyAg
ICAgICAgaWYgKHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlKSB7CiAgICAgICAgICAg
ICBpbnRlcmZhY2VNYXNrIHw9IDEgPDwgV0FJSHlwZXJ0ZXh0OwogICAgICAgICAgICAgaWYgKChy
ZW5kZXJlciAmJiByZW5kZXJlci0+Y2hpbGRyZW5JbmxpbmUoKSkgfHwgcm9sZUlzVGV4dFR5cGUo
cm9sZSkgfHwgY29yZU9iamVjdC0+aXNNYXRoVG9rZW4oKSkKICAgICAgICAgICAgICAgICBpbnRl
cmZhY2VNYXNrIHw9IDEgPDwgV0FJVGV4dDsKQEAgLTEzMTEsNyArMTMxOSw3IEBAIHN0YXRpYyBn
dWludDE2IGdldEludGVyZmFjZU1hc2tGcm9tT2JqZWMKIAogICAgICAgICAvLyBBZGQgdGhlIFRF
WFQgaW50ZXJmYWNlIGZvciBsaXN0IGl0ZW1zIHdob3NlCiAgICAgICAgIC8vIGZpcnN0IGFjY2Vz
c2libGUgY2hpbGQgaGFzIGEgdGV4dCByZW5kZXJlcgotICAgICAgICBpZiAocm9sZSA9PSBMaXN0
SXRlbVJvbGUpIHsKKyAgICAgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJ
dGVtKSB7CiAgICAgICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuID0gY29yZU9iamVjdC0+Y2hpbGRyZW4oKTsKICAg
ICAgICAgICAgIGlmIChjaGlsZHJlbi5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheFJlbmRlckNoaWxkID0gY2hpbGRyZW4uYXQoMCkuZ2V0KCk7CkBAIC0x
MzI5LDEyICsxMzM3LDEyIEBAIHN0YXRpYyBndWludDE2IGdldEludGVyZmFjZU1hc2tGcm9tT2Jq
ZWMKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSVRhYmxlOwogCiAjaWYgQVRLX0NI
RUNLX1ZFUlNJT04oMiwxMSw5MCkKLSAgICBpZiAocm9sZSA9PSBDZWxsUm9sZSB8fCByb2xlID09
IEdyaWRDZWxsUm9sZSB8fCByb2xlID09IENvbHVtbkhlYWRlclJvbGUgfHwgcm9sZSA9PSBSb3dI
ZWFkZXJSb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsIHx8IHJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWRDZWxsIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkNvbHVtbkhlYWRlciB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFk
ZXIpCiAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlUYWJsZUNlbGw7CiAjZW5kaWYK
IAogICAgIC8vIERvY3VtZW50Ci0gICAgaWYgKHJvbGUgPT0gV2ViQXJlYVJvbGUpCisgICAgaWYg
KHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWEpCiAgICAgICAgIGludGVyZmFjZU1h
c2sgfD0gMSA8PCBXQUlEb2N1bWVudDsKIAogICAgIC8vIFZhbHVlCkBAIC0xMzQzLDcgKzEzNTEs
NyBAQCBzdGF0aWMgZ3VpbnQxNiBnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjCiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICAvLyBDb2xvciB0eXBlLgotICAgIGlmIChyb2xlID09
IENvbG9yV2VsbFJvbGUpCisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9y
V2VsbCkKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSVRleHQ7CiAjZW5kaWYKIApA
QCAtMTQxMiw3ICsxNDIwLDcgQEAgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRGV0YWNoKFdlYktpdEFj
Y2VzcwogewogICAgIEFTU0VSVChhY2Nlc3NpYmxlLT5tX29iamVjdCk7CiAKLSAgICBpZiAoYWNj
ZXNzaWJsZS0+bV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IFdlYkFyZWFSb2xlKQorICAgIGlmIChh
Y2Nlc3NpYmxlLT5tX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Oldl
YkFyZWEpCiAgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShBVEtfT0JKRUNU
KGFjY2Vzc2libGUpLCBBVEtfU1RBVEVfREVGVU5DVCwgdHJ1ZSk7CiAKICAgICAvLyBXZSByZXBs
YWNlIHRoZSBXZWJDb3JlIEFjY2Vzc2liaWxpdHlPYmplY3Qgd2l0aCBhIGZhbGxiYWNrIG9iamVj
dCB0aGF0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmls
aXR5T2JqZWN0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0JKHJldmlzaW9uIDIyNDA3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY2Nlc3NpYmlsaXR5SQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKKyAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOwogfQogCiBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omhhc1RvdWNoRXZlbnRMaXN0ZW5lcigpIGNvbnN0CkBAIC04MSw3ICs4MSw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzVG91Y2hFdmVudEwKIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0CiB7CiAgICAgaWYg
KGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSkpCi0gICAgICAgIHJldHVybiByb2xlVmFsdWUo
KSA9PSBQb3BVcEJ1dHRvblJvbGU7CisgICAgICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkocmV2aXNpb24gMjI0MDcx
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0MiwzMCArMzQyLDMwIEBAIC0g
KEJPT0wpYWNjZXNzaWJpbGl0eUNhbkZ1enp5SGl0VGVzdAogICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGUgPSBtX29iamVjdC0+cm9sZVZhbHVlKCk7CiAgICAgLy8gRWxlbWVudHMgdGhhdCBjYW4g
YmUgcmV0dXJuZWQgd2hlbiBwZXJmb3JtaW5nIGZ1enp5IGhpdCB0ZXN0aW5nLgogICAgIHN3aXRj
aCAocm9sZSkgewotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIENoZWNrQm94Um9sZToK
LSAgICBjYXNlIENvbWJvQm94Um9sZToKLSAgICBjYXNlIERpc2Nsb3N1cmVUcmlhbmdsZVJvbGU6
Ci0gICAgY2FzZSBIZWFkaW5nUm9sZToKLSAgICBjYXNlIEltYWdlTWFwTGlua1JvbGU6Ci0gICAg
Y2FzZSBJbWFnZVJvbGU6Ci0gICAgY2FzZSBMaW5rUm9sZToKLSAgICBjYXNlIExpc3RCb3hSb2xl
OgotICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6Ci0gICAgY2FzZSBNZW51QnV0dG9uUm9sZToK
LSAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xlOgot
ICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6Ci0g
ICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6Ci0gICAgY2FzZSBTY3JvbGxCYXJSb2xlOgotICAgIGNh
c2UgU2VhcmNoRmllbGRSb2xlOgotICAgIGNhc2UgU2xpZGVyUm9sZToKLSAgICBjYXNlIFN0YXRp
Y1RleHRSb2xlOgotICAgIGNhc2UgU3dpdGNoUm9sZToKLSAgICBjYXNlIFRhYlJvbGU6Ci0gICAg
Y2FzZSBUZXh0RmllbGRSb2xlOgotICAgIGNhc2UgVG9nZ2xlQnV0dG9uUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
Q2hlY2tCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlzY2xvc3VyZVRyaWFuZ2xlOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkhlYWRpbmc6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VN
YXBMaW5rOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Okxpbms6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJv
eDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9uOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2Jv
eDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlJhZGlvQnV0dG9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTZWFyY2hGaWVsZDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTbGlkZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGlj
VGV4dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2g6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRGaWVs
ZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CiAgICAgICAgIHJl
dHVybiAhbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MTQsMjQgKzUxNCwyNCBAQCAtIChCT09MKWFjY2Vz
c2liaWxpdHlJc0RpYWxvZwogICAgICAgICByZXR1cm4gTk87CiAKICAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUgPSBtX29iamVjdC0+cm9sZVZhbHVlKCk7Ci0gICAgcmV0dXJuIHJvbGVW
YWx1ZSA9PSBBcHBsaWNhdGlvbkRpYWxvZ1JvbGUgfHwgcm9sZVZhbHVlID09IEFwcGxpY2F0aW9u
QWxlcnREaWFsb2dSb2xlOworICAgIHJldHVybiByb2xlVmFsdWUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkFwcGxpY2F0aW9uRGlhbG9nIHx8IHJvbGVWYWx1ZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25BbGVydERpYWxvZzsKIH0KIAogLSAoQk9PTClfYWNjZXNzaWJpbGl0eUlzTGFu
ZG1hcmtSb2xlOihBY2Nlc3NpYmlsaXR5Um9sZSlyb2xlCiB7CiAgICAgc3dpdGNoIChyb2xlKSB7
Ci0gICAgY2FzZSBEb2N1bWVudFJvbGU6Ci0gICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgot
ICAgIGNhc2UgRG9jdW1lbnROb3RlUm9sZToKLSAgICBjYXNlIEZvb3RlclJvbGU6Ci0gICAgY2Fz
ZSBMYW5kbWFya0Jhbm5lclJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xl
OgotICAgIGNhc2UgTGFuZG1hcmtDb250ZW50SW5mb1JvbGU6Ci0gICAgY2FzZSBMYW5kbWFya0Rv
Y1JlZ2lvblJvbGU6Ci0gICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgotICAgIGNhc2UgTGFuZG1h
cmtOYXZpZ2F0aW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrUmVnaW9uUm9sZToKLSAgICBjYXNl
IExhbmRtYXJrU2VhcmNoUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVu
dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkZvb3RlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5l
cjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbXBsZW1lbnRhcnk6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50SW5mbzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMYW5kbWFya01haW46CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtOYXZpZ2F0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVn
aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoOgogICAgICAg
ICByZXR1cm4gWUVTOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBOTzsKQEAgLTU0Miw3
ICs1NDIsNyBAQCAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liCiB7CiAg
ICAgYXV0byBtYXRjaEZ1bmMgPSBbXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0
KSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBvYmplY3Qucm9sZVZhbHVlKCk7
Ci0gICAgICAgIHJldHVybiByb2xlID09IFRyZWVSb2xlOworICAgICAgICByZXR1cm4gcm9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZTsKICAgICB9OwogICAgIAogICAgIGlmIChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVk
UGFyZW50KCptX29iamVjdCwgZmFsc2UsIFdURk1vdmUobWF0Y2hGdW5jKSkpCkBAIC01NTQsNyAr
NTU0LDcgQEAgLSAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKV9hY2Nlc3NpYgogewogICAg
IGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkg
ewogICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gb2JqZWN0LnJvbGVWYWx1ZSgpOwot
ICAgICAgICByZXR1cm4gcm9sZSA9PSBMaXN0Um9sZSB8fCByb2xlID09IExpc3RCb3hSb2xlOwor
ICAgICAgICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdCB8fCByb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OwogICAgIH07CiAgICAgCiAgICAgaWYgKGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1hdGNo
ZWRQYXJlbnQoKm1fb2JqZWN0LCBmYWxzZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKQEAgLTU2NSw3
ICs1NjUsNyBAQCAtIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liCiAtIChB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopX2FjY2Vzc2liaWxpdHlBcnRpY2xlQW5jZXN0b3IK
IHsKICAgICBpZiAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJp
bGl0eU9iamVjdDo6bWF0Y2hlZFBhcmVudCgqbV9vYmplY3QsIGZhbHNlLCBbXSAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAgIHJldHVybiBvYmplY3Qucm9sZVZh
bHVlKCkgPT0gRG9jdW1lbnRBcnRpY2xlUm9sZTsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5yb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOwogICAgIH0pKQog
ICAgICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTYx
OCw0OCArNjE4LDQ3IEBAIC0gKHVpbnQ2NF90KV9hY2Nlc3NpYmlsaXR5VHJhaXRzRnJvbUFuY2UK
ICAgICAvLyBUaGUgcGFyZW50T2JqZWN0IGlzIG5lZWRlZCBpbnN0ZWFkIG9mIHRoZSB1bmlnbm9y
ZWRQYXJlbnRPYmplY3QsIGJlY2F1c2UgYSB0YWJsZSBtaWdodCBiZSBpZ25vcmVkLCBidXQgaW5m
b3JtYXRpb24gc3RpbGwgbmVlZHMgdG8gYmUgZ2F0aGVyZWQgZnJvbSBpdC4gICAgCiAgICAgZm9y
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0KCk7
IHBhcmVudCAhPSBuaWw7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKICAgICAg
ICAgQWNjZXNzaWJpbGl0eVJvbGUgcGFyZW50Um9sZSA9IHBhcmVudC0+cm9sZVZhbHVlKCk7Ci0g
ICAgICAgIGlmIChwYXJlbnRSb2xlID09IFdlYkFyZWFSb2xlKQorICAgICAgICBpZiAocGFyZW50
Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAKICAgICAgICAgc3dpdGNoIChwYXJlbnRSb2xlKSB7Ci0gICAgICAgICAgICBjYXNl
IExpbmtSb2xlOgotICAgICAgICAgICAgY2FzZSBXZWJDb3JlTGlua1JvbGU6Ci0gICAgICAgICAg
ICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heExpbmtUcmFpdF07Ci0gICAgICAgICAgICAgICAgaWYg
KHBhcmVudC0+aXNWaXNpdGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBbc2Vs
ZiBfYXhWaXNpdGVkVHJhaXRdOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBIZWFkaW5nUm9sZToKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0cmFpdHMg
fD0gW3NlbGYgX2F4SGVhZGVyVHJhaXRdOwotICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgb2Jq
ZWN0IGhhcyB0aGUgaGVhZGVyIHRyYWl0LCB3ZSBzaG91bGQgc2V0IHRoZSB2YWx1ZQotICAgICAg
ICAgICAgICAgIC8vIHRvIHRoZSBoZWFkaW5nIGxldmVsLiBJZiBpdCB3YXMgYSBzdGF0aWMgdGV4
dCBlbGVtZW50LCB3ZSBuZWVkIHRvIHN0b3JlCi0gICAgICAgICAgICAgICAgLy8gdGhlIHZhbHVl
IGFzIHRoZSBsYWJlbCwgYmVjYXVzZSB0aGUgaGVhZGluZyBsZXZlbCBuZWVkcyB0byB0aGUgdmFs
dWUuCi0gICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIg
PSBwYXJlbnQtPndyYXBwZXIoKTsKLSAgICAgICAgICAgICAgICBpZiAocm9sZSA9PSBTdGF0aWNU
ZXh0Um9sZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBzZXQgdGhl
IHRleHQgdmFsdWUgYXMgdGhlIGxhYmVsIHdoZW4gdGhlcmUncyBubwotICAgICAgICAgICAgICAg
ICAgICAvLyBhbHRlcm5hdGUgdGV4dCBvbiB0aGUgaGVhZGluZyBwYXJlbnQuCi0gICAgICAgICAg
ICAgICAgICAgIE5TU3RyaW5nICpoZWFkaW5nTGFiZWwgPSBbd3JhcHBlciBiYXNlQWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFbaGVhZGluZ0xhYmVs
IGxlbmd0aF0pCi0gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZiBzZXRBY2Nlc3NpYmlsaXR5
TGFiZWw6bV9vYmplY3QtPnN0cmluZ1ZhbHVlKCldOwotICAgICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZiBzZXRBY2Nlc3NpYmlsaXR5TGFiZWw6aGVh
ZGluZ0xhYmVsXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgW3NlbGYgc2V0
QWNjZXNzaWJpbGl0eVZhbHVlOlt3cmFwcGVyIGFjY2Vzc2liaWxpdHlWYWx1ZV1dOwotICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaW5rOgor
ICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJDb3JlTGluazoKKyAgICAgICAgICAg
IHRyYWl0cyB8PSBbc2VsZiBfYXhMaW5rVHJhaXRdOworICAgICAgICAgICAgaWYgKHBhcmVudC0+
aXNWaXNpdGVkKCkpCisgICAgICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFZpc2l0ZWRU
cmFpdF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SGVhZGluZzogeworICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEhlYWRlclRyYWl0
XTsKKyAgICAgICAgICAgIC8vIElmIHRoaXMgb2JqZWN0IGhhcyB0aGUgaGVhZGVyIHRyYWl0LCB3
ZSBzaG91bGQgc2V0IHRoZSB2YWx1ZQorICAgICAgICAgICAgLy8gdG8gdGhlIGhlYWRpbmcgbGV2
ZWwuIElmIGl0IHdhcyBhIHN0YXRpYyB0ZXh0IGVsZW1lbnQsIHdlIG5lZWQgdG8gc3RvcmUKKyAg
ICAgICAgICAgIC8vIHRoZSB2YWx1ZSBhcyB0aGUgbGFiZWwsIGJlY2F1c2UgdGhlIGhlYWRpbmcg
bGV2ZWwgbmVlZHMgdG8gdGhlIHZhbHVlLgorICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIqIHdyYXBwZXIgPSBwYXJlbnQtPndyYXBwZXIoKTsKKyAgICAgICAgICAgIGlmIChy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0KSB7CisgICAgICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSB0ZXh0IHZhbHVlIGFzIHRoZSBsYWJlbCB3aGVuIHRo
ZXJlJ3Mgbm8KKyAgICAgICAgICAgICAgICAvLyBhbHRlcm5hdGUgdGV4dCBvbiB0aGUgaGVhZGlu
ZyBwYXJlbnQuCisgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmhlYWRpbmdMYWJlbCA9IFt3cmFw
cGVyIGJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25dOworICAgICAgICAgICAgICAgIGlmICgh
W2hlYWRpbmdMYWJlbCBsZW5ndGhdKQorICAgICAgICAgICAgICAgICAgICBbc2VsZiBzZXRBY2Nl
c3NpYmlsaXR5TGFiZWw6bV9vYmplY3QtPnN0cmluZ1ZhbHVlKCldOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYgc2V0QWNjZXNzaWJpbGl0eUxhYmVsOmhl
YWRpbmdMYWJlbF07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIExpc3RCb3hSb2xl
OgotICAgICAgICAgICAgY2FzZSBMaXN0Um9sZToKLSAgICAgICAgICAgICAgICB0cmFpdHMgfD0g
W3NlbGYgX2F4Q29udGFpbmVkQnlMaXN0VHJhaXRdOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBHcmlkUm9sZToKLSAgICAgICAgICAgIGNhc2UgVGFibGVSb2xlOgot
ICAgICAgICAgICAgY2FzZSBUcmVlR3JpZFJvbGU6Ci0gICAgICAgICAgICAgICAgdHJhaXRzIHw9
IFtzZWxmIF9heENvbnRhaW5lZEJ5VGFibGVUcmFpdF07Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlmIChbc2VsZiBfYWNjZXNz
aWJpbGl0eUlzTGFuZG1hcmtSb2xlOnBhcmVudFJvbGVdKQotICAgICAgICAgICAgICAgICAgICB0
cmFpdHMgfD0gW3NlbGYgX2F4Q29udGFpbmVkQnlMYW5kbWFya1RyYWl0XTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIFtzZWxmIHNldEFjY2Vzc2liaWxpdHlWYWx1ZTpbd3Jh
cHBlciBhY2Nlc3NpYmlsaXR5VmFsdWVdXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6CisgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q6CisgICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4
Q29udGFpbmVkQnlMaXN0VHJhaXRdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQ6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYmxlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKKyAgICAg
ICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhDb250YWluZWRCeVRhYmxlVHJhaXRdOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoW3NlbGYgX2Fj
Y2Vzc2liaWxpdHlJc0xhbmRtYXJrUm9sZTpwYXJlbnRSb2xlXSkKKyAgICAgICAgICAgICAgICB0
cmFpdHMgfD0gW3NlbGYgX2F4Q29udGFpbmVkQnlMYW5kbWFya1RyYWl0XTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGlzIG9iamVjdCBo
YXMgZmllbGRzZXQgcGFyZW50LCB3ZSBzaG91bGQgYWRkIGNvbnRhaW5lZEJ5RmllbGRzZXRUcmFp
dCB0byBpdC4KQEAgLTY3Niw3ICs2NzUsNyBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlJc1dlYklu
dGVyYWN0aXZlVmlkCiAgICAgICAgIHJldHVybiBOTzsKICAgICAKICAgICAvLyBPbmx5IG1ha2Ug
dGhlIHZpZGVvIG9iamVjdCBpbnRlcmFjdGl2ZSBpZiBpdCBwbGF5cyBpbmxpbmUgYW5kIGhhcyBu
byBuYXRpdmUgY29udHJvbHMuCi0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBWaWRl
b1JvbGUgfHwgIWlzPEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdD4obV9vYmplY3QpKQorICAgIGlm
IChtX29iamVjdC0+cm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlZpZGVvIHx8ICFp
czxBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Q+KG1fb2JqZWN0KSkKICAgICAgICAgcmV0dXJuIE5P
OwogICAgIAogICAgIEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdCogbWVkaWFPYmplY3QgPSBkb3du
Y2FzdDxBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Q+KG1fb2JqZWN0KTsKQEAgLTc0MSw5ICs3NDAs
OSBAQCAtICh1aW50NjRfdClfYWNjZXNzaWJpbGl0eVRleHRFbnRyeVRyYWl0CiAgICAgICAgIHRy
YWl0cyB8PSAoW3NlbGYgX2F4SGFzVGV4dEN1cnNvclRyYWl0XSB8IFtzZWxmIF9heFRleHRPcGVy
YXRpb25zQXZhaWxhYmxlVHJhaXRdKTsKICAgICBpZiAobV9vYmplY3QtPmlzUGFzc3dvcmRGaWVs
ZCgpKQogICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4U2VjdXJlVGV4dEZpZWxkVHJhaXRdOwot
ICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gU2VhcmNoRmllbGRSb2xlKQorICAgIGlm
IChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxk
KQogICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4U2VhcmNoRmllbGRUcmFpdF07Ci0gICAgaWYg
KG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBUZXh0QXJlYVJvbGUpCisgICAgaWYgKG1fb2JqZWN0
LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEpCiAgICAgICAgIHRy
YWl0cyB8PSBbc2VsZiBfYXhUZXh0QXJlYVRyYWl0XTsKICAgICByZXR1cm4gdHJhaXRzOwogfQpA
QCAtNzU2LDU4ICs3NTUsNTggQEAgLSAodWludDY0X3QpYWNjZXNzaWJpbGl0eVRyYWl0cwogICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBtX29iamVjdC0+cm9sZVZhbHVlKCk7CiAgICAgdWlu
dDY0X3QgdHJhaXRzID0gW3NlbGYgX2F4V2ViQ29udGVudFRyYWl0XTsKICAgICBzd2l0Y2ggKHJv
bGUpIHsKLSAgICAgICAgY2FzZSBMaW5rUm9sZToKLSAgICAgICAgY2FzZSBXZWJDb3JlTGlua1Jv
bGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4TGlua1RyYWl0XTsKLSAgICAgICAg
ICAgIGlmIChtX29iamVjdC0+aXNWaXNpdGVkKCkpCi0gICAgICAgICAgICAgICAgdHJhaXRzIHw9
IFtzZWxmIF9heFZpc2l0ZWRUcmFpdF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBUZXh0RmllbGRSb2xlOgotICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUm9sZToKLSAgICAgICAg
Y2FzZSBUZXh0QXJlYVJvbGU6Ci0gICAgICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlUZXh0RW50cnlUcmFpdHNdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
SW1hZ2VSb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEltYWdlVHJhaXRdOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVGFiUm9sZToKLSAgICAgICAgICAgIHRy
YWl0cyB8PSBbc2VsZiBfYXhUYWJCdXR0b25UcmFpdF07Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBCdXR0b25Sb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEJ1
dHRvblRyYWl0XTsKLSAgICAgICAgICAgIGlmIChtX29iamVjdC0+aXNQcmVzc2VkKCkpCi0gICAg
ICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heFRvZ2dsZVRyYWl0XTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAgICAgICAgICAgIHRyYWl0
cyB8PSBbc2VsZiBfYXhQb3B1cEJ1dHRvblRyYWl0XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBf
YXhSYWRpb0J1dHRvblRyYWl0XSB8IFtzZWxmIF9heFRvZ2dsZVRyYWl0XTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFRvZ2dsZUJ1dHRvblJvbGU6Ci0gICAgICAgIGNhc2UgQ2hl
Y2tCb3hSb2xlOgotICAgICAgICBjYXNlIFN3aXRjaFJvbGU6Ci0gICAgICAgICAgICB0cmFpdHMg
fD0gKFtzZWxmIF9heEJ1dHRvblRyYWl0XSB8IFtzZWxmIF9heFRvZ2dsZVRyYWl0XSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIZWFkaW5nUm9sZToKLSAgICAgICAgICAgIHRy
YWl0cyB8PSBbc2VsZiBfYXhIZWFkZXJUcmFpdF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTdGF0aWNUZXh0Um9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhT
dGF0aWNUZXh0VHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2xpZGVy
Um9sZToKLSAgICAgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhBZGp1c3RhYmxlVHJhaXRdOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVudUJ1dHRvblJvbGU6Ci0gICAgICAg
IGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgICAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heE1lbnVJ
dGVtVHJhaXRdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVudUl0ZW1DaGVj
a2JveFJvbGU6Ci0gICAgICAgIGNhc2UgTWVudUl0ZW1SYWRpb1JvbGU6Ci0gICAgICAgICAgICB0
cmFpdHMgfD0gKFtzZWxmIF9heE1lbnVJdGVtVHJhaXRdIHwgW3NlbGYgX2F4VG9nZ2xlVHJhaXRd
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGluazoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpXZWJDb3JlTGluazoKKyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heExpbmtU
cmFpdF07CisgICAgICAgIGlmIChtX29iamVjdC0+aXNWaXNpdGVkKCkpCisgICAgICAgICAgICB0
cmFpdHMgfD0gW3NlbGYgX2F4VmlzaXRlZFRyYWl0XTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlNlYXJjaEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgor
ICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2FjY2Vzc2liaWxpdHlUZXh0RW50cnlUcmFpdHNdOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZToKKyAgICAg
ICAgdHJhaXRzIHw9IFtzZWxmIF9heEltYWdlVHJhaXRdOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWI6CisgICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhU
YWJCdXR0b25UcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkJ1dHRvbjoKKyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEJ1dHRvblRyYWl0XTsKKyAg
ICAgICAgaWYgKG1fb2JqZWN0LT5pc1ByZXNzZWQoKSkKKyAgICAgICAgICAgIHRyYWl0cyB8PSBb
c2VsZiBfYXhUb2dnbGVUcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4UG9wdXBC
dXR0b25UcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlJhZGlvQnV0dG9uOgorICAgICAgICB0cmFpdHMgfD0gW3NlbGYgX2F4UmFkaW9CdXR0b25UcmFp
dF0gfCBbc2VsZiBfYXhUb2dnbGVUcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpDaGVja0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTd2l0Y2g6CisgICAgICAg
IHRyYWl0cyB8PSAoW3NlbGYgX2F4QnV0dG9uVHJhaXRdIHwgW3NlbGYgX2F4VG9nZ2xlVHJhaXRd
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SGVhZGluZzoK
KyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEhlYWRlclRyYWl0XTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDoKKyAgICAgICAgdHJhaXRz
IHw9IFtzZWxmIF9heFN0YXRpY1RleHRUcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjoKKyAgICAgICAgdHJhaXRzIHw9IFtzZWxmIF9heEFk
anVzdGFibGVUcmFpdF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Ok1lbnVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06Cisg
ICAgICAgIHRyYWl0cyB8PSBbc2VsZiBfYXhNZW51SXRlbVRyYWl0XTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvOgorICAgICAgICB0cmFpdHMgfD0gKFtz
ZWxmIF9heE1lbnVJdGVtVHJhaXRdIHwgW3NlbGYgX2F4VG9nZ2xlVHJhaXRdKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKG1f
b2JqZWN0LT5pc0F0dGFjaG1lbnRFbGVtZW50KCkpCkBAIC04NDksMTc4ICs4NDgsMTc3IEBAIC0g
KEJPT0wpZGV0ZXJtaW5lSXNBY2Nlc3NpYmlsaXR5RWxlbWVudAogICAgIG1fb2JqZWN0LT51cGRh
dGVCYWNraW5nU3RvcmUoKTsKICAgICAKICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5yb2xlVmFsdWUo
KSkgewotICAgICAgICBjYXNlIFRleHRGaWVsZFJvbGU6Ci0gICAgICAgIGNhc2UgVGV4dEFyZWFS
b2xlOgotICAgICAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgICAgIGNhc2UgVG9nZ2xlQnV0dG9u
Um9sZToKLSAgICAgICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6Ci0gICAgICAgIGNhc2UgQ2hlY2tC
b3hSb2xlOgotICAgICAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICAgICAgY2FzZSBTbGlk
ZXJSb2xlOgotICAgICAgICBjYXNlIE1lbnVCdXR0b25Sb2xlOgotICAgICAgICBjYXNlIFZhbHVl
SW5kaWNhdG9yUm9sZToKLSAgICAgICAgY2FzZSBJbWFnZVJvbGU6Ci0gICAgICAgIGNhc2UgSW1h
Z2VNYXBMaW5rUm9sZToKLSAgICAgICAgY2FzZSBQcm9ncmVzc0luZGljYXRvclJvbGU6Ci0gICAg
ICAgIGNhc2UgTWVudUl0ZW1Sb2xlOgotICAgICAgICBjYXNlIE1lbnVJdGVtQ2hlY2tib3hSb2xl
OgotICAgICAgICBjYXNlIE1lbnVJdGVtUmFkaW9Sb2xlOgotICAgICAgICBjYXNlIEluY3JlbWVu
dG9yUm9sZToKLSAgICAgICAgY2FzZSBDb21ib0JveFJvbGU6Ci0gICAgICAgIGNhc2UgRGlzY2xv
c3VyZVRyaWFuZ2xlUm9sZToKLSAgICAgICAgY2FzZSBJbWFnZU1hcFJvbGU6Ci0gICAgICAgIGNh
c2UgTGlzdE1hcmtlclJvbGU6Ci0gICAgICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6Ci0gICAg
ICAgIGNhc2UgVGFiUm9sZToKLSAgICAgICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgotICAgICAg
ICBjYXNlIEhvcml6b250YWxSdWxlUm9sZToKLSAgICAgICAgY2FzZSBTbGlkZXJUaHVtYlJvbGU6
Ci0gICAgICAgIGNhc2UgU3dpdGNoUm9sZToKLSAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFJvbGU6
Ci0gICAgICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgY2FzZSBTdGF0aWNUZXh0Um9sZToKLSAgICAgICAgewotICAgICAgICAgICAgLy8g
TWFueSB0ZXh0IGVsZW1lbnRzIG9ubHkgY29udGFpbiBhIHNwYWNlLgotICAgICAgICAgICAgaWYg
KCFbW1tzZWxmIGFjY2Vzc2liaWxpdHlMYWJlbF0gc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJ
blNldDpbTlNDaGFyYWN0ZXJTZXQgd2hpdGVzcGFjZUNoYXJhY3RlclNldF1dIGxlbmd0aF0pCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAvLyBUZXh0IGVsZW1l
bnRzIHRoYXQgYXJlIGp1c3QgcGllY2VzIG9mIGxpbmtzIG9yIGhlYWRlcnMgc2hvdWxkIG5vdCBi
ZSBleHBvc2VkLgotICAgICAgICAgICAgaWYgKFtBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0
b3IoW3NlbGYgYWNjZXNzaWJpbGl0eUNvbnRhaW5lcl0pIGNvbnRhaW5zVW5uYXR1cmFsbHlTZWdt
ZW50ZWRDaGlsZHJlbl0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAvLyBEb24n
dCBleHBvc2UgaGVhZGVycyBhcyBlbGVtZW50czsgaW5zdGVhZCBleHBvc2UgdGhlaXIgY2hpbGRy
ZW4gYXMgZWxlbWVudHMsIHdpdGggdGhlIGhlYWRlciB0cmFpdCAodW5sZXNzIHRoZXkgaGF2ZSBu
byBjaGlsZHJlbikKLSAgICAgICAgY2FzZSBIZWFkaW5nUm9sZToKLSAgICAgICAgICAgIGlmICgh
W3NlbGYgYWNjZXNzaWJpbGl0eUVsZW1lbnRDb3VudF0pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OlRleHRBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkJ1dHRvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b246CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6Q2hlY2tCb3g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VmFs
dWVJbmRpY2F0b3I6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXBMaW5rOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1l
bnVJdGVtOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRpbzoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpJbmNyZW1lbnRvcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpD
b21ib0JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEaXNjbG9zdXJlVHJpYW5nbGU6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXA6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdE1hcmtlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0
Qm94T3B0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYjoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6SG9yaXpvbnRhbFJ1bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1
bWI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNw
aW5CdXR0b246CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlN0YXRpY1RleHQ6IHsKKyAgICAgICAgLy8gTWFueSB0ZXh0IGVsZW1lbnRzIG9ubHkgY29u
dGFpbiBhIHNwYWNlLgorICAgICAgICBpZiAoIVtbW3NlbGYgYWNjZXNzaWJpbGl0eUxhYmVsXSBz
dHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNl
Q2hhcmFjdGVyU2V0XV0gbGVuZ3RoXSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIAotICAgICAgICBjYXNlIFZpZGVvUm9sZToKLSAgICAgICAgICAgIHJldHVybiBbc2Vs
ZiBhY2Nlc3NpYmlsaXR5SXNXZWJJbnRlcmFjdGl2ZVZpZGVvXTsKLSAgICAgICAgICAgIAotICAg
ICAgICAvLyBMaW5rcyBjYW4gc29tZXRpbWVzIGJlIGVsZW1lbnRzICh3aGVuIHRoZXkgb25seSBj
b250YWluIHN0YXRpYyB0ZXh0IG9yIGRvbid0IGNvbnRhaW4gYW55dGhpbmcpLgotICAgICAgICAv
LyBUaGV5IHNob3VsZCBub3QgYmUgZWxlbWVudHMgd2hlbiBjb250YWluaW5nIHRleHQgYW5kIG90
aGVyIHR5cGVzLgotICAgICAgICBjYXNlIFdlYkNvcmVMaW5rUm9sZToKLSAgICAgICAgY2FzZSBM
aW5rUm9sZToKLSAgICAgICAgICAgIGlmIChbc2VsZiBjb250YWluc1VubmF0dXJhbGx5U2VnbWVu
dGVkQ2hpbGRyZW5dIHx8ICFbc2VsZiBhY2Nlc3NpYmlsaXR5RWxlbWVudENvdW50XSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgY2FzZSBHcm91cFJvbGU6Ci0gICAgICAgICAgICBpZiAoW3NlbGYgaXNTVkdHcm91cEVsZW1l
bnRdKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgRkFMTFRIUk9V
R0g7Ci0gICAgICAgIC8vIEFsbCBvdGhlciBlbGVtZW50cyBhcmUgaWdub3JlZCBvbiB0aGUgaXBo
b25lLgotICAgICAgICBjYXNlIEFubm90YXRpb25Sb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0
aW9uUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKLSAgICAgICAgY2Fz
ZSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkRp
YWxvZ1JvbGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgICAgIGNh
c2UgQXBwbGljYXRpb25Mb2dSb2xlOgotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTWFycXVlZVJv
bGU6Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25TdGF0dXNSb2xlOgotICAgICAgICBjYXNlIEFw
cGxpY2F0aW9uVGV4dEdyb3VwUm9sZToKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9s
ZToKLSAgICAgICAgY2FzZSBBdWRpb1JvbGU6Ci0gICAgICAgIGNhc2UgQmxvY2txdW90ZVJvbGU6
Ci0gICAgICAgIGNhc2UgQnJvd3NlclJvbGU6Ci0gICAgICAgIGNhc2UgQnVzeUluZGljYXRvclJv
bGU6Ci0gICAgICAgIGNhc2UgQ2FudmFzUm9sZToKLSAgICAgICAgY2FzZSBDYXB0aW9uUm9sZToK
LSAgICAgICAgY2FzZSBDZWxsUm9sZToKLSAgICAgICAgY2FzZSBDb2xvcldlbGxSb2xlOgotICAg
ICAgICBjYXNlIENvbHVtblJvbGU6Ci0gICAgICAgIGNhc2UgQ29sdW1uSGVhZGVyUm9sZToKLSAg
ICAgICAgY2FzZSBEZWZpbml0aW9uUm9sZToKLSAgICAgICAgY2FzZSBEZXNjcmlwdGlvbkxpc3RS
b2xlOgotICAgICAgICBjYXNlIERlc2NyaXB0aW9uTGlzdFRlcm1Sb2xlOgotICAgICAgICBjYXNl
IERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6Ci0gICAgICAgIGNhc2UgRGV0YWlsc1JvbGU6Ci0g
ICAgICAgIGNhc2UgRGlyZWN0b3J5Um9sZToKLSAgICAgICAgY2FzZSBEaXZSb2xlOgotICAgICAg
ICBjYXNlIERvY3VtZW50Um9sZToKLSAgICAgICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgot
ICAgICAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6Ci0gICAgICAgIGNhc2UgRHJhd2VyUm9sZToK
LSAgICAgICAgY2FzZSBFZGl0YWJsZVRleHRSb2xlOgotICAgICAgICBjYXNlIEZlZWRSb2xlOgot
ICAgICAgICBjYXNlIEZpZ3VyZVJvbGU6Ci0gICAgICAgIGNhc2UgRm9vdGVyUm9sZToKLSAgICAg
ICAgY2FzZSBGb290bm90ZVJvbGU6Ci0gICAgICAgIGNhc2UgRm9ybVJvbGU6Ci0gICAgICAgIGNh
c2UgR3JpZFJvbGU6Ci0gICAgICAgIGNhc2UgR3JpZENlbGxSb2xlOgotICAgICAgICBjYXNlIEdy
b3dBcmVhUm9sZToKLSAgICAgICAgY2FzZSBIZWxwVGFnUm9sZToKLSAgICAgICAgY2FzZSBJZ25v
cmVkUm9sZToKLSAgICAgICAgY2FzZSBJbmxpbmVSb2xlOgotICAgICAgICBjYXNlIExhYmVsUm9s
ZToKLSAgICAgICAgY2FzZSBMYW5kbWFya0Jhbm5lclJvbGU6Ci0gICAgICAgIGNhc2UgTGFuZG1h
cmtDb21wbGVtZW50YXJ5Um9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9s
ZToKLSAgICAgICAgY2FzZSBMYW5kbWFya0RvY1JlZ2lvblJvbGU6Ci0gICAgICAgIGNhc2UgTGFu
ZG1hcmtNYWluUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25Sb2xlOgotICAg
ICAgICBjYXNlIExhbmRtYXJrUmVnaW9uUm9sZToKLSAgICAgICAgY2FzZSBMYW5kbWFya1NlYXJj
aFJvbGU6Ci0gICAgICAgIGNhc2UgTGVnZW5kUm9sZToKLSAgICAgICAgY2FzZSBMaXN0Um9sZToK
LSAgICAgICAgY2FzZSBMaXN0Qm94Um9sZToKLSAgICAgICAgY2FzZSBMaXN0SXRlbVJvbGU6Ci0g
ICAgICAgIGNhc2UgTWFya1JvbGU6Ci0gICAgICAgIGNhc2UgTWF0aEVsZW1lbnRSb2xlOgotICAg
ICAgICBjYXNlIE1hdHRlUm9sZToKLSAgICAgICAgY2FzZSBNZW51Um9sZToKLSAgICAgICAgY2Fz
ZSBNZW51QmFyUm9sZToKLSAgICAgICAgY2FzZSBNZW51TGlzdFBvcHVwUm9sZToKLSAgICAgICAg
Y2FzZSBNZW51TGlzdE9wdGlvblJvbGU6Ci0gICAgICAgIGNhc2UgT3V0bGluZVJvbGU6Ci0gICAg
ICAgIGNhc2UgUGFyYWdyYXBoUm9sZToKLSAgICAgICAgY2FzZSBQcmVSb2xlOgotICAgICAgICBj
YXNlIFByZXNlbnRhdGlvbmFsUm9sZToKLSAgICAgICAgY2FzZSBSYWRpb0dyb3VwUm9sZToKLSAg
ICAgICAgY2FzZSBSb3dIZWFkZXJSb2xlOgotICAgICAgICBjYXNlIFJvd1JvbGU6Ci0gICAgICAg
IGNhc2UgUnVieUJhc2VSb2xlOgotICAgICAgICBjYXNlIFJ1YnlCbG9ja1JvbGU6Ci0gICAgICAg
IGNhc2UgUnVieUlubGluZVJvbGU6Ci0gICAgICAgIGNhc2UgUnVieVJ1blJvbGU6Ci0gICAgICAg
IGNhc2UgUnVieVRleHRSb2xlOgotICAgICAgICBjYXNlIFJ1bGVyUm9sZToKLSAgICAgICAgY2Fz
ZSBSdWxlck1hcmtlclJvbGU6Ci0gICAgICAgIGNhc2UgU2Nyb2xsQXJlYVJvbGU6Ci0gICAgICAg
IGNhc2UgU2Nyb2xsQmFyUm9sZToKLSAgICAgICAgY2FzZSBTaGVldFJvbGU6Ci0gICAgICAgIGNh
c2UgU3BpbkJ1dHRvblBhcnRSb2xlOgotICAgICAgICBjYXNlIFNwbGl0R3JvdXBSb2xlOgotICAg
ICAgICBjYXNlIFNwbGl0dGVyUm9sZToKLSAgICAgICAgY2FzZSBTdW1tYXJ5Um9sZToKLSAgICAg
ICAgY2FzZSBTeXN0ZW1XaWRlUm9sZToKLSAgICAgICAgY2FzZSBTVkdSb290Um9sZToKLSAgICAg
ICAgY2FzZSBTVkdUZXh0UGF0aFJvbGU6Ci0gICAgICAgIGNhc2UgU1ZHVGV4dFJvbGU6Ci0gICAg
ICAgIGNhc2UgU1ZHVFNwYW5Sb2xlOgotICAgICAgICBjYXNlIFRhYkdyb3VwUm9sZToKLSAgICAg
ICAgY2FzZSBUYWJMaXN0Um9sZToKLSAgICAgICAgY2FzZSBUYWJQYW5lbFJvbGU6Ci0gICAgICAg
IGNhc2UgVGFibGVSb2xlOgotICAgICAgICBjYXNlIFRhYmxlSGVhZGVyQ29udGFpbmVyUm9sZToK
LSAgICAgICAgY2FzZSBUZXJtUm9sZToKLSAgICAgICAgY2FzZSBUZXh0R3JvdXBSb2xlOgotICAg
ICAgICBjYXNlIFRpbWVSb2xlOgotICAgICAgICBjYXNlIFRyZWVSb2xlOgotICAgICAgICBjYXNl
IFRyZWVJdGVtUm9sZToKLSAgICAgICAgY2FzZSBUcmVlR3JpZFJvbGU6Ci0gICAgICAgIGNhc2Ug
VG9vbGJhclJvbGU6Ci0gICAgICAgIGNhc2UgVW5rbm93blJvbGU6Ci0gICAgICAgIGNhc2UgVXNl
ckludGVyZmFjZVRvb2x0aXBSb2xlOgotICAgICAgICBjYXNlIFdlYkFwcGxpY2F0aW9uUm9sZToK
LSAgICAgICAgY2FzZSBXZWJBcmVhUm9sZToKLSAgICAgICAgY2FzZSBXaW5kb3dSb2xlOgotICAg
ICAgICBjYXNlIFJvd0dyb3VwUm9sZToKKworICAgICAgICAvLyBUZXh0IGVsZW1lbnRzIHRoYXQg
YXJlIGp1c3QgcGllY2VzIG9mIGxpbmtzIG9yIGhlYWRlcnMgc2hvdWxkIG5vdCBiZSBleHBvc2Vk
LgorICAgICAgICBpZiAoW0FjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3Rvcihbc2VsZiBhY2Nl
c3NpYmlsaXR5Q29udGFpbmVyXSkgY29udGFpbnNVbm5hdHVyYWxseVNlZ21lbnRlZENoaWxkcmVu
XSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgICAgICAKKyAgICAvLyBEb24ndCBleHBvc2UgaGVhZGVycyBhcyBlbGVtZW50czsgaW5z
dGVhZCBleHBvc2UgdGhlaXIgY2hpbGRyZW4gYXMgZWxlbWVudHMsIHdpdGggdGhlIGhlYWRlciB0
cmFpdCAodW5sZXNzIHRoZXkgaGF2ZSBubyBjaGlsZHJlbikKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpIZWFkaW5nOgorICAgICAgICBpZiAoIVtzZWxmIGFjY2Vzc2liaWxpdHlFbGVtZW50
Q291bnRdKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VmlkZW86CisgICAgICAgIHJl
dHVybiBbc2VsZiBhY2Nlc3NpYmlsaXR5SXNXZWJJbnRlcmFjdGl2ZVZpZGVvXTsKKyAgICAgICAg
CisgICAgLy8gTGlua3MgY2FuIHNvbWV0aW1lcyBiZSBlbGVtZW50cyAod2hlbiB0aGV5IG9ubHkg
Y29udGFpbiBzdGF0aWMgdGV4dCBvciBkb24ndCBjb250YWluIGFueXRoaW5nKS4KKyAgICAvLyBU
aGV5IHNob3VsZCBub3QgYmUgZWxlbWVudHMgd2hlbiBjb250YWluaW5nIHRleHQgYW5kIG90aGVy
IHR5cGVzLgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5rOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpbms6CisgICAgICAgIGlmIChbc2VsZiBjb250YWluc1Vu
bmF0dXJhbGx5U2VnbWVudGVkQ2hpbGRyZW5dIHx8ICFbc2VsZiBhY2Nlc3NpYmlsaXR5RWxlbWVu
dENvdW50XSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXA6CisgICAgICAgIGlmIChbc2VsZiBp
c1NWR0dyb3VwRWxlbWVudF0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgRkFM
TFRIUk9VR0g7CisgICAgLy8gQWxsIG90aGVyIGVsZW1lbnRzIGFyZSBpZ25vcmVkIG9uIHRoZSBp
cGhvbmUuCisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QW5ub3RhdGlvbjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxp
Y2F0aW9uQWxlcnREaWFsb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRp
b25EaWFsb2c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Hcm91cDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkxvZzoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6QXBwbGljYXRpb25TdGF0dXM6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25UZXh0R3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGlj
YXRpb25UaW1lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBdWRpbzoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpCbG9ja3F1b3RlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkJyb3dzZXI6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnVzeUluZGljYXRvcjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDYW52YXM6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6Q2FwdGlvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbG9yV2VsbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpDb2x1bW46CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVy
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlZmluaXRpb246CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkRlc2NyaXB0aW9uTGlzdFRlcm06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVz
Y3JpcHRpb25MaXN0RGV0YWlsOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRldGFpbHM6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGlyZWN0b3J5OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkRpdjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudDoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnROb3RlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkRyYXdlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpFZGl0YWJsZVRleHQ6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RmVlZDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpGaWd1cmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdGVyOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3Rub3RlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkZvcm06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZDoKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpH
cm93QXJlYToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpIZWxwVGFnOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
SW5saW5lOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhYmVsOgorICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
YW5kbWFya0NvbnRlbnRJbmZvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
RG9jUmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtTZWFyY2g6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGVnZW5k
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6TGlzdEJveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNYXJrOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6Ok1hdGhFbGVtZW50OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1hdHRlOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUJhcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51TGlzdFBvcHVw
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVMaXN0T3B0aW9uOgorICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6Ok91dGxpbmU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
UGFyYWdyYXBoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlByZToKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25hbDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpSYWRpb0dyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlcjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSb3c6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6UnVieUJhc2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVieUJsb2NrOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlJbmxpbmU6CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6UnVieVJ1bjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5VGV4
dDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWxlcjoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpSdWxlck1hcmtlcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3Jv
bGxBcmVhOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpTaGVldDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpT
cGluQnV0dG9uUGFydDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTcGxpdEdyb3VwOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyOgorICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OlN1bW1hcnk6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3lzdGVtV2lk
ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdSb290OgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlNWR1RleHRQYXRoOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlNW
R1RleHQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVFNwYW46CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGFiR3JvdXA6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGFiTGlzdDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5lbDoKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJsZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpU
YWJsZUhlYWRlckNvbnRhaW5lcjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXJtOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91cDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUaW1lOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6CisgICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VHJlZUdyaWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VG9vbGJhcjoKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlVzZXJJbnRlcmZhY2VUb29sdGlwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OldlYkFwcGxpY2F0aW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWE6Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2luZG93OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlJvd0dyb3VwOgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTA0Miw3ICsxMDQwLDcgQEAgLSAoQk9PTClzdHJp
bmdWYWx1ZVNob3VsZEJlVXNlZEluTGFiZWwKIHsKICAgICBpZiAobV9vYmplY3QtPmlzVGV4dENv
bnRyb2woKSkKICAgICAgICAgcmV0dXJuIE5POwotICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVl
KCkgPT0gUG9wVXBCdXR0b25Sb2xlKQorICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uKQogICAgICAgICByZXR1cm4gTk87CiAgICAg
aWYgKG1fb2JqZWN0LT5pc0ZpbGVVcGxvYWRCdXR0b24oKSkKICAgICAgICAgcmV0dXJuIE5POwpA
QCAtMTEyNiwxMyArMTEyNCwxMyBAQCAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlMYWJlbAog
ICAgICAgICBheFRpdGxlID0gbmlsOwogCiAgICAgLy8gRm9vdGVyIGlzIG5vdCBjb25zaWRlcmVk
IGEgbGFuZG1hcmssIGJ1dCB3ZSB3YW50IHRoZSByb2xlIGRlc2NyaXB0aW9uLgotICAgIGlmICht
X29iamVjdC0+cm9sZVZhbHVlKCkgPT0gRm9vdGVyUm9sZSkKKyAgICBpZiAobV9vYmplY3QtPnJv
bGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXIpCiAgICAgICAgIGxhbmRtYXJr
RGVzY3JpcHRpb24gPSBBWEZvb3RlclJvbGVEZXNjcmlwdGlvblRleHQoKTsKIAogICAgIE5TTXV0
YWJsZVN0cmluZyAqcmVzdWx0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwotICAgIGlmICht
X29iamVjdC0+cm9sZVZhbHVlKCkgPT0gSG9yaXpvbnRhbFJ1bGVSb2xlKQorICAgIGlmIChtX29i
amVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Okhvcml6b250YWxSdWxlKQog
ICAgICAgICBhcHBlbmRTdHJpbmdUb1Jlc3VsdChyZXN1bHQsIEFYSG9yaXpvbnRhbFJ1bGVEZXNj
cmlwdGlvblRleHQoKSk7Ci0gICAgICAgIAorCiAgICAgYXBwZW5kU3RyaW5nVG9SZXN1bHQocmVz
dWx0LCBheFRpdGxlKTsKICAgICBhcHBlbmRTdHJpbmdUb1Jlc3VsdChyZXN1bHQsIGF4RGVzY3Jp
cHRpb24pOwogICAgIGlmIChbc2VsZiBzdHJpbmdWYWx1ZVNob3VsZEJlVXNlZEluTGFiZWxdKSB7
CkBAIC0xMzkwLDEzICsxMzg4LDEzIEBAIC0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVZhbHVl
CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
ID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwotICAgIGlmIChtX29iamVjdC0+aXNDaGVja2JveE9y
UmFkaW8oKSB8fCByb2xlID09IE1lbnVJdGVtQ2hlY2tib3hSb2xlIHx8IHJvbGUgPT0gTWVudUl0
ZW1SYWRpb1JvbGUpIHsKKyAgICBpZiAobV9vYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkgfHwg
cm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1DaGVja2JveCB8fCByb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvKSB7CiAgICAgICAgIHN3aXRjaCAobV9vYmpl
Y3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBCdXR0b25TdGF0ZU9m
ZjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjoKICAgICAgICAg
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVkIiwgMF07Ci0gICAgICAg
IGNhc2UgQnV0dG9uU3RhdGVPbjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3Rh
dGU6Ok9uOgogICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JWQiLCAxXTsKLSAgICAgICAgY2FzZSBCdXR0b25TdGF0ZU1peGVkOgorICAgICAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6TWl4ZWQ6CiAgICAgICAgICAgICByZXR1cm4gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlZCIsIDJdOwogICAgICAgICB9CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTQ1MCw3ICsxNDQ4LDcgQEAgLSAoQk9PTClhY2Nlc3NpYmls
aXR5SXNDb21ib0JveAogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0p
CiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIHJldHVybiBtX29iamVjdC0+cm9sZVZhbHVlKCkg
PT0gQ29tYm9Cb3hSb2xlOworICAgIHJldHVybiBtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94OwogfQogCiAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxp
dHlIaW50CkBAIC0xNjcwLDcgKzE2NjgsNyBAQCAtIChCT09MKWNvbnRhaW5zVW5uYXR1cmFsbHlT
ZWdtZW50ZWRDaGlsCiAgICAgICAgIHJldHVybiBOTzsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwotICAgIGlmIChyb2xlICE9IExpbmtS
b2xlICYmIHJvbGUgIT0gV2ViQ29yZUxpbmtSb2xlKQorICAgIGlmIChyb2xlICE9IEFjY2Vzc2li
aWxpdHlSb2xlOjpMaW5rICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OldlYkNvcmVMaW5r
KQogICAgICAgICByZXR1cm4gTk87CiAgICAgCiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBt
X29iamVjdC0+Y2hpbGRyZW4oKTsKQEAgLTE2ODIsNyArMTY4MCw3IEBAIC0gKEJPT0wpY29udGFp
bnNVbm5hdHVyYWxseVNlZ21lbnRlZENoaWwKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY2hpbGRyZW5TaXplOyArK2kpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9s
ZSA9IGNoaWxkcmVuW2ldLT5yb2xlVmFsdWUoKTsKLSAgICAgICAgaWYgKHJvbGUgIT0gU3RhdGlj
VGV4dFJvbGUgJiYgcm9sZSAhPSBJbWFnZVJvbGUgJiYgcm9sZSAhPSBHcm91cFJvbGUgJiYgcm9s
ZSAhPSBUZXh0R3JvdXBSb2xlKQorICAgICAgICBpZiAocm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U3RhdGljVGV4dCAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpJbWFnZSAmJiByb2xl
ICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xl
OjpUZXh0R3JvdXApCiAgICAgICAgICAgICByZXR1cm4gTk87CiAgICAgfQogICAgIApAQCAtMTgy
Niw3ICsxODI0LDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUxpbmtlZEVsZW1lbnQKICAgICAKICAg
ICAvLyBJZiB0aGlzIHN0YXRpYyB0ZXh0IGluc2lkZSBvZiBhIGxpbmssIGl0IHNob3VsZCB1c2Ug
aXRzIHBhcmVudCdzIGxpbmtlZCBlbGVtZW50LgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVs
ZW1lbnQgPSBtX29iamVjdDsKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IFN0YXRp
Y1RleHRSb2xlICYmIG1fb2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+aXNMaW5rKCkp
CisgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3Rh
dGljVGV4dCAmJiBtX29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCktPmlzTGluaygpKQog
ICAgICAgICBlbGVtZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAg
IAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBj
aGlsZHJlbjsKQEAgLTIwMDAsNyArMTk5OCw3IEBAIC0gKEFjY2Vzc2liaWxpdHlPYmplY3QqKXRy
ZWVJdGVtUGFyZW50Rm8KIHsKICAgICAvLyBVc2UgdGhpcyB0byBjaGVjayBpZiBhbiBvYmplY3Qg
aXMgaW5zaWRlIGEgdHJlZWl0ZW0gb2JqZWN0LgogICAgIGlmIChjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptYXRjaGVkUGFyZW50KCpvYmpl
Y3QsIHRydWUsIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsKLSAgICAg
ICAgcmV0dXJuIG9iamVjdC5yb2xlVmFsdWUoKSA9PSBUcmVlSXRlbVJvbGU7CisgICAgICAgIHJl
dHVybiBvYmplY3Qucm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVJdGVtOwog
ICAgIH0pKQogICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4o
cGFyZW50KTsKICAgICByZXR1cm4gbmlsOwpAQCAtMjAyMiw3ICsyMDIwLDcgQEAgLSAodm9pZClh
Y2Nlc3NpYmlsaXR5RWxlbWVudERpZEJlY29tZUZvYwogICAgIC8vIFRoZSBmb2N1c2VkIFZvaWNl
T3ZlciBlbGVtZW50IG1pZ2h0IGJlIHRoZSB0ZXh0IGluc2lkZSBhIGxpbmsuCiAgICAgLy8gSW4g
dGhvc2UgY2FzZXMgd2Ugc2hvdWxkIGZvY3VzIG9uIHRoZSBsaW5rIGl0c2VsZi4KICAgICBmb3Ig
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IG1fb2JqZWN0OyBvYmplY3QgIT0gbmlsOyBv
YmplY3QgPSBvYmplY3QtPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAgIGlmIChvYmplY3QtPnJv
bGVWYWx1ZSgpID09IFdlYkFyZWFSb2xlKQorICAgICAgICBpZiAob2JqZWN0LT5yb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6V2ViQXJlYSkKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGlmIChvYmplY3QtPmNhblNldEZvY3VzQXR0cmlidXRlKCkpIHsKQEAgLTI5NzEsMjAg
KzI5NjksMTkgQEAgLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdAogICAg
ICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIHN3aXRjaCAobV9vYmplY3QtPmFyaWFDdXJyZW50
U3RhdGUoKSkgewotICAgIGNhc2UgQVJJQUN1cnJlbnRGYWxzZToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlBUklBQ3VycmVudFN0YXRlOjpGYWxzZToKICAgICAgICAgcmV0dXJuIEAiZmFsc2UiOwot
ICAgIGNhc2UgQVJJQUN1cnJlbnRQYWdlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJy
ZW50U3RhdGU6OlBhZ2U6CiAgICAgICAgIHJldHVybiBAInBhZ2UiOwotICAgIGNhc2UgQVJJQUN1
cnJlbnRTdGVwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlN0ZXA6
CiAgICAgICAgIHJldHVybiBAInN0ZXAiOwotICAgIGNhc2UgQVJJQUN1cnJlbnRMb2NhdGlvbjoK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpMb2NhdGlvbjoKICAgICAg
ICAgcmV0dXJuIEAibG9jYXRpb24iOwotICAgIGNhc2UgQVJJQUN1cnJlbnRUaW1lOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU6CiAgICAgICAgIHJldHVybiBA
InRpbWUiOwotICAgIGNhc2UgQVJJQUN1cnJlbnREYXRlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eUFSSUFDdXJyZW50U3RhdGU6OkRhdGU6CiAgICAgICAgIHJldHVybiBAImRhdGUiOwotICAgIGRl
ZmF1bHQ6Ci0gICAgY2FzZSBBUklBQ3VycmVudFRydWU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
QVJJQUN1cnJlbnRTdGF0ZTo6VHJ1ZToKICAgICAgICAgcmV0dXJuIEAidHJ1ZSI7CiAgICAgfQog
fQpAQCAtMjk5NSwxNCArMjk5MiwxNCBAQCAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlTb3J0
RGlyZWN0aW9uCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgc3dpdGNoIChtX29iamVj
dC0+c29ydERpcmVjdGlvbigpKSB7Ci0gICAgY2FzZSBTb3J0RGlyZWN0aW9uQXNjZW5kaW5nOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246OkFzY2VuZGluZzoKICAgICAgICAg
cmV0dXJuIEAiYXNjZW5kaW5nIjsKLSAgICBjYXNlIFNvcnREaXJlY3Rpb25EZXNjZW5kaW5nOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6CiAgICAgICAg
IHJldHVybiBAImRlc2NlbmRpbmciOwotICAgIGNhc2UgU29ydERpcmVjdGlvbk90aGVyOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok90aGVyOgogICAgICAgICByZXR1cm4g
QCJvdGhlciI7Ci0gICAgZGVmYXVsdDoKLSAgICBjYXNlIFNvcnREaXJlY3Rpb25Ob25lOgorICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9uZToKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9
CiB9CkBAIC0zMTI2LDcgKzMxMjMsNyBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlJc01hdGhUb3BP
YmplY3QKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAg
ICByZXR1cm4gTk87CiAKLSAgICByZXR1cm4gbV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IERvY3Vt
ZW50TWF0aFJvbGU7CisgICAgcmV0dXJuIG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoOwogfQogCiAtIChOU0ludGVnZXIpYWNjZXNzaWJpbGl0
eU1hdGhMaW5lVGhpY2tuZXNzCkBAIC0zMTQyLDcgKzMxMzksNyBAQCAtIChOU1N0cmluZyAqKWFj
Y2Vzc2liaWxpdHlNYXRoVHlwZQogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1
ZSgpID09IE1hdGhFbGVtZW50Um9sZSkgeworICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1hdGhFbGVtZW50KSB7CiAgICAgICAgIGlmIChtX29iamVj
dC0+aXNNYXRoRnJhY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBAIkFYTWF0aEZyYWN0aW9u
IjsKICAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhGZW5jZWQoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdE1hYy5tbQkocmV2aXNpb24gMjI0MDcxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODIs
MzIgKzgyLDMyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUkKIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJp
bGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdAogewogICAgIGlmIChpc01lbnVMaXN0
UG9wdXAoKSB8fCBpc01lbnVMaXN0T3B0aW9uKCkpCi0gICAgICAgIHJldHVybiBJZ25vcmVPYmpl
Y3Q7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVP
YmplY3Q7CiAKLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gQ2FwdGlvblJvbGUpCi0gICAgICAgIHJl
dHVybiBJZ25vcmVPYmplY3Q7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpDYXB0aW9uKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lv
bjo6SWdub3JlT2JqZWN0OwogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBNYXJrUm9sZSkK
LSAgICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7CisgICAgaWYgKHJvbGVWYWx1ZSgpID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpNYXJrKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVj
dEluY2x1c2lvbjo6SW5jbHVkZU9iamVjdDsKIAogICAgIC8vIE5ldmVyIGV4cG9zZSBhbiB1bmtu
b3duIG9iamVjdCBvbiB0aGUgTWFjLiBDbGllbnRzIG9mIHRoZSBBWCBBUEkgd2lsbCBub3Qga25v
dyB3aGF0IHRvIGRvIHdpdGggaXQuCiAgICAgLy8gU3BlY2lhbCBjYXNlIGlzIHdoZW4gdGhlIHVu
a25vd24gb2JqZWN0IGlzIGFjdHVhbGx5IGFuIGF0dGFjaG1lbnQuCi0gICAgaWYgKHJvbGVWYWx1
ZSgpID09IFVua25vd25Sb2xlICYmICFpc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIEln
bm9yZU9iamVjdDsKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVu
a25vd24gJiYgIWlzQXR0YWNobWVudCgpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbjo6SWdub3JlT2JqZWN0OwogICAgIAotICAgIGlmIChyb2xlVmFsdWUoKSA9
PSBJbmxpbmVSb2xlICYmICFpc1N0eWxlRm9ybWF0R3JvdXAoKSkKLSAgICAgICAgcmV0dXJuIEln
bm9yZU9iamVjdDsKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Oklu
bGluZSAmJiAhaXNTdHlsZUZvcm1hdEdyb3VwKCkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gVGhlIGxlZ2VuZCBl
bGVtZW50IGlzIGlnbm9yZWQgaWYgaXQgbGl2ZXMgaW5zaWRlIG9mIGEgZmllbGRzZXQgZWxlbWVu
dCB0aGF0IHVzZXMgaXQgdG8gZ2VuZXJhdGUgYWx0ZXJuYXRpdmUgdGV4dC4KICAgICAgICAgaWYg
KHJlbmRlcmVyLT5pc0xlZ2VuZCgpKSB7CiAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0g
dGhpcy0+ZWxlbWVudCgpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgYW5jZXN0b3JzT2ZU
eXBlPEhUTUxGaWVsZFNldEVsZW1lbnQ+KCplbGVtZW50KS5maXJzdCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVjdDsKICAgICAgICAgfQogICAgIH0KICAg
ICAKLSAgICByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7CiB9CiAgICAgCiBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0JKHJldmlzaW9uIDIyNDA3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIC0gKEJPT0wpZmls
ZVVwbG9hZEJ1dHRvblJldHVybnNWYWx1ZUluVGkKIC0gKE5TU3RyaW5nICopYmFzZUFjY2Vzc2li
aWxpdHlUaXRsZQogewogICAgIC8vIFN0YXRpYyB0ZXh0IG9iamVjdHMgc2hvdWxkIG5vdCBoYXZl
IGEgdGl0bGUuIEl0cyBjb250ZW50IGlzIGNvbW11bmljYXRlZCBpbiBpdHMgQVhWYWx1ZS4KLSAg
ICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IFN0YXRpY1RleHRSb2xlKQorICAgIGlmICht
X29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpCiAg
ICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nXTsKIAogICAgIC8vIEEgZmlsZSB1cGxvYWQg
YnV0dG9uIHByZXNlbnRzIGEgY2hhbGxlbmdlIGJlY2F1c2UgaXQgaGFzIGJ1dHRvbiB0ZXh0IGFu
ZCBhIHZhbHVlLCBidXQgdGhlCkBAIC0zNDAsMTYgKzM0MCwxNiBAQCAtIChOU1N0cmluZyAqKWJh
c2VBY2Nlc3NpYmlsaXR5VGl0bGUKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRleHQgOiB0
ZXh0T3JkZXIpIHsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbHRlcm5hdGl2ZSB0ZXh0LCB0aGVu
IHdlIHNob3VsZCBub3QgZXhwb3NlIGEgdGl0bGUuCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3Vy
Y2UgPT0gQWx0ZXJuYXRpdmVUZXh0KQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFj
Y2Vzc2liaWxpdHlUZXh0U291cmNlOjpBbHRlcm5hdGl2ZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAKICAgICAgICAgLy8gT25jZSB3ZSBlbmNvdW50ZXIgdmlzaWJsZSB0ZXh0LCBvciB0
aGUgdGV4dCBmcm9tIG91ciBjaGlsZHJlbiB0aGF0IHNob3VsZCBiZSB1c2VkIGZvcmVtb3N0Lgot
ICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IFZpc2libGVUZXh0IHx8IHRleHQudGV4dFNv
dXJjZSA9PSBDaGlsZHJlblRleHQpCisgICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gQWNj
ZXNzaWJpbGl0eVRleHRTb3VyY2U6OlZpc2libGUgfHwgdGV4dC50ZXh0U291cmNlID09IEFjY2Vz
c2liaWxpdHlUZXh0U291cmNlOjpDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRl
eHQ7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGVsZW1lbnQgdGhhdCBsYWJl
bHMgdGhpcyBvYmplY3QgYW5kIGl0J3Mgbm90IGV4cG9zZWQsIHRoZW4gd2Ugc2hvdWxkIHVzZQog
ICAgICAgICAvLyB0aGF0IHRleHQgYXMgb3VyIHRpdGxlLgotICAgICAgICBpZiAodGV4dC50ZXh0
U291cmNlID09IExhYmVsQnlFbGVtZW50VGV4dCAmJiAhbV9vYmplY3QtPmV4cG9zZXNUaXRsZVVJ
RWxlbWVudCgpKQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlU
ZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudCAmJiAhbV9vYmplY3QtPmV4cG9zZXNUaXRsZVVJRWxl
bWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsKICAgICB9CiAgICAgCkBAIC0z
NjAsNyArMzYwLDcgQEAgLSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJpbGl0eURlc2NyaXB0aQog
ewogICAgIC8vIFN0YXRpYyB0ZXh0IG9iamVjdHMgc2hvdWxkIG5vdCBoYXZlIGEgZGVzY3JpcHRp
b24uIEl0cyBjb250ZW50IGlzIGNvbW11bmljYXRlZCBpbiBpdHMgQVhWYWx1ZS4KICAgICAvLyBP
bmUgZXhjZXB0aW9uIGlzIHRoZSBtZWRpYSBjb250cm9sIGxhYmVscyB0aGF0IGhhdmUgYSB2YWx1
ZSBhbmQgYSBkZXNjcmlwdGlvbi4gVGhvc2UgYXJlIHNldCBwcm9ncmFtYXRpY2FsbHkuCi0gICAg
aWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0Um9sZSAmJiAhbV9vYmplY3Qt
PmlzTWVkaWFDb250cm9sTGFiZWwoKSkKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0ICYmICFtX29iamVjdC0+aXNNZWRpYUNvbnRy
b2xMYWJlbCgpKQogICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107CiAgICAgCiAgICAg
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0T3JkZXI7CkBAIC0zNjksMTYgKzM2OSwxNiBA
QCAtIChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpCiAgICAgTlNNdXRhYmxl
U3RyaW5nICpyZXR1cm5UZXh0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwogICAgIGJvb2wg
dmlzaWJsZVRleHRBdmFpbGFibGUgPSBmYWxzZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRleHQg
OiB0ZXh0T3JkZXIpIHsKLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBbHRlcm5hdGl2
ZVRleHQpIHsKKyAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4
dFNvdXJjZTo6QWx0ZXJuYXRpdmUpIHsKICAgICAgICAgICAgIFtyZXR1cm5UZXh0IGFwcGVuZFN0
cmluZzp0ZXh0LnRleHRdOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIHN3aXRjaCAodGV4dC50ZXh0U291cmNlKSB7CiAgICAgICAgIC8vIFRoZXNlIGFy
ZSBzdWItY29tcG9uZW50cyBvZiBvbmUgZWxlbWVudCAoQXR0YWNobWVudCkgdGhhdCBhcmUgcmUt
Y29tYmluZWQgaW4gT1NYIGFuZCBpT1MuCi0gICAgICAgIGNhc2UgVGl0bGVUZXh0OgotICAgICAg
ICBjYXNlIFN1YnRpdGxlVGV4dDoKLSAgICAgICAgY2FzZSBBY3Rpb25UZXh0OiB7CisgICAgICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlRpdGxlOgorICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlUZXh0U291cmNlOjpTdWJ0aXRsZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
VGV4dFNvdXJjZTo6QWN0aW9uOiB7CiAgICAgICAgICAgICBpZiAoIXRleHQudGV4dC5sZW5ndGgo
KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChbcmV0dXJuVGV4dCBs
ZW5ndGhdKQpAQCAtMzg2LDE2ICszODYsMTYgQEAgLSAoTlNTdHJpbmcgKiliYXNlQWNjZXNzaWJp
bGl0eURlc2NyaXB0aQogICAgICAgICAgICAgW3JldHVyblRleHQgYXBwZW5kU3RyaW5nOnRleHQu
dGV4dF07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZpc2li
bGVUZXh0OgotICAgICAgICBjYXNlIENoaWxkcmVuVGV4dDoKLSAgICAgICAgY2FzZSBMYWJlbEJ5
RWxlbWVudFRleHQ6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlZpc2li
bGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OkNoaWxkcmVuOgorICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpMYWJlbEJ5RWxlbWVudDoKICAgICAg
ICAgICAgIHZpc2libGVUZXh0QXZhaWxhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmICF2aXNpYmxl
VGV4dEF2YWlsYWJsZSkgeworICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiAhdmlzaWJsZVRleHRBdmFpbGFibGUpIHsKICAg
ICAgICAgICAgIFtyZXR1cm5UZXh0IGFwcGVuZFN0cmluZzp0ZXh0LnRleHRdOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQxMSwyMyArNDExLDIzIEBAIC0gKE5TU3RyaW5nICop
YmFzZUFjY2Vzc2liaWxpdHlIZWxwVGV4dAogICAgIAogICAgIGJvb2wgZGVzY3JpcHRpdmVUZXh0
QXZhaWxhYmxlID0gZmFsc2U7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXh0IDogdGV4dE9yZGVy
KSB7Ci0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gSGVscFRleHQgfHwgdGV4dC50ZXh0
U291cmNlID09IFN1bW1hcnlUZXh0KQorICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFj
Y2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwIHx8IHRleHQudGV4dFNvdXJjZSA9PSBBY2Nlc3Np
YmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkKICAgICAgICAgICAgIHJldHVybiB0ZXh0LnRleHQ7
CiAgICAgICAgIAogICAgICAgICAvLyBJZiBhbiBlbGVtZW50IGRvZXMgTk9UIGhhdmUgb3RoZXIg
ZGVzY3JpcHRpdmUgdGV4dCB0aGUgdGl0bGUgdGFnIHNob3VsZCBiZSB1c2VkIGFzIGl0cyBkZXNj
cmlwdGl2ZSB0ZXh0LgogICAgICAgICAvLyBCdXQsIGlmIHRob3NlIEFSRSBhdmFpbGFibGUsIHRo
ZW4gdGhlIHRpdGxlIHRhZyBzaG91bGQgYmUgdXNlZCBmb3IgaGVscCB0ZXh0IGluc3RlYWQuCiAg
ICAgICAgIHN3aXRjaCAodGV4dC50ZXh0U291cmNlKSB7Ci0gICAgICAgIGNhc2UgQWx0ZXJuYXRp
dmVUZXh0OgotICAgICAgICBjYXNlIFZpc2libGVUZXh0OgotICAgICAgICBjYXNlIENoaWxkcmVu
VGV4dDoKLSAgICAgICAgY2FzZSBMYWJlbEJ5RWxlbWVudFRleHQ6CisgICAgICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVRleHRTb3VyY2U6OkFsdGVybmF0aXZlOgorICAgICAgICBjYXNlIEFjY2Vzc2li
aWxpdHlUZXh0U291cmNlOjpWaXNpYmxlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlUZXh0
U291cmNlOjpDaGlsZHJlbjoKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6
TGFiZWxCeUVsZW1lbnQ6CiAgICAgICAgICAgICBkZXNjcmlwdGl2ZVRleHRBdmFpbGFibGUgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9
PSBUaXRsZVRhZ1RleHQgJiYgZGVzY3JpcHRpdmVUZXh0QXZhaWxhYmxlKQorICAgICAgICBpZiAo
dGV4dC50ZXh0U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiBk
ZXNjcmlwdGl2ZVRleHRBdmFpbGFibGUpCiAgICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0Owog
ICAgIH0KICAgICAKQEAgLTQ5OCw0OCArNDk4LDQ4IEBAIC0gKENHUG9pbnQpY29udmVydFBvaW50
VG9TY3JlZW5TcGFjZTooRmwKIC0gKE5TU3RyaW5nICopYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0
aW9uCiB7CiAgICAgc3dpdGNoIChtX29iamVjdC0+cm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIExh
bmRtYXJrQmFubmVyUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jh
bm5lcjoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1h
cmtCYW5uZXIiKTsKLSAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5OgogICAgICAgICByZXR1
cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0NvbXBsZW1lbnRhcnkiKTsK
LSAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkxhbmRtYXJrQ29udGVudEluZm86CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50
R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQ29udGVudEluZm8iKTsKLSAgICBjYXNlIExhbmRtYXJr
TWFpblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgogICAg
ICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya01haW4iKTsK
LSAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdy
b3VwVGV4dChAIkFSSUFMYW5kbWFya05hdmlnYXRpb24iKTsKLSAgICBjYXNlIExhbmRtYXJrRG9j
UmVnaW9uUm9sZToKLSAgICBjYXNlIExhbmRtYXJrUmVnaW9uUm9sZToKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya1JlZ2lvbjoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRl
eHQoQCJBUklBTGFuZG1hcmtSZWdpb24iKTsKLSAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1NlYXJjaDoKICAgICAgICAgcmV0
dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtTZWFyY2giKTsKLSAgICBj
YXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uQWxlcnQ6CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAi
QVJJQUFwcGxpY2F0aW9uQWxlcnQiKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dS
b2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2c6
CiAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9u
QWxlcnREaWFsb2ciKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uRGlhbG9nUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZzoKICAgICAgICAgcmV0dXJuIEFY
QVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25EaWFsb2ciKTsKLSAgICBjYXNl
IEFwcGxpY2F0aW9uTG9nUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNh
dGlvbkxvZzoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBw
bGljYXRpb25Mb2ciKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uTWFycXVlZVJvbGU6CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25NYXJxdWVlOgogICAgICAgICByZXR1cm4g
QVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvbk1hcnF1ZWUiKTsKLSAgICBj
YXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpB
cHBsaWNhdGlvblN0YXR1czoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQo
QCJBUklBQXBwbGljYXRpb25TdGF0dXMiKTsKLSAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xl
OgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGltZXI6CiAgICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uVGltZXIiKTsK
LSAgICBjYXNlIERvY3VtZW50Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1
bWVudDoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBRG9jdW1l
bnQiKTsKLSAgICBjYXNlIERvY3VtZW50QXJ0aWNsZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdy
b3VwVGV4dChAIkFSSUFEb2N1bWVudEFydGljbGUiKTsKLSAgICBjYXNlIERvY3VtZW50TWF0aFJv
bGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoOgogICAgICAgICBy
ZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudE1hdGgiKTsKLSAgICBj
YXNlIERvY3VtZW50Tm90ZVJvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1l
bnROb3RlOgogICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFEb2N1
bWVudE5vdGUiKTsKLSAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZToKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50ZXJmYWNlVG9vbHRpcDoKICAgICAgICAgcmV0dXJu
IEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBVXNlckludGVyZmFjZVRvb2x0aXAiKTsKLSAg
ICBjYXNlIFRhYlBhbmVsUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJQYW5l
bDoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBVGFiUGFuZWwi
KTsKLSAgICBjYXNlIFdlYkFwcGxpY2F0aW9uUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpXZWJBcHBsaWNhdGlvbjoKICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRl
eHQoQCJBUklBV2ViQXBwbGljYXRpb24iKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
bmlsOwpAQCAtNjUyLDQ2ICs2NTIsNDYgQEAgc3RydWN0IFNlYXJjaEtleUVudHJ5IHsKIHN0YXRp
YyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
TWFwKCkKIHsKICAgICBjb25zdCBTZWFyY2hLZXlFbnRyeSBzZWFyY2hLZXlzW10gPSB7Ci0gICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSwgQW55VHlwZVNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUFydGljbGVTZWFyY2hLZXksIEFydGljbGVTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2Vh
cmNoS2V5LCBCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5QmxvY2txdW90ZVNlYXJjaEtleSwgQmxvY2txdW90ZVNlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5LCBCb2xkRm9udFNlYXJjaEtl
eSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSwgQnV0dG9uU2Vh
cmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXksIENo
ZWNrQm94U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJj
aEtleSwgQ29udHJvbFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eURpZmZl
cmVudFR5cGVTZWFyY2hLZXksIERpZmZlcmVudFR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5LCBGb250Q2hhbmdlU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5LCBGb250
Q29sb3JDaGFuZ2VTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGcmFtZVNl
YXJjaEtleSwgRnJhbWVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlHcmFw
aGljU2VhcmNoS2V5LCBHcmFwaGljU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsMVNlYXJjaEtleSwgSGVhZGluZ0xldmVsMVNlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXksIEhlYWRpbmdMZXZl
bDJTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2Vh
cmNoS2V5LCBIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsNFNlYXJjaEtleSwgSGVhZGluZ0xldmVsNFNlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXksIEhlYWRpbmdMZXZl
bDVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2Vh
cmNoS2V5LCBIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSwgSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXksIEhlYWRpbmdTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIaWdobGlnaHRlZFNlYXJjaEtleSwg
SGlnaGxpZ2h0ZWRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlJdGFsaWNG
b250U2VhcmNoS2V5LCBJdGFsaWNGb250U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5TGFuZG1hcmtTZWFyY2hLZXksIExhbmRtYXJrU2VhcmNoS2V5IH0sCi0gICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSwgTGlua1NlYXJjaEtleSB9LAotICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eUxpc3RTZWFyY2hLZXksIExpc3RTZWFyY2hLZXkgfSwKLSAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5LCBMaXZlUmVnaW9uU2VhcmNoS2V5
IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXksIE1p
c3NwZWxsZWRXb3JkU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5T3V0bGlu
ZVNlYXJjaEtleSwgT3V0bGluZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eVBsYWluVGV4dFNlYXJjaEtleSwgUGxhaW5UZXh0U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleSwgUmFkaW9Hcm91cFNlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5LCBTYW1lVHlwZVNlYXJj
aEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXksIFN0
YXRpY1RleHRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5n
ZVNlYXJjaEtleSwgU3R5bGVDaGFuZ2VTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSwgVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwK
LSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleSwgVGFibGVTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRTZWFyY2hLZXksIFRleHRGaWVs
ZFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtl
eSwgVW5kZXJsaW5lU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW52aXNp
dGVkTGlua1NlYXJjaEtleSwgVW52aXNpdGVkTGlua1NlYXJjaEtleSB9LAotICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBWaXNpdGVkTGlua1NlYXJjaEtleSB9
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6QW55VHlwZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUFydGljbGVT
ZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFydGljbGUgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5OjpCbG9ja3F1b3RlU2FtZUxldmVsIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5QmxvY2txdW90ZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QmxvY2txdW90
ZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5OjpCb2xkRm9udCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJ1
dHRvblNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6QnV0dG9uIH0sCisgICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXk6OkNoZWNrQm94IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtl
eSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6Q29udHJvbCB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkRp
ZmZlcmVudFR5cGUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q2hhbmdlU2VhcmNo
S2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpGb250Q2hhbmdlIH0sCisgICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5OjpGb250Q29sb3JDaGFuZ2UgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGcmFtZVNl
YXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6RnJhbWUgfSwKKyAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpHcmFw
aGljIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMVNlYXJjaEtleSwg
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsMSB9LAorICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6
OkhlYWRpbmdMZXZlbDIgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwz
U2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWwzIH0sCisgICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsNCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhl
YWRpbmdMZXZlbDVTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZl
bDUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5LCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWw2IH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6SGVhZGluZ1NhbWVMZXZlbCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdT
ZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkhlYWRpbmcgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIaWdobGlnaHRlZFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6SGlnaGxpZ2h0ZWQgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2Vh
cmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpJdGFsaWNGb250IH0sCisgICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6
OkxhbmRtYXJrIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSwgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleTo6TGluayB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxp
c3RTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Okxpc3QgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
OjpMaXZlUmVnaW9uIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRT
ZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6Ok1pc3NwZWxsZWRXb3JkIH0sCisgICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJj
aEtleTo6T3V0bGluZSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJj
aEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6UGxhaW5UZXh0IH0sCisgICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6
UmFkaW9Hcm91cCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5
LCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpTYW1lVHlwZSB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlN0YXRp
Y1RleHQgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSwg
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6U3R5bGVDaGFuZ2UgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6
VGFibGVTYW1lTGV2ZWwgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtl
eSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6VGFibGUgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlUZXh0RmllbGRTZWFyY2hLZXksIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OlRleHRGaWVs
ZCB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSwgQWNjZXNz
aWJpbGl0eVNlYXJjaEtleTo6VW5kZXJsaW5lIH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
VW52aXNpdGVkTGlua1NlYXJjaEtleSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6VW52aXNpdGVk
TGluayB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpWaXNpdGVkTGluayB9CiAgICAgfTsKICAgICAKICAgICBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBuZXcgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleU1hcDsKQEAgLTcwNCwxMSArNzA0LDExIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5TWFwKiBjcmVhdGUKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vz
c2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJjaEtleTsKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkFueVR5cGU7CiAgICAgCiAgICAg
c3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAqIHNlYXJjaEtleU1hcCA9IGNy
ZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKTsKICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5IHNlYXJjaEtleSA9IHNlYXJjaEtleU1hcC0+Z2V0KHZhbHVlKTsgICAgCi0gICAgcmV0dXJu
IHNlYXJjaEtleSA/IHNlYXJjaEtleSA6IEFueVR5cGVTZWFyY2hLZXk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oc2VhcmNoS2V5KSA/IHNlYXJjaEtleSA6IEFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXk6OkFueVR5cGU7CiB9CiAKIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3Np
YmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmli
dXRlKGNvbnN0IE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSkKQEAgLTcyMSw5
ICs3MjEsOSBAQCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0CiAgICAg
TlNOdW1iZXIgKnZpc2libGVPbmx5UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUg
b2JqZWN0Rm9yS2V5OkAiQVhWaXNpYmxlT25seSJdOwogICAgIGlkIHNlYXJjaEtleVBhcmFtZXRl
ciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYU2VhcmNoS2V5Il07
CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBkaXJlY3Rpb24gPSBTZWFy
Y2hEaXJlY3Rpb25OZXh0OworICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24gZGlyZWN0
aW9uID0gQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4dDsKICAgICBpZiAoW2RpcmVj
dGlvblBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBk
aXJlY3Rpb24gPSBbZGlyZWN0aW9uUGFyYW1ldGVyIGlzRXF1YWxUb1N0cmluZzpAIkFYRGlyZWN0
aW9uTmV4dCJdID8gU2VhcmNoRGlyZWN0aW9uTmV4dCA6IFNlYXJjaERpcmVjdGlvblByZXZpb3Vz
OworICAgICAgICBkaXJlY3Rpb24gPSBbZGlyZWN0aW9uUGFyYW1ldGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYRGlyZWN0aW9uTmV4dCJdID8gQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbjo6TmV4
dCA6IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwogICAgIAogICAgIGJv
b2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5ID0gZmFsc2U7CiAgICAgaWYgKFtpbW1lZGlhdGVE
ZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAy
MjQwNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDk0LDI0ICs0OTQsMjQg
QEAgc3RhdGljIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgYQogICAgIE5TU3RyaW5n
ICpyZXBsYWNlbWVudFN0cmluZ1BhcmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9i
amVjdEZvcktleTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RUZXh0UmVwbGFjZW1lbnRTdHJpbmddOwog
ICAgIE5TQXJyYXkgKnNlYXJjaFN0cmluZ3NQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dFNlYXJjaFN0cmluZ3Nd
OwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHkgYWN0aXZpdHkgPSBG
aW5kQW5kU2VsZWN0QWN0aXZpdHk7CisgICAgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0
eSBhY3Rpdml0eSA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRTZWxl
Y3Q7CiAgICAgaWYgKFthY3Rpdml0eVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKSB7CiAgICAgICAgIGlmIChbYWN0aXZpdHlQYXJhbWV0ZXIgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eUZpbmRBbmRSZXBsYWNlXSkKLSAgICAg
ICAgICAgIGFjdGl2aXR5ID0gRmluZEFuZFJlcGxhY2VBY3Rpdml0eTsKKyAgICAgICAgICAgIGFj
dGl2aXR5ID0gQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZFJlcGxhY2U7
CiAgICAgICAgIGVsc2UgaWYgKFthY3Rpdml0eVBhcmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6a0FY
U2VsZWN0VGV4dEFjdGl2aXR5RmluZEFuZENhcGl0YWxpemVdKQotICAgICAgICAgICAgYWN0aXZp
dHkgPSBGaW5kQW5kQ2FwaXRhbGl6ZTsKKyAgICAgICAgICAgIGFjdGl2aXR5ID0gQWNjZXNzaWJp
bGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZENhcGl0YWxpemU7CiAgICAgICAgIGVsc2Ug
aWYgKFthY3Rpdml0eVBhcmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6a0FYU2VsZWN0VGV4dEFjdGl2
aXR5RmluZEFuZExvd2VyY2FzZV0pCi0gICAgICAgICAgICBhY3Rpdml0eSA9IEZpbmRBbmRMb3dl
cmNhc2U7CisgICAgICAgICAgICBhY3Rpdml0eSA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0
aXZpdHk6OkZpbmRBbmRMb3dlcmNhc2U7CiAgICAgICAgIGVsc2UgaWYgKFthY3Rpdml0eVBhcmFt
ZXRlciBpc0VxdWFsVG9TdHJpbmc6a0FYU2VsZWN0VGV4dEFjdGl2aXR5RmluZEFuZFVwcGVyY2Fz
ZV0pCi0gICAgICAgICAgICBhY3Rpdml0eSA9IEZpbmRBbmRVcHBlcmNhc2U7CisgICAgICAgICAg
ICBhY3Rpdml0eSA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QWN0aXZpdHk6OkZpbmRBbmRVcHBl
cmNhc2U7CiAgICAgfQogICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5
UmVzb2x1dGlvbiBhbWJpZ3VpdHlSZXNvbHV0aW9uID0gQ2xvc2VzdFRvU2VsZWN0aW9uQW1iaWd1
aXR5UmVzb2x1dGlvbjsKKyAgICBBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29s
dXRpb24gYW1iaWd1aXR5UmVzb2x1dGlvbiA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1
aXR5UmVzb2x1dGlvbjo6Q2xvc2VzdFRvOwogICAgIGlmIChbYW1iaWd1aXR5UmVzb2x1dGlvblBh
cmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CiAgICAgICAgIGlmIChb
YW1iaWd1aXR5UmVzb2x1dGlvblBhcmFtZXRlciBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5U2VsZWN0VGV4dEFtYmlndWl0eVJlc29sdXRpb25DbG9zZXN0QWZ0ZXJTZWxlY3Rpb25dKQot
ICAgICAgICAgICAgYW1iaWd1aXR5UmVzb2x1dGlvbiA9IENsb3Nlc3RBZnRlclNlbGVjdGlvbkFt
YmlndWl0eVJlc29sdXRpb247CisgICAgICAgICAgICBhbWJpZ3VpdHlSZXNvbHV0aW9uID0gQWNj
ZXNzaWJpbGl0eVNlbGVjdFRleHRBbWJpZ3VpdHlSZXNvbHV0aW9uOjpDbG9zZXN0QWZ0ZXI7CiAg
ICAgICAgIGVsc2UgaWYgKFthbWJpZ3VpdHlSZXNvbHV0aW9uUGFyYW1ldGVyIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlvbkNsb3Nlc3RC
ZWZvcmVTZWxlY3Rpb25dKQotICAgICAgICAgICAgYW1iaWd1aXR5UmVzb2x1dGlvbiA9IENsb3Nl
c3RCZWZvcmVTZWxlY3Rpb25BbWJpZ3VpdHlSZXNvbHV0aW9uOworICAgICAgICAgICAgYW1iaWd1
aXR5UmVzb2x1dGlvbiA9IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0QW1iaWd1aXR5UmVzb2x1dGlv
bjo6Q2xvc2VzdEJlZm9yZTsKICAgICB9CiAgICAgCiAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3Ry
aW5nOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgLSAoTlNBcnJheSopYWRkaXRpb25hbEFjY2Vzc2li
aWxpdHlBdHRyaQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
QVJJQVBvc0luU2V0QXR0cmlidXRlXTsKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVj
dGlvbiBzb3J0RGlyZWN0aW9uID0gbV9vYmplY3QtPnNvcnREaXJlY3Rpb24oKTsKLSAgICBpZiAo
c29ydERpcmVjdGlvbiAhPSBTb3J0RGlyZWN0aW9uTm9uZSAmJiBzb3J0RGlyZWN0aW9uICE9IFNv
cnREaXJlY3Rpb25JbnZhbGlkKQorICAgIGlmIChzb3J0RGlyZWN0aW9uICE9IEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpOb25lICYmIHNvcnREaXJlY3Rpb24gIT0gQWNjZXNzaWJpbGl0eVNv
cnREaXJlY3Rpb246OkludmFsaWQpCiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uQXR0cmlidXRlXTsKICAgICAKICAgICAvLyBJZiBhbiBv
YmplY3QgaXMgYSBjaGlsZCBvZiBhIGxpdmUgcmVnaW9uLCB0aGVuIGFkZCB0aGVzZQpAQCAtMTY2
MSw3ICsxNjYxLDcgQEAgLSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCiAg
ICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBbb2JqZWN0QXR0cmlidXRlcyBhcnJheUJ5QWRkaW5n
T2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQXR0cmlidXRlc107CiAgICAgCiAgICAgLy8gT25s
eSBleHBvc2UgQVhBUklBQ3VycmVudCBhdHRyaWJ1dGUgd2hlbiB0aGUgZWxlbWVudCBpcyBzZXQg
dG8gYmUgY3VycmVudCBpdGVtLgotICAgIGlmIChtX29iamVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgp
ICE9IEFSSUFDdXJyZW50RmFsc2UpCisgICAgaWYgKG1fb2JqZWN0LT5hcmlhQ3VycmVudFN0YXRl
KCkgIT0gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZhbHNlKQogICAgICAgICBvYmpl
Y3RBdHRyaWJ1dGVzID0gW29iamVjdEF0dHJpYnV0ZXMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9t
QXJyYXk6QFsgTlNBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRBdHRyaWJ1dGUgXV07CiAgICAgCiAg
ICAgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZXM7CkBAIC0xODQ5LDE1NCArMTg0OSwxNTQgQEAgc3Rh
dGljIGNvbnN0IEFjY2Vzc2liaWxpdHlSb2xlTWFwJiBjcmVhdAogICAgIH07CiAgICAgCiAgICAg
c3RhdGljIGNvbnN0IFJvbGVFbnRyeSByb2xlc1tdID0gewotICAgICAgICB7IFVua25vd25Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlVbmtub3duUm9sZSB9LAotICAgICAgICB7IEJ1dHRvblJvbGUsIE5T
QWNjZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBSYWRpb0J1dHRvblJvbGUsIE5T
QWNjZXNzaWJpbGl0eVJhZGlvQnV0dG9uUm9sZSB9LAotICAgICAgICB7IENoZWNrQm94Um9sZSwg
TlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hSb2xlIH0sCi0gICAgICAgIHsgU2xpZGVyUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5U2xpZGVyUm9sZSB9LAotICAgICAgICB7IFRhYkdyb3VwUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5VGFiR3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVGV4dEZpZWxkUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5VGV4dEZpZWxkUm9sZSB9LAotICAgICAgICB7IFN0YXRpY1RleHRSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAotICAgICAgICB7IFRleHRBcmVhUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5VGV4dEFyZWFSb2xlIH0sCi0gICAgICAgIHsgU2Nyb2xsQXJlYVJvbGUsIE5T
QWNjZXNzaWJpbGl0eVNjcm9sbEFyZWFSb2xlIH0sCi0gICAgICAgIHsgUG9wVXBCdXR0b25Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlQb3BVcEJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBNZW51QnV0dG9u
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVudUJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBUYWJsZVJv
bGUsIE5TQWNjZXNzaWJpbGl0eVRhYmxlUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5QXBwbGljYXRpb25Sb2xlIH0sCi0gICAgICAgIHsgR3JvdXBSb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUZXh0R3JvdXBSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBSYWRpb0dyb3VwUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFJvbGUgfSwKLSAgICAgICAgeyBMaXN0Um9sZSwgTlNBY2Nl
c3NpYmlsaXR5TGlzdFJvbGUgfSwKLSAgICAgICAgeyBEaXJlY3RvcnlSb2xlLCBOU0FjY2Vzc2li
aWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7IFNjcm9sbEJhclJvbGUsIE5TQWNjZXNzaWJpbGl0
eVNjcm9sbEJhclJvbGUgfSwKLSAgICAgICAgeyBWYWx1ZUluZGljYXRvclJvbGUsIE5TQWNjZXNz
aWJpbGl0eVZhbHVlSW5kaWNhdG9yUm9sZSB9LAotICAgICAgICB7IEltYWdlUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5SW1hZ2VSb2xlIH0sCi0gICAgICAgIHsgTWVudUJhclJvbGUsIE5TQWNjZXNzaWJp
bGl0eU1lbnVCYXJSb2xlIH0sCi0gICAgICAgIHsgTWVudVJvbGUsIE5TQWNjZXNzaWJpbGl0eU1l
bnVSb2xlIH0sCi0gICAgICAgIHsgTWVudUl0ZW1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51SXRl
bVJvbGUgfSwKLSAgICAgICAgeyBNZW51SXRlbUNoZWNrYm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
TWVudUl0ZW1Sb2xlIH0sCi0gICAgICAgIHsgTWVudUl0ZW1SYWRpb1JvbGUsIE5TQWNjZXNzaWJp
bGl0eU1lbnVJdGVtUm9sZSB9LAotICAgICAgICB7IENvbHVtblJvbGUsIE5TQWNjZXNzaWJpbGl0
eUNvbHVtblJvbGUgfSwKLSAgICAgICAgeyBSb3dSb2xlLCBOU0FjY2Vzc2liaWxpdHlSb3dSb2xl
IH0sCi0gICAgICAgIHsgVG9vbGJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eVRvb2xiYXJSb2xlIH0s
Ci0gICAgICAgIHsgQnVzeUluZGljYXRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1c3lJbmRpY2F0
b3JSb2xlIH0sCi0gICAgICAgIHsgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlLCBOU0FjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvclJvbGUgfSwKLSAgICAgICAgeyBXaW5kb3dSb2xlLCBOU0FjY2Vz
c2liaWxpdHlXaW5kb3dSb2xlIH0sCi0gICAgICAgIHsgRHJhd2VyUm9sZSwgTlNBY2Nlc3NpYmls
aXR5RHJhd2VyUm9sZSB9LAotICAgICAgICB7IFN5c3RlbVdpZGVSb2xlLCBOU0FjY2Vzc2liaWxp
dHlTeXN0ZW1XaWRlUm9sZSB9LAotICAgICAgICB7IE91dGxpbmVSb2xlLCBOU0FjY2Vzc2liaWxp
dHlPdXRsaW5lUm9sZSB9LAotICAgICAgICB7IEluY3JlbWVudG9yUm9sZSwgTlNBY2Nlc3NpYmls
aXR5SW5jcmVtZW50b3JSb2xlIH0sCi0gICAgICAgIHsgQnJvd3NlclJvbGUsIE5TQWNjZXNzaWJp
bGl0eUJyb3dzZXJSb2xlIH0sCi0gICAgICAgIHsgQ29tYm9Cb3hSb2xlLCBOU0FjY2Vzc2liaWxp
dHlDb21ib0JveFJvbGUgfSwKLSAgICAgICAgeyBTcGxpdEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmls
aXR5U3BsaXRHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTcGxpdHRlclJvbGUsIE5TQWNjZXNzaWJp
bGl0eVNwbGl0dGVyUm9sZSB9LAotICAgICAgICB7IENvbG9yV2VsbFJvbGUsIE5TQWNjZXNzaWJp
bGl0eUNvbG9yV2VsbFJvbGUgfSwKLSAgICAgICAgeyBHcm93QXJlYVJvbGUsIE5TQWNjZXNzaWJp
bGl0eUdyb3dBcmVhUm9sZSB9LAotICAgICAgICB7IFNoZWV0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
U2hlZXRSb2xlIH0sCi0gICAgICAgIHsgSGVscFRhZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUhlbHBU
YWdSb2xlIH0sCi0gICAgICAgIHsgTWF0dGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlNYXR0ZVJvbGUg
fSwKLSAgICAgICAgeyBSdWxlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVJ1bGVyUm9sZSB9LAotICAg
ICAgICB7IFJ1bGVyTWFya2VyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UnVsZXJNYXJrZXJSb2xlIH0s
Ci0gICAgICAgIHsgTGlua1JvbGUsIE5TQWNjZXNzaWJpbGl0eUxpbmtSb2xlIH0sCi0gICAgICAg
IHsgRGlzY2xvc3VyZVRyaWFuZ2xlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZVRyaWFu
Z2xlUm9sZSB9LAotICAgICAgICB7IEdyaWRSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGUg
fSwKLSAgICAgICAgeyBUcmVlR3JpZFJvbGUsIE5TQWNjZXNzaWJpbGl0eVRhYmxlUm9sZSB9LAot
ICAgICAgICB7IFdlYkNvcmVMaW5rUm9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlua1JvbGUgfSwKLSAg
ICAgICAgeyBJbWFnZU1hcExpbmtSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LAotICAg
ICAgICB7IEltYWdlTWFwUm9sZSwgQCJBWEltYWdlTWFwIiB9LAotICAgICAgICB7IExpc3RNYXJr
ZXJSb2xlLCBAIkFYTGlzdE1hcmtlciIgfSwKLSAgICAgICAgeyBXZWJBcmVhUm9sZSwgQCJBWFdl
YkFyZWEiIH0sCi0gICAgICAgIHsgSGVhZGluZ1JvbGUsIEAiQVhIZWFkaW5nIiB9LAotICAgICAg
ICB7IExpc3RCb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7IExp
c3RCb3hPcHRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAotICAgICAg
ICB7IENlbGxSb2xlLCBOU0FjY2Vzc2liaWxpdHlDZWxsUm9sZSB9LAotICAgICAgICB7IEdyaWRD
ZWxsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwKLSAgICAgICAgeyBUYWJsZUhlYWRl
ckNvbnRhaW5lclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IENv
bHVtbkhlYWRlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCi0gICAgICAgIHsgUm93
SGVhZGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwKLSAgICAgICAgeyBEZWZpbml0
aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRGVzY3JpcHRp
b25MaXN0RGV0YWlsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
RGVzY3JpcHRpb25MaXN0VGVybVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IFRlcm1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBE
ZXNjcmlwdGlvbkxpc3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7
IFNsaWRlclRodW1iUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VmFsdWVJbmRpY2F0b3JSb2xlIH0sCi0g
ICAgICAgIHsgV2ViQXBwbGljYXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
LSAgICAgICAgeyBMYW5kbWFya0Jhbm5lclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAotICAgICAgICB7IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrRG9jUmVnaW9uUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFuZG1hcmtDb250ZW50SW5mb1JvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrTWFpblJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrTmF2aWdhdGlvblJvbGUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrUmVnaW9uUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFuZG1hcmtTZWFyY2hS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkFs
ZXJ0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRp
b25BbGVydERpYWxvZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7
IEFwcGxpY2F0aW9uRGlhbG9nUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgQXBwbGljYXRpb25Hcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAot
ICAgICAgICB7IEFwcGxpY2F0aW9uVGV4dEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25Mb2dSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvblN0YXR1c1JvbGUsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uVGltZXJSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEb2N1bWVudFJvbGUsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERvY3VtZW50QXJ0aWNsZVJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERvY3VtZW50TWF0aFJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERvY3VtZW50Tm90ZVJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFVzZXJJbnRlcmZhY2VUb29sdGlwUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVGFiUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5UmFkaW9CdXR0b25Sb2xlIH0sCi0gICAgICAgIHsgVGFiTGlzdFJvbGUsIE5TQWNj
ZXNzaWJpbGl0eVRhYkdyb3VwUm9sZSB9LAotICAgICAgICB7IFRhYlBhbmVsUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVHJlZVJvbGUsIE5TQWNjZXNzaWJpbGl0
eU91dGxpbmVSb2xlIH0sCi0gICAgICAgIHsgVHJlZUl0ZW1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlS
b3dSb2xlIH0sCi0gICAgICAgIHsgTGlzdEl0ZW1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKLSAgICAgICAgeyBQYXJhZ3JhcGhSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKLSAgICAgICAgeyBMYWJlbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IERpdlJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEZv
cm1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTcGluQnV0dG9u
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50b3JSb2xlIH0sCi0gICAgICAgIHsgRm9vdGVy
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVG9nZ2xlQnV0dG9u
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hSb2xlIH0sCi0gICAgICAgIHsgQ2FudmFzUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5SW1hZ2VSb2xlIH0sCi0gICAgICAgIHsgU1ZHUm9vdFJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExlZ2VuZFJvbGUsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IE1hdGhFbGVtZW50Um9sZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXVkaW9Sb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKLSAgICAgICAgeyBWaWRlb1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IEhvcml6b250YWxSdWxlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3BsaXR0
ZXJSb2xlIH0sCi0gICAgICAgIHsgQmxvY2txdW90ZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IFN3aXRjaFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9s
ZSB9LAotICAgICAgICB7IFNlYXJjaEZpZWxkUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxk
Um9sZSB9LAotICAgICAgICB7IFByZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAot
ICAgICAgICB7IFJ1YnlCYXNlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgUnVieUJsb2NrUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgUnVieUlubGluZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7
IFJ1YnlSdW5Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBSdWJ5
VGV4dFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERldGFpbHNS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTdW1tYXJ5Um9sZSwg
TlNBY2Nlc3NpYmlsaXR5QnV0dG9uUm9sZSB9LAotICAgICAgICB7IFNWR1RleHRQYXRoUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgU1ZHVGV4dFJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFNWR1RTcGFuUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgSW5saW5lUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTWFya1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IFRpbWVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAg
ICAgICAgeyBGZWVkUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
RmlndXJlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRm9vdG5v
dGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6VW5rbm93biwgTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uLCBOU0FjY2Vzc2liaWxpdHlCdXR0b25Sb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uLCBOU0FjY2Vzc2liaWxp
dHlSYWRpb0J1dHRvblJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2hlY2tC
b3gsIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpTbGlkZXIsIE5TQWNjZXNzaWJpbGl0eVNsaWRlclJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VGFiR3JvdXAsIE5TQWNjZXNzaWJpbGl0eVRhYkdyb3VwUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQsIE5TQWNjZXNzaWJpbGl0
eVRleHRGaWVsZFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4
dCwgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6VGV4dEFyZWEsIE5TQWNjZXNzaWJpbGl0eVRleHRBcmVhUm9sZSB9LAorICAgICAg
ICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhLCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxB
cmVhUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiwgTlNB
Y2Nlc3NpYmlsaXR5UG9wVXBCdXR0b25Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJv
bGU6Ok1lbnVCdXR0b24sIE5TQWNjZXNzaWJpbGl0eU1lbnVCdXR0b25Sb2xlIH0sCisgICAgICAg
IHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlLCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGUgfSwK
KyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb24sIE5TQWNjZXNzaWJpbGl0
eUFwcGxpY2F0aW9uUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpHcm91cCwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OlRleHRHcm91cCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlJhZGlvR3JvdXAsIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3QsIE5TQWNjZXNzaWJpbGl0eUxpc3RS
b2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRpcmVjdG9yeSwgTlNBY2Nlc3Np
YmlsaXR5TGlzdFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2Nyb2xsQmFy
LCBOU0FjY2Vzc2liaWxpdHlTY3JvbGxCYXJSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlZhbHVlSW5kaWNhdG9yLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUluZGljYXRvclJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2UsIE5TQWNjZXNzaWJpbGl0eUlt
YWdlUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFyLCBOU0FjY2Vz
c2liaWxpdHlNZW51QmFyUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
LCBOU0FjY2Vzc2liaWxpdHlNZW51Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpNZW51SXRlbSwgTlNBY2Nlc3NpYmlsaXR5TWVudUl0ZW1Sb2xlIH0sCisgICAgICAgIHsgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3gsIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVt
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlvLCBOU0Fj
Y2Vzc2liaWxpdHlNZW51SXRlbVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6
Q29sdW1uLCBOU0FjY2Vzc2liaWxpdHlDb2x1bW5Sb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OlJvdywgTlNBY2Nlc3NpYmlsaXR5Um93Um9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpUb29sYmFyLCBOU0FjY2Vzc2liaWxpdHlUb29sYmFyUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpCdXN5SW5kaWNhdG9yLCBOU0FjY2Vzc2liaWxpdHlC
dXN5SW5kaWNhdG9yUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVz
c0luZGljYXRvciwgTlNBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OldpbmRvdywgTlNBY2Nlc3NpYmlsaXR5V2luZG93Um9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEcmF3ZXIsIE5TQWNjZXNzaWJpbGl0
eURyYXdlclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3lzdGVtV2lkZSwg
TlNBY2Nlc3NpYmlsaXR5U3lzdGVtV2lkZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5
Um9sZTo6T3V0bGluZSwgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW5jcmVtZW50b3IsIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9y
Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpCcm93c2VyLCBOU0FjY2Vzc2li
aWxpdHlCcm93c2VyUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpDb21ib0Jv
eCwgTlNBY2Nlc3NpYmlsaXR5Q29tYm9Cb3hSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0
eVJvbGU6OlNwbGl0R3JvdXAsIE5TQWNjZXNzaWJpbGl0eVNwbGl0R3JvdXBSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNwbGl0dGVyLCBOU0FjY2Vzc2liaWxpdHlTcGxpdHRl
clJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sb3JXZWxsLCBOU0FjY2Vz
c2liaWxpdHlDb2xvcldlbGxSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6Okdy
b3dBcmVhLCBOU0FjY2Vzc2liaWxpdHlHcm93QXJlYVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6U2hlZXQsIE5TQWNjZXNzaWJpbGl0eVNoZWV0Um9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWxwVGFnLCBOU0FjY2Vzc2liaWxpdHlIZWxwVGFnUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNYXR0ZSwgTlNBY2Nlc3NpYmlsaXR5TWF0
dGVSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1bGVyLCBOU0FjY2Vzc2li
aWxpdHlSdWxlclJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVsZXJNYXJr
ZXIsIE5TQWNjZXNzaWJpbGl0eVJ1bGVyTWFya2VyUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2li
aWxpdHlSb2xlOjpMaW5rLCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpEaXNjbG9zdXJlVHJpYW5nbGUsIE5TQWNjZXNzaWJpbGl0eURpc2Ns
b3N1cmVUcmlhbmdsZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JpZCwg
TlNBY2Nlc3NpYmlsaXR5VGFibGVSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6
OlRyZWVHcmlkLCBOU0FjY2Vzc2liaWxpdHlUYWJsZVJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6V2ViQ29yZUxpbmssIE5TQWNjZXNzaWJpbGl0eUxpbmtSb2xlIH0sCisgICAg
ICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkltYWdlTWFwTGluaywgTlNBY2Nlc3NpYmlsaXR5TGlu
a1JvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2VNYXAsIEAiQVhJbWFn
ZU1hcCIgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdE1hcmtlciwgQCJBWExp
c3RNYXJrZXIiIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFyZWEsIEAiQVhX
ZWJBcmVhIiB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpIZWFkaW5nLCBAIkFYSGVh
ZGluZyIgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveCwgTlNBY2Nlc3Np
YmlsaXR5TGlzdFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9w
dGlvbiwgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q2VsbCwgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6R3JpZENlbGwsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlRhYmxlSGVhZGVyQ29udGFpbmVyLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1u
SGVhZGVyLCBOU0FjY2Vzc2liaWxpdHlDZWxsUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxp
dHlSb2xlOjpSb3dIZWFkZXIsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OkRlZmluaXRpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpEZXNjcmlwdGlvbkxpc3REZXRhaWwsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpE
ZXNjcmlwdGlvbkxpc3RUZXJtLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGVybSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdCwgTlNBY2Nlc3NpYmls
aXR5TGlzdFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyVGh1bWIs
IE5TQWNjZXNzaWJpbGl0eVZhbHVlSW5kaWNhdG9yUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2li
aWxpdHlSb2xlOjpXZWJBcHBsaWNhdGlvbiwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisg
ICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQmFubmVyLCBOU0FjY2Vzc2liaWxp
dHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21w
bGVtZW50YXJ5LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb24sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFu
ZG1hcmtNYWluLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9uLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb24sIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFy
a1NlYXJjaCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25EaWFsb2csIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXAs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvbkxvZywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZSwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVz
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9s
ZTo6QXBwbGljYXRpb25UaW1lciwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAg
IHsgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlLCBOU0FjY2Vz
c2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RG9jdW1l
bnRNYXRoLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6RG9jdW1lbnROb3RlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlckludGVyZmFjZVRvb2x0aXAsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWIsIE5TQWNj
ZXNzaWJpbGl0eVJhZGlvQnV0dG9uUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpUYWJMaXN0LCBOU0FjY2Vzc2liaWxpdHlUYWJHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiUGFuZWwsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAg
ICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlLCBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm9s
ZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbSwgTlNBY2Nlc3NpYmls
aXR5Um93Um9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0SXRlbSwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlBh
cmFncmFwaCwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhYmVsLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBB
Y2Nlc3NpYmlsaXR5Um9sZTo6RGl2LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAg
ICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9ybSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
CisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlNwaW5CdXR0b24sIE5TQWNjZXNzaWJpbGl0
eUluY3JlbWVudG9yUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpGb290ZXIs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xl
OjpUb2dnbGVCdXR0b24sIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94Um9sZSB9LAorICAgICAgICB7
IEFjY2Vzc2liaWxpdHlSb2xlOjpDYW52YXMsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAor
ICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpTVkdSb290LCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TGVnZW5kLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6TWF0aEVsZW1l
bnQsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlS
b2xlOjpBdWRpbywgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNz
aWJpbGl0eVJvbGU6OlZpZGVvLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0
dGVyUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpCbG9ja3F1b3RlLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dp
dGNoLCBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmls
aXR5Um9sZTo6U2VhcmNoRmllbGQsIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFJvbGUgfSwKKyAg
ICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVieUJhc2UsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5QmxvY2ssIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpS
dWJ5SW5saW5lLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3Np
YmlsaXR5Um9sZTo6UnVieVJ1biwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAg
IHsgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlUZXh0LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlscywgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OlN1bW1hcnksIE5TQWNj
ZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZH
VGV4dFBhdGgsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2li
aWxpdHlSb2xlOjpTVkdUZXh0LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBY2Nlc3NpYmlsaXR5Um9sZTo6U1ZHVFNwYW4sIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpJbmxpbmUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlSb2xlOjpNYXJrLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBY2Nlc3NpYmlsaXR5Um9sZTo6VGltZSwgTlNB
Y2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgQWNjZXNzaWJpbGl0eVJvbGU6OkZl
ZWQsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vzc2liaWxpdHlS
b2xlOjpGaWd1cmUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFjY2Vz
c2liaWxpdHlSb2xlOjpGb290bm90ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAg
fTsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9ICpuZXcgQWNjZXNzaWJpbGl0
eVJvbGVNYXA7CiAgICAgCiAgICAgY29uc3QgdW5zaWduZWQgbnVtUm9sZXMgPSBzaXplb2Yocm9s
ZXMpIC8gc2l6ZW9mKHJvbGVzWzBdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
Um9sZXM7ICsraSkKLSAgICAgICAgcm9sZU1hcC5zZXQocm9sZXNbaV0udmFsdWUsIHJvbGVzW2ld
LnN0cmluZyk7CisgICAgICAgIHJvbGVNYXAuc2V0KHN0YXRpY19jYXN0PGludD4ocm9sZXNbaV0u
dmFsdWUpLCByb2xlc1tpXS5zdHJpbmcpOwogICAgIHJldHVybiByb2xlTWFwOwogfQogCiBzdGF0
aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUp
CiB7Ci0gICAgQVNTRVJUKHZhbHVlKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50Pih2YWx1
ZSkpOwogICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9IGNy
ZWF0ZUFjY2Vzc2liaWxpdHlSb2xlTWFwKCk7Ci0gICAgcmV0dXJuIHJvbGVNYXAuZ2V0KHZhbHVl
KTsKKyAgICByZXR1cm4gcm9sZU1hcC5nZXQoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpOwogfQog
CiAtIChOU1N0cmluZyopcm9sZQpAQCAtMjAwOCwxNyArMjAwOCwxNyBAQCAtIChOU1N0cmluZyop
cm9sZQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGUgPSBtX29iamVjdC0+cm9sZVZhbHVlKCk7CiAKLSAgICBpZiAocm9sZSA9PSBMYWJlbFJv
bGUgJiYgaXM8QWNjZXNzaWJpbGl0eUxhYmVsPigqbV9vYmplY3QpICYmIGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlMYWJlbD4oKm1fb2JqZWN0KS5jb250YWluc09ubHlTdGF0aWNUZXh0KCkpCi0gICAg
ICAgIHJvbGUgPSBTdGF0aWNUZXh0Um9sZTsKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFiZWwgJiYgaXM8QWNjZXNzaWJpbGl0eUxhYmVsPigqbV9vYmplY3QpICYmIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlMYWJlbD4oKm1fb2JqZWN0KS5jb250YWluc09ubHlTdGF0aWNUZXh0
KCkpCisgICAgICAgIHJvbGUgPSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dDsKIAogICAg
IC8vIFRoZSBtZmVuY2VkIGVsZW1lbnQgY3JlYXRlcyBhbm9ueW1vdXMgUmVuZGVyTWF0aE1MT3Bl
cmF0b3JzIHdpdGggbm8gUmVuZGVyVGV4dAogICAgIC8vIGRlc2NlbmRhbnRzLiBCZWNhdXNlIHRo
ZXNlIGFub255bW91cyByZW5kZXJlcnMgYXJlIHRoZSBvbmx5IGFjY2Vzc2libGUgb2JqZWN0cwot
ICAgIC8vIGNvbnRhaW5pbmcgdGhlIG9wZXJhdG9yLCBhc3NpZ24gU3RhdGljVGV4dFJvbGUuCisg
ICAgLy8gY29udGFpbmluZyB0aGUgb3BlcmF0b3IsIGFzc2lnbiBBY2Nlc3NpYmlsaXR5Um9sZTo6
U3RhdGljVGV4dC4KICAgICBpZiAobV9vYmplY3QtPmlzQW5vbnltb3VzTWF0aE9wZXJhdG9yKCkp
Ci0gICAgICAgIHJvbGUgPSBTdGF0aWNUZXh0Um9sZTsKKyAgICAgICAgcm9sZSA9IEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0OwogCi0gICAgaWYgKHJvbGUgPT0gQ2FudmFzUm9sZSAmJiBt
X29iamVjdC0+Y2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkpCi0gICAgICAgIHJvbGUgPSBHcm91
cFJvbGU7CisgICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNhbnZhcyAmJiBtX29i
amVjdC0+Y2FudmFzSGFzRmFsbGJhY2tDb250ZW50KCkpCisgICAgICAgIHJvbGUgPSBBY2Nlc3Np
YmlsaXR5Um9sZTo6R3JvdXA7CiAgICAgTlNTdHJpbmcqIHN0cmluZyA9IHJvbGVWYWx1ZVRvTlNT
dHJpbmcocm9sZSk7CiAgICAgaWYgKHN0cmluZyAhPSBuaWwpCiAgICAgICAgIHJldHVybiBzdHJp
bmc7CkBAIC0yMDQxLDkgKzIwNDEsOSBAQCAtIChOU1N0cmluZyopc3Vicm9sZQogICAgIH0KICAg
ICAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gbV9vYmplY3QtPnJvbGVWYWx1ZSgpOwot
ICAgIGlmIChyb2xlID09IEhvcml6b250YWxSdWxlUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6SG9yaXpvbnRhbFJ1bGUpCiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2li
aWxpdHlDb250ZW50U2VwYXJhdG9yU3Vicm9sZTsKLSAgICBpZiAocm9sZSA9PSBUb2dnbGVCdXR0
b25Sb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b24p
CiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlUb2dnbGVTdWJyb2xlOwogICAgIAogICAg
IGlmIChpczxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+KCptX29iamVjdCkpIHsKQEAgLTIw
NzMsNjkgKzIwNzMsNjkgQEAgLSAoTlNTdHJpbmcqKXN1YnJvbGUKICAgICAKICAgICAvLyBBUklB
IGNvbnRlbnQgc3Vicm9sZXMuCiAgICAgc3dpdGNoIChyb2xlKSB7Ci0gICAgICAgIGNhc2UgTGFu
ZG1hcmtCYW5uZXJSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0Jhbm5lciI7
Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZToKLSAgICAgICAgICAgIHJl
dHVybiBAIkFYTGFuZG1hcmtDb21wbGVtZW50YXJ5IjsKLSAgICAgICAgICAgIC8vIEZvb3RlciBy
b2xlcyBzaG91bGQgYXBwZWFyIGFzIGNvbnRlbnQgaW5mbyB0eXBlcy4KLSAgICAgICAgY2FzZSBG
b290ZXJSb2xlOgotICAgICAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAgICAg
ICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0NvbnRlbnRJbmZvIjsKLSAgICAgICAgY2FzZSBMYW5k
bWFya01haW5Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya01haW4iOwotICAg
ICAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJB
WExhbmRtYXJrTmF2aWdhdGlvbiI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtEb2NSZWdpb25Sb2xl
OgotICAgICAgICBjYXNlIExhbmRtYXJrUmVnaW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBA
IkFYTGFuZG1hcmtSZWdpb24iOwotICAgICAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKLSAg
ICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtTZWFyY2giOwotICAgICAgICBjYXNlIEFwcGxp
Y2F0aW9uQWxlcnRSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0
IjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICAgICAgICAg
IHJldHVybiBAIkFYQXBwbGljYXRpb25BbGVydERpYWxvZyI7Ci0gICAgICAgIGNhc2UgQXBwbGlj
YXRpb25EaWFsb2dSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkRpYWxv
ZyI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25Hcm91cFJvbGU6Ci0gICAgICAgIGNhc2UgQXBw
bGljYXRpb25UZXh0R3JvdXBSb2xlOgotICAgICAgICBjYXNlIEZlZWRSb2xlOgotICAgICAgICBj
YXNlIEZvb3Rub3RlUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25Hcm91
cCI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25Mb2dSb2xlOgotICAgICAgICAgICAgcmV0dXJu
IEAiQVhBcHBsaWNhdGlvbkxvZyI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25NYXJxdWVlIjsKLSAgICAgICAg
Y2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxp
Y2F0aW9uU3RhdHVzIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKLSAgICAg
ICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25UaW1lciI7Ci0gICAgICAgIGNhc2UgRG9jdW1l
bnRSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudCI7Ci0gICAgICAgIGNhc2Ug
RG9jdW1lbnRBcnRpY2xlUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnRBcnRp
Y2xlIjsKLSAgICAgICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgotICAgICAgICAgICAgcmV0dXJu
IEAiQVhEb2N1bWVudE1hdGgiOwotICAgICAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6Ci0gICAg
ICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50Tm90ZSI7Ci0gICAgICAgIGNhc2UgVXNlckludGVy
ZmFjZVRvb2x0aXBSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhVc2VySW50ZXJmYWNlVG9v
bHRpcCI7Ci0gICAgICAgIGNhc2UgVGFiUGFuZWxSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAi
QVhUYWJQYW5lbCI7Ci0gICAgICAgIGNhc2UgRGVmaW5pdGlvblJvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQCJBWERlZmluaXRpb24iOwotICAgICAgICBjYXNlIERlc2NyaXB0aW9uTGlzdFRlcm1S
b2xlOgotICAgICAgICBjYXNlIFRlcm1Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhUZXJt
IjsKLSAgICAgICAgY2FzZSBEZXNjcmlwdGlvbkxpc3REZXRhaWxSb2xlOgotICAgICAgICAgICAg
cmV0dXJuIEAiQVhEZXNjcmlwdGlvbiI7Ci0gICAgICAgIGNhc2UgV2ViQXBwbGljYXRpb25Sb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhXZWJBcHBsaWNhdGlvbiI7Ci0gICAgICAgICAgICAv
LyBEZWZhdWx0IGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nLCBzbyByb2xlcyBkZWZpbmVkIGJlbG93
IGNhbiBiZSBjaG9zZW4uCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjoKKyAgICAgICAgcmV0dXJu
IEAiQVhMYW5kbWFya0Jhbm5lciI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtDb21wbGVtZW50YXJ5OgorICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrQ29tcGxlbWVudGFy
eSI7CisgICAgLy8gRm9vdGVyIHJvbGVzIHNob3VsZCBhcHBlYXIgYXMgY29udGVudCBpbmZvIHR5
cGVzLgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZvb3RlcjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRlbnRJbmZvOgorICAgICAgICByZXR1cm4gQCJBWExh
bmRtYXJrQ29udGVudEluZm8iOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
TWFpbjoKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya01haW4iOworICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5k
bWFya05hdmlnYXRpb24iOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9j
UmVnaW9uOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrUmVnaW9uOgorICAg
ICAgICByZXR1cm4gQCJBWExhbmRtYXJrUmVnaW9uIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMYW5kbWFya1NlYXJjaDoKKyAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya1NlYXJjaCI7
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydDoKKyAgICAgICAg
cmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0IjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9u
QWxlcnREaWFsb2ciOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uRGlh
bG9nOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uRGlhbG9nIjsKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkZlZWQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Rm9vdG5vdGU6CisgICAgICAgIHJl
dHVybiBAIkFYQXBwbGljYXRpb25Hcm91cCI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
QXBwbGljYXRpb25Mb2c6CisgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25Mb2ciOworICAg
IGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToKKyAgICAgICAgcmV0
dXJuIEAiQVhBcHBsaWNhdGlvbk1hcnF1ZWUiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OkFwcGxpY2F0aW9uU3RhdHVzOgorICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uU3RhdHVz
IjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgorICAgICAg
ICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uVGltZXIiOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkRvY3VtZW50OgorICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50IjsKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU6CisgICAgICAgIHJldHVybiBAIkFYRG9j
dW1lbnRBcnRpY2xlIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6
CisgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnRNYXRoIjsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudE5vdGU6CisgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnROb3RlIjsK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50ZXJmYWNlVG9vbHRpcDoKKyAgICAg
ICAgcmV0dXJuIEAiQVhVc2VySW50ZXJmYWNlVG9vbHRpcCI7CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6VGFiUGFuZWw6CisgICAgICAgIHJldHVybiBAIkFYVGFiUGFuZWwiOworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlZmluaXRpb246CisgICAgICAgIHJldHVybiBAIkFYRGVm
aW5pdGlvbiI7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVzY3JpcHRpb25MaXN0VGVy
bToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXJtOgorICAgICAgICByZXR1cm4gQCJB
WFRlcm0iOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFp
bDoKKyAgICAgICAgcmV0dXJuIEAiQVhEZXNjcmlwdGlvbiI7CisgICAgY2FzZSBBY2Nlc3NpYmls
aXR5Um9sZTo6V2ViQXBwbGljYXRpb246CisgICAgICAgIHJldHVybiBAIkFYV2ViQXBwbGljYXRp
b24iOworICAgICAgICAvLyBEZWZhdWx0IGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nLCBzbyByb2xl
cyBkZWZpbmVkIGJlbG93IGNhbiBiZSBjaG9zZW4uCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIAotICAgIGlmIChyb2xlID09IE1hdGhFbGVtZW50Um9sZSkgeworICAg
IGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNYXRoRWxlbWVudCkgewogICAgICAgICBp
ZiAobV9vYmplY3QtPmlzTWF0aEZyYWN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gQCJBWE1h
dGhGcmFjdGlvbiI7CiAgICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoRmVuY2VkKCkpCkBAIC0y
MTcyLDE1ICsyMTcyLDE1IEBAIC0gKE5TU3RyaW5nKilzdWJyb2xlCiAgICAgICAgICAgICByZXR1
cm4gQCJBWE1hdGhNdWx0aXNjcmlwdCI7CiAgICAgfQogICAgIAotICAgIGlmIChyb2xlID09IFZp
ZGVvUm9sZSkKKyAgICBpZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VmlkZW8pCiAgICAg
ICAgIHJldHVybiBAIkFYVmlkZW8iOwotICAgIGlmIChyb2xlID09IEF1ZGlvUm9sZSkKKyAgICBp
ZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXVkaW8pCiAgICAgICAgIHJldHVybiBAIkFY
QXVkaW8iOwotICAgIGlmIChyb2xlID09IERldGFpbHNSb2xlKQorICAgIGlmIChyb2xlID09IEFj
Y2Vzc2liaWxpdHlSb2xlOjpEZXRhaWxzKQogICAgICAgICByZXR1cm4gQCJBWERldGFpbHMiOwot
ICAgIGlmIChyb2xlID09IFN1bW1hcnlSb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpTdW1tYXJ5KQogICAgICAgICByZXR1cm4gQCJBWFN1bW1hcnkiOwotICAgIGlmIChy
b2xlID09IFRpbWVSb2xlKQorICAgIGlmIChyb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUaW1l
KQogICAgICAgICByZXR1cm4gQCJBWFRpbWVHcm91cCI7CiAKICAgICBpZiAobV9vYmplY3QtPmlz
TWVkaWFUaW1lbGluZSgpKQpAQCAtMjIxNiwxNSArMjIxNiwxNSBAQCAtIChOU1N0cmluZyopc3Vi
cm9sZQogICAgIAogICAgIC8vIFJ1Ynkgc3Vicm9sZXMKICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAg
ICBjYXNlIFJ1YnlCYXNlUm9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5QmFz
ZToKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVJ1YnlCYXNlU3Vicm9sZTsKLSAgICBj
YXNlIFJ1YnlCbG9ja1JvbGU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6UnVieUJsb2Nr
OgogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5UnVieUJsb2NrU3Vicm9sZTsKLSAgICBj
YXNlIFJ1YnlJbmxpbmVSb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlJbmxp
bmU6CiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSdWJ5SW5saW5lU3Vicm9sZTsKLSAg
ICBjYXNlIFJ1YnlSdW5Sb2xlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlJ1YnlSdW46
CiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSdWJ5UnVuU3Vicm9sZTsKLSAgICBjYXNl
IFJ1YnlUZXh0Um9sZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpSdWJ5VGV4dDoKICAg
ICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVJ1YnlUZXh0U3Vicm9sZTsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKQEAgLTIyNjIsMjYgKzIyNjIsMjYgQEAgLSAoTlNTdHJpbmcqKXJv
bGVEZXNjcmlwdGlvbgogICAgICAgICAgICAgcmV0dXJuIGFyaWFMYW5kbWFya1JvbGVEZXNjcmlw
dGlvbjsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9vYmplY3QtPnJvbGVWYWx1ZSgpKSB7
Ci0gICAgICAgIGNhc2UgQXVkaW9Sb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpBdWRpbzoKICAgICAgICAgICAgIHJldHVybiBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50
U3RyaW5nKCJBdWRpb0VsZW1lbnQiKTsKLSAgICAgICAgY2FzZSBEZWZpbml0aW9uUm9sZToKKyAg
ICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGVmaW5pdGlvbjoKICAgICAgICAgICAgIHJl
dHVybiBBWERlZmluaXRpb25UZXh0KCk7Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0VGVy
bVJvbGU6Ci0gICAgICAgIGNhc2UgVGVybVJvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OkRlc2NyaXB0aW9uTGlzdFRlcm06CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OlRlcm06CiAgICAgICAgICAgICByZXR1cm4gQVhEZXNjcmlwdGlvbkxpc3RUZXJtVGV4dCgp
OwotICAgICAgICBjYXNlIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6CisgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkRlc2NyaXB0aW9uTGlzdERldGFpbDoKICAgICAgICAgICAgIHJl
dHVybiBBWERlc2NyaXB0aW9uTGlzdERldGFpbFRleHQoKTsKLSAgICAgICAgY2FzZSBEZXRhaWxz
Um9sZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGV0YWlsczoKICAgICAgICAg
ICAgIHJldHVybiBBWERldGFpbHNUZXh0KCk7Ci0gICAgICAgIGNhc2UgRmVlZFJvbGU6CisgICAg
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkZlZWQ6CiAgICAgICAgICAgICByZXR1cm4gQVhG
ZWVkVGV4dCgpOwotICAgICAgICBjYXNlIEZpZ3VyZVJvbGU6CisgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OkZpZ3VyZToKICAgICAgICAgICAgIHJldHVybiBBWEZpZ3VyZVRleHQoKTsK
LSAgICAgICAgY2FzZSBGb290ZXJSb2xlOgorICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpGb290ZXI6CiAgICAgICAgICAgICByZXR1cm4gQVhGb290ZXJSb2xlRGVzY3JpcHRpb25UZXh0
KCk7Ci0gICAgICAgIGNhc2UgTWFya1JvbGU6CisgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Ok1hcms6CiAgICAgICAgICAgICByZXR1cm4gQVhNYXJrVGV4dCgpOwotICAgICAgICBjYXNl
IFZpZGVvUm9sZToKKyAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VmlkZW86CiAgICAg
ICAgICAgICByZXR1cm4gbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZygiVmlkZW9F
bGVtZW50Iik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3Np
YmlsaXR5Um9sZURlc2NyaXB0aW9uKE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSwgW3NlbGYgc3Vi
cm9sZV0pOwpAQCAtMjM0MSw3ICsyMzQxLDcgQEAgLSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlv
bgogICAgICAgICAgICAgcmV0dXJuIEFYRGVzY3JpcHRpb25MaXN0VGV4dCgpOwogICAgIH0KICAg
ICAKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEhvcml6b250YWxSdWxlUm9sZSkK
KyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpIb3Jp
em9udGFsUnVsZSkKICAgICAgICAgcmV0dXJuIEFYSG9yaXpvbnRhbFJ1bGVEZXNjcmlwdGlvblRl
eHQoKTsKICAgICAKICAgICAvLyBBcHBLaXQgYWxzbyByZXR1cm5zIEFYVGFiIGZvciB0aGUgcm9s
ZSBkZXNjcmlwdGlvbiBmb3IgYSB0YWIgaXRlbS4KQEAgLTI2MTgsMTkgKzI2MTgsMTkgQEAgLSAo
aWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgICAgICB9CiAgICAgICAg
IGlmIChtX29iamVjdC0+c3VwcG9ydHNSYW5nZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+dmFsdWVGb3JSYW5nZSgpXTsKLSAg
ICAgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBTbGlkZXJUaHVtYlJvbGUpCisgICAg
ICAgIGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRl
clRodW1iKQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9v
YmplY3QtPnBhcmVudE9iamVjdCgpLT52YWx1ZUZvclJhbmdlKCldOwogICAgICAgICBpZiAobV9v
YmplY3QtPmlzSGVhZGluZygpKQogICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJX
aXRoSW50Om1fb2JqZWN0LT5oZWFkaW5nTGV2ZWwoKV07CiAgICAgICAgIAogICAgICAgICBpZiAo
bV9vYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkgfHwgbV9vYmplY3QtPmlzTWVudUl0ZW0oKSB8
fCBtX29iamVjdC0+aXNTd2l0Y2goKSB8fCBtX29iamVjdC0+aXNUb2dnbGVCdXR0b24oKSkgewog
ICAgICAgICAgICAgc3dpdGNoIChtX29iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKSkgewot
ICAgICAgICAgICAgICAgIGNhc2UgQnV0dG9uU3RhdGVPZmY6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXTsKLSAgICAgICAgICAgICAgICBjYXNl
IEJ1dHRvblN0YXRlT246Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDoxXTsKLSAgICAgICAgICAgICAgICBjYXNlIEJ1dHRvblN0YXRlTWl4ZWQ6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoyXTsKKyAg
ICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdOworICAgICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9uOgorICAgICAgICAgICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDoxXTsKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eUJ1dHRvblN0YXRlOjpNaXhlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6Ml07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0y
NjY4LDE0ICsyNjY4LDE0IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNT
dHIKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vz
c2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV0pIHsKICAgICAgICAgLy8gSW5kZXRlcm1pbmF0ZSBw
cm9ncmVzcyBpbmRpY2F0b3Igc2hvdWxkIHJldHVybiAwLgotICAgICAgICBpZiAobV9vYmplY3Qt
PmFyaWFSb2xlQXR0cmlidXRlKCkgPT0gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlICYmICFtX29iamVj
dC0+aGFzQXR0cmlidXRlKGFyaWFfdmFsdWVub3dBdHRyKSkKKyAgICAgICAgaWYgKG1fb2JqZWN0
LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGlj
YXRvciAmJiAhbV9vYmplY3QtPmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikpCiAgICAg
ICAgICAgICByZXR1cm4gQDA7CiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZs
b2F0Om1fb2JqZWN0LT5taW5WYWx1ZUZvclJhbmdlKCldOwogICAgIH0KICAgICAKICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0
dHJpYnV0ZV0pIHsKICAgICAgICAgLy8gSW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBpbmRpY2F0b3Ig
c2hvdWxkIHJldHVybiAwLgotICAgICAgICBpZiAobV9vYmplY3QtPmFyaWFSb2xlQXR0cmlidXRl
KCkgPT0gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlICYmICFtX29iamVjdC0+aGFzQXR0cmlidXRlKGFy
aWFfdmFsdWVub3dBdHRyKSkKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5hcmlhUm9sZUF0dHJpYnV0
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcm9ncmVzc0luZGljYXRvciAmJiAhbV9vYmplY3Qt
Pmhhc0F0dHJpYnV0ZShhcmlhX3ZhbHVlbm93QXR0cikpCiAgICAgICAgICAgICByZXR1cm4gQDA7
CiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Om1fb2JqZWN0LT5tYXhW
YWx1ZUZvclJhbmdlKCldOwogICAgIH0KQEAgLTMwMDUsMjMgKzMwMDUsMjMgQEAgLSAoaWQpYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIAogICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVd
KSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBlbGVtZW50T3JpZW50YXRpb24g
PSBtX29iamVjdC0+b3JpZW50YXRpb24oKTsKLSAgICAgICAgaWYgKGVsZW1lbnRPcmllbnRhdGlv
biA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25WZXJ0aWNhbCkKKyAgICAgICAgaWYgKGVsZW1l
bnRPcmllbnRhdGlvbiA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246OlZlcnRpY2FsKQogICAg
ICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVZlcnRpY2FsT3JpZW50YXRpb25WYWx1ZTsK
LSAgICAgICAgaWYgKGVsZW1lbnRPcmllbnRhdGlvbiA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25Ib3Jpem9udGFsKQorICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkKICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vz
c2liaWxpdHlIb3Jpem9udGFsT3JpZW50YXRpb25WYWx1ZTsKLSAgICAgICAgaWYgKGVsZW1lbnRP
cmllbnRhdGlvbiA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25VbmRlZmluZWQpCisgICAgICAg
IGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpVbmRl
ZmluZWQpCiAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93bk9yaWVudGF0
aW9uVmFsdWU7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9s
bEJhckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFy
ID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFs
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNj
cm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhvcml6b250YWwpOwogICAgICAgICBp
ZiAoc2Nyb2xsQmFyKQogICAgICAgICAgICAgcmV0dXJuIHNjcm9sbEJhci0+d3JhcHBlcigpOwog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZlcnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlXSkgewot
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxCYXIgPSBtX29iamVjdC0+c2Nyb2xs
QmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsKTsKKyAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb246OlZlcnRpY2FsKTsKICAgICAgICAgaWYgKHNjcm9sbEJhcikKICAgICAgICAg
ICAgIHJldHVybiBzY3JvbGxCYXItPndyYXBwZXIoKTsKICAgICAgICAgcmV0dXJuIG5pbDsKQEAg
LTMwMjksMTIgKzMwMjksMTIgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihO
U1N0cgogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgc3dpdGNoIChtX29i
amVjdC0+c29ydERpcmVjdGlvbigpKSB7Ci0gICAgICAgICAgICBjYXNlIFNvcnREaXJlY3Rpb25B
c2NlbmRpbmc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUFzY2VuZGlu
Z1NvcnREaXJlY3Rpb25WYWx1ZTsKLSAgICAgICAgICAgIGNhc2UgU29ydERpcmVjdGlvbkRlc2Nl
bmRpbmc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eURlc2NlbmRpbmdT
b3J0RGlyZWN0aW9uVmFsdWU7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmtub3duU29ydERpcmVjdGlvblZhbHVlOworICAgICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpBc2NlbmRpbmc6CisgICAgICAgICAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5QXNjZW5kaW5nU29ydERpcmVjdGlvblZhbHVlOworICAg
ICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpEZXNjZW5kaW5nOgorICAgICAg
ICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eURlc2NlbmRpbmdTb3J0RGlyZWN0aW9uVmFsdWU7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5r
bm93blNvcnREaXJlY3Rpb25WYWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTM0ODEs
NyArMzQ4MSw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3QKIAog
LSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uCiB7Ci0gICAgaWYgKG1f
b2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBDb21ib0JveFJvbGUpCisgICAgaWYgKG1fb2JqZWN0LT5y
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3gpCiAgICAgICAgIG1fb2Jq
ZWN0LT5zZXRJc0V4cGFuZGVkKHRydWUpOwogICAgIGVsc2UgewogICAgICAgICAvLyBUaGlzIG5l
ZWRzIHRvIGJlIHBlcmZvcm1lZCBpbiBhbiBpdGVyYXRpb24gb2YgdGhlIHJ1biBsb29wIHRoYXQg
ZGlkIG5vdCBzdGFydCBmcm9tIGFuIEFYIGNhbGwuCkBAIC0zNjI5LDcgKzM2MjksOSBAQCAtICh2
b2lkKV9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KGlkKXZhbHVlCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIG1fb2JqZWN0LT5zZXRTZWxlY3RlZChbbnVtYmVyIGJvb2xWYWx1ZV0pOwogICAg
IH0gZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewotICAgICAgICBpZiAoIWFycmF5IHx8IG1f
b2JqZWN0LT5yb2xlVmFsdWUoKSAhPSBMaXN0Qm94Um9sZSkKKyAgICAgICAgaWYgKCFhcnJheSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVj
dGVkQ2hpbGRyZW47CiAgICAgICAgIGNvbnZlcnRUb1ZlY3RvcihhcnJheSwgc2VsZWN0ZWRDaGls
ZHJlbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAJKHJldmlzaW9uIDIyNDA3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MjgsMTAgKzE3MjgsMTAg
QEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaQogCiAgICAgICAgICAg
ICBzdXBwb3J0c0NoZWNrZWQgPSBheE9iamVjdC0+c3VwcG9ydHNDaGVja2VkKCk7CiAgICAgICAg
ICAgICBpZiAoc3VwcG9ydHNDaGVja2VkKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNoZWNrVmFs
dWUgPSBheE9iamVjdC0+Y2hlY2tib3hPclJhZGlvVmFsdWUoKTsgLy8gRWxlbWVudCB1c2luZyBh
cmlhLWNoZWNrZWQuCi0gICAgICAgICAgICAgICAgaWYgKGNoZWNrVmFsdWUgPT0gMSkKKyAgICAg
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hlY2tWYWx1ZSA9IGF4T2JqZWN0
LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpOyAvLyBFbGVtZW50IHVzaW5nIGFyaWEtY2hlY2tlZC4K
KyAgICAgICAgICAgICAgICBpZiAoY2hlY2tWYWx1ZSA9PSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3Rh
dGU6Ok9uKQogICAgICAgICAgICAgICAgICAgICBjaGVja2VkID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q2hlY2tlZDo6VHJ1ZTsKLSAgICAgICAg
ICAgICAgICBlbHNlIGlmIChjaGVja1ZhbHVlID09IDIpCisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY2hlY2tWYWx1ZSA9PSBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok1peGVkKQogICAgICAg
ICAgICAgICAgICAgICBjaGVja2VkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllczo6Q2hlY2tlZDo6TWl4ZWQ7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoYXhPYmplY3QtPmlzQ2hlY2tlZCgpKSAvLyBOYXRpdmUgY2hlY2tib3guCiAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrZWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpUcnVlOwpAQCAtMTc0OCwyNiArMTc0OCwyNSBAQCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIHN3aXRjaCAoYXhPYmplY3QtPmFyaWFDdXJyZW50U3RhdGUo
KSkgewotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVudEZhbHNlOgorICAgICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6RmFsc2U6CiAgICAgICAgICAgICAgICAg
Y3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJv
cGVydGllczo6Q3VycmVudDo6RmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEFSSUFDdXJyZW50UGFnZToKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eUFSSUFDdXJyZW50U3RhdGU6OlBhZ2U6CiAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVu
dDo6UGFnZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQVJJQUN1
cnJlbnRTdGVwOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0
ZTo6U3RlcDoKICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDdXJyZW50OjpTdGVwOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBUklBQ3VycmVudExvY2F0aW9uOgor
ICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6TG9jYXRpb246
CiAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVudDo6TG9jYXRpb247CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFSSUFDdXJyZW50RGF0ZToKKyAgICAgICAg
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkRhdGU6CiAgICAgICAgICAg
ICAgICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmls
aXR5UHJvcGVydGllczo6Q3VycmVudDo6RGF0ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQVJJQUN1cnJlbnRUaW1lOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6VGltZToKICAgICAgICAgICAgICAgICBjdXJyZW50U3Rh
dGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpD
dXJyZW50OjpUaW1lOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGNhc2UgQVJJQUN1cnJlbnRUcnVlOgorICAgICAgICAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6VHJ1ZToKICAgICAgICAgICAgICAgICBjdXJy
ZW50U3RhdGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0
aWVzOjpDdXJyZW50OjpUcnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325098</attachid>
            <date>2017-10-26 19:14:24 -0700</date>
            <delta_ts>2017-10-26 19:14:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178892-20171026191423.patch</filename>
            <type>text/plain</type>
            <size>100560</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU5MjM3NTkwNWY4ZWEz
ODg4YTI2NmFmYjhhOTNmNDUzMzBkNjBlNy4uOTczNjU4MzU3YzExZDcxNDA2ODEzZTI0N2I5MTE3
NzdiZTQ1OTdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTI2ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgaU9TIHNw
ZWNpZmljIHNvdXJjZXMgdG8gdW5pZmllZCBzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg5MTUKKworICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogU291cmNlc0lPUy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTEwLTI2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbmRv
d3MgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNJT1MudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0lPUy50eHQKaW5kZXggMDFlNGJjY2M0NzMyZTNmZWU3MjExNjZl
ZWZiM2IwYzFlODE2MmZkZi4uNzk5OWRkNTkwNzI0YzVmMTA0ZjY0YTU1MTgyYTM2ZDhhZTkxOTA1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0lPUy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0lPUy50eHQKQEAgLTIwLDMgKzIwLDEyOCBAQAogLy8gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKIC8vIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKIC8vIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQor
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQorcGxhdGZvcm0vZ3JhcGhpY3Mv
aW9zL0ljb25JT1MubW0KKworZWRpdGluZy9pb3MvQXV0b2ZpbGxFbGVtZW50cy5jcHAKKworZG9t
L2lvcy9Ub3VjaEV2ZW50cy5jcHAKK2RvbS9tYWMvR2VzdHVyZUV2ZW50cy5jcHAKKworZWRpdGlu
Zy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKKworcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVJT1MuY3BwCisKK3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCBAbm8tdW5pZnkKK3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3Bw
IEBuby11bmlmeQorCitwbGF0Zm9ybS9pb3MvQ3Vyc29ySU9TLmNwcAorcGxhdGZvcm0vaW9zL0Rl
dmljZS5jcHAKK3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAorcGxhdGZvcm0vaW9zL1NT
TEtleUdlbmVyYXRvcklPUy5jcHAKK3BsYXRmb3JtL2lvcy9TeXN0ZW1NZW1vcnlJT1MuY3BwCitw
bGF0Zm9ybS9pb3MvVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcAorCitwbGF0Zm9y
bS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAKK3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZFJ1bi5jcHAKK3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFN5c3Rl
bUludGVyZmFjZS5jcHAKK3BsYXRmb3JtL2lvcy93YWsvV0tDb250ZW50T2JzZXJ2YXRpb24uY3Bw
CisKK2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KK2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KK2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisKK2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQor
ZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5tbQorCitsb2FkZXIvaW9zL1ByZXZpZXdM
b2FkZXIubW0KKworcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCitwYWdlL2lvcy9GcmFtZUlP
Uy5tbQorcGFnZS9pb3MvVXNlckFnZW50SU9TLm1tCitwYWdlL2lvcy9XZWJFdmVudFJlZ2lvbi5t
bQorCitwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0KK3BhZ2Uv
c2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCisKK3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBAbm8tdW5pZnkKKworcGxhdGZvcm0v
aW9zL0RldmljZU1vdGlvbkNsaWVudElPUy5tbQorcGxhdGZvcm0vaW9zL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50SU9TLm1tCitwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCitwbGF0Zm9ybS9p
b3MvRXZlbnRMb29wSU9TLm1tCitwbGF0Zm9ybS9pb3MvS2V5RXZlbnRJT1MubW0KK3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KK3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5tbQor
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbQorcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVMYXllci5tbQorcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KK3BsYXRmb3Jt
L2lvcy9Mb3dQb3dlck1vZGVOb3RpZmllcklPUy5tbQorcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KK3BsYXRmb3JtL2lvcy9QbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5tbQorcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVu
SU9TLm1tCitwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbSBAbm8t
dW5pZnkKK3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBAbm8t
dW5pZnkKK3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KK3BsYXRmb3JtL2lvcy9RdWlja0xvb2tT
b2Z0TGluay5tbQorcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorcGxh
dGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCitwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhl
bWVJT1MubW0KK3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCitwbGF0Zm9ybS9pb3MvVGhl
bWVJT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9pb3MvVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSBA
bm8tdW5pZnkKK3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBA
bm8tdW5pZnkKK3BsYXRmb3JtL2lvcy93YWsvV0FLU2Nyb2xsVmlldy5tbQorcGxhdGZvcm0vaW9z
L3dhay9XQUtWaWV3Lm1tIEBuby11bmlmeQorcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0K
K3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorcGxhdGZvcm0vaW9zL3dhay9XS0dy
YXBoaWNzLm1tCitwbGF0Zm9ybS9pb3Mvd2FrL1dLVmlldy5tbQorcGxhdGZvcm0vaW9zL1dlYkFW
UGxheWVyQ29udHJvbGxlci5tbQorcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJv
bGxlci5tbQorcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCitwbGF0Zm9ybS9p
b3MvV2ViRXZlbnQubW0KK3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
IEBuby11bmlmeQorcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5t
bQorcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorcGxh
dGZvcm0vaW9zL1dpZGdldElPUy5tbQorCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlLm1tCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1tIEBuby11bmlmeQorCitwbGF0
Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbQorcGxhdGZvcm0vbmV0
d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5tbQorcGxhdGZvcm0vbmV0d29yay9pb3MvUmVzb3Vy
Y2VIYW5kbGVJT1MubW0KK3BsYXRmb3JtL25ldHdvcmsvaW9zL1Jlc291cmNlUmVxdWVzdElPUy5t
bQorcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCisKK3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQorCitwbGF0Zm9ybS90ZXh0L2lv
cy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KK3BsYXRmb3JtL3RleHQvaW9zL1RleHRFbmNvZGluZ1Jl
Z2lzdHJ5SU9TLm1tCisKK3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorCitwbGF0Zm9ybS9j
b2NvYS9EYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tCitwbGF0Zm9ybS9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKworcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29u
dHJvbGxlckdhbWVwYWQubW0KK3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIubW0KKwordGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
bW0KKworI2lmIEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRTCisgICAgSlNUb3VjaC5jcHAKKyAgICBK
U1RvdWNoRXZlbnQuY3BwCisgICAgSlNUb3VjaExpc3QuY3BwCisjZW5kCisKKyNpZiBFTkFCTEVf
SU9TX0dFU1RVUkVfRVZFTlRTCisgICAgSlNHZXN0dXJlRXZlbnQuY3BwCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1
OWM4MTQzNWRmZjdiODgwNjQ1OGU5YTViYWQ0YThhMzBhNjdjNmUzLi5mYzlmYWY1MDU5Y2ZkYzAx
YjUzMTFkOTM2ZmQzNGFhYzI3ZDkyMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTIsNyArMzEyLDYgQEAKIAkJMEYxNURB
OEEwRjNBQUVFNzAwMDBDRTQ3IC8qIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1REE4OTBGM0FB
RUU3MDAwMENFNDcgLyogQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaCAqLzsgfTsKIAkJ
MEYxNUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RUQ1QTFCN0VDN0M1MDBFRERG
RUIgLyogV2lsbENoYW5nZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjE3NzQ4MDEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0
b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MTc3NDdFMTM3OEI3NzEwMDlEQTc2QSAvKiBTY3JvbGxBbmltYXRvcklPUy5oICovOyB9OwotCQkw
RjE3NzQ4MTEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE3NzQ3RjEzNzhCNzcyMDA5
REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MubW0gKi87IH07CiAJCTBGM0RENDUwMTJGNUVBMUIw
MDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjNERDQ0RTEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oICov
OyB9OwogCQkwRjNGMEU1QTE1NzAzMEMzMDA2REE1N0YgLyogUmVuZGVyR2VvbWV0cnlNYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0YwRTU4MTU3
MDMwQzMwMDZEQTU3RiAvKiBSZW5kZXJHZW9tZXRyeU1hcC5oICovOyB9OwogCQkwRjQ3MTBBRjFE
QjU2QUZDMDAyRENFQzMgLyogRE9NUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NzEwQTkxREI1NkFGQzAwMkRDRUMzIC8qIERPTVJlY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzUzLDE3
ICszNTIsMTMgQEAKIAkJMEY4NzE2NzAxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg3MTY2RTFD
ODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjhCNDU3MjFEQzNGQkEzMDA0NDNDM0YgLyogSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4QjQ1NzExREMzRkJBMzAwNDQzQzNGIC8qIEludGVyc2VjdGlv
bk9ic2VydmVyQ2FsbGJhY2suaCAqLzsgfTsKIAkJMEY4QjQ1NzYxREM0MURCQTAwNDQzQzNGIC8q
IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4QjQ1NzQxREM0MURCQTAwNDQzQzNGIC8qIEpTSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oICovOyB9OwotCQkwRjk3QTY1ODE1NURBODFFMDBG
QURENEMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5N0E2NTcxNTVEQTgxRTAwRkFERDRDIC8qIERp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLzsgfTsKIAkJMEZBMjREN0ExNjJERjkxOTAwQTNG
NEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NM
YXllclVwZGF0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkI2MjUyRjE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjYyNTJEMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAv
KiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5
Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZC
ODg5MEQxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzRFNDBEMTg3
RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNEU0MDcxODdGODJFMTAwNDU4ODJD
IC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmggKi87IH07Ci0JCTBGQzRFNDBFMTg3RjgyRTEw
MDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzRFNDA4MTg3RjgyRTEwMDQ1ODgyQyAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvcklPUy5tbSAqLzsgfTsKLQkJMEZDNEU0MEYxODdGODJFMTAwNDU4
ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDNEU0MDkxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1Ry
ZWVJT1MuY3BwICovOyB9OwogCQkwRkM0RTQxMDE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5n
VHJlZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZDNEU0MEExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCAqLzsgfTsKIAkJ
MEZDNEU0MTExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzRFNDBCMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MEZDNEU0MTIxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkM0RTQwQzE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZUlPUy5tbSAqLzsgfTsKIAkJMEZDRjMzMkYwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYkxheWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyQjBG
MkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQzMDgwRjExN0NGN0U3MDBBNzkxRjcgLyogUmVuZGVy
RnJhbWVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkQzMDgwRDExN0NGN0U3MDBBNzkxRjcgLyogUmVuZGVyRnJhbWVCYXNlLmggKi87IH07CiAJ
CTBGRDMwOEQ2MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDMwOEQ0MTE3RDE2ODQwMEE3OTFG
NyAvKiBSZW5kZXJJRnJhbWUuaCAqLzsgfTsKQEAgLTM3Miw3ICszNjcsNiBAQAogCQkwRkRBN0Mx
OTE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRBN0MxMzE4ODMyMkVCMDBDOTU0QjUgLyogSlNU
b3VjaEV2ZW50LmggKi87IH07CiAJCTBGREE3QzFCMTg4MzIyRUIwMEM5NTRCNSAvKiBKU1RvdWNo
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
QTdDMTUxODgzMjJFQjAwQzk1NEI1IC8qIEpTVG91Y2hMaXN0LmggKi87IH07CiAJCTBGREE3QzFG
MTg4MzIyRkMwMEM5NTRCNSAvKiBKU0dlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQTdDMUQxODgzMjJGQzAwQzk1NEI1IC8qIEpT
R2VzdHVyZUV2ZW50LmggKi87IH07Ci0JCTBGREE3QzIzMTg4MzMwQTkwMEM5NTRCNSAvKiBEcmFn
SW1hZ2VJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkRBN0MyMjE4ODMzMEE5MDBDOTU0QjUgLyogRHJhZ0ltYWdlSU9TLm1tICovOyB9OwogCQkw
RkRBN0MyNzE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkRBN0MyNTE4ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmggKi87IH07CiAJCTBGRENEN0YzMUQ0N0U2NTUwMDlGMDhCQyAvKiBMb2dJ
bml0aWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZEQ0Q3RjIxRDQ3RTY1NTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNTgwNjQx
OTMyN0E2MjAwREUzMkVCIC8qIFNjcm9sbGluZ1RyZWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTU4MDYyMTkzMjdBNjIwMERFMzJFQiAvKiBT
Y3JvbGxpbmdUcmVlTWFjLmggKi87IH07CkBAIC02MjMsMTcgKzYxNywxMyBAQAogCQkxQ0NERjVC
RTE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDREY1QkMxOTkwMzMyNDAwQkNF
QkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAqLzsgfTsKIAkJMUNGQUUzMjMwQTZENkEz
RjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5k
eWxpYiAqLzsgfTsKIAkJMUYzNkVBOUMxRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRU
YXNrQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUYzNkVBOUExRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJv
bGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTFGMzZFQTlEMUUyMUJBMTcwMDYyMUUyNSAvKiBXZWJCYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjM2RUE5
QjFFMjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tICovOyB9
OwogCQkxRjNDM0JFQjEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzQzNCRTkxMzVDQUYzQzAw
QjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuaCAqLzsgfTsKLQkJMUY0QjQxOUIxRTIzMDFDOTAwQUMw
MzdGIC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGODc1NkIwMUUyMkJFRUYwMDQyQzQwRCAv
KiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0gKi87IH07Ci0JCTFGNzJCRjBBMTg3
RkQ0NDkwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUY3MkJGMDgxODdGRDQy
NzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi87IH07CiAJ
CTFGNzJCRjBCMTg3RkQ0NUMwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGNzJC
RjA5MTg3RkQ0MjcwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxRjg3NTZC
MjFFMjJDMzM1MDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjg3NTZCMTFFMjJC
RUVGMDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUZBRkJGMTkxNUE1RkE3
NDAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUZBRkJGMTYxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGll
cy5oICovOyB9OwogCQkxRkM0MEZCQTE2NTVDQ0I5MDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLzsg
fTsKIAkJMjBENjI5MjcxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5
MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oICovOyB9Owog
CQkyMjVBMTZCNTBENUMxMUU5MDAwOTAyOTUgLyogV2ViRXZlbnRSZWdpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNUExNkIzMEQ1QzExRTkwMDA5
MDI5NSAvKiBXZWJFdmVudFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTIyNUExNkI2MEQ1QzExRTkwMDA5MDI5NSAvKiBXZWJFdmVudFJl
Z2lvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIy
NUExNkI0MEQ1QzExRTkwMDA5MDI5NSAvKiBXZWJFdmVudFJlZ2lvbi5tbSAqLzsgfTsKIAkJMjI4
QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBF
IC8qIFNjcmlwdFdyYXBwYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTIyQkQ5RjdGMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyQkQ5
RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyMkJEOUY4MTEzNTM2NEZFMDA5QkQx
MDIgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDIyQkQ5RjgwMTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRh
dGFDRy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC02NDYsMTQgKzYzNiwxMCBAQAogCQkyNEY1NEVBRDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGlj
YXRpb25DYWNoZUhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI0RjU0RUFCMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI1NDJG
NERCMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjU0MkY0RDkxMTY2QzI1QTAwRTg5
QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjYyMzkxMzYxQTY0OENFRTAwNzI1MUEzIC8qIENvbnRl
bnRFeHRlbnNpb25zRGVidWdnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNjIzOTEzNTFBNjQ4Q0VFMDA3MjUxQTMgLyogQ29udGVudEV4dGVuc2lv
bnNEZWJ1Z2dpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkyNjI1NUYwMDE4ODc4REZGMDAwNkUxRkQgLyogVXNlckFnZW50SU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyNTVFRkYxODg3OERG
RjAwMDZFMUZEIC8qIFVzZXJBZ2VudElPUy5tbSAqLzsgfTsKIAkJMjYyNTVGMDMxODg3OEUxMTAw
MDZFMUZEIC8qIFVzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjYyNTVGMDExODg3OEUxMTAwMDZFMUZEIC8qIFVzZXJBZ2VudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2MkVDNDFBMUQw
NzhGQjkwMEJBNzhGQyAvKiBFdmVudFRyYWNraW5nUmVnaW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyRUM0MTkxRDA3OEYzRDAwQkE3OEZDIC8q
IEV2ZW50VHJhY2tpbmdSZWdpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMjY1NTQxMzkxNDg5ODExQzAwMERGQzVEIC8qIEtleUV2ZW50Q29k
ZXNJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2
NTU0MTM3MTQ4OTgxMUMwMDBERkM1RCAvKiBLZXlFdmVudENvZGVzSU9TLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMjY1NTQxM0ExNDg5ODExQzAw
MERGQzVEIC8qIEtleUV2ZW50SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjY1NTQxMzgxNDg5ODExQzAwMERGQzVEIC8qIEtleUV2ZW50SU9TLm1t
ICovOyB9OwotCQkyNjU1NDE1MjE0ODlCMjMzMDAwREZDNUQgLyogQ3Vyc29ySU9TLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NTU0MTRCMTQ4OUFB
MkIwMDBERkM1RCAvKiBDdXJzb3JJT1MuY3BwICovOyB9OwogCQkyNjYwMUVCRjE0QjNCOUFEMDAx
MkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NjAxRUJEMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0
Zm9ybUV2ZW50RmFjdG9yeUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTI2NjAxRUMwMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50
RmFjdG9yeUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI2NjAxRUJFMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeUlPUy5t
bSAqLzsgfTsKIAkJMjY3NzI1RkQxQTVCM0FEOTAwM0MyNEREIC8qIERGQS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3NzI1RjcxQTVCM0FEOTAwM0My
NEREIC8qIERGQS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTI2NzcyNUZGMUE1QjNBRDkwMDNDMjRERCAvKiBERkFOb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjc3MjVGOTFBNUIzQUQ5MDAzQzI0
REQgLyogREZBTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTI2NzcyNjAxMUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3NzI1RkIxQTVCM0FEOTAw
M0MyNEREIC8qIE5GQVRvREZBLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTY3Niw3ICs2NjIsNiBAQAogCQkyNkYwQzg5ODFBMkU3MjRCMDAyNzk0
RjggLyogQ29udGVudEV4dGVuc2lvblBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4OTYxQTJFNzI0QjAwMjc5NEY4IC8qIENvbnRlbnRF
eHRlbnNpb25QYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkyNkYwQzg5QzFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjBD
ODlBMUEyRUMxMTAwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uUnVsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2RjBDOEEwMUEyRUMzQkUw
MDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjBDODlFMUEyRUMzQkUwMDI3OTRGOCAvKiBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkyNkY0MEQ0QTE0OTA0QTYzMDBDQTY3QzQgLyogRXZlbnRMb29w
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZG
NDBENDkxNDkwNEE2MzAwQ0E2N0M0IC8qIEV2ZW50TG9vcElPUy5tbSAqLzsgfTsKIAkJMjZGNzU2
QjAxQjNCNjVBQzAwMDVERDc5IC8qIE11dGFibGVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNzU2QUUxQjNCNjVBQzAwMDVERDc5IC8qIE11
dGFibGVSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTI2Rjc1NkIxMUIzQjY1QUMwMDA1REQ3OSAvKiBNdXRhYmxlUmFuZ2VMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkY3NTZBRjFCM0I2
NUFDMDAwNURENzkgLyogTXV0YWJsZVJhbmdlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2Rjc1NkIzMUIzQjY2RjcwMDA1REQ3OSAvKiBJ
bW11dGFibGVORkEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI2Rjc1NkIyMUIzQjY2RjcwMDA1REQ3OSAvKiBJbW11dGFibGVORkEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODQwLDkgKzgyNSw3IEBA
CiAJCTMxMzU5MTBBMUU3RERDNzMwMEYzMDYzMCAvKiBSVENTZHBUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM1OTEwNDFFN0REQzYwMDBGMzA2
MzAgLyogUlRDU2RwVHlwZS5oICovOyB9OwogCQkzMTM1OTEwQjFFN0REQzczMDBGMzA2MzAgLyog
UlRDU2lnbmFsaW5nU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMzU5MTA1MUU3RERDNjAwMEYzMDYzMCAvKiBSVENTaWduYWxpbmdTdGF0ZS5o
ICovOyB9OwogCQkzMTQwMzc5QjEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDAz
Nzk3MTI0QkVBN0YwMEFGNDBFNCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5oICovOyB9OwotCQkz
MTQwMzc5QzEyNEJFQTdGMDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTQwMzc5ODEyNEJFQTdG
MDBBRjQwRTQgLyogV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0gKi87IH07CiAJCTMxNDAzNzlEMTI0
QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0MDM3OTkxMjRCRUE3RjAwQUY0
MEU0IC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLmggKi87IH07Ci0JCTMxNDAzNzlFMTI0
QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDAzNzlBMTI0QkVBN0YwMEFG
NDBFNCAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5tbSAqLzsgfTsKIAkJMzE0NkZFNkUx
ODQ0MjBBODAwMUE5MzdDIC8qIE9FU1RleHR1cmVGbG9hdExpbmVhci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0NkZFNjYxODQ0MjA4NzAwMUE5MzdD
IC8qIE9FU1RleHR1cmVGbG9hdExpbmVhci5oICovOyB9OwogCQkzMTQ2RkU2RjE4NDQyMEFBMDAx
QTkzN0MgLyogT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDZGRTY1MTg0NDIwODcwMDFBOTM3QyAvKiBPRVNU
ZXh0dXJlRmxvYXRMaW5lYXIuY3BwICovOyB9OwogCQkzMTQ2RkU3NTE4NDQyMzcwMDAxQTkzN0Mg
LyogSlNPRVNUZXh0dXJlRmxvYXRMaW5lYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNDZGRTcxMTg0NDIzNjcwMDFBOTM3QyAvKiBKU09FU1RleHR1
cmVGbG9hdExpbmVhci5oICovOyB9OwpAQCAtOTI0LDcgKzkwNyw2IEBACiAJCTMxRENERjQ0MURB
MUM0NTQwMEVBNUI5MyAvKiBFeHRlbmRlZENvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMURDREY0MjFEQTFDNDU0MDBFQTVCOTMgLyogRXh0ZW5k
ZWRDb2xvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMURFQTQ1NDFC
MzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oICovOyB9OwogCQkzMUVB
Rjk3RTEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBRjk3QzEyMTQzNUE0MDBF
N0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9TLmggKi87IH07Ci0JCTMxRUFGOTdGMTIxNDM1
QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUVBRjk3RDEyMTQzNUE0MDBFN0MxQkYgLyog
RGV2aWNlTW90aW9uQ2xpZW50SU9TLm1tICovOyB9OwogCQkzMUVCNTRERjFFN0RDNzQ0MDBDMTYy
M0IgLyogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRUI1NEREMUU3REM3NDQwMEMxNjIzQiAvKiBSVENS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbi5oICovOyB9OwogCQkzMUVDMUUyOTE0RkY2MEVFMDBDOTQ2
NjIgLyogSlNOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRUMxRTI3MTRGRjYwRUUwMEM5NDY2MiAv
KiBKU05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovOyB9OwogCQkzMUZCMUE1NzEy
MEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUZCMUE0RjEyMEE1RDA2MDBEQzAyQTAgLyog
RGV2aWNlTW90aW9uQ2xpZW50LmggKi87IH07CkBAIC05NDIsNyArOTI0LDYgQEAKIAkJMzcxRjRG
RkMwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RkZBMEQyNUU3RjMwMEVDRTBENSAvKiBGb250
UmFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMzcxRjUxQTEwRDI2MkZBMDAwRUNFMEQ1IC8qIENTU1NlZ21lbnRlZEZvbnRGYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNTE5RjBEMjYy
RkEwMDBFQ0UwRDUgLyogQ1NTU2VnbWVudGVkRm9udEZhY2UuaCAqLzsgfTsKIAkJMzcxRjUzRTkw
RDI3MDRGOTAwRUNFMEQ1IC8qIENTU1VuaWNvZGVSYW5nZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNTNFNzBEMjcwNEY5MDBFQ0UwRDUg
LyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCAqLzsgfTsKLQkJMzcyN0RGRDUxNDJBQUU0NTAwRDQ0
OUNCIC8qIEZvbnRDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3MjdERkQ0MTQyQUFFNDUwMEQ0NDlDQiAvKiBGb250Q2FjaGVJT1MubW0g
Ki87IH07CiAJCTM3MkFEQTM4MTk3RjQ3QjkwMEZDNTAxRSAvKiBQcm90ZWN0aW9uU3BhY2VDb2Nv
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcyQURB
MzcxOTdGNDdCOTAwRkM1MDFFIC8qIFByb3RlY3Rpb25TcGFjZUNvY29hLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcyQzAwRDkxMjk2MTlGODAw
NUM5NTc1IC8qIEZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzJDMDBEODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzVDRDIz
MjExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBo
ZW5hdGlvbi5oICovOyB9OwpAQCAtOTc0LDcgKzk1NSw2IEBACiAJCTNDMjQ0RkVBQTM3NUFDNjMz
Rjg4QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQzI0NEZFNEEzNzVBQzYzM0Y4OEJFNkYgLyogUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTNGMkIzM0VGMTY1QUYxNTYwMEUzOTg3QyAvKiBKU1dlYktpdENTU1Zp
ZXdwb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gM0YyQjMzRUExNjVBRjE1NTAwRTM5ODdDIC8qIEpTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmgg
Ki87IH07CiAJCTNGNDJCMzFEMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDNGNDJCMzFCMTg4MTE5MUIwMDI3OEFBQyAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkzRjQyQjMxRTE4ODExOTFCMDAyNzhBQUMgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0Y0MkIzMUMxODgxMTkxQjAwMjc4QUFDIC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbSAqLzsgfTsKIAkJM0Y4MDIwMzUxRTlFNDdCRjAwREVDNjFEIC8qIENvcmVB
dWRpb0NhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDNGODAyMDMyMUU5RTM4MUQwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlLmggKi87IH07CiAJCTNGODAyMDM3MUU5RTQ3QzUwMERFQzYxRCAvKiBDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gM0Y4MDIwMzQxRTlFMzgxRDAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggKi87IH07CiAJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDNGQkM0QUYxMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbSAqLzsgfTsKQEAgLTExMjMsMTEgKzExMDMsNyBAQAogCQk0M0Mw
OTJCQzEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNDMDkyQkExMkQ5RTRFRTAw
QTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAqLzsgfTsKIAkJNDNFREQ2N0YxQjQ4
NURCRjAwNjQwRTc1IC8qIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0VERDY3RDFCNDg1REJGMDA2NDBFNzUg
LyogQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDE1MjkyRTBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQxNTI5MkMwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0
NDM5MTdGRjFBOTFCMkY4MDA2RTA0RjIgLyogUXVpY2tMb29rU29mdExpbmsubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDM5MTdGRDFBOTFCMkY4MDA2
RTA0RjIgLyogUXVpY2tMb29rU29mdExpbmsubW0gKi87IH07CiAJCTQ0MzkxODAwMUE5MUIyRjgw
MDZFMDRGMiAvKiBRdWlja0xvb2tTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzOTE3RkUxQTkxQjJGODAwNkUwNEYyIC8qIFF1aWNrTG9v
a1NvZnRMaW5rLmggKi87IH07Ci0JCTQ0M0YwNDI3MEU3NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3Jr
U3RhdGVOb3RpZmllcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0M0YwNDI2MEU3NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmll
cklPUy5tbSAqLzsgfTsKLQkJNDQ0RDRFMjMwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxS
ZXNwb25zZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0g
Ki87IH07Ci0JCTQ0NzY1MzFCMTMzMTcwOTkwMDA2Qjc4OSAvKiBTU0xLZXlHZW5lcmF0b3JJT1Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ3NjUz
MUExMzMxNzA5OTAwMDZCNzg5IC8qIFNTTEtleUdlbmVyYXRvcklPUy5jcHAgKi87IH07CiAJCTQ0
Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ3OTU4MDMxNjQzQjQ3QjAwMUUw
QTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ4QTI5QkYwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NDhBMjlCRDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NDhCMUI3QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhCMUI3ODBGM0EyRjlCMDA0
N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMzYsNyArMTExMiw2IEBACiAJCTQ0QTIwREI5MEY4
NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAv
KiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxl
bWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICov
OyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYw
MEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OwotCQk0NEM5OTE4MjBGM0QxRTBEMDA1ODY2
NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4MTBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhl
bWVJT1MubW0gKi87IH07CiAJCTQ0Qzk5MTg2MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJU
aGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggKi87IH07CiAJ
CTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8q
IFRoZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MUEwMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5
MTlFMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5tbSAqLzsgfTsKQEAgLTExNzUsNyArMTE1
MCw2IEBACiAJCTQ2RUYxNDJBMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkVGMTQyMDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oICov
OyB9OwogCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUYxNDIy
MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oICovOyB9OwogCQk0NkVG
MTQyRDFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRjE0MjQxRjk3QjdCQTAwQzJB
NTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCAqLzsgfTsKLQkJNDZFRkFGMEUxRTVGQjlDQTAw
RTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRkFGMEQxRTVGQjlDMjAwRTdGMzRCIC8qIExv
d1Bvd2VyTW9kZU5vdGlmaWVySU9TLm1tICovOyB9OwogCQk0NkVGQUYxMjFFNUZCOUYxMDBFN0Yz
NEIgLyogTG93UG93ZXJNb2RlTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUZBRjEwMUU1RkI5RTEwMEU3RjM0QiAvKiBMb3dQb3dlck1v
ZGVOb3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2RkNCNjE4MUE3MDgyMEUwMEM1QTIxRSAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc1
MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTA3MDdFNjEyMTlDMDQzMDBE
OTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2Vi
S2l0QnJpZGdlLmNwcCAqLzsgfTsKQEAgLTEzMTgsNyArMTI5Miw2IEBACiAJCTUxNEIzRjczMEM3
MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3Rl
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
NEM3NjRDMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VG
M0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRh
U3RyZWFtTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRDNzY0NDBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTRDNzY1MzBDRTky
MzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDkwQ0U5MjM0RTAwN0VGM0NEIC8qIFJl
c291cmNlUmVxdWVzdE1hYy5tbSAqLzsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8q
IENyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NzAwQ0U5MjNBMTAw
N0VGM0NEIC8qIEZvcm1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTRDNzY1QjBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzY3MTBDRTky
M0ExMDA3RUYzQ0QgLyogSFRUUEhlYWRlck1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NUMwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBIZWFk
ZXJNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTM0Myw3ICsxMzE2LDYgQEAKIAkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3IC8qIElEQlZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYx
MDNBRTFDQURCOUEzMDAxNkI0QzcgLyogSURCVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTYyQzdGNTExRjc3RUZCMDA2MTJFRkUgLyog
U2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNjJDN0YzMTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNjZEM0NEMUU4
RUQ0OEYwMEFENjJFMyAvKiBTdG9yYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NkQzQ0MxRThFRDQxMTAwQUQ2MkUzIC8qIFN0b3JhZ2VU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NTE2OTlFRTMxRjYwOENENTAwRDU3RDA2IC8qIEF1dG9maWxsRWxlbWVudHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2OTlFRTExRjYwOENENTAw
RDU3RDA2IC8qIEF1dG9maWxsRWxlbWVudHMuY3BwICovOyB9OwogCQk1MTY5OUVFNDFGNjA4Q0Q1
MDBENTdEMDYgLyogQXV0b2ZpbGxFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2OTlFRTIxRjYwOENENTAwRDU3RDA2IC8qIEF1dG9maWxs
RWxlbWVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTZDNjIyMDE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkM2MjFEMTk1MEQ0ODcw
MDMzN0U3NSAvKiBHYW1lcGFkRXZlbnQuY3BwICovOyB9OwogCQk1MTZDNjIyMTE5NTBENDg3MDAz
MzdFNzUgLyogR2FtZXBhZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTZDNjIxRTE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50Lmgg
Ki87IH07CkBAIC0xNDQ2LDkgKzE0MTgsNyBAQAogCQk1MUUxQkFDMzFCRDgwNjRFMDA1NUQ4MUYg
LyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTFCQUMxMUJEODA2NDcwMDU1RDgxRiAvKiBNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oICovOyB9OwogCQk1MUUyNjkzNzFERDNCRDlCMDA2
QjZBNTggLyogSURCSXRlcmF0ZUN1cnNvckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTI2OTM1MUREM0JEOTEwMDZCNkE1OCAvKiBJREJJdGVy
YXRlQ3Vyc29yRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxRTM5OTAwMUQ2RTQ3NTAwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVw
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5
OEZDMUQ2RTQ3NEIwMDlDODgzMSAvKiBHYW1lQ29udHJvbGxlckdhbWVwYWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUUzOTkwMTFENkU0NzUw
MDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk4RkQxRDZFNDc0QjAwOUM4ODMxIC8qIEdh
bWVDb250cm9sbGVyR2FtZXBhZC5tbSAqLzsgfTsKIAkJNTFFMzk5MDIxRDZFNDc1MDAwOUM4ODMx
IC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRTFENkU0NzRCMDA5Qzg4MzEgLyogR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUUzOTkwMzFENkU0NzUwMDA5Qzg4MzEgLyogR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUUzOThGRjFENkU0NzRCMDA5Qzg4MzEgLyogR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXIubW0gKi87IH07CiAJCTUxRTNBQTBCMUI5OEJDQUIwMDM2QUQ4MSAv
KiBTZWN1cml0eU9yaWdpbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRTNBQTA5MUI5OEJDOUEwMDM2QUQ4MSAvKiBTZWN1cml0eU9yaWdpbkRh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUU2ODIxMDE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTY4MjBGMTYzODczMDIwMDNCQkYz
QyAvKiBMb2FkZXJTdHJhdGVneS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVF
N0IzNzFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDgwLDcgKzE0NTAsNiBAQAog
CQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUEx
OEQxQzU0NTkwMzAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci5tbSAqLzsg
fTsKIAkJNTJENUExQTcxQzU3NDg5RDAwREUzNEEzIC8qIFZpZGVvRnVsbHNjcmVlbk1vZGVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTFBNDFD
NTc0ODg5MDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkQ1QTFBODFDNTc0OEEzMDBERTM0
QTMgLyogVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUE1MUM1NzQ4ODkwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUyRDVBMUE5MUM1NzQ4QTkwMERFMzRBMyAv
KiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMUE2MUM1NzQ4ODkwMERFMzRBMyAvKiBW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSAqLzsgfTsKIAkJNTJFMkNBRkMxOUZG
MDIwNzAwMUVFQjRGIC8qIE1lZGlhUHJvZHVjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRTJDQUZCMTlGRjAyMDcwMDFFRUI0RiAvKiBNZWRpYVBy
b2R1Y2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTJGMTA4NjYxNjJCNkRBODAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRjEwODYzMTYyQjZE
ODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTMxNzYxMjMxM0M1MTY2OTAwMjZFNDU0IC8q
IFN0eWxlRmxleGlibGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzE3NjEyMTEzQzUxNjY5MDAyNkU0NTQgLyogU3R5bGVGbGV4aWJsZUJv
eERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTQ4OSw3ICsxNDU4LDYgQEAKIAkJNTM2RDVBMjAxOTNFMThFOTAwQ0U0Q0FCIC8qIEhUTUxT
cmNzZXRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzNkQ1QTFGMTkzRTE4RTkwMENFNENBQiAvKiBIVE1MU3Jjc2V0UGFyc2VyLmggKi87IH07
CiAJCTUzNkQ1QTIzMTkzRThFMEMwMENFNENBQiAvKiBQYXJzaW5nVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZENUEyMjE5M0U4RTBD
MDBDRTRDQUIgLyogUGFyc2luZ1V0aWxpdGllcy5oICovOyB9OwogCQk1MzcyMDIyOTFGQTE5QUUy
MDAwMTZCMkIgLyogRkVNb3JwaG9sb2d5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0NzMwRDY3MTI0OEYwQjMwMEQzQTlDOSAvKiBGRU1vcnBob2xv
Z3kuY3BwICovOyB9OwotCQk1MzcyMDIyRTFGQTI5QzAzMDAwMTZCMkIgLyogSlNHZXN0dXJlRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
QTdDMUMxODgzMjJGQzAwQzk1NEI1IC8qIEpTR2VzdHVyZUV2ZW50LmNwcCAqLzsgfTsKIAkJNTM4
RUM4MDIxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOEVDN0ZBMUY5NkFBNzAwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgKi87IH07CiAJCTUzOEVDODAzMUY5NkFGODEwMDREMjJB
OCAvKiBVbmlmaWVkU291cmNlMS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzOEVDN0YzMUY5NkFBNUIwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMS5t
bSAqLzsgfTsKIAkJNTM4RUM4MDQxRjk2QUY4MTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2UyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOEVDN0VF
MUY5NkFBNTYwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlMi5jcHAgKi87IH07CkBAIC0xNjI4LDkg
KzE1OTYsNiBAQAogCQk1MzhFQzkzNDFGOTlCOUY3MDA0RDIyQTggLyogSlNNb2NrUGFnZU92ZXJs
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkYz
RTkzMUMxRjg1NTUwMDYxREJENCAvKiBKU01vY2tQYWdlT3ZlcmxheS5oICovOyB9OwogCQk1MzhF
QzkzQjFGOTlCRTUwMDA0RDIyQTggLyogQ2hhcnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxQUMwOUQxNEVFNjAwMEU2MUQ3IC8q
IENoYXJzZXREYXRhLmNwcCAqLzsgfTsKIAkJNTM4RUM5M0UxRjk5QkY1QTAwNEQyMkE4IC8qIEpT
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovOyB9OwotCQk1MzhFQzk0MjFGOTlDRTQ3MDA0RDIy
QTggLyogSlNUb3VjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkRBN0MxMDE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaC5jcHAgKi87IH07Ci0J
CTUzOEVDOTQ0MUY5OUNFNEQwMDREMjJBOCAvKiBKU1RvdWNoTGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRBN0MxNDE4ODMyMkVCMDBDOTU0
QjUgLyogSlNUb3VjaExpc3QuY3BwICovOyB9OwotCQk1MzhFQzk0NTFGOTlDRTUxMDA0RDIyQTgg
LyogSlNUb3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGREE3QzEyMTg4MzIyRUIwMEM5NTRCNSAvKiBKU1RvdWNoRXZlbnQuY3BwICov
OyB9OwogCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyogU29mdExpbmtMaWJ4c2x0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOEYxMEEzMUY5
MDBCREMwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwICovOyB9OwogCQk1M0I4OTVBRjE5
REM3RUQ5MDA5Q0FBOTMgLyogTWljcm90YXNrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNCODk1QUQxOURDN0MzNzAwOUNBQTkzIC8qIE1pY3JvdGFz
a3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
M0M4Mjk4RTEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzgyOThDMTNEOEQ5MjcwMERF
MkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yMDY0LDcgKzIwMjksNiBAQAogCQk3Qzc3QzNENzFERUY4
NTBBMDBBNTBCRkEgLyogQmxvYkxpbmVFbmRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc3QzNENjFERUY4NTBBMDBBNTBCRkEgLyogQmxvYkxp
bmVFbmRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0M3N0MzREMxREVGODZENzAwQTUwQkZBIC8qIEpTQmxvYkxpbmVFbmRpbmdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc3QzNEQTFERUY4
NkQ3MDBBNTBCRkEgLyogSlNCbG9iTGluZUVuZGluZ3MuaCAqLzsgfTsKIAkJN0M3OTAzQjMxRjg2
Rjk1QzAwNDYzQTcwIC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTAzQjAxRjg2Rjk1QzAwNDYz
QTcwIC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5oICovOyB9OwotCQk3Qzc5NDFFNDFD
NTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUyMUM1NkMyOTMwMEE0
QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovOyB9OwogCQk3Qzc5NDFFNTFD
NTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTMxQzU2QzI5MzAwQTRD
NThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLzsgfTsKIAkJN0M4MTM5QTYxRUQ2
Mjg2QTAwQ0UyNkU4IC8qIEpTRE9NQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgxMzlBMzFFRDYyODFEMDBDRTI2RTggLyogSlNET01B
dHRyaWJ1dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QzgxMzlBNzFFRDYyODc0MDBDRTI2RTggLyogSlNET01PcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODEzOUE0MUVENjI4MUQw
MENFMjZFOCAvKiBKU0RPTU9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yMTU5LDcgKzIxMjMsNiBAQAogCQk3Q0ZEQzU3RDFBQzFE
ODA1MDBFMjRBNTcgLyogQ29udGVudEV4dGVuc2lvbkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZEQzU3QjFBQzFEODA1MDBFMjRBNTcgLyog
Q29udGVudEV4dGVuc2lvbkVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0Q0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hIZWFk
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDRD
OTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEhlYWRlcnMuaCAqLzsgfTsKIAkJN0Q3NDFC
REExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRl
ZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlE
MTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07Ci0JCTdFNDI4Q0U1MTNF
MzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNDI4Q0U0MTNFMzQwN0YwMDNCNjYxQyAvKiBS
ZXNvdXJjZUhhbmRsZUlPUy5tbSAqLzsgfTsKIAkJN0U0NkY2RkIxNjI3QTJDQTAwMDYyMjIzIC8q
IEpTT0VTRWxlbWVudEluZGV4VWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0U0NkY2RjkxNjI3QTJDOTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudElu
ZGV4VWludC5oICovOyB9OwogCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0U0NzRFMUYxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0NzRFMUMx
MjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTczLDcgKzIxMzYsNiBAQAog
CQk3RTY2RTIzMzE3RTZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNjZF
MjMxMTdFNkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwICov
OyB9OwogCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2
NkUyMzIxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLzsg
fTsKIAkJN0U2NkUyMzQxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2
NkUyMzIxN0U2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oICov
OyB9OwotCQk3RTdERTIwMjE5NUNFRkNEMDAzNTM2M0IgLyogUmVzb3VyY2VSZXF1ZXN0SU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U3REUyMDEx
OTVDRUZDRDAwMzUzNjNCIC8qIFJlc291cmNlUmVxdWVzdElPUy5tbSAqLzsgfTsKIAkJN0U5OUFG
NTMwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTQwQjEzODQ2
NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFQTMwRjZBMTZERkZFNzUwMDI1
N0QwQiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFQTMwRjY4MTZERkZFNzUwMDI1N0QwQiAvKiBK
U1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLzsgfTsKIAkJN0VBMzBGNkExN0VGRkU3NTAw
MjU3RDBCIC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUEzMEY2ODE3RUZGRTc1MDAyNTdEMEIg
LyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCAqLzsgfTsKQEAgLTI2ODcsNyArMjY0
OSw2IEBACiAJCTk5NkU1OURGMURGMDEyOEQwMDY2MTJCOSAvKiBOYXZpZ2F0b3JXZWJEcml2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkU1OURD
MURGMDBEOTAwMDY2MTJCOSAvKiBOYXZpZ2F0b3JXZWJEcml2ZXIuaCAqLzsgfTsKIAkJOUE1MjhF
ODQxN0Q3RjUyRjAwQUE5NTE4IC8qIEZsb2F0aW5nT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUE1MjhFODIxN0Q3RjUyRjAwQUE5NTE4IC8q
IEZsb2F0aW5nT2JqZWN0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTlBQjFGMzgwMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QUIxRjM3RTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5o
ICovOyB9OwotCQk5QjA4MTEyNDFGNjdDREMwMDA3NEJERTIgLyogV2ViQ29udGVudFJlYWRlcklP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDgx
MTIzMUY2N0NEQzAwMDc0QkRFMiAvKiBXZWJDb250ZW50UmVhZGVySU9TLm1tICovOyB9OwogCQk5
QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMy
NyAvKiBIVE1MQkRJRWxlbWVudC5oICovOyB9OwogCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0Ug
LyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCMzJDREE5MTNERjdGQTkwMEYz
NEQxMyAvKiBSZW5kZXJlZFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QjMyQ0RBNzEzREY3RkE5MDBGMzREMTMgLyogUmVuZGVyZWRQb3Np
dGlvbi5oICovOyB9OwpAQCAtMjc1MSwyOCArMjcxMiwyMCBAQAogCQlBMTQ4MzJCNDE4N0Y2MjlB
MDBEQTYzQTYgLyogV0FLUmVzcG9uZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTQ4MzI5MDE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLUmVzcG9uZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE0
ODMyQjUxODdGNjJGQzAwREE2M0E2IC8qIFdBS1Jlc3BvbmRlci5tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOTExODdGNTA4NzAwREE2M0E2IC8q
IFdBS1Jlc3BvbmRlci5tICovOyB9OwogCQlBMTQ4MzJCNjE4N0Y2MzFGMDBEQTYzQTYgLyogV0FL
U2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE0ODMyOTIxODdGNTA4NzAwREE2M0E2IC8qIFdBS1Njcm9sbFZpZXcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBMTQ4MzJCNzE4N0Y2MzZD
MDBEQTYzQTYgLyogV0FLU2Nyb2xsVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMjkzMTg3RjUwODcwMERBNjNBNiAvKiBXQUtTY3JvbGxW
aWV3Lm1tICovOyB9OwogCQlBMTQ4MzJCODE4N0Y2Mzg2MDBEQTYzQTYgLyogV0FLVmlldy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOTQxODdG
NTA4NzAwREE2M0E2IC8qIFdBS1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJCOTE4N0Y2M0Q1MDBEQTYzQTYgLyogV0FLVmlldy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMjk1
MTg3RjUwODcwMERBNjNBNiAvKiBXQUtWaWV3Lm1tICovOyB9OwogCQlBMTQ4MzJCQjE4N0Y2NDMy
MDBEQTYzQTYgLyogV0FLV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTQ4MzI5NzE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLV2luZG93LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTE0ODMyQkMx
ODdGNjQ4RTAwREE2M0E2IC8qIFdBS1dpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMjk4MTg3RjUwODcwMERBNjNBNiAvKiBXQUtXaW5k
b3cubW0gKi87IH07Ci0JCUExNDgzMkJEMTg3RjY0QjQwMERBNjNBNiAvKiBXS0NvbnRlbnRPYnNl
cnZhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTQ4MzJBMjE4N0Y1MDg3MDBEQTYzQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb24uY3BwICov
OyB9OwogCQlBMTQ4MzJCRTE4N0Y2NENDMDBEQTYzQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMkEz
MTg3RjUwODcwMERBNjNBNiAvKiBXS0NvbnRlbnRPYnNlcnZhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNDgzMkJGMTg3RjY1MkMwMERB
NjNBNiAvKiBXS0dyYXBoaWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTQ4MzJBNDE4N0Y1MDg3MDBEQTYzQTYgLyogV0tHcmFwaGljcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUExNDgzMkMwMTg3
RjY1NjYwMERBNjNBNiAvKiBXS0dyYXBoaWNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTUxODdGNTA4NzAwREE2M0E2IC8qIFdLR3JhcGhp
Y3MubW0gKi87IH07CiAJCUExNDgzMkMxMTg3RjY1N0EwMERBNjNBNiAvKiBXS1R5cGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ4MzJBNjE4N0Y1
MDg3MDBEQTYzQTYgLyogV0tUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBXS1V0aWxpdGll
cy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMy
QTcxODdGNTA4NzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgKi87IH07CiAJCUExNDgzMkMzMTg3
RjY1REYwMERBNjNBNiAvKiBXS1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTgxODdGNTA4NzAwREE2M0E2IC8qIFdLVXRpbGl0
aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTE0ODMyQzQxODdGNjYzQzAwREE2M0E2IC8qIFdLVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyQTkxODdGNTA4NzAwREE2M0E2IC8qIFdL
Vmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUExNDgzMkM1MTg3RjY2ODMwMERBNjNBNiAvKiBXS1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ4MzJBQTE4N0Y1MDg3MDBEQTYzQTYgLyog
V0tWaWV3Lm1tICovOyB9OwogCQlBMTQ4MzJDNjE4N0Y2NjhGMDBEQTYzQTYgLyogV0tWaWV3UHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0
ODMyQUIxODdGNTA4NzAwREE2M0E2IC8qIFdLVmlld1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTQ4MzJDNzE4N0Y2NkM4MDBEQTYz
QTYgLyogV2ViQ29yZVRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE0ODMyOTkxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBMTQ4MzJD
ODE4N0Y2NzNGMDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDgzMjlBMTg3RjUwODcwMERBNjNBNiAvKiBX
ZWJDb3JlVGhyZWFkLm1tICovOyB9OwogCQlBMTQ4MzJDOTE4N0Y2NzZCMDBEQTYzQTYgLyogV2Vi
Q29yZVRocmVhZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTQ4MzI5QjE4N0Y1MDg3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZEludGVy
bmFsLmggKi87IH07CiAJCUExNDgzMkNBMTg3RjY3ODAwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFk
TWVzc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE0ODMyOUMxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRNZXNzYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTE0ODMyQ0IxODdG
NjdCNDAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0ODMyOUQxODdGNTA4NzAwREE2M0E2IC8qIFdl
YkNvcmVUaHJlYWRSdW4uY3BwICovOyB9OwogCQlBMTQ4MzJDQzE4N0Y2N0M0MDBEQTYzQTYgLyog
V2ViQ29yZVRocmVhZFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE0ODMyOUUxODdGNTA4NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBMTQ4MzJD
RTE4N0Y2ODM0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ4MzJBMDE4N0Y1
MDg3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5jcHAgKi87IH07CiAJ
CUExNDgzMkNGMTg3RjY4NDcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTQ4MzJB
MTE4N0Y1MDg3MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNDkxREEzMUY4
NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTFEQTIxRjg1OUQ4NzAwOTVGNUQ0IC8qIFBheW1l
bnRTZXNzaW9uLmggKi87IH07CiAJCUExNDk3ODZGMUFCQUYzMzgwMENFRjdFNCAvKiBDb250ZW50
RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTQ5Nzg2RDFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZpbHRlci5oICovOyB9OwpAQCAtMjc4
MCwxNiArMjczMywxMyBAQAogCQlBMTRCQjBBMDFGOTgxM0I4MDA2MDVBMzUgLyogTW9ja1BheW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNEJC
MDlFMUY5ODEzQjgwMDYwNUEzNSAvKiBNb2NrUGF5bWVudC5oICovOyB9OwogCQlBMTVENzUxNjFF
NjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVENzUxMzFFNjhGN0IxMDBBMzVGQkMgLyogQmxvYkNh
bGxiYWNrLmggKi87IH07CiAJCUExNUQ3NTFCMUU2OEY4QTMwMEEzNUZCQyAvKiBKU0Jsb2JDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1
RDc1MTgxRTY4RjgzNjAwQTM1RkJDIC8qIEpTQmxvYkNhbGxiYWNrLmggKi87IH07Ci0JCUExNUUz
MUYzMUUwQ0IwQjIwMDRCMzcxQyAvKiBRdWlja0xvb2subW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVFMzFGMjFFMENCMEFBMDA0QjM3MUMgLyogUXVp
Y2tMb29rLm1tICovOyB9OwogCQlBMTVFMzFGNDFFMENCMEI1MDA0QjM3MUMgLyogUXVpY2tMb29r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTVFMzFG
MTFFMENCMEFBMDA0QjM3MUMgLyogUXVpY2tMb29rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE1RTZCRjExRTIxMkE2QTAwODBBRjM0IC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE1RTZCRjAxRTIxMkE2QTAwODBBRjM0IC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OwotCQlBMTc2M0YzRTFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE3NjNGM0MxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSAqLzsg
fTsKIAkJQTE3NjNGM0YxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3NjNGM0Qx
RTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNzYzRjQxMUUyMDU4NkUwMDFE
NThERSAvKiBDRk5ldHdvcmsuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3NjNGNDAxRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29y
ay5mcmFtZXdvcmsgKi87IH07CiAJCUExN0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxl
bWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLzsg
fTsKIAkJQTE3RDI3NUUxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdEMjc1RDFF
QUM1Nzk4MDBCRjAxRTcgLyogTWVkaWFTZWxlY3Rpb25PcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTdGRUU2NDFGODg5MzIyMDAyMUU4
MTEgLyogUGF5bWVudFNlc3Npb25CYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTdGRUU2MzFGODg5MzIyMDAyMUU4MTEgLyogUGF5bWVudFNlc3Np
b25CYXNlLmggKi87IH07Ci0JCUExODVCNDI5MUU4MjExQTEwMERDOTExOCAvKiBQcmV2aWV3TG9h
ZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4
NUI0MjcxRTgyMTFBMTAwREM5MTE4IC8qIFByZXZpZXdMb2FkZXIubW0gKi87IH07CiAJCUExODVC
NDJBMUU4MjExQTEwMERDOTExOCAvKiBQcmV2aWV3TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTg1QjQyODFFODIxMUExMDBEQzkxMTggLyog
UHJldmlld0xvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUExODg5MEFGMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmggKi87IH07CiAJCUExOUFFQTIxMUFBQTgwODYwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExOUFFQTFFMUFBQTgwNkUwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaCAqLzsgfTsKQEAgLTI4MDIsNyArMjc1Miw2IEBACiAJCUExQjVCMjlGMUFBQTg0NkYw
MDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29u
dGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICov
OyB9OwogCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFB
OTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyB9OwotCQlBMUMxNTA3OTFF
M0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzE1MDc3MUUzRjJCM0UwMDMyQzk4QyAvKiBQ
cmV2aWV3Q29udmVydGVyLm1tICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
LzsgfTsKIAkJQTFDMkM1NzYxRkEyODUxNjAwQkE0NkZBIC8qIFBheW1lbnRTZXNzaW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzJDNTc1MUZB
Mjg1MTYwMEJBNDZGQSAvKiBQYXltZW50U2Vzc2lvbi5jcHAgKi87IH07CiAJCUExQ0JFRjUzMUY5
RUVFNzUwMDI4REU3QyAvKiBBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGVFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQkVGNTAxRjlFRUU3
NTAwMjhERTdDIC8qIEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZUV2ZW50LmggKi87IH07CkBA
IC0yODI0LDcgKzI3NzMsNiBAQAogCQlBMUNDNTY3RDFGNDYxNEIyMDBBNDU1NUIgLyogSlNQYXlt
ZW50U2hpcHBpbmdPcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQ0M1NjU5MUY0NjE0NUMwMEE0NTU1QiAvKiBKU1BheW1lbnRTaGlwcGluZ09w
dGlvbi5oICovOyB9OwogCQlBMUNDNTY3RjFGNDYxNEI3MDBBNDU1NUIgLyogSlNQYXltZW50U2hp
cHBpbmdUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUNDNTY1MDFGNDYxNDUzMDBBNDU1NUIgLyogSlNQYXltZW50U2hpcHBpbmdUeXBlLmggKi87
IH07CiAJCUExQ0ZFMDMyMUY5RTcxMjkwMDY1QzM0NSAvKiBQYXltZW50QWRkcmVzcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNGRTAzMTFGOUU3
MTI5MDA2NUMzNDUgLyogUGF5bWVudEFkZHJlc3MuY3BwICovOyB9OwotCQlBMURFNzEyRDE4NjEy
QUMxMDA3MzQxOTIgLyogVG91Y2hFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERTcxMkIxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZl
bnRzLmNwcCAqLzsgfTsKIAkJQTFERjVBN0YxRjdFQkQwQjAwNThBNDc3IC8qIEFwcGxlUGF5UmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFE
RjVBN0MxRjdFQkQwQjAwNThBNDc3IC8qIEFwcGxlUGF5UmVxdWVzdC5oICovOyB9OwogCQlBMURG
NUE4NjFGN0VCREYyMDA1OEE0NzcgLyogQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY1QTgzMUY3RUJE
RjIwMDU4QTQ3NyAvKiBBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oICovOyB9OwogCQlBMURG
NUE4RTFGN0VDMDAyMDA1OEE0NzcgLyogSlNBcHBsZVBheU1lcmNoYW50Q2FwYWJpbGl0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjVBOEExRjdF
QzAwMDAwNThBNDc3IC8qIEpTQXBwbGVQYXlNZXJjaGFudENhcGFiaWxpdHkuaCAqLzsgfTsKQEAg
LTI4MzUsOSArMjc4Myw3IEBACiAJCUExREY1QUE2MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFERjVBQTQxRjdGNjRCQjAwNThBNDc3IC8qIFBheW1lbnRIYW5kbGVyLmggKi87IH07CiAJCUEx
REY1QUFEMUY4MDc1RjAwMDU4QTQ3NyAvKiBBcHBsZVBheVJlcXVlc3RCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNUFBQTFGODA3NUYwMDA1
OEE0NzcgLyogQXBwbGVQYXlSZXF1ZXN0QmFzZS5oICovOyB9OwogCQlBMURGNUFCMzFGODA3NzUz
MDA1OEE0NzcgLyogSlNBcHBsZVBheVJlcXVlc3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNUFCMTFGODA3NzUyMDA1OEE0NzcgLyogSlNB
cHBsZVBheVJlcXVlc3RCYXNlLmggKi87IH07Ci0JCUExRUQ3NzhDMUJFMzI5NDAwMERDMTc5MSAv
KiBEZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFFRDc3OEExQkUzMjkzRjAwREMxNzkxIC8qIERldmljZS5jcHAgKi87IH07CiAJCUExRUQ3
NzhEMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUQ3NzhCMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZpY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBMUY1
NURDMTFGNTREMkQ2MDBFREI3NUYgLyogVGV4dEVuY29kaW5nUmVnaXN0cnlJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY1NURCRjFGNTREMkQ2
MDBFREI3NUYgLyogVGV4dEVuY29kaW5nUmVnaXN0cnlJT1MubW0gKi87IH07CiAJCUExRjYwMDQ0
MUY0NzU3QTkwMDc3RTgzRiAvKiBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY2MDA0MTFGNDc1N0E5MDA3
N0U4M0YgLyogUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5oICovOyB9OwogCQlBMUY2MDA0OTFG
NDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYwMDQ3MUY0NzU5NEUwMDc3RTgzRiAv
KiBQYXltZW50RGV0YWlsc1VwZGF0ZS5oICovOyB9OwogCQlBMUY2MDA0RDFGNDc1QTVFMDA3N0U4
M0YgLyogUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYwMDRCMUY0NzVBNUUwMDc3RTgzRiAvKiBQ
YXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50SW5pdC5oICovOyB9OwpAQCAtMjg4MCw3ICsyODI2LDYg
QEAKIAkJQTUwNzFFODcxQzU2RDBFMTAwOTk1MUJFIC8qIFJlc291cmNlVXNhZ2VUaHJlYWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDcxRTg0MUM1
NkQwNzkwMDk5NTFCRSAvKiBSZXNvdXJjZVVzYWdlVGhyZWFkLmggKi87IH07CiAJCUE1MTNCM0Q3
MTE0QjE2NjYwMDFDNDI5QiAvKiBLZXlFdmVudENvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyogS2V5
RXZlbnRDb2NvYS5oICovOyB9OwogCQlBNTE2RThCNzEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxp
emVkRGF0ZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTE2RThCNDEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxpemVkRGF0ZUNhY2hlLmggKi87
IH07Ci0JCUE1MTZFOEI4MTM2RTA0REIwMDc2QzNDMCAvKiBMb2NhbGl6ZWREYXRlQ2FjaGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTE2RThCNTEz
NkUwNERCMDA3NkMzQzAgLyogTG9jYWxpemVkRGF0ZUNhY2hlLm1tICovOyB9OwogCQlBNTJBNjg2
MjFEQkIwRjYzMDA4MzM3M0YgLyogV29ya2VyQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTJBNjg2MDFEQkIwRjVCMDA4MzM3M0Yg
LyogV29ya2VyQ29uc29sZUFnZW50LmggKi87IH07CiAJCUE1MkE2ODY2MURCRDRCNUQwMDgzMzcz
RiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTJBNjg2NDFEQkQ0QjU4MDA4MzM3M0YgLyogV29ya2VyRGVidWdn
ZXJBZ2VudC5oICovOyB9OwogCQlBNTQxNkZFNjE4ODEwRUY4MDAwOUZDNUYgLyogWW91VHViZUVt
YmVkU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU0MTZGRTQxODgxMEVGODAwMDlGQzVGIC8qIFlvdVR1YmVFbWJlZFNoYWRvd0Vs
ZW1lbnQuaCAqLzsgfTsKQEAgLTMxNjAsMTAgKzMxMDUsNyBAQAogCQlBQTdGRUVBNzE2QTRFNkYz
MDA0QzBDMzMgLyogSlNTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBN0ZFRTlGMTZBNEU2RjMwMDRDMEMzMyAv
KiBKU1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oICovOyB9OwogCQlBQTdGRUVBOTE2QTRFNkYz
MDA0QzBDMzMgLyogSlNTcGVlY2hTeW50aGVzaXNWb2ljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE3RkVFQTExNkE0RTZGMzAwNEMwQzMzIC8qIEpT
U3BlZWNoU3ludGhlc2lzVm9pY2UuaCAqLzsgfTsKIAkJQUE3RkVFQUQxNkE0RTc0QjAwNEMwQzMz
IC8qIEpTU3BlZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBQTdGRUVBQzE2QTRFNzRCMDA0QzBDMzMgLyogSlNTcGVlY2hTeW50aGVz
aXMuaCAqLzsgfTsKLQkJQUFBNzI4RjYxNkQxRDhCQzAwRDNCQkM2IC8qIEFjY2Vzc2liaWxpdHlP
YmplY3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBQUE3MjhGMDE2RDFEOEJDMDBEM0JCQzYgLyogQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSAq
LzsgfTsKIAkJQUFBNzI4RjcxNkQxRDhCQzAwRDNCQkM2IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBQUE3MjhGMTE2RDFEOEJDMDBEM0JCQzYgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MuaCAqLzsgfTsKLQkJQUFBNzI4RjgxNkQxRDhCQzAwRDNCQkM2IC8qIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUFBNzI4RjIxNkQxRDhCQzAwRDNCQkM2IC8qIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICovOyB9OwotCQlBQUE3MjhGOTE2RDFEOEJDMDBEM0JC
QzYgLyogQVhPYmplY3RDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFBQTcyOEYzMTZEMUQ4QkMwMEQzQkJDNiAvKiBBWE9iamVjdENhY2hl
SU9TLm1tICovOyB9OwogCQlBQUMwOENGMzE1Rjk0MUZEMDBGMUUxODggLyogQWNjZXNzaWJpbGl0
eVNWR1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFBQzA4Q0YxMTVGOTQxRkMwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oICovOyB9
OwogCQlBQjIzQTMyODA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMjNBMzI2
MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oICovOyB9OwogCQlB
QjI0N0E2RDBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQjI0N0E2QjBBRkQ2MzgzMDAzRkE1RkQg
LyogUmVuZGVyU2xpZGVyLmggKi87IH07CkBAIC0zNzM0LDcgKzM2NzYsNiBAQAogCQlCRTkxM0Q4
MDE4MUVGOTI0MDBEQ0IwOUUgLyogVHJhY2tQcml2YXRlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU5MTNEN0YxODFFRjhFNTAwRENCMDlFIC8q
IFRyYWNrUHJpdmF0ZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCRTk2MUM1NDE4QUQzMzg1MDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRU
cmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
RTk2MUM1MjE4QUQzMzdDMDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgKi87IH07
CiAJCUJFOTYxQzU1MThBRDMzOEMwMEQwN0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTk2MUM1MzE4QUQz
MzdDMDBEMDdEQzUgLyogSW5iYW5kRGF0YVRleHRUcmFjay5oICovOyB9OwotCQlCRUE4MDdDODBG
NzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRUE4MDdDNjBGNzE0QTAzMDA1MjQxOTkgLyogU2Vs
ZWN0aW9uUmVjdC5jcHAgKi87IH07CiAJCUJFQTgwN0M5MEY3MTRBMDMwMDUyNDE5OSAvKiBTZWxl
Y3Rpb25SZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCRUE4MDdDNzBGNzE0QTAzMDA1MjQxOTkgLyogU2VsZWN0aW9uUmVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJFRjI5RUVCMTcxNUREMDkw
MEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkVGMjlFRUMxNzE1REQwOTAwQzRCNEM5IC8qIFZpZGVvVHJhY2tQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRUYyOUVFQTE3MTVE
RDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc2MywxMCArMzcwNCw4IEBACiAJCUM1MEQw
RTgzMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MTBGRjQyNzI5MDBBQzI2NDQg
LyogU3RvcmFnZU5hbWVzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUM1MTM3Q0YzMTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MTM3
Q0YxMTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuaCAqLzsgfTsKIAkJQzUyMjdE
RjExQzNDNkRGMTAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MjI3REVGMUMzQzZERDcwMEY1RUQ1NCAvKiBE
YXRhRGV0ZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJQzUyNzhCMEMxN0YyMTJFQTAwM0EyOTk4IC8qIFBsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1Mjc4
QjBCMTdGMjEyRUEwMDNBMjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gKi87IH07CiAJ
CUM1NDQyNzRCMTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJpbmdMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQ0Mjc0OTExQTU3RTdBMDA2M0E3
NDkgLyogRE9NU3RyaW5nTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUM1NTkyRjc4MUE5MkFBMjgwMDFGODg2MiAvKiBDaGFyYWN0ZXJQcm9w
ZXJ0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NTU5MkY3NzFBOTJBQTI4MDAxRjg4NjIgLyogQ2hhcmFjdGVyUHJvcGVydGllcy5oICovOyB9Owot
CQlDNTVDN0JBMTE3MThBRkJBMDAxMzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTVDN0JBMDE3MThBRkJBMDAx
MzI3RTQgLyogUmVuZGVyVGhlbWVJT1MubW0gKi87IH07CiAJCUM1NzJFRTFGMTIwMUM5QkMwMDdE
OEY4MiAvKiBKU0lEQkluZGV4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNTcyRUUxRDEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oICovOyB9
OwogCQlDNTg1QTY2MzExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU4NUE2NjExMUQ0
RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTg1QTY4MzExRDRGQjA4MDA0QzNFNEIg
LyogSlNJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzU4NUE2NkIxMUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCRGF0YWJhc2UuaCAqLzsg
fTsKQEAgLTM4NzgsMTIgKzM4MTcsMTAgQEAKIAkJQ0Q5REUxODIxN0FBRDZBNDAwRUEzODZEIC8q
IERPTVVSTE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDlERTE3RjE3QUFENjRFMDBFQTM4NkQgLyogRE9NVVJMTWVkaWFTb3VyY2Uu
aCAqLzsgfTsKIAkJQ0RBMjlBMDkxQ0JEOTlGNDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBMjlBMDgxQ0JEOTlGNDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEQTI5QTBC
MUNCRDlBNzQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMEExQ0JEOUE3NDAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJQ0RBMjlBMEUxQ0JEOUNGRTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RBMjlBMEMxQ0JEOUNGRTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tICovOyB9OwogCQlDREEyOUEwRjFDQkQ5Q0ZFMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTI5QTBEMUNCRDlDRkUwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUExNDFDQkRBNTZDMDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tICovOyB9OwogCQlDREEyOUExNzFDQkRBNTZDMDA5MDFD
Q0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREEyOUExNTFDQkRBNTZDMDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RBMjlBMzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBMjlBMkYxQ0JGNzNGQzAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0Lm1tICovOyB9OwotCQlDREEyOUEzMTFDQkY3NERBMDA5MDFDQ0YgLyog
V2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBMjlBMkQxQ0JGNzNGQzAwOTAxQ0NGIC8qIFdlYkFWUGxheWVyQ29u
dHJvbGxlci5tbSAqLzsgfTsKIAkJQ0RBMjlBMzIxQ0MwMUE5NTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREEyOUEyRTFDQkY3M0ZDMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjUx
NzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLzsgfTsKIAkJQ0RBNzk4MkEx
NzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzk4MjExNzBBMjJEQzAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zODk3LDcgKzM4MzQsNiBAQAogCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyogTGVn
YWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDMjZCM0QxNjBBNjJCMDAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uaCAqLzsgfTsKIAkJ
Q0RDNjc1MjIxRUFFQTlCNzAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1h
bmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REM2NzUyMDFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5tbSAqLzsgfTsKIAkJQ0RDNjc1MjMxRUFFQTlCNzAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQzY3NTIxMUVBRUE5QjcwMDcyN0M4NCAvKiBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi87IH07Ci0JCUNEQzY3NTI2MUVBRUE5RDQwMDcyN0M4
NCAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2NzUyNDFFQUVBOUQ0MDA3MjdDODQgLyogQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLm1tICovOyB9OwogCQlDREM2NzUyNzFFQUVBOUQ0MDA3
MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2NzUyNTFFQUVBOUQ0MDA3MjdDODQgLyog
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLmggKi87IH07CiAJCUNEQzY5REQ2MTYzMjAyNkMw
MDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2OURENDE2MzIwMjZDMDA3QzM4REYg
LyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEQzY5RERBMTYzNzFGRDQwMDdDMzhERiAvKiBX
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNv
cmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5NjMsNyArMzg5OSw2IEBACiAJCUNERjY1Q0NBMTQ1
QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0M5MTQ1QjQzQTcwMEM0QzdB
QSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREY3NDgzRjE4RkVCQ0VDMDAwNkVDQzAgLyogR3Jp
ZFBvc2l0aW9uc1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREY3NDgzRDE4RkVCQ0VDMDAwNkVDQzAgLyogR3JpZFBvc2l0aW9uc1Jlc29s
dmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0RGQzM2MDYxOENBNjFDMjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGQzM2MDQxOENBNjFD
MjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNERkMzNjA3MThDQTY5NkMwMDI2RTU2RiAv
KiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREZDMzYwMjE4Q0E2MTYzMDAyNkU1NkYgLyogUmVtb3RlQ29t
bWFuZExpc3RlbmVySU9TLm1tICovOyB9OwogCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
MDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQ0UxODY2NDUxRjcyRTVCNDAw
QTBDQUI2IC8qIE1hcmtlclN1YnJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0MzFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VyU3VicmFu
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
Mzk5OSw3ICszOTM0LDYgQEAKIAkJRDBBM0E3MzExNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNl
TG9hZGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRDBBM0E3MzAxNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwQjA1
NTY4MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBCMDU1NjYwOUM2NzAwMTAwMzA3RTQz
IC8qIENyZWF0ZUxpbmtDb21tYW5kLmggKi87IH07CiAJCUQwQkM1NDQ5MTQ0M0FDNEEwMEUxMDVE
QSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEMEJDNTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5
bGVTaGVldENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUQwQkQ0RjVDMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9T
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQkQ0
RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmNwcCAqLzsgfTsKIAkJ
RDBCRDRGNUQxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQkQ0RjVCMTQwODg1MEYw
MDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggKi87IH07CiAJCUQwRURBNzc1MTQzRTMw
M0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBFREE3NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hl
ZFJhd1Jlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwRkYyQTVDMTFGOEM0NUEw
MDdFNzRFMCAvKiBQaW5nTG9hZGVyLmggKi87IH07CkBAIC00MjYzLDYgKzQxOTcsMTYgQEAKIAkJ
REU1Rjg2MUUxRkEyODFGRDAwNkRCNjNBIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5
QTgxMjQ2MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UubW0gKi87IH07CiAJCURFNUY4NjI3MUZBMjhBMDUwMDZEQjYzQSAvKiBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QjQxRTExMENCRjkwRUYwMEFGMkVDRSAvKiBNZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bSAqLzsgfTsKIAkJREU1Rjg2MkMxRkEyOEQ4RDAwNkRCNjNBIC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSAqLzsgfTsKKwkJREU1Rjg2NTAxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2U1MS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERF
NUY4NjM2MUZBMkFGMDQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTEubW0gKi87IH07CisJCURF
NUY4NjUxMUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODYzNzFGQTJBRjA1MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTUyLm1tICovOyB9OworCQlERTVGODY1MjFGQTJBRjI0MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTUzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREU1Rjg2MzUxRkEyQUYwMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1
My5tbSAqLzsgfTsKKwkJREU1Rjg2NTMxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1
NC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4
NjMzMUZBMkFGMDAwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTQubW0gKi87IH07CisJCURFNUY4
NjU0MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODYzQjFGQTJBRjA4MDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTU1Lm1tICovOyB9OworCQlERTVGODY1NTFGQTJBRjI0MDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTU2Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gREU1Rjg2MzQxRkEyQUYwMTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Ni5t
bSAqLzsgfTsKKwkJREU1Rjg2NTYxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Ny5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NjM4
MUZBMkFGMDYwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTcubW0gKi87IH07CisJCURFNUY4NjU3
MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTgubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODYzOTFGQTJBRjA3MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTU4Lm1tICovOyB9OworCQlERTVGODY1ODFGQTJBRjI0MDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTU5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREU1Rjg2MzIxRkEyQUVGRjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1OS5tbSAq
LzsgfTsKKwkJREU1Rjg2NTkxRkEyQUYyNDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U2MC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NjNBMUZB
MkFGMDcwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNjAubW0gKi87IH07CiAJCURFQkNDREQyMTY2
NDZFODIwMEE0NTJFMSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU0OUIzMDgxNjVGMkZFMTAwMTAz
MzhEIC8qIFJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CiAJCURFQkNDREQ0MTY2
NDZFQUYwMEE0NTJFMSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNDlCMzAwMTY1RjJGQzYwMDEwMzM4
RCAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCAqLzsgfTsKIAkJREVDQTdEOTMxRjlFNjdC
NTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UxMzEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREVDQTdENkQxRjlFNjFDRjAwRTNCNjYxIC8qIFVuaWZp
ZWRTb3VyY2UxMzEuY3BwICovOyB9OwpAQCAtNDU1Niw3ICs0NTAwLDYgQEAKIAkJRTQwMUUwQTQx
QzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDAxRTBBMzFDM0MwQjgzMDBGMzREMTAgLyogU3R5bGVD
aGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNDE5MDQxRjFDQzY0ODZCMDBDMzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDE5MDQxRTFDQzY0ODZC
MDBDMzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyNEEzOUUxMzMwREYwMTAwQ0Y2REM5IC8qIExl
Z2FjeVRpbGVHcmlkVGlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQyNEEzOUQxMzMwREYwMTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5o
ICovOyB9OwotCQlFNDI0QTNBMDEzMzBERjFFMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNEEz
OUYxMzMwREYxRTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5tbSAqLzsgfTsKIAkJRTQy
NUE0OUExODI5MkI4NDAwMjBDRkNGIC8qIENvbGxlY3Rpb25JbmRleENhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI1QTQ5OTE4MjkyQjg0MDAy
MENGQ0YgLyogQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAgLyogUmVz
b3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0Mjk1RkEzMTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0
MkU3NkRDMUM3QUY3NzYwMEUzNjE0RCAvKiBTdHlsZVVwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyRTc2REIxQzdBRjc3NjAwRTM2MTREIC8q
IFN0eWxlVXBkYXRlLmggKi87IH07CkBAIC00NTg1LDExICs0NTI4LDYgQEAKIAkJRTQ0QjRCQjQx
NDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNl
bGVjdG9yQ2hlY2tlci5oICovOyB9OwogCQlFNDRGQTE4NTFCQ0E2QjVBMDA5MUI2RUYgLyogQ29t
cG9zZWRUcmVlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRv
ci5oICovOyB9OwogCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUEx
NDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKLQkJRTQ1MzkwMUUwRUFG
Q0FDQTAwMzY5NUM4IC8qIFBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUzOTAxOTBFQUZDQUNBMDAzNjk1QzggLyogUGFzdGVi
b2FyZElPUy5tbSAqLzsgfTsKLQkJRTQ1MzkwNDMwRUFGRDYzNzAwMzY5NUM4IC8qIFBsYXRmb3Jt
U2NyZWVuSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ1MzkwMzIwRUFGRDYzNzAwMzY5NUM4IC8qIFBsYXRmb3JtU2NyZWVuSU9TLm1tICovOyB9
OwotCQlFNDUzOTA0NTBFQUZENjM3MDAzNjk1QzggLyogU2Nyb2xsVmlld0lPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTM5MDM0MEVBRkQ2Mzcw
MDM2OTVDOCAvKiBTY3JvbGxWaWV3SU9TLm1tICovOyB9OwotCQlFNDUzOTA0RDBFQUZENjM3MDAz
Njk1QzggLyogV2lkZ2V0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ1MzkwM0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLzsg
fTsKLQkJRTQ1MzkwQUUwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUzOTBBRDBFQUZG
NEI1MDAzNjk1QzggLyogU3lzdGVtTWVtb3J5SU9TLmNwcCAqLzsgfTsKIAkJRTQ2MTgwMjkxQzhB
MDZDRDAwMjZDMDJDIC8qIFJlbmRlclRyZWVVcGRhdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDYxODAyODFDOEEwNkNEMDAyNkMwMkMgLyogUmVu
ZGVyVHJlZVVwZGF0ZXIuaCAqLzsgfTsKIAkJRTQ2MTgwMkQxQzhERDI5MDAwMjZDMDJDIC8qIFN0
eWxlUmVsYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDYxODAyQzFDOEREMjkwMDAyNkMwMkMgLyogU3R5bGVSZWxhdGlvbnMuaCAqLzsgfTsK
IAkJRTQ2MUQ2NUYxQkIwQzgwRDAwQ0I1NjQ1IC8qIFN0eWxlU2NvcGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjFENjVFMUJCMEM4MEQwMENCNTY0
NSAvKiBTdHlsZVNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTQ2MjIsMTYgKzQ1NjAsMTMgQEAKIAkJRTRBRkQwMEUwREFGMzM1NTAwRjVG
NTVDIC8qIFNNSUxUaW1lQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEFGRDAwODBEQUYzMzU0MDBGNUY1NUMgLyogU01JTFRpbWVDb250
YWluZXIuaCAqLzsgfTsKIAkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFG
RDAwQTBEQUYzMzU0MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuaCAqLzsgfTsKIAkJRTRCNjVB
NTgxMzJGQThFNzAwNzBFN0JFIC8qIExlZ2FjeVRpbGVHcmlkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI2NUE1NzEzMkZBOEU3MDA3MEU3QkUgLyog
TGVnYWN5VGlsZUdyaWQuaCAqLzsgfTsKLQkJRTRCNjVBNUExMzJGQUFGOTAwNzBFN0JFIC8qIExl
Z2FjeVRpbGVHcmlkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRCNjVBNTkxMzJGQUFGOTAwNzBFN0JFIC8qIExlZ2FjeVRpbGVHcmlkLm1tICovOyB9
OwogCQlFNEI2NUE1QzEzMkZBQ0IwMDA3MEU3QkUgLyogTGVnYWN5VGlsZUxheWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI2NUE1QjEzMkZBQ0Iw
MDA3MEU3QkUgLyogTGVnYWN5VGlsZUxheWVyLmggKi87IH07Ci0JCUU0QjY1QTVFMTMyRkFEQjYw
MDcwRTdCRSAvKiBMZWdhY3lUaWxlTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI2NUE1RDEzMkZBREI2MDA3MEU3QkUgLyogTGVnYWN5VGls
ZUxheWVyLm1tICovOyB9OwogCQlFNEJBNTA5MDFCQ0ZCRDk1MDBFMzRFRjcgLyogQ29tcG9zZWRU
cmVlQW5jZXN0b3JJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRCQTUwOEYxQkNGQkQ5NTAwRTM0RUY3IC8qIENvbXBvc2VkVHJlZUFuY2Vz
dG9ySXRlcmF0b3IuaCAqLzsgfTsKIAkJRTRCQkVEMEYxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTRCQkVEMEQxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5oICovOyB9OwogCQlFNEJCRUQ0RDE0RkNEQkExMDAzRjBCOTgg
LyogU3R5bGVSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEJCRUQ0QjE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRDMTc4OUIwRUU2OTAzODAw
ODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTRDMTc4OTYwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9y
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4
IC8qIFJlbmRlck1lZGlhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTRDM0IxRkEwRjBFNDE2MTAwOTY5M0Y2IC8qIExlZ2FjeVRpbGVDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDM0IxRjkw
RjBFNDE2MTAwOTY5M0Y2IC8qIExlZ2FjeVRpbGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUU0QzNCMUZDMEYwRTQxNzAwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLm1t
ICovOyB9OwogCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzkxQTBEMTgw
MjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oICovOyB9OwogCQlFNEM5MUExNjE4MDk5
OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJl
bmRlclRleHRMaW5lQm94ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFNEQ1OEVCNTE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0RDU4RUIzMTdCNERCREMwMENCRENBOCAvKiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oICov
OyB9OwpAQCAtNDY0Miw3ICs0NTc3LDYgQEAKIAkJRTRERUFBMTgxN0E5M0RDMzAwMEUwNDMwIC8q
IFN0eWxlVHJlZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNERFQUExNjE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEUy
NDM4MzFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFMjQzODIxREFCOTUzRTAw
QzI2RTRCIC8qIG1ldGVyRWxlbWVudFNoYWRvdy5jc3MgKi87IH07CiAJCUU0RTM5QUZCMTMzMEVG
QTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyogTGVn
YWN5VGlsZUxheWVyUG9vbC5oICovOyB9OwotCQlFNEUzOUFGRDEzMzBFRkM2MDAzQUIyNzQgLyog
TGVnYWN5VGlsZUxheWVyUG9vbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0RTM5QUZDMTMzMEVGQzUwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQ
b29sLm1tICovOyB9OwogCQlFNEU5QjExOTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxh
eW91dFJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEU5QjExODE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmggKi87IH07CiAJCUU0RTlCMTFEMTgxNDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEU5QjExQzE4MTQ1NjlDMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5o
ICovOyB9OwogCQlFNEY5RUVGMzE1NkRBMDA3MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEY5RUVG
MTE1NkQ4NEM0MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4NTYsMTMgKzQ3OTAsMTAgQEAK
IAkJRkRGNkJBRjkxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY2
QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAq
LzsgfTsKIAkJRkRGN0U5QzQxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRGN0U5
QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovOyB9OwogCQlG
RTBEODRFOTEwNDg0MzQ4MDAxQTE3OUUgLyogV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ4NEU4MTA0ODQzNDgwMDFBMTc5RSAvKiBX
ZWJFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUZFMEQ4NEVCMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5
RSAvKiBXZWJFdmVudC5tbSAqLzsgfTsKIAkJRkUzNkZEMTUxNkM3ODI2NTAwRjg4N0MxIC8qIENo
YW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCAq
LzsgfTsKIAkJRkUzNkZEMTcxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVN
YWNoaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTM2RkQxMzE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCAq
LzsgfTsKIAkJRkUzNkZEMTgxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzZGRDE0
MTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlLmggKi87IH07CiAJCUZFNDU2
RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAv
KiBEYXRhYmFzZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlGRTY5MzhCNjEwNDVENjdFMDA4RUFCQjYgLyogRXZlbnRIYW5kbGVySU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OTM4
QjUxMDQ1RDY3RTAwOEVBQkI2IC8qIEV2ZW50SGFuZGxlcklPUy5tbSAqLzsgfTsKLQkJRkU2OTk4
NzExOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg2RjE5MjA4N0U3
MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRkU2OTk4
NzIxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OTk4NzAxOTIwODdFNzAw
NjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkZENDhFMEY2NzZFOTMwMDA5Mjg3MyAv
KiBKU0Nvb3JkaW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTZGRDQ4QzBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oICovOyB9
OwogCQlGRTgwREE2NDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNjAwRTlDNDcwMzAw
MEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCAqLzsgfTsKQEAgLTQ4NzAsOSArNDgwMSw2IEBACiAJ
CUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBE
NkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKIAkJRkU4QTY3NDgxNkNERDE5RTAwOTMw
QkY4IC8qIFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4QTY3NDYxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudC5oICov
OyB9OwogCQlGRTlFODlGQzE2RTJEQzA1MDBBOTA4RjggLyogT3JpZ2luTG9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5RTg5RkExNkUyREMwNDAw
QTkwOEY4IC8qIE9yaWdpbkxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlGRUQxM0QzQTBDRUE5MzQ2MDBEODk0NjYgLyogRWRpdG9ySU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEMTNEMzkw
Q0VBOTM0NjAwRDg5NDY2IC8qIEVkaXRvcklPUy5tbSAqLzsgfTsKLQkJRkVEMTNEM0QwQ0VBOTM2
QTAwRDg5NDY2IC8qIEZyYW1lSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVEMTNEM0IwQ0VBOTM2QTAwRDg5NDY2IC8qIEZyYW1lSU9TLm1tICov
OyB9OwotCQlGRUQxM0Q0MDBDRUE5Mzk0MDBEODk0NjYgLyogSWNvbklPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDEzRDNGMENFQTkzOTQwMEQ4
OTQ2NiAvKiBJY29uSU9TLm1tICovOyB9OwogCQlGRUQxM0Q1MjBDRUE5NDk3MDBEODk0NjYgLyog
UmVuZGVyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFRDEzRDUwMENFQTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRTE4MTE0MTZD
MzE5RTgwMDA4NDg0OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTE4MTEyMTZDMzE5RTgwMDA4NDg0OSAv
KiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCAqLzsgfTsKIAkJRkY5NDVFQ0MxNjFGN0YzNjAwOTcx
QkM4IC8qIFBzZXVkb0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZGOTQ1RUNBMTYxRjdGMzYwMDk3MUJDOCAvKiBQc2V1ZG9FbGVtZW50Lmgg
Ki87IH07CkBAIC0xMzM0OCw2ICsxMzI3NiwxNiBAQAogCQlERTVGODVEMTFGQTIzODU0MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTQ3Ni5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBVbmlmaWVkU291cmNlNDc2LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREU1Rjg1RDIxRkEyMzg1NjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U0NzguY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTQ3OC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNUY4NUQzMUZBMjM4NTkwMDZEQjYzQSAvKiBV
bmlmaWVkU291cmNlNDgwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVuaWZpZWRTb3VyY2U0ODAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTVG
ODYzMjFGQTJBRUZGMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU5Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTU5Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlERTVGODYzMzFGQTJBRjAwMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTU0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVW5pZmll
ZFNvdXJjZTU0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTVGODYzNDFGQTJB
RjAxMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU2Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTU2Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlERTVGODYzNTFGQTJBRjAzMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTUz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTVGODYzNjFGQTJBRjA0MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTUxLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVW5pZmllZFNvdXJjZTUxLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlERTVGODYzNzFGQTJBRjA1MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTUyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTVGODYzODFGQTJBRjA2MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTU3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VW5pZmllZFNvdXJjZTU3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTVGODYz
OTFGQTJBRjA3MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU4Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTU4Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlERTVGODYzQTFGQTJBRjA3MDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTYwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVW5pZmllZFNv
dXJjZTYwLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTVGODYzQjFGQTJBRjA4
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU1Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTU1Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlERUMyOTc1RDFCNERFQjJBMDA1RjU5NDUgLyogSlNDdXN0b21FdmVudEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUV2ZW50Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREVDQTdENkExRjlFNjFDQjAw
RTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UxNDQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVW5pZmllZFNvdXJjZTE0NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURFQ0E3RDZCMUY5RTYxQ0MwMEUzQjY2MSAvKiBVbmlmaWVkU291cmNlMTQ4LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaWZpZWRTb3VyY2UxNDguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc0NTYsMTUgKzE3Mzk0LDI1IEBACiAJ
CQkJNTM4RUM4N0QxRjk5M0YzMzAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U0OS5jcHAgKi8sCiAJ
CQkJREU1Rjg1NEMxRkExQUJDMDAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1MC5tbSAqLywKIAkJ
CQk1MzhFQzgyNzFGOTkzRjA2MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTUwLmNwcCAqLywKKwkJ
CQlERTVGODYzNjFGQTJBRjA0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUxLm1tICovLAogCQkJ
CTUzOEVDODQ3MUY5OTNGMTYwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTEuY3BwICovLAorCQkJ
CURFNUY4NjM3MUZBMkFGMDUwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTIubW0gKi8sCiAJCQkJ
NTM4RUM4ODAxRjk5M0YzNDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1Mi5jcHAgKi8sCisJCQkJ
REU1Rjg2MzUxRkEyQUYwMzAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1My5tbSAqLywKIAkJCQk1
MzhFQzgyQzFGOTkzRjA5MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTUzLmNwcCAqLywKKwkJCQlE
RTVGODYzMzFGQTJBRjAwMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU0Lm1tICovLAogCQkJCTUz
OEVDODY5MUY5OTNGMjgwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTQuY3BwICovLAorCQkJCURF
NUY4NjNCMUZBMkFGMDgwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTUubW0gKi8sCiAJCQkJNTM4
RUM4NkMxRjk5M0YyQTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1NS5jcHAgKi8sCisJCQkJREU1
Rjg2MzQxRkEyQUYwMTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1Ni5tbSAqLywKIAkJCQk1MzhF
Qzg4NTFGOTkzRjNBMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU2LmNwcCAqLywKKwkJCQlERTVG
ODYzODFGQTJBRjA2MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU3Lm1tICovLAogCQkJCTUzOEVD
ODc4MUY5OTNGMzAwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNTcuY3BwICovLAorCQkJCURFNUY4
NjM5MUZBMkFGMDcwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTgubW0gKi8sCiAJCQkJNTM4RUM4
MkYxRjk5M0YwQTAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1OC5jcHAgKi8sCisJCQkJREU1Rjg2
MzIxRkEyQUVGRjAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2U1OS5tbSAqLywKIAkJCQk1MzhFQzg2
QjFGOTkzRjI5MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU5LmNwcCAqLywKKwkJCQlERTVGODYz
QTFGQTJBRjA3MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTYwLm1tICovLAogCQkJCTUzOEVDODc5
MUY5OTNGMzEwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNjAuY3BwICovLAogCQkJCTUzOEVDODdF
MUY5OTNGMzMwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNjEuY3BwICovLAogCQkJCTUzOEVDODVB
MUY5OTNGMjAwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlNjIuY3BwICovLApAQCAtMjk5NjksNyAr
Mjk5MTcsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gInNldCAtZVxu
XG5jZCAkU1JDUk9PVFxuXG5pZiBbIFwiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfVwiID09IFwiWUVT
XCIgXTsgdGhlblxuQlVJTERfU0NSSVBUU19ESVI9XCIke1NES1JPT1R9L3Vzci9sb2NhbC9pbmNs
dWRlL3d0Zi9TY3JpcHRzXCJcbmVsc2VcbkJVSUxEX1NDUklQVFNfRElSPVwiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9TY3JpcHRzXCJcbmZpXG5cbmlmIFtbICRT
REtfTkFNRSA9PSBtYWNvc3gqIF1dOyB0aGVuXG5QTEFURk9STV9OQU1FPVwiTWFjXCJcbmVsc2Vc
blBMQVRGT1JNX05BTUU9XCJJT1NcIlxuZmlcblxuVW5pZmllZFNvdXJjZUNwcEZpbGVDb3VudD00
ODBcblVuaWZpZWRTb3VyY2VNbUZpbGVDb3VudD01MFxuXG5lY2hvIFwiVXNpbmcgdW5pZmllZCBz
b3VyY2UgbGlzdCBmaWxlczogU291cmNlcy50eHQsIFNvdXJjZXNDb2NvYS50eHQsIFNvdXJjZXMk
e1BMQVRGT1JNX05BTUV9LnR4dFwiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtCVUlMRF9TQ1JJ
UFRTX0RJUn0vZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5yYlwiIFwiLS1kZXJpdmVk
LXNvdXJjZXMtcGF0aFwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmVcIiBcIi0tc291cmNlLXRyZWUtcGF0aFwiIFwiJHtTUkNST09UfVwiIFwiLS1mZWF0dXJl
LWZsYWdzXCIgXCIke0ZFQVRVUkVfREVGSU5FU31cIiBcIi0tbWF4LWNwcC1idW5kbGUtY291bnRc
IiBcIiR7VW5pZmllZFNvdXJjZUNwcEZpbGVDb3VudH1cIiBcIi0tbWF4LW9iai1jLWJ1bmRsZS1j
b3VudFwiIFwiJHtVbmlmaWVkU291cmNlTW1GaWxlQ291bnR9XCIgXCJTb3VyY2VzLnR4dFwiIFwi
U291cmNlc0NvY29hLnR4dFwiIFwiU291cmNlcyR7UExBVEZPUk1fTkFNRX0udHh0XCIgPiAvZGV2
L251bGxcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuY2QgJFNSQ1JPT1RcblxuaWYg
WyBcIiR7REVQTE9ZTUVOVF9MT0NBVElPTn1cIiA9PSBcIllFU1wiIF07IHRoZW5cbkJVSUxEX1ND
UklQVFNfRElSPVwiJHtTREtST09UfS91c3IvbG9jYWwvaW5jbHVkZS93dGYvU2NyaXB0c1wiXG5l
bHNlXG5CVUlMRF9TQ1JJUFRTX0RJUj1cIiR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwv
aW5jbHVkZS93dGYvU2NyaXB0c1wiXG5maVxuXG5pZiBbWyAkU0RLX05BTUUgPT0gbWFjb3N4KiBd
XTsgdGhlblxuUExBVEZPUk1fTkFNRT1cIk1hY1wiXG5lbHNlXG5QTEFURk9STV9OQU1FPVwiSU9T
XCJcbmZpXG5cblVuaWZpZWRTb3VyY2VDcHBGaWxlQ291bnQ9NDgwXG5VbmlmaWVkU291cmNlTW1G
aWxlQ291bnQ9NjBcblxuZWNobyBcIlVzaW5nIHVuaWZpZWQgc291cmNlIGxpc3QgZmlsZXM6IFNv
dXJjZXMudHh0LCBTb3VyY2VzQ29jb2EudHh0LCBTb3VyY2VzJHtQTEFURk9STV9OQU1FfS50eHRc
IlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7QlVJTERfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLXVu
aWZpZWQtc291cmNlLWJ1bmRsZXMucmJcIiBcIi0tZGVyaXZlZC1zb3VyY2VzLXBhdGhcIiBcIiR7
QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCIgXCItLXNvdXJjZS10
cmVlLXBhdGhcIiBcIiR7U1JDUk9PVH1cIiBcIi0tZmVhdHVyZS1mbGFnc1wiIFwiJHtGRUFUVVJF
X0RFRklORVN9XCIgXCItLW1heC1jcHAtYnVuZGxlLWNvdW50XCIgXCIke1VuaWZpZWRTb3VyY2VD
cHBGaWxlQ291bnR9XCIgXCItLW1heC1vYmotYy1idW5kbGUtY291bnRcIiBcIiR7VW5pZmllZFNv
dXJjZU1tRmlsZUNvdW50fVwiIFwiU291cmNlcy50eHRcIiBcIlNvdXJjZXNDb2NvYS50eHRcIiBc
IlNvdXJjZXMke1BMQVRGT1JNX05BTUV9LnR4dFwiID4gL2Rldi9udWxsXG4iOwogCQl9OwogCQk1
RDBENTQwRDBFOTg2MkY2MDAyOUUyMjMgLyogQ2hlY2sgRm9yIFdlYWsgVlRhYmxlcyBhbmQgRXh0
ZXJuYWxzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwpAQCAtMzAx
MDksNyArMzAwNTcsNiBAQAogCQkJCUExQUZFREU3MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5
bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDA2MThCMUUyRUNBMEEw
MDMyQjM0RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBQTVGM0I4RjE2Q0M0QjM5MDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTE3NjNGM0UxRTIwNTIzNDAwMUQ1OERFIC8qIFdl
YkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxODE1QzFFMTM4MzE5
ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0zMDExOSw3
ICszMDA2Niw2IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCiAJCQkJQTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8qIEFjY2Vzc2liaWxpdHlNZWRpYU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBQUE3MjhGNjE2RDFEOEJDMDBEM0JCQzYgLyog
QWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQTc5NUM4MTg4
OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OTA3MDdFNjEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTFGOTI5NkExRjhEOUNEQjAwNTIzQUYzIC8qIEFwcGxlUGF5TWVy
Y2hhbnRWYWxpZGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDEzMywxNiArMzAw
NzksMTMgQEAKIAkJCQlDREUzQTg1NzE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NEE3NjIxODBGOUY3MDAwQjA3NkM5
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRhbGl6ZS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk1MTY5OUVFMzFGNjA4Q0Q1MDBENTdEMDYgLyogQXV0b2ZpbGxFbGVt
ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVDQTg5QTFFREY0NDdEMDBEQ0IwOEIgLyog
QVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0RDNjc1MjYxRUFF
QTlENDAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQzY3NTIyMUVBRUE5QjcwMDcyN0M4NCAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTMxODFBMUNEQzAw
QzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
NzE5NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTA3MDM2M0U1MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERERENE
MCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcw
MzYzRTcxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQUFBNzI4RjkxNkQxRDhCQzAwRDNCQkM2IC8qIEFYT2JqZWN0Q2FjaGVJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTQ1MDMyRjE4REI3MTcyMDAzNzdCMzQgLyogQnVmZmVy
ZWRMaW5lUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3
ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MTUx
RTAwQjdFNTAwRTIzNUEyIC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMTU4LDMzICsz
MDEwMSwxNyBAQAogCQkJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxQkM3NDJEMUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NBbmlt
YXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2Q0Ex
MUQyMEU1MDAwNEMyMDFDIC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMjY1NTQxNTIxNDg5QjIzMzAwMERGQzVEIC8qIEN1cnNvcklPUy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCRTIzNDgwQzE4QTk4NzBCMDBFNEI2RTggLyogRGF0YUN1ZS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk3Qzc5NDFFNDFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVT
b2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAotCQkJCUExRUQ3NzhDMUJFMzI5NDAwMERDMTc5MSAv
KiBEZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzFFQUY5N0YxMjE0MzVBNDAwRTdDMUJG
IC8qIERldmljZU1vdGlvbkNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTMxNDAzNzlF
MTI0QkVBN0YwMEFGNDBFNCAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCUQwQkQ0RjVDMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5k
SU9TLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGOTdBNjU4MTU1REE4MUUwMEZBREQ0QyAvKiBE
aXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlERTVGODQ4MzFG
QTE4OTVDMDA2REI2M0EgLyogRHJhZ0ltYWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGREE3
QzIzMTg4MzMwQTkwMEM5NTRCNSAvKiBEcmFnSW1hZ2VJT1MubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlGRUQxM0QzQTBDRUE5MzQ2MDBEODk0NjYgLyogRWRpdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE1QkUxOEYxRDU0RjVGQjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVyLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUZFNjkzOEI2MTA0NUQ2N0UwMDhFQUJCNiAvKiBFdmVudEhh
bmRsZXJJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQkyNkY0MEQ0QTE0OTA0QTYzMDBDQTY3QzQg
LyogRXZlbnRMb29wSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNzI0RUQzMkMxQTNBN0U1NDAw
RjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcyRjFBREEy
MUEzOTA0REMwMDAxNEUxOCAvKiBFWFRGcmFnRGVwdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUM0MzA0QjAxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzI3QUZFRDQxQTJFQTZBRTAwMDQ0MkU4IC8qIEVYVHNSR0IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzcyODY5NEUxNEY4ODgyNTAwRjQ4NERDIC8qIEVYVFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzcyMDIyOTFGQTE5QUUy
MDAwMTZCMkIgLyogRkVNb3JwaG9sb2d5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFNjk5ODcx
MTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMzcyN0RGRDUxNDJBQUU0NTAwRDQ0OUNCIC8qIEZvbnRDYWNoZUlPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252
ZXJ0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1MjVCQTMxRUUwQjEwNzAwNzg4REY1IC8q
IEZvdXJDQy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRUQxM0QzRDBDRUE5MzZBMDBEODk0NjYg
LyogRnJhbWVJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MUUzOTkwMTFENkU0NzUwMDA5Qzg4
MzEgLyogR2FtZUNvbnRyb2xsZXJHYW1lcGFkLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTFFMzk5
MDMxRDZFNDc1MDAwOUM4ODMxIC8qIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMEExOTU0RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RjRGRjYxOTRDQTRFNjAwODFCQUFFIC8qIEdhbWVwYWRC
dXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2QzYyMjAxOTUwRDQ4NzAwMzM3RTc1IC8q
IEdhbWVwYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMTk2LDcgKzMwMTIzLDYgQEAK
IAkJCQk3QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRUQxM0Q0MDBDRUE5Mzk0MDBEODk0NjYgLyog
SWNvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMTlGRUFGMUY1NzRCNkQwMDBDNDJGQiAv
KiBJbWFnZURlY29kZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU5NjFDNTQxOEFE
MzM4NTAwRDA3REM1IC8qIEluYmFuZERhdGFUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkUxNkM1OTIxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZEdlbmVyaWNUZXh0VHJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMDIxMCwyOSArMzAxMzYsMTcgQEAKIAkJCQk2QTcyNzk4QzFG
MTZDMjlDMDAzRjM5QjggLyogSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMUY5Mjk2RjFGOEQ5RjVCMDA1MjNBRjMgLyogSlNBcHBsZVBheU1lcmNoYW50VmFs
aWRhdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQ0JFRjYxMUY5RjA5MDQwMDI4
REU3QyAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUzNzIwMjJFMUZBMjlDMDMwMDAxNkIyQiAvKiBKU0dlc3R1cmVFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzkzRTFGOTlCRjVBMDA0RDIyQTggLyogSlNRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzhFQzk0MjFGOTlD
RTQ3MDA0RDIyQTggLyogSlNUb3VjaC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzhFQzk0NTFG
OTlDRTUxMDA0RDIyQTggLyogSlNUb3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUz
OEVDOTQ0MUY5OUNFNEQwMDREMjJBOCAvKiBKU1RvdWNoTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkyNjU1NDEzQTE0ODk4MTFDMDAwREZDNUQgLyogS2V5RXZlbnRJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5MzVDNDc3MDA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREE5OEUwQjE2MDNDRDYwMDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNERThCNUVDMUE2OTc3NzMwMEI0QjY2QSAvKiBMZWdhY3lD
RE1Qcml2YXRlQ2xlYXJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDQTk4RUIxOEIyQzhF
QjAwQzEyRkY5IC8qIExlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDREU4QjVGMDFBNjk3NzhCMDBCNEI2NkEgLyogTGVnYWN5Q0RNU2Vzc2lvbkNsZWFy
S2V5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUU0QzNCMUZDMEYwRTQxNzAwMDk2OTNGNiAvKiBM
ZWdhY3lUaWxlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKLQkJCQlFNEI2NUE1QTEzMkZBQUY5MDA3
MEU3QkUgLyogTGVnYWN5VGlsZUdyaWQubW0gaW4gU291cmNlcyAqLywKLQkJCQlFNDI0QTNBMDEz
MzBERjFFMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJRTRCNjVBNUUxMzJGQURCNjAwNzBFN0JFIC8qIExlZ2FjeVRpbGVMYXllci5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCUU0RTM5QUZEMTMzMEVGQzYwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQ
b29sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1MDgwMzYxRTNGMDBBRDAwNTFENzVEIC8qIExp
YldlYlJUQ0F1ZGlvTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4MzY0MUU0MzI1
QTAwMDYyMUU5MiAvKiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3NjEyQjExRTNBOTk0MDAwQzNEODFEIC8qIExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5
RTkzRTE0RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQTUxNkU4QjgxMzZFMDREQjAwNzZDM0MwIC8qIExvY2FsaXplZERhdGVDYWNoZS5t
bSBpbiBTb3VyY2VzICovLAotCQkJCTQ2RUZBRjBFMUU1RkI5Q0EwMEU3RjM0QiAvKiBMb3dQb3dl
ck1vZGVOb3RpZmllcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZBQkU3MkZFMTA1OUMyMTEw
MEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjcwNTFE
QkZCQjI0MDA3QTdEOTkgLyogTWVkaWFFbmNyeXB0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0NzFEQkZEQzQ5MDA3QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMDI2MSw3ICszMDE3NSw2IEBACiAJCQkJQ0RGMkIwMTYxODIw
NTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRvckdhbWVw
YWQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdF
MkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQx
NjBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19pbnN0YW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNTY5RDE4MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX3J1bnRpbWUubW0gaW4gU291cmNlcyAq
LywKQEAgLTMwMjc0LDQ3ICszMDE4NywyMyBAQAogCQkJCUEzMUM0RTREMTZFMDJBQTYwMDJGNzk1
NyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDc4Q0M3
MTg4MEFBQjUwMDgwOTlEQyAvKiBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTc3QTE3QTcxMTJGMjgxODIwMDRFMDJGNiAvKiBPRVNWZXJ0ZXhBcnJheU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDUzOTAxRTBFQUZDQUNBMDAzNjk1QzggLyog
UGFzdGVib2FyZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExQ0ZFMDMyMUY5RTcxMjkwMDY1
QzM0NSAvKiBQYXltZW50QWRkcmVzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODYxMDFG
QTIzOEQ5MDA2REI2M0EgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQTFDMkM1NzYxRkEyODUxNjAwQkE0NkZBIC8qIFBheW1lbnRTZXNzaW9uLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTI2NjAxRUMwMTRCM0I5QUQwMDEyQzBGRSAvKiBQbGF0Zm9y
bUV2ZW50RmFjdG9yeUlPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUM1Mjc4QjBDMTdGMjEyRUEw
MDNBMjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQlF
NDUzOTA0MzBFQUZENjM3MDAzNjk1QzggLyogUGxhdGZvcm1TY3JlZW5JT1MubW0gaW4gU291cmNl
cyAqLywKLQkJCQlBQTEyREY0OTE3NDNERjgzMDA0REFGREYgLyogUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcklPUy5tbSBpbiBTb3VyY2VzICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBMUMyQzU3NjFGQTI4NTE2MDBCQTQ2RkEgLyogUGF5bWVudFNlc3Npb24uY3BwIGluIFNv
dXJjZXMgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFBMTJERjQ5MTc0M0RG
ODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0RBMjlBMzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMTYxQ0JEQTU2QzAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUNE
QTI5QTBFMUNCRDlDRkUwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUExQzE1MDc5MUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2
aWV3Q29udmVydGVyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTE4NUI0MjkxRTgyMTFBMTAwREM5
MTE4IC8qIFByZXZpZXdMb2FkZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQlBMTVFMzFGMzFFMENC
MEIyMDA0QjM3MUMgLyogUXVpY2tMb29rLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDQzOTE3RkYx
QTkxQjJGODAwNkUwNEYyIC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQ0RGQzM2MDcxOENBNjk2QzAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5t
bSBpbiBTb3VyY2VzICovLAotCQkJCUM1NUM3QkExMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5kZXJU
aGVtZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI2RkFFNENDMTg1MkUzQTUwMDRDOEM0NiAv
KiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTdFNDI4Q0U1MTNFMzQwN0YwMDNCNjYxQyAvKiBSZXNvdXJjZUhhbmRsZUlPUy5tbSBp
biBTb3VyY2VzICovLAotCQkJCTdFN0RFMjAyMTk1Q0VGQ0QwMDM1MzYzQiAvKiBSZXNvdXJjZVJl
cXVlc3RJT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MTRDNzY1MzBDRTkyMzRFMDA3RUYzQ0Qg
LyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RENCOEExRTdB
Njk5NjAwMUI1Rjg3IC8qIFJUQ0ljZVRyYW5zcG9ydC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkw
RjE3NzQ4MTEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQzUxMTU2RTEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMu
bW0gaW4gU291cmNlcyAqLywKLQkJCQk0NEM5OTE4MjBGM0QxRTBEMDA1ODY2NzAgLyogU2Nyb2xs
YmFyVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0VGODY5RjBFODQ0RTlEMDBBODVD
RDUgLyogU2Nyb2xsYmFyVGhlbWVNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkwRkM0RTQwRTE4
N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0gaW4gU291cmNlcyAq
LywKLQkJCQkwRkM0RTQxMjE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTBGQzRFNDBGMTg3RjgyRTEwMDQ1
ODgyQyAvKiBTY3JvbGxpbmdUcmVlSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2RDVBOTlD
MTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUU0NTM5MDQ1MEVBRkQ2MzcwMDM2OTVDOCAvKiBTY3JvbGxW
aWV3SU9TLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkVBODA3QzgwRjcxNEEwMzAwNTI0MTk5IC8q
IFNlbGVjdGlvblJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNCODVFRDQxOENCRUM1MjAw
RTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2VsZWN0
b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERGRDFG
OTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjEw
QTgxRjkwMjJBNDAwNTEwMkNFIC8qIFNvZnRMaW5rTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0gaW4gU291cmNlcyAqLywKLQkJCQk0NDc2NTMxQjEzMzE3MDk5MDAwNkI3ODkgLyogU1NM
S2V5R2VuZXJhdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NBMEEyQ0YwNkIw
MEQ1NzY2NCAvKiBTVkdOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFNDUzOTBBRTBFQUZG
NEI1MDAzNjk1QzggLyogU3lzdGVtTWVtb3J5SU9TLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUEx
RjU1REMxMUY1NEQyRDYwMEVEQjc1RiAvKiBUZXh0RW5jb2RpbmdSZWdpc3RyeUlPUy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTk3NTlFOTNGMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5NDIxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFj
a0N1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyog
VGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMzIzLDggKzMwMjEy
LDYgQEAKIAkJCQlDRDFFNzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDRDOTkxQTAwRjNEMjEwRTAwNTg2NjcwIC8q
IFRoZW1lSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFERjZEODAwQjkyQTE4RTAwQzJEQzg1
IC8qIFRocmVhZENoZWNrLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUY3MkJGMEExODdGRDQ0OTAw
MDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlBMURFNzEyRDE4NjEyQUMxMDA3MzQxOTIgLyogVG91Y2hFdmVudHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzREMzE0NTlGRkFEMDA4RDhENDUgLyogVHJhY2tFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThEOTggLyogVHJh
Y2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNDI5LDE2ICszMDMxNiwyNiBAQAog
CQkJCURFNUY4NTk5MUZBMUFCRjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNDkubW0gaW4gU291
cmNlcyAqLywKIAkJCQlERTVGODU5QTFGQTFBQkY0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTUw
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTMxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZp
ZWRTb3VyY2U1MC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1MDFGQTJBRjI0MDA2REI2
M0EgLyogVW5pZmllZFNvdXJjZTUxLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTQxRjk5
M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1MS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MzhFQzhBNTFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTUyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCURFNUY4NjUxMUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTIubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhBNjFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNv
dXJjZTUzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUY4NjUyMUZBMkFGMjQwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlNTMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhBNzFGOTkzRjlE
MDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUY4
NjUzMUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MzhFQzhBODFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTU1LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCURFNUY4NjU0MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNl
NTUubW0gaW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1NTFGQTJBRjI0MDA2REI2M0EgLyogVW5p
ZmllZFNvdXJjZTU2Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QTkxRjk5M0Y5RDAwNEQy
MkE4IC8qIFVuaWZpZWRTb3VyY2U1Ni5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVGODY1NjFG
QTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RUM4QUExRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U1Ny5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlERTVGODY1NzFGQTJBRjI0MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTU4Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QUIxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRT
b3VyY2U1OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhBQzFGOTkzRjlEMDA0RDIyQTgg
LyogVW5pZmllZFNvdXJjZTU5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUY4NjU4MUZBMkFG
MjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNTkubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhF
QzhBRDFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJjZTYwLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCURFNUY4NjU5MUZBMkFGMjQwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlNjAubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MzhFQzhBRTFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNvdXJj
ZTYxLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEFGMUY5OTNGOUQwMDREMjJBOCAvKiBV
bmlmaWVkU291cmNlNjIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4QjAxRjk5M0Y5RDAw
NEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U2My5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwODU5LDcg
KzMwNzU2LDYgQEAKIAkJCQlERTVGODYwRDFGQTIzODZCMDA2REI2M0EgLyogVW5pZmllZFNvdXJj
ZTQ3OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODYwRTFGQTIzODZCMDA2REI2M0EgLyog
VW5pZmllZFNvdXJjZTQ3OS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODYwRjFGQTIzODZC
MDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTQ4MC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyNjI1
NUYwMDE4ODc4REZGMDAwNkUxRkQgLyogVXNlckFnZW50SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTMyMDQyMDIxRjlBOUYxMDAwQjgxQjJBIC8qIFVzZXJBZ2VudFNjcmlwdHNEYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2Fn
ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4
IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MDg2Nyw3ICszMDc2Myw2IEBACiAJCQkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8qIFZhbGlk
YXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkzRkJDNEFGMzE4OTg4MTU2MDA0
NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MkQ1QTE4RjFDNTQ1OTIzMDBERTM0QTMgLyogVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTJENUExQTkxQzU3NDhBOTAwREUzNEEzIC8qIFZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFE
N0U1NTcxRjczMDg1NTAwRTI2OTkxIC8qIFZpZGVvVG9vbEJveERlY29kZXJGYWN0b3J5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxQ0FENzFFMUVBMDkwQTEwMDE3ODE2NCAvKiBWaWRlb1Rvb2xC
b3hFbmNvZGVyRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBERTE3MTVEMkEy
MDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwODgyLDI2ICsz
MDc3NywxMyBAQAogCQkJCUExNDgzMkIxMTg3RjYxRTEwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVi
cy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQjMxODdGNjI5MTAwREE2M0E2IC8qIFdBS0Ns
aXBWaWV3Lm0gaW4gU291cmNlcyAqLywKIAkJCQlBMTQ4MzJCNTE4N0Y2MkZDMDBEQTYzQTYgLyog
V0FLUmVzcG9uZGVyLm0gaW4gU291cmNlcyAqLywKLQkJCQlBMTQ4MzJCNzE4N0Y2MzZDMDBEQTYz
QTYgLyogV0FLU2Nyb2xsVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkI5MTg3RjYz
RDUwMERBNjNBNiAvKiBXQUtWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQTE0ODMyQkMxODdG
NjQ4RTAwREE2M0E2IC8qIFdBS1dpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJCURFNUY4NjFF
MUZBMjgxRkQwMDZEQjYzQSAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0g
aW4gU291cmNlcyAqLywKLQkJCQlBQUE3MjhGODE2RDFEOEJDMDBEM0JCQzYgLyogV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlERTVGODYxRDFG
QTI4MTVCMDA2REI2M0EgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDREU2NjdBNDFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZm
ZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEQTI5QTMxMUNCRjc0REEwMDkwMUNDRiAv
KiBXZWJBVlBsYXllckNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQkxRjM2RUE5RDFF
MjFCQTE3MDA2MjFFMjUgLyogV2ViQmFja2dyb3VuZFRhc2tDb250cm9sbGVyLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOUIwODExMjQxRjY3Q0RDMDAwNzRCREUyIC8qIFdlYkNvbnRlbnRSZWFkZXJJ
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYgLyogV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMzE0MDM3OUMxMjRC
RUE3RjAwQUY0MEU0IC8qIFdlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0QyMjVDMEIxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4g
U291cmNlcyAqLywKLQkJCQlBMTQ4MzJDODE4N0Y2NzNGMDBEQTYzQTYgLyogV2ViQ29yZVRocmVh
ZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUExNDgzMkNCMTg3RjY3QjQwMERBNjNBNiAvKiBXZWJD
b3JlVGhyZWFkUnVuLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExNDgzMkNFMTg3RjY4MzQwMERB
NjNBNiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTQ0NEQ0RTIzMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUIwNzA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVZp
ZXcubSBpbiBTb3VyY2VzICovLAotCQkJCUZFMEQ4NEVCMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJF
dmVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTIyNUExNkI2MEQ1QzExRTkwMDA5MDI5NSAvKiBX
ZWJFdmVudFJlZ2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUQzRjNEMzZEMUE2OUI3REMwMDU5
RkMyQiAvKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5
QzdCOUM4MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3RTY2RTIzMzE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwOTQzLDE3ICszMDgyNSwxMSBAQAogCQkJCTdDNDhB
NkQwMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDcwOUQ3OTIxQUU1NTU3RTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1MjAwQUJFMDZFIC8qIFdl
YlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFGNEI0MTlCMUUyMzAxQzkwMEFD
MDM3RiAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQlERTVGODYyQzFGQTI4RDhEMDA2REI2M0EgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTNGNDJCMzFFMTg4MTE5MUIwMDI3OEFBQyAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlG
MTIxNzFGNTE2QThDRUQyMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1RDIxQTgwMjEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIxMEI2OTgxMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTQ1MzkwNEQwRUFGRDYzNzAwMzY5NUM4IC8qIFdp
ZGdldElPUy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUExNDgzMkJEMTg3RjY0QjQwMERBNjNBNiAv
KiBXS0NvbnRlbnRPYnNlcnZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMTQ4MzJDMDE4
N0Y2NTY2MDBEQTYzQTYgLyogV0tHcmFwaGljcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExNDgz
MkMyMTg3RjY1QzcwMERBNjNBNiAvKiBXS1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QTE0ODMyQzUxODdGNjY4MzAwREE2M0E2IC8qIFdLVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUE4MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTVBMzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4g
U291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>