<?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>128210</bug_id>
          
          <creation_ts>2014-02-04 14:53:02 -0800</creation_ts>
          <short_desc>Handling of opaque roots is wrong in EdenCollections</short_desc>
          <delta_ts>2014-02-10 11:54:19 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>glenn</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>976512</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 14:53:02 -0800</bug_when>
    <thetext>The set of opaque roots is always cleared during each collection. We should instead persist the set of opaque roots across EdenCollections and only clear it at the beginning of FullCollections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976584</commentid>
    <comment_count>1</comment_count>
      <attachid>223184</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-04 17:16:36 -0800</bug_when>
    <thetext>Created attachment 223184
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976585</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-04 17:18:16 -0800</bug_when>
    <thetext>Attachment 223184 did not pass style-queue:


ERROR: Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h:67:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:95:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:101:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:141:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:538:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:687:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:823:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:833:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:841:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:865:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:886:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py:973:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:80:  The parameter name &quot;button&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 13 in 61 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976587</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 17:18:51 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=223184) [details]
&gt; patch

I think this is the wrong bug :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976589</commentid>
    <comment_count>4</comment_count>
      <attachid>223184</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-04 17:21:12 -0800</bug_when>
    <thetext>Comment on attachment 223184
patch

Wrong bugzilla bug. :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977176</commentid>
    <comment_count>5</comment_count>
      <attachid>223285</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-05 18:08:11 -0800</bug_when>
    <thetext>Created attachment 223285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977177</commentid>
    <comment_count>6</comment_count>
      <attachid>223286</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-05 18:17:24 -0800</bug_when>
    <thetext>Created attachment 223286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977198</commentid>
    <comment_count>7</comment_count>
      <attachid>223286</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-05 19:33:28 -0800</bug_when>
    <thetext>Comment on attachment 223286
Patch

Clearing flags on attachment: 223286

Committed r163507: &lt;http://trac.webkit.org/changeset/163507&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977199</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-05 19:33:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977980</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-07 12:03:58 -0800</bug_when>
    <thetext>D&apos;oh! I forgot to check in the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977993</commentid>
    <comment_count>10</comment_count>
      <attachid>223486</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-07 12:58:16 -0800</bug_when>
    <thetext>Created attachment 223486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978023</commentid>
    <comment_count>11</comment_count>
      <attachid>223486</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-07 13:52:40 -0800</bug_when>
    <thetext>Comment on attachment 223486
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978987</commentid>
    <comment_count>12</comment_count>
      <attachid>223486</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-10 11:54:17 -0800</bug_when>
    <thetext>Comment on attachment 223486
Patch

Clearing flags on attachment: 223486

Committed r163806: &lt;http://trac.webkit.org/changeset/163806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978988</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-10 11:54:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>223184</attachid>
            <date>2014-02-04 17:16:36 -0800</date>
            <delta_ts>2014-02-04 17:21:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-128210-20140204171735.patch</filename>
            <type>text/plain</type>
            <size>192188</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MDlhODU4NmQzZTgyMzBiYjk2YWExMDJlYzFlNTdlNzM2ZGUyMWFkLi4zNDgyMjIwMjdlZWJiZjZh
OWI0MDIxNDdkNTNmNDUxMzdiNjE1YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDIgQEAKKzIwMTQtMDItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIFJlcGxheTogdXBzdHJlYW0gcmVwbGF5IGlucHV0IGNvZGUgZ2VuZXJhdG9y
IGFuZCBFbmNvZGVkVmFsdWUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyODIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCB0aGUgcmVwbGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvci4gTW9z
dCBmZWF0dXJlcyBvZiB0aGUgaW5wdXQgZ2VuZXJhdG9yIGFyZQorICAgICAgICBleGVyY2lzZWQg
YnkgaW5jbHVkZWQgZ2VuZXJhdG9yIHJlZ3Jlc3Npb24gdGVzdHMsIHdoaWNoIHByb2R1Y2UgdXNl
ZnVsIGJ1dAorICAgICAgICBub24tY29tcGlsYWJsZSB0ZXN0IHJlcGxheSBpbnB1dHMuCisKKyAg
ICAgICAgQWRkIEVuY29kZWRWYWx1ZSwgdGhlIG1haW4gcmVwbGF5IGlucHV0IHNlcmlhbGl6YXRp
b24gY2xhc3MgdGhhdCBlbmNvZGVzIGFuZAorICAgICAgICBkZWNvZGVzIGlucHV0cyBhbmQgdGhl
aXIgZGF0YSBiZXR3ZWVuIEMrKyB0eXBlcyBhbmQgdGhlIEpTT04tYmFzZWQgcmVwbGF5IHJlY29y
ZGluZworICAgICAgICBmb3JtYXQuIFJlbGF0aXZlIHRvIG90aGVyIFdlYktpdCBtYXJzaGFsbGlu
ZyBtZWNoYW5pc21zLCBFbmNvZGVkVmFsdWUgaXMga2V5L3ZhbHVlIGJhc2VkLgorICAgICAgICBF
bmNvZGVkVmFsdWVzIHVzZSBJbnNwZWN0b3JPYmplY3RzIGFzIHRoZWlyIGJhY2tpbmcgZGF0YSBz
dHJ1Y3R1cmUuCisKKyAgICAgICAgQWRkIHNvbWUgbWlzc2luZyBudW1lcmljYWwgY29udmVyc2lv
bnMgdG8gSW5zcGVjdG9yVmFsdWUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAqIHJlcGxheS9FbmNvZGVk
VmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpFbmNvZGVkVmFs
dWUpOgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFsdWU6On5FbmNvZGVkVmFsdWUpOgorICAgICAg
ICAoSlNDOjpFbmNvZGVkVmFsdWU6OmNyZWF0ZUVuY29kZWRNYXApOgorICAgICAgICAoSlNDOjpF
bmNvZGVkVmFsdWU6OmNyZWF0ZUVuY29kZWRMaXN0KToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZh
bHVlOjphZG9wdEluc3BlY3RvclZhbHVlKToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpw
dXRFbmNvZGVkKToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjphcHBlbmRFbmNvZGVkKToK
KyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpTaGFwZTo6U2NhbGFyPik6CisgICAgICAgIChK
U0M6OkVuY29kZWRWYWx1ZTo6U2hhcGU6Ok1hcD4pOgorICAgICAgICAoSlNDOjpFbmNvZGVkVmFs
dWU6OlNoYXBlOjpMaXN0Pik6CisgICAgICAgICogcmVwbGF5L0VuY29kZWRWYWx1ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjppbnNwZWN0b3JWYWx1ZSk6CisgICAgICAg
IChKU0M6OlByaW1pdGl2ZUVuY29kaW5nVHJhaXRzOjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChK
U0M6OlByaW1pdGl2ZUVuY29kaW5nVHJhaXRzOjpkZWNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6
OkVuY29kaW5nVHJhaXRzPEVuY29kZWRWYWx1ZT46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6RW5jb2RpbmdUcmFpdHM8RW5jb2RlZFZhbHVlPjo6ZGVjb2RlVmFsdWUpOgorICAgICAgICAo
SlNDOjpFbmNvZGVkVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6YXBw
ZW5kKToKKyAgICAgICAgKEpTQzo6RW5jb2RlZFZhbHVlOjpnZXQpOgorICAgICAgICAqIHJlcGxh
eS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHk6IEFkZGVkLgorICAgICAgICAo
UGFyc2VFeGNlcHRpb24pOgorICAgICAgICAoVHlwZWNoZWNrRXhjZXB0aW9uKToKKyAgICAgICAg
KEZyYW1ld29yayk6CisgICAgICAgIChGcmFtZXdvcmsuX19pbml0X18pOgorICAgICAgICAoRnJh
bWV3b3JrLnNldHRpbmcpOgorICAgICAgICAoRnJhbWV3b3JrLmZyb21TdHJpbmcpOgorICAgICAg
ICAoRnJhbWV3b3Jrcyk6CisgICAgICAgIChJbnB1dFF1ZXVlKToKKyAgICAgICAgKElucHV0UXVl
dWUuX19pbml0X18pOgorICAgICAgICAoSW5wdXRRdWV1ZS5zZXR0aW5nKToKKyAgICAgICAgKElu
cHV0UXVldWUuZnJvbVN0cmluZyk6CisgICAgICAgIChJbnB1dFF1ZXVlcyk6CisgICAgICAgIChJ
bnB1dCk6CisgICAgICAgIChJbnB1dC5fX2luaXRfXyk6CisgICAgICAgIChJbnB1dC5zZXR0aW5n
KToKKyAgICAgICAgKElucHV0TWVtYmVyKToKKyAgICAgICAgKElucHV0TWVtYmVyLl9faW5pdF9f
KToKKyAgICAgICAgKElucHV0TWVtYmVyLmhhc19mbGFnKToKKyAgICAgICAgKFR5cGVTaGFwZSk6
CisgICAgICAgIChUeXBlU2hhcGUuX19pbml0X18pOgorICAgICAgICAoVHlwZVNoYXBlLnNldHRp
bmcpOgorICAgICAgICAoVHlwZVNoYXBlLmZyb21TdHJpbmcpOgorICAgICAgICAoVHlwZVNoYXBl
cyk6CisgICAgICAgIChUeXBlKToKKyAgICAgICAgKFR5cGUuX19pbml0X18pOgorICAgICAgICAo
VHlwZS5fX2VxX18pOgorICAgICAgICAoVHlwZS5fX2hhc2hfXyk6CisgICAgICAgIChUeXBlLmhh
c19mbGFnKToKKyAgICAgICAgKFR5cGUuaXNfc3RydWN0KToKKyAgICAgICAgKFR5cGUuaXNfZW51
bSk6CisgICAgICAgIChUeXBlLmlzX2VudW1fY2xhc3MpOgorICAgICAgICAoVHlwZS5kZWNsYXJh
dGlvbl9raW5kKToKKyAgICAgICAgKFR5cGUucXVhbGlmaWVkX3ByZWZpeCk6CisgICAgICAgIChU
eXBlLnF1YWxpZmllZF9wcmVmaXguaXMpOgorICAgICAgICAoVHlwZS50eXBlX25hbWUpOgorICAg
ICAgICAoVHlwZS5zdG9yYWdlX3R5cGUpOgorICAgICAgICAoVHlwZS5ib3Jyb3dfdHlwZSk6Cisg
ICAgICAgIChUeXBlLmFyZ3VtZW50X3R5cGUpOgorICAgICAgICAoY2hlY2tfcHJvcGVydGllcyk6
CisgICAgICAgIChWZWN0b3JUeXBlKToKKyAgICAgICAgKFZlY3RvclR5cGUuX19pbml0X18pOgor
ICAgICAgICAoVmVjdG9yVHlwZS5oYXNfZmxhZyk6CisgICAgICAgIChWZWN0b3JUeXBlLmlzX3N0
cnVjdCk6CisgICAgICAgIChWZWN0b3JUeXBlLmlzX2VudW0pOgorICAgICAgICAoVmVjdG9yVHlw
ZS5pc19lbnVtX2NsYXNzKToKKyAgICAgICAgKFZlY3RvclR5cGUucXVhbGlmaWVkX3ByZWZpeCk6
CisgICAgICAgIChWZWN0b3JUeXBlLnR5cGVfbmFtZSk6CisgICAgICAgIChWZWN0b3JUeXBlLnN0
b3JhZ2VfdHlwZSk6CisgICAgICAgIChWZWN0b3JUeXBlLmJvcnJvd190eXBlKToKKyAgICAgICAg
KFZlY3RvclR5cGUuYXJndW1lbnRfdHlwZSk6CisgICAgICAgIChJbnB1dHNNb2RlbCk6CisgICAg
ICAgIChJbnB1dHNNb2RlbC5fX2luaXRfXyk6CisgICAgICAgIChJbnB1dHNNb2RlbC5lbnVtX3R5
cGVzKToKKyAgICAgICAgKElucHV0c01vZGVsLmdldF90eXBlX2Zvcl9tZW1iZXIpOgorICAgICAg
ICAoSW5wdXRzTW9kZWwucGFyc2VfdG9wbGV2ZWwpOgorICAgICAgICAoSW5wdXRzTW9kZWwucGFy
c2VfdHlwZV93aXRoX2ZyYW1ld29ya19uYW1lKToKKyAgICAgICAgKElucHV0c01vZGVsLnBhcnNl
X2lucHV0KToKKyAgICAgICAgKElucHV0c01vZGVsLnR5cGVjaGVjayk6CisgICAgICAgIChJbnB1
dHNNb2RlbC50eXBlY2hlY2tfdHlwZSk6CisgICAgICAgIChJbnB1dHNNb2RlbC50eXBlY2hlY2tf
aW5wdXQpOgorICAgICAgICAoSW5wdXRzTW9kZWwudHlwZWNoZWNrX2lucHV0X21lbWJlcik6Cisg
ICAgICAgIChJbmNyZW1lbnRhbEZpbGVXcml0ZXIpOgorICAgICAgICAoSW5jcmVtZW50YWxGaWxl
V3JpdGVyLl9faW5pdF9fKToKKyAgICAgICAgKEluY3JlbWVudGFsRmlsZVdyaXRlci53cml0ZSk6
CisgICAgICAgIChJbmNyZW1lbnRhbEZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAobGNmaXJz
dCk6CisgICAgICAgICh3cmFwX3dpdGhfZ3VhcmQpOgorICAgICAgICAoR2VuZXJhdG9yKToKKyAg
ICAgICAgKEdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChHZW5lcmF0b3Iuc2V0dGluZyk6
CisgICAgICAgIChHZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEdlbmVyYXRv
ci53cml0ZV9vdXRwdXRfZmlsZXMpOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRl
cik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfaW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAoR2VuZXJhdG9yLmdlbmVyYXRlX2xpY2Vuc2UpOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVy
YXRlX2luY2x1ZGVzKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbmNsdWRlcy5pcyk6
CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6
CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9mb3J3YXJkX2RlY2xhcmF0aW9ucy5p
cyk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfY2xhc3NfZGVjbGFyYXRpb24pOgorICAg
ICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKToK
KyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9kZXN0cnVjdG9yX2RlY2xhcmF0aW9u
KToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfZ2V0dGVyKToKKyAg
ICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfZGVjbGFyYXRpb24pOgorICAg
ICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2lucHV0X21lbWJlcl90dXBsZXMpOgorICAgICAgICAo
R2VuZXJhdG9yLnF1YWxpZmllZF9pbnB1dF9uYW1lKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5l
cmF0ZV9pbnB1dF90cmFpdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJh
dGVfZW51bV90cmFpdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVf
Zm9yX2VhY2hfbWFjcm8pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2NsYXNzX2ltcGxl
bWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9lbnVtX3RyYWl0X2ltcGxl
bWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9lbnVtX3RyYWl0X2ltcGxl
bWVudGF0aW9uLmlzKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF90cmFpdF9p
bXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfaW5wdXRfZW5jb2Rl
X2ltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9pbnB1dF9kZWNv
ZGVfaW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2NvbnN0cnVj
dG9yX2luaXRpYWxpemVyX2xpc3QpOgorICAgICAgICAoR2VuZXJhdG9yLmdlbmVyYXRlX2NvbnN0
cnVjdG9yX2Zvcm1hbHNfbGlzdCk6CisgICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfbWVtYmVy
X2JvcnJvd19leHByZXNzaW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9tZW1iZXJf
bW92ZV9leHByZXNzaW9uKToKKyAgICAgICAgKEdlbmVyYXRvci5nZW5lcmF0ZV9jb25zdHJ1Y3Rv
cl9hcmd1bWVudHNfbGlzdCk6CisgICAgICAgIChnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRpb24p
OgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1w
bGF0ZXMucHk6IEFkZGVkLgorICAgICAgICAoVGVtcGxhdGVzKToKKyAgICAgICAgKHN0ZCk6Cisg
ICAgICAgIChTdHJpbmcpOgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2ZhaWwtb24tYy1zdHlsZS1lbnVtLW5vLXN0b3JhZ2UuanNvbi1lcnJvcjogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNhdGUtaW5w
dXQtbmFtZXMuanNvbi1lcnJvcjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNhdGUtdHlwZS1uYW1lcy5qc29uLWVycm9yOiBBZGRl
ZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLWVudW0t
dHlwZS1taXNzaW5nLXZhbHVlcy5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbWVtYmVyLW5hbWUu
anNvbi1lcnJvcjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LW5hbWUuanNvbi1lcnJvcjogQWRkZWQuCisgICAgICAg
ICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1
ZXVlLmpzb24tZXJyb3I6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2ZhaWwtb24tbWlzc2luZy10eXBlLW1vZGUuanNvbi1lcnJvcjogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLXR5cGUt
bmFtZS5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9mYWlsLW9uLW5vLWlucHV0cy5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiBy
ZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW5vLXR5cGVzLmpzb24tZXJyb3I6
IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24t
dW5rbm93bi1pbnB1dC1xdWV1ZS5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLXVua25vd24tbWVtYmVyLXR5cGUuanNvbi1l
cnJvcjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFp
bC1vbi11bmtub3duLXR5cGUtc2hhcGUuanNvbi1lcnJvcjogQWRkZWQuCisgICAgICAgICogcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJz
LXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcDogQWRkZWQuCisg
ICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNv
ZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6
IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRl
LWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVu
Y29kaW5nLWhlbHBlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6IEFkZGVkLgorICAgICAgICAq
IHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVs
cGVycy5qc29uLWVycm9yOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9nZW5lcmF0ZS1ldmVudC1sb29wLXNoYXBlLXR5cGVzLmpzb24tVGVzdFJlcGxheUlu
cHV0cy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUtdHlwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmg6
IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRl
LWlucHV0LXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcDogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1n
dWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaDogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5q
c29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24t
VGVzdFJlcGxheUlucHV0cy5oOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29uLWVycm9yOiBBZGRlZC4K
KyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXpl
ZC10eXBlLXNoYXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiByZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNo
YXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaDogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZmFpbC1vbi1jLXN0eWxlLWVudW0tbm8tc3RvcmFnZS5qc29uOiBBZGRlZC4K
KyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS1pbnB1dC1u
YW1lcy5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9u
LWR1cGxpY2F0ZS10eXBlLW5hbWVzLmpzb246IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3Jp
cHRzL3Rlc3RzL2ZhaWwtb24tZW51bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb246IEFkZGVkLgor
ICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1tZW1i
ZXItbmFtZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWls
LW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2Ny
aXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtcXVldWUuanNvbjogQWRkZWQuCisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLXR5cGUtbW9kZS5qc29u
OiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3Npbmct
dHlwZS1uYW1lLmpzb246IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2Zh
aWwtb24tbm8taW5wdXRzLmpzb246IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rl
c3RzL2ZhaWwtb24tbm8tdHlwZXMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3Njcmlw
dHMvdGVzdHMvZmFpbC1vbi11bmtub3duLWlucHV0LXF1ZXVlLmpzb246IEFkZGVkLgorICAgICAg
ICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5qc29u
OiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLXVua25vd24t
dHlwZS1zaGFwZS5qc29uOiBBZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9n
ZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uOiBB
ZGRlZC4KKyAgICAgICAgKiByZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1lbnVtLWVuY29k
aW5nLWhlbHBlcnMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMv
Z2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5qc29uOiBBZGRlZC4KKyAgICAgICAgKiBy
ZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1YXJkLmpzb246IEFkZGVk
LgorICAgICAgICAqIHJlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgtdmVj
dG9yLW1lbWJlcnMuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMv
Z2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbjogQWRkZWQuCisgICAgICAgICogcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1zaGFwZXMuanNvbjogQWRkZWQu
CisKIDIwMTQtMDItMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgU3RyaW5nSW1wbDo6Z2V0Q2hhcmFjdGVycyB0byBTdHJpbmdJbXBsOjpj
aGFyYWN0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU1ZjEzZmI4MzBhNmY4
NjM4MWFiYzU2MmNiZWEzMWIyNTQzMTc1ZDcuLjYxYzEwMjAyMDU3ZGMxNzI3OTNjZmYxMWM0MzUz
OGYwZjU4NDE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTgsOSArOTE4
LDExIEBACiAJCTk2OUEwNzlCMEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzk1MEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5Nzg4MDE0MDE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0NzFB
RDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi87IH07CiAJCTk3ODgwMTQxMTQ3MUFEOTIw
MDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk5RTQ1QTEw
MThBMDFGMzUwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEwRDE4QTAxRjM1MDAyNkQ4OEYgLyog
RW1wdHlJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTk5RTQ1QTExMThBMDFGMzUwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMEUxOEEw
MUYzNTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTlFNDVBMTIxOEEwMUYzNTAwMjZEODhGIC8qIE5vbmRl
dGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlFNDVBMEYxOEEwMUYzNTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5
RTQ1QTI0MThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUExRjE4QTFCMjU5MDAyNkQ4
OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5RTQ1QTI1MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlF
NDVBMjAxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgKi87IH07CisJCTk5RTQ1
QTI2MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4RiAvKiBF
bmNvZGVkVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5OUU0NUEyNzE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIyMThBMUIyNTkw
MDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5RTQ1QTI4MThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1p
bmlzdGljSW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5RTQ1QTIzMThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkIz
QjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJl
Z0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4
cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUz
MTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNTksOSArMjM2MSwx
MyBAQAogCQk5NjlBMDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4OEZDMjIxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1h
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRlTWF0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0Uy
RCAvKiBKU0RhdGVNYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0
ZU1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTlFNDVBMEQxOEEwMUYzNTAw
MjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRW1wdHlJbnB1dEN1cnNvci5oOyBwYXRoID0gcmVwbGF5L0VtcHR5SW5wdXRDdXJzb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTlFNDVBMEUxOEEwMUYzNTAwMjZEODhG
IC8qIElucHV0Q3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElucHV0
Q3Vyc29yLmg7IHBhdGggPSByZXBsYXkvSW5wdXRDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOTlFNDVBMEYxOEEwMUYzNTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJ
bnB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb25kZXRlcm1pbmlzdGlj
SW5wdXQuaDsgcGF0aCA9IHJlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlFNDVBMUQxOEExQjFFNzAwMjZEODhGIC8qIENvZGVHZW5l
cmF0b3JSZXBsYXlJbnB1dHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGgg
PSBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OUU0NUExRTE4QTFCMUU3MDAyNkQ4OEYgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0
c1RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVH
ZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVtcHR5SW5wdXRDdXJzb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlFNDVBMjAxOEExQjI1OTAwMjZEODhGIC8qIEVuY29k
ZWRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbmNvZGVk
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU0NUEyMTE4QTFCMjU5
MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVuY29kZWRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUU0NUEy
MjE4QTFCMjU5MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5wdXRDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTlFNDVBMjMxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25kZXRlcm1pbmlzdGljSW5wdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJl
Z0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4
cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIy
ODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQw
MTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDY4
LDExICs0NDc0LDIzIEBACiAJCTk5RTQ1QTBDMThBMDFFOTMwMDI2RDg4RiAvKiByZXBsYXkgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTk5RTQ1QTBEMThB
MDFGMzUwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggKi8sCi0JCQkJOTlFNDVBMEUxOEEw
MUYzNTAwMjZEODhGIC8qIElucHV0Q3Vyc29yLmggKi8sCi0JCQkJOTlFNDVBMEYxOEEwMUYzNTAw
MjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovLAorCQkJCTk5RTQ1QTFDMThBMUIx
QjgwMDI2RDg4RiAvKiBzY3JpcHRzICovLAorCQkJCTk5RTQ1QTIwMThBMUIyNTkwMDI2RDg4RiAv
KiBFbmNvZGVkVmFsdWUuY3BwICovLAorCQkJCTk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4RiAvKiBF
bmNvZGVkVmFsdWUuaCAqLywKKwkJCQk5OUU0NUExRjE4QTFCMjU5MDAyNkQ4OEYgLyogRW1wdHlJ
bnB1dEN1cnNvci5oICovLAorCQkJCTk5RTQ1QTIyMThBMUIyNTkwMDI2RDg4RiAvKiBJbnB1dEN1
cnNvci5oICovLAorCQkJCTk5RTQ1QTIzMThBMUIyNTkwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlz
dGljSW5wdXQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gcmVwbGF5OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTlFNDVBMUMxOEExQjFCODAwMjZEODhGIC8qIHNjcmlwdHMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTk5RTQ1QTFE
MThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5ICovLAorCQkJ
CTk5RTQ1QTFFMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVt
cGxhdGVzLnB5ICovLAogCQkJKTsKLQkJCW5hbWUgPSByZXBsYXk7CisJCQlwYXRoID0gc2NyaXB0
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCUE1MTNFNUNDMTg1RkI5OTIw
MDdFOTVBRCAvKiBhZ2VudHMgKi8gPSB7CkBAIC00NjgwLDYgKzQ2OTgsNyBAQAogCQkJCTk2OUEw
NzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEMzRUQwRTE2RjVDRDAwQjM0NDYwIC8qIENhbGxEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5OUU0NUEyNjE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFFRjE3OTg3QUI2MDAyOTlEQjIgLyogQ2FsbEZyYW1l
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTVFM0JDMDUwRTFBRTY4MjAwQjJEMUMxIC8q
IENhbGxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NDEsNiArNDg2MCw3IEBACiAJ
CQkJMEZFRkM5QUIxNjgxQTNCNjAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVFMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JF
eGl0UHJlcGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3
MjUzMiAvKiBERkdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlFNDVBMjcxOEExQjI1OTAw
MjZEODhGIC8qIElucHV0Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzhBOTc3QjE3OTcz
OEI4MDA5REY3NDQgLyogREZHUGxhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzUxNkMx
REIwQjAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5MjQsNyArNDk0NCw2IEBACiAJCQkJMEZF
QTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVu
dHJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk5OUU0NUExMTE4QTAxRjM1MDAyNkQ4OEYgLyogSW5w
dXRDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERTE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
MzVCRTAxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00OTQ1LDYgKzQ5NjQsNyBAQAogCQkJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FFMTRFOTg1
QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDMw
MTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk5RTQ1QTI0MThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJbmNvbWluZ1Jl
ZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAv
KiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkFFMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGluIEhlYWRl
cnMgKi8sCkBAIC01MDk1LDcgKzUxMTUsNiBAQAogCQkJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlE
QjIgLyogSlNTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI3MEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTlFNDVBMTIxOEEw
MUYzNTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFODU1MzkxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyODBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmdS
ZWYuaCBpbiBIZWFkZXJzICovLApAQCAtNTI0NCw2ICs1MjYzLDcgQEAKIAkJCQk4NjE1OEFCMzE1
NUM4QjQwMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQ1NDBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0
aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTUwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUMxNUVEOEU0NjAwRjE2
N0IyIC8qIFByb3BlcnR5U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzODgxODU2
ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVy
cyAqLywKQEAgLTUyOTYsNyArNTMxNiw2IEBACiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFG
IC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTczODY1NTQxMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBp
biBIZWFkZXJzICovLAotCQkJCTk5RTQ1QTEwMThBMDFGMzUwMDI2RDg4RiAvKiBFbXB0eUlucHV0
Q3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTNDMUZCMDBDRTNFMjUgLyog
U3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3
OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjIxNzk4
N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTIwLDYg
KzYxMzksNyBAQAogCQkJCTE0ODJCNzRFMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZBQUIzODBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJp
bmdSZWZDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0Qg
LyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OUU0NUEyNTE4
QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI2NkZBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpT
VHlwZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkZDMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmlu
ZGV4IDRjZGY3MWU5MmZiZDU5ZGUyYTdiYzc4ZjI4YzQ0YWZhZDg5ZTRhZjQuLjEyYjExZjc1ZjY3
Yzc1NmMzMzUxZGEyMmI0ZTA2MzVmNWI5MmQ5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBA
QCBib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihkb3VibGUqKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIobG9uZyopIGNvbnN0
Citib29sIEluc3BlY3RvclZhbHVlOjphc051bWJlcihmbG9hdCopIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpAQCAtNTAyLDEyICs1MDIsMjcgQEAgYm9vbCBJbnNwZWN0b3JWYWx1ZTo6
YXNOdW1iZXIoaW50KikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgSW5zcGVj
dG9yVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKGxvbmcqKSBjb25zdAoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIobG9uZyBs
b25nKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgSW5zcGVjdG9yVmFs
dWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgaW50KikgY29uc3QK
K2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyopIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTg0LDExICs1OTksMTEgQEAgYm9vbCBJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcihsb25nKiBv
dXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzTnVtYmVyKGZsb2F0KiBv
dXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlTnVtYmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgKm91dHB1dCA9IHN0YXRpY19jYXN0PGxvbmc+KG1fZG91YmxlVmFs
dWUpOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxmbG9hdD4obV9kb3VibGVWYWx1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwMCw2ICs2MTUsMzAgQEAgYm9vbCBJbnNwZWN0b3JC
YXNpY1ZhbHVlOjphc051bWJlcihpbnQqIG91dHB1dCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCogb3V0cHV0
KSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJlcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9kb3VibGVWYWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNO
dW1iZXIobG9uZyogb3V0cHV0KSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICpvdXRwdXQgPSBzdGF0aWNfY2FzdDxsb25n
PihtX2RvdWJsZVZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbnNwZWN0b3JC
YXNpY1ZhbHVlOjphc051bWJlcihsb25nIGxvbmcqIG91dHB1dCkgY29uc3QKK3sKKyAgICBpZiAo
dHlwZSgpICE9IFR5cGVOdW1iZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAqb3V0cHV0
ID0gc3RhdGljX2Nhc3Q8bG9uZz4obV9kb3VibGVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIGJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgbG9uZyogb3V0
cHV0KSBjb25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZU51bWJlcikKQEAgLTYwOCwxMSAr
NjQ3LDExIEBAIGJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNOdW1iZXIodW5zaWduZWQgbG9u
Zyogb3V0cHV0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEluc3BlY3RvckJh
c2ljVmFsdWU6OmFzTnVtYmVyKHVuc2lnbmVkIGludCogb3V0cHV0KSBjb25zdAorYm9vbCBJbnNw
ZWN0b3JCYXNpY1ZhbHVlOjphc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29u
c3QKIHsKICAgICBpZiAodHlwZSgpICE9IFR5cGVOdW1iZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtX2RvdWJsZVZhbHVl
KTsKKyAgICAqb3V0cHV0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX2RvdWJs
ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggMDZjNWRmZTk3NzViZGFlYzhk
Njk4NDllOWY2MTBhYmU5ZjgzODJiNS4uM2I4NjE2NjRkYTMzNzlkZWI1Njg5YmMwMDEzNGRlMjZl
YmE2NzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oCkBAIC02NywxMCArNjcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGFzQm9vbGVhbihib29sKiBvdXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhc051
bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGxv
bmcqIG91dHB1dCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGZsb2F0KiBvdXRw
dXQpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihpbnQqIG91dHB1dCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBhc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBhc051bWJlcihsb25nIGxvbmcqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKHVuc2lnbmVkIGludCogb3V0cHV0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIodW5zaWduZWQgbG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGFz
VmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiogb3V0cHV0KTsKICAgICB2aXJ0dWFsIGJvb2wg
YXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCk7CkBAIC05OSwxMCArMTAy
LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2xlYW4oYm9vbCogb3V0cHV0
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoZG91YmxlKiBvdXRw
dXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihsb25nKiBvdXRw
dXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihmbG9hdCogb3V0
cHV0KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXNOdW1iZXIoaW50KiBvdXRw
dXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBs
b25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcih1
bnNpZ25lZCogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1i
ZXIobG9uZyogb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNOdW1i
ZXIobG9uZyBsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBh
c051bWJlcih1bnNpZ25lZCBsb25nKiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgYm9vbCBhc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcqIG91dHB1dCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvRW5jb2RlZFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2Rl
ZFZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzQ3MTk3YzI5MGMwZTI1MTI2NmU0ZDZjM2I2OGM5MDU2
M2U5NDhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9F
bmNvZGVkVmFsdWUuY3BwCkBAIC0wLDAgKzEsMjk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVu
Y29kZWRWYWx1ZS5oIgorCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisKKyNpbmNsdWRlICA8d3Rm
L3RleHQvQmFzZTY0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK25hbWVzcGFj
ZSBKU0MgeworCitFbmNvZGVkVmFsdWU6OkVuY29kZWRWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBvYmplY3QpCisgICAgOiBtX29iamVjdChvYmplY3QpIHsgfQorCitFbmNvZGVkVmFs
dWU6On5FbmNvZGVkVmFsdWUoKSB7IH0KKworc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4g
RW5jb2RlZFZhbHVlOjpjcmVhdGVFbmNvZGVkTWFwKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEVuY29kZWRWYWx1ZT4obmV3IEVuY29kZWRWYWx1ZShJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IEVuY29kZWRWYWx1
ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2RlZFZhbHVlPihuZXcgRW5jb2RlZFZhbHVlKEluc3BlY3RvckFycmF5OjpjcmVhdGUoKSkpOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGVkVmFsdWU6OmFkb3B0SW5z
cGVjdG9yVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCit7CisgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+KG5ldyBFbmNvZGVkVmFsdWUodmFsdWUp
KTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgYm9vbCYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVj
dC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmpl
Y3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgY2FzdGVkT2JqZWN0LT5zZXRCb29s
ZWFuKGtleSwgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5jb2RlZFZhbHVlOjpwdXRF
bmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBkb3VibGUmIHZhbHVlKQoreworICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVj
dElzTWFwID0gbV9vYmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9V
TlVTRUQoY2FzdGVkT2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIGNhc3Rl
ZE9iamVjdC0+c2V0TnVtYmVyKGtleSwgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5j
b2RlZFZhbHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBmbG9hdCYgdmFs
dWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJv
b2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVjdC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7
CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmplY3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXAp
OworCisgICAgY2FzdGVkT2JqZWN0LT5zZXROdW1iZXIoa2V5LCAoZG91YmxlKSB2YWx1ZSk7Cit9
CisKK3RlbXBsYXRlPD4gdm9pZCBFbmNvZGVkVmFsdWU6OnB1dEVuY29kZWQoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IGludDMyX3QmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0gbV9vYmplY3Qt
PmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdGVkT2JqZWN0
SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIGNhc3RlZE9iamVjdC0+c2V0TnVtYmVy
KGtleSwgKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5jb2RlZFZhbHVl
OjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBpbnQ2NF90JiB2YWx1ZSkKK3sK
KyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0
ZWRPYmplY3RJc01hcCA9IG1fb2JqZWN0LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBB
U1NFUlRfVU5VU0VEKGNhc3RlZE9iamVjdElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAg
ICBjYXN0ZWRPYmplY3QtPnNldE51bWJlcihrZXksIChkb3VibGUpIHZhbHVlKTsKK30KKwordGVt
cGxhdGU8PiB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYXN0
ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9IG1fb2JqZWN0LT5hc09iamVj
dCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RlZE9iamVjdElzTWFwLCBj
YXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICBjYXN0ZWRPYmplY3QtPnNldFN0cmluZyhrZXksIHZh
bHVlKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDMyX3QmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0g
bV9vYmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dGVkT2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIGNhc3RlZE9iamVjdC0+
c2V0TnVtYmVyKGtleSwgKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5j
b2RlZFZhbHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50NjRfdCYg
dmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2FzdGVkT2JqZWN0OworICAg
IGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVjdC0+YXNPYmplY3QoJmNhc3RlZE9iamVj
dCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmplY3RJc01hcCwgY2FzdGVkT2JqZWN0SXNN
YXApOworCisgICAgY2FzdGVkT2JqZWN0LT5zZXROdW1iZXIoa2V5LCAoZG91YmxlKSB2YWx1ZSk7
Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBFbmNvZGVkVmFsdWU6OnB1dEVuY29kZWQoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVuc2lnbmVkIGxvbmcmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0g
bV9vYmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dGVkT2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIGNhc3RlZE9iamVjdC0+
c2V0TnVtYmVyKGtleSwgKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgRW5j
b2RlZFZhbHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2RlZFZhbHVlPiYgZW5jb2RlZFZhbHVlKQoreworICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0gbV9v
YmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdGVk
T2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gZW5jb2RlZE9iamVjdCA9IGVuY29kZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKTsKKyAg
ICBjYXN0ZWRPYmplY3QtPnNldFZhbHVlKGtleSwgZW5jb2RlZE9iamVjdCk7Cit9CisKK3RlbXBs
YXRlPD4gdm9pZCBFbmNvZGVkVmFsdWU6OmFwcGVuZEVuY29kZWQoY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPEVuY29kZWRWYWx1ZT4mIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGNhc3RlZEFycmF5OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNMaXN0ID0gbV9vYmpl
Y3QtPmFzQXJyYXkoJmNhc3RlZEFycmF5KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RlZE9iamVj
dElzTGlzdCwgY2FzdGVkT2JqZWN0SXNMaXN0KTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gZW5jb2RlZE9iamVjdCA9IGVuY29kZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKTsKKyAgICBj
YXN0ZWRBcnJheS0+cHVzaFZhbHVlKGVuY29kZWRPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IHZv
aWQgRW5jb2RlZFZhbHVlOjphcHBlbmRFbmNvZGVkKGNvbnN0IGludDMyX3QmIHZhbHVlKQorewor
ICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2FzdGVkQXJyYXk7CisgICAgYm9vbCBjYXN0ZWRP
YmplY3RJc0xpc3QgPSBtX29iamVjdC0+YXNBcnJheSgmY2FzdGVkQXJyYXkpOworICAgIEFTU0VS
VF9VTlVTRUQoY2FzdGVkT2JqZWN0SXNMaXN0LCBjYXN0ZWRPYmplY3RJc0xpc3QpOworCisgICAg
Y2FzdGVkQXJyYXktPnB1c2hOdW1iZXIoKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+
IHZvaWQgRW5jb2RlZFZhbHVlOjphcHBlbmRFbmNvZGVkKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBjYXN0ZWRBcnJheTsKKyAgICBib29sIGNhc3Rl
ZE9iamVjdElzTGlzdCA9IG1fb2JqZWN0LT5hc0FycmF5KCZjYXN0ZWRBcnJheSk7CisgICAgQVNT
RVJUX1VOVVNFRChjYXN0ZWRPYmplY3RJc0xpc3QsIGNhc3RlZE9iamVjdElzTGlzdCk7CisKKyAg
ICBjYXN0ZWRBcnJheS0+cHVzaFN0cmluZyh2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBF
bmNvZGVkVmFsdWU6OmFwcGVuZEVuY29kZWQoY29uc3QgdWludDMyX3QmIHZhbHVlKQoreworICAg
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2FzdGVkQXJyYXk7CisgICAgYm9vbCBjYXN0ZWRPYmpl
Y3RJc0xpc3QgPSBtX29iamVjdC0+YXNBcnJheSgmY2FzdGVkQXJyYXkpOworICAgIEFTU0VSVF9V
TlVTRUQoY2FzdGVkT2JqZWN0SXNMaXN0LCBjYXN0ZWRPYmplY3RJc0xpc3QpOworCisgICAgY2Fz
dGVkQXJyYXktPnB1c2hOdW1iZXIoKGRvdWJsZSkgdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJv
b2wgRW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVkPGJvb2wsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNj
YWxhcj4oY29uc3QgU3RyaW5nJiBrZXksIGJvb2wmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0g
bV9vYmplY3QtPmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dGVkT2JqZWN0SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIHJldHVybiBjYXN0ZWRP
YmplY3QtPmdldEJvb2xlYW4oa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5j
b2RlZFZhbHVlOjpnZXRFbmNvZGVkPGRvdWJsZSwgRW5jb2RlZFZhbHVlOjpTaGFwZTo6U2NhbGFy
Pihjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9IG1f
b2JqZWN0LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3Rl
ZE9iamVjdElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2FzdGVkT2Jq
ZWN0LT5nZXROdW1iZXIoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5jb2Rl
ZFZhbHVlOjpnZXRFbmNvZGVkPGZsb2F0LCBFbmNvZGVkVmFsdWU6OlNoYXBlOjpTY2FsYXI+KGNv
bnN0IFN0cmluZyYga2V5LCBmbG9hdCYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVj
dC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmpl
Y3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgcmV0dXJuIGNhc3RlZE9iamVjdC0+
Z2V0TnVtYmVyKGtleSwgJnZhbHVlKTsKK30KKwordGVtcGxhdGU8PiBib29sIEVuY29kZWRWYWx1
ZTo6Z2V0RW5jb2RlZDxpbnQzMl90LCBFbmNvZGVkVmFsdWU6OlNoYXBlOjpTY2FsYXI+KGNvbnN0
IFN0cmluZyYga2V5LCBpbnQzMl90JiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9IG1fb2JqZWN0
LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RlZE9iamVj
dElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2FzdGVkT2JqZWN0LT5n
ZXROdW1iZXIoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5jb2RlZFZhbHVl
OjpnZXRFbmNvZGVkPGludDY0X3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3Qg
U3RyaW5nJiBrZXksIGludDY0X3QmIHZhbHVlKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGNhc3RlZE9iamVjdDsKKyAgICBib29sIGNhc3RlZE9iamVjdElzTWFwID0gbV9vYmplY3Qt
PmFzT2JqZWN0KCZjYXN0ZWRPYmplY3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdGVkT2JqZWN0
SXNNYXAsIGNhc3RlZE9iamVjdElzTWFwKTsKKworICAgIHJldHVybiBjYXN0ZWRPYmplY3QtPmdl
dE51bWJlcihrZXksICZ2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPD4gYm9vbCBFbmNvZGVkVmFsdWU6
OmdldEVuY29kZWQ8dWludDMyX3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3Qg
U3RyaW5nJiBrZXksIHVpbnQzMl90JiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9IG1fb2JqZWN0
LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RlZE9iamVj
dElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2FzdGVkT2JqZWN0LT5n
ZXROdW1iZXIoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5jb2RlZFZhbHVl
OjpnZXRFbmNvZGVkPHVpbnQ2NF90LCBFbmNvZGVkVmFsdWU6OlNoYXBlOjpTY2FsYXI+KGNvbnN0
IFN0cmluZyYga2V5LCB1aW50NjRfdCYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVj
dC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmpl
Y3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgcmV0dXJuIGNhc3RlZE9iamVjdC0+
Z2V0TnVtYmVyKGtleSwgJnZhbHVlKTsKK30KKwordGVtcGxhdGU8PiBib29sIEVuY29kZWRWYWx1
ZTo6Z2V0RW5jb2RlZDx1bnNpZ25lZCBsb25nLCBFbmNvZGVkVmFsdWU6OlNoYXBlOjpTY2FsYXI+
KGNvbnN0IFN0cmluZyYga2V5LCB1bnNpZ25lZCBsb25nJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01h
cCA9IG1fb2JqZWN0LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VE
KGNhc3RlZE9iamVjdElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2Fz
dGVkT2JqZWN0LT5nZXROdW1iZXIoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wg
RW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVkPFN0cmluZywgRW5jb2RlZFZhbHVlOjpTaGFwZTo6U2Nh
bGFyPihjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjYXN0ZWRPYmplY3Q7CisgICAgYm9vbCBjYXN0ZWRPYmplY3RJc01hcCA9
IG1fb2JqZWN0LT5hc09iamVjdCgmY2FzdGVkT2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNh
c3RlZE9iamVjdElzTWFwLCBjYXN0ZWRPYmplY3RJc01hcCk7CisKKyAgICByZXR1cm4gY2FzdGVk
T2JqZWN0LT5nZXRTdHJpbmcoa2V5LCAmdmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IGJvb2wgRW5j
b2RlZFZhbHVlOjpnZXRFbmNvZGVkPHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+LCBFbmNv
ZGVkVmFsdWU6OlNoYXBlOjpNYXA+KGNvbnN0IFN0cmluZyYga2V5LCBzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2RlZFZhbHVlPiYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY2Fz
dGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBtX29iamVjdC0+YXNPYmpl
Y3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0ZWRPYmplY3RJc01hcCwg
Y2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
ID0gY2FzdGVkT2JqZWN0LT5nZXRPYmplY3Qoa2V5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFsdWUgPSBFbmNvZGVkVmFsdWU6OmFkb3B0SW5zcGVj
dG9yVmFsdWUocmVzdWx0LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBs
YXRlPD4gYm9vbCBFbmNvZGVkVmFsdWU6OmdldEVuY29kZWQ8c3RkOjp1bmlxdWVfcHRyPEVuY29k
ZWRWYWx1ZT4sIEVuY29kZWRWYWx1ZTo6U2hhcGU6Okxpc3Q+KGNvbnN0IFN0cmluZyYga2V5LCBz
dGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiYgdmFsdWUpCit7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY2FzdGVkT2JqZWN0OworICAgIGJvb2wgY2FzdGVkT2JqZWN0SXNNYXAgPSBt
X29iamVjdC0+YXNPYmplY3QoJmNhc3RlZE9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0
ZWRPYmplY3RJc01hcCwgY2FzdGVkT2JqZWN0SXNNYXApOworCisgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiByZXN1bHQgPSBjYXN0ZWRPYmplY3QtPmdldEFycmF5KGtleSk7CisgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVlID0gRW5jb2RlZFZhbHVl
OjphZG9wdEluc3BlY3RvclZhbHVlKHJlc3VsdC5yZWxlYXNlKCkpOworICAgIHJldHVybiB0cnVl
OworfQorCit9OyAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExB
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgzOWIxMjIzNDVkYmQ0NzA0NGVjZjJlZjdhMjM4OWVhNWQ1YjY5NGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oCkBAIC0w
LDAgKzEsMjQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2Fz
aGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBFbmNvZGVkVmFsdWVfaAorI2RlZmluZSBFbmNvZGVkVmFsdWVfaAorCisjaWYg
RU5BQkxFKFdFQl9SRVBMQVkpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE5vbmRldGVybWlu
aXN0aWNJbnB1dEJhc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRW5jb2RpbmdUcmFp
dHM7CisKK2NsYXNzIEVuY29kZWRWYWx1ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW5j
b2RlZFZhbHVlKTsKK3B1YmxpYzoKKyAgICBFbmNvZGVkVmFsdWUoUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPik7CisgICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIHN0ZDo6
dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGNyZWF0ZUVuY29kZWRNYXAoKTsKKyAgICBzdGF0aWMg
SlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gY3JlYXRlRW5j
b2RlZExpc3QoKTsKKyAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRy
PEVuY29kZWRWYWx1ZT4gYWRvcHRJbnNwZWN0b3JWYWx1ZShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU+KTsKKyAgICB2aXJ0dWFsIEpTX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVk
VmFsdWUoKTsKKworICAgIGVudW0gY2xhc3MgU2hhcGUgeworICAgICAgICBTY2FsYXIsCisgICAg
ICAgIE1hcCwKKyAgICAgICAgTGlzdAorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIHZvaWQgcHV0KGNvbnN0IFN0cmluZyYsIGNvbnN0IHR5cGVuYW1lIEVuY29kaW5nVHJh
aXRzPFQ+OjpEZWNvZGVkVHlwZSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIGFwcGVuZChjb25zdCB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGUm
KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIHR5
cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNvZGVkVHlwZSYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGJvb2wgZ2V0KGNvbnN0IFN0cmluZyYsIFJlZlB0cjx0eXBlbmFtZSBFbmNvZGlu
Z1RyYWl0czxUPjo6RGVjb2RlZFR5cGU+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBnZXQoY29uc3QgU3RyaW5nJiwgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIEVuY29kaW5nVHJh
aXRzPFQ+OjpEZWNvZGVkVHlwZT4mKTsKKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQor
Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZWRUeXBlPgorICAgIHZvaWQg
cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmLCBjb25zdCBFbmNvZGVkVHlwZSYpOworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2RlZFR5cGUsIFNoYXBlPgorICAgIGJvb2wgZ2V0RW5jb2RlZChj
b25zdCBTdHJpbmcmLCBEZWNvZGVkVHlwZSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2RlZFR5cGU+CisgICAgdm9pZCBhcHBlbmRFbmNvZGVkKGNvbnN0IEVuY29kZWRUeXBlJik7CisK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gbV9vYmplY3Q7Cit9OworCit0
ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVk
PGJvb2wsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wmIHJlc3VsdCk7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5jb2RlZFZh
bHVlOjpnZXRFbmNvZGVkPGRvdWJsZSwgRW5jb2RlZFZhbHVlOjpTaGFwZTo6U2NhbGFyPihjb25z
dCBTdHJpbmcmIGtleSwgZG91YmxlJiByZXN1bHQpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJ
VkFURSBib29sIEVuY29kZWRWYWx1ZTo6Z2V0RW5jb2RlZDxmbG9hdCwgRW5jb2RlZFZhbHVlOjpT
aGFwZTo6U2NhbGFyPihjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQmIHJlc3VsdCk7Cit0ZW1wbGF0
ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVkPGludDMy
X3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3QgU3RyaW5nJiBrZXksIGludDMy
X3QmIHJlc3VsdCk7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgRW5jb2RlZFZh
bHVlOjpnZXRFbmNvZGVkPGludDY0X3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29u
c3QgU3RyaW5nJiBrZXksIGludDY0X3QmIHJlc3VsdCk7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgRW5jb2RlZFZhbHVlOjpnZXRFbmNvZGVkPHVpbnQzMl90LCBFbmNvZGVkVmFs
dWU6OlNoYXBlOjpTY2FsYXI+KGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCYgcmVzdWx0KTsK
K3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBFbmNvZGVkVmFsdWU6OmdldEVuY29k
ZWQ8dWludDY0X3QsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3QgU3RyaW5nJiBr
ZXksIHVpbnQ2NF90JiByZXN1bHQpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSBib29s
IEVuY29kZWRWYWx1ZTo6Z2V0RW5jb2RlZDx1bnNpZ25lZCBsb25nLCBFbmNvZGVkVmFsdWU6OlNo
YXBlOjpTY2FsYXI+KGNvbnN0IFN0cmluZyYga2V5LCB1bnNpZ25lZCBsb25nJiByZXN1bHQpOwor
dGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSBib29sIEVuY29kZWRWYWx1ZTo6Z2V0RW5jb2Rl
ZDxTdHJpbmcsIEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcj4oY29uc3QgU3RyaW5nJiBrZXks
IFN0cmluZyYgcmVzdWx0KTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBFbmNv
ZGVkVmFsdWU6OmdldEVuY29kZWQ8c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4sIEVuY29k
ZWRWYWx1ZTo6U2hhcGU6Ok1hcD4oY29uc3QgU3RyaW5nJiwgc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZWRWYWx1ZT4mKTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBFbmNvZGVkVmFs
dWU6OmdldEVuY29kZWQ8c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4sIEVuY29kZWRWYWx1
ZTo6U2hhcGU6Okxpc3Q+KGNvbnN0IFN0cmluZyYsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFs
dWU+Jik7CisKKwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIEVuY29kZWRWYWx1
ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZWRWYWx1ZT4mKTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBFbmNvZGVk
VmFsdWU6OnB1dEVuY29kZWQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpOwordGVt
cGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgYm9vbCYpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgZG91YmxlJik7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgRW5jb2RlZFZh
bHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBmbG9hdCYpOwordGVtcGxh
dGU8PiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgaW50MzJfdCYpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIEVuY29kZWRWYWx1ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgaW50NjRfdCYpOwordGVtcGxhdGU8PiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIEVuY29kZWRW
YWx1ZTo6cHV0RW5jb2RlZChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDMyX3QmKTsKK3Rl
bXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBFbmNvZGVkVmFsdWU6OnB1dEVuY29kZWQo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ2NF90Jik7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgRW5jb2RlZFZhbHVlOjpwdXRFbmNvZGVkKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCB1bnNpZ25lZCBsb25nJik7CisKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBFbmNvZGVkVmFsdWU6OmFwcGVuZEVuY29kZWQoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZWRWYWx1ZT4mKTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBFbmNvZGVk
VmFsdWU6OmFwcGVuZEVuY29kZWQoY29uc3QgU3RyaW5nJik7Cit0ZW1wbGF0ZTw+IEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgRW5jb2RlZFZhbHVlOjphcHBlbmRFbmNvZGVkKGNvbnN0IGludDMyX3Qm
KTsKK3RlbXBsYXRlPD4gSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBFbmNvZGVkVmFsdWU6OmFwcGVu
ZEVuY29kZWQoY29uc3QgdWludDMyX3QmKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj
dCBFbmNvZGluZ1RyYWl0cyB7CisgICAgdHlwZWRlZiBUIERlY29kZWRUeXBlOworICAgIHR5cGVk
ZWYgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RlZFR5cGU7CisKKyAgICBzdGF0
aWMgRW5jb2RlZFR5cGUgZW5jb2RlVmFsdWUoUGFzc1JlZlB0cjxEZWNvZGVkVHlwZT4pOworICAg
IHN0YXRpYyBFbmNvZGVkVHlwZSBlbmNvZGVWYWx1ZShjb25zdCBEZWNvZGVkVHlwZSYpOworCisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFR5cGUmLCBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2RlZFR5cGU+Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFR5cGUm
LCBSZWZQdHI8RGVjb2RlZFR5cGU+Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5j
b2RlZFR5cGUmLCBEZWNvZGVkVHlwZSYpOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CitzdHJ1Y3QgRW5j
b2RpbmdUcmFpdHM8VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+PiB7
CisgICAgdHlwZWRlZiBWZWN0b3I8dHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRU
eXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiBEZWNvZGVkVHlwZTsKKyAgICB0
eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IEVuY29kZWRUeXBlOworICAgIHN0
YXRpYyBjb25zdCBFbmNvZGVkVmFsdWU6OlNoYXBlIFNoYXBlID0gRW5jb2RlZFZhbHVlOjpTaGFw
ZTo6TGlzdDsKKworICAgIHN0YXRpYyBFbmNvZGVkVHlwZSBlbmNvZGVWYWx1ZShjb25zdCBEZWNv
ZGVkVHlwZSYgdmVjdG9yT2ZWYWx1ZXMpCisgICAgeworICAgICAgICBFbmNvZGVkVHlwZSBlbmNv
ZGVkVmVjdG9yID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVFbmNvZGVkTGlzdCgpOworICAgICAgICBm
b3IgKGNvbnN0IHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNvZGVkVHlwZSYgdmFsdWUg
OiB2ZWN0b3JPZlZhbHVlcykKKyAgICAgICAgICAgIGVuY29kZWRWZWN0b3ItPmFwcGVuZDx0eXBl
bmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6RGVjb2RlZFR5cGU+KHZhbHVlKTsKKworICAgICAgICBy
ZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWZWN0b3IpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IGRlY29kZVZhbHVlKEVuY29kZWRUeXBlJiBlbmNvZGVkVmVjdG9yLCBEZWNvZGVkVHlwZSYgZGVj
b2RlZFZhbHVlKQorICAgIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+IGluc3BlY3RvckFycmF5ID0gZW5jb2RlZFZlY3Rvci0+aW5zcGVjdG9yVmFsdWUoKS0+YXNB
cnJheSgpOworICAgICAgICBkZWNvZGVkVmFsdWUgPSBWZWN0b3I8dHlwZW5hbWUgRW5jb2RpbmdU
cmFpdHM8VD46OkRlY29kZWRUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPihp
bnNwZWN0b3JBcnJheS0+bGVuZ3RoKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGluc3BlY3RvckFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBFbmNvZGVkVmFs
dWUgZW5jb2RlZEVsZW1lbnQoaW5zcGVjdG9yQXJyYXktPmdldChpKSk7CisgICAgICAgICAgICBp
ZiAoIUVuY29kaW5nVHJhaXRzPFQ+OjpkZWNvZGVWYWx1ZShlbmNvZGVkRWxlbWVudCwgZGVjb2Rl
ZFZhbHVlLmF0KGkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBQcmltaXRpdmVFbmNvZGluZ1RyYWl0cyB7CisgICAgdHlwZWRlZiBUIEVuY29kZWRU
eXBlOworICAgIHR5cGVkZWYgVCBEZWNvZGVkVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgRW5jb2Rl
ZFZhbHVlOjpTaGFwZSBTaGFwZSA9IEVuY29kZWRWYWx1ZTo6U2hhcGU6OlNjYWxhcjsKKworICAg
IHN0YXRpYyBFbmNvZGVkVHlwZSBlbmNvZGVWYWx1ZShjb25zdCBEZWNvZGVkVHlwZSYgZGVjb2Rl
ZFZhbHVlKSB7IHJldHVybiBkZWNvZGVkVmFsdWU7IH0KKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVW
YWx1ZShFbmNvZGVkVHlwZSYgZW5jb2RlZFZhbHVlLCBEZWNvZGVkVHlwZSYgZGVjb2RlZFZhbHVl
KQorICAgIHsKKyAgICAgICAgZGVjb2RlZFZhbHVlID0gZW5jb2RlZFZhbHVlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0
czxib29sPiA6IFByaW1pdGl2ZUVuY29kaW5nVHJhaXRzPGJvb2w+IHsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IEVuY29kaW5nVHJhaXRzPGRvdWJsZT4gOiBQcmltaXRpdmVFbmNvZGluZ1RyYWl0czxk
b3VibGU+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPGZsb2F0PiA6IFBy
aW1pdGl2ZUVuY29kaW5nVHJhaXRzPGZsb2F0PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNv
ZGluZ1RyYWl0czxpbnQzMl90PiA6IFByaW1pdGl2ZUVuY29kaW5nVHJhaXRzPGludDMyX3Q+IHsg
fTsKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPGludDY0X3Q+IDogUHJpbWl0aXZl
RW5jb2RpbmdUcmFpdHM8aW50NjRfdD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdU
cmFpdHM8dWludDMyX3Q+IDogUHJpbWl0aXZlRW5jb2RpbmdUcmFpdHM8dWludDMyX3Q+IHsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPHVpbnQ2NF90PiA6IFByaW1pdGl2ZUVu
Y29kaW5nVHJhaXRzPHVpbnQ2NF90PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1Ry
YWl0czx1bnNpZ25lZCBsb25nPiA6IFByaW1pdGl2ZUVuY29kaW5nVHJhaXRzPHVuc2lnbmVkIGxv
bmc+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPFN0cmluZz4gOiBQcmlt
aXRpdmVFbmNvZGluZ1RyYWl0czxTdHJpbmc+IHsgfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW5j
b2RpbmdUcmFpdHM8RW5jb2RlZFZhbHVlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2RlZFZhbHVlPiBEZWNvZGVkVHlwZTsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxF
bmNvZGVkVmFsdWU+IEVuY29kZWRUeXBlOworCisgICAgc3RhdGljIEVuY29kZWRUeXBlIGVuY29k
ZVZhbHVlKGNvbnN0IERlY29kZWRUeXBlJiBkZWNvZGVkVmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gRW5jb2RlZFZhbHVlOjphZG9wdEluc3BlY3RvclZhbHVlKGRlY29kZWRWYWx1ZS0+aW5z
cGVjdG9yVmFsdWUoKSk7CisgICAgfQorICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKEVuY29k
ZWRUeXBlJiBlbmNvZGVkVmFsdWUsIERlY29kZWRUeXBlJiBkZWNvZGVkVmFsdWUpCisgICAgewor
ICAgICAgICBkZWNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmFkb3B0SW5zcGVjdG9yVmFsdWUo
ZW5jb2RlZFZhbHVlLT5pbnNwZWN0b3JWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgRW5jb2RlZFZhbHVlOjpwdXQo
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNv
ZGVkVHlwZSYgdmFsdWUpCit7CisgICAgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkVuY29k
ZWRUeXBlIGVuY29kZWRWYWx1ZSA9IEVuY29kaW5nVHJhaXRzPFQ+OjplbmNvZGVWYWx1ZSh2YWx1
ZSk7CisgICAgcHV0RW5jb2RlZChrZXksIGVuY29kZWRWYWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+Cit2b2lkIEVuY29kZWRWYWx1ZTo6YXBwZW5kKGNvbnN0IHR5cGVuYW1lIEVuY29k
aW5nVHJhaXRzPFQ+OjpEZWNvZGVkVHlwZSYgdmFsdWUpCit7CisgICAgdHlwZW5hbWUgRW5jb2Rp
bmdUcmFpdHM8VD46OkVuY29kZWRUeXBlIGVuY29kZWRWYWx1ZSA9IEVuY29kaW5nVHJhaXRzPFQ+
OjplbmNvZGVWYWx1ZSh2YWx1ZSk7CisgICAgYXBwZW5kRW5jb2RlZChlbmNvZGVkVmFsdWUpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBFbmNvZGVkVmFsdWU6OmdldChjb25zdCBT
dHJpbmcmIGtleSwgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRUeXBlJiBkZWNv
ZGVkVmFsdWUpCit7CisgICAgdHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkVuY29kZWRUeXBl
IGVuY29kZWRWYWx1ZTsKKyAgICBpZiAoIWdldEVuY29kZWQ8dHlwZW5hbWUgRW5jb2RpbmdUcmFp
dHM8VD46OkVuY29kZWRUeXBlLCBFbmNvZGluZ1RyYWl0czxUPjo6U2hhcGU+KGtleSwgZW5jb2Rl
ZFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIEVuY29kaW5nVHJh
aXRzPFQ+OjpkZWNvZGVWYWx1ZShlbmNvZGVkVmFsdWUsIGRlY29kZWRWYWx1ZSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIEVuY29kZWRWYWx1ZTo6Z2V0KGNvbnN0IFN0cmluZyYg
a2V5LCBSZWZQdHI8dHlwZW5hbWUgRW5jb2RpbmdUcmFpdHM8VD46OkRlY29kZWRUeXBlPiYgZGVj
b2RlZFZhbHVlKQoreworICAgIHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpFbmNvZGVkVHlw
ZSBlbmNvZGVkVmFsdWU7CisgICAgaWYgKCFnZXRFbmNvZGVkPHR5cGVuYW1lIEVuY29kaW5nVHJh
aXRzPFQ+OjpFbmNvZGVkVHlwZSwgRW5jb2RpbmdUcmFpdHM8VD46OlNoYXBlPihrZXksIGVuY29k
ZWRWYWx1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBFbmNvZGluZ1Ry
YWl0czxUPjo6ZGVjb2RlVmFsdWUoZW5jb2RlZFZhbHVlLCBkZWNvZGVkVmFsdWUpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBFbmNvZGVkVmFsdWU6OmdldChjb25zdCBTdHJpbmcm
IGtleSwgc3RkOjp1bmlxdWVfcHRyPHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNvZGVk
VHlwZT4mIGRlY29kZWRWYWx1ZSkKK3sKKyAgICB0eXBlbmFtZSBFbmNvZGluZ1RyYWl0czxUPjo6
RW5jb2RlZFR5cGUgZW5jb2RlZFZhbHVlOworICAgIGlmICghZ2V0RW5jb2RlZDx0eXBlbmFtZSBF
bmNvZGluZ1RyYWl0czxUPjo6RW5jb2RlZFR5cGUsIEVuY29kaW5nVHJhaXRzPFQ+OjpTaGFwZT4o
a2V5LCBlbmNvZGVkVmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
RW5jb2RpbmdUcmFpdHM8VD46OmRlY29kZVZhbHVlKCplbmNvZGVkVmFsdWUsIGRlY29kZWRWYWx1
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OkVuY29kZWRWYWx1ZTsK
K3VzaW5nIEpTQzo6RW5jb2RpbmdUcmFpdHM7CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExB
WSkKKworI2VuZGlmIC8vIEVuY29kZWRWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5w
dXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJjY2JiY2ExMjU2NzVhNGQ5NjFkYzExZTIxZGYyMjI3YWQ1MGNj
NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Njcmlw
dHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQpAQCAtMCwwICsxLDk4MiBAQAorIyBDb3B5
cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUworIyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyMgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
b3MucGF0aAoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmlu
ZyBpbXBvcnQgVGVtcGxhdGUKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IGxvZ2dpbmcKK2Zyb20g
Q29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcyBpbXBvcnQgVGVtcGxhdGVzCisKK3Ry
eToKKyAgICBpbXBvcnQganNvbgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBzaW1w
bGVqc29uIGFzIGpzb24KKworIyBDb25maWd1cmF0aW9uIHZhbHVlcyBhcmUgZmlyc3QgbG9va2Vk
IHVwIGluIHRoZSBmcmFtZXdvcmsgY29uZmlndXJhdGlvbiwKKyMgYW5kIHRoZW4gaW4gdGhlIGds
b2JhbCBjb25maWd1cmF0aW9uIGlmIHRoZXJlIGlzIG5vIGZyYW1ld29yay1zcGVjaWZpYyB2YWx1
ZS4KK0dMT0JBTF9DT05GSUcgPSB7CisiYmFzZUZpbGVuYW1lIjogIlJlcGxheUlucHV0cyIsCisi
Z3VhcmRDb25kaXRpb24iOiAiRU5BQkxFKFdFQl9SRVBMQVkpIiwKKyJ0cmFpdHNGcmFtZXdvcmtO
YW1lIjogIkphdmFTY3JpcHRDb3JlIiwKKworIyBUaGVzZSBhcmUgZm9ybWF0dGVkIGFzIChbYWxs
b3dlZF9mcmFtZXdvcmtzXSwgKGZyYW1ld29yaywgaGVhZGVyX3BhdGgpKS4KKyMgVGhlIGdlbmVy
YXRvciBjYW4gZmlndXJlIG91dCBob3cgdG8gZm9ybWF0IHRoZSBpbmNsdWRlcy4KKyJoZWFkZXJJ
bmNsdWRlcyI6IFsKKyAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICgiV2ViQ29yZSIsICJyZXBs
YXkvRXZlbnRMb29wSW5wdXQuaCIpCisgICAgKSwKKyAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJX
ZWJDb3JlIl0sCisgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicmVwbGF5L0VuY29kZWRWYWx1
ZS5oIikKKyAgICApLAorICAgIChbIkphdmFTY3JpcHRDb3JlIl0sCisgICAgICAgICgiSmF2YVNj
cmlwdENvcmUiLCAicmVwbGF5L05vbmRldGVybWluaXN0aWNJbnB1dC5oIikKKyAgICApLAorICAg
IChbIldlYkNvcmUiXSwKKyAgICAgICAgKCJXVEYiLCAid3RmL3RleHQvV1RGU3RyaW5nLmgiKQor
ICAgICksCisKKyAgICAjIFRlc3RpbmcgZml4dHVyZXMuCisgICAgKFsiVGVzdCJdLAorICAgICAg
ICAoIldlYkNvcmUiLCAicGxhdGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VIZWFkZXJJbmNsdWRlRHVt
bXkuaCIpCisgICAgKSwKKyAgICAoWyJUZXN0Il0sCisgICAgICAgICgiVGVzdCIsICJwbGF0Zm9y
bS9JbnRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIikKKyAgICApCitdLAorCisi
aW1wbEluY2x1ZGVzIjogWworICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgKCJXZWJDb3JlIiwg
InJlcGxheS9SZXBsYXlJbnB1dFR5cGVzLmgiKQorICAgICksCisgICAgKFsiV2ViQ29yZSJdLAor
ICAgICAgICAoIldlYkNvcmUiLCAicmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmgiKQorICAg
ICksCisgICAgKFsiV2ViQ29yZSIsICJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAoIkphdmFT
Y3JpcHRDb3JlIiwgImluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCIpCisgICAgKSwKKyAgICAo
WyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAoIldURiIsICJ3dGYvTmV2ZXJEZXN0cm95ZWQu
aCIpCisgICAgKSwKKyAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAoIldURiIsICJ3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaCIpCisgICAgKSwKKworICAgICMgVGVzdGluZyBmaXh0dXJl
cy4KKyAgICAoWyJUZXN0Il0sCisgICAgICAgICgiV2ViQ29yZSIsICJwbGF0Zm9ybS9FeHRlcm5h
bE5hbWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaCIpCisgICAgKSwKKyAgICAoWyJUZXN0Il0sCisg
ICAgICAgICgiVGVzdCIsICJwbGF0Zm9ybS9JbnRlcm5hbE5hbWVzcGFjZUltcGxJbmNsdWRlRHVt
bXkuaCIpCisgICAgKV0KK30KKworRlJBTUVXT1JLX0NPTkZJR19NQVAgPSB7CisiR2xvYmFsIjog
eworICAgICJwcmVmaXgiOiAiIiwKKyAgICAibmFtZXNwYWNlIjogIiIgfSwKKyJKYXZhU2NyaXB0
Q29yZSI6IHsKKyAgICAicHJlZml4IjogIkpTIiwKKyAgICAibmFtZXNwYWNlIjogIkpTQyIsCisg
ICAgImV4cG9ydE1hY3JvIjogIkpTX0VYUE9SVF9QUklWQVRFIiwKKyAgICAiaW5wdXRUeXBlVGVt
cGxhdGUiOiBUZW1wbGF0ZXMuSW5wdXRUeXBlRnJvbVN0YXRpY0xvY2FsLAorfSwKKyJXZWJDb3Jl
IjogeworICAgICJwcmVmaXgiOiAiV2ViIiwKKyAgICAibmFtZXNwYWNlIjogIldlYkNvcmUiLAor
ICAgICJpbnB1dFR5cGVUZW1wbGF0ZSI6IFRlbXBsYXRlcy5JbnB1dFR5cGVGcm9tVGhyZWFkTG9j
YWwsCit9LAorIyBVc2VkIGZvciBiaW5kaW5ncyB0ZXN0cy4KKyJUZXN0IjogeworICAgICJwcmVm
aXgiOiAiVGVzdCIsCisgICAgIm5hbWVzcGFjZSI6ICJUZXN0IiwKKyAgICAiaW5wdXRUeXBlVGVt
cGxhdGUiOiBUZW1wbGF0ZXMuSW5wdXRUeXBlRnJvbVN0YXRpY0xvY2FsLAorfQorfQorCisjIFRo
ZXNlIHNldHRpbmdzIGFyZSBzcGVjaWZpYyB0byBhbiBpbnB1dCBxdWV1ZS4KK1FVRVVFX0NPTkZJ
R19NQVAgPSB7CisgICAgIlNDUklQVF9NRU1PSVpFRCI6IHsKKyAgICAgICAgImVudW1WYWx1ZSI6
ICJTY3JpcHRNZW1vaXplZERhdGEiLAorICAgICAgICAiYmFzZUNsYXNzIjogIk5vbmRldGVybWlu
aXN0aWNJbnB1dDwlcz4iLAorICAgIH0sCisgICAgIkxPQURFUl9NRU1PSVpFRCI6IHsKKyAgICAg
ICAgImVudW1WYWx1ZSI6ICJMb2FkZXJNZW1vaXplZERhdGEiLAorICAgICAgICAiYmFzZUNsYXNz
IjogIk5vbmRldGVybWluaXN0aWNJbnB1dDwlcz4iLAorICAgIH0sCisgICAgIkVWRU5UX0xPT1Ai
OiB7CisgICAgICAgICJlbnVtVmFsdWUiOiAiRXZlbnRMb29wSW5wdXQiLAorICAgICAgICAiYmFz
ZUNsYXNzIjogIkV2ZW50TG9vcElucHV0PCVzPiIsCisgICAgfSwKK30KKworVFlQRV9TSEFQRV9D
T05GSUdfTUFQID0geworICAgICJTQ0FMQVIiOiB7Im5vbmNvcHlhYmxlIjogRmFsc2V9LAorICAg
ICJNQVAiOiB7Im5vbmNvcHlhYmxlIjogVHJ1ZX0sCisgICAgIlNIQVJFRF9NQVAiOiB7Im5vbmNv
cHlhYmxlIjogRmFsc2V9LAorICAgICJMSVNUIjogeyJub25jb3B5YWJsZSI6IEZhbHNlfQorfQor
CisjIFVzZSBhIGdsb2JhbCBsb2dnZXIsIHdoaWNoIG5vcm1hbGx5IG9ubHkgbG9ncyBlcnJvcnMu
CisjIEl0IGNhbiBiZSBjb25maWd1cmVkIHRvIGxvZyBkZWJ1ZyBtZXNzYWdlcyBmcm9tIHRoZSBD
TEkuCitsb2dnaW5nLmJhc2ljQ29uZmlnKGZvcm1hdD0nJShsZXZlbG5hbWUpczogJShtZXNzYWdl
KXMnLCBsZXZlbD1sb2dnaW5nLkVSUk9SKQorbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2Jh
bCcpCisjIE1vZGVsIGNsYXNzZXMsIHdoaWNoIHRyYW5zbGl0ZXJhdGUgSlNPTiBpbnB1dC4KKwor
CitjbGFzcyBQYXJzZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBU
eXBlY2hlY2tFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgRnJhbWV3
b3JrOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fc2V0dGlu
Z3MgPSBGUkFNRVdPUktfQ09ORklHX01BUFtuYW1lXQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1l
CisKKyAgICBkZWYgc2V0dGluZyhzZWxmLCBrZXksIGRlZmF1bHQ9JycpOgorICAgICAgICByZXR1
cm4gc2VsZi5fc2V0dGluZ3MuZ2V0KGtleSwgZGVmYXVsdCkKKworICAgIEBzdGF0aWNtZXRob2QK
KyAgICBkZWYgZnJvbVN0cmluZyhmcmFtZXdvcmtTdHJpbmcpOgorICAgICAgICBpZiBmcmFtZXdv
cmtTdHJpbmcgPT0gIkdsb2JhbCI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5HbG9i
YWwKKworICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIkphdmFTY3JpcHRDb3JlIjoKKyAg
ICAgICAgICAgIHJldHVybiBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlCisKKyAgICAgICAgaWYg
ZnJhbWV3b3JrU3RyaW5nID09ICJXZWJDb3JlIjoKKyAgICAgICAgICAgIHJldHVybiBGcmFtZXdv
cmtzLldlYkNvcmUKKworICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIlRlc3QiOgorICAg
ICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuVGVzdAorCisgICAgICAgIHJhaXNlIFBhcnNlRXhj
ZXB0aW9uKCJVbmtub3duIGZyYW1ld29yazogIiArIGZyYW1ld29ya1N0cmluZykKKworCitjbGFz
cyBGcmFtZXdvcmtzOgorICAgIEdsb2JhbCA9IEZyYW1ld29yaygiR2xvYmFsIikKKyAgICBKYXZh
U2NyaXB0Q29yZSA9IEZyYW1ld29yaygiSmF2YVNjcmlwdENvcmUiKQorICAgIFdlYkNvcmUgPSBG
cmFtZXdvcmsoIldlYkNvcmUiKQorICAgIFRlc3QgPSBGcmFtZXdvcmsoIlRlc3QiKQorCisKK2Ns
YXNzIElucHV0UXVldWU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNldHRpbmdzKToKKyAgICAg
ICAgc2VsZi5fc2V0dGluZ3MgPSBzZXR0aW5ncworCisgICAgZGVmIHNldHRpbmcoc2VsZiwga2V5
LCBkZWZhdWx0PScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NldHRpbmdzLmdldChrZXksIGRl
ZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZyb21TdHJpbmcocXVldWVTdHJp
bmcpOgorICAgICAgICBpZiBxdWV1ZVN0cmluZyA9PSAiU0NSSVBUX01FTU9JWkVEIjoKKyAgICAg
ICAgICAgIHJldHVybiBJbnB1dFF1ZXVlcy5TQ1JJUFRfTUVNT0laRUQKKworICAgICAgICBpZiBx
dWV1ZVN0cmluZyA9PSAiTE9BREVSX01FTU9JWkVEIjoKKyAgICAgICAgICAgIHJldHVybiBJbnB1
dFF1ZXVlcy5MT0FERVJfTUVNT0laRUQKKworICAgICAgICBpZiBxdWV1ZVN0cmluZyA9PSAiRVZF
TlRfTE9PUCI6CisgICAgICAgICAgICByZXR1cm4gSW5wdXRRdWV1ZXMuRVZFTlRfTE9PUAorCisg
ICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJVbmtub3duIGlucHV0IHF1ZXVlOiAiICsgcXVl
dWVTdHJpbmcpCisKKworY2xhc3MgSW5wdXRRdWV1ZXM6CisgICAgU0NSSVBUX01FTU9JWkVEID0g
SW5wdXRRdWV1ZShRVUVVRV9DT05GSUdfTUFQWyJTQ1JJUFRfTUVNT0laRUQiXSkKKyAgICBMT0FE
RVJfTUVNT0laRUQgPSBJbnB1dFF1ZXVlKFFVRVVFX0NPTkZJR19NQVBbIkxPQURFUl9NRU1PSVpF
RCJdKQorICAgIEVWRU5UX0xPT1AgPSBJbnB1dFF1ZXVlKFFVRVVFX0NPTkZJR19NQVBbIkVWRU5U
X0xPT1AiXSkKKworCitjbGFzcyBJbnB1dDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwg
ZGVzY3JpcHRpb24sIHF1ZXVlU3RyaW5nLCBmbGFncywgZ3VhcmQ9Tm9uZSk6CisgICAgICAgIHNl
bGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCisg
ICAgICAgIHNlbGYucXVldWUgPSBJbnB1dFF1ZXVlLmZyb21TdHJpbmcocXVldWVTdHJpbmcpCisg
ICAgICAgIHNlbGYuX2ZsYWdzID0gZmxhZ3MKKyAgICAgICAgc2VsZi5ndWFyZCA9IGd1YXJkCisg
ICAgICAgIHNlbGYubWVtYmVycyA9IFtdICAjIG5hbWVzIHNob3VsZCBiZSB1bmlxdWUsIGJ1dCBv
cmRlcmVkLgorCisgICAgZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0PScnKToKKyAgICAg
ICAgaWYga2V5IGluIHNlbGYuX2ZsYWdzOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAg
ICAgICByZXR1cm4gc2VsZi5xdWV1ZS5zZXR0aW5nKGtleSwgZGVmYXVsdCkKKworCitjbGFzcyBJ
bnB1dE1lbWJlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVtYmVyTmFtZSwgdHlwZU5hbWUs
IGZsYWdzPVtdKToKKyAgICAgICAgc2VsZi5tZW1iZXJOYW1lID0gbWVtYmVyTmFtZQorICAgICAg
ICBzZWxmLnR5cGVOYW1lID0gdHlwZU5hbWUKKyAgICAgICAgc2VsZi5fZmxhZ3MgPSBmbGFncwor
CisgICAgZGVmIGhhc19mbGFnKHNlbGYsIGtleSwgZGVmYXVsdD0nJyk6CisgICAgICAgIHJldHVy
biBrZXkgaW4gc2VsZi5fZmxhZ3MKKworCitjbGFzcyBUeXBlU2hhcGU6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHNldHRpbmdzKToKKyAgICAgICAgc2VsZi5fc2V0dGluZ3MgPSBzZXR0aW5ncwor
CisgICAgZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0PUZhbHNlKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3NldHRpbmdzLmdldChrZXksIGRlZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9k
CisgICAgZGVmIGZyb21TdHJpbmcoc2hhcGVTdHJpbmcpOgorICAgICAgICBzaGFwZVN0cmluZyA9
IHNoYXBlU3RyaW5nLnVwcGVyKCkKKyAgICAgICAgaWYgc2hhcGVTdHJpbmcgPT0gJ1NDQUxBUic6
CisgICAgICAgICAgICByZXR1cm4gVHlwZVNoYXBlcy5TQ0FMQVIKKyAgICAgICAgaWYgc2hhcGVT
dHJpbmcgPT0gJ01BUCc6CisgICAgICAgICAgICByZXR1cm4gVHlwZVNoYXBlcy5NQVAKKyAgICAg
ICAgaWYgc2hhcGVTdHJpbmcgPT0gJ1NIQVJFRF9NQVAnOgorICAgICAgICAgICAgcmV0dXJuIFR5
cGVTaGFwZXMuU0hBUkVEX01BUAorICAgICAgICBpZiBzaGFwZVN0cmluZyA9PSAnTElTVCc6Cisg
ICAgICAgICAgICByZXR1cm4gVHlwZVNoYXBlcy5MSVNUCisKKyAgICAgICAgcmFpc2UgUGFyc2VF
eGNlcHRpb24oIlVua25vd24gdHlwZSBzaGFwZTogIiArIHNoYXBlU3RyaW5nKQorCisKK2NsYXNz
IFR5cGVTaGFwZXM6CisgICAgU0NBTEFSID0gVHlwZVNoYXBlKFRZUEVfU0hBUEVfQ09ORklHX01B
UFsiU0NBTEFSIl0pCisgICAgTUFQID0gVHlwZVNoYXBlKFRZUEVfU0hBUEVfQ09ORklHX01BUFsi
TUFQIl0pCisgICAgU0hBUkVEX01BUCA9IFR5cGVTaGFwZShUWVBFX1NIQVBFX0NPTkZJR19NQVBb
IlNIQVJFRF9NQVAiXSkKKyAgICBMSVNUID0gVHlwZVNoYXBlKFRZUEVfU0hBUEVfQ09ORklHX01B
UFsiTElTVCJdKQorCisKK2NsYXNzIFR5cGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUs
IHNoYXBlLCBmcmFtZXdvcmssIGhlYWRlciwgZW5jbG9zaW5nX2NsYXNzLCB2YWx1ZXMsIGd1YXJk
X3ZhbHVlc19tYXAsIHVuZGVybHlpbmdfc3RvcmFnZSwgZmxhZ3MpOgorICAgICAgICBzZWxmLl9u
YW1lID0gbmFtZQorICAgICAgICBzZWxmLnNoYXBlID0gc2hhcGUKKyAgICAgICAgc2VsZi5mcmFt
ZXdvcmsgPSBmcmFtZXdvcmsKKyAgICAgICAgc2VsZi5oZWFkZXIgPSBoZWFkZXIKKyAgICAgICAg
c2VsZi5lbmNsb3NpbmdfY2xhc3MgPSBlbmNsb3NpbmdfY2xhc3MKKyAgICAgICAgc2VsZi52YWx1
ZXMgPSB2YWx1ZXMKKyAgICAgICAgc2VsZi5ndWFyZF92YWx1ZXNfbWFwID0gZ3VhcmRfdmFsdWVz
X21hcAorICAgICAgICBzZWxmLnVuZGVybHlpbmdfc3RvcmFnZSA9IHVuZGVybHlpbmdfc3RvcmFn
ZQorICAgICAgICBzZWxmLl9mbGFncyA9IGZsYWdzCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90
aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lKCkgPT0gb3RoZXIudHlwZV9uYW1l
KCkgYW5kIHNlbGYuc2hhcGUgPT0gb3RoZXIuc2hhcGUKKworICAgIGRlZiBfX2hhc2hfXyhzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUuX19oYXNoX18oKQorCisgICAgZGVmIGhhc19m
bGFnKHNlbGYsIGZsYWdTdHJpbmcpOgorICAgICAgICByZXR1cm4gZmxhZ1N0cmluZyBpbiBzZWxm
Ll9mbGFncworCisgICAgZGVmIGlzX3N0cnVjdChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
aGFzX2ZsYWcoIlNUUlVDVCIpCisKKyAgICBkZWYgaXNfZW51bShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuaGFzX2ZsYWcoIkVOVU0iKQorCisgICAgZGVmIGlzX2VudW1fY2xhc3Moc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLmhhc19mbGFnKCJFTlVNX0NMQVNTIikKKworICAgIGRlZiBk
ZWNsYXJhdGlvbl9raW5kKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmlzX2VudW0oKToKKyAgICAg
ICAgICAgIHJldHVybiAiZW51bSIKKyAgICAgICAgZWxpZiBzZWxmLmlzX2VudW1fY2xhc3MoKToK
KyAgICAgICAgICAgIHJldHVybiAiZW51bSBjbGFzcyIKKyAgICAgICAgZWxpZiBzZWxmLmlzX3N0
cnVjdCgpOgorICAgICAgICAgICAgcmV0dXJuICJzdHJ1Y3QiCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICByZXR1cm4gImNsYXNzIgorCisgICAgZGVmIHF1YWxpZmllZF9wcmVmaXgoc2VsZik6
CisgICAgICAgIGNvbXBvbmVudHMgPSBbXQorICAgICAgICBpZiBzZWxmLmZyYW1ld29yayAhPSBG
cmFtZXdvcmtzLkdsb2JhbDoKKyAgICAgICAgICAgIGNvbXBvbmVudHMuYXBwZW5kKHNlbGYuZnJh
bWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpKQorICAgICAgICBpZiBzZWxmLmVuY2xvc2luZ19j
bGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNvbXBvbmVudHMuYXBwZW5kKHNlbGYuZW5j
bG9zaW5nX2NsYXNzKQorICAgICAgICBjb21wb25lbnRzLmFwcGVuZCgiIikKKyAgICAgICAgcmV0
dXJuICI6OiIuam9pbihjb21wb25lbnRzKQorCisgICAgZGVmIHR5cGVfbmFtZShzZWxmLCBxdWFs
aWZpZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gIiVzJXMiICUgKHNlbGYucXVhbGlmaWVkX3By
ZWZpeCgpLCBzZWxmLl9uYW1lKSBpZiBxdWFsaWZpZWQgZWxzZSBzZWxmLl9uYW1lCisKKyAgICBk
ZWYgc3RvcmFnZV90eXBlKHNlbGYsIHF1YWxpZmllZD1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYu
c2hhcGUgPT0gVHlwZVNoYXBlcy5TQ0FMQVI6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50eXBl
X25hbWUocXVhbGlmaWVkKQorICAgICAgICBlbGlmIHNlbGYuc2hhcGUgPT0gVHlwZVNoYXBlcy5T
SEFSRURfTUFQOgorICAgICAgICAgICAgcmV0dXJuICJSZWZQdHI8JXM+IiAlIHNlbGYudHlwZV9u
YW1lKHF1YWxpZmllZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAic3RkOjp1
bmlxdWVfcHRyPCVzPiIgJSBzZWxmLnR5cGVfbmFtZShxdWFsaWZpZWQpCisKKyAgICBkZWYgYm9y
cm93X3R5cGUoc2VsZiwgcXVhbGlmaWVkPUZhbHNlKToKKyAgICAgICAgaWYgc2VsZi5zaGFwZSA9
PSBUeXBlU2hhcGVzLlNDQUxBUjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnR5cGVfbmFtZShx
dWFsaWZpZWQpCisgICAgICAgIGVsaWYgc2VsZi5zaGFwZSA9PSBUeXBlU2hhcGVzLlNIQVJFRF9N
QVA6CisgICAgICAgICAgICByZXR1cm4gIlBhc3NSZWZQdHI8JXM+IiAlIHNlbGYudHlwZV9uYW1l
KHF1YWxpZmllZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiY29uc3QgJXMm
IiAlIHNlbGYudHlwZV9uYW1lKHF1YWxpZmllZCkKKworICAgIGRlZiBhcmd1bWVudF90eXBlKHNl
bGYsIHF1YWxpZmllZD1GYWxzZSk6CisgICAgICAgIGlmIHNlbGYuc2hhcGUgPT0gVHlwZVNoYXBl
cy5TSEFSRURfTUFQOgorICAgICAgICAgICAgcmV0dXJuICJQYXNzUmVmUHRyPCVzPiIgJSBzZWxm
LnR5cGVfbmFtZShxdWFsaWZpZWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5zdG9yYWdlX3R5cGUoKQorCisKK2RlZiBjaGVja19wcm9wZXJ0aWVzKHByb3BzLCBvYmos
IHdoYXQpOgorICAgIGZvciBwcm9wIGluIHByb3BzOgorICAgICAgICBpZiBwcm9wIG5vdCBpbiBv
Ymo6CisgICAgICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiV2hlbiBwYXJzaW5nICVzLCBy
ZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiAlcyIgJSAod2hhdCwgcHJvcCkpCisKKworY2xhc3Mg
VmVjdG9yVHlwZShUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZWxlbWVudF90eXBlKToK
KyAgICAgICAgc2VsZi5fZWxlbWVudF90eXBlID0gZWxlbWVudF90eXBlCisgICAgICAgIHNlbGYu
c2hhcGUgPSBUeXBlU2hhcGVzLkxJU1QKKyAgICAgICAgc2VsZi5mcmFtZXdvcmsgPSBlbGVtZW50
X3R5cGUuZnJhbWV3b3JrCisgICAgICAgIHNlbGYuZW5jbG9zaW5nX2NsYXNzID0gTm9uZQorCisg
ICAgZGVmIGhhc19mbGFnKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBp
c19zdHJ1Y3Qoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2VudW0o
c2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX2VudW1fY2xhc3Moc2Vs
Zik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHF1YWxpZmllZF9wcmVmaXgoc2Vs
Zik6CisgICAgICAgIHJldHVybiAiIgorCisgICAgZGVmIHR5cGVfbmFtZShzZWxmLCBxdWFsaWZp
ZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gIlZlY3Rvcjwlcz4iICUgc2VsZi5fZWxlbWVudF90
eXBlLnR5cGVfbmFtZShxdWFsaWZpZWQ9cXVhbGlmaWVkKQorCisgICAgZGVmIHN0b3JhZ2VfdHlw
ZShzZWxmLCBxdWFsaWZpZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gc2VsZi50eXBlX25hbWUo
cXVhbGlmaWVkPXF1YWxpZmllZCkKKworICAgIGRlZiBib3Jyb3dfdHlwZShzZWxmLCBxdWFsaWZp
ZWQ9RmFsc2UpOgorICAgICAgICByZXR1cm4gImNvbnN0ICVzJiIgJSBzZWxmLnR5cGVfbmFtZShx
dWFsaWZpZWQ9cXVhbGlmaWVkKQorCisgICAgZGVmIGFyZ3VtZW50X3R5cGUoc2VsZiwgcXVhbGlm
aWVkPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9uYW1lKHF1YWxpZmllZD1xdWFs
aWZpZWQpICsgIiYiCisKKworY2xhc3MgSW5wdXRzTW9kZWw6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBhcnNlZF9qc29uKToKKyAgICAgICAgc2VsZi5pbnB1dHMgPSBbXQorICAgICAgICBzZWxm
LnR5cGVzID0gW10KKworICAgICAgICAjIFR5cGVzIGhhdmUgYXNzb2NpYXRlZCBmcmFtZXdvcmtz
IGFuZCBhcmUgaW4gdGhlaXIgbmFtZXNwYWNlLCBidXQgd2l0aGluIHRoZSBzcGVjaWZpY2F0aW9u
CisgICAgICAgICMgZmlsZSB0eXBlcyBhcmUgaW4gYSBmbGF0IG5hbWVzcGFjZS4gVHlwZXMgd2l0
aCB0aGUgc2FtZSBuYW1lIGFyZSBub3QgYWxsb3dlZC4KKyAgICAgICAgc2VsZi50eXBlc19ieV9u
YW1lID0ge30KKyAgICAgICAgc2VsZi5pbnB1dHNfYnlfbmFtZSA9IHt9CisKKyAgICAgICAgc2Vs
Zi5wYXJzZV90b3BsZXZlbChwYXJzZWRfanNvbikKKworICAgIGRlZiBlbnVtX3R5cGVzKHNlbGYp
OgorICAgICAgICBfZW51bXMgPSBmaWx0ZXIobGFtYmRhIHg6IHguaXNfZW51bSgpIG9yIHguaXNf
ZW51bV9jbGFzcygpLCBzZWxmLnR5cGVzKQorICAgICAgICByZXR1cm4gc29ydGVkKF9lbnVtcywg
a2V5PWxhbWJkYSBfZW51bTogX2VudW0udHlwZV9uYW1lKCkpCisKKyAgICBkZWYgZ2V0X3R5cGVf
Zm9yX21lbWJlcihzZWxmLCBtZW1iZXIpOgorICAgICAgICBpZiBtZW1iZXIuaGFzX2ZsYWcoIlZF
Q1RPUiIpOgorICAgICAgICAgICAgcmV0dXJuIFZlY3RvclR5cGUoc2VsZi50eXBlc19ieV9uYW1l
LmdldChtZW1iZXIudHlwZU5hbWUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
IHNlbGYudHlwZXNfYnlfbmFtZS5nZXQobWVtYmVyLnR5cGVOYW1lKQorCisgICAgZGVmIHBhcnNl
X3RvcGxldmVsKHNlbGYsIGpzb24pOgorICAgICAgICBjaGVja19wcm9wZXJ0aWVzKFsndHlwZXMn
LCAnaW5wdXRzJ10sIGpzb24sICd0b3BsZXZlbCcpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KGpzb25bJ3R5cGVzJ10sIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24o
Ik1hbGZvcm1lZCBzcGVjaWZpY2F0aW9uOiB0eXBlcyBpcyBub3QgYSBkaWN0IG9mIGZyYW1ld29y
ay0+dHlwZSBsaXN0IikKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShqc29uWydpbnB1dHMn
XSwgbGlzdCk6CisgICAgICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiTWFsZm9ybWVkIHNw
ZWNpZmljYXRpb246IGlucHV0cyBpcyBub3QgYW4gYXJyYXkiKQorCisgICAgICAgIGZvciB0eV9m
cmFtZXdvcmtfbmFtZSwgdHlfbGlzdCBpbiBqc29uWyd0eXBlcyddLml0ZXJpdGVtcygpOgorICAg
ICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodHlfbGlzdCwgbGlzdCk6CisgICAgICAgICAgICAg
ICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIk1hbGZvcm1lZCBzcGVjaWZpY2F0aW9uOiB0eXBlIGxp
c3QgZm9yIGZyYW1ld29yayAlcyBpcyBub3QgYSBsaXN0IiAlIHR5X2ZyYW1ld29ya19uYW1lKQor
CisgICAgICAgICAgICBmb3IgX3R5IGluIHR5X2xpc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5w
YXJzZV90eXBlX3dpdGhfZnJhbWV3b3JrX25hbWUoX3R5LCB0eV9mcmFtZXdvcmtfbmFtZSkKKwor
ICAgICAgICBmb3IgdmFsIGluIGpzb25bJ2lucHV0cyddOgorICAgICAgICAgICAgc2VsZi5wYXJz
ZV9pbnB1dCh2YWwpCisKKyAgICBkZWYgcGFyc2VfdHlwZV93aXRoX2ZyYW1ld29ya19uYW1lKHNl
bGYsIGpzb24sIGZyYW1ld29ya19uYW1lKToKKyAgICAgICAgY2hlY2tfcHJvcGVydGllcyhbJ25h
bWUnLCAnc2hhcGUnXSwganNvbiwgJ3R5cGUnKQorICAgICAgICBmcmFtZXdvcmsgPSBGcmFtZXdv
cmsuZnJvbVN0cmluZyhmcmFtZXdvcmtfbmFtZSkKKyAgICAgICAgaWYgZnJhbWV3b3JrIGlzIG5v
dCBGcmFtZXdvcmtzLkdsb2JhbDoKKyAgICAgICAgICAgIGNoZWNrX3Byb3BlcnRpZXMoWydoZWFk
ZXInXSwganNvbiwgJ25vbi1nbG9iYWwgdHlwZScpCisKKyAgICAgICAgX3R5cGUgPSBUeXBlKGpz
b25bJ25hbWUnXSwgVHlwZVNoYXBlLmZyb21TdHJpbmcoanNvblsnc2hhcGUnXSksIGZyYW1ld29y
aywganNvbi5nZXQoJ2hlYWRlcicsIE5vbmUpLCBqc29uLmdldCgnZW5jbG9zaW5nX2NsYXNzJywg
Tm9uZSksIGpzb24uZ2V0KCd2YWx1ZXMnKSwganNvbi5nZXQoJ2d1YXJkZWRfdmFsdWVzJywge30p
LCBqc29uLmdldCgnc3RvcmFnZScpLCBqc29uLmdldCgnZmxhZ3MnLCBbXSkpCisgICAgICAgIGlm
IF90eXBlLmlzX2VudW0oKSBvciBfdHlwZS5pc19lbnVtX2NsYXNzKCk6CisgICAgICAgICAgICBj
aGVja19wcm9wZXJ0aWVzKFsndmFsdWVzJ10sIGpzb24sICdlbnVtJykKKyAgICAgICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKGpzb25bJ3ZhbHVlcyddLCBsaXN0KSBvciBsZW4oX3R5cGUudmFsdWVz
KSA9PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJNYWxmb3JtZWQg
c3BlY2lmaWNhdGlvbjogZW51bSB0eXBlIGRvZXMgbm90IHN1cHBseSBhIGxpc3Qgb2YgdmFsdWVz
IikKKworICAgICAgICAgICAgaWYgX3R5cGUuaXNfZW51bSgpIGFuZCAic3RvcmFnZSIgbm90IGlu
IGpzb246CisgICAgICAgICAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIkMtc3R5bGUgZW51
bXMgbXVzdCBhbHNvIHNwZWNpZnkgdGhlaXIgc3RvcmFnZSB0eXBlIHNvIHRoZXkgY2FuIGJlIGZv
cndhcmQgZGVjbGFyZWQuIikKKworICAgICAgICBzZWxmLnR5cGVzLmFwcGVuZChfdHlwZSkKKwor
ICAgIGRlZiBwYXJzZV9pbnB1dChzZWxmLCBqc29uKToKKyAgICAgICAgY2hlY2tfcHJvcGVydGll
cyhbJ25hbWUnLCAnZGVzY3JpcHRpb24nLCAncXVldWUnLCAnbWVtYmVycyddLCBqc29uLCAnaW5w
dXQnKQorICAgICAgICBfaW5wdXQgPSBJbnB1dChqc29uWyduYW1lJ10sIGpzb25bJ2Rlc2NyaXB0
aW9uJ10sIGpzb25bJ3F1ZXVlJ10sIGpzb24uZ2V0KCdmbGFncycsIFtdKSwganNvbi5nZXQoJ2d1
YXJkJywgTm9uZSkpCisgICAgICAgIGlmIGlzaW5zdGFuY2UoanNvblsnbWVtYmVycyddLCBsaXN0
KToKKyAgICAgICAgICAgIGZvciBtZW1iZXIgaW4ganNvblsnbWVtYmVycyddOgorICAgICAgICAg
ICAgICAgIGNoZWNrX3Byb3BlcnRpZXMoWyduYW1lJywgJ3R5cGUnXSwgbWVtYmVyLCAnbWVtYmVy
JykKKyAgICAgICAgICAgICAgICBfaW5wdXQubWVtYmVycy5hcHBlbmQoSW5wdXRNZW1iZXIobWVt
YmVyWyduYW1lJ10sIG1lbWJlclsndHlwZSddLCBtZW1iZXIuZ2V0KCdmbGFncycsIFtdKSkpCisK
KyAgICAgICAgc2VsZi5pbnB1dHMuYXBwZW5kKF9pbnB1dCkKKworICAgICMgVHlwZXMgY2Fubm90
ICh5ZXQpIHJlZmVyZW5jZSBvdGhlciB0eXBlcywKKyAgICAjIHNvIHdlIGNhbiBjaGVjayByZWZl
cmVuY2VzIGluIG9uZSBwYXNzLgorICAgIGRlZiB0eXBlY2hlY2soc2VsZik6CisgICAgICAgIGZv
ciBfdHlwZSBpbiBzZWxmLnR5cGVzOgorICAgICAgICAgICAgc2VsZi50eXBlY2hlY2tfdHlwZShf
dHlwZSkKKworICAgICAgICBmb3IgX2lucHV0IGluIHNlbGYuaW5wdXRzOgorICAgICAgICAgICAg
c2VsZi50eXBlY2hlY2tfaW5wdXQoX2lucHV0KQorCisgICAgZGVmIHR5cGVjaGVja190eXBlKHNl
bGYsIF90eXBlKToKKyAgICAgICAgbG9nLmRlYnVnKCJ0eXBlY2hlY2sgdHlwZSAiICsgX3R5cGUu
dHlwZV9uYW1lKCkpCisKKyAgICAgICAgaWYgX3R5cGUudHlwZV9uYW1lKCkgaW4gc2VsZi50eXBl
c19ieV9uYW1lOgorICAgICAgICAgICAgcmFpc2UgVHlwZWNoZWNrRXhjZXB0aW9uKCJEdXBsaWNh
dGUgdHlwZSB3aXRoIG5hbWU6ICIgKyBfdHlwZS50eXBlX25hbWUoKSkKKworICAgICAgICBzZWxm
LnR5cGVzX2J5X25hbWVbX3R5cGUudHlwZV9uYW1lKCldID0gX3R5cGUKKworICAgIGRlZiB0eXBl
Y2hlY2tfaW5wdXQoc2VsZiwgX2lucHV0KToKKyAgICAgICAgbG9nLmRlYnVnKCJ0eXBlY2hlY2sg
aW5wdXQgIiArIF9pbnB1dC5uYW1lKQorCisgICAgICAgIGlmIF9pbnB1dC5uYW1lIGluIHNlbGYu
aW5wdXRzX2J5X25hbWU6CisgICAgICAgICAgICByYWlzZSBUeXBlY2hlY2tFeGNlcHRpb24oIkR1
cGxpY2F0ZSBpbnB1dCB3aXRoIG5hbWU6ICIgKyBfaW5wdXQubmFtZSkKKworICAgICAgICBzZWVu
X21lbWJlcnMgPSB7fQorCisgICAgICAgIGZvciBtZW1iZXIgaW4gX2lucHV0Lm1lbWJlcnM6Cisg
ICAgICAgICAgICBpZiBtZW1iZXIubWVtYmVyTmFtZSBpbiBzZWVuX21lbWJlcnM6CisgICAgICAg
ICAgICAgICAgcmFpc2UgVHlwZWNoZWNrRXhjZXB0aW9uKCJEdXBsaWNhdGUgaW5wdXQgbWVtYmVy
IHdpdGggbmFtZTogIiArIG1lbWJlci5tZW1iZXJOYW1lKQorCisgICAgICAgICAgICBzZWxmLnR5
cGVjaGVja19pbnB1dF9tZW1iZXIobWVtYmVyKQorICAgICAgICAgICAgc2Vlbl9tZW1iZXJzW21l
bWJlci5tZW1iZXJOYW1lXSA9IG1lbWJlcgorCisgICAgICAgIHNlbGYuaW5wdXRzX2J5X25hbWVb
X2lucHV0Lm5hbWVdID0gX2lucHV0CisKKyAgICBkZWYgdHlwZWNoZWNrX2lucHV0X21lbWJlcihz
ZWxmLCBpbnB1dF9tZW1iZXIpOgorICAgICAgICBsb2cuZGVidWcoInR5cGVjaGVjayBtZW1iZXIg
IiArIGlucHV0X21lbWJlci5tZW1iZXJOYW1lKQorCisgICAgICAgIGlmIGlucHV0X21lbWJlci50
eXBlTmFtZSBub3QgaW4gc2VsZi50eXBlc19ieV9uYW1lOgorICAgICAgICAgICAgcmFpc2UgVHlw
ZWNoZWNrRXhjZXB0aW9uKCJVbmtub3duIHR5cGUgJXMgcmVmZXJlbmNlZCBpbiBtZW1iZXIgJXMi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5wdXRfbWVtYmVyLnR5cGVOYW1lLCBp
bnB1dF9tZW1iZXIubWVtYmVyTmFtZSkpCisKKworIyBBIHdyaXRlciB0aGF0IG9ubHkgdXBkYXRl
cyBmaWxlIGlmIGl0IGFjdHVhbGx5IGNoYW5nZWQuCitjbGFzcyBJbmNyZW1lbnRhbEZpbGVXcml0
ZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpOgorICAg
ICAgICBzZWxmLl9maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIHNlbGYuX291dHB1dCA9ICIi
CisgICAgICAgIHNlbGYuZm9yY2Vfb3V0cHV0ID0gZm9yY2Vfb3V0cHV0CisKKyAgICBkZWYgd3Jp
dGUoc2VsZiwgdGV4dCk6CisgICAgICAgIHNlbGYuX291dHB1dCArPSB0ZXh0CisKKyAgICBkZWYg
Y2xvc2Uoc2VsZik6CisgICAgICAgIHRleHRfY2hhbmdlZCA9IFRydWUKKyAgICAgICAgc2VsZi5f
b3V0cHV0ID0gc2VsZi5fb3V0cHV0LnJzdHJpcCgpICsgIlxuIgorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHJlYWRfZmlsZSA9IG9wZW4oc2VsZi5fZmlsZXBhdGgsICJyIikKKyAgICAgICAg
ICAgIG9sZF90ZXh0ID0gcmVhZF9maWxlLnJlYWQoKQorICAgICAgICAgICAgcmVhZF9maWxlLmNs
b3NlKCkKKyAgICAgICAgICAgIHRleHRfY2hhbmdlZCA9IG9sZF90ZXh0ICE9IHNlbGYuX291dHB1
dAorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIElnbm9yZSwganVzdCBvdmVyd3JpdGUg
YnkgZGVmYXVsdAorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHRleHRfY2hhbmdlZCBv
ciBzZWxmLmZvcmNlX291dHB1dDoKKyAgICAgICAgICAgIG91dF9maWxlID0gb3BlbihzZWxmLl9m
aWxlcGF0aCwgInciKQorICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc2VsZi5fb3V0cHV0KQor
ICAgICAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQorCisKK2RlZiBsY2ZpcnN0KHMpOgorICAgIHJl
dHVybiBzWzBdLmxvd2VyKCkgKyBzWzE6XQorCisKK2RlZiB3cmFwX3dpdGhfZ3VhcmQoY29udGVu
dHMsIGNvbmRpdGlvbj1Ob25lKToKKyAgICBpZiBjb25kaXRpb24gaXMgTm9uZToKKyAgICAgICAg
cmV0dXJuIGNvbnRlbnRzCisKKyAgICByZXR1cm4gIlxuIi5qb2luKFsKKyAgICAgICAgIiNpZiAl
cyIgJSBjb25kaXRpb24sCisgICAgICAgIGNvbnRlbnRzLAorICAgICAgICAiI2VuZGlmIC8vICVz
IiAlIGNvbmRpdGlvbgorICAgIF0pCisKKworY2xhc3MgR2VuZXJhdG9yOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtb2RlbCwgdGFyZ2V0X2ZyYW1ld29ya19uYW1lLCBpbnB1dF9maWxlcGF0aCwg
b3V0cHV0X3ByZWZpeCk6CisgICAgICAgIHNlbGYuX21vZGVsID0gbW9kZWwKKyAgICAgICAgc2Vs
Zi50YXJnZXRfZnJhbWV3b3JrID0gRnJhbWV3b3JrLmZyb21TdHJpbmcodGFyZ2V0X2ZyYW1ld29y
a19uYW1lKQorICAgICAgICBzZWxmLnRyYWl0c19mcmFtZXdvcmsgPSBGcmFtZXdvcmsuZnJvbVN0
cmluZyhzZWxmLnNldHRpbmcoJ3RyYWl0c0ZyYW1ld29ya05hbWUnKSkKKyAgICAgICAgc2VsZi5f
aW5wdXRfZmlsZXBhdGggPSBpbnB1dF9maWxlcGF0aAorICAgICAgICBzZWxmLl9vdXRwdXRfcHJl
Zml4ID0gb3V0cHV0X3ByZWZpeAorCisgICAgZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0
PScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0X2ZyYW1ld29yay5zZXR0aW5nKGtleSwg
R0xPQkFMX0NPTkZJRy5nZXQoa2V5LCBkZWZhdWx0KSkKKworICAgICMgVGhpcyBkb2VzIG5vdCBh
Y2NvdW50IGZvciBhbnkgZmlsZW5hbWUgbWFuZ2xpbmcgcGVyZm9ybWVkIG9uIGJlaGFsZiBvZiB0
aGUgdGVzdCBoYXJuZXNzLgorICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZiwgZXh0ZW5zaW9u
PU5vbmUpOgorICAgICAgICBjb21wb25lbnRzID0gW10KKyAgICAgICAgaWYgbGVuKHNlbGYuX291
dHB1dF9wcmVmaXgpID4gMDoKKyAgICAgICAgICAgIGNvbXBvbmVudHMuZXh0ZW5kKFtzZWxmLl9v
dXRwdXRfcHJlZml4LCAnLSddKQorCisgICAgICAgIGNvbXBvbmVudHMuZXh0ZW5kKFtzZWxmLnNl
dHRpbmcoJ3ByZWZpeCcpLCBzZWxmLnNldHRpbmcoJ2Jhc2VGaWxlbmFtZScpXSkKKworICAgICAg
ICBpZiBleHRlbnNpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjb21wb25lbnRzLmV4dGVu
ZChbJy4nLCBleHRlbnNpb25dKQorCisgICAgICAgIHJldHVybiAiIi5qb2luKGNvbXBvbmVudHMp
CisKKyAgICBkZWYgd3JpdGVfb3V0cHV0X2ZpbGVzKHNlbGYsIF9kaXIsIGZvcmNlPUZhbHNlKToK
KyAgICAgICAgaGVhZF9maWxlID0gSW5jcmVtZW50YWxGaWxlV3JpdGVyKG9zLnBhdGguam9pbihf
ZGlyLCBzZWxmLm91dHB1dF9maWxlbmFtZSgnaCcpKSwgZm9yY2UpCisgICAgICAgIGltcGxfZmls
ZSA9IEluY3JlbWVudGFsRmlsZVdyaXRlcihvcy5wYXRoLmpvaW4oX2Rpciwgc2VsZi5vdXRwdXRf
ZmlsZW5hbWUoJ2NwcCcpKSwgZm9yY2UpCisKKyAgICAgICAgaGVhZF9maWxlLndyaXRlKHNlbGYu
Z2VuZXJhdGVfaGVhZGVyKCkpCisgICAgICAgIGltcGxfZmlsZS53cml0ZShzZWxmLmdlbmVyYXRl
X2ltcGxlbWVudGF0aW9uKCkpCisKKyAgICAgICAgaGVhZF9maWxlLmNsb3NlKCkKKyAgICAgICAg
aW1wbF9maWxlLmNsb3NlKCkKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXIoc2VsZik6CisgICAg
ICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdsaWNlbnNlQmxvY2snOiBz
ZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSwKKyAgICAgICAgICAgICdoZWFkZXJfZ3VhcmQnOiByZS5z
dWIoJ1suLy1dJywgJ18nLCBzZWxmLm91dHB1dF9maWxlbmFtZSgpICsgIi5oIiksCisgICAgICAg
ICAgICAnZ3VhcmRDb25kaXRpb24nOiBzZWxmLnNldHRpbmcoJ2d1YXJkQ29uZGl0aW9uJyksCisg
ICAgICAgICAgICAndHJhaXRzTmFtZXNwYWNlJzogc2VsZi50cmFpdHNfZnJhbWV3b3JrLnNldHRp
bmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2lucHV0c05hbWVzcGFjZSc6IHNlbGYudGFy
Z2V0X2ZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdpbmNsdWRl
cyc6IHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXMoZGVmYXVsdHM9c2VsZi5zZXR0aW5nKCdoZWFkZXJJ
bmNsdWRlcycpKSwKKyAgICAgICAgICAgICd0eXBlRm9yd2FyZERlY2xhcmF0aW9ucyc6IHNlbGYu
Z2VuZXJhdGVfdHlwZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpLAorICAgICAgICAgICAgJ2lucHV0
Rm9yd2FyZERlY2xhcmF0aW9ucyc6ICJcbiIuam9pbihbd3JhcF93aXRoX2d1YXJkKCJjbGFzcyAl
czsiLCBfaW5wdXQuZ3VhcmQpICUgX2lucHV0Lm5hbWUgZm9yIF9pbnB1dCBpbiBzZWxmLl9tb2Rl
bC5pbnB1dHNdKSwKKyAgICAgICAgICAgICdpbnB1dENsYXNzRGVjbGFyYXRpb25zJzogIlxuXG4i
LmpvaW4oW3NlbGYuZ2VuZXJhdGVfY2xhc3NfZGVjbGFyYXRpb24oX2lucHV0KSBmb3IgX2lucHV0
IGluIHNlbGYuX21vZGVsLmlucHV0c10pLAorICAgICAgICAgICAgJ2lucHV0VHJhaXREZWNsYXJh
dGlvbnMnOiAiXG5cbiIuam9pbihbc2VsZi5nZW5lcmF0ZV9pbnB1dF90cmFpdF9kZWNsYXJhdGlv
bihfaW5wdXQpIGZvciBfaW5wdXQgaW4gc2VsZi5fbW9kZWwuaW5wdXRzXSksCisgICAgICAgICAg
ICAnZW51bVRyYWl0RGVjbGFyYXRpb25zJzogIlxuXG4iLmpvaW4oW3NlbGYuZ2VuZXJhdGVfZW51
bV90cmFpdF9kZWNsYXJhdGlvbihfdHlwZSkgZm9yIF90eXBlIGluIHNlbGYuX21vZGVsLmVudW1f
dHlwZXMoKV0pLAorICAgICAgICAgICAgJ2ZvckVhY2hNYWNybyc6IHNlbGYuZ2VuZXJhdGVfZm9y
X2VhY2hfbWFjcm8oKSwKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBUZW1wbGF0ZShUZW1w
bGF0ZXMuSGVhZGVyU2tlbGV0b24pLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKQorCisg
ICAgZGVmIGdlbmVyYXRlX2ltcGxlbWVudGF0aW9uKHNlbGYpOgorICAgICAgICB0ZW1wbGF0ZV9h
cmd1bWVudHMgPSB7CisgICAgICAgICAgICAnbGljZW5zZUJsb2NrJzogc2VsZi5nZW5lcmF0ZV9s
aWNlbnNlKCksCisgICAgICAgICAgICAnZmlsZW5hbWUnOiBzZWxmLm91dHB1dF9maWxlbmFtZSgp
LAorICAgICAgICAgICAgJ2d1YXJkQ29uZGl0aW9uJzogc2VsZi5zZXR0aW5nKCdndWFyZENvbmRp
dGlvbicpLAorICAgICAgICAgICAgJ3RyYWl0c05hbWVzcGFjZSc6IHNlbGYudHJhaXRzX2ZyYW1l
d29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdpbnB1dHNOYW1lc3BhY2Un
OiBzZWxmLnRhcmdldF9mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAg
ICAnaW5jbHVkZXMnOiBzZWxmLmdlbmVyYXRlX2luY2x1ZGVzKGRlZmF1bHRzPXNlbGYuc2V0dGlu
ZygnaW1wbEluY2x1ZGVzJyksIGluY2x1ZGVzX2Zvcl90eXBlcz1UcnVlKSwKKyAgICAgICAgICAg
ICdpbnB1dENsYXNzSW1wbGVtZW50YXRpb25zJzogIlxuXG4iLmpvaW4oW3NlbGYuZ2VuZXJhdGVf
Y2xhc3NfaW1wbGVtZW50YXRpb24oX2lucHV0KSBmb3IgX2lucHV0IGluIHNlbGYuX21vZGVsLmlu
cHV0c10pLAorICAgICAgICAgICAgJ2lucHV0VHJhaXRJbXBsZW1lbnRhdGlvbnMnOiAiXG5cbiIu
am9pbihbc2VsZi5nZW5lcmF0ZV9pbnB1dF90cmFpdF9pbXBsZW1lbnRhdGlvbihfaW5wdXQpIGZv
ciBfaW5wdXQgaW4gc2VsZi5fbW9kZWwuaW5wdXRzXSksCisgICAgICAgICAgICAnZW51bVRyYWl0
SW1wbGVtZW50YXRpb25zJzogIlxuXG4iLmpvaW4oW3NlbGYuZ2VuZXJhdGVfZW51bV90cmFpdF9p
bXBsZW1lbnRhdGlvbihfdHlwZSkgZm9yIF90eXBlIGluIHNlbGYuX21vZGVsLmVudW1fdHlwZXMo
KV0pLAorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFRlbXBsYXRlKFRlbXBsYXRlcy5JbXBs
ZW1lbnRhdGlvblNrZWxldG9uKS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykKKworICAg
IGRlZiBnZW5lcmF0ZV9saWNlbnNlKHNlbGYpOgorICAgICAgICByZXR1cm4gVGVtcGxhdGUoVGVt
cGxhdGVzLkNvcHlyaWdodEJsb2NrKS5zdWJzdGl0dXRlKE5vbmUsIGlucHV0RmlsZW5hbWU9b3Mu
cGF0aC5iYXNlbmFtZShzZWxmLl9pbnB1dF9maWxlcGF0aCkpCisKKyAgICBkZWYgZ2VuZXJhdGVf
aW5jbHVkZXMoc2VsZiwgZGVmYXVsdHM9W10sIGluY2x1ZGVzX2Zvcl90eXBlcz1GYWxzZSk6Cisg
ICAgICAgIGxpbmVzID0gc2V0KCkKKworICAgICAgICBmb3IgX3R5cGUgaW4gc2VsZi5fbW9kZWwu
dHlwZXM6CisgICAgICAgICAgICBpZiBfdHlwZS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5HbG9i
YWw6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgRm9yIFBhc3NSZWZQ
dHInZCB0eXBlcywgd2UgcmV2ZXJzZSB3aGVuIHRvIGluY2x1ZGUgdGhlIGhlYWRlcgorICAgICAg
ICAgICAgIyBzbyB0aGF0IH5QYXNzUmVmUHRyPFQ+IGlzIGF2YWlsYWJsZSBpbiB0aGUgaGVhZGVy
IGZpbGUuCisgICAgICAgICAgICBpbmNsdWRlX2Zvcl9wYXNzcmVmcHRyID0gX3R5cGUuc2hhcGUg
aXMgVHlwZVNoYXBlcy5TSEFSRURfTUFQCisgICAgICAgICAgICBpbmNsdWRlX2Zvcl9lbmNsb3Np
bmdfY2xhc3MgPSBfdHlwZS5pc19lbnVtKCkgYW5kIF90eXBlLmVuY2xvc2luZ19jbGFzcyBpcyBu
b3QgTm9uZQorICAgICAgICAgICAgaWYgKG5vdCBpbmNsdWRlc19mb3JfdHlwZXMpIF4gKGluY2x1
ZGVfZm9yX3Bhc3NyZWZwdHIgb3IgaW5jbHVkZV9mb3JfZW5jbG9zaW5nX2NsYXNzKToKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBzZWxmLnRhcmdldF9mcmFtZXdv
cmsgIT0gX3R5cGUuZnJhbWV3b3JrOgorICAgICAgICAgICAgICAgIGxpbmVzLmFkZCgiI2luY2x1
ZGUgPCVzPiIgJSBfdHlwZS5oZWFkZXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIGxpbmVzLmFkZCgiI2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5hbWUoX3R5cGUu
aGVhZGVyKSkKKworICAgICAgICBmb3IgZW50cnkgaW4gZGVmYXVsdHM6CisgICAgICAgICAgICAo
YWxsb3dlZF9mcmFtZXdvcmtfbmFtZXMsIGRhdGEpID0gZW50cnkKKyAgICAgICAgICAgIChmcmFt
ZXdvcmtfbmFtZSwgaGVhZGVyX3BhdGgpID0gZGF0YQorCisgICAgICAgICAgICBpZiBzZWxmLnRh
cmdldF9mcmFtZXdvcmsubmFtZSBub3QgaW4gYWxsb3dlZF9mcmFtZXdvcmtfbmFtZXM6CisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHNlbGYudGFyZ2V0X2ZyYW1ld29y
ay5uYW1lICE9IGZyYW1ld29ya19uYW1lOgorICAgICAgICAgICAgICAgIGxpbmVzLmFkZCgiI2lu
Y2x1ZGUgPCVzPiIgJSBoZWFkZXJfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgbGluZXMuYWRkKCIjaW5jbHVkZSBcIiVzXCIiICUgb3MucGF0aC5iYXNlbmFtZShoZWFk
ZXJfcGF0aCkpCisKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihzb3J0ZWQobGlzdChsaW5lcykp
KQorCisgICAgZGVmIGdlbmVyYXRlX3R5cGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6Cisg
ICAgICAgIGxpbmVzID0gW10KKworICAgICAgICBkZWNsc19ieV9mcmFtZXdvcmsgPSB7fQorICAg
ICAgICBmcmFtZXdvcmtzID0gW0ZyYW1ld29yay5mcm9tU3RyaW5nKHMpIGZvciBzIGluIEZSQU1F
V09SS19DT05GSUdfTUFQLmtleXMoKSBpZiBzICE9IEZyYW1ld29ya3MuR2xvYmFsLm5hbWVdCisg
ICAgICAgIGZvciBmcmFtZXdvcmsgaW4gZnJhbWV3b3JrczoKKyAgICAgICAgICAgIGRlY2xzX2J5
X2ZyYW1ld29ya1tmcmFtZXdvcmtdID0gW10KKworICAgICAgICBmb3IgX3R5cGUgaW4gc2VsZi5f
bW9kZWwudHlwZXM6CisgICAgICAgICAgICBpZiBfdHlwZS5mcmFtZXdvcmsgbm90IGluIGZyYW1l
d29ya3M6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIF90eXBlLmVu
Y2xvc2luZ19jbGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICAgICAgaWYgX3R5cGUuaXNfZW51bSgpOgorICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9u
ID0gImVudW0gJXMgOiAlczsiICUgKF90eXBlLnR5cGVfbmFtZSgpLCBfdHlwZS51bmRlcmx5aW5n
X3N0b3JhZ2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9u
ID0gIiVzICVzOyIgJSAoX3R5cGUuZGVjbGFyYXRpb25fa2luZCgpLCBfdHlwZS50eXBlX25hbWUo
KSkKKyAgICAgICAgICAgIGRlY2xzX2J5X2ZyYW1ld29ya1tfdHlwZS5mcmFtZXdvcmtdLmFwcGVu
ZChkZWNsYXJhdGlvbikKKworICAgICAgICAjIERlY2xhcmUgYWxsIG5hbWVzcGFjZXMgZXhwbGlj
aXRseSwgZXZlbiBpZiBpdCdzIHRoZSBtYWluIG5hbWVzcGFjZS4KKyAgICAgICAgZm9yIGZyYW1l
d29yayBpbiBmcmFtZXdvcmtzOgorICAgICAgICAgICAgaWYgbGVuKGRlY2xzX2J5X2ZyYW1ld29y
a1tmcmFtZXdvcmtdKSA9PSAwOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgIGRlY2xzX2J5X2ZyYW1ld29ya1tmcmFtZXdvcmtdLnNvcnQoKQorICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCJuYW1lc3BhY2UgJXMgeyIgJSBmcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNl
JykpCisgICAgICAgICAgICBsaW5lcy5leHRlbmQoZGVjbHNfYnlfZnJhbWV3b3JrW2ZyYW1ld29y
a10pCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIn0iKQorICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCIiKQorCisgICAgICAgIHJldHVybiAiXG4iLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2Vu
ZXJhdGVfY2xhc3NfZGVjbGFyYXRpb24oc2VsZiwgX2lucHV0KToKKworICAgICAgICBleHRyYV9k
ZWNsYXJhdGlvbnMgPSBbXQorICAgICAgICBpZiBfaW5wdXQucXVldWUgPT0gSW5wdXRRdWV1ZXMu
RVZFTlRfTE9PUDoKKyAgICAgICAgICAgIGV4dHJhX2RlY2xhcmF0aW9ucy5leHRlbmQoWworICAg
ICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIgICAgLy8gRXZlbnRMb29wSW5wdXQg
QVBJIiwKKyAgICAgICAgICAgICAgICAiICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlD
b250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7IiwKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAg
ICAgIGlmIF9pbnB1dC5zZXR0aW5nKCdDUkVBVEVfRlJPTV9QQUdFJyk6CisgICAgICAgICAgICAg
ICAgZXh0cmFfZGVjbGFyYXRpb25zLmV4dGVuZChbCisgICAgICAgICAgICAgICAgICAgICIgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjwlcz4gY3JlYXRlRnJvbVBhZ2UoY29uc3QgUGFnZSYpOyIg
JSBfaW5wdXQubmFtZQorICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgbWVtYmVyX2dldHRl
cnMgPSBbc2VsZi5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfZ2V0dGVyKF9tZW1iZXIpIGZvciBfbWVt
YmVyIGluIF9pbnB1dC5tZW1iZXJzXQorCisgICAgICAgIG1lbWJlcl9kZWNsYXJhdGlvbnMgPSBb
c2VsZi5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfZGVjbGFyYXRpb24oX21lbWJlcikgZm9yIF9tZW1i
ZXIgaW4gX2lucHV0Lm1lbWJlcnNdCisgICAgICAgIGlmIGxlbihtZW1iZXJfZGVjbGFyYXRpb25z
KSA+IDA6CisgICAgICAgICAgICBtZW1iZXJfZGVjbGFyYXRpb25zLmluc2VydCgwLCAicHJpdmF0
ZToiKQorCisgICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdpbnB1
dENvbnN0cnVjdG9yJzogc2VsZi5nZW5lcmF0ZV9pbnB1dF9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlv
bihfaW5wdXQpLAorICAgICAgICAgICAgJ2lucHV0RGVzdHJ1Y3Rvcic6IHNlbGYuZ2VuZXJhdGVf
aW5wdXRfZGVzdHJ1Y3Rvcl9kZWNsYXJhdGlvbihfaW5wdXQpLAorICAgICAgICAgICAgJ2lucHV0
TmFtZSc6IF9pbnB1dC5uYW1lLAorICAgICAgICAgICAgJ2lucHV0UXVldWUnOiBfaW5wdXQuc2V0
dGluZygnZW51bVZhbHVlJyksCisgICAgICAgICAgICAnYmFzZUNsYXNzJzogX2lucHV0LnNldHRp
bmcoJ2Jhc2VDbGFzcycpICUgX2lucHV0Lm5hbWUsCisgICAgICAgICAgICAnZXh0cmFEZWNsYXJh
dGlvbnMnOiAiXG4iLmpvaW4oZXh0cmFfZGVjbGFyYXRpb25zKSwKKyAgICAgICAgICAgICdtZW1i
ZXJHZXR0ZXJzJzogIlxuIi5qb2luKG1lbWJlcl9nZXR0ZXJzKSwKKyAgICAgICAgICAgICdtZW1i
ZXJEZWNsYXJhdGlvbnMnOiAiXG4iLmpvaW4obWVtYmVyX2RlY2xhcmF0aW9ucyksCisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gd3JhcF93aXRoX2d1YXJkKFRlbXBsYXRlKFRlbXBsYXRlcy5J
bnB1dENsYXNzRGVjbGFyYXRpb24pLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSwgX2lu
cHV0Lmd1YXJkKQorCisgICAgZGVmIGdlbmVyYXRlX2lucHV0X2NvbnN0cnVjdG9yX2RlY2xhcmF0
aW9uKHNlbGYsIF9pbnB1dCk6CisgICAgICAgIGZvcm1hbHNfbGlzdCA9IHNlbGYuZ2VuZXJhdGVf
Y29uc3RydWN0b3JfZm9ybWFsc19saXN0KF9pbnB1dCkKKyAgICAgICAgdGVybXMgPSBbXQorICAg
ICAgICBpZiBzZWxmLnNldHRpbmcoJ2V4cG9ydE1hY3JvJyk6CisgICAgICAgICAgICB0ZXJtcy5h
cHBlbmQoc2VsZi5zZXR0aW5nKCdleHBvcnRNYWNybycpKQorICAgICAgICB0ZXJtcy5hcHBlbmQo
IiVzKCVzKSIgJSAoX2lucHV0Lm5hbWUsIGZvcm1hbHNfbGlzdCkpCisgICAgICAgIHJldHVybiAi
ICAgICVzOyIgJSAiICIuam9pbih0ZXJtcykKKworICAgIGRlZiBnZW5lcmF0ZV9pbnB1dF9kZXN0
cnVjdG9yX2RlY2xhcmF0aW9uKHNlbGYsIF9pbnB1dCk6CisgICAgICAgIHJldHVybiAiICAgIHZp
cnR1YWwgfiVzKCk7IiAlIF9pbnB1dC5uYW1lCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfbWVt
YmVyX2dldHRlcihzZWxmLCBfbWVtYmVyKToKKyAgICAgICAgbWVtYmVyX3R5cGUgPSBzZWxmLl9t
b2RlbC5nZXRfdHlwZV9mb3JfbWVtYmVyKF9tZW1iZXIpCisgICAgICAgIHJldHVybiAiICAgICVz
ICVzKCkgY29uc3QgeyByZXR1cm4gJXM7IH0iICUgKG1lbWJlcl90eXBlLmJvcnJvd190eXBlKCks
IF9tZW1iZXIubWVtYmVyTmFtZSwgc2VsZi5nZW5lcmF0ZV9tZW1iZXJfYm9ycm93X2V4cHJlc3Np
b24oX21lbWJlcikpCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfbWVtYmVyX2RlY2xhcmF0aW9u
KHNlbGYsIF9tZW1iZXIpOgorICAgICAgICBtZW1iZXJfdHlwZSA9IHNlbGYuX21vZGVsLmdldF90
eXBlX2Zvcl9tZW1iZXIoX21lbWJlcikKKyAgICAgICAgcmV0dXJuICIgICAgJXMgbV8lczsiICUg
KG1lbWJlcl90eXBlLnN0b3JhZ2VfdHlwZSgpLCBfbWVtYmVyLm1lbWJlck5hbWUpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfaW5wdXRfbWVtYmVyX3R1cGxlcyhzZWxmLCBfaW5wdXQpOgorICAgICAgICBy
ZXR1cm4gWyhfbWVtYmVyLCBzZWxmLl9tb2RlbC5nZXRfdHlwZV9mb3JfbWVtYmVyKF9tZW1iZXIp
KSBmb3IgX21lbWJlciBpbiBfaW5wdXQubWVtYmVyc10KKworICAgIGRlZiBxdWFsaWZpZWRfaW5w
dXRfbmFtZShzZWxmLCBfaW5wdXQpOgorICAgICAgICBpZiBzZWxmLnRhcmdldF9mcmFtZXdvcmsg
PT0gc2VsZi50cmFpdHNfZnJhbWV3b3JrOgorICAgICAgICAgICAgcmV0dXJuIF9pbnB1dC5uYW1l
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIiVzOjolcyIgJSAoc2VsZi50YXJn
ZXRfZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLCBfaW5wdXQubmFtZSkKKworICAgIGRl
ZiBnZW5lcmF0ZV9pbnB1dF90cmFpdF9kZWNsYXJhdGlvbihzZWxmLCBfaW5wdXQpOgorICAgICAg
ICBkZWNsX3R5cGUgPSBbJ3N0cnVjdCddCisgICAgICAgIGlmIGxlbihzZWxmLnNldHRpbmcoJ2V4
cG9ydE1hY3JvJykpID4gMDoKKyAgICAgICAgICAgIGRlY2xfdHlwZS5hcHBlbmQoc2VsZi5zZXR0
aW5nKCdleHBvcnRNYWNybycpKQorCisgICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAg
ICAgICAgICAgICdzdHJ1Y3RPckNsYXNzJzogIiAiLmpvaW4oZGVjbF90eXBlKSwKKyAgICAgICAg
ICAgICdxdWV1ZVR5cGUnOiBfaW5wdXQucXVldWUuc2V0dGluZygnZW51bVZhbHVlJyksCisgICAg
ICAgICAgICAncXVhbGlmaWVkSW5wdXROYW1lJzogc2VsZi5xdWFsaWZpZWRfaW5wdXRfbmFtZShf
aW5wdXQpLAorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHdyYXBfd2l0aF9ndWFyZChUZW1w
bGF0ZShUZW1wbGF0ZXMuSW5wdXRUcmFpdHNEZWNsYXJhdGlvbikuc3Vic3RpdHV0ZSh0ZW1wbGF0
ZV9hcmd1bWVudHMpLCBfaW5wdXQuZ3VhcmQpCisKKyAgICBkZWYgZ2VuZXJhdGVfZW51bV90cmFp
dF9kZWNsYXJhdGlvbihzZWxmLCBfdHlwZSk6CisgICAgICAgIHNob3VsZF9xdWFsaWZ5X3R5cGUg
PSBfdHlwZS5mcmFtZXdvcmsgIT0gc2VsZi50cmFpdHNfZnJhbWV3b3JrCisgICAgICAgIHRlbXBs
YXRlID0gVGVtcGxhdGVzLkVudW1UcmFpdERlY2xhcmF0aW9uIGlmIF90eXBlLmlzX2VudW0oKSBl
bHNlIFRlbXBsYXRlcy5FbnVtQ2xhc3NUcmFpdERlY2xhcmF0aW9uCisgICAgICAgIHRlbXBsYXRl
X2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdlbnVtTmFtZSc6IF90eXBlLnR5cGVfbmFtZShx
dWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlwZSksCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IFRlbXBsYXRlKHRlbXBsYXRlKS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykKKworICAg
IGRlZiBnZW5lcmF0ZV9mb3JfZWFjaF9tYWNybyhzZWxmKToKKyAgICAgICAgbWFjcm9fbmFtZSA9
ICIlc19SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0giICUgc2VsZi5zZXR0aW5nKCdwcmVmaXgn
KS51cHBlcigpCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVm
aW5lICVzKG1hY3JvKSBcXCIgJSBtYWNyb19uYW1lKQorICAgICAgICBsaW5lcy5leHRlbmQoWyIg
ICAgbWFjcm8oJXMpIFxcIiAlIF9pbnB1dC5uYW1lIGZvciBfaW5wdXQgaW4gc2VsZi5fbW9kZWwu
aW5wdXRzXSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgXFwiKQorICAgICAgICBsaW5lcy5h
cHBlbmQoIi8vIGVuZCBvZiAlcyIgJSBtYWNyb19uYW1lKQorICAgICAgICByZXR1cm4gIlxuIi5q
b2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVyYXRlX2NsYXNzX2ltcGxlbWVudGF0aW9uKHNlbGYs
IF9pbnB1dCk6CisgICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAgICAgICAgICAgICdp
bnB1dE5hbWUnOiBfaW5wdXQubmFtZSwKKyAgICAgICAgICAgICdpbnB1dHNOYW1lc3BhY2UnOiBz
ZWxmLnRhcmdldF9mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAn
aW5pdGlhbGl6ZXJMaXN0Jzogc2VsZi5nZW5lcmF0ZV9jb25zdHJ1Y3Rvcl9pbml0aWFsaXplcl9s
aXN0KF9pbnB1dCksCisgICAgICAgICAgICAnY29uc3RydWN0b3JGb3JtYWxzTGlzdCc6IHNlbGYu
Z2VuZXJhdGVfY29uc3RydWN0b3JfZm9ybWFsc19saXN0KF9pbnB1dCksCisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gd3JhcF93aXRoX2d1YXJkKFRlbXBsYXRlKFRlbXBsYXRlcy5JbnB1dENs
YXNzSW1wbGVtZW50YXRpb24pLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSwgX2lucHV0
Lmd1YXJkKQorCisgICAgZGVmIGdlbmVyYXRlX2VudW1fdHJhaXRfaW1wbGVtZW50YXRpb24oc2Vs
ZiwgX3R5cGUpOgorICAgICAgICBzaG91bGRfcXVhbGlmeV90eXBlID0gX3R5cGUuZnJhbWV3b3Jr
ICE9IHNlbGYudHJhaXRzX2ZyYW1ld29yaworICAgICAgICBwcmVmaXhfY29tcG9uZW50cyA9IFtd
CisgICAgICAgIGlmIHNob3VsZF9xdWFsaWZ5X3R5cGU6CisgICAgICAgICAgICBwcmVmaXhfY29t
cG9uZW50cy5hcHBlbmQoX3R5cGUuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpKQorICAg
ICAgICBpZiBfdHlwZS5pc19lbnVtX2NsYXNzKCk6CisgICAgICAgICAgICBwcmVmaXhfY29tcG9u
ZW50cy5hcHBlbmQoX3R5cGUudHlwZV9uYW1lKCkpCisgICAgICAgIGlmIF90eXBlLmVuY2xvc2lu
Z19jbGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHByZWZpeF9jb21wb25lbnRzLmFwcGVu
ZChfdHlwZS5lbmNsb3NpbmdfY2xhc3MpCisgICAgICAgIHByZWZpeF9jb21wb25lbnRzLmFwcGVu
ZCgiIikKKyAgICAgICAgZW51bV9wcmVmaXggPSAiOjoiLmpvaW4ocHJlZml4X2NvbXBvbmVudHMp
CisgICAgICAgIGVuY29kZUxpbmVzID0gW10KKworICAgICAgICBpZiBfdHlwZS5pc19lbnVtKCk6
CisgICAgICAgICAgICBlbmNvZGVfdGVtcGxhdGUgPSBUZW1wbGF0ZXMuRW51bUVuY29kZUNhc2UK
KyAgICAgICAgICAgIGRlY29kZV90ZW1wbGF0ZSA9IFRlbXBsYXRlcy5FbnVtRGVjb2RlQ2FzZQor
ICAgICAgICAgICAgZW51bV90cmFpdF90ZW1wbGF0ZSA9IFRlbXBsYXRlcy5FbnVtVHJhaXRJbXBs
ZW1lbnRhdGlvbgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5jb2RlX3RlbXBsYXRlID0g
VGVtcGxhdGVzLkVudW1DbGFzc0VuY29kZUNhc2UKKyAgICAgICAgICAgIGRlY29kZV90ZW1wbGF0
ZSA9IFRlbXBsYXRlcy5FbnVtQ2xhc3NEZWNvZGVDYXNlCisgICAgICAgICAgICBlbnVtX3RyYWl0
X3RlbXBsYXRlID0gVGVtcGxhdGVzLkVudW1DbGFzc1RyYWl0SW1wbGVtZW50YXRpb24KKworICAg
ICAgICAjIEdlbmVyYXRlIGJvZHkgZm9yIGVuY29kZS4KKyAgICAgICAgZm9yIF92YWx1ZSBpbiBf
dHlwZS52YWx1ZXM6CisgICAgICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMgPSB7CisgICAgICAg
ICAgICAgICAgJ2VudW1TdHJpbmdWYWx1ZSc6IF92YWx1ZSwKKyAgICAgICAgICAgICAgICAncXVh
bGlmaWVkRW51bVZhbHVlJzogIiVzJXMiICUgKGVudW1fcHJlZml4LCBfdmFsdWUpLAorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZW5jb2RlTGluZXMuYXBwZW5kKFRlbXBsYXRlKGVuY29kZV90
ZW1wbGF0ZSkuc3Vic3RpdHV0ZSh0ZW1wbGF0ZV9hcmd1bWVudHMpKQorCisgICAgICAgIGZvciBn
dWFyZCwgZ3VhcmRfdmFsdWVzIGluIF90eXBlLmd1YXJkX3ZhbHVlc19tYXAuaXRlcml0ZW1zKCk6
CisgICAgICAgICAgICBndWFyZGVkTGluZXMgPSBbXQorICAgICAgICAgICAgZm9yIGd1YXJkX3Zh
bHVlIGluIGd1YXJkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMg
PSB7CisgICAgICAgICAgICAgICAgICAgICdlbnVtU3RyaW5nVmFsdWUnOiBndWFyZF92YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgJ3F1YWxpZmllZEVudW1WYWx1ZSc6ICIlcyVzIiAlIChlbnVt
X3ByZWZpeCwgZ3VhcmRfdmFsdWUpLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBndWFyZGVkTGluZXMuYXBwZW5kKFRlbXBsYXRlKGVuY29kZV90ZW1wbGF0ZSkuc3Vic3RpdHV0
ZSh0ZW1wbGF0ZV9hcmd1bWVudHMpKQorICAgICAgICAgICAgZW5jb2RlTGluZXMuYXBwZW5kKHdy
YXBfd2l0aF9ndWFyZCgiXG4iLmpvaW4oZ3VhcmRlZExpbmVzKSwgZ3VhcmQpKQorCisgICAgICAg
ICMgR2VuZXJhdGUgYm9keSBmb3IgZGVjb2RlLgorICAgICAgICBkZWNvZGVMaW5lcyA9IFtdCisg
ICAgICAgIGZvciBfdmFsdWUgaW4gX3R5cGUudmFsdWVzOgorICAgICAgICAgICAgdGVtcGxhdGVf
YXJndW1lbnRzID0geworICAgICAgICAgICAgICAgICdlbnVtU3RyaW5nVmFsdWUnOiBfdmFsdWUs
CisgICAgICAgICAgICAgICAgJ3F1YWxpZmllZEVudW1WYWx1ZSc6ICIlcyVzIiAlIChlbnVtX3By
ZWZpeCwgX3ZhbHVlKSwKKyAgICAgICAgICAgICAgICAncXVhbGlmaWVkRW51bU5hbWUnOiBfdHlw
ZS50eXBlX25hbWUocXVhbGlmaWVkPXNob3VsZF9xdWFsaWZ5X3R5cGUpCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZWNvZGVMaW5lcy5hcHBlbmQoVGVtcGxhdGUoZGVjb2RlX3RlbXBsYXRl
KS5zdWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykpCisKKyAgICAgICAgZm9yIGd1YXJkLCBn
dWFyZF92YWx1ZXMgaW4gX3R5cGUuZ3VhcmRfdmFsdWVzX21hcC5pdGVyaXRlbXMoKToKKyAgICAg
ICAgICAgIGd1YXJkZWRMaW5lcyA9IFtdCisgICAgICAgICAgICBmb3IgZ3VhcmRfdmFsdWUgaW4g
Z3VhcmRfdmFsdWVzOgorICAgICAgICAgICAgICAgIHRlbXBsYXRlX2FyZ3VtZW50cyA9IHsKKyAg
ICAgICAgICAgICAgICAgICAgJ2VudW1TdHJpbmdWYWx1ZSc6IGd1YXJkX3ZhbHVlLAorICAgICAg
ICAgICAgICAgICAgICAncXVhbGlmaWVkRW51bVZhbHVlJzogIiVzJXMiICUgKGVudW1fcHJlZml4
LCBndWFyZF92YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICdxdWFsaWZpZWRFbnVtTmFtZSc6
IF90eXBlLnR5cGVfbmFtZShxdWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlwZSkKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZ3VhcmRlZExpbmVzLmFwcGVuZChUZW1wbGF0ZShk
ZWNvZGVfdGVtcGxhdGUpLnN1YnN0aXR1dGUodGVtcGxhdGVfYXJndW1lbnRzKSkKKyAgICAgICAg
ICAgIGRlY29kZUxpbmVzLmFwcGVuZCh3cmFwX3dpdGhfZ3VhcmQoIlxuIi5qb2luKGd1YXJkZWRM
aW5lcyksIGd1YXJkKSkKKworICAgICAgICB0ZW1wbGF0ZV9hcmd1bWVudHMgPSB7CisgICAgICAg
ICAgICAnZW51bU5hbWUnOiBfdHlwZS50eXBlX25hbWUocXVhbGlmaWVkPXNob3VsZF9xdWFsaWZ5
X3R5cGUpLAorICAgICAgICAgICAgJ2VuY29kZUNhc2VzJzogIlxuIi5qb2luKGVuY29kZUxpbmVz
KSwKKyAgICAgICAgICAgICdkZWNvZGVDYXNlcyc6ICJcbiIuam9pbihkZWNvZGVMaW5lcykKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBUZW1wbGF0ZShlbnVtX3RyYWl0X3RlbXBsYXRlKS5z
dWJzdGl0dXRlKHRlbXBsYXRlX2FyZ3VtZW50cykKKworICAgIGRlZiBnZW5lcmF0ZV9pbnB1dF90
cmFpdF9pbXBsZW1lbnRhdGlvbihzZWxmLCBfaW5wdXQpOgorICAgICAgICB0ZW1wbGF0ZV9hcmd1
bWVudHMgPSB7CisgICAgICAgICAgICAnaW5wdXRzTmFtZXNwYWNlJzogc2VsZi50YXJnZXRfZnJh
bWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2lucHV0VHlwZUltcGxl
bWVudGF0aW9uJzogVGVtcGxhdGUoc2VsZi5zZXR0aW5nKCdpbnB1dFR5cGVUZW1wbGF0ZScpKS5z
dWJzdGl0dXRlKE5vbmUsIGlucHV0TmFtZT1faW5wdXQubmFtZSksCisgICAgICAgICAgICAncXVh
bGlmaWVkSW5wdXROYW1lJzogc2VsZi5xdWFsaWZpZWRfaW5wdXRfbmFtZShfaW5wdXQpLAorICAg
ICAgICAgICAgJ2NvbnN0cnVjdG9yQXJndW1lbnRzJzogc2VsZi5nZW5lcmF0ZV9jb25zdHJ1Y3Rv
cl9hcmd1bWVudHNfbGlzdChfaW5wdXQpLAorICAgICAgICAgICAgJ2NvbnN0cnVjdG9yRm9ybWFs
c0xpc3QnOiBzZWxmLmdlbmVyYXRlX2NvbnN0cnVjdG9yX2Zvcm1hbHNfbGlzdChfaW5wdXQpLAor
ICAgICAgICAgICAgJ2VuY29kZVN0ZXBzJzogc2VsZi5nZW5lcmF0ZV9pbnB1dF9lbmNvZGVfaW1w
bGVtZW50YXRpb24oX2lucHV0KSwKKyAgICAgICAgICAgICdkZWNvZGVTdGVwcyc6IHNlbGYuZ2Vu
ZXJhdGVfaW5wdXRfZGVjb2RlX2ltcGxlbWVudGF0aW9uKF9pbnB1dCksCisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHdyYXBfd2l0aF9ndWFyZChUZW1wbGF0ZShUZW1wbGF0ZXMuSW5wdXRUcmFp
dHNJbXBsZW1lbnRhdGlvbikuc3Vic3RpdHV0ZSh0ZW1wbGF0ZV9hcmd1bWVudHMpLCBfaW5wdXQu
Z3VhcmQpCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfZW5jb2RlX2ltcGxlbWVudGF0aW9uKHNl
bGYsIF9pbnB1dCk6CisgICAgICAgIHN0ZXBzID0gW10KKyAgICAgICAgZm9yIChfbWVtYmVyLCBf
dHlwZSkgaW4gc2VsZi5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfdHVwbGVzKF9pbnB1dCk6CisgICAg
ICAgICAgICBzaG91bGRfcXVhbGlmeV90eXBlID0gX3R5cGUuZnJhbWV3b3JrICE9IHNlbGYudHJh
aXRzX2ZyYW1ld29yaworICAgICAgICAgICAgcHV0X21ldGhvZCA9ICJwdXQ8JXM+IiAlIF90eXBl
LnR5cGVfbmFtZShxdWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlwZSkKKworICAgICAgICAgICAg
c3RlcHMuZXh0ZW5kKFsKKyAgICAgICAgICAgICAgICAiICAgIGVuY29kZWRWYWx1ZS4lcyhBU0NJ
SUxpdGVyYWwoXCIlc1wiKSwgaW5wdXQuJXMoKSk7IiAlIChwdXRfbWV0aG9kLCBfbWVtYmVyLm1l
bWJlck5hbWUsIF9tZW1iZXIubWVtYmVyTmFtZSkKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAg
aWYgbGVuKHN0ZXBzKSA9PSAwOgorICAgICAgICAgICAgc3RlcHMuZXh0ZW5kKFsKKyAgICAgICAg
ICAgICAgICAiICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkVmFsdWUpOyIsCisgICAgICAgICAgICAg
ICAgIiAgICBVTlVTRURfUEFSQU0oaW5wdXQpOyIsCisgICAgICAgICAgICBdKQorCisgICAgICAg
IHJldHVybiAiXG4iLmpvaW4oc3RlcHMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaW5wdXRfZGVjb2Rl
X2ltcGxlbWVudGF0aW9uKHNlbGYsIF9pbnB1dCk6CisgICAgICAgIHN0ZXBzID0gW10KKyAgICAg
ICAgZm9yIChfbWVtYmVyLCBfdHlwZSkgaW4gc2VsZi5nZW5lcmF0ZV9pbnB1dF9tZW1iZXJfdHVw
bGVzKF9pbnB1dCk6CisgICAgICAgICAgICBzaG91bGRfcXVhbGlmeV90eXBlID0gX3R5cGUuZnJh
bWV3b3JrICE9IHNlbGYudHJhaXRzX2ZyYW1ld29yaworICAgICAgICAgICAgZ2V0X21ldGhvZCA9
ICJnZXQ8JXM+IiAlIF90eXBlLnR5cGVfbmFtZShxdWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlw
ZSkKKworICAgICAgICAgICAgbGluZXMgPSBbCisgICAgICAgICAgICAgICAgIiAgICAlcyAlczsi
ICUgKF90eXBlLnN0b3JhZ2VfdHlwZShxdWFsaWZpZWQ9c2hvdWxkX3F1YWxpZnlfdHlwZSksIF9t
ZW1iZXIubWVtYmVyTmFtZSksCisgICAgICAgICAgICAgICAgIiAgICBpZiAoIWVuY29kZWRWYWx1
ZS4lcyhBU0NJSUxpdGVyYWwoXCIlc1wiKSwgJXMpKSIgJSAoZ2V0X21ldGhvZCwgX21lbWJlci5t
ZW1iZXJOYW1lLCBfbWVtYmVyLm1lbWJlck5hbWUpLAorICAgICAgICAgICAgICAgICIgICAgICAg
IHJldHVybiBmYWxzZTsiLAorICAgICAgICAgICAgICAgICIiCisgICAgICAgICAgICBdCisKKyAg
ICAgICAgICAgIHN0ZXBzLmFwcGVuZCgiXG4iLmpvaW4obGluZXMpKQorCisgICAgICAgIGlmIGxl
bihzdGVwcykgPT0gMDoKKyAgICAgICAgICAgIHN0ZXBzLmV4dGVuZChbCisgICAgICAgICAgICAg
ICAgIiAgICBVTlVTRURfUEFSQU0oZW5jb2RlZFZhbHVlKTsiLAorICAgICAgICAgICAgXSkKKwor
ICAgICAgICByZXR1cm4gIlxuIi5qb2luKHN0ZXBzKQorCisgICAgZGVmIGdlbmVyYXRlX2NvbnN0
cnVjdG9yX2luaXRpYWxpemVyX2xpc3Qoc2VsZiwgX2lucHV0KToKKyAgICAgICAgaW5pdGlhbGl6
ZXJzID0gW10KKyAgICAgICAgaW5pdGlhbGl6ZXJzLmFwcGVuZCgiICAgIDogJXMoKSIgJSAoX2lu
cHV0LnNldHRpbmcoJ2Jhc2VDbGFzcycpICUgX2lucHV0Lm5hbWUpKQorICAgICAgICBmb3IgX21l
bWJlciBpbiBfaW5wdXQubWVtYmVyczoKKyAgICAgICAgICAgIGluaXRpYWxpemVycy5hcHBlbmQo
IiAgICAsIG1fJXMoJXMpIiAlIChfbWVtYmVyLm1lbWJlck5hbWUsIHNlbGYuZ2VuZXJhdGVfbWVt
YmVyX21vdmVfZXhwcmVzc2lvbihfbWVtYmVyKSkpCisKKyAgICAgICAgcmV0dXJuICJcbiIuam9p
bihpbml0aWFsaXplcnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfY29uc3RydWN0b3JfZm9ybWFsc19s
aXN0KHNlbGYsIF9pbnB1dCk6CisgICAgICAgIG1lbWJlcl90dXBsZXMgPSBzZWxmLmdlbmVyYXRl
X2lucHV0X21lbWJlcl90dXBsZXMoX2lucHV0KQorICAgICAgICByZXR1cm4gIiwgIi5qb2luKFsi
JXMgJXMiICUgKF90eXBlLmFyZ3VtZW50X3R5cGUoKSwgX21lbWJlci5tZW1iZXJOYW1lKSBmb3Ig
KF9tZW1iZXIsIF90eXBlKSBpbiBtZW1iZXJfdHVwbGVzXSkKKworICAgIGRlZiBnZW5lcmF0ZV9t
ZW1iZXJfYm9ycm93X2V4cHJlc3Npb24oc2VsZiwgX21lbWJlcik6CisgICAgICAgIF90eXBlID0g
c2VsZi5fbW9kZWwuZ2V0X3R5cGVfZm9yX21lbWJlcihfbWVtYmVyKQorICAgICAgICBleHByZXNz
aW9uID0gIm1fJXMiICUgX21lbWJlci5tZW1iZXJOYW1lCisgICAgICAgIGlmIF90eXBlLnNoYXBl
LnNldHRpbmcoJ25vbmNvcHlhYmxlJyk6CisgICAgICAgICAgICBleHByZXNzaW9uID0gIioiICsg
ZXhwcmVzc2lvbgorCisgICAgICAgIHJldHVybiBleHByZXNzaW9uCisKKyAgICBkZWYgZ2VuZXJh
dGVfbWVtYmVyX21vdmVfZXhwcmVzc2lvbihzZWxmLCBfbWVtYmVyKToKKyAgICAgICAgX3R5cGUg
PSBzZWxmLl9tb2RlbC5nZXRfdHlwZV9mb3JfbWVtYmVyKF9tZW1iZXIpCisgICAgICAgIGlmIF90
eXBlLnNoYXBlLnNldHRpbmcoJ25vbmNvcHlhYmxlJyk6CisgICAgICAgICAgICByZXR1cm4gInN0
ZDo6bW92ZSglcykiICUgX21lbWJlci5tZW1iZXJOYW1lCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICByZXR1cm4gX21lbWJlci5tZW1iZXJOYW1lCisKKyAgICBkZWYgZ2VuZXJhdGVfY29uc3Ry
dWN0b3JfYXJndW1lbnRzX2xpc3Qoc2VsZiwgX2lucHV0KToKKyAgICAgICAgcmV0dXJuICIsICIu
am9pbihbc2VsZi5nZW5lcmF0ZV9tZW1iZXJfbW92ZV9leHByZXNzaW9uKF9tZW1iZXIpIGZvciBf
bWVtYmVyIGluIF9pbnB1dC5tZW1iZXJzXSkKKworCitkZWYgZ2VuZXJhdGVfZnJvbV9zcGVjaWZp
Y2F0aW9uKGlucHV0X2ZpbGVwYXRoPU5vbmUsIG91dHB1dF9wcmVmaXg9IiIsIG91dHB1dF9kaXJw
YXRoPU5vbmUsIGZyYW1ld29ya19uYW1lPU5vbmUsIGZvcmNlX291dHB1dD1GYWxzZSk6CisgICAg
dHJ5OgorICAgICAgICB3aXRoIG9wZW4oaW5wdXRfZmlsZXBhdGgsICJyIikgYXMgaW5wdXRfZmls
ZToKKyAgICAgICAgICAgIHBhcnNlZF9qc29uID0ganNvbi5sb2FkKGlucHV0X2ZpbGUpCisgICAg
ZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFcnJvciBw
YXJzaW5nIHZhbGlkIEpTT04gaW4gZmlsZTogIiArIGlucHV0X2ZpbGVwYXRoKQorCisgICAgaWYg
bm90IGZyYW1ld29ya19uYW1lIGluIEZSQU1FV09SS19DT05GSUdfTUFQOgorICAgICAgICByYWlz
ZSBQYXJzZUV4Y2VwdGlvbigiVW5rbm93biBvciB1bnN1cHBvcnRlZCBmcmFtZXdvcmsgbmFtZSBz
dXBwbGllZDogIiArIGZyYW1ld29ya19uYW1lKQorCisgICAgbW9kZWwgPSBJbnB1dHNNb2RlbChw
YXJzZWRfanNvbikKKyAgICBtb2RlbC50eXBlY2hlY2soKQorICAgIGdlbmVyYXRvciA9IEdlbmVy
YXRvcihtb2RlbCwgZnJhbWV3b3JrX25hbWUsIGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfcHJlZml4
KQorCisgICAgZ2VuZXJhdG9yLndyaXRlX291dHB1dF9maWxlcyhvdXRwdXRfZGlycGF0aCwgZm9y
Y2Vfb3V0cHV0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgYWxsb3dlZF9m
cmFtZXdvcmtfbmFtZXMgPSBGUkFNRVdPUktfQ09ORklHX01BUC5rZXlzKCkKKworICAgIGNsaV9w
YXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9InVzYWdlOiAlcHJvZyBbb3B0aW9u
c10gPElucHV0cy5qc29uPiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91
dHB1dERpciIsIGhlbHA9IkRpcmVjdG9yeSB3aGVyZSBnZW5lcmF0ZWQgZmlsZXMgc2hvdWxkIGJl
IHdyaXR0ZW4uIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tZnJhbWV3b3JrIiwgdHlw
ZT0iY2hvaWNlIiwgY2hvaWNlcz1hbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgaGVscD0iVGhlIGZy
YW1ld29yayB0aGVzZSBpbnB1dHMgYmVsb25nIHRvLiIpICAjIEphdmFTY3JpcHRDb3JlLCBXZWJD
b3JlCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWZvcmNlIiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgaGVscD0iRm9yY2Ugb3V0cHV0IG9mIGdlbmVyYXRlZCBzY3JpcHRzLCBldmVuIGlmIG5v
dGhpbmcgY2hhbmdlZC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS1kZWJ1
ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkxvZyBleHRyYSBvdXRwdXQgZm9yIGRlYnVn
Z2luZyB0aGUgZ2VuZXJhdG9yIGl0c2VsZi4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigi
LXQiLCAiLS10ZXN0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRW5hYmxlIHRlc3QgbW9k
ZS4gVXNlIHVuaXF1ZSBvdXRwdXQgZmlsZW5hbWVzIGNyZWF0ZWQgYnkgcHJlcGVuZGluZyB0aGUg
aW5wdXQgZmlsZW5hbWUuIikKKworICAgIG9wdGlvbnMgPSBOb25lCisKKyAgICBhcmdfb3B0aW9u
cywgYXJnX3ZhbHVlcyA9IGNsaV9wYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgKGxlbihhcmdf
dmFsdWVzKSA8IDEpOgorICAgICAgICBjbGlfcGFyc2VyLmVycm9yKCJBdCBsZWFzdCBvbmUgcGxh
aW4gYXJndW1lbnQgZXhwZWN0ZWQiKQorCisgICAgaWYgbm90IGFyZ19vcHRpb25zLm91dHB1dERp
cjoKKyAgICAgICAgY2xpX3BhcnNlci5lcnJvcigiTWlzc2luZyBvdXRwdXQgZGlyZWN0b3J5IikK
KworICAgIGlmIGFyZ19vcHRpb25zLmRlYnVnOgorICAgICAgICBsb2cuc2V0TGV2ZWwobG9nZ2lu
Zy5ERUJVRykKKworICAgIG9wdGlvbnMgPSB7CisgICAgICAgICdpbnB1dF9maWxlcGF0aCc6IGFy
Z192YWx1ZXNbMF0sCisgICAgICAgICdvdXRwdXRfZGlycGF0aCc6IGFyZ19vcHRpb25zLm91dHB1
dERpciwKKyAgICAgICAgJ291dHB1dF9wcmVmaXgnOiBvcy5wYXRoLmJhc2VuYW1lKGFyZ192YWx1
ZXNbMF0pIGlmIGFyZ19vcHRpb25zLnRlc3QgZWxzZSAiIiwKKyAgICAgICAgJ2ZyYW1ld29ya19u
YW1lJzogYXJnX29wdGlvbnMuZnJhbWV3b3JrLAorICAgICAgICAnZm9yY2Vfb3V0cHV0JzogYXJn
X29wdGlvbnMuZm9yY2UKKyAgICB9CisKKyAgICB0cnk6CisgICAgICAgIGdlbmVyYXRlX2Zyb21f
c3BlY2lmaWNhdGlvbigqKm9wdGlvbnMpCisgICAgZXhjZXB0IChQYXJzZUV4Y2VwdGlvbiwgVHlw
ZWNoZWNrRXhjZXB0aW9uKSBhcyBlOgorICAgICAgICBpZiBhcmdfb3B0aW9ucy50ZXN0OgorICAg
ICAgICAgICAgbG9nLmVycm9yKGUubWVzc2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHJhaXNlIGUgICMgRm9yY2UgdGhlIGJ1aWxkIHRvIGZhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1Rl
bXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YTg4ZjJlOTY5Nzk2
Y2Y1ZTBmYjRkMWRjNTUzZThkODE1MTIzNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBs
YXRlcy5weQpAQCAtMCwwICsxLDIyNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisjIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRAorIyBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgR2VuZXJhdG9yIHRlbXBsYXRlcywgd2hpY2gg
Y2FuIGJlIGZpbGxlZCB3aXRoIHN0cmluZy5UZW1wbGF0ZS4KKyMgRm9sbG93aW5nIGFyZSBjbGFz
c2VzIHRoYXQgZmlsbCB0aGUgdGVtcGxhdGVzIGZyb20gdGhlIHR5cGVjaGVja2VkIG1vZGVsLgor
CisKK2NsYXNzIFRlbXBsYXRlczoKKyAgICBDb3B5cmlnaHRCbG9jayA9ICIiIi8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSAke2lucHV0RmlsZW5hbWV9CisvLyBieSB0aGUgc2Ny
aXB0OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5w
dXRzLnB5IiIiCisKKyAgICBIZWFkZXJTa2VsZXRvbiA9ICIiIiR7bGljZW5zZUJsb2NrfQorCisj
aWZuZGVmICR7aGVhZGVyX2d1YXJkfQorI2RlZmluZSAke2hlYWRlcl9ndWFyZH0KKworI2lmICR7
Z3VhcmRDb25kaXRpb259Ciske2luY2x1ZGVzfQorCiske3R5cGVGb3J3YXJkRGVjbGFyYXRpb25z
fQorCituYW1lc3BhY2UgJHtpbnB1dHNOYW1lc3BhY2V9IHsKKyR7aW5wdXRGb3J3YXJkRGVjbGFy
YXRpb25zfQorfSAvLyBuYW1lc3BhY2UgJHtpbnB1dHNOYW1lc3BhY2V9CisKK25hbWVzcGFjZSAk
e3RyYWl0c05hbWVzcGFjZX0geworJHtpbnB1dFRyYWl0RGVjbGFyYXRpb25zfQorJHtlbnVtVHJh
aXREZWNsYXJhdGlvbnN9Cit9IC8vIG5hbWVzcGFjZSAke3RyYWl0c05hbWVzcGFjZX0KKworbmFt
ZXNwYWNlICR7aW5wdXRzTmFtZXNwYWNlfSB7Ciske2lucHV0Q2xhc3NEZWNsYXJhdGlvbnN9Cit9
IC8vIG5hbWVzcGFjZSAke2lucHV0c05hbWVzcGFjZX0KKworJHtmb3JFYWNoTWFjcm99CisKKyNl
bmRpZiAvLyAke2d1YXJkQ29uZGl0aW9ufQorCisjZW5kaWYgLy8gJHtoZWFkZXJfZ3VhcmR9Cisi
IiIKKworICAgIElucHV0VHJhaXRzRGVjbGFyYXRpb24gPSAiIiJ0ZW1wbGF0ZTw+ICR7c3RydWN0
T3JDbGFzc30gSW5wdXRUcmFpdHM8JHtxdWFsaWZpZWRJbnB1dE5hbWV9PiB7CisgICAgc3RhdGlj
IElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjoke3F1ZXVlVHlwZX07IH0K
KyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCAke3F1YWxpZmllZElucHV0TmFtZX0m
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1
ZV9wdHI8JHtxdWFsaWZpZWRJbnB1dE5hbWV9PiYpOworfTsiIiIKKworICAgIEVudW1UcmFpdERl
Y2xhcmF0aW9uID0gIiIidGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8JHtlbnVtTmFt
ZX0+IHsKKyAgICB0eXBlZGVmICR7ZW51bU5hbWV9IERlY29kZWRUeXBlOworICAgIHR5cGVkZWYg
c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RlZFR5cGU7CisgICAgc3RhdGljIGNv
bnN0IEVuY29kZWRWYWx1ZTo6U2hhcGUgU2hhcGUgPSBFbmNvZGVkVmFsdWU6OlNoYXBlOjpMaXN0
OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZVZhbHVl
KGNvbnN0ICR7ZW51bU5hbWV9JiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUo
c3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4mLCAke2VudW1OYW1lfSYgdmFsdWUpOworfTsi
IiIKKworICAgIEVudW1DbGFzc1RyYWl0RGVjbGFyYXRpb24gPSAiIiJ0ZW1wbGF0ZTw+IHN0cnVj
dCBFbmNvZGluZ1RyYWl0czwke2VudW1OYW1lfT4geworICAgIHR5cGVkZWYgJHtlbnVtTmFtZX0g
RGVjb2RlZFR5cGU7CisgICAgdHlwZWRlZiBTdHJpbmcgRW5jb2RlZFR5cGU7CisgICAgc3RhdGlj
IGNvbnN0IEVuY29kZWRWYWx1ZTo6U2hhcGUgU2hhcGUgPSBFbmNvZGVkVmFsdWU6OlNoYXBlOjpT
Y2FsYXI7CisKKyAgICBzdGF0aWMgU3RyaW5nIGVuY29kZVZhbHVlKGNvbnN0ICR7ZW51bU5hbWV9
JiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoU3RyaW5nJiwgJHtlbnVtTmFt
ZX0mIHZhbHVlKTsKK307IiIiCisKKyAgICBJbnB1dENsYXNzRGVjbGFyYXRpb24gPSAiIiJjbGFz
cyAke2lucHV0TmFtZX0gOiBwdWJsaWMgJHtiYXNlQ2xhc3N9IHsKK3B1YmxpYzoKKyR7aW5wdXRD
b25zdHJ1Y3Rvcn0KKyR7aW5wdXREZXN0cnVjdG9yfQorJHtleHRyYURlY2xhcmF0aW9uc30KKyR7
bWVtYmVyR2V0dGVyc30KKyR7bWVtYmVyRGVjbGFyYXRpb25zfQorfTsiIiIKKworICAgIEltcGxl
bWVudGF0aW9uU2tlbGV0b24gPSAiIiIke2xpY2Vuc2VCbG9ja30KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIiR7ZmlsZW5hbWV9LmgiCisKKyNpZiAke2d1YXJkQ29uZGl0aW9ufQor
JHtpbmNsdWRlc30KKworbmFtZXNwYWNlICR7aW5wdXRzTmFtZXNwYWNlfSB7Ciske2lucHV0Q2xh
c3NJbXBsZW1lbnRhdGlvbnN9Cit9IC8vIG5hbWVzcGFjZSAke2lucHV0c05hbWVzcGFjZX0KKwor
bmFtZXNwYWNlICR7dHJhaXRzTmFtZXNwYWNlfSB7Ciske2lucHV0VHJhaXRJbXBsZW1lbnRhdGlv
bnN9Ciske2VudW1UcmFpdEltcGxlbWVudGF0aW9uc30KK30gLy8gbmFtZXNwYWNlICR7dHJhaXRz
TmFtZXNwYWNlfQorCisjZW5kaWYgLy8gJHtndWFyZENvbmRpdGlvbn0KKyIiIgorCisgICAgSW5w
dXRUcmFpdHNJbXBsZW1lbnRhdGlvbiA9ICIiImNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRUcmFp
dHM8JHtxdWFsaWZpZWRJbnB1dE5hbWV9Pjo6dHlwZSgpCit7CiskaW5wdXRUeXBlSW1wbGVtZW50
YXRpb24KK30KKwordm9pZCBJbnB1dFRyYWl0czwke3F1YWxpZmllZElucHV0TmFtZX0+OjplbmNv
ZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0ICR7cXVhbGlmaWVkSW5wdXROYW1l
fSYgaW5wdXQpCit7Ciske2VuY29kZVN0ZXBzfQorfQorCitib29sIElucHV0VHJhaXRzPCR7cXVh
bGlmaWVkSW5wdXROYW1lfT46OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3Rk
Ojp1bmlxdWVfcHRyPCR7cXVhbGlmaWVkSW5wdXROYW1lfT4mIGlucHV0KQoreworJHtkZWNvZGVT
dGVwc30KKyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8JHtxdWFsaWZpZWRJbnB1dE5hbWV9
Pigke2NvbnN0cnVjdG9yQXJndW1lbnRzfSk7CisgICAgcmV0dXJuIHRydWU7Cit9IiIiCisKKyAg
ICBFbnVtQ2xhc3NUcmFpdEltcGxlbWVudGF0aW9uID0gIiIiU3RyaW5nIEVuY29kaW5nVHJhaXRz
PCR7ZW51bU5hbWV9Pjo6ZW5jb2RlVmFsdWUoY29uc3QgJHtlbnVtTmFtZX0mIGVudW1WYWx1ZSkK
K3sKKyAgICBzd2l0Y2ggKGVudW1WYWx1ZSkgeworJHtlbmNvZGVDYXNlc30KKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiRXJyb3IhIik7CisgICAgfQorfQorCitib29sIEVuY29kaW5nVHJhaXRzPCR7ZW51bU5h
bWV9Pjo6ZGVjb2RlVmFsdWUoU3RyaW5nJiBlbmNvZGVkVmFsdWUsICR7ZW51bU5hbWV9JiBlbnVt
VmFsdWUpCit7Ciske2RlY29kZUNhc2VzfQorICAgIHJldHVybiBmYWxzZTsKK30iIiIKKworICAg
IEVudW1DbGFzc0VuY29kZUNhc2UgPSAiIiIgICAgY2FzZSAke3F1YWxpZmllZEVudW1WYWx1ZX06
IHJldHVybiBBU0NJSUxpdGVyYWwoIiR7ZW51bVN0cmluZ1ZhbHVlfSIpOyIiIgorCisgICAgRW51
bUNsYXNzRGVjb2RlQ2FzZSA9ICIiIiAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0cmluZyhBU0NJ
SUxpdGVyYWwoIiR7ZW51bVN0cmluZ1ZhbHVlfSIpKSkgeworICAgICAgICBlbnVtVmFsdWUgPSAk
e3F1YWxpZmllZEVudW1WYWx1ZX07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0iIiIKKwor
ICAgIEVudW1UcmFpdEltcGxlbWVudGF0aW9uID0gIiIic3RkOjp1bmlxdWVfcHRyPEVuY29kZWRW
YWx1ZT4gRW5jb2RpbmdUcmFpdHM8JHtlbnVtTmFtZX0+OjplbmNvZGVWYWx1ZShjb25zdCAke2Vu
dW1OYW1lfSYgZW51bVZhbHVlKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+
IGVuY29kZWRWYWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKKyR7ZW5j
b2RlQ2FzZXN9CisgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOworfQorCitib29s
IEVuY29kaW5nVHJhaXRzPCR7ZW51bU5hbWV9Pjo6ZGVjb2RlVmFsdWUoc3RkOjp1bmlxdWVfcHRy
PEVuY29kZWRWYWx1ZT4mIGVuY29kZWRWYWx1ZSwgJHtlbnVtTmFtZX0mIGVudW1WYWx1ZSkKK3sK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5zcGVjdG9yQXJyYXkgPSBl
bmNvZGVkVmFsdWUtPmluc3BlY3RvclZhbHVlKCktPmFzQXJyYXkoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGluc3BlY3RvckFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFN0
cmluZyBlbmNvZGVkRW51bVZhbHVlOworICAgICAgICBpZiAoIWluc3BlY3RvckFycmF5LT5nZXQo
aSktPmFzU3RyaW5nKCZlbmNvZGVkRW51bVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyR7ZGVjb2RlQ2FzZXN9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9IiIiCisKKyAg
ICBFbnVtRW5jb2RlQ2FzZSA9ICIiIiAgICBpZiAoZW51bVZhbHVlICYgJHtxdWFsaWZpZWRFbnVt
VmFsdWV9KQorICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJh
bCgiJHtlbnVtU3RyaW5nVmFsdWV9IikpOworICAgIGlmIChlbnVtVmFsdWUgPT0gJHtxdWFsaWZp
ZWRFbnVtVmFsdWV9KQorICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7IiIi
CisKKyAgICBFbnVtRGVjb2RlQ2FzZSA9ICIiIiAgICAgICAgaWYgKGVuY29kZWRFbnVtVmFsdWUg
PT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiJHtlbnVtU3RyaW5nVmFsdWV9IikpKQorICAgICAgICAg
ICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8JHtxdWFsaWZpZWRFbnVtTmFtZX0+KGVudW1WYWx1
ZSB8ICR7cXVhbGlmaWVkRW51bVZhbHVlfSk7IiIiCisKKyAgICBJbnB1dFR5cGVGcm9tU3RhdGlj
TG9jYWwgPSAiIiIgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4g
dHlwZSgiJHtpbnB1dE5hbWV9IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgcmV0dXJuIHR5cGU7IiIiCisKKyAgICBJbnB1dFR5cGVGcm9tVGhyZWFkTG9jYWwgPSAi
ICAgIHJldHVybiBXZWJDb3JlOjppbnB1dFR5cGVzKCkuJHtpbnB1dE5hbWV9OyIKKworICAgIElu
cHV0Q2xhc3NJbXBsZW1lbnRhdGlvbiA9ICIiIiR7aW5wdXROYW1lfTo6JHtpbnB1dE5hbWV9KCR7
Y29uc3RydWN0b3JGb3JtYWxzTGlzdH0pCiske2luaXRpYWxpemVyTGlzdH0KK3sKK30KKworJHtp
bnB1dE5hbWV9Ojp+JHtpbnB1dE5hbWV9KCkKK3sKK30iIiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLWMtc3R5
bGUtZW51bS1uby1zdG9yYWdlLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1jLXN0eWxlLWVudW0tbm8tc3RvcmFn
ZS5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NjE3MzI4ZTgwOGExMzQxNTRkMmM1YjQ0MGU5MThh
ZDMwODk1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1jLXN0eWxlLWVudW0tbm8tc3RvcmFnZS5q
c29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBDLXN0eWxlIGVudW1zIG11c3QgYWxzbyBz
cGVjaWZ5IHRoZWlyIHN0b3JhZ2UgdHlwZSBzbyB0aGV5IGNhbiBiZSBmb3J3YXJkIGRlY2xhcmVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2ZhaWwtb24tZHVwbGljYXRlLWlucHV0LW5hbWVzLmpzb24tZXJyb3IgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1k
dXBsaWNhdGUtaW5wdXQtbmFtZXMuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzFlYzgwMjM2NTJj
YzM5MTQ3NTAwNmY5MTQwZTRlZTkxMGFjMTk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZHVwbGlj
YXRlLWlucHV0LW5hbWVzLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IER1cGxpY2F0
ZSBpbnB1dCB3aXRoIG5hbWU6IEdldEN1cnJlbnRUaW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1kdXBsaWNh
dGUtdHlwZS1uYW1lcy5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZHVwbGljYXRlLXR5cGUtbmFtZXMuanNvbi1l
cnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMWU0YzQ3YmJmOTY4Mjg2ZmY5ODE5MTVkY2QyNDg0MWZkNzVkZTFh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZHVwbGljYXRlLXR5cGUtbmFtZXMuanNvbi1lcnJvcgpA
QCAtMCwwICsxIEBACitFUlJPUjogRHVwbGljYXRlIHR5cGUgd2l0aCBuYW1lOiB1aW50NjRfdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2ZhaWwtb24tZW51bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb24tZXJyb3IgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1l
bnVtLXR5cGUtbWlzc2luZy12YWx1ZXMuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGEzNDhjZjZl
OTM3ZGJjMTI1ZTYyMWFhZWU3OTYzNTVhNzkwZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tZW51
bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IFdo
ZW4gcGFyc2luZyBlbnVtLCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiB2YWx1ZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbWVtYmVyLW5hbWUuanNvbi1lcnJvciBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3Np
bmctaW5wdXQtbWVtYmVyLW5hbWUuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmIyODY5ZDJhZWI3
ZjZkOTU5NjczOWM4NGY1NDFlM2QyOGRhYTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2lu
Zy1pbnB1dC1tZW1iZXItbmFtZS5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBXaGVu
IHBhcnNpbmcgbWVtYmVyLCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiBuYW1lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZmFpbC1vbi1taXNzaW5nLWlucHV0LW5hbWUuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQt
bmFtZS5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1OTk2MDdhNzk2Njg2ZmEyZDAwZDhkOGQ4MzYz
NWI4ZDkwZWRkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LW5hbWUuanNv
bi1lcnJvcgpAQCAtMCwwICsxIEBACitFUlJPUjogV2hlbiBwYXJzaW5nIGlucHV0LCByZXF1aXJl
ZCBwcm9wZXJ0eSBtaXNzaW5nOiBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1
ZXVlLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1ZXVlLmpzb24tZXJyb3IKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzc5MTlhYjU1MWMyMWM4YmJmNjIwMTQyM2UxZjBmYzZhZTgwN2Y0NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9mYWlsLW9uLW1pc3NpbmctaW5wdXQtcXVldWUuanNvbi1lcnJvcgpAQCAtMCwwICsxIEBA
CitFUlJPUjogV2hlbiBwYXJzaW5nIGlucHV0LCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiBx
dWV1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2luZy10eXBlLW1vZGUuanNvbi1lcnJvciBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1p
c3NpbmctdHlwZS1tb2RlLmpzb24tZXJyb3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc3M2IwZDgwMDAxMGExZjJl
MDI3YTA5YjYzMTYzMmJjMjBmMmU5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctdHlw
ZS1tb2RlLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IFdoZW4gcGFyc2luZyB0eXBl
LCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5nOiBzaGFwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tbWlzc2lu
Zy10eXBlLW5hbWUuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctdHlwZS1uYW1lLmpzb24tZXJyb3IK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGFhZDkwMDE5NWVkNjMyYjVmN2I2NGNiYzUxOTZiZjA3NDkxMzNiYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9mYWlsLW9uLW1pc3NpbmctdHlwZS1uYW1lLmpzb24tZXJyb3IKQEAgLTAsMCAr
MSBAQAorRVJST1I6IFdoZW4gcGFyc2luZyB0eXBlLCByZXF1aXJlZCBwcm9wZXJ0eSBtaXNzaW5n
OiBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1uby1pbnB1dHMuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW5vLWlucHV0
cy5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5NWFjZTc2OGNkZTcyYmVjMWE2YzAzMzI3NTExZWQy
ZTc5NzlmMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1uby1pbnB1dHMuanNvbi1lcnJvcgpAQCAt
MCwwICsxIEBACitFUlJPUjogV2hlbiBwYXJzaW5nIHRvcGxldmVsLCByZXF1aXJlZCBwcm9wZXJ0
eSBtaXNzaW5nOiBpbnB1dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLW5vLXR5cGVzLmpzb24tZXJyb3IgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1v
bi1uby10eXBlcy5qc29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMzFjOGQ1ZDFkNjE0NTI0OGJmM2Zi
YTAzN2NjZmNlYzg2NzNiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi1uby10eXBlcy5qc29uLWVy
cm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBXaGVuIHBhcnNpbmcgdG9wbGV2ZWwsIHJlcXVpcmVk
IHByb3BlcnR5IG1pc3Npbmc6IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZmFpbC1vbi11bmtub3duLWlucHV0LXF1
ZXVlLmpzb24tZXJyb3IgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZmFpbC1vbi11bmtub3duLWlucHV0LXF1ZXVlLmpzb24tZXJyb3IKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWNmNDY5YjY4NjBmN2JkMGNjYWUzMDk3M2ZjNTMwMjBjOTZhMjUwYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9mYWlsLW9uLXVua25vd24taW5wdXQtcXVldWUuanNvbi1lcnJvcgpAQCAtMCwwICsxIEBA
CitFUlJPUjogVW5rbm93biBpbnB1dCBxdWV1ZTogU0NSSVBUX01FT0laRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWls
LW9uLXVua25vd24tbWVtYmVyLXR5cGUuanNvbi1lcnJvciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLXVua25vd24tbWVtYmVyLXR5
cGUuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWMyZWI4YjI1NzFjYzcxNDA0NGJlZDhjMmJlMjJk
NGExZjFmZGYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5qc29u
LWVycm9yCkBAIC0wLDAgKzEgQEAKK0VSUk9SOiBVbmtub3duIHR5cGUgZG91YmxlIHJlZmVyZW5j
ZWQgaW4gbWVtYmVyIHJhbmRvbVNlZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9mYWlsLW9uLXVua25vd24tdHlwZS1zaGFw
ZS5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2ZhaWwtb24tdW5rbm93bi10eXBlLXNoYXBlLmpzb24tZXJyb3IKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODBmYWQ4YzkzMjA4MTNhYjBmZWNiZjQzN2QwZGYxZjkwNDJhZjY0OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9mYWlsLW9uLXVua25vd24tdHlwZS1zaGFwZS5qc29uLWVycm9yCkBAIC0wLDAgKzEgQEAKK0VS
Uk9SOiBVbmtub3duIHR5cGUgc2hhcGU6IEJPTktFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVu
Y29kaW5nLWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy13aXRoLWd1YXJkZWQtdmFsdWVzLmpzb24t
VGVzdFJlcGxheUlucHV0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdkYTg0ZjYxMjFkMWNkNzNkZGQyZDgz
MDc4ZWMwMjdhZWI0MjBlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhl
bHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCkBAIC0w
LDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwor
ICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJh
dGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbgorLy8gYnkg
dGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0cy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5
SW5wdXRzLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJbnRlcm5hbE5h
bWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaCIKKyNpbmNsdWRlIDxwbGF0Zm9ybS9FeHRlcm5hbE5h
bWVzcGFjZUltcGxJbmNsdWRlRHVtbXkuaD4KKyNpbmNsdWRlIDxwbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaD4KKworbmFtZXNwYWNlIFRlc3QgeworU2F2ZWRNb3VzZUJ1dHRvbjo6U2F2ZWRN
b3VzZUJ1dHRvbihNb3VzZUJ1dHRvbiBidXR0b24pCisgICAgOiBOb25kZXRlcm1pbmlzdGljSW5w
dXQ8U2F2ZWRNb3VzZUJ1dHRvbj4oKQorICAgICwgbV9idXR0b24oYnV0dG9uKQoreworfQorCitT
YXZlZE1vdXNlQnV0dG9uOjp+U2F2ZWRNb3VzZUJ1dHRvbigpCit7Cit9Cit9IC8vIG5hbWVzcGFj
ZSBUZXN0CisKK25hbWVzcGFjZSBKU0MgeworY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dFRyYWl0
czxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiU2F2ZWRNb3VzZUJ1dHRvbiIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0eXBlOworfQorCit2
b2lkIElucHV0VHJhaXRzPFRlc3Q6OlNhdmVkTW91c2VCdXR0b24+OjplbmNvZGUoRW5jb2RlZFZh
bHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFRlc3Q6OlNhdmVkTW91c2VCdXR0b24mIGlucHV0KQor
eworICAgIGVuY29kZWRWYWx1ZS5wdXQ8V2ViQ29yZTo6TW91c2VCdXR0b24+KEFTQ0lJTGl0ZXJh
bCgiYnV0dG9uIiksIGlucHV0LmJ1dHRvbigpKTsKK30KKworYm9vbCBJbnB1dFRyYWl0czxUZXN0
OjpTYXZlZE1vdXNlQnV0dG9uPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj4mIGlucHV0KQoreworICAgIFdl
YkNvcmU6Ok1vdXNlQnV0dG9uIGJ1dHRvbjsKKyAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8V2Vi
Q29yZTo6TW91c2VCdXR0b24+KEFTQ0lJTGl0ZXJhbCgiYnV0dG9uIiksIGJ1dHRvbikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0OjpT
YXZlZE1vdXNlQnV0dG9uPihidXR0b24pOworICAgIHJldHVybiB0cnVlOworfQorc3RkOjp1bmlx
dWVfcHRyPEVuY29kZWRWYWx1ZT4gRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6TW91c2VCdXR0b24+
OjplbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpNb3VzZUJ1dHRvbiYgZW51bVZhbHVlKQorewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVkVmFsdWU+IGVuY29kZWRWYWx1ZSA9IEVuY29kZWRW
YWx1ZTo6Y3JlYXRlRW5jb2RlZExpc3QoKTsKKyAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6
Tm9CdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRl
cmFsKCJOb0J1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6Ok5vQnV0dG9u
KQorICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKGVudW1W
YWx1ZSAmIFdlYkNvcmU6OkxlZnRCdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5k
PFN0cmluZz4oQVNDSUlMaXRlcmFsKCJMZWZ0QnV0dG9uIikpOworICAgIGlmIChlbnVtVmFsdWUg
PT0gV2ViQ29yZTo6TGVmdEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVk
VmFsdWUpOworICAgIGlmIChlbnVtVmFsdWUgJiBXZWJDb3JlOjpNaWRkbGVCdXR0b24pCisgICAg
ICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4oQVNDSUlMaXRlcmFsKCJNaWRkbGVCdXR0
b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpNaWRkbGVCdXR0b24pCisgICAg
ICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKKyAgICBpZiAoZW51bVZhbHVlICYg
V2ViQ29yZTo6UmlnaHRCdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmlu
Zz4oQVNDSUlMaXRlcmFsKCJSaWdodEJ1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdl
YkNvcmU6OlJpZ2h0QnV0dG9uKQorICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRWYWx1
ZSk7CisjaWYgRU5BQkxFKFNJREVfQlVUVE9OUykKKyAgICBpZiAoZW51bVZhbHVlICYgV2ViQ29y
ZTo6TGVmdFNpZGVCdXR0b24pCisgICAgICAgIGVuY29kZWRWYWx1ZS0+YXBwZW5kPFN0cmluZz4o
QVNDSUlMaXRlcmFsKCJMZWZ0U2lkZUJ1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdl
YkNvcmU6OkxlZnRTaWRlQnV0dG9uKQorICAgICAgICByZXR1cm4gc3RkOjptb3ZlKGVuY29kZWRW
YWx1ZSk7CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6OlJpZ2h0U2lkZUJ1dHRvbikKKyAg
ICAgICAgZW5jb2RlZFZhbHVlLT5hcHBlbmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIlJpZ2h0U2lk
ZUJ1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6OlJpZ2h0U2lkZUJ1dHRv
bikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOworI2VuZGlmIC8vIEVO
QUJMRShTSURFX0JVVFRPTlMpCisjaWYgUExBVEZPUk0oV0lORE9XUykKKyAgICBpZiAoZW51bVZh
bHVlICYgV2ViQ29yZTo6V2luZG93c0J1dHRvbikKKyAgICAgICAgZW5jb2RlZFZhbHVlLT5hcHBl
bmQ8U3RyaW5nPihBU0NJSUxpdGVyYWwoIldpbmRvd3NCdXR0b24iKSk7CisgICAgaWYgKGVudW1W
YWx1ZSA9PSBXZWJDb3JlOjpXaW5kb3dzQnV0dG9uKQorICAgICAgICByZXR1cm4gc3RkOjptb3Zl
KGVuY29kZWRWYWx1ZSk7CisjZW5kaWYgLy8gUExBVEZPUk0oV0lORE9XUykKKyAgICByZXR1cm4g
c3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7Cit9CisKK2Jvb2wgRW5jb2RpbmdUcmFpdHM8V2ViQ29y
ZTo6TW91c2VCdXR0b24+OjpkZWNvZGVWYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVl
PiYgZW5jb2RlZFZhbHVlLCBXZWJDb3JlOjpNb3VzZUJ1dHRvbiYgZW51bVZhbHVlKQoreworICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9IGVuY29k
ZWRWYWx1ZS0+aW5zcGVjdG9yVmFsdWUoKS0+YXNBcnJheSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW5zcGVjdG9yQXJyYXktPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5n
IGVuY29kZWRFbnVtVmFsdWU7CisgICAgICAgIGlmICghaW5zcGVjdG9yQXJyYXktPmdldChpKS0+
YXNTdHJpbmcoJmVuY29kZWRFbnVtVmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJOb0J1
dHRvbiIpKSkKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1v
dXNlQnV0dG9uPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpOb0J1dHRvbik7CisgICAgICAgIGlmIChl
bmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIkxlZnRCdXR0b24iKSkpCisg
ICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUJ1dHRvbj4o
ZW51bVZhbHVlIHwgV2ViQ29yZTo6TGVmdEJ1dHRvbik7CisgICAgICAgIGlmIChlbmNvZGVkRW51
bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIk1pZGRsZUJ1dHRvbiIpKSkKKyAgICAgICAg
ICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihlbnVtVmFs
dWUgfCBXZWJDb3JlOjpNaWRkbGVCdXR0b24pOworICAgICAgICBpZiAoZW5jb2RlZEVudW1WYWx1
ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJSaWdodEJ1dHRvbiIpKSkKKyAgICAgICAgICAgIGVu
dW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0dG9uPihlbnVtVmFsdWUgfCBX
ZWJDb3JlOjpSaWdodEJ1dHRvbik7CisjaWYgRU5BQkxFKFNJREVfQlVUVE9OUykKKyAgICAgICAg
aWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTGVmdFNpZGVCdXR0
b24iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3Vz
ZUJ1dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6TGVmdFNpZGVCdXR0b24pOworICAgICAgICBp
ZiAoZW5jb2RlZEVudW1WYWx1ZSA9PSBTdHJpbmcoQVNDSUlMaXRlcmFsKCJSaWdodFNpZGVCdXR0
b24iKSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3Vz
ZUJ1dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6UmlnaHRTaWRlQnV0dG9uKTsKKyNlbmRpZiAv
LyBFTkFCTEUoU0lERV9CVVRUT05TKQorI2lmIFBMQVRGT1JNKFdJTkRPV1MpCisgICAgICAgIGlm
IChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIldpbmRvd3NCdXR0b24i
KSkpCisgICAgICAgICAgICBlbnVtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpNb3VzZUJ1
dHRvbj4oZW51bVZhbHVlIHwgV2ViQ29yZTo6V2luZG93c0J1dHRvbik7CisjZW5kaWYgLy8gUExB
VEZPUk0oV0lORE9XUykKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
ZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbi1UZXN0UmVwbGF5
SW5wdXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMu
anNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI5ZDE4OWY3ZWYxMDBkZjdjZThk
NGI0YjliMWM3Y2UzNjU4MTA0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLWVuY29kaW5n
LWhlbHBlcnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApAQCAt
MCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwor
ICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJh
dGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbgorLy8gYnkg
dGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0cy5weQorCisjaWZuZGVmIGdlbmVyYXRlX2VudW1fZW5jb2RpbmdfaGVscGVyc193
aXRoX2d1YXJkZWRfdmFsdWVzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCisjZGVmaW5lIGdlbmVy
YXRlX2VudW1fZW5jb2RpbmdfaGVscGVyc193aXRoX2d1YXJkZWRfdmFsdWVzX2pzb25fVGVzdFJl
cGxheUlucHV0c19oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJbnRlcm5h
bE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3JtL0V4dGVy
bmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2VudW0gTW91c2VCdXR0b24gOiB1bnNpZ25lZDsKK30KKworCituYW1lc3BhY2UgVGVzdCB7Citj
bGFzcyBTYXZlZE1vdXNlQnV0dG9uOworfSAvLyBuYW1lc3BhY2UgVGVzdAorCituYW1lc3BhY2Ug
SlNDIHsKK3RlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRlc3Q6OlNhdmVkTW91c2VCdXR0
b24+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6
OlNjcmlwdE1lbW9pemVkRGF0YTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0
IFRlc3Q6OlNhdmVkTW91c2VCdXR0b24mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpF
bmNvZGVkVmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj4mKTsK
K307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpNb3VzZUJ1dHRv
bj4geworICAgIHR5cGVkZWYgV2ViQ29yZTo6TW91c2VCdXR0b24gRGVjb2RlZFR5cGU7CisgICAg
dHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBFbmNvZGVkVHlwZTsKKyAgICBz
dGF0aWMgY29uc3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFwZSA9IEVuY29kZWRWYWx1ZTo6U2hh
cGU6Okxpc3Q7CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEVuY29kZWRWYWx1ZT4gZW5j
b2RlVmFsdWUoY29uc3QgV2ViQ29yZTo6TW91c2VCdXR0b24mIHZhbHVlKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGVWYWx1ZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiYsIFdlYkNvcmU6
Ok1vdXNlQnV0dG9uJiB2YWx1ZSk7Cit9OworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFj
ZSBUZXN0IHsKK2NsYXNzIFNhdmVkTW91c2VCdXR0b24gOiBwdWJsaWMgTm9uZGV0ZXJtaW5pc3Rp
Y0lucHV0PFNhdmVkTW91c2VCdXR0b24+IHsKK3B1YmxpYzoKKyAgICBTYXZlZE1vdXNlQnV0dG9u
KE1vdXNlQnV0dG9uIGJ1dHRvbik7CisgICAgdmlydHVhbCB+U2F2ZWRNb3VzZUJ1dHRvbigpOwor
CisgICAgTW91c2VCdXR0b24gYnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b247IH0KK3By
aXZhdGU6CisgICAgTW91c2VCdXR0b24gbV9idXR0b247Cit9OworfSAvLyBuYW1lc3BhY2UgVGVz
dAorCisjZGVmaW5lIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNIKG1hY3JvKSBcCisg
ICAgbWFjcm8oU2F2ZWRNb3VzZUJ1dHRvbikgXAorICAgIFwKKy8vIGVuZCBvZiBURVNUX1JFUExB
WV9JTlBVVF9OQU1FU19GT1JfRUFDSAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCisK
KyNlbmRpZiAvLyBnZW5lcmF0ZV9lbnVtX2VuY29kaW5nX2hlbHBlcnNfd2l0aF9ndWFyZGVkX3Zh
bHVlc19qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2Rp
bmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2Rpbmct
aGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMWMyNTkxMjll
MDY4YTk5YWQ0NTgyNWZlMDdkYTRhMGZlN2U2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51
bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAKQEAgLTAsMCArMSwx
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1lbnVt
LWVuY29kaW5nLWhlbHBlcnMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24t
VGVzdFJlcGxheUlucHV0cy5oIgorCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisjaW5jbHVkZSAi
SW50ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxhdGZvcm0v
RXh0ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15Lmg+CisjaW5jbHVkZSA8cGxhdGZvcm0v
UGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CisjaW5jbHVkZSA8cmVwbGF5L05vbmRldGVybWluaXN0aWNJ
bnB1dC5oPgorCituYW1lc3BhY2UgVGVzdCB7CitTYXZlZE1vdXNlQnV0dG9uOjpTYXZlZE1vdXNl
QnV0dG9uKE1vdXNlQnV0dG9uIGJ1dHRvbikKKyAgICA6IE5vbmRldGVybWluaXN0aWNJbnB1dDxT
YXZlZE1vdXNlQnV0dG9uPigpCisgICAgLCBtX2J1dHRvbihidXR0b24pCit7Cit9CisKK1NhdmVk
TW91c2VCdXR0b246On5TYXZlZE1vdXNlQnV0dG9uKCkKK3sKK30KK30gLy8gbmFtZXNwYWNlIFRl
c3QKKworbmFtZXNwYWNlIEpTQyB7Citjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRl
c3Q6OlNhdmVkTW91c2VCdXR0b24+Ojp0eXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB0eXBlKCJTYXZlZE1vdXNlQnV0dG9uIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK3ZvaWQg
SW5wdXRUcmFpdHM8VGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbj46OmVuY29kZShFbmNvZGVkVmFsdWUm
IGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6U2F2ZWRNb3VzZUJ1dHRvbiYgaW5wdXQpCit7Cisg
ICAgZW5jb2RlZFZhbHVlLnB1dDxXZWJDb3JlOjpNb3VzZUJ1dHRvbj4oQVNDSUlMaXRlcmFsKCJi
dXR0b24iKSwgaW5wdXQuYnV0dG9uKCkpOworfQorCitib29sIElucHV0VHJhaXRzPFRlc3Q6OlNh
dmVkTW91c2VCdXR0b24+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6
dW5pcXVlX3B0cjxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPiYgaW5wdXQpCit7CisgICAgV2ViQ29y
ZTo6TW91c2VCdXR0b24gYnV0dG9uOworICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxXZWJDb3Jl
OjpNb3VzZUJ1dHRvbj4oQVNDSUlMaXRlcmFsKCJidXR0b24iKSwgYnV0dG9uKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3Q6OlNhdmVk
TW91c2VCdXR0b24+KGJ1dHRvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CitTdHJpbmcgRW5jb2Rp
bmdUcmFpdHM8SW5wdXRRdWV1ZT46OmVuY29kZVZhbHVlKGNvbnN0IElucHV0UXVldWUmIGVudW1W
YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGVudW1WYWx1ZSkgeworICAgIGNhc2UgSW5wdXRRdWV1ZTo6
RXZlbnRMb29wSW5wdXQ6IHJldHVybiBBU0NJSUxpdGVyYWwoIkV2ZW50TG9vcElucHV0Iik7Cisg
ICAgY2FzZSBJbnB1dFF1ZXVlOjpMb2FkZXJNZW1vaXplZERhdGE6IHJldHVybiBBU0NJSUxpdGVy
YWwoIkxvYWRlck1lbW9pemVkRGF0YSIpOworICAgIGNhc2UgSW5wdXRRdWV1ZTo6U2NyaXB0TWVt
b2l6ZWREYXRhOiByZXR1cm4gQVNDSUlMaXRlcmFsKCJTY3JpcHRNZW1vaXplZERhdGEiKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiRXJyb3IhIik7CisgICAgfQorfQorCitib29sIEVuY29kaW5nVHJhaXRz
PElucHV0UXVldWU+OjpkZWNvZGVWYWx1ZShTdHJpbmcmIGVuY29kZWRWYWx1ZSwgSW5wdXRRdWV1
ZSYgZW51bVZhbHVlKQoreworICAgIGlmIChlbmNvZGVkVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiRXZlbnRMb29wSW5wdXQiKSkpIHsKKyAgICAgICAgZW51bVZhbHVlID0gSW5wdXRRdWV1
ZTo6RXZlbnRMb29wSW5wdXQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAo
ZW5jb2RlZFZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIkxvYWRlck1lbW9pemVkRGF0YSIp
KSkgeworICAgICAgICBlbnVtVmFsdWUgPSBJbnB1dFF1ZXVlOjpMb2FkZXJNZW1vaXplZERhdGE7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoZW5jb2RlZFZhbHVlID09IFN0
cmluZyhBU0NJSUxpdGVyYWwoIlNjcmlwdE1lbW9pemVkRGF0YSIpKSkgeworICAgICAgICBlbnVt
VmFsdWUgPSBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVkVmFsdWU+IEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6Ok1vdXNlQnV0dG9uPjo6ZW5jb2RlVmFs
dWUoY29uc3QgV2ViQ29yZTo6TW91c2VCdXR0b24mIGVudW1WYWx1ZSkKK3sKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0
ZUVuY29kZWRMaXN0KCk7CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6Ok5vQnV0dG9uKQor
ICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiTm9CdXR0
b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpOb0J1dHRvbikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOworICAgIGlmIChlbnVtVmFsdWUgJiBXZWJD
b3JlOjpMZWZ0QnV0dG9uKQorICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFT
Q0lJTGl0ZXJhbCgiTGVmdEJ1dHRvbiIpKTsKKyAgICBpZiAoZW51bVZhbHVlID09IFdlYkNvcmU6
OkxlZnRCdXR0b24pCisgICAgICAgIHJldHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBpZiAoZW51bVZhbHVlICYgV2ViQ29yZTo6TWlkZGxlQnV0dG9uKQorICAgICAgICBlbmNvZGVk
VmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0ZXJhbCgiTWlkZGxlQnV0dG9uIikpOworICAg
IGlmIChlbnVtVmFsdWUgPT0gV2ViQ29yZTo6TWlkZGxlQnV0dG9uKQorICAgICAgICByZXR1cm4g
c3RkOjptb3ZlKGVuY29kZWRWYWx1ZSk7CisgICAgaWYgKGVudW1WYWx1ZSAmIFdlYkNvcmU6OlJp
Z2h0QnV0dG9uKQorICAgICAgICBlbmNvZGVkVmFsdWUtPmFwcGVuZDxTdHJpbmc+KEFTQ0lJTGl0
ZXJhbCgiUmlnaHRCdXR0b24iKSk7CisgICAgaWYgKGVudW1WYWx1ZSA9PSBXZWJDb3JlOjpSaWdo
dEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShlbmNvZGVkVmFsdWUpOworICAgIHJl
dHVybiBzdGQ6Om1vdmUoZW5jb2RlZFZhbHVlKTsKK30KKworYm9vbCBFbmNvZGluZ1RyYWl0czxX
ZWJDb3JlOjpNb3VzZUJ1dHRvbj46OmRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVk
VmFsdWU+JiBlbmNvZGVkVmFsdWUsIFdlYkNvcmU6Ok1vdXNlQnV0dG9uJiBlbnVtVmFsdWUpCit7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGluc3BlY3RvckFycmF5ID0g
ZW5jb2RlZFZhbHVlLT5pbnNwZWN0b3JWYWx1ZSgpLT5hc0FycmF5KCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpbnNwZWN0b3JBcnJheS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBT
dHJpbmcgZW5jb2RlZEVudW1WYWx1ZTsKKyAgICAgICAgaWYgKCFpbnNwZWN0b3JBcnJheS0+Z2V0
KGkpLT5hc1N0cmluZygmZW5jb2RlZEVudW1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChlbmNvZGVkRW51bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwo
Ik5vQnV0dG9uIikpKQorICAgICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6TW91c2VCdXR0b24+KGVudW1WYWx1ZSB8IFdlYkNvcmU6Ok5vQnV0dG9uKTsKKyAgICAgICAg
aWYgKGVuY29kZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTGVmdEJ1dHRvbiIp
KSkKKyAgICAgICAgICAgIGVudW1WYWx1ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1vdXNlQnV0
dG9uPihlbnVtVmFsdWUgfCBXZWJDb3JlOjpMZWZ0QnV0dG9uKTsKKyAgICAgICAgaWYgKGVuY29k
ZWRFbnVtVmFsdWUgPT0gU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiTWlkZGxlQnV0dG9uIikpKQorICAg
ICAgICAgICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VCdXR0b24+KGVu
dW1WYWx1ZSB8IFdlYkNvcmU6Ok1pZGRsZUJ1dHRvbik7CisgICAgICAgIGlmIChlbmNvZGVkRW51
bVZhbHVlID09IFN0cmluZyhBU0NJSUxpdGVyYWwoIlJpZ2h0QnV0dG9uIikpKQorICAgICAgICAg
ICAgZW51bVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TW91c2VCdXR0b24+KGVudW1WYWx1
ZSB8IFdlYkNvcmU6OlJpZ2h0QnV0dG9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dl
bmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYjFiY2RjN2JhODgwNmJiZWZlYTRjYTY5MGE4NzRmOTZmNzZlODNlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uLVRlc3RSZXBsYXlJbnB1
dHMuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisv
LyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZy
b20gZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6
IEphdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMu
cHkKKworI2lmbmRlZiBnZW5lcmF0ZV9lbnVtX2VuY29kaW5nX2hlbHBlcnNfanNvbl9UZXN0UmVw
bGF5SW5wdXRzX2gKKyNkZWZpbmUgZ2VuZXJhdGVfZW51bV9lbmNvZGluZ19oZWxwZXJzX2pzb25f
VGVzdFJlcGxheUlucHV0c19oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJ
bnRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3Jt
L0V4dGVybmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2VudW0gTW91c2VCdXR0b24gOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlIEpTQyB7
CitlbnVtIGNsYXNzIElucHV0UXVldWU7Cit9CisKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3Mg
U2F2ZWRNb3VzZUJ1dHRvbjsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpTYXZlZE1vdXNlQnV0dG9uPiB7
CisgICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpTY3Jp
cHRNZW1vaXplZERhdGE7IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7
CisKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBUZXN0
OjpTYXZlZE1vdXNlQnV0dG9uJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2Rl
ZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6OlNhdmVkTW91c2VCdXR0b24+Jik7Cit9Owor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8SW5wdXRRdWV1ZT4geworICAgIHR5cGVk
ZWYgSW5wdXRRdWV1ZSBEZWNvZGVkVHlwZTsKKyAgICB0eXBlZGVmIFN0cmluZyBFbmNvZGVkVHlw
ZTsKKyAgICBzdGF0aWMgY29uc3QgRW5jb2RlZFZhbHVlOjpTaGFwZSBTaGFwZSA9IEVuY29kZWRW
YWx1ZTo6U2hhcGU6OlNjYWxhcjsKKworICAgIHN0YXRpYyBTdHJpbmcgZW5jb2RlVmFsdWUoY29u
c3QgSW5wdXRRdWV1ZSYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKFN0cmlu
ZyYsIElucHV0UXVldWUmIHZhbHVlKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVuY29kaW5n
VHJhaXRzPFdlYkNvcmU6Ok1vdXNlQnV0dG9uPiB7CisgICAgdHlwZWRlZiBXZWJDb3JlOjpNb3Vz
ZUJ1dHRvbiBEZWNvZGVkVHlwZTsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVk
VmFsdWU+IEVuY29kZWRUeXBlOworICAgIHN0YXRpYyBjb25zdCBFbmNvZGVkVmFsdWU6OlNoYXBl
IFNoYXBlID0gRW5jb2RlZFZhbHVlOjpTaGFwZTo6TGlzdDsKKworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8RW5jb2RlZFZhbHVlPiBlbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpNb3VzZUJ1
dHRvbiYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVlKHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVkVmFsdWU+JiwgV2ViQ29yZTo6TW91c2VCdXR0b24mIHZhbHVlKTsKK307Cit9IC8v
IG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgU2F2ZWRNb3VzZUJ1dHRv
biA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGljSW5wdXQ8U2F2ZWRNb3VzZUJ1dHRvbj4geworcHVi
bGljOgorICAgIFNhdmVkTW91c2VCdXR0b24oTW91c2VCdXR0b24gYnV0dG9uKTsKKyAgICB2aXJ0
dWFsIH5TYXZlZE1vdXNlQnV0dG9uKCk7CisKKyAgICBNb3VzZUJ1dHRvbiBidXR0b24oKSBjb25z
dCB7IHJldHVybiBtX2J1dHRvbjsgfQorcHJpdmF0ZToKKyAgICBNb3VzZUJ1dHRvbiBtX2J1dHRv
bjsKK307Cit9IC8vIG5hbWVzcGFjZSBUZXN0CisKKyNkZWZpbmUgVEVTVF9SRVBMQVlfSU5QVVRf
TkFNRVNfRk9SX0VBQ0gobWFjcm8pIFwKKyAgICBtYWNybyhTYXZlZE1vdXNlQnV0dG9uKSBcCisg
ICAgXAorLy8gZW5kIG9mIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX1JFUExBWSkKKworI2VuZGlmIC8vIGdlbmVyYXRlX2VudW1fZW5jb2Rp
bmdfaGVscGVyc19qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0t
ZW5jb2RpbmctaGVscGVycy5qc29uLWVycm9yIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5q
c29uLWVycm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNjJlNGNlMmEyYTQ1MDQxZmFlMzc4OGE1YmExMWY3YTky
OTJiMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24t
ZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IFdoZW4gcGFyc2luZyB0eXBlLCByZXF1aXJlZCBw
cm9wZXJ0eSBtaXNzaW5nOiBzdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFw
ZS10eXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUt
dHlwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODM4MWY1NGViNDQz
NGFkNTZiMWQwZjcxOGMwMTY3ZGYyODI1MDkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWV2ZW50
LWxvb3Atc2hhcGUtdHlwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApAQCAtMCwwICsxLDE2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLWV2ZW50
LWxvb3Atc2hhcGUtdHlwZXMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5qc29u
LVRlc3RSZXBsYXlJbnB1dHMuaCIKKworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUg
IkludGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3Jt
L0V4dGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVEdW1teS5oPgorCituYW1lc3BhY2UgVGVzdCB7
CitTY2FsYXJJbnB1dDo6U2NhbGFySW5wdXQoU2NhbGFyVHlwZSBkYXRhKQorICAgIDogRXZlbnRM
b29wSW5wdXQ8U2NhbGFySW5wdXQ+KCkKKyAgICAsIG1fZGF0YShkYXRhKQoreworfQorCitTY2Fs
YXJJbnB1dDo6flNjYWxhcklucHV0KCkKK3sKK30KKworTWFwSW5wdXQ6Ok1hcElucHV0KHN0ZDo6
dW5pcXVlX3B0cjxNYXBUeXBlPiBkYXRhKQorICAgIDogRXZlbnRMb29wSW5wdXQ8TWFwSW5wdXQ+
KCkKKyAgICAsIG1fZGF0YShzdGQ6Om1vdmUoZGF0YSkpCit7Cit9CisKK01hcElucHV0Ojp+TWFw
SW5wdXQoKQoreworfQorCitTaGFyZWRNYXBJbnB1dDo6U2hhcmVkTWFwSW5wdXQoUGFzc1JlZlB0
cjxTaGFyZWRNYXBUeXBlPiBkYXRhKQorICAgIDogRXZlbnRMb29wSW5wdXQ8U2hhcmVkTWFwSW5w
dXQ+KCkKKyAgICAsIG1fZGF0YShkYXRhKQoreworfQorCitTaGFyZWRNYXBJbnB1dDo6flNoYXJl
ZE1hcElucHV0KCkKK3sKK30KKworTGlzdElucHV0OjpMaXN0SW5wdXQoc3RkOjp1bmlxdWVfcHRy
PExpc3RUeXBlPiBkYXRhKQorICAgIDogRXZlbnRMb29wSW5wdXQ8TGlzdElucHV0PigpCisgICAg
LCBtX2RhdGEoZGF0YSkKK3sKK30KKworTGlzdElucHV0Ojp+TGlzdElucHV0KCkKK3sKK30KK30g
Ly8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7Citjb25zdCBBdG9taWNTdHJpbmcm
IElucHV0VHJhaXRzPFRlc3Q6OlNjYWxhcklucHV0Pjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiU2NhbGFySW5wdXQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdHlwZTsKK30KKwor
dm9pZCBJbnB1dFRyYWl0czxUZXN0OjpTY2FsYXJJbnB1dD46OmVuY29kZShFbmNvZGVkVmFsdWUm
IGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6U2NhbGFySW5wdXQmIGlucHV0KQoreworICAgIGVu
Y29kZWRWYWx1ZS5wdXQ8U2NhbGFyVHlwZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGlucHV0LmRh
dGEoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6U2NhbGFySW5wdXQ+OjpkZWNvZGUo
RW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpTY2FsYXJJ
bnB1dD4mIGlucHV0KQoreworICAgIFNjYWxhclR5cGUgZGF0YTsKKyAgICBpZiAoIWVuY29kZWRW
YWx1ZS5nZXQ8U2NhbGFyVHlwZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGRhdGEpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6U2Nh
bGFySW5wdXQ+KGRhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIElucHV0VHJhaXRzPFRlc3Q6Ok1hcElucHV0Pjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiTWFwSW5wdXQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdHlwZTsKK30KKwordm9p
ZCBJbnB1dFRyYWl0czxUZXN0OjpNYXBJbnB1dD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29k
ZWRWYWx1ZSwgY29uc3QgVGVzdDo6TWFwSW5wdXQmIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1
ZS5wdXQ8TWFwVHlwZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGlucHV0LmRhdGEoKSk7Cit9CisK
K2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6TWFwSW5wdXQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBl
bmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpNYXBJbnB1dD4mIGlucHV0KQorewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXBUeXBlPiBkYXRhOworICAgIGlmICghZW5jb2RlZFZhbHVl
LmdldDxNYXBUeXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwgZGF0YSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0OjpNYXBJbnB1dD4o
c3RkOjptb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBJbnB1dFRyYWl0czxUZXN0OjpTaGFyZWRNYXBJbnB1dD46OnR5cGUoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHR5cGUoIlNoYXJlZE1hcElu
cHV0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5
cGU7Cit9CisKK3ZvaWQgSW5wdXRUcmFpdHM8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+OjplbmNvZGUo
RW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIGNvbnN0IFRlc3Q6OlNoYXJlZE1hcElucHV0JiBp
bnB1dCkKK3sKKyAgICBlbmNvZGVkVmFsdWUucHV0PFNoYXJlZE1hcFR5cGU+KEFTQ0lJTGl0ZXJh
bCgiZGF0YSIpLCBpbnB1dC5kYXRhKCkpOworfQorCitib29sIElucHV0VHJhaXRzPFRlc3Q6OlNo
YXJlZE1hcElucHV0Pjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLCBzdGQ6OnVu
aXF1ZV9wdHI8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+JiBpbnB1dCkKK3sKKyAgICBSZWZQdHI8U2hh
cmVkTWFwVHlwZT4gZGF0YTsKKyAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8U2hhcmVkTWFwVHlw
ZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+KGRhdGEp
OworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRz
PFRlc3Q6Okxpc3RJbnB1dD46OnR5cGUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IHR5cGUoIkxpc3RJbnB1dCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0eXBlOworfQorCit2b2lkIElucHV0VHJhaXRz
PFRlc3Q6Okxpc3RJbnB1dD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29u
c3QgVGVzdDo6TGlzdElucHV0JiBpbnB1dCkKK3sKKyAgICBlbmNvZGVkVmFsdWUucHV0PExpc3RU
eXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwgaW5wdXQuZGF0YSgpKTsKK30KKworYm9vbCBJbnB1
dFRyYWl0czxUZXN0OjpMaXN0SW5wdXQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFs
dWUsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpMaXN0SW5wdXQ+JiBpbnB1dCkKK3sKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGlzdFR5cGU+IGRhdGE7CisgICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PExp
c3RUeXBlPihBU0NJSUxpdGVyYWwoImRhdGEiKSwgZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0OjpMaXN0SW5wdXQ+KGRhdGEp
OworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfUkVQTEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUtdHlw
ZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5q
c29uLVRlc3RSZXBsYXlJbnB1dHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTc4ZjdlMDY1ZmUyMDI1NDM2Y2Q5
YTFlZTY4MGE2OGIzNGI2MmMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hh
cGUtdHlwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmgKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAq
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1ldmVudC1sb29wLXNoYXBl
LXR5cGVzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRDb3JlL3JlcGxheS9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKKworI2lmbmRlZiBnZW5lcmF0ZV9ldmVu
dF9sb29wX3NoYXBlX3R5cGVzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCisjZGVmaW5lIGdlbmVy
YXRlX2V2ZW50X2xvb3Bfc2hhcGVfdHlwZXNfanNvbl9UZXN0UmVwbGF5SW5wdXRzX2gKKworI2lm
IEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUgIkludGVybmFsTmFtZXNwYWNlSGVhZGVySW5j
bHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxhdGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VIZWFkZXJJ
bmNsdWRlRHVtbXkuaD4KKworCisKK25hbWVzcGFjZSBUZXN0IHsKK2NsYXNzIFNjYWxhcklucHV0
OworY2xhc3MgTWFwSW5wdXQ7CitjbGFzcyBTaGFyZWRNYXBJbnB1dDsKK2NsYXNzIExpc3RJbnB1
dDsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpTY2FsYXJJbnB1dD4geworICAgIHN0YXRpYyBJbnB1dFF1
ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5wdXRRdWV1ZTo6RXZlbnRMb29wSW5wdXQ7IH0KKyAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBUZXN0OjpTY2FsYXJJbnB1dCYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0
OjpTY2FsYXJJbnB1dD4mKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IElucHV0VHJhaXRzPFRl
c3Q6Ok1hcElucHV0PiB7CisgICAgc3RhdGljIElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJ
bnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYs
IGNvbnN0IFRlc3Q6Ok1hcElucHV0Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5j
b2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6Ok1hcElucHV0PiYpOworfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+IHsKKyAgICBz
dGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElu
cHV0OyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOworCisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgVGVzdDo6U2hhcmVkTWFw
SW5wdXQmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBzdGQ6
OnVuaXF1ZV9wdHI8VGVzdDo6U2hhcmVkTWFwSW5wdXQ+Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpMaXN0SW5wdXQ+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1
ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpOworCisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEpTQzo6RW5jb2RlZFZhbHVlJiwgY29uc3QgVGVzdDo6TGlzdElucHV0Jik7CisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6Okxp
c3RJbnB1dD4mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgVGVzdCB7
CitjbGFzcyBTY2FsYXJJbnB1dCA6IHB1YmxpYyBFdmVudExvb3BJbnB1dDxTY2FsYXJJbnB1dD4g
eworcHVibGljOgorICAgIFNjYWxhcklucHV0KFNjYWxhclR5cGUgZGF0YSk7CisgICAgdmlydHVh
bCB+U2NhbGFySW5wdXQoKTsKKworICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQorICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
U2NhbGFyVHlwZSBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Citwcml2YXRlOgorICAg
IFNjYWxhclR5cGUgbV9kYXRhOworfTsKKworY2xhc3MgTWFwSW5wdXQgOiBwdWJsaWMgRXZlbnRM
b29wSW5wdXQ8TWFwSW5wdXQ+IHsKK3B1YmxpYzoKKyAgICBNYXBJbnB1dChzdGQ6OnVuaXF1ZV9w
dHI8TWFwVHlwZT4gZGF0YSk7CisgICAgdmlydHVhbCB+TWFwSW5wdXQoKTsKKworICAgIC8vIEV2
ZW50TG9vcElucHV0IEFQSQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChSZXBsYXlDb250cm9s
bGVyJikgb3ZlcnJpZGUgZmluYWw7CisgICAgY29uc3QgTWFwVHlwZSYgZGF0YSgpIGNvbnN0IHsg
cmV0dXJuICptX2RhdGE7IH0KK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hcFR5cGU+
IG1fZGF0YTsKK307CisKK2NsYXNzIFNoYXJlZE1hcElucHV0IDogcHVibGljIEV2ZW50TG9vcElu
cHV0PFNoYXJlZE1hcElucHV0PiB7CitwdWJsaWM6CisgICAgU2hhcmVkTWFwSW5wdXQoUGFzc1Jl
ZlB0cjxTaGFyZWRNYXBUeXBlPiBkYXRhKTsKKyAgICB2aXJ0dWFsIH5TaGFyZWRNYXBJbnB1dCgp
OworCisgICAgLy8gRXZlbnRMb29wSW5wdXQgQVBJCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKKyAgICBQYXNzUmVmUHRyPFNoYXJl
ZE1hcFR5cGU+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KK3ByaXZhdGU6CisgICAg
UmVmUHRyPFNoYXJlZE1hcFR5cGU+IG1fZGF0YTsKK307CisKK2NsYXNzIExpc3RJbnB1dCA6IHB1
YmxpYyBFdmVudExvb3BJbnB1dDxMaXN0SW5wdXQ+IHsKK3B1YmxpYzoKKyAgICBMaXN0SW5wdXQo
c3RkOjp1bmlxdWVfcHRyPExpc3RUeXBlPiBkYXRhKTsKKyAgICB2aXJ0dWFsIH5MaXN0SW5wdXQo
KTsKKworICAgIC8vIEV2ZW50TG9vcElucHV0IEFQSQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aChSZXBsYXlDb250cm9sbGVyJikgb3ZlcnJpZGUgZmluYWw7CisgICAgY29uc3QgTGlzdFR5cGUm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KK3ByaXZhdGU6CisgICAgc3RkOjp1bmlx
dWVfcHRyPExpc3RUeXBlPiBtX2RhdGE7Cit9OworfSAvLyBuYW1lc3BhY2UgVGVzdAorCisjZGVm
aW5lIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNIKG1hY3JvKSBcCisgICAgbWFjcm8o
U2NhbGFySW5wdXQpIFwKKyAgICBtYWNybyhNYXBJbnB1dCkgXAorICAgIG1hY3JvKFNoYXJlZE1h
cElucHV0KSBcCisgICAgbWFjcm8oTGlzdElucHV0KSBcCisgICAgXAorLy8gZW5kIG9mIFRFU1Rf
UkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExB
WSkKKworI2VuZGlmIC8vIGdlbmVyYXRlX2V2ZW50X2xvb3Bfc2hhcGVfdHlwZXNfanNvbl9UZXN0
UmVwbGF5SW5wdXRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1YXJkLmpzb24tVGVz
dFJlcGxheUlucHV0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzMDZmMjEyZTBhYWE2YzBlNjc0N2YwYzE4YmViY2M5Mzc1
ZWNkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RS
ZXBsYXlJbnB1dHMuY3BwCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uCisvLyBieSB0aGUg
c2NyaXB0OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5
SW5wdXRzLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJnZW5lcmF0ZS1pbnB1
dC13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5oIgorCisjaWYgRU5BQkxFKFdFQl9S
RVBMQVkpCisjaW5jbHVkZSAiSW50ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15LmgiCisj
aW5jbHVkZSA8cGxhdGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15Lmg+CisK
K25hbWVzcGFjZSBUZXN0IHsKKyNpZiBFTkFCTEUoRFVNTVlfRkVBVFVSRSkKK0dldEN1cnJlbnRU
aW1lOjpHZXRDdXJyZW50VGltZShkb3VibGUgY3VycmVudFRpbWUpCisgICAgOiBOb25kZXRlcm1p
bmlzdGljSW5wdXQ8R2V0Q3VycmVudFRpbWU+KCkKKyAgICAsIG1fY3VycmVudFRpbWUoY3VycmVu
dFRpbWUpCit7Cit9CisKK0dldEN1cnJlbnRUaW1lOjp+R2V0Q3VycmVudFRpbWUoKQoreworfQor
I2VuZGlmIC8vIEVOQUJMRShEVU1NWV9GRUFUVVJFKQorCitTZXRSYW5kb21TZWVkOjpTZXRSYW5k
b21TZWVkKHVpbnQ2NF90IHJhbmRvbVNlZWQpCisgICAgOiBOb25kZXRlcm1pbmlzdGljSW5wdXQ8
U2V0UmFuZG9tU2VlZD4oKQorICAgICwgbV9yYW5kb21TZWVkKHJhbmRvbVNlZWQpCit7Cit9CisK
K1NldFJhbmRvbVNlZWQ6On5TZXRSYW5kb21TZWVkKCkKK3sKK30KK30gLy8gbmFtZXNwYWNlIFRl
c3QKKworbmFtZXNwYWNlIEpTQyB7CisjaWYgRU5BQkxFKERVTU1ZX0ZFQVRVUkUpCitjb25zdCBB
dG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6OkdldEN1cnJlbnRUaW1lPjo6dHlwZSgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdHlwZSgiR2V0
Q3VycmVudFRpbWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBy
ZXR1cm4gdHlwZTsKK30KKwordm9pZCBJbnB1dFRyYWl0czxUZXN0OjpHZXRDdXJyZW50VGltZT46
OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6R2V0Q3VycmVu
dFRpbWUmIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8ZG91YmxlPihBU0NJSUxpdGVy
YWwoImN1cnJlbnRUaW1lIiksIGlucHV0LmN1cnJlbnRUaW1lKCkpOworfQorCitib29sIElucHV0
VHJhaXRzPFRlc3Q6OkdldEN1cnJlbnRUaW1lPjo6ZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2Rl
ZFZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8VGVzdDo6R2V0Q3VycmVudFRpbWU+JiBpbnB1dCkKK3sK
KyAgICBkb3VibGUgY3VycmVudFRpbWU7CisgICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PGRvdWJs
ZT4oQVNDSUlMaXRlcmFsKCJjdXJyZW50VGltZSIpLCBjdXJyZW50VGltZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0OjpHZXRDdXJy
ZW50VGltZT4oY3VycmVudFRpbWUpOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmIC8vIEVO
QUJMRShEVU1NWV9GRUFUVVJFKQorCitjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRl
c3Q6OlNldFJhbmRvbVNlZWQ+Ojp0eXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgQXRvbWljU3RyaW5nPiB0eXBlKCJTZXRSYW5kb21TZWVkIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK3ZvaWQgSW5wdXRU
cmFpdHM8VGVzdDo6U2V0UmFuZG9tU2VlZD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRW
YWx1ZSwgY29uc3QgVGVzdDo6U2V0UmFuZG9tU2VlZCYgaW5wdXQpCit7CisgICAgZW5jb2RlZFZh
bHVlLnB1dDx1aW50NjRfdD4oQVNDSUlMaXRlcmFsKCJyYW5kb21TZWVkIiksIGlucHV0LnJhbmRv
bVNlZWQoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6U2V0UmFuZG9tU2VlZD46OmRl
Y29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6OlNl
dFJhbmRvbVNlZWQ+JiBpbnB1dCkKK3sKKyAgICB1aW50NjRfdCByYW5kb21TZWVkOworICAgIGlm
ICghZW5jb2RlZFZhbHVlLmdldDx1aW50NjRfdD4oQVNDSUlMaXRlcmFsKCJyYW5kb21TZWVkIiks
IHJhbmRvbVNlZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnB1dCA9IHN0ZDo6
bWFrZV91bmlxdWU8VGVzdDo6U2V0UmFuZG9tU2VlZD4ocmFuZG9tU2VlZCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9S
RVBMQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVlNmE1NmJhNTliYjkwN2IxNzM1ZGE5ZjExOTVjMjJmZjlkNWE2ZGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMu
aApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
Z2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBKYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5CisKKyNp
Zm5kZWYgZ2VuZXJhdGVfaW5wdXRfd2l0aF9ndWFyZF9qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaAor
I2RlZmluZSBnZW5lcmF0ZV9pbnB1dF93aXRoX2d1YXJkX2pzb25fVGVzdFJlcGxheUlucHV0c19o
CisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJJbnRlcm5hbE5hbWVzcGFjZUhl
YWRlckluY2x1ZGVEdW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3JtL0V4dGVybmFsTmFtZXNwYWNl
SGVhZGVySW5jbHVkZUR1bW15Lmg+CisKKworCituYW1lc3BhY2UgVGVzdCB7CisjaWYgRU5BQkxF
KERVTU1ZX0ZFQVRVUkUpCitjbGFzcyBHZXRDdXJyZW50VGltZTsKKyNlbmRpZiAvLyBFTkFCTEUo
RFVNTVlfRkVBVFVSRSkKK2NsYXNzIFNldFJhbmRvbVNlZWQ7Cit9IC8vIG5hbWVzcGFjZSBUZXN0
CisKK25hbWVzcGFjZSBKU0MgeworI2lmIEVOQUJMRShEVU1NWV9GRUFUVVJFKQordGVtcGxhdGU8
PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6R2V0Q3VycmVudFRpbWU+IHsKKyAgICBzdGF0aWMg
SW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVldWU6OlNjcmlwdE1lbW9pemVkRGF0
YTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKKworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFRlc3Q6OkdldEN1cnJlbnRU
aW1lJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1
bmlxdWVfcHRyPFRlc3Q6OkdldEN1cnJlbnRUaW1lPiYpOworfTsKKyNlbmRpZiAvLyBFTkFCTEUo
RFVNTVlfRkVBVFVSRSkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6U2V0
UmFuZG9tU2VlZD4geworICAgIHN0YXRpYyBJbnB1dFF1ZXVlIHF1ZXVlKCkgeyByZXR1cm4gSW5w
dXRRdWV1ZTo6U2NyaXB0TWVtb2l6ZWREYXRhOyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSgpOworCisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEpTQzo6RW5jb2RlZFZhbHVl
JiwgY29uc3QgVGVzdDo6U2V0UmFuZG9tU2VlZCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShK
U0M6OkVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxUZXN0OjpTZXRSYW5kb21TZWVkPiYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBUZXN0IHsKKyNpZiBFTkFC
TEUoRFVNTVlfRkVBVFVSRSkKK2NsYXNzIEdldEN1cnJlbnRUaW1lIDogcHVibGljIE5vbmRldGVy
bWluaXN0aWNJbnB1dDxHZXRDdXJyZW50VGltZT4geworcHVibGljOgorICAgIEdldEN1cnJlbnRU
aW1lKGRvdWJsZSBjdXJyZW50VGltZSk7CisgICAgdmlydHVhbCB+R2V0Q3VycmVudFRpbWUoKTsK
KworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRpbWU7
IH0KK3ByaXZhdGU6CisgICAgZG91YmxlIG1fY3VycmVudFRpbWU7Cit9OworI2VuZGlmIC8vIEVO
QUJMRShEVU1NWV9GRUFUVVJFKQorCitjbGFzcyBTZXRSYW5kb21TZWVkIDogcHVibGljIE5vbmRl
dGVybWluaXN0aWNJbnB1dDxTZXRSYW5kb21TZWVkPiB7CitwdWJsaWM6CisgICAgU2V0UmFuZG9t
U2VlZCh1aW50NjRfdCByYW5kb21TZWVkKTsKKyAgICB2aXJ0dWFsIH5TZXRSYW5kb21TZWVkKCk7
CisKKyAgICB1aW50NjRfdCByYW5kb21TZWVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5kb21TZWVk
OyB9Citwcml2YXRlOgorICAgIHVpbnQ2NF90IG1fcmFuZG9tU2VlZDsKK307Cit9IC8vIG5hbWVz
cGFjZSBUZXN0CisKKyNkZWZpbmUgVEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0gobWFj
cm8pIFwKKyAgICBtYWNybyhHZXRDdXJyZW50VGltZSkgXAorICAgIG1hY3JvKFNldFJhbmRvbVNl
ZWQpIFwKKyAgICBcCisvLyBlbmQgb2YgVEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0gK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQorCisjZW5kaWYgLy8gZ2VuZXJhdGVfaW5w
dXRfd2l0aF9ndWFyZF9qc29uX1Rlc3RSZXBsYXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlu
cHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1p
bnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDJiYjU2YjUyNWM0NDZiMGRiMTEzOGJkZTdkNWYyZGM1Y2Y5NjJiYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlu
cHV0cy5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIGdlbmVyYXRlLWlucHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbgorLy8gYnkgdGhl
IHNjcmlwdDogSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVyYXRvclJlcGxh
eUlucHV0cy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZ2VuZXJhdGUtaW5w
dXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaCIKKworI2lmIEVO
QUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUgIkludGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVE
dW1teS5oIgorI2luY2x1ZGUgPHBsYXRmb3JtL0V4dGVybmFsTmFtZXNwYWNlSW1wbEluY2x1ZGVE
dW1teS5oPgorI2luY2x1ZGUgPHRoaW5ncy9KU1RoaW5nLmg+CisjaW5jbHVkZSA8dGhpbmdzL1dl
YlRoaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0IHsKK0FycmF5T2ZUaGluZ3M6OkFycmF5T2ZUaGlu
Z3MoVmVjdG9yPGRvdWJsZT4mIGRvdWJsZXMsIFZlY3RvcjxKU1RoaW5nPiYganN0aGluZ3MsIFZl
Y3RvcjxXZWJUaGluZz4mIHdlYnRoaW5ncykKKyAgICA6IE5vbmRldGVybWluaXN0aWNJbnB1dDxB
cnJheU9mVGhpbmdzPigpCisgICAgLCBtX2RvdWJsZXMoZG91YmxlcykKKyAgICAsIG1fanN0aGlu
Z3MoanN0aGluZ3MpCisgICAgLCBtX3dlYnRoaW5ncyh3ZWJ0aGluZ3MpCit7Cit9CisKK0FycmF5
T2ZUaGluZ3M6On5BcnJheU9mVGhpbmdzKCkKK3sKK30KK30gLy8gbmFtZXNwYWNlIFRlc3QKKwor
bmFtZXNwYWNlIEpTQyB7Citjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6OkFy
cmF5T2ZUaGluZ3M+Ojp0eXBlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiB0eXBlKCJBcnJheU9mVGhpbmdzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK3ZvaWQgSW5wdXRUcmFpdHM8
VGVzdDo6QXJyYXlPZlRoaW5ncz46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwg
Y29uc3QgVGVzdDo6QXJyYXlPZlRoaW5ncyYgaW5wdXQpCit7CisgICAgZW5jb2RlZFZhbHVlLnB1
dDxWZWN0b3I8ZG91YmxlPj4oQVNDSUlMaXRlcmFsKCJkb3VibGVzIiksIGlucHV0LmRvdWJsZXMo
KSk7CisgICAgZW5jb2RlZFZhbHVlLnB1dDxWZWN0b3I8SlNUaGluZz4+KEFTQ0lJTGl0ZXJhbCgi
anN0aGluZ3MiKSwgaW5wdXQuanN0aGluZ3MoKSk7CisgICAgZW5jb2RlZFZhbHVlLnB1dDxWZWN0
b3I8V2ViQ29yZTo6V2ViVGhpbmc+PihBU0NJSUxpdGVyYWwoIndlYnRoaW5ncyIpLCBpbnB1dC53
ZWJ0aGluZ3MoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6QXJyYXlPZlRoaW5ncz46
OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6
OkFycmF5T2ZUaGluZ3M+JiBpbnB1dCkKK3sKKyAgICBWZWN0b3I8ZG91YmxlPiBkb3VibGVzOwor
ICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxWZWN0b3I8ZG91YmxlPj4oQVNDSUlMaXRlcmFsKCJk
b3VibGVzIiksIGRvdWJsZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8
SlNUaGluZz4ganN0aGluZ3M7CisgICAgaWYgKCFlbmNvZGVkVmFsdWUuZ2V0PFZlY3RvcjxKU1Ro
aW5nPj4oQVNDSUlMaXRlcmFsKCJqc3RoaW5ncyIpLCBqc3RoaW5ncykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpXZWJUaGluZz4gd2VidGhpbmdzOworICAg
IGlmICghZW5jb2RlZFZhbHVlLmdldDxWZWN0b3I8V2ViQ29yZTo6V2ViVGhpbmc+PihBU0NJSUxp
dGVyYWwoIndlYnRoaW5ncyIpLCB3ZWJ0aGluZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6QXJyYXlPZlRoaW5ncz4oZG91Ymxl
cywganN0aGluZ3MsIHdlYnRoaW5ncyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0
ZS1pbnB1dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJiNTIwNjkxMDZhZDQ4M2EwZmY1NDY0ZTQ2M2Q5OGVmZDdiNzI5OWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uLVRlc3RSZXBsYXlJ
bnB1dHMuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gZ2VuZXJhdGUtaW5wdXQtd2l0aC12ZWN0b3ItbWVtYmVycy5qc29uCisvLyBieSB0aGUg
c2NyaXB0OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5
SW5wdXRzLnB5CisKKyNpZm5kZWYgZ2VuZXJhdGVfaW5wdXRfd2l0aF92ZWN0b3JfbWVtYmVyc19q
c29uX1Rlc3RSZXBsYXlJbnB1dHNfaAorI2RlZmluZSBnZW5lcmF0ZV9pbnB1dF93aXRoX3ZlY3Rv
cl9tZW1iZXJzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExB
WSkKKyNpbmNsdWRlICJJbnRlcm5hbE5hbWVzcGFjZUhlYWRlckluY2x1ZGVEdW1teS5oIgorI2lu
Y2x1ZGUgPHBsYXRmb3JtL0V4dGVybmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYlRoaW5nOworfQorCituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIEpTVGhpbmc7Cit9CisKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgQXJyYXlP
ZlRoaW5nczsKK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNlIEpTQyB7Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBJbnB1dFRyYWl0czxUZXN0OjpBcnJheU9mVGhpbmdzPiB7CisgICAgc3RhdGlj
IElucHV0UXVldWUgcXVldWUoKSB7IHJldHVybiBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERh
dGE7IH0KKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCk7CisKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoSlNDOjpFbmNvZGVkVmFsdWUmLCBjb25zdCBUZXN0OjpBcnJheU9mVGhp
bmdzJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1
bmlxdWVfcHRyPFRlc3Q6OkFycmF5T2ZUaGluZ3M+Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworbmFtZXNwYWNlIFRlc3QgeworY2xhc3MgQXJyYXlPZlRoaW5ncyA6IHB1YmxpYyBOb25k
ZXRlcm1pbmlzdGljSW5wdXQ8QXJyYXlPZlRoaW5ncz4geworcHVibGljOgorICAgIEFycmF5T2ZU
aGluZ3MoVmVjdG9yPGRvdWJsZT4mIGRvdWJsZXMsIFZlY3RvcjxKU1RoaW5nPiYganN0aGluZ3Ms
IFZlY3RvcjxXZWJUaGluZz4mIHdlYnRoaW5ncyk7CisgICAgdmlydHVhbCB+QXJyYXlPZlRoaW5n
cygpOworCisgICAgY29uc3QgVmVjdG9yPGRvdWJsZT4mIGRvdWJsZXMoKSBjb25zdCB7IHJldHVy
biBtX2RvdWJsZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8SlNUaGluZz4mIGpzdGhpbmdzKCkgY29u
c3QgeyByZXR1cm4gbV9qc3RoaW5nczsgfQorICAgIGNvbnN0IFZlY3RvcjxXZWJUaGluZz4mIHdl
YnRoaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fd2VidGhpbmdzOyB9Citwcml2YXRlOgorICAgIFZl
Y3Rvcjxkb3VibGU+IG1fZG91YmxlczsKKyAgICBWZWN0b3I8SlNUaGluZz4gbV9qc3RoaW5nczsK
KyAgICBWZWN0b3I8V2ViVGhpbmc+IG1fd2VidGhpbmdzOworfTsKK30gLy8gbmFtZXNwYWNlIFRl
c3QKKworI2RlZmluZSBURVNUX1JFUExBWV9JTlBVVF9OQU1FU19GT1JfRUFDSChtYWNybykgXAor
ICAgIG1hY3JvKEFycmF5T2ZUaGluZ3MpIFwKKyAgICBcCisvLyBlbmQgb2YgVEVTVF9SRVBMQVlf
SU5QVVRfTkFNRVNfRk9SX0VBQ0gKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQorCisj
ZW5kaWYgLy8gZ2VuZXJhdGVfaW5wdXRfd2l0aF92ZWN0b3JfbWVtYmVyc19qc29uX1Rlc3RSZXBs
YXlJbnB1dHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlucHV0cy13aXRoLWZsYWdzLmpzb24tZXJyb3Ig
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbi1lcnJvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTFiODZiYTdm
NTMzNTBjZmU1OGM1Mzc5YjMwODc3ZmZmYzBhNGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWlu
cHV0cy13aXRoLWZsYWdzLmpzb24tZXJyb3IKQEAgLTAsMCArMSBAQAorRVJST1I6IER1cGxpY2F0
ZSBpbnB1dCB3aXRoIG5hbWU6IFNjYWxhcklucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtbWVtb2l6ZWQt
dHlwZS1zaGFwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBl
LXNoYXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlM2M2MmYzODQ3
NmVmNTkwZDM2MDYyM2YwZGMzZDhlMzAxMmMxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtbWVt
b2l6ZWQtdHlwZS1zaGFwZXMuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApAQCAtMCwwICsxLDEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLW1lbW9p
emVkLXR5cGUtc2hhcGVzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IEphdmFTY3JpcHRDb3JlL3Jl
cGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkKKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImdlbmVyYXRlLW1lbW9pemVkLXR5cGUtc2hhcGVzLmpzb24tVGVz
dFJlcGxheUlucHV0cy5oIgorCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisjaW5jbHVkZSAiSW50
ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxhdGZvcm0vRXh0
ZXJuYWxOYW1lc3BhY2VJbXBsSW5jbHVkZUR1bW15Lmg+CisKK25hbWVzcGFjZSBUZXN0IHsKK1Nj
YWxhcklucHV0OjpTY2FsYXJJbnB1dChTY2FsYXJUeXBlIGRhdGEpCisgICAgOiBOb25kZXRlcm1p
bmlzdGljSW5wdXQ8U2NhbGFySW5wdXQ+KCkKKyAgICAsIG1fZGF0YShkYXRhKQoreworfQorCitT
Y2FsYXJJbnB1dDo6flNjYWxhcklucHV0KCkKK3sKK30KKworTWFwSW5wdXQ6Ok1hcElucHV0KHN0
ZDo6dW5pcXVlX3B0cjxNYXBUeXBlPiBkYXRhKQorICAgIDogTm9uZGV0ZXJtaW5pc3RpY0lucHV0
PE1hcElucHV0PigpCisgICAgLCBtX2RhdGEoc3RkOjptb3ZlKGRhdGEpKQoreworfQorCitNYXBJ
bnB1dDo6fk1hcElucHV0KCkKK3sKK30KK30gLy8gbmFtZXNwYWNlIFRlc3QKKworbmFtZXNwYWNl
IEpTQyB7Citjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6OlNjYWxhcklucHV0
Pjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gdHlwZSgiU2NhbGFySW5wdXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICByZXR1cm4gdHlwZTsKK30KKwordm9pZCBJbnB1dFRyYWl0czxUZXN0OjpTY2FsYXJJ
bnB1dD46OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6U2Nh
bGFySW5wdXQmIGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8U2NhbGFyVHlwZT4oQVND
SUlMaXRlcmFsKCJkYXRhIiksIGlucHV0LmRhdGEoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8
VGVzdDo6U2NhbGFySW5wdXQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0
ZDo6dW5pcXVlX3B0cjxUZXN0OjpTY2FsYXJJbnB1dD4mIGlucHV0KQoreworICAgIFNjYWxhclR5
cGUgZGF0YTsKKyAgICBpZiAoIWVuY29kZWRWYWx1ZS5nZXQ8U2NhbGFyVHlwZT4oQVNDSUlMaXRl
cmFsKCJkYXRhIiksIGRhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnB1dCA9
IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6U2NhbGFySW5wdXQ+KGRhdGEpOworICAgIHJldHVybiB0
cnVlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIElucHV0VHJhaXRzPFRlc3Q6Ok1hcElucHV0
Pjo6dHlwZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gdHlwZSgiTWFwSW5wdXQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICByZXR1cm4gdHlwZTsKK30KKwordm9pZCBJbnB1dFRyYWl0czxUZXN0OjpNYXBJbnB1dD46
OmVuY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgY29uc3QgVGVzdDo6TWFwSW5wdXQm
IGlucHV0KQoreworICAgIGVuY29kZWRWYWx1ZS5wdXQ8TWFwVHlwZT4oQVNDSUlMaXRlcmFsKCJk
YXRhIiksIGlucHV0LmRhdGEoKSk7Cit9CisKK2Jvb2wgSW5wdXRUcmFpdHM8VGVzdDo6TWFwSW5w
dXQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxU
ZXN0OjpNYXBJbnB1dD4mIGlucHV0KQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXBUeXBlPiBk
YXRhOworICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxNYXBUeXBlPihBU0NJSUxpdGVyYWwoImRh
dGEiKSwgZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlucHV0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXN0OjpNYXBJbnB1dD4oc3RkOjptb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JF
UExBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNoYXBlcy5qc29uLVRlc3RSZXBs
YXlJbnB1dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNoYXBlcy5qc29uLVRlc3RSZXBsYXlJbnB1
dHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZDU1ZDU4OWRjOTgzODUzNDQ2ODRhYjhhMzdkN2ZiNzUxZjdiN2Q1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLW1lbW9pemVkLXR5cGUtc2hhcGVzLmpzb24tVGVzdFJl
cGxheUlucHV0cy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBnZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNoYXBlcy5qc29uCisvLyBieSB0aGUg
c2NyaXB0OiBKYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5
SW5wdXRzLnB5CisKKyNpZm5kZWYgZ2VuZXJhdGVfbWVtb2l6ZWRfdHlwZV9zaGFwZXNfanNvbl9U
ZXN0UmVwbGF5SW5wdXRzX2gKKyNkZWZpbmUgZ2VuZXJhdGVfbWVtb2l6ZWRfdHlwZV9zaGFwZXNf
anNvbl9UZXN0UmVwbGF5SW5wdXRzX2gKKworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1
ZGUgIkludGVybmFsTmFtZXNwYWNlSGVhZGVySW5jbHVkZUR1bW15LmgiCisjaW5jbHVkZSA8cGxh
dGZvcm0vRXh0ZXJuYWxOYW1lc3BhY2VIZWFkZXJJbmNsdWRlRHVtbXkuaD4KKworCisKK25hbWVz
cGFjZSBUZXN0IHsKK2NsYXNzIFNjYWxhcklucHV0OworY2xhc3MgTWFwSW5wdXQ7Cit9IC8vIG5h
bWVzcGFjZSBUZXN0CisKK25hbWVzcGFjZSBKU0MgewordGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRU
cmFpdHM8VGVzdDo6U2NhbGFySW5wdXQ+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgp
IHsgcmV0dXJuIElucHV0UXVldWU6OlNjcmlwdE1lbW9pemVkRGF0YTsgfQorICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6
OkVuY29kZWRWYWx1ZSYsIGNvbnN0IFRlc3Q6OlNjYWxhcklucHV0Jik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEpTQzo6RW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6OlNjYWxh
cklucHV0PiYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSW5wdXRUcmFpdHM8VGVzdDo6TWFw
SW5wdXQ+IHsKKyAgICBzdGF0aWMgSW5wdXRRdWV1ZSBxdWV1ZSgpIHsgcmV0dXJuIElucHV0UXVl
dWU6OlNjcmlwdE1lbW9pemVkRGF0YTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuY29kZShKU0M6OkVuY29kZWRWYWx1ZSYsIGNv
bnN0IFRlc3Q6Ok1hcElucHV0Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEpTQzo6RW5jb2Rl
ZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFRlc3Q6Ok1hcElucHV0PiYpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBUZXN0IHsKK2NsYXNzIFNjYWxhcklucHV0IDogcHVi
bGljIE5vbmRldGVybWluaXN0aWNJbnB1dDxTY2FsYXJJbnB1dD4geworcHVibGljOgorICAgIFNj
YWxhcklucHV0KFNjYWxhclR5cGUgZGF0YSk7CisgICAgdmlydHVhbCB+U2NhbGFySW5wdXQoKTsK
KworICAgIFNjYWxhclR5cGUgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorcHJpdmF0
ZToKKyAgICBTY2FsYXJUeXBlIG1fZGF0YTsKK307CisKK2NsYXNzIE1hcElucHV0IDogcHVibGlj
IE5vbmRldGVybWluaXN0aWNJbnB1dDxNYXBJbnB1dD4geworcHVibGljOgorICAgIE1hcElucHV0
KHN0ZDo6dW5pcXVlX3B0cjxNYXBUeXBlPiBkYXRhKTsKKyAgICB2aXJ0dWFsIH5NYXBJbnB1dCgp
OworCisgICAgY29uc3QgTWFwVHlwZSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuICptX2RhdGE7IH0K
K3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPE1hcFR5cGU+IG1fZGF0YTsKK307Cit9IC8v
IG5hbWVzcGFjZSBUZXN0CisKKyNkZWZpbmUgVEVTVF9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VB
Q0gobWFjcm8pIFwKKyAgICBtYWNybyhTY2FsYXJJbnB1dCkgXAorICAgIG1hY3JvKE1hcElucHV0
KSBcCisgICAgXAorLy8gZW5kIG9mIFRFU1RfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9FQUNICisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExBWSkKKworI2VuZGlmIC8vIGdlbmVyYXRlX21lbW9p
emVkX3R5cGVfc2hhcGVzX2pzb25fVGVzdFJlcGxheUlucHV0c19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1jLXN0eWxlLWVu
dW0tbm8tc3RvcmFnZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2ZhaWwtb24tYy1zdHlsZS1lbnVtLW5vLXN0b3JhZ2UuanNvbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MmZjYThjNWI3YTdhNDkwYmY1YmI3NTJjNTExYTEwYzZjZmQ3OGMzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tYy1z
dHlsZS1lbnVtLW5vLXN0b3JhZ2UuanNvbgpAQCAtMCwwICsxLDIzIEBACit7CisgICAgInR5cGVz
IjogeworICAgICAgICAiV2ViQ29yZSI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAibmFtZSI6ICJNb3VzZUJ1dHRvbiIsICJzaGFwZSI6ICJTQ0FMQVIiLAorICAgICAgICAgICAg
ICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIk5vQnV0
dG9uIiwgIkxlZnRCdXR0b24iLCAiTWlkZGxlQnV0dG9uIiwgIlJpZ2h0QnV0dG9uIl0sCisgICAg
ICAgICAgICAgICAgImhlYWRlciI6ICJwYXRoL3RvL01vdXNlQnV0dG9uLmgiCisgICAgICAgICAg
ICB9CisgICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAiU2F2ZWRNb3VzZUJ1dHRvbiIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiU3VwcGxpZXMgYSBtb3VzZSBidXR0b24gZW51bSB2YWx1ZS4iLAorICAgICAgICAg
ICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJ1dHRvbiIsICJ0eXBlIjogIk1vdXNlQnV0dG9u
IiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1kdXBsaWNhdGUt
aW5wdXQtbmFtZXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90
ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS1pbnB1dC1uYW1lcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZDZi
YzliMmJkMDg3OWY2OWNlYTQ0ZGUyZTBjNzY5ODBhMmExOGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1kdXBsaWNh
dGUtaW5wdXQtbmFtZXMuanNvbgpAQCAtMCwwICsxLDI3IEBACit7CisgICAgInR5cGVzIjogewor
ICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6ICJkb3VibGUiLCAic2hh
cGUiOiAiU0NBTEFSIiB9LAorICAgICAgICAgICAgeyAibmFtZSI6ICJ1aW50NjRfdCIsICJzaGFw
ZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAiaW5wdXRzIjogWworICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRDdXJyZW50VGltZSIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkg
YW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQi
LAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJj
dXJyZW50VGltZSIsICJ0eXBlIjogImRvdWJsZSIgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRDdXJyZW50VGltZSIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyB0aGUgUFJORyBzZWVkIHVzZWQgYnkgTWF0aC5y
YW5kb20oKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAg
ICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJhbmRvbVNl
ZWQiLCAidHlwZSI6ICJ1aW50NjRfdCIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAg
XQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2ZhaWwtb24tZHVwbGljYXRlLXR5cGUtbmFtZXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS10eXBlLW5hbWVzLmpz
b24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTdhNjdmNzU4MDkwNjdmYWJiZmVlZTAyOGNlZGE1NmQ1NGU4NWMxMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90
ZXN0cy9mYWlsLW9uLWR1cGxpY2F0ZS10eXBlLW5hbWVzLmpzb24KQEAgLTAsMCArMSwyMiBAQAor
eworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5h
bWUiOiAidWludDY0X3QiLCAic2hhcGUiOiAiU0NBTEFSIiB9LAorICAgICAgICAgICAgeyAibmFt
ZSI6ICJ1aW50NjRfdCIsICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisK
KyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTZXRSYW5k
b21TZWVkIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXRzIHRoZSBQUk5HIHNlZWQg
dXNlZCBieSBNYXRoLnJhbmRvbSgpLiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01F
TU9JWkVEIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmFuZG9tU2VlZCIsCisgICAgICAgICAgICAgICAg
ICAgICJ0eXBlIjogInVpbnQ2NF90IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWVudW0tdHlwZS1taXNzaW5nLXZhbHVlcy5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tZW51
bS10eXBlLW1pc3NpbmctdmFsdWVzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFiOWY5YzYxOWZmYzY2MDgz
MDU0YjU2ZmZmOGYyYzQ3NmM0YmQxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLWVudW0tdHlwZS1taXNzaW5nLXZh
bHVlcy5qc29uCkBAIC0wLDAgKzEsMjEgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJH
bG9iYWwiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiTW91c2VC
dXR0b24iLCAic2hhcGUiOiAiU0NBTEFSIiwKKyAgICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVO
VU0iXQorICAgICAgICAgICAgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBb
CisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNhdmVkTW91c2VCdXR0b24iLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN1cHBsaWVzIGEgbW91c2UgYnV0dG9uIGVudW0gdmFs
dWUuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAg
ICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjdXJyZW50VGltZSIs
ICJ0eXBlIjogIk1vdXNlQnV0dG9uIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBd
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZmFpbC1vbi1taXNzaW5nLWlucHV0LW1lbWJlci1uYW1lLmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLWlucHV0LW1lbWJl
ci1uYW1lLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlhZjQ5MWUyNTAwMWE0ODkxY2Q1ZGFmOTNmYmQyNzgw
ODE2MzVmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkv
c2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbWVtYmVyLW5hbWUuanNvbgpAQCAt
MCwwICsxLDIwIEBACit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAg
ICAgICAgICAgeyAibmFtZSI6ICJkb3VibGUiLCAic2hhcGUiOiAiU0NBTEFSIiB9CisgICAgICAg
IF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAiR2V0Q3VycmVudFRpbWUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN1cHBs
aWVzIHRoZSBzeXN0ZW0gdGltZSB0byBEYXRlLm5vdygpIGFuZCBuZXcgRGF0ZSgpLiIsCisgICAg
ICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAgICJtZW1iZXJz
IjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZG91
YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0
cy9mYWlsLW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tbWlzc2luZy1pbnB1dC1uYW1lLmpzb24KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODQzMTA3NjdjODM1NDAwNDg4NDg2NWE4N2Q0ZWM3NjY5NWJiOTEwYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9m
YWlsLW9uLW1pc3NpbmctaW5wdXQtbmFtZS5qc29uCkBAIC0wLDAgKzEsMjAgQEAKK3sKKyAgICAi
dHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAgICAgICAgICB7ICJuYW1lIjogImRv
dWJsZSIsICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAiaW5w
dXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMg
dGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAg
ICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBb
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjdXJyZW50
VGltZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5n
LWlucHV0LXF1ZXVlLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZmFpbC1vbi1taXNzaW5nLWlucHV0LXF1ZXVlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQwMjM1
MjFhMzE1ZGNiZGJhYmMzYjM0MmFiNjA2OTE0MTQ3ODkxOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3Npbmct
aW5wdXQtcXVldWUuanNvbgpAQCAtMCwwICsxLDIwIEBACit7CisgICAgInR5cGVzIjogeworICAg
ICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6ICJkb3VibGUiLCAic2hhcGUi
OiAiU0NBTEFSIiB9CisgICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgIm5hbWUiOiAiR2V0Q3VycmVudFRpbWUiLAorICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlN1cHBsaWVzIHRoZSBzeXN0ZW0gdGltZSB0byBEYXRlLm5vdygpIGFu
ZCBuZXcgRGF0ZSgpLiIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImN1cnJlbnRUaW1lIiwKKyAgICAgICAg
ICAgICAgICAgICAgInR5cGUiOiAiZG91YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctdHlwZS1tb2RlLmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNz
aW5nLXR5cGUtbW9kZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZDM3YjcxM2FhN2Y5MGIyNzMyZmIyNTY0
ZWM5MzUzNjg2YTgzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLXR5cGUtbW9kZS5qc29uCkBAIC0w
LDAgKzEsMjEgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAg
ICAgICAgICB7ICJuYW1lIjogImRvdWJsZSIgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJp
bnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIkdldEN1cnJlbnRUaW1l
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGllcyB0aGUgc3lzdGVtIHRpbWUg
dG8gRGF0ZS5ub3coKSBhbmQgbmV3IERhdGUoKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlND
UklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImN1cnJlbnRUaW1lIiwKKyAgICAgICAg
ICAgICAgICAgICAgInR5cGUiOiAiZG91YmxlIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW1pc3NpbmctdHlwZS1uYW1lLmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNz
aW5nLXR5cGUtbmFtZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNWRlMmIyZGM5YWUzZDBhOTRiNWQ0YjZh
MzhhNjFkYWEyZTI2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1taXNzaW5nLXR5cGUtbmFtZS5qc29uCkBAIC0w
LDAgKzEsMjEgQEAKK3sKKyAgICAidHlwZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAg
ICAgICAgICB7ICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAi
aW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRDdXJyZW50VGlt
ZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhlIHN5c3RlbSB0aW1l
IHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJT
Q1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjdXJyZW50VGltZSIsCisgICAgICAg
ICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1uby1pbnB1dHMuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW5vLWlucHV0cy5q
c29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViOTRiNWJkNDRjM2Q0MWQwMmUwMDhmNmFmYmY0N2E1ZjAyZGI1NjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZmFpbC1vbi1uby1pbnB1dHMuanNvbgpAQCAtMCwwICsxLDcgQEAKK3sKKyAgICAidHlw
ZXMiOiB7CisgICAgICAgICJHbG9iYWwiOiBbCisgICAgICAgICAgICB7ICJuYW1lIjogImRvdWJs
ZSIsICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9mYWlsLW9uLW5vLXR5
cGVzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFp
bC1vbi1uby10eXBlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNjBjNTVhYmVkNmE1MDlkMmIxMzQwMDZk
MjUwMjY5M2Q3YzQ4ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi1uby10eXBlcy5qc29uCkBAIC0wLDAgKzEsMTUg
QEAKK3sKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJH
ZXRDdXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhl
IHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAg
ICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjdXJyZW50VGlt
ZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCisgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1p
bnB1dC1xdWV1ZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2ZhaWwtb24tdW5rbm93bi1pbnB1dC1xdWV1ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MzQyNTgx
YWEzMThlOTAzNmUzMDViMDNmZjQ1NWZiNDY1NmFmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi11bmtub3duLWlu
cHV0LXF1ZXVlLmpzb24KQEAgLTAsMCArMSwyMSBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAg
ICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91YmxlIiwgInNoYXBlIjog
IlNDQUxBUiIgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogIkdldEN1cnJlbnRUaW1lIiwKKyAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJTdXBwbGllcyB0aGUgc3lzdGVtIHRpbWUgdG8gRGF0ZS5ub3coKSBhbmQg
bmV3IERhdGUoKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU9JWkVEIiwKKyAg
ICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiY3VycmVudFRpbWUiLAorICAgICAgICAgICAgICAgICAgICAidHlwZSI6
ICJkb3VibGUiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9Cisg
ICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRz
L3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi1tZW1iZXItdHlwZS5q
c29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE4ZDkxZjlhZWQ1OTQzZTU5MWY5MmZmZjI2ZjMxMTgyYjU3Yjc4ZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZmFpbC1vbi11bmtub3duLW1lbWJlci10eXBlLmpzb24KQEAgLTAsMCArMSwyMSBAQAor
eworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5h
bWUiOiAidWludDY0X3QiLCAic2hhcGUiOiAiU0NBTEFSIiB9CisgICAgICAgIF0KKyAgICB9LAor
CisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU2V0UmFu
ZG9tU2VlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyB0aGUgUFJORyBzZWVk
IHVzZWQgYnkgTWF0aC5yYW5kb20oKS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9N
RU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICJuYW1lIjogInJhbmRvbVNlZWQiLAorICAgICAgICAgICAgICAg
ICAgICAidHlwZSI6ICJkb3VibGUiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi10eXBlLXNoYXBlLmpzb24gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZmFpbC1vbi11bmtub3duLXR5
cGUtc2hhcGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzIwMzQ0YmZmMGRiOTc1YmYyZDg1OTcyYjU0NjMx
OTkxZGZmYzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2ZhaWwtb24tdW5rbm93bi10eXBlLXNoYXBlLmpzb24KQEAgLTAsMCAr
MSwyMSBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAgICAgIkdsb2JhbCI6IFsKKyAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZG91YmxlIiwgInNoYXBlIjogIkJPTktFUlMiIH0KKyAgICAgICAgXQor
ICAgIH0sCisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJHZXRDdXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMg
dGhlIHN5c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAg
ICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBb
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjdXJyZW50
VGltZSIsCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRvdWJsZSIKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtZW51bS1l
bmNvZGluZy1oZWxwZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1lbnVtLWVuY29kaW5nLWhlbHBl
cnMtd2l0aC1ndWFyZGVkLXZhbHVlcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNjFjZDY2YTFjMWQ0NTIy
MDBjNzY3Y2YxNmQxYjUxMzIzNGM0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtZW51bS1lbmNvZGluZy1oZWxw
ZXJzLXdpdGgtZ3VhcmRlZC12YWx1ZXMuanNvbgpAQCAtMCwwICsxLDI3IEBACit7CisgICAgInR5
cGVzIjogeworICAgICAgICAiV2ViQ29yZSI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJNb3VzZUJ1dHRvbiIsICJzaGFwZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6
ICJ1bnNpZ25lZCIsCisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisgICAgICAg
ICAgICAgICAgInZhbHVlcyI6IFsiTm9CdXR0b24iLCAiTGVmdEJ1dHRvbiIsICJNaWRkbGVCdXR0
b24iLCAiUmlnaHRCdXR0b24iXSwKKyAgICAgICAgICAgICAgICAiZ3VhcmRlZF92YWx1ZXMiOiB7
CisgICAgICAgICAgICAgICAgICAgICJFTkFCTEUoU0lERV9CVVRUT05TKSI6IFsiTGVmdFNpZGVC
dXR0b24iLCAiUmlnaHRTaWRlQnV0dG9uIl0sCisgICAgICAgICAgICAgICAgICAgICJQTEFURk9S
TShXSU5ET1dTKSI6IFsiV2luZG93c0J1dHRvbiJdCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAiaGVhZGVyIjogInBsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oIgorICAg
ICAgICAgICAgfQorICAgICAgICBdCisgICAgfSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJuYW1lIjogIlNhdmVkTW91c2VCdXR0b24iLAorICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlN1cHBsaWVzIGEgbW91c2UgYnV0dG9uIGVudW0gdmFsdWUuIiwKKyAg
ICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJl
cnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJidXR0b24iLCAidHlwZSI6ICJNb3Vz
ZUJ1dHRvbiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWVu
dW0tZW5jb2RpbmctaGVscGVycy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWVudW0tZW5jb2RpbmctaGVscGVycy5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY0YTFkMDJjMWUxZTk5NmM5NmE0MDZhMTlmNTM2NzI4ZjM3ZGVkOGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJh
dGUtZW51bS1lbmNvZGluZy1oZWxwZXJzLmpzb24KQEAgLTAsMCArMSwzMSBAQAoreworICAgICJ0
eXBlcyI6IHsKKyAgICAgICAgIkphdmFTY3JpcHRDb3JlIjogWworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJuYW1lIjogIklucHV0UXVldWUiLCAic2hhcGUiOiAiU0NBTEFSIiwKKyAg
ICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU1fQ0xBU1MiXSwKKyAgICAgICAgICAgICAgICAi
dmFsdWVzIjogWyJFdmVudExvb3BJbnB1dCIsICJMb2FkZXJNZW1vaXplZERhdGEiLCAiU2NyaXB0
TWVtb2l6ZWREYXRhIl0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJyZXBsYXkvTm9uZGV0
ZXJtaW5pc3RpY0lucHV0LmgiCisgICAgICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAgICJX
ZWJDb3JlIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIk1vdXNl
QnV0dG9uIiwgInNoYXBlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVuc2lnbmVkIiwKKyAgICAg
ICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU0iXSwKKyAgICAgICAgICAgICAgICAidmFsdWVzIjog
WyJOb0J1dHRvbiIsICJMZWZ0QnV0dG9uIiwgIk1pZGRsZUJ1dHRvbiIsICJSaWdodEJ1dHRvbiJd
LAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50
LmgiCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsK
KyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU2F2ZWRNb3VzZUJ1dHRvbiIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgYSBtb3VzZSBidXR0b24gZW51bSB2YWx1
ZS4iLAorICAgICAgICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAg
ICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJ1dHRvbiIsICJ0eXBl
IjogIk1vdXNlQnV0dG9uIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJhdGUtZXZlbnQtbG9vcC1zaGFwZS10eXBlcy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUtdHlwZXMuanNv
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xYTExZGEzY2Y2Mzc5ZWQyODE1MjU0MzVhYWViOGQ2Y2MzMmUzMjIyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rl
c3RzL2dlbmVyYXRlLWV2ZW50LWxvb3Atc2hhcGUtdHlwZXMuanNvbgpAQCAtMCwwICsxLDQ1IEBA
Cit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAi
bmFtZSI6ICJTY2FsYXJUeXBlIiwgInNoYXBlIjogIlNDQUxBUiIgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiOiAiTWFwVHlwZSIsICJzaGFwZSI6ICJNQVAiIH0sCisgICAgICAgICAgICB7ICJuYW1l
IjogIlNoYXJlZE1hcFR5cGUiLCAic2hhcGUiOiAiU0hBUkVEX01BUCIgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiOiAiTGlzdFR5cGUiLCAic2hhcGUiOiAiTElTVCIgfQorICAgICAgICBdCisgICAg
fSwKKworICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNj
YWxhcklucHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAg
InF1ZXVlIjogIkVWRU5UX0xPT1AiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAiU2NhbGFyVHlwZSIgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJNYXBJ
bnB1dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1
ZSI6ICJFVkVOVF9MT09QIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogIk1hcFR5cGUiIH0KKyAgICAgICAgICAgIF0K
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU2hhcmVkTWFwSW5w
dXQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsCisgICAgICAgICAgICAicXVldWUi
OiAiRVZFTlRfTE9PUCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJTaGFyZWRNYXBUeXBlIiB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIkxpc3RJbnB1
dCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1ZSI6
ICJFVkVOVF9MT09QIiwKKyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogIkxpc3RUeXBlIiB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZ2VuZXJhdGUtaW5wdXQtd2l0aC1ndWFyZC5qc29uIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgt
Z3VhcmQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Njk1MTE3OWM5YWVlZDM0YjBkY2FhYjlmMmE3MjMyY2Yz
ZTNjOTIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9z
Y3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgtZ3VhcmQuanNvbgpAQCAtMCwwICsxLDI4
IEBACit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAg
eyAibmFtZSI6ICJkb3VibGUiLCAic2hhcGUiOiAiU0NBTEFSIiB9LAorICAgICAgICAgICAgeyAi
bmFtZSI6ICJ1aW50NjRfdCIsICJzaGFwZSI6ICJTQ0FMQVIiIH0KKyAgICAgICAgXQorICAgIH0s
CisKKyAgICAiaW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJHZXRD
dXJyZW50VGltZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3VwcGxpZXMgdGhlIHN5
c3RlbSB0aW1lIHRvIERhdGUubm93KCkgYW5kIG5ldyBEYXRlKCkuIiwKKyAgICAgICAgICAgICJx
dWV1ZSI6ICJTQ1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgImd1YXJkIjogIkVOQUJMRShE
VU1NWV9GRUFUVVJFKSIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImN1cnJlbnRUaW1lIiwgInR5cGUiOiAiZG91YmxlIiB9CisgICAgICAgICAg
ICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNldFJhbmRv
bVNlZWQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldHMgdGhlIFBSTkcgc2VlZCB1
c2VkIGJ5IE1hdGgucmFuZG9tKCkuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVN
T0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyJuYW1l
IjogInJhbmRvbVNlZWQiLCAidHlwZSI6ICJ1aW50NjRfdCIgfQorICAgICAgICAgICAgXQorICAg
ICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9zY3JpcHRzL3Rlc3RzL2dlbmVyYXRlLWlucHV0LXdpdGgtdmVjdG9yLW1lbWJlcnMuanNvbiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1
dC13aXRoLXZlY3Rvci1tZW1iZXJzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgwMTEyZWEyNzViMTZjMjI5
OTdmZDQzMWU1YmY2ZThhMzkzODE0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dC13aXRoLXZlY3Rvci1t
ZW1iZXJzLmpzb24KQEAgLTAsMCArMSwyOCBAQAoreworICAgICJ0eXBlcyI6IHsKKyAgICAgICAg
Ikdsb2JhbCI6IFsKKyAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91YmxlIiwgInNoYXBlIjogIlND
QUxBUiIgfQorICAgICAgICBdLAorCisgICAgICAgICJKYXZhU2NyaXB0Q29yZSI6IFsKKyAgICAg
ICAgICAgIHsgIm5hbWUiOiAiSlNUaGluZyIsICJzaGFwZSI6ICJTQ0FMQVIiLCAiaGVhZGVyIjog
InRoaW5ncy9KU1RoaW5nLmgiIH0KKyAgICAgICAgXSwKKworICAgICAgICAiV2ViQ29yZSI6IFsK
KyAgICAgICAgICAgIHsgIm5hbWUiOiAiV2ViVGhpbmciLCAic2hhcGUiOiAiU0NBTEFSIiwgImhl
YWRlciI6ICJ0aGluZ3MvV2ViVGhpbmcuaCIgIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAi
aW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJBcnJheU9mVGhpbmdz
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdXBwbGllcyBhcnJheXMgb2YgdGhpbmdz
LiIsCisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAg
ICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG91YmxlcyIsICJ0eXBl
IjogImRvdWJsZSIsICJmbGFncyI6IFsiVkVDVE9SIl0gfSwKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImpzdGhpbmdzIiwgInR5cGUiOiAiSlNUaGluZyIsICJmbGFncyI6IFsiVkVDVE9SIl0g
fSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndlYnRoaW5ncyIsICJ0eXBlIjogIldlYlRo
aW5nIiwgImZsYWdzIjogWyJWRUNUT1IiXSB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAg
ICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZ2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1pbnB1dHMtd2l0aC1mbGFncy5qc29u
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEyNWE0OWU0MDQ2MDkxNjIzNjcxMjA0ZGExOGY5OTJmNWVjNDA5NjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVz
dHMvZ2VuZXJhdGUtaW5wdXRzLXdpdGgtZmxhZ3MuanNvbgpAQCAtMCwwICsxLDM2IEBACit7Cisg
ICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6
ICJTY2FsYXJUeXBlIiwgInNoYXBlIjogIlNDQUxBUiIgfQorICAgICAgICBdCisgICAgfSwKKwor
ICAgICJpbnB1dHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjYWxhcklu
cHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAgInF1ZXVl
IjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJTY2FsYXJUeXBlIiB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjYWxh
cklucHV0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAorICAgICAgICAgICAgInF1
ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAiZmxhZ3MiOiBbIkhJRERFTiJd
LAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJk
YXRhIiwgInR5cGUiOiAiU2NhbGFyVHlwZSIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTY2FsYXJJbnB1dCIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJTQ1JJUFRfTUVNT0la
RUQiLAorICAgICAgICAgICAgImZsYWdzIjogWyJDUkVBVEVfRlJPTV9QQUdFIl0sCisgICAgICAg
ICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGEiLCAidHlw
ZSI6ICJTY2FsYXJUeXBlIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJhdGUtbWVtb2l6ZWQtdHlwZS1zaGFwZXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXBsYXkvc2NyaXB0cy90ZXN0cy9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLXNoYXBlcy5qc29uCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlNGU3NmQ2ODNiOGQ5YzQzYjVmZjcyMmU1ZDQ3NmNiMmEyZWRlYTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMv
Z2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1zaGFwZXMuanNvbgpAQCAtMCwwICsxLDI3IEBACit7Cisg
ICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFsIjogWworICAgICAgICAgICAgeyAibmFtZSI6
ICJTY2FsYXJUeXBlIiwgInNoYXBlIjogIlNDQUxBUiIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
OiAiTWFwVHlwZSIsICJzaGFwZSI6ICJNQVAiIH0KKyAgICAgICAgXQorICAgIH0sCisKKyAgICAi
aW5wdXRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTY2FsYXJJbnB1dCIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJT
Q1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAiU2NhbGFyVHlwZSIgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJNYXBJbnB1dCIs
CisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJT
Q1JJUFRfTUVNT0laRUQiLAorICAgICAgICAgICAgIm1lbWJlcnMiOiBbCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAiTWFwVHlwZSIgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDQxZDlkNTJiMWZjMTk5NWU4ZWM1YzAwYTAzOGY4MzZhM2I3ZDdlNGYu
LjlhZWY0YjE1ZjVjODJlMzE1YTA1YzhlZWE4NDgwNmUwZTE0OGY0YWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAx
NC0wMi0wNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgUmVw
bGF5OiB1cHN0cmVhbSByZXBsYXkgaW5wdXQgY29kZSBnZW5lcmF0b3IgYW5kIEVuY29kZWRWYWx1
ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI4MjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGFuIGV4ZWN1dGFibGUgc2NyaXB0IHRvIGxhdW5jaCB0aGUgcmVwbGF5IGlucHV0IGdlbmVy
YXRvciB0ZXN0cy4KKyAgICAgICAgQWRkIGEgdGVzdCBoYXJuZXNzIGZvciBydW5uaW5nIHRoZSBj
b2RlIGdlbmVyYXRvciB0ZXN0cywgbW9zdGx5IHRha2VuCisgICAgICAgIGZyb20gdGhlIGJpbmRp
bmdzIHRlc3QgaGFybmVzcyAoYnV0IHNpbXBsaWZpZWQpLgorCisgICAgICAgICogU2NyaXB0cy9y
dW4taW5wdXQtZ2VuZXJhdG9yLXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcmVwbGF5L19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3JlcGxheS9tYWluLnB5OiBBZGRlZC4KKyAgICAgICAgKElucHV0
R2VuZXJhdG9yVGVzdHMpOgorICAgICAgICAoSW5wdXRHZW5lcmF0b3JUZXN0cy5fX2luaXRfXyk6
CisgICAgICAgIChJbnB1dEdlbmVyYXRvclRlc3RzLmdlbmVyYXRlX2Zyb21fanNvbik6CisgICAg
ICAgIChJbnB1dEdlbmVyYXRvclRlc3RzLndyaXRlX2Vycm9yX2ZpbGUpOgorICAgICAgICAoSW5w
dXRHZW5lcmF0b3JUZXN0cy5kZXRlY3RfY2hhbmdlcyk6CisgICAgICAgIChJbnB1dEdlbmVyYXRv
clRlc3RzLnJ1bl90ZXN0cyk6CisgICAgICAgIChJbnB1dEdlbmVyYXRvclRlc3RzLm1haW4pOgor
CiAyMDE0LTAyLTA0ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KIAogICAg
ICAgICBbQXV0b21ha2VdIEFkZCBtaXNzaW5nICQoZmVhdHVyZV9kZWZpbmVzKSB3aGVuIGdlbmVy
YXRpbmcgSW5qZWN0ZWRCdW5kbGUgYmluZGluZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
cnVuLWlucHV0LWdlbmVyYXRvci10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWlucHV0LWdlbmVy
YXRvci10ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJjNWQwZDU5ZmZlMmMwZmE4NGZlNDZmZmY5NWEzNTZh
YjliYWQxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4taW5wdXQtZ2VuZXJh
dG9yLXRlc3RzCkBAIC0wLDAgKzEsNDMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTCisjIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorIyBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBzeXMKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCisKK2Rl
ZiBtYWluKGFyZ3YpOgorICAgICIiIlJ1bnMgcmVwbGF5IGlucHV0IGNvZGUgZ2VuZXJhdG9yIG9u
IHRlc3Qgc3BlY2lmaWNhdGlvbiBmaWxlcyBhbmQgY29tcGFyZXMKKyAgICB0aGUgcmVzdWx0cyB3
aXRoIHJlZmVyZW5jZSBmaWxlcy4KKworICAgIE9wdGlvbnM6CisgICAgICAgLS1yZXNldC1yZXN1
bHRzOiBPdmVyd3JpdGVzIHRoZSByZWZlcmVuY2UgZmlsZXMgd2l0aCB0aGUgZ2VuZXJhdGVkIHJl
c3VsdHMuCisKKyAgICAiIiIKKyAgICByZXNldF9yZXN1bHRzID0gIi0tcmVzZXQtcmVzdWx0cyIg
aW4gYXJndgorCisgICAgZnJvbSB3ZWJraXRweS5yZXBsYXkubWFpbiBpbXBvcnQgSW5wdXRHZW5l
cmF0b3JUZXN0cworICAgIHJldHVybiBJbnB1dEdlbmVyYXRvclRlc3RzKHJlc2V0X3Jlc3VsdHMs
IGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKSkubWFpbigpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3JlcGxheS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cmVwbGF5L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNjViZWU1YmI3N2U5NmViYzdjZDljNDc2
NDA2OTBmYmRhOGFjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3JlcGxheS9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24g
dG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcmVwbGF5L21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3JlcGxheS9tYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MDQyMTk2YTQ2ODI1ZTdiZGRiN2E4ODMz
NTkwNTdlOGVkYWQ1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3JlcGxheS9tYWluLnB5CkBAIC0wLDAgKzEsMTM0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFT
CisjIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRAorIyBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIEhPTERFUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBh
dGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0
ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVy
cm9yCisKKworY2xhc3MgSW5wdXRHZW5lcmF0b3JUZXN0czoKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXNldF9yZXN1bHRzLCBleGVjdXRpdmUpOgorICAgICAgICBzZWxmLnJlc2V0X3Jlc3Vs
dHMgPSByZXNldF9yZXN1bHRzCisgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gZXhlY3V0aXZlCisK
KyAgICBkZWYgZ2VuZXJhdGVfZnJvbV9qc29uKHNlbGYsIGpzb25fZmlsZSwgb3V0cHV0X2RpcmVj
dG9yeSk6CisgICAgICAgIGNtZCA9IFsncHl0aG9uJywKKyAgICAgICAgICAgICAgICdKYXZhU2Ny
aXB0Q29yZS9yZXBsYXkvc2NyaXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5JywKKyAg
ICAgICAgICAgICAgICctLW91dHB1dERpcicsIG91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICAg
ICAgICAnLS1mb3JjZScsCisgICAgICAgICAgICAgICAnLS1mcmFtZXdvcmsnLCAnVGVzdCcsCisg
ICAgICAgICAgICAgICAnLS10ZXN0JywKKyAgICAgICAgICAgICAgIGpzb25fZmlsZV0KKworICAg
ICAgICBleGl0X2NvZGUgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0ZGVycl9vdXRw
dXQgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAgICAgICBpZiBzdGRl
cnJfb3V0cHV0OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfZXJyb3JfZmlsZShqc29uX2Zp
bGUsIG91dHB1dF9kaXJlY3RvcnksIHN0ZGVycl9vdXRwdXQpCisgICAgICAgIGV4Y2VwdCBTY3Jp
cHRFcnJvciwgZToKKyAgICAgICAgICAgIHByaW50IGUub3V0cHV0CisgICAgICAgICAgICBleGl0
X2NvZGUgPSBlLmV4aXRfY29kZQorICAgICAgICByZXR1cm4gZXhpdF9jb2RlCisKKyAgICBkZWYg
d3JpdGVfZXJyb3JfZmlsZShzZWxmLCBpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2RpcmVjdG9yeSwg
ZXJyb3Jfb3V0cHV0KToKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG91
dHB1dF9kaXJlY3RvcnksIG9zLnBhdGguYmFzZW5hbWUoaW5wdXRfZmlsZXBhdGgpICsgJy1lcnJv
cicpCisKKyAgICAgICAgd2l0aCBvcGVuKG91dHB1dF9maWxlcGF0aCwgInciKSBhcyBvdXRwdXRf
ZmlsZToKKyAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGVycm9yX291dHB1dCkKKworICAg
IGRlZiBkZXRlY3RfY2hhbmdlcyhzZWxmLCB3b3JrX2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVj
dG9yeSk6CisgICAgICAgIGNoYW5nZXNfZm91bmQgPSBGYWxzZQorICAgICAgICBmb3Igb3V0cHV0
X2ZpbGUgaW4gb3MubGlzdGRpcih3b3JrX2RpcmVjdG9yeSk6CisgICAgICAgICAgICBjbWQgPSBb
J2RpZmYnLAorICAgICAgICAgICAgICAgICAgICctdScsCisgICAgICAgICAgICAgICAgICAgJy1O
JywKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmVmZXJlbmNlX2RpcmVjdG9yeSwg
b3V0cHV0X2ZpbGUpLAorICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3b3JrX2RpcmVj
dG9yeSwgb3V0cHV0X2ZpbGUpXQorCisgICAgICAgICAgICBleGl0X2NvZGUgPSAwCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVuX2Nv
bW1hbmQoY21kKQorICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAg
ICAgICAgIG91dHB1dCA9IGUub3V0cHV0CisgICAgICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5l
eGl0X2NvZGUKKworICAgICAgICAgICAgaWYgZXhpdF9jb2RlIG9yIG91dHB1dDoKKyAgICAgICAg
ICAgICAgICBwcmludCAnRkFJTDogJXMnICUgb3V0cHV0X2ZpbGUKKyAgICAgICAgICAgICAgICBw
cmludCBvdXRwdXQKKyAgICAgICAgICAgICAgICBjaGFuZ2VzX2ZvdW5kID0gVHJ1ZQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAnUEFTUzogJXMnICUgb3V0cHV0X2Zp
bGUKKyAgICAgICAgcmV0dXJuIGNoYW5nZXNfZm91bmQKKworICAgIGRlZiBydW5fdGVzdHMoc2Vs
ZiwgaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgd29ya19k
aXJlY3RvcnkgPSByZWZlcmVuY2VfZGlyZWN0b3J5CisKKyAgICAgICAgcGFzc2VkID0gVHJ1ZQor
ICAgICAgICBmb3IgaW5wdXRfZmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6Cisg
ICAgICAgICAgICAobmFtZSwgZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRfZmls
ZSkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbiAhPSAnLmpzb24nOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICAjIEdlbmVyYXRlIG91dHB1dCBpbnRvIHRoZSB3b3JrIGRp
cmVjdG9yeSAoZWl0aGVyIHRoZSBnaXZlbiBvbmUgb3IgYQorICAgICAgICAgICAgIyB0ZW1wIG9u
ZSBpZiBub3QgcmVzZXRfcmVzdWx0cyBpcyBwZXJmb3JtZWQpCisgICAgICAgICAgICBpZiBub3Qg
c2VsZi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHdvcmtfZGlyZWN0b3J5ID0gdGVt
cGZpbGUubWtkdGVtcCgpCisKKyAgICAgICAgICAgIGlmIHNlbGYuZ2VuZXJhdGVfZnJvbV9qc29u
KG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUpLCB3b3JrX2RpcmVjdG9y
eSk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0gRmFsc2UKKworICAgICAgICAgICAgaWYgc2Vs
Zi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHByaW50ICJSZXNldCByZXN1bHRzIGZv
ciB0ZXN0OiAlcyIgJSAoaW5wdXRfZmlsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisg
ICAgICAgICAgICAjIERldGVjdCBjaGFuZ2VzCisgICAgICAgICAgICBpZiBzZWxmLmRldGVjdF9j
aGFuZ2VzKHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgICAg
ICAgICBwYXNzZWQgPSBGYWxzZQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh3b3JrX2RpcmVj
dG9yeSkKKworICAgICAgICByZXR1cm4gcGFzc2VkCisKKyAgICBkZWYgbWFpbihzZWxmKToKKyAg
ICAgICAgY3VycmVudF9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcy5jdXJkaXIpCisgICAgICAg
IG9zLmNoZGlyKG9zLnBhdGguam9pbihjdXJyZW50X3NjbS5jaGVja291dF9yb290LCAnU291cmNl
JykpCisKKyAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IFRydWUKKworICAgICAgICBpbnB1dF9k
aXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ0phdmFTY3JpcHRDb3JlJywgJ3JlcGxheScsICdzY3Jp
cHRzJywgJ3Rlc3RzJykKKyAgICAgICAgcmVmZXJlbmNlX2RpcmVjdG9yeSA9IG9zLnBhdGguam9p
bignSmF2YVNjcmlwdENvcmUnLCAncmVwbGF5JywgJ3NjcmlwdHMnLCAndGVzdHMnLCAnZXhwZWN0
ZWQnKQorICAgICAgICBpZiBub3Qgc2VsZi5ydW5fdGVzdHMoaW5wdXRfZGlyZWN0b3J5LCByZWZl
cmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgICAgIGFsbF90ZXN0c19wYXNzZWQgPSBGYWxzZQor
CisgICAgICAgIHByaW50ICcnCisgICAgICAgIGlmIGFsbF90ZXN0c19wYXNzZWQ6CisgICAgICAg
ICAgICBwcmludCAnQWxsIHRlc3RzIFBBU1MhJworICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHByaW50ICdTb21lIHRlc3RzIEZBSUwhIChUbyB1cGRhdGUg
dGhlIHJlZmVyZW5jZSBmaWxlcywgZXhlY3V0ZSAicnVuLWlucHV0LWdlbmVyYXRvci10ZXN0cyAt
LXJlc2V0LXJlc3VsdHMiKScKKyAgICAgICAgICAgIHJldHVybiAtMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223285</attachid>
            <date>2014-02-05 18:08:11 -0800</date>
            <delta_ts>2014-02-05 18:17:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128210-20140205180754.patch</filename>
            <type>text/plain</type>
            <size>13554</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzNTAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE0LTAyLTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSGFuZGxpbmcgb2Ygb3BhcXVlIHJvb3RzIGlzIHdyb25nIGluIEVkZW5Db2xsZWN0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4
MjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IHNldCBvZiBvcGFxdWUgcm9vdHMgaXMgYWx3YXlzIGNsZWFyZWQgZHVyaW5nIGVhY2ggY29sbGVj
dGlvbi4gV2Ugc2hvdWxkIGluc3RlYWQgcGVyc2lzdCAKKyAgICAgICAgdGhlIHNldCBvZiBvcGFx
dWUgcm9vdHMgYWNyb3NzIEVkZW5Db2xsZWN0aW9ucyBhbmQgb25seSBjbGVhciBpdCBhdCB0aGUg
YmVnaW5uaW5nIG9mIEZ1bGxDb2xsZWN0aW9ucy4KKworICAgICAgICBBbHNvIGFkZGVkIGEgY291
cGxlIG9mIGN1c3RvbSBvYmplY3RzIHRvIHRoZSBqc2Mgc2hlbGwgdGhhdCBhbGxvdyB1cyB0byB0
ZXN0IHRoaXMuCisKKyAgICAgICAgKiBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHA6CisgICAg
ICAgIChKU0M6OkdDVGhyZWFkU2hhcmVkRGF0YTo6cmVzZXQpOgorICAgICAgICAoSlNDOjpHQ1Ro
cmVhZFNoYXJlZERhdGE6OmRpZFN0YXJ0TWFya2luZyk6CisgICAgICAgICogaGVhcC9IZWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKiBoZWFwL0hlYXAu
aDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c2V0U2hvdWxkRG9GdWxsQ29sbGVjdGlvbik6CisgICAg
ICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpk
aWRTdGFydE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6cmVzZXQpOgorICAg
ICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAo
V1RGOjpFbGVtZW50OjpFbGVtZW50KToKKyAgICAgICAgKFdURjo6RWxlbWVudDo6cm9vdCk6Cisg
ICAgICAgIChXVEY6OkVsZW1lbnQ6OnNldFJvb3QpOgorICAgICAgICAoV1RGOjpFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV1RGOjpFbGVtZW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV1RGOjpFbGVtZW50SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToK
KyAgICAgICAgKFdURjo6Um9vdDo6Um9vdCk6CisgICAgICAgIChXVEY6OlJvb3Q6OmVsZW1lbnQp
OgorICAgICAgICAoV1RGOjpSb290OjpzZXRFbGVtZW50KToKKyAgICAgICAgKFdURjo6Um9vdDo6
Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Um9vdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KFdURjo6Um9vdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXVEY6OkVsZW1lbnQ6OmhhbmRs
ZU93bmVyKToKKyAgICAgICAgKFdURjo6RWxlbWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZVJvb3QpOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAgKGZ1bmN0
aW9uR2V0RWxlbWVudCk6CisgICAgICAgIChmdW5jdGlvblNldEVsZW1lbnRSb290KToKKyAgICAg
ICAgKGZ1bmN0aW9uR0NBbmRTd2VlcCk6CisgICAgICAgIChmdW5jdGlvbkZ1bGxHQyk6CisgICAg
ICAgIChmdW5jdGlvbkVkZW5HQyk6CisKIDIwMTQtMDItMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNjM0NTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTMgKzkyLDEzNiBAQAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKK25hbWVzcGFjZSB7CisK
K2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBFbGVtZW50SGFuZGxlT3duZXI7CitjbGFzcyBSb290Owor
CitjbGFzcyBFbGVtZW50IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IEVsZW1lbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUm9vdCogcm9vdCkKKyAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9yb290KHJvb3QpCisgICAgewor
ICAgIH0KKworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBj
b25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKKworICAgIFJvb3QqIHJvb3QoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICB2b2lkIHNldFJvb3QoUm9vdCogcm9vdCkgeyBt
X3Jvb3QgPSByb290OyB9CisKKyAgICBzdGF0aWMgRWxlbWVudCogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUm9vdCogcm9vdCkKKyAgICB7CisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpz
TnVsbCgpKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEVsZW1lbnQ+KHZtLmhlYXAsIHNpemVvZihFbGVtZW50KSkpIEVsZW1lbnQodm0sIHN0
cnVjdHVyZSwgcm9vdCk7CisgICAgICAgIGVsZW1lbnQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOworCisgICAgc3RhdGljIEVsZW1lbnRIYW5kbGVPd25lciogaGFuZGxlT3duZXIoKTsKKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBSb290KiBtX3Jvb3Q7Cit9OworCitjbGFzcyBF
bGVtZW50SGFuZGxlT3duZXIgOiBwdWJsaWMgV2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+
IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IGpzQ2FzdDxFbGVtZW50Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OworICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3QoZWxlbWVudC0+cm9v
dCgpKTsKKyAgICB9Cit9OworCitjbGFzcyBSb290IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICBSb290KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICBFbGVtZW50
KiBlbGVtZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7CisgICAg
fQorCisgICAgdm9pZCBzZXRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCisgICAgeworICAgICAg
ICBXZWFrPEVsZW1lbnQ+IG5ld0VsZW1lbnQoZWxlbWVudCwgRWxlbWVudDo6aGFuZGxlT3duZXIo
KSk7CisgICAgICAgIG1fZWxlbWVudC5zd2FwKG5ld0VsZW1lbnQpOworICAgIH0KKworICAgIHN0
YXRpYyBSb290KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
ICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwganNOdWxsKCkpOworICAgICAgICBSb290KiByb290ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8Um9vdD4odm0uaGVhcCwgc2l6ZW9mKFJvb3QpKSkgUm9vdCh2bSwg
c3RydWN0dXJlKTsKKyAgICAgICAgcm9vdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBy
ZXR1cm4gcm9vdDsKKyAgICB9CisKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJh
c2U7CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCogdGhpc09i
amVjdCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJv
b3QodGhpc09iamVjdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYWs8RWxlbWVudD4gbV9l
bGVtZW50OworfTsKKworY29uc3QgQ2xhc3NJbmZvIEVsZW1lbnQ6OnNfaW5mbyA9IHsgIkVsZW1l
bnQiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEVsZW1lbnQpIH07
Citjb25zdCBDbGFzc0luZm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNlOjpzX2luZm8s
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUm9vdCkgfTsKKworRWxlbWVudEhhbmRsZU93bmVy
KiBFbGVtZW50OjpoYW5kbGVPd25lcigpCit7CisgICAgc3RhdGljIEVsZW1lbnRIYW5kbGVPd25l
ciogb3duZXIgPSAwOworICAgIGlmICghb3duZXIpCisgICAgICAgIG93bmVyID0gbmV3IEVsZW1l
bnRIYW5kbGVPd25lcigpOworICAgIHJldHVybiBvd25lcjsKK30KKwordm9pZCBFbGVtZW50Ojpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIG1fcm9vdC0+c2V0RWxlbWVudCh0aGlzKTsKK30KKworfQorCiBzdGF0aWMgYm9vbCBmaWxs
QnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3Rvcjxj
aGFyPiYgYnVmZmVyKTsKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TZXRFbGVtZW50Um9vdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUm9vdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRWxlbWVudChFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxlbWVu
dChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUHJpbnQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRlYnVnKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlNDU3RhY2soRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3ZWVwKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxs
R0MoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkVkZW5HQyhFeGVjU3RhdGUqKTsKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EdW1w
Q2FsbEZyYW1lKEV4ZWNTdGF0ZSopOwpAQCAtMjE5LDcgKzM0Miw5IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJkZXNjcmliZSIsIGZ1bmN0aW9uRGVzY3JpYmUsIDEpOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgInByaW50IiwgZnVuY3Rpb25QcmludCwgMSk7CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAicXVpdCIsIGZ1bmN0aW9uUXVpdCwgMCk7Ci0gICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZ2MiLCBmdW5jdGlvbkdDLCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJnYyIsIGZ1bmN0aW9uR0NBbmRTd2VlcCwgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiZnVsbEdDIiwgZnVuY3Rpb25GdWxsR0MsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImVkZW5HQyIsIGZ1bmN0aW9uRWRlbkdDLCAwKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZHVtcENhbGxGcmFtZSIsIGZ1bmN0aW9uRHVtcENhbGxGcmFtZSwgMCk7
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkiLCBmdW5j
dGlvblJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5LCAwKTsKQEAgLTI0MSw2ICszNjYsMTAgQEAgcHJv
dGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldFNhbXBsaW5nRmxhZ3MiLCBmdW5j
dGlvblNldFNhbXBsaW5nRmxhZ3MsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNsZWFy
U2FtcGxpbmdGbGFncyIsIGZ1bmN0aW9uQ2xlYXJTYW1wbGluZ0ZsYWdzLCAxKTsKICNlbmRpZgor
ICAgICAgICBhZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24odm0sICJSb290IiwgZnVuY3Rpb25DcmVh
dGVSb290LCAwKTsKKyAgICAgICAgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKHZtLCAiRWxlbWVu
dCIsIGZ1bmN0aW9uQ3JlYXRlRWxlbWVudCwgMSk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
Z2V0RWxlbWVudCIsIGZ1bmN0aW9uR2V0RWxlbWVudCwgMSk7CisgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAic2V0RWxlbWVudFJvb3QiLCBmdW5jdGlvblNldEVsZW1lbnRSb290LCAyKTsKICAgICAg
ICAgCiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxF
eGVjKCksIDApOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXpl
KCk7ICsraSkKQEAgLTM1NywxMyArNDg2LDYwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25KU0MKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0MoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZVJvb3Qo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoUm9vdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3JlYXRlRWxlbWVudChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CisgICAgSlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVsZW1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZy5pc051bGwoKSA/IG51bGxwdHIgOiBqc0Nhc3Q8Um9v
dCo+KGV4ZWMtPmFyZ3VtZW50KDApKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uR2V0RWxlbWVudChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CisgICAgRWxlbWVudCogcmVzdWx0ID0ganNDYXN0PFJvb3QqPihleGVj
LT5hcmd1bWVudCgwKS5hc0NlbGwoKSktPmVsZW1lbnQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCA/IHJlc3VsdCA6IGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0RWxlbWVudFJvb3QoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBqc0Nhc3Q8RWxlbWVudCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBSb290KiByb290ID0g
anNDYXN0PFJvb3QqPihleGVjLT5hcmd1bWVudCgxKSk7CisgICAgZWxlbWVudC0+c2V0Um9vdChy
b290KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0NBbmRTd2VlcChFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgZXhlYy0+aGVhcCgp
LT5jb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxs
R0MoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAg
IEhlYXAqIGhlYXAgPSBleGVjLT5oZWFwKCk7CisgICAgaGVhcC0+c2V0U2hvdWxkRG9GdWxsQ29s
bGVjdGlvbih0cnVlKTsKKyAgICBleGVjLT5oZWFwKCktPmNvbGxlY3QoKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKKyAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOworICAgIGhl
YXAtPnNldFNob3VsZERvRnVsbENvbGxlY3Rpb24oZmFsc2UpOworICAgIGhlYXAtPmNvbGxlY3Qo
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiAjaWZu
ZGVmIE5ERUJVRwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbGVhc2VF
eGVjdXRhYmxlTWVtb3J5KEV4ZWNTdGF0ZSogZXhlYykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNwcAkocmV2aXNpb24gMTYz
NDUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDE2ICsxMTgsMTEgQEAgR0NUaHJlYWRTaGFyZWREYXRh
Ojp+R0NUaHJlYWRTaGFyZWREYXRhKAogICAgIH0KICNlbmRpZgogfQotICAgIAorCiB2b2lkIEdD
VGhyZWFkU2hhcmVkRGF0YTo6cmVzZXQoKQogewogICAgIEFTU0VSVChtX3NoYXJlZE1hcmtTdGFj
ay5pc0VtcHR5KCkpOwogICAgIAotI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICBtX29wYXF1
ZVJvb3RzLmNsZWFyKCk7Ci0jZWxzZQotICAgIEFTU0VSVChtX29wYXF1ZVJvb3RzLmlzRW1wdHko
KSk7Ci0jZW5kaWYKICAgICBtX3dlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXJzLnJlbW92ZUFsbCgpOwog
CiAgICAgaWYgKG1fc2hvdWxkSGFzaENvbnMpIHsKQEAgLTE1OCw2ICsxNTMsMTMgQEAgdm9pZCBH
Q1RocmVhZFNoYXJlZERhdGE6OmVuZEN1cnJlbnRQaGFzZQogCiB2b2lkIEdDVGhyZWFkU2hhcmVk
RGF0YTo6ZGlkU3RhcnRNYXJraW5nKCkKIHsKKyAgICBpZiAobV92bS0+aGVhcC5vcGVyYXRpb25J
blByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyNpZiBFTkFCTEUoUEFSQUxMRUxfR0Mp
CisgICAgICAgIG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKKyNlbHNlCisgICAgICAgIEFTU0VSVCht
X29wYXF1ZVJvb3RzLmlzRW1wdHkoKSk7CisjZW5kaWYKK30KICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
c3RkOjptdXRleD4gbG9jayhtX21hcmtpbmdNdXRleCk7CiAgICAgbV9wYXJhbGxlbE1hcmtlcnNT
aG91bGRFeGl0ID0gZmFsc2U7CiAgICAgc3RhcnROZXh0UGhhc2UoTWFyayk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTYzNDUyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MCw3ICs0OTAs
NyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAKICAgICBtX3NoYXJlZERhdGEuZGlkU3RhcnRN
YXJraW5nKCk7CiAgICAgU2xvdFZpc2l0b3ImIHZpc2l0b3IgPSBtX3Nsb3RWaXNpdG9yOwotICAg
IHZpc2l0b3Iuc2V0dXAoKTsKKyAgICB2aXNpdG9yLmRpZFN0YXJ0TWFya2luZygpOwogICAgIEhl
YXBSb290VmlzaXRvciBoZWFwUm9vdFZpc2l0b3IodmlzaXRvcik7CiAKICNpZiBFTkFCTEUoR0dD
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTYzNDUyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgs
NyArMTQ4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKICAgICAgICAgYm9vbCBzaG91bGRDb2xsZWN0KCk7CiAg
ICAgICAgIHZvaWQgZ2NUaW1lckRpZEZpcmUoKSB7IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9
IHRydWU7IH0KLSAgICAgICAgdm9pZCBjb2xsZWN0KCk7CisgICAgICAgIHZvaWQgc2V0U2hvdWxk
RG9GdWxsQ29sbGVjdGlvbihib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24pIHsgbV9zaG91bGRE
b0Z1bGxDb2xsZWN0aW9uID0gc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsgfQorICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoKTsKICAgICAgICAgYm9vbCBjb2xsZWN0SWZOZWNl
c3NhcnlPckRlZmVyKCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBpdCBkaWQgY29sbGVjdC4KIAogICAg
ICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAxNjM0NTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDggKzM2LDE2IEBAIFNsb3RWaXNpdG9yOjp+U2xvdFZpc2l0b3IoKQogICAg
IGNsZWFyTWFya1N0YWNrKCk7CiB9CiAKLXZvaWQgU2xvdFZpc2l0b3I6OnNldHVwKCkKK3ZvaWQg
U2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2luZygpCiB7CisgICAgaWYgKGhlYXAoKS0+b3BlcmF0
aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKSB7CisjaWYgRU5BQkxFKFBBUkFMTEVM
X0dDKQorICAgICAgICBBU1NFUlQobV9vcGFxdWVSb290cy5pc0VtcHR5KCkpOyAvLyBTaG91bGQg
aGF2ZSBtZXJnZWQgYnkgbm93LgorI2Vsc2UKKyAgICAgICAgbV9vcGFxdWVSb290cy5jbGVhcigp
OworI2VuZGlmCisgICAgfQorCiAgICAgbV9zaGFyZWQubV9zaG91bGRIYXNoQ29ucyA9IG1fc2hh
cmVkLm1fdm0tPmhhdmVFbm91Z2hOZXdTdHJpbmdzVG9IYXNoQ29ucygpOwogICAgIG1fc2hvdWxk
SGFzaENvbnMgPSBtX3NoYXJlZC5tX3Nob3VsZEhhc2hDb25zOwogI2lmIEVOQUJMRShQQVJBTExF
TF9HQykKQEAgLTUyLDExICs2MCw2IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnJlc2V0KCkKICAgICBt
X2J5dGVzQ29waWVkID0gMDsKICAgICBtX3Zpc2l0Q291bnQgPSAwOwogICAgIEFTU0VSVChtX3N0
YWNrLmlzRW1wdHkoKSk7Ci0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIEFTU0VSVChtX29w
YXF1ZVJvb3RzLmlzRW1wdHkoKSk7IC8vIFNob3VsZCBoYXZlIG1lcmdlZCBieSBub3cuCi0jZWxz
ZQotICAgIG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKLSNlbmRpZgogICAgIGlmIChtX3Nob3VsZEhh
c2hDb25zKSB7CiAgICAgICAgIG1fdW5pcXVlU3RyaW5ncy5jbGVhcigpOwogICAgICAgICBtX3No
b3VsZEhhc2hDb25zID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmgJKHJldmlzaW9uIDE2MzQ1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGlj
OgogICAgIEdDVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9zdGFjay5pc0VtcHR5KCk7
IH0KIAotICAgIHZvaWQgc2V0dXAoKTsKKyAgICB2b2lkIGRpZFN0YXJ0TWFya2luZygpOwogICAg
IHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIGNsZWFyTWFya1N0YWNrKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223286</attachid>
            <date>2014-02-05 18:17:24 -0800</date>
            <delta_ts>2014-02-07 12:58:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128210-20140205181707.patch</filename>
            <type>text/plain</type>
            <size>13559</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzNTAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE0LTAyLTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSGFuZGxpbmcgb2Ygb3BhcXVlIHJvb3RzIGlzIHdyb25nIGluIEVkZW5Db2xsZWN0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4
MjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IHNldCBvZiBvcGFxdWUgcm9vdHMgaXMgYWx3YXlzIGNsZWFyZWQgZHVyaW5nIGVhY2ggY29sbGVj
dGlvbi4gV2Ugc2hvdWxkIGluc3RlYWQgcGVyc2lzdCAKKyAgICAgICAgdGhlIHNldCBvZiBvcGFx
dWUgcm9vdHMgYWNyb3NzIEVkZW5Db2xsZWN0aW9ucyBhbmQgb25seSBjbGVhciBpdCBhdCB0aGUg
YmVnaW5uaW5nIG9mIEZ1bGxDb2xsZWN0aW9ucy4KKworICAgICAgICBBbHNvIGFkZGVkIGEgY291
cGxlIG9mIGN1c3RvbSBvYmplY3RzIHRvIHRoZSBqc2Mgc2hlbGwgdGhhdCBhbGxvdyB1cyB0byB0
ZXN0IHRoaXMuCisKKyAgICAgICAgKiBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHA6CisgICAg
ICAgIChKU0M6OkdDVGhyZWFkU2hhcmVkRGF0YTo6cmVzZXQpOgorICAgICAgICAoSlNDOjpHQ1Ro
cmVhZFNoYXJlZERhdGE6OmRpZFN0YXJ0TWFya2luZyk6CisgICAgICAgICogaGVhcC9IZWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKiBoZWFwL0hlYXAu
aDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c2V0U2hvdWxkRG9GdWxsQ29sbGVjdGlvbik6CisgICAg
ICAgICogaGVhcC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpk
aWRTdGFydE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6cmVzZXQpOgorICAg
ICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAo
V1RGOjpFbGVtZW50OjpFbGVtZW50KToKKyAgICAgICAgKFdURjo6RWxlbWVudDo6cm9vdCk6Cisg
ICAgICAgIChXVEY6OkVsZW1lbnQ6OnNldFJvb3QpOgorICAgICAgICAoV1RGOjpFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV1RGOjpFbGVtZW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV1RGOjpFbGVtZW50SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToK
KyAgICAgICAgKFdURjo6Um9vdDo6Um9vdCk6CisgICAgICAgIChXVEY6OlJvb3Q6OmVsZW1lbnQp
OgorICAgICAgICAoV1RGOjpSb290OjpzZXRFbGVtZW50KToKKyAgICAgICAgKFdURjo6Um9vdDo6
Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Um9vdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KFdURjo6Um9vdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXVEY6OkVsZW1lbnQ6OmhhbmRs
ZU93bmVyKToKKyAgICAgICAgKFdURjo6RWxlbWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZVJvb3QpOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAgKGZ1bmN0
aW9uR2V0RWxlbWVudCk6CisgICAgICAgIChmdW5jdGlvblNldEVsZW1lbnRSb290KToKKyAgICAg
ICAgKGZ1bmN0aW9uR0NBbmRTd2VlcCk6CisgICAgICAgIChmdW5jdGlvbkZ1bGxHQyk6CisgICAg
ICAgIChmdW5jdGlvbkVkZW5HQyk6CisKIDIwMTQtMDItMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNjM0NTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTMgKzkyLDEzNiBAQAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKK25hbWVzcGFjZSB7CisK
K2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBFbGVtZW50SGFuZGxlT3duZXI7CitjbGFzcyBSb290Owor
CitjbGFzcyBFbGVtZW50IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IEVsZW1lbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUm9vdCogcm9vdCkKKyAgICAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9yb290KHJvb3QpCisgICAgewor
ICAgIH0KKworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworICAgIHN0YXRpYyBj
b25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKKworICAgIFJvb3QqIHJvb3QoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICB2b2lkIHNldFJvb3QoUm9vdCogcm9vdCkgeyBt
X3Jvb3QgPSByb290OyB9CisKKyAgICBzdGF0aWMgRWxlbWVudCogY3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUm9vdCogcm9vdCkKKyAgICB7CisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gY3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpz
TnVsbCgpKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEVsZW1lbnQ+KHZtLmhlYXAsIHNpemVvZihFbGVtZW50KSkpIEVsZW1lbnQodm0sIHN0
cnVjdHVyZSwgcm9vdCk7CisgICAgICAgIGVsZW1lbnQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOworCisgICAgc3RhdGljIEVsZW1lbnRIYW5kbGVPd25lciogaGFuZGxlT3duZXIoKTsKKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBSb290KiBtX3Jvb3Q7Cit9OworCitjbGFzcyBF
bGVtZW50SGFuZGxlT3duZXIgOiBwdWJsaWMgV2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAg
ICBFbGVtZW50KiBlbGVtZW50ID0ganNDYXN0PEVsZW1lbnQqPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSk7CisgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChlbGVtZW50
LT5yb290KCkpOworICAgIH0KK307CisKK2NsYXNzIFJvb3QgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgeworcHVibGljOgorICAgIFJvb3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIEVs
ZW1lbnQqIGVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsK
KyAgICB9CisKKyAgICB2b2lkIHNldEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKKyAgICB7Cisg
ICAgICAgIFdlYWs8RWxlbWVudD4gbmV3RWxlbWVudChlbGVtZW50LCBFbGVtZW50OjpoYW5kbGVP
d25lcigpKTsKKyAgICAgICAgbV9lbGVtZW50LnN3YXAobmV3RWxlbWVudCk7CisgICAgfQorCisg
ICAgc3RhdGljIFJvb3QqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCisgICAgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSk7CisgICAgICAgIFJvb3QqIHJvb3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSb290Pih2bS5oZWFwLCBzaXplb2YoUm9vdCkpKSBSb290
KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICByb290LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
ICAgIHJldHVybiByb290OworICAgIH0KKworICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiB0
aGlzT2JqZWN0LCBTbG90VmlzaXRvciYgdmlzaXRvcikKKyAgICB7CisgICAgICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdCh0aGlzT2JqZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2VhazxFbGVtZW50
PiBtX2VsZW1lbnQ7Cit9OworCitjb25zdCBDbGFzc0luZm8gRWxlbWVudDo6c19pbmZvID0geyAi
RWxlbWVudCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRWxlbWVu
dCkgfTsKK2NvbnN0IENsYXNzSW5mbyBSb290OjpzX2luZm8gPSB7ICJSb290IiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSb290KSB9OworCitFbGVtZW50SGFuZGxl
T3duZXIqIEVsZW1lbnQ6OmhhbmRsZU93bmVyKCkKK3sKKyAgICBzdGF0aWMgRWxlbWVudEhhbmRs
ZU93bmVyKiBvd25lciA9IDA7CisgICAgaWYgKCFvd25lcikKKyAgICAgICAgb3duZXIgPSBuZXcg
RWxlbWVudEhhbmRsZU93bmVyKCk7CisgICAgcmV0dXJuIG93bmVyOworfQorCit2b2lkIEVsZW1l
bnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgbV9yb290LT5zZXRFbGVtZW50KHRoaXMpOworfQorCit9CisKIHN0YXRpYyBib29s
IGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgVmVj
dG9yPGNoYXI+JiBidWZmZXIpOwogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblNldEVsZW1lbnRSb290KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVSb290KEV4ZWNTdGF0ZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVFbGVtZW50KEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRF
bGVtZW50KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0NTdGFjayhFeGVjU3RhdGUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0MoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdDQW5kU3dlZXAo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkZ1bGxHQyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRWRlbkdDKEV4ZWNTdGF0ZSopOwogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVsZWFzZUV4ZWN1dGFibGVNZW1vcnko
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkR1bXBDYWxsRnJhbWUoRXhlY1N0YXRlKik7CkBAIC0yMTksNyArMzQyLDkgQEAgcHJvdGVjdGVk
OgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImRlc2NyaWJlIiwgZnVuY3Rpb25EZXNjcmliZSwg
MSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicHJpbnQiLCBmdW5jdGlvblByaW50LCAxKTsK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJxdWl0IiwgZnVuY3Rpb25RdWl0LCAwKTsKLSAgICAg
ICAgYWRkRnVuY3Rpb24odm0sICJnYyIsIGZ1bmN0aW9uR0MsIDApOworICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImdjIiwgZnVuY3Rpb25HQ0FuZFN3ZWVwLCAwKTsKKyAgICAgICAgYWRkRnVuY3Rp
b24odm0sICJmdWxsR0MiLCBmdW5jdGlvbkZ1bGxHQywgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAiZWRlbkdDIiwgZnVuY3Rpb25FZGVuR0MsIDApOwogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgYWRkRnVuY3Rpb24odm0sICJkdW1wQ2FsbEZyYW1lIiwgZnVuY3Rpb25EdW1wQ2FsbEZyYW1l
LCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSIs
IGZ1bmN0aW9uUmVsZWFzZUV4ZWN1dGFibGVNZW1vcnksIDApOwpAQCAtMjQxLDYgKzM2NiwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0U2FtcGxpbmdGbGFncyIs
IGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFncywgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAi
Y2xlYXJTYW1wbGluZ0ZsYWdzIiwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MsIDEpOwogI2Vu
ZGlmCisgICAgICAgIGFkZENvbnN0cnVjdGFibGVGdW5jdGlvbih2bSwgIlJvb3QiLCBmdW5jdGlv
bkNyZWF0ZVJvb3QsIDApOworICAgICAgICBhZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24odm0sICJF
bGVtZW50IiwgZnVuY3Rpb25DcmVhdGVFbGVtZW50LCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJnZXRFbGVtZW50IiwgZnVuY3Rpb25HZXRFbGVtZW50LCAxKTsKKyAgICAgICAgYWRkRnVu
Y3Rpb24odm0sICJzZXRFbGVtZW50Um9vdCIsIGZ1bmN0aW9uU2V0RWxlbWVudFJvb3QsIDIpOwog
ICAgICAgICAKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGds
b2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRz
LnNpemUoKTsgKytpKQpAQCAtMzU3LDEzICs0ODYsNjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkpTQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQyhFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRl
Um9vdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSb290OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DcmVhdGVFbGVtZW50KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKKyAgICBKU1ZhbHVlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJnLmlzTnVsbCgpID8gbnVsbHB0ciA6IGpzQ2Fz
dDxSb290Kj4oZXhlYy0+YXJndW1lbnQoMCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25HZXRFbGVtZW50KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBFbGVtZW50KiByZXN1bHQgPSBqc0Nhc3Q8Um9vdCo+
KGV4ZWMtPmFyZ3VtZW50KDApLmFzQ2VsbCgpKS0+ZWxlbWVudCgpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0ID8gcmVzdWx0IDoganNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRFbGVtZW50Um9vdChFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgRWxlbWVudCogZWxl
bWVudCA9IGpzQ2FzdDxFbGVtZW50Kj4oZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFJvb3QqIHJv
b3QgPSBqc0Nhc3Q8Um9vdCo+KGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBlbGVtZW50LT5zZXRS
b290KHJvb3QpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HQ0FuZFN3ZWVwKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkZ1bGxHQyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
CisgICAgSGVhcCogaGVhcCA9IGV4ZWMtPmhlYXAoKTsKKyAgICBoZWFwLT5zZXRTaG91bGREb0Z1
bGxDb2xsZWN0aW9uKHRydWUpOworICAgIGV4ZWMtPmhlYXAoKS0+Y29sbGVjdCgpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZGVuR0MoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIEhlYXAqIGhlYXAgPSBleGVjLT5oZWFwKCk7Cisg
ICAgaGVhcC0+c2V0U2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSk7CisgICAgaGVhcC0+Y29s
bGVjdCgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisK
ICNpZm5kZWYgTkRFQlVHCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVs
ZWFzZUV4ZWN1dGFibGVNZW1vcnkoRXhlY1N0YXRlKiBleGVjKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwCShyZXZpc2lv
biAxNjM0NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTYgKzExOCwxMSBAQCBHQ1RocmVhZFNoYXJl
ZERhdGE6On5HQ1RocmVhZFNoYXJlZERhdGEoCiAgICAgfQogI2VuZGlmCiB9Ci0gICAgCisKIHZv
aWQgR0NUaHJlYWRTaGFyZWREYXRhOjpyZXNldCgpCiB7CiAgICAgQVNTRVJUKG1fc2hhcmVkTWFy
a1N0YWNrLmlzRW1wdHkoKSk7CiAgICAgCi0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIG1f
b3BhcXVlUm9vdHMuY2xlYXIoKTsKLSNlbHNlCi0gICAgQVNTRVJUKG1fb3BhcXVlUm9vdHMuaXNF
bXB0eSgpKTsKLSNlbmRpZgogICAgIG1fd2Vha1JlZmVyZW5jZUhhcnZlc3RlcnMucmVtb3ZlQWxs
KCk7CiAKICAgICBpZiAobV9zaG91bGRIYXNoQ29ucykgewpAQCAtMTU4LDYgKzE1MywxMyBAQCB2
b2lkIEdDVGhyZWFkU2hhcmVkRGF0YTo6ZW5kQ3VycmVudFBoYXNlCiAKIHZvaWQgR0NUaHJlYWRT
aGFyZWREYXRhOjpkaWRTdGFydE1hcmtpbmcoKQogeworICAgIGlmIChtX3ZtLT5oZWFwLm9wZXJh
dGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikgeworI2lmIEVOQUJMRShQQVJBTExF
TF9HQykKKyAgICAgICAgbV9vcGFxdWVSb290cy5jbGVhcigpOworI2Vsc2UKKyAgICAgICAgQVNT
RVJUKG1fb3BhcXVlUm9vdHMuaXNFbXB0eSgpKTsKKyNlbmRpZgorfQogICAgIHN0ZDo6bG9ja19n
dWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fbWFya2luZ011dGV4KTsKICAgICBtX3BhcmFsbGVsTWFy
a2Vyc1Nob3VsZEV4aXQgPSBmYWxzZTsKICAgICBzdGFydE5leHRQaGFzZShNYXJrKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNjM0NTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkwLDcg
KzQ5MCw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKIAogICAgIG1fc2hhcmVkRGF0YS5kaWRT
dGFydE1hcmtpbmcoKTsKICAgICBTbG90VmlzaXRvciYgdmlzaXRvciA9IG1fc2xvdFZpc2l0b3I7
Ci0gICAgdmlzaXRvci5zZXR1cCgpOworICAgIHZpc2l0b3IuZGlkU3RhcnRNYXJraW5nKCk7CiAg
ICAgSGVhcFJvb3RWaXNpdG9yIGhlYXBSb290VmlzaXRvcih2aXNpdG9yKTsKIAogI2lmIEVOQUJM
RShHR0MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNjM0NTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OCw3ICsxNDgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgICAgICBib29sIHNob3VsZENvbGxlY3Qo
KTsKICAgICAgICAgdm9pZCBnY1RpbWVyRGlkRmlyZSgpIHsgbV9zaG91bGREb0Z1bGxDb2xsZWN0
aW9uID0gdHJ1ZTsgfQotICAgICAgICB2b2lkIGNvbGxlY3QoKTsKKyAgICAgICAgdm9pZCBzZXRT
aG91bGREb0Z1bGxDb2xsZWN0aW9uKGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbikgeyBtX3No
b3VsZERvRnVsbENvbGxlY3Rpb24gPSBzaG91bGREb0Z1bGxDb2xsZWN0aW9uOyB9CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdCgpOwogICAgICAgICBib29sIGNvbGxlY3RJ
Zk5lY2Vzc2FyeU9yRGVmZXIoKTsgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGRpZCBjb2xsZWN0Lgog
CiAgICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemVfdCBjb3N0KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDE2
MzQ1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsOCArMzYsMTYgQEAgU2xvdFZpc2l0b3I6On5TbG90VmlzaXRvcigp
CiAgICAgY2xlYXJNYXJrU3RhY2soKTsKIH0KIAotdm9pZCBTbG90VmlzaXRvcjo6c2V0dXAoKQor
dm9pZCBTbG90VmlzaXRvcjo6ZGlkU3RhcnRNYXJraW5nKCkKIHsKKyAgICBpZiAoaGVhcCgpLT5v
cGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyNpZiBFTkFCTEUoUEFS
QUxMRUxfR0MpCisgICAgICAgIEFTU0VSVChtX29wYXF1ZVJvb3RzLmlzRW1wdHkoKSk7IC8vIFNo
b3VsZCBoYXZlIG1lcmdlZCBieSBub3cuCisjZWxzZQorICAgICAgICBtX29wYXF1ZVJvb3RzLmNs
ZWFyKCk7CisjZW5kaWYKKyAgICB9CisKICAgICBtX3NoYXJlZC5tX3Nob3VsZEhhc2hDb25zID0g
bV9zaGFyZWQubV92bS0+aGF2ZUVub3VnaE5ld1N0cmluZ3NUb0hhc2hDb25zKCk7CiAgICAgbV9z
aG91bGRIYXNoQ29ucyA9IG1fc2hhcmVkLm1fc2hvdWxkSGFzaENvbnM7CiAjaWYgRU5BQkxFKFBB
UkFMTEVMX0dDKQpAQCAtNTIsMTEgKzYwLDYgQEAgdm9pZCBTbG90VmlzaXRvcjo6cmVzZXQoKQog
ICAgIG1fYnl0ZXNDb3BpZWQgPSAwOwogICAgIG1fdmlzaXRDb3VudCA9IDA7CiAgICAgQVNTRVJU
KG1fc3RhY2suaXNFbXB0eSgpKTsKLSNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgQVNTRVJU
KG1fb3BhcXVlUm9vdHMuaXNFbXB0eSgpKTsgLy8gU2hvdWxkIGhhdmUgbWVyZ2VkIGJ5IG5vdy4K
LSNlbHNlCi0gICAgbV9vcGFxdWVSb290cy5jbGVhcigpOwotI2VuZGlmCiAgICAgaWYgKG1fc2hv
dWxkSGFzaENvbnMpIHsKICAgICAgICAgbV91bmlxdWVTdHJpbmdzLmNsZWFyKCk7CiAgICAgICAg
IG1fc2hvdWxkSGFzaENvbnMgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24gMTYzNDUyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBw
dWJsaWM6CiAgICAgR0NUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFyZWQ7IH0KICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX3N0YWNrLmlzRW1w
dHkoKTsgfQogCi0gICAgdm9pZCBzZXR1cCgpOworICAgIHZvaWQgZGlkU3RhcnRNYXJraW5nKCk7
CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgY2xlYXJNYXJrU3RhY2soKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223486</attachid>
            <date>2014-02-07 12:58:16 -0800</date>
            <delta_ts>2014-02-10 11:54:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128210-20140207125810.patch</filename>
            <type>text/plain</type>
            <size>2726</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE2MzY0MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTAyLTA3ICBNYXJrIEhhaG5lbmJlcmcg
IDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgSGFuZGxpbmcgb2Ygb3BhcXVlIHJv
b3RzIGlzIHdyb25nIGluIEVkZW5Db2xsZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yZ290IHRvIHN2biBhZGQgdGhlIHJlZ3Jlc3Npb24g
dGVzdHMgZm9yIHRoaXMgYnVnLgorCisgICAgICAgICoganMvZ2VuZXJhdGlvbmFsLW9wYXF1ZS1y
b290cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9nZW5l
cmF0aW9uYWwtb3BhcXVlLXJvb3RzLmpzOiBBZGRlZC4KKwogMjAxNC0wMi0wNyAgTWloYWkgVGlj
YSAgPG1pdGljYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBCYWNrZ3JvdW5kIEJsZW5kaW5n
XSBVbnByZWZpeCB0aGUgLXdlYmtpdC1iYWNrZ3JvdW5kLWJsZW5kLW1vZGUgcHJvcGVydHkKSW5k
ZXg6IExheW91dFRlc3RzL2pzL2dlbmVyYXRpb25hbC1vcGFxdWUtcm9vdHMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2dlbmVyYXRpb25hbC1vcGFxdWUtcm9vdHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvZ2VuZXJhdGlvbmFs
LW9wYXF1ZS1yb290cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBA
QAorVGVzdHMgdGhhdCBvcGFxdWUgcm9vdHMgYmVoYXZlIGNvcnJlY3RseSBkdXJpbmcgeW91bmcg
Z2VuZXJhdGlvbiBjb2xsZWN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZWxlbS5jdXN0b21Qcm9wZXJ0eSBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2dlbmVyYXRpb25hbC1vcGFxdWUtcm9vdHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2dlbmVyYXRpb25hbC1vcGFxdWUtcm9vdHMuanMJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZ2VuZXJhdGlvbmFsLW9w
YXF1ZS1yb290cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACitkZXNjcmlwdGlv
bigiVGVzdHMgdGhhdCBvcGFxdWUgcm9vdHMgYmVoYXZlIGNvcnJlY3RseSBkdXJpbmcgeW91bmcg
Z2VuZXJhdGlvbiBjb2xsZWN0aW9ucy4iKTsKKworLy8gQ3JlYXRlIHRoZSBwcmltYXJ5IFJvb3Qu
Cit2YXIgcm9vdCA9IG5ldyBSb290KCk7CisvLyBUaGlzIHNlY29uZGFyeSByb290IGlzIGZvciBh
bGxvY2F0aW5nIGEgc2Vjb25kIEVsZW1lbnQgd2l0aG91dCBvdmVycmlkaW5nIAorLy8gdGhlIHBy
aW1hcnkgUm9vdCdzIEVsZW1lbnQuCit2YXIgb3RoZXJSb290ID0gbmV3IFJvb3QoKTsKKworLy8g
UnVuIGFuIEVkZW4gY29sbGVjdGlvbiBzbyB0aGF0IHRoZSBSb290IHdpbGwgYmUgaW4gdGhlIG9s
ZCBnZW4gKGFuZCB3b24ndCBiZSByZXNjYW5uZWQpLgorZWRlbkdDKCk7CisKKy8vIENyZWF0ZSBh
IG5ldyBFbGVtZW50IGFuZCBzZXQgYSBjdXN0b20gcHJvcGVydHkgb24gaXQuCit2YXIgZWxlbSA9
IG5ldyBFbGVtZW50KHJvb3QpOworZWxlbS5jdXN0b21Qcm9wZXJ0eSA9ICJoZWxsbyI7CisKKy8v
IE1ha2UgdGhlIEVsZW1lbnQgdW5yZWFjaGFibGUgZXhjZXB0IHRocm91Z2ggdGhlIGVwaGVtZXJv
biB3aXRoIHRoZSBSb290LgorZWxlbSA9IG51bGw7CisKKy8vIENyZWF0ZSBhbm90aGVyIEVsZW1l
bnQgc28gdGhhdCB3ZSBwcm9jZXNzIHRoZSB3ZWFrIGhhbmRsZXMgaW4gYmxvY2sgb2YgdGhlIG9y
aWdpbmFsIEVsZW1lbnQuCit2YXIgdGVzdCA9IG5ldyBFbGVtZW50KG90aGVyUm9vdCk7CisKKy8v
IFJ1biBhbm90aGVyIEVkZW4gY29sbGVjdGlvbiB0byBwcm9jZXNzIHRoZSB3ZWFrIGhhbmRsZXMg
aW4gdGhlIEVsZW1lbnQncyBibG9jay4gSWYgb3BhcXVlIHJvb3RzCisvLyBhcmUgY2xlYXJlZCB0
aGVuIHdlJ2xsIHRoaW5rIHRoYXQgdGhlIG9yaWdpbmFsIEVsZW1lbnQgaXMgZGVhZCBiZWNhdXNl
IHRoZSBSb290IHdvbid0IGJlIGluIHRoZSAKKy8vIHNldCBvZiBvcGFxdWUgcm9vdHMuCitlZGVu
R0MoKTsKKworLy8gQ2hlY2sgaWYgdGhlIHByaW1hcnkgUm9vdCdzIEVsZW1lbnQgZXhpc3RzIGFu
ZCBoYXMgb3VyIGN1c3RvbSBwcm9wZXJ0eS4KK3ZhciBlbGVtID0gZ2V0RWxlbWVudChyb290KTsK
K3Nob3VsZEJlKCJlbGVtLmN1c3RvbVByb3BlcnR5IiwgIlwiaGVsbG9cIiIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>