<?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>163404</bug_id>
          
          <creation_ts>2016-10-13 14:56:23 -0700</creation_ts>
          <short_desc>WebAssembly JS API: implement basic stub</short_desc>
          <delta_ts>2016-10-17 14:38:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161709</blocked>
    
    <blocked>163267</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1239964</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-13 14:56:23 -0700</bug_when>
    <thetext>Implement and test the basic API, without going out of our way to make it work yet. Parent bug will be used to make each constructor / function work individually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240036</commentid>
    <comment_count>1</comment_count>
      <attachid>291545</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-13 17:14:09 -0700</bug_when>
    <thetext>Created attachment 291545
patch

Basic WebAssembly global object, its constructor / function properties (all useless for now), test, JSC option (defaults to false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240393</commentid>
    <comment_count>2</comment_count>
      <attachid>291545</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-14 12:46:50 -0700</bug_when>
    <thetext>Comment on attachment 291545
patch

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

Looks good but you have a couple issues. I think you need to add the getCallData/getConstructData to your Constructors.

&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:39
&gt; +    macro(CompileError) \

IIRC you don&apos;t need to have the names in both and BuiltinNames.h. If so, I think we should try to reduce the number of common identifiers we have as they get included everywhere.

&gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:154
&gt; +            m_ ## NAME ## Structure.set(vm, this, NAME ## Structure); \
&gt; +        } \
&gt; +        \
&gt; +    private: \
&gt; +        WebAssembly ## NAME ## Constructor(VM&amp; vm, Structure* structure) \
&gt; +            : InternalFunction(vm, structure) \
&gt; +        { \
&gt; +        } \
&gt; +    \
&gt; +    WriteBarrier&lt;Structure&gt; m_ ## NAME ## Structure; \

I don&apos;t think this will work because your structure will get GCed. You need to add a visitChildren method to ensure that the GC knows about these structures. In the future, I think you should just put the structure on the global object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240510</commentid>
    <comment_count>3</comment_count>
      <attachid>291688</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-14 17:52:56 -0700</bug_when>
    <thetext>Created attachment 291688
patch

Address review comments:
 - Implement getCallData/getConstructData/visitChildren, and add related tests (call function properties and assert that they throw, invoke constructor properties and assert that they also throw).
 - Don&apos;t use common identifiers, only use builtin names.

Also, merge with the change which just landed in https://bugs.webkit.org/show_bug.cgi?id=163267

I think this is now good to go!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240522</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-14 18:28:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created attachment 291688 [details]
&gt; patch
&gt; 
&gt; Address review comments:
&gt;  - Implement getCallData/getConstructData/visitChildren, and add related
&gt; tests (call function properties and assert that they throw, invoke
&gt; constructor properties and assert that they also throw).
&gt;  - Don&apos;t use common identifiers, only use builtin names.
&gt; 
&gt; Also, merge with the change which just landed in
&gt; https://bugs.webkit.org/show_bug.cgi?id=163267
&gt; 
&gt; I think this is now good to go!

Your patch looks a little light :P. I think you forgot to include some changes or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240526</commentid>
    <comment_count>5</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-14 18:35:31 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Created attachment 291688 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; Address review comments:
&gt; &gt;  - Implement getCallData/getConstructData/visitChildren, and add related
&gt; &gt; tests (call function properties and assert that they throw, invoke
&gt; &gt; constructor properties and assert that they also throw).
&gt; &gt;  - Don&apos;t use common identifiers, only use builtin names.
&gt; &gt; 
&gt; &gt; Also, merge with the change which just landed in
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=163267
&gt; &gt; 
&gt; &gt; I think this is now good to go!
&gt; 
&gt; Your patch looks a little light :P. I think you forgot to include some
&gt; changes or something.

No that&apos;s all of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240557</commentid>
    <comment_count>6</comment_count>
      <attachid>291705</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-14 21:11:41 -0700</bug_when>
    <thetext>Created attachment 291705
patch

MSVC bot was sad at zero-sized static array. make it happy by having at least one value in arrays (and initialize one of them which ins&apos;t default-initializable because the union is being silly). They&apos;re not read so their content doesn&apos;t matter (and they&apos;ll eventually be auto-generated when I implement them).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240614</commentid>
    <comment_count>7</comment_count>
      <attachid>291720</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-15 11:21:43 -0700</bug_when>
    <thetext>Created attachment 291720
patch

Fixing MSVC bot made GTK bot unhappy because it&apos;s being silly about initialization of POD static globals (they should default init, GTK bot thinks a warning is cool). Whack that mole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240983</commentid>
    <comment_count>8</comment_count>
      <attachid>291720</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-17 09:51:50 -0700</bug_when>
    <thetext>Comment on attachment 291720
patch

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

r=me with some comments.

&gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:53
&gt; +// FIXME https://bugs.webkit.org/show_bug.cgi?id=161709 Implement each of these in their own header file, and autogenerate *.lut.h files for *PrototypeTable.

nit: I think we usually put the url after the comment.

&gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:55
&gt; +    class WebAssembly ## NAME : public JSDestructibleObject { \

Normally we would call this JSWebAssembly ## NAME.

The typical convention is JS ## NAME for instance objects and NAME ## Protototype / NAME ## Constructor for prototypes / constructors, respectively.

&gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:83
&gt; +    const ClassInfo WebAssembly ## NAME::s_info = { &quot;Object&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(WebAssembly ## NAME) }; \

&quot;Object&quot; should be something to identify this object to a JSC user. Perhaps &quot;WebAssembly ## NAME&quot;. That string is only used by the inspector to produce nicely formatted names for each object it sees.

&gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:85
&gt; +    class WebAssembly ## NAME ## Prototype : public WebAssembly ## NAME { \

Why does this subclass the instance object? Modern JS has prototypes act as normal objects with a few exceptions for Array.prototype, etc.

&gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:118
&gt; +    const ClassInfo WebAssembly ## NAME ## Prototype::s_info = { &quot;Object&quot;, &amp;WebAssembly ## NAME::s_info, &amp;NAME ## PrototypeTable, CREATE_METHOD_TABLE(WebAssembly ## NAME ## Prototype) }; \

Ditto.

&gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:159
&gt; +            putDirectWithoutTransition(vm, vm.propertyNames-&gt;length, jsNumber(0), ReadOnly | DontEnum | DontDelete); \

Should this be functionLength and not 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241005</commentid>
    <comment_count>9</comment_count>
      <attachid>291831</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-17 10:33:42 -0700</bug_when>
    <thetext>Created attachment 291831
patch

(In reply to comment #8)
&gt; Comment on attachment 291720 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291720&amp;action=review
&gt; 
&gt; r=me with some comments.
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:53
&gt; &gt; +// FIXME https://bugs.webkit.org/show_bug.cgi?id=161709 Implement each of these in their own header file, and autogenerate *.lut.h files for *PrototypeTable.
&gt; 
&gt; nit: I think we usually put the url after the comment.

Done.


&gt; &gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:55
&gt; &gt; +    class WebAssembly ## NAME : public JSDestructibleObject { \
&gt; 
&gt; Normally we would call this JSWebAssembly ## NAME.
&gt; 
&gt; The typical convention is JS ## NAME for instance objects and NAME ##
&gt; Protototype / NAME ## Constructor for prototypes / constructors,
&gt; respectively.

I followed what IntlObject and IntlCollator do. Which is &quot;right&quot;?


&gt; &gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:83
&gt; &gt; +    const ClassInfo WebAssembly ## NAME::s_info = { &quot;Object&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(WebAssembly ## NAME) }; \
&gt; 
&gt; &quot;Object&quot; should be something to identify this object to a JSC user. Perhaps
&gt; &quot;WebAssembly ## NAME&quot;. That string is only used by the inspector to produce
&gt; nicely formatted names for each object it sees.

Same here, IntlCollator (and all other Intl constructors) use &quot;Object&quot;. Are they wrong? I can fix them as a separate patch.


&gt; &gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:85
&gt; &gt; +    class WebAssembly ## NAME ## Prototype : public WebAssembly ## NAME { \
&gt; 
&gt; Why does this subclass the instance object? Modern JS has prototypes act as
&gt; normal objects with a few exceptions for Array.prototype, etc.

Same here: that&apos;s what IntlCollatorPrototype does. I don&apos;t know what&apos;s right, let me know which to go for and I can separately fix Intl* if they&apos;re also wrong.



&gt; &gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:118
&gt; &gt; +    const ClassInfo WebAssembly ## NAME ## Prototype::s_info = { &quot;Object&quot;, &amp;WebAssembly ## NAME::s_info, &amp;NAME ## PrototypeTable, CREATE_METHOD_TABLE(WebAssembly ## NAME ## Prototype) }; \
&gt; 
&gt; Ditto.

Ditto².


&gt; &gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:159
&gt; &gt; +            putDirectWithoutTransition(vm, vm.propertyNames-&gt;length, jsNumber(0), ReadOnly | DontEnum | DontDelete); \
&gt; 
&gt; Should this be functionLength and not 0?

Yeah I think you&apos;re right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241040</commentid>
    <comment_count>10</comment_count>
      <attachid>291836</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-17 11:16:44 -0700</bug_when>
    <thetext>Created attachment 291836
patch

We discussed this offline: Intl is wrong, so I updated WebAssembly as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241057</commentid>
    <comment_count>11</comment_count>
      <attachid>291836</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-17 11:31:57 -0700</bug_when>
    <thetext>Comment on attachment 291836
patch

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

&gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:55
&gt; +    class JSWebAssembly ## NAME : public JSDestructibleObject { \

Is the plan to add fields to these objects that will require destruction? If not, this can just inherit from JSNonFinalObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241060</commentid>
    <comment_count>12</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-17 11:34:13 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 291836 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291836&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WebAssemblyObject.cpp:55
&gt; &gt; +    class JSWebAssembly ## NAME : public JSDestructibleObject { \
&gt; 
&gt; Is the plan to add fields to these objects that will require destruction? If
&gt; not, this can just inherit from JSNonFinalObject.

Im not 100% sure I understand the semantics, but I believe so: WebAssembly&apos;s Module / Instance / Memory / Table would require destructor action I think. The two error types won&apos;t, and should do as you suggest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241168</commentid>
    <comment_count>13</comment_count>
      <attachid>291836</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 14:38:47 -0700</bug_when>
    <thetext>Comment on attachment 291836
patch

Clearing flags on attachment: 291836

Committed r207432: &lt;http://trac.webkit.org/changeset/207432&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241169</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-17 14:38:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291545</attachid>
            <date>2016-10-13 17:14:09 -0700</date>
            <delta_ts>2016-10-14 17:52:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JS-API-implement-basic-stub.patch</filename>
            <type>text/plain</type>
            <size>33394</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA2MGZmNjExNzJjZGNmMGRhMTJkYTQ0NzRmNmI0N2FjMjc1Nzc4YTY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEzIE9jdCAyMDE2IDE0OjUzOjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgoKSW1wbGVtZW50IHRoZSBnbG9iYWwg
V2ViQXNzZW1ibHkgSmF2YVNjcmlwdCBvYmplY3QsIGFuZCBpdHMgY29uc3RydWN0b3IgKwpmdW5j
dGlvbiBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbjoKICBodHRwczovL2dpdGh1Yi5jb20vV2Vi
QXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCgpUaGVzZSBkb24ndCBkbyBhbnl0aGlu
ZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcK
bW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3NvY2lhdGVkIHRlc3RzLgotLS0KIEpTVGVzdHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrCiBKU1Rlc3Rz
L3dhc20ueWFtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArKysKIEpT
VGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMgICAgICAgICAgICAgIHwgIDEzICsr
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICB8ICAg
MSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8
ICAzMyArKysKIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAg
ICAgIHwgICA4ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aCAgICAgIHwgICA2ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmggIHwgICA3ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCAgIHwgIDIwICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmggICAgICAgICAgICB8ICAgMyArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
ZWJBc3NlbWJseU9iamVjdC5jcHAgICB8IDIyNyArKysrKysrKysrKysrKysrKysrKysKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmggICAgIHwgIDQ4ICsrKysr
CiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy
MCArKwogVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMgICAgICAgICAgICAg
fCAgIDMgKy0KIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgICAgICAgICAgICAg
ICAgIHwgICA3ICsKIDE2IGZpbGVzIGNoYW5nZWQsIDQzOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS55YW1sCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2Vt
Ymx5T2JqZWN0LmgKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDQwZjA4YzcuLmVmYzM2M2EgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMTAtMTMg
IEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5
IEpTIEFQSTogaW1wbGVtZW50IGJhc2ljIHN0dWIKKworICAgICAgICBJbXBsZW1lbnQgdGhlIGds
b2JhbCBXZWJBc3NlbWJseSBKYXZhU2NyaXB0IG9iamVjdCwgYW5kIGl0cyBjb25zdHJ1Y3RvciAr
CisgICAgICAgIGZ1bmN0aW9uIHByb3BlcnRpZXMgYXMgZGVzY3JpYmVkIGluOgorICAgICAgICAg
IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvSlMubWQK
KworICAgICAgICBUaGVzZSBkb24ndCBkbyBhbnl0aGluZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFy
ZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcKKyAgICAgICAgbW9yZSBmdW5jdGlvbmFs
aXR5IGFuZCBhc3NvY2lhdGVkIHRlc3RzLgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTog
aW1wbGVtZW50IGJhc2ljIHN0dWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2FzbS55YW1sOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS90
ZXN0X2Jhc2ljX2FwaS5qczogQWRkZWQuCisKIDIwMTYtMTAtMTIgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgSGFuZGxlIG5vbi1mdW5jdGlvbiwgbm9u
LXVuZGVmaW5lZCBjb21wYXJhdG9yIGluIEFycmF5LnByb3RvdHlwZS5zb3J0CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20ueWFtbCBiL0pTVGVzdHMvd2FzbS55YW1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjVjYTM4MDAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dh
c20ueWFtbApAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworLSBwYXRoOiB3YXNtL2pzLWFwaS8KKyAgY21kOiBydW5XZWJBc3NlbWJseQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcyBiL0pTVGVzdHMvd2FzbS9q
cy1hcGkvdGVzdF9iYXNpY19hcGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjFhNWRhZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9i
YXNpY19hcGkuanMKQEAgLTAsMCArMSwxMyBAQAoraWYgKFdlYkFzc2VtYmx5ID09PSB1bmRlZmlu
ZWQpCisgICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGdsb2Jh
bCBvYmplY3QiKTsKKworY29uc3QgZnVuY3Rpb25Qcm9wZXJ0aWVzID0gWyJ2YWxpZGF0ZSIsICJj
b21waWxlIl07Citjb25zdCBjb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBbIk1vZHVsZSIsICJJbnN0
YW5jZSIsICJNZW1vcnkiLCAiVGFibGUiLCAiQ29tcGlsZUVycm9yIl07CisKK2ZvciAoY29uc3Qg
ZiBvZiBmdW5jdGlvblByb3BlcnRpZXMpCisgICAgaWYgKFdlYkFzc2VtYmx5W2ZdID09PSB1bmRl
ZmluZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBXZWJBc3NlbWJs
eSBmdW5jdGlvbiBwcm9wZXJ0eSAiJHtmfSJgKTsKKworZm9yIChjb25zdCBjIG9mIGNvbnN0cnVj
dG9yUHJvcGVydGllcykKKyAgICBpZiAoV2ViQXNzZW1ibHlbY10gPT09IHVuZGVmaW5lZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGNvbnN0cnVj
dG9yIHByb3BlcnR5ICIke2N9ImApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGFhZTcxYjQuLmVlYmIwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTg2Miw2ICs4NjIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20v
V0FTTUNhbGxpbmdDb252ZW50aW9uLmNwcAogICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAK
ICAgICB3YXNtL1dBU01QbGFuLmNwcAorICAgIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwCiAK
ICAgICB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAogICAgIHlhcnIvWWFyckNhbm9uaWNhbGl6
ZVVDUzIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNzc1NTU1Li5kNTUzNTNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNi0xMC0xMyAgSkYg
QmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMg
QVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZ2xvYmFs
IFdlYkFzc2VtYmx5IEphdmFTY3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNvbnN0cnVjdG9yICsKKyAg
ICAgICAgZnVuY3Rpb24gcHJvcGVydGllcyBhcyBkZXNjcmliZWQgaW46CisgICAgICAgICAgaHR0
cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZAorCisg
ICAgICAgIFRoZXNlIGRvbid0IGRvIGFueXRoaW5nIGF0IHRoZSBtb21lbnQsIHRoZSBwYXJlbnQg
YnVnIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZworICAgICAgICBtb3JlIGZ1bmN0aW9uYWxpdHkg
YW5kIGFzc29jaWF0ZWQgdGVzdHMuCisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBs
ZW1lbnQgYmFzaWMgc3R1YgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYzNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
OiByZWdpc3RlciB0aGUgbmV3IGNvbnN0cnVjdG9yIHByb3BlcnRpZXMKKyAgICAgICAgKiBqc2Mu
Y3BwOiByZW1vdmUgdXNlbGVzcyBpbmNsdWRlCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oOiBuZXcgaWRlbnRpZmllcnMKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOiBhZGQgdGhlIFdl
YkFzc2VtYmx5IGdsb2JhbCBvYmplY3QgYW5kIGl0cyBjb25zdHJ1Y3RvciBwcm9wZXJ0aWVzLCBi
dXQgb25seSBpZiB0aGUgSlNDIG9wdGlvbiBlbmFibGVzIGl0CisgICAgICAgICogcnVudGltZS9P
cHRpb25zLmg6IGFkZCB0aGUgdXNlV2ViQXNzZW1ibHkgKGFsaWFzOiBlbmFibGVXZWJBc3NlbWJs
eSkgb3B0aW9uLCBkZWZhdWx0aW5nIHRvIGZhbHNlCisgICAgICAgICogd2FzbS9XZWJBc3NlbWJs
eU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU9iamVjdDo6Y3Jl
YXRlKTogYm9pbGVycGxhdGUKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0
ZVN0cnVjdHVyZSk6IGJvaWxlcnBsYXRlCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5T2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6IGJvaWxlcnBsYXRlCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
T2JqZWN0OjpXZWJBc3NlbWJseU9iamVjdCk6IGJvaWxlcnBsYXRlCisgICAgICAgIChKU0M6Ondh
c21PYmplY3RGdW5jdmFsaWRhdGUpOiBhdXRvLXRocm93cyBmb3Igbm93CisgICAgICAgIChKU0M6
Ondhc21PYmplY3RGdW5jY29tcGlsZSk6IGF1dG8tdGhyb3dzIGZvciBub3cKKyAgICAgICAgKiB3
YXNtL1dlYkFzc2VtYmx5T2JqZWN0Lmg6IEFkZGVkLgorCiAyMDE2LTEwLTEzICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU3Rl
cHBpbmcgaGlnaGxpZ2h0IGZvciBkb3QvYnJhY2tldCBleHByZXNzaW9ucyBpbiBpZiBzdGF0ZW1l
bnRzIGhpZ2hsaWdodHMgc3Vic2V0IG9mIHRoZSBleHByZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDEwOGZlOGEuLjJkZWVkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xODczLDYgKzE4NzMsOCBAQAogCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYg
LyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0ZCNjA0QjEwM0Y1RUFCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlw
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTdGQ0MyNkQxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkNDMjZDMTdBMEI2QUEwMDc4NkQx
QSAvKiBGVExTd2l0Y2hDYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQThBNDc0OEUxNTFBODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEQxNTFB
ODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hICovOyB9OworCQlBRDJGQ0I4ODFEQUVCRjNDMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCODYxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
T2JqZWN0LmNwcCAqLzsgfTsKKwkJQUQyRkNCODkxREFFQkYzRjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDJGQ0I4NzFEQUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuaCAqLzsgfTsK
IAkJQUQ4NkE5M0UxQUE0RDg4RDAwMkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODZBOTNEMUFBNEQ4N0Mw
MDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUREQjFGNjMxOEQ3N0RCRTAwOUI1OEE4IC8qIE9wYXF1
ZVJvb3RTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEREIxRjYyMThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQURFMzlGRkYxNkREMTQ0QjAw
MDNDRDRBIC8qIFByb3BlcnR5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5VGFi
bGUuY3BwICovOyB9OwpAQCAtNDE5NCw2ICs0MTk2LDggQEAKIAkJQThFODk0MzEwQ0QwNjAyNDAw
MzY3MTc5IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8q
IFByb3BlcnR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UHJvcGVydHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQjg2
MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBc3NlbWJseU9iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQjg3MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg2QTkzRDFBQTREODdDMDAy
RkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWFrR0NNYXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFE
REIxRjYyMThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE9wYXF1ZVJvb3RTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjU5Rjg5MzcxODkxQUQzMzAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25T
dHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRJbnN0cnVj
dGlvblN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY2OCw2ICs1Njcy
LDggQEAKIAkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0IC8qIHdhc20gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUFEMkZDQjg2MURBRUJGMzcwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgKi8sCisJCQkJQUQyRkNCODcxREFFQkYzNzAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggKi8sCiAJCQkJN0I5OEQxMzQxQjYwQ0Q1QTAwMjNC
MUE0IC8qIEpTV0FTTU1vZHVsZS5jcHAgKi8sCiAJCQkJN0I5OEQxMzUxQjYwQ0Q1QTAwMjNCMUE0
IC8qIEpTV0FTTU1vZHVsZS5oICovLAogCQkJCTUzRjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBX
QVNNQjNJUkdlbmVyYXRvci5jcHAgKi8sCkBAIC03NDI0LDYgKzc0MzAsNyBAQAogCQkJCTBGQzk3
RjM0MTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDhBMzE0MTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tT
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2Rl
QmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCODkxREFFQkYzRjAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgy
MjE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUND
MEI2MzE4QkU5OTUwMDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBI
ZWFkZXJzICovLAogCQkJCTk5Q0MwQjYyMThCRTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9y
UmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCkBAIC05Njk5LDYgKzk3MDYs
NyBAQAogCQkJCTc5MDVCQjY4MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMjcxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3Vt
ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyRjFBQUE4MDY5MDBEMzNCMzMgLyog
U2NvcGVkQXJndW1lbnRzVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCODgxREFF
QkYzQzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk5MkFCQ0Y5MUJFQTlCRDIwMDY0MDNBMCAvKiBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJBMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE3QThFRTE4Q0U0RkQ4MDA1MjM3MUQgLyogU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDZlYmQzMzkuLjgyOTRiMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAg
LTE1OSw2ICsxNTksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oc3RyaW5nU3Vic3Ry
SW50ZXJuYWwpIFwKICAgICBtYWNybyhtYWtlQm91bmRGdW5jdGlvbikgXAogICAgIG1hY3JvKGhh
c093bkxlbmd0aFByb3BlcnR5KSBcCisgICAgbWFjcm8oTW9kdWxlKSBcCisgICAgbWFjcm8oSW5z
dGFuY2UpIFwKKyAgICBtYWNybyhNZW1vcnkpIFwKKyAgICBtYWNybyhUYWJsZSkgXAorICAgIG1h
Y3JvKENvbXBpbGVFcnJvcikgXAorICAgIG1hY3JvKFJ1bnRpbWVFcnJvcikgXAogCiAKICNkZWZp
bmUgSU5JVElBTElaRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWShuYW1lKSBtX3ByaXZhdGVUb1B1
YmxpY01hcC5hZGQobV8jI25hbWUjI1ByaXZhdGVOYW1lLmltcGwoKSwgJm1fIyNuYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMy4uMjhlNzE3YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXQVNNTW9k
dWxlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggN2FlMTdkMy4uYWIwYTg0OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCkBAIC0zNiw2ICszNiw3IEBACiAgICAgbWFjcm8oQllURVNfUEVSX0VMRU1FTlQpIFwKICAg
ICBtYWNybyhCb29sZWFuKSBcCiAgICAgbWFjcm8oQ29sbGF0b3IpIFwKKyAgICBtYWNybyhDb21w
aWxlRXJyb3IpIFwKICAgICBtYWNybyhDdXN0b21FbGVtZW50UmVnaXN0cnkpIFwKICAgICBtYWNy
byhEYXRlKSBcCiAgICAgbWFjcm8oRGF0ZVRpbWVGb3JtYXQpIFwKQEAgLTYzLDEzICs2NCwxNiBA
QAogICAgIG1hY3JvKElEQlRyYW5zYWN0aW9uKSBcCiAgICAgbWFjcm8oSURCVmVyc2lvbkNoYW5n
ZUV2ZW50KSBcCiAgICAgbWFjcm8oSW5maW5pdHkpIFwKKyAgICBtYWNybyhJbnN0YW5jZSkgXAog
ICAgIG1hY3JvKEludGwpIFwKICAgICBtYWNybyhKU09OKSBcCiAgICAgbWFjcm8oTG9hZGVyKSBc
CiAgICAgbWFjcm8oTWFwKVwKICAgICBtYWNybyhNYXBJdGVyYXRvcilcCiAgICAgbWFjcm8oTWF0
aCkgXAorICAgIG1hY3JvKE1lbW9yeSkgXAogICAgIG1hY3JvKE1vZGVybk1lZGlhQ29udHJvbHMp
IFwKKyAgICBtYWNybyhNb2R1bGUpIFwKICAgICBtYWNybyhOYU4pIFwKICAgICBtYWNybyhOdW1i
ZXIpIFwKICAgICBtYWNybyhOdW1iZXJGb3JtYXQpIFwKQEAgLTg1LDE3ICs4OSwyMCBAQAogICAg
IG1hY3JvKFJlZ0V4cCkgXAogICAgIG1hY3JvKFJlc3BvbnNlKSBcCiAgICAgbWFjcm8oUmVxdWVz
dCkgXAorICAgIG1hY3JvKFJ1bnRpbWVFcnJvcikgXAogICAgIG1hY3JvKFNldClcCiAgICAgbWFj
cm8oU2V0SXRlcmF0b3IpXAogICAgIG1hY3JvKFNoYWRvd1Jvb3QpIFwKICAgICBtYWNybyhTdHJp
bmcpIFwKICAgICBtYWNybyhTeW1ib2wpIFwKICAgICBtYWNybyhTeW50YXhFcnJvcikgXAorICAg
IG1hY3JvKFRhYmxlKSBcCiAgICAgbWFjcm8oVHlwZUVycm9yKSBcCiAgICAgbWFjcm8oVVJJRXJy
b3IpIFwKICAgICBtYWNybyhVVEMpIFwKICAgICBtYWNybyhXZWFrTWFwKVwKICAgICBtYWNybyhX
ZWFrU2V0KVwKKyAgICBtYWNybyhXZWJBc3NlbWJseSkgXAogICAgIG1hY3JvKFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQpIFwKICAgICBtYWNybyhXZWJHTFZlcnRleEFycmF5T2JqZWN0KSBcCiAgICAg
bWFjcm8oV2ViU29ja2V0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggM2E0ZWFkOS4uYjU4MGE5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTA2LDcgKzEw
Niw2IEBACiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMu
aCIKLSNpbmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNp
bmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgpAQCAtMTU1LDYg
KzE1NCw3IEBACiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIldlYWtT
ZXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIldlYWtTZXRQcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJXZWJBc3NlbWJseU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIAog
I2lmIEVOQUJMRShJTlRMKQpAQCAtODE3LDYgKzgxNywyNCBAQCBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0
cnVjdAogCiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICIkdm0iKSwgZG9sbGFyVk0sIERvbnRFbnVtKTsKICAgICB9Cisg
ICAgCisgICAgCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIGlmIChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseSgpKSB7CisgICAgICAgIGF1dG8qIHdhc20gPSBXZWJBc3NlbWJseU9iamVjdDo6
Y3JlYXRlKHZtLCB0aGlzLCBXZWJBc3NlbWJseU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+V2ViQXNzZW1ibHksIHdhc20sIERvbnRF
bnVtKTsKKyAgICAgICAgCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyBleHRyYVN0YXRpY0ds
b2JhbHNbXSA9IHsKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5Nb2R1bGVQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPk1vZHVsZSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5JbnN0YW5jZVByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+SW5zdGFuY2UpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuTWVtb3J5UHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5NZW1vcnkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuVGFibGVQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPlRhYmxlKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAorICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLkNvbXBpbGVFcnJvclByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Q29tcGlsZUVycm9yKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAorICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLlJ1bnRpbWVFcnJvclByaXZhdGVOYW1lKCksIHdhc20tPmdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+UnVudGltZUVycm9yKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICB9OworICAgICAgICBhZGRTdGF0aWNHbG9iYWxz
KGV4dHJhU3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChleHRyYVN0YXRpY0dsb2JhbHMp
KTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAgICAgcmVzZXRQcm90
b3R5cGUodm0sIGdldFByb3RvdHlwZURpcmVjdCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAppbmRleCBkYjVjNTcyLi5jYzZkODA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0zOTAsNiArMzkwLDggQEAgdHlwZWRlZiBjb25z
dCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgXAogICAgIHYoYm9vbCwgdXNlU291cmNlUHJvdmlk
ZXJDYWNoZSwgdHJ1ZSwgTm9ybWFsLCAiSWYgZmFsc2UsIHRoZSBwYXJzZXIgd2lsbCBub3QgdXNl
IHRoZSBzb3VyY2UgcHJvdmlkZXIgY2FjaGUuIEl0J3MgZ29vZCB0byB2ZXJpZnkgZXZlcnl0aGlu
ZyB3b3JrcyB3aGVuIHRoaXMgaXMgZmFsc2UuIEJlY2F1c2UgdGhlIGNhY2hlIGlzIHNvIHN1Y2Nl
c3NmdWwsIGl0IGNhbiBtYXNrIGJ1Z3MuIikgXAogICAgIHYoYm9vbCwgdXNlQ29kZUNhY2hlLCB0
cnVlLCBOb3JtYWwsICJJZiBmYWxzZSwgdGhlIHVubGlua2VkIGJ5dGUgY29kZSBjYWNoZSB3aWxs
IG5vdCBiZSB1c2VkLiIpIFwKKyAgICBcCisgICAgdihib29sLCB1c2VXZWJBc3NlbWJseSwgZmFs
c2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2ViQXNzZW1ibHkgZ2xvYmFsIG9iamVjdC4iKSBcCiAK
IGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCkBAIC00MjcsNiArNDI5
LDcgQEAgZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgdihlbmFibGVFeGVjdXRhYmxlQWxs
b2NhdGlvbkZ1enosIHVzZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eiwgU2FtZU9wdGlvbikgXAog
ICAgIHYoZW5hYmxlT1NSRXhpdEZ1enosIHVzZU9TUkV4aXRGdXp6LCBTYW1lT3B0aW9uKSBcCiAg
ICAgdihlbmFibGVEb2xsYXJWTSwgdXNlRG9sbGFyVk0sIFNhbWVPcHRpb24pIFwKKyAgICB2KGVu
YWJsZVdlYkFzc2VtYmx5LCB1c2VXZWJBc3NlbWJseSwgU2FtZU9wdGlvbikgXAogCiBjbGFzcyBP
cHRpb25zIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dlYkFzc2VtYmx5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjQx
NjM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNz
ZW1ibHlPYmplY3QuY3BwCkBAIC0wLDAgKzEsMjI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YkFzc2VtYmx5T2JqZWN0LmgiCisKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShXZWJBc3NlbWJseU9iamVjdCk7CisK
Ky8vIE5hbWUsIGZ1bmN0aW9uTGVuZ3RoCisjZGVmaW5lIEZPUl9FQUNIX1dBU01fQ09OU1RSVUNU
T1JfUFJPUEVSVFkoRE8pIFwKKyAgICBETyhNb2R1bGUsIDEpIFwKKyAgICBETyhJbnN0YW5jZSwg
MikgXAorICAgIERPKE1lbW9yeSwgMSkgXAorICAgIERPKFRhYmxlLCAxKSBcCisgICAgRE8oQ29t
cGlsZUVycm9yLCAxKSBcCisgICAgRE8oUnVudGltZUVycm9yLCAxKQorCisvLyBOYW1lLCBmdW5j
dGlvbkxlbmd0aAorI2RlZmluZSBGT1JfRUFDSF9XQVNNX0ZVTkNUSU9OX1BST1BFUlRZKERPKSBc
CisgICAgRE8odmFsaWRhdGUsIDEpIFwKKyAgICBETyhjb21waWxlLCAxKQorCisvLyBGSVhNRSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzA5IEltcGxlbWVudCBl
YWNoIG9mIHRoZXNlIGluIHRoZWlyIG93biBoZWFkZXIgZmlsZSwgYW5kIGF1dG9nZW5lcmF0ZSAq
Lmx1dC5oIGZpbGVzIGZvciAqUHJvdG90eXBlVGFibGUuCisjZGVmaW5lIERFRklORV9XQVNNX09C
SkVDVF9DT05TVFJVQ1RPUl9QUk9QRVJUWShOQU1FLCAuLi4pIFwKKyAgICBjbGFzcyBXZWJBc3Nl
bWJseSAjIyBOQU1FIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsgXAorICAgIHB1Ymxp
YzogXAorICAgICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7IFwKKyAgICAg
ICAgXAorICAgICAgICBzdGF0aWMgV2ViQXNzZW1ibHkgIyMgTkFNRSogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBhdXRvKiBm
b3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseSAjIyBOQU1FPih2
bS5oZWFwKSkgV2ViQXNzZW1ibHkgIyMgTkFNRSh2bSwgc3RydWN0dXJlKTsgXAorICAgICAgICAg
ICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAgICAgICAgIHJldHVybiBmb3Jt
YXQ7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgICAgIERF
Q0xBUkVfSU5GTzsgXAorICAgICAgICBcCisgICAgcHJvdGVjdGVkOiBcCisgICAgICAgIFdlYkFz
c2VtYmx5ICMjIE5BTUUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAorICAgICAgICAg
ICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKSBcCisgICAgICAgIHsgXAor
ICAgICAgICB9IFwKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pIFwKKyAgICAg
ICAgeyBcCisgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAgICAg
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsgXAorICAgICAgICB9IFwKKyAgICB9OyBcCisg
ICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5BTUU6OnNfaW5mbyA9IHsgIk9iamVj
dCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHkgIyMg
TkFNRSkgfTsgXAorICAgIFwKKyAgICBjbGFzcyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3Rv
dHlwZSA6IHB1YmxpYyBXZWJBc3NlbWJseSAjIyBOQU1FIHsgXAorICAgIHB1YmxpYzogXAorICAg
ICAgICB0eXBlZGVmIFdlYkFzc2VtYmx5ICMjIE5BTUUgQmFzZTsgXAorICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7IFwKKyAgICAgICAgXAorICAgICAgICBzdGF0aWMgV2ViQXNz
ZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBhdXRv
KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseSAjIyBOQU1F
ICMjIFByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOyBcCisgICAgICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
KTsgXAorICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsgXAorICAgICAgICB9IFwKKyAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIFwKKyAgICAgICAgeyBcCisgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IFwKKyAgICAg
ICAgfSBcCisgICAgICAgIFwKKyAgICAgICAgREVDTEFSRV9JTkZPOyBcCisgICAgICAgIFwKKyAg
ICBwcm90ZWN0ZWQ6IFwKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pIFwKKyAg
ICAgICAgeyBcCisgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAg
ICAgfSBcCisgICAgICAgIFwKKyAgICBwcml2YXRlOiBcCisgICAgICAgIFdlYkFzc2VtYmx5ICMj
IE5BTUUgIyMgUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAg
ICAgICAgIDogV2ViQXNzZW1ibHkgIyMgTkFNRSh2bSwgc3RydWN0dXJlKSBcCisgICAgICAgIHsg
XAorICAgICAgICB9IFwKKyAgICB9OyBcCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IE5BTUUgIyMgUHJvdG90eXBlVGFibGVJbmRleFtdID0geyB9OyBcCisgICAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBIYXNoVGFibGVWYWx1ZSBOQU1FICMjIFByb3RvdHlwZVRhYmxlVmFs
dWVzW10gPSB7IH07IFwKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZSBOQU1FICMj
IFByb3RvdHlwZVRhYmxlID0geyAwLCAwLCB0cnVlLCBOQU1FICMjIFByb3RvdHlwZVRhYmxlVmFs
dWVzLCBOQU1FICMjIFByb3RvdHlwZVRhYmxlSW5kZXggfTsgXAorICAgIGNvbnN0IENsYXNzSW5m
byBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JldlYkFzc2VtYmx5ICMjIE5BTUU6OnNfaW5mbywgJk5BTUUgIyMgUHJvdG90eXBlVGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUpIH07IFwK
KyAgICBcCisgICAgY2xhc3MgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvciA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsgXAorICAgIHB1YmxpYzogXAorICAgICAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsgXAorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7IFwKKyAgICAgICAgXAorICAgICAgICBzdGF0aWMgV2ViQXNzZW1ibHkgIyMgTkFNRSAj
IyBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdlYkFz
c2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBOQU1FICMjIFByb3RvdHlwZSwgU3RydWN0dXJl
KiBOQU1FICMjIFN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIFdlYkFzc2Vt
Ymx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7IFwKKyAg
ICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgTkFNRSAjIyBQcm90b3R5
cGUsIE5BTUUgIyMgU3RydWN0dXJlKTsgXAorICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OyBcCisgICAgICAgIH0gXAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgXAorICAgICAgICBERUNM
QVJFX0lORk87IFwKKyAgICAgICAgXAorICAgICAgICBTdHJ1Y3R1cmUqIE5BTUUgIyMgU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV8gIyMgTkFNRSAjIyBTdHJ1Y3R1cmUuZ2V0KCk7IH0gXAor
ICAgICAgICBcCisgICAgcHJvdGVjdGVkOiBcCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSogTkFNRSAjIyBQcm90b3R5
cGUsIFN0cnVjdHVyZSogTkFNRSAjIyBTdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCNOQU1FKSk7IFwKKyAg
ICAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIE5BTUUgIyMgUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7IFwKKyAgICAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVt
IHwgRG9udERlbGV0ZSk7IFwKKyAgICAgICAgICAgIG1fICMjIE5BTUUgIyMgU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgTkFNRSAjIyBTdHJ1Y3R1cmUpOyBcCisgICAgICAgIH0gXAorICAgICAgICBc
CisgICAgcHJpdmF0ZTogXAorICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgICAgIDogSW50ZXJu
YWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAgICAgICB9IFwKKyAg
ICBcCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV8gIyMgTkFNRSAjIyBTdHJ1Y3R1cmU7
IFwKKyAgICB9OyBcCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IE5B
TUUgIyMgQ29uc3RydWN0b3JUYWJsZUluZGV4W10gPSB7IH07IFwKKyAgICBzdGF0aWMgY29uc3Qg
c3RydWN0IEhhc2hUYWJsZVZhbHVlIE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0g
eyB9OyBcCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBIYXNoVGFibGUgTkFNRSAjIyBDb25zdHJ1
Y3RvclRhYmxlID0geyAwLCAwLCB0cnVlLCBOQU1FICMjIENvbnN0cnVjdG9yVGFibGVWYWx1ZXMs
IE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZUluZGV4IH07IFwKKyAgICBjb25zdCBDbGFzc0luZm8g
V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24i
LCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IpIH07
CisKK0ZPUl9FQUNIX1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkoREVGSU5FX1dBU01fT0JKRUNU
X0NPTlNUUlVDVE9SX1BST1BFUlRZKQorCisKKyNkZWZpbmUgREVDTEFSRV9XQVNNX09CSkVDVF9G
VU5DVElPTihOQU1FLCAuLi4pIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2FzbU9iamVj
dEZ1bmMgIyMgTkFNRShFeGVjU3RhdGUqKTsKK0ZPUl9FQUNIX1dBU01fRlVOQ1RJT05fUFJPUEVS
VFkoREVDTEFSRV9XQVNNX09CSkVDVF9GVU5DVElPTikKKworCitjb25zdCBDbGFzc0luZm8gV2Vi
QXNzZW1ibHlPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlPYmplY3QpIH07CisKK1dlYkFzc2VtYmx5T2Jq
ZWN0KiBXZWJBc3NlbWJseU9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlPYmplY3Q+KHZtLmhlYXApKSBX
ZWJBc3NlbWJseU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVy
ZSogV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJseU9i
amVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7CisKKyNkZWZpbmUgU0VUX1VQX1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkoTkFN
RSwgLi4uKSBcCisgICAgYXV0byogcHJvdG90eXBlICMjIE5BTUUgPSBXZWJBc3NlbWJseSAjIyBO
QU1FICMjIFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIFdlYkFzc2VtYmx5ICMj
IE5BTUUgIyMgUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOyBcCisgICAgYXV0byogc3RydWN0dXJlICMj
IE5BTUUgPSBXZWJBc3NlbWJseSAjIyBOQU1FOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlICMjIE5BTUUpOyBcCisgICAgYXV0byogY29uc3RydWN0b3IgIyMgTkFN
RSA9IFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgV2ViQXNz
ZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIHByb3RvdHlwZSAjIyBO
QU1FLCBzdHJ1Y3R1cmUgIyMgTkFNRSk7IFwKKyAgICBwcm90b3R5cGUgIyMgTkFNRS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RvciAjIyBOQU1FLCBEb250RW51bSk7CisgICAgRk9SX0VBQ0hfV0FTTV9DT05TVFJV
Q1RPUl9QUk9QRVJUWShTRVRfVVBfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWSkKKworI2RlZmlu
ZSBSRUdJU1RFUl9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKE5BTUUsIC4uLikgXAorICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5OQU1FLCBjb25z
dHJ1Y3RvciAjIyBOQU1FLCBEb250RW51bSk7CisgICAgRk9SX0VBQ0hfV0FTTV9DT05TVFJVQ1RP
Ul9QUk9QRVJUWShSRUdJU1RFUl9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKQorCisjZGVmaW5l
IFJFR0lTVEVSX1dBU01fRlVOQ1RJT05fUFJPUEVSVFkoTkFNRSwgTEVOR1RIKSBcCisgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICNOQU1FKSwgTEVOR1RILCB3YXNtT2JqZWN0RnVuYyAjIyBOQU1FLCBOb0ludHJp
bnNpYywgRG9udEVudW0pOworICAgIEZPUl9FQUNIX1dBU01fRlVOQ1RJT05fUFJPUEVSVFkoUkVH
SVNURVJfV0FTTV9GVU5DVElPTl9QUk9QRVJUWSkKK30KKworV2ViQXNzZW1ibHlPYmplY3Q6Oldl
YkFzc2VtYmx5T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05v
bkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworICAgIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdhc21PYmplY3RGdW5jdmFsaWRhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQg
aW1wbGVtZW50IHRoZSB2YWxpZGF0ZSBmdW5jdGlvbiBwcm9wZXJ0eSIpKSkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdhc21PYmplY3RGdW5jY29tcGlsZShFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJB
c3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlIGNvbXBpbGUgZnVuY3Rpb24gcHJvcGVy
dHkiKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41NTk2MzQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlPYmpl
Y3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlPYmplY3QqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCopOworCitwcml2YXRlOgorICAgIFdlYkFzc2VtYmx5T2JqZWN0KFZN
JiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYzFhMTc2Li5mZjc4ZmIyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTYtMTAtMTMgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGJhc2ljIHN0dWIKKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGdsb2JhbCBXZWJBc3NlbWJseSBKYXZhU2NyaXB0IG9iamVjdCwg
YW5kIGl0cyBjb25zdHJ1Y3RvciArCisgICAgICAgIGZ1bmN0aW9uIHByb3BlcnRpZXMgYXMgZGVz
Y3JpYmVkIGluOgorICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNp
Z24vYmxvYi9tYXN0ZXIvSlMubWQKKworICAgICAgICBUaGVzZSBkb24ndCBkbyBhbnl0aGluZyBh
dCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcKKyAg
ICAgICAgbW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3NvY2lhdGVkIHRlc3RzLgorCisgICAgICAg
IFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGJhc2ljIHN0dWIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tamF2YXNjcmlw
dGNvcmUtdGVzdHM6CisgICAgICAgIChydW5KU0NTdHJlc3NUZXN0cyk6IHJ1biB0aGUgV2ViQXNz
ZW1ibHkgdGVzdHMKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOiBydW5u
aW5nIHRoZSBXZWJBc3NlbWJseSB0ZXN0cyByZXF1aXJlcyBhIHJ1bm5lciB3aGljaCBjYW4gdXNl
IEVTNiBtb2R1bGVzLCBhbmQgd2hpY2ggcGFzc2VzIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24g
KFdlYkFzc2VtYmx5IGlzIG90aGVyd2lzZSBkaXNhYmxlZCkKKwogMjAxNi0xMC0xMyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERpc2FibGUg
VVJMUGFyc2VyIGZvciBub24tU2FmYXJpIGlPUyBhbmQgTWFjIGFwcHMgZm9yIG5vdwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMgYi9Ub29scy9TY3Jp
cHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwppbmRleCA5NmVmNDRhLi5mMDAxZmQyIDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cworKysgYi9Ub29s
cy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwpAQCAtMjgyLDcgKzI4Miw4IEBAIHN1
YiBydW5KU0NTdHJlc3NUZXN0cwogICAgICAgICAgICAgIkpTVGVzdHMvY29udHJvbEZsb3dQcm9m
aWxlci55YW1sIiwKICAgICAgICAgICAgICJKU1Rlc3RzL2VzNi55YW1sIiwKICAgICAgICAgICAg
ICJKU1Rlc3RzL21vZHVsZXMueWFtbCIsCi0gICAgICAgICAgICAiSlNUZXN0cy9DaGFrcmFDb3Jl
LnlhbWwiKTsKKyAgICAgICAgICAgICJKU1Rlc3RzL0NoYWtyYUNvcmUueWFtbCIsCisgICAgICAg
ICAgICAiSlNUZXN0cy93YXNtLnlhbWwiKTsKICAgICB9CiAKICAgICBpZiAoJHJ1bk1vemlsbGFU
ZXN0cykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggM2I1OTg0Yi4uOTg2YWFm
ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9U
b29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC0xMTUzLDYgKzExNTMsMTMgQEAg
ZGVmIHJ1bk1vZHVsZXMKICAgICBydW4oImZ0bC1uby1jaml0LXNtYWxsLXBvb2wtbW9kdWxlcyIs
ICItbSIsICItLWppdE1lbW9yeVJlc2VydmF0aW9uU2l6ZT01MDAwMCIsICooRlRMX09QVElPTlMg
KyBOT19DSklUX09QVElPTlMpKQogZW5kCiAKK2RlZiBydW5XZWJBc3NlbWJseQorICAgIHJldHVy
biBpZiAhJGppdFRlc3RzCisgICAgcmV0dXJuIGlmICEkaXNGVExQbGF0Zm9ybQorCisgICAgcnVu
KCJkZWZhdWx0LXdhc20iLCAiLW0iLCAiLS11c2VXZWJBc3NlbWJseT0xIikKK2VuZAorCiBkZWYg
cnVuQ2hha3JhKG1vZGUsIGV4Y2VwdGlvbiwgYmFzZWxpbmVGaWxlLCBleHRyYUZpbGVzKQogICAg
IHJhaXNlIHVubGVzcyAkYmVuY2htYXJrLnRvX3MgPX4gL1wuanMkLwogICAgIGZhaWxzV2l0aEV4
Y2VwdGlvbiA9IGV4Y2VwdGlvbiAhPSAiTm9FeGNlcHRpb24iCi0tIAoyLjEwLjEKCg==
</data>
<flag name="review"
          id="314676"
          type_id="1"
          status="-"
          setter="keith_miller"
    />
    <flag name="commit-queue"
          id="314677"
          type_id="3"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291688</attachid>
            <date>2016-10-14 17:52:56 -0700</date>
            <delta_ts>2016-10-14 21:11:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JS-API-implement-basic-stub.patch</filename>
            <type>text/plain</type>
            <size>32612</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBmZTcxYzlhOTU5YjM2NzAxZjRmYWI4ZDIzNDY0MjAxMTQ1ZmEzYzM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEzIE9jdCAyMDE2IDE0OjUzOjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgoKSW1wbGVtZW50IHRoZSBnbG9iYWwg
V2ViQXNzZW1ibHkgSmF2YVNjcmlwdCBvYmplY3QsIGFuZCBpdHMgY29uc3RydWN0b3IgKwpmdW5j
dGlvbiBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbjoKICBodHRwczovL2dpdGh1Yi5jb20vV2Vi
QXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCgpUaGVzZSBkb24ndCBkbyBhbnl0aGlu
ZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcK
bW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3NvY2lhdGVkIHRlc3RzLgotLS0KIEpTVGVzdHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsrCiBKU1Rlc3Rz
L3dhc20ueWFtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBKU1Rl
c3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzICAgICAgICAgICAgICB8ICAzNyArKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAx
ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwg
IDMyICsrKwogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAg
ICAgfCAgIDggKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
ICAgICAgfCAgIDcgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDEgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwICAgfCAgMTggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaCAgICAgICAgICAgIHwgICAzICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcCAgIHwgMjU5ICsrKysrKysrKysrKysrKysrKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaCAgICAgfCAgNDggKysrKwogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysK
IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgICAgICAgICAgICAgICAgIHwgICAy
ICstCiAxNCBmaWxlcyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpz
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlPYmplY3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2ViQXNzZW1ibHlPYmplY3QuaAoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGJmYjU1YS4uZTUzYjk5MSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAog
MjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKKyAgICAgICAg
V2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFTY3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNv
bnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJvcGVydGllcyBhcyBkZXNjcmliZWQgaW46
CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21h
c3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0IGRvIGFueXRoaW5nIGF0IHRoZSBtb21l
bnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZworICAgICAgICBtb3Jl
IGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVzdHMuCisKKyAgICAgICAgV2ViQXNzZW1i
bHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9qcy1h
cGkvdGVzdF9iYXNpY19hcGkuanM6IEFkZGVkLgorICAgICAgICAoY29uc3QuZi5vZi5mdW5jdGlv
blByb3BlcnRpZXMuV2ViQXNzZW1ibHkuZi51bmRlZmluZWQudGhyb3cubmV3LkVycm9yLkNvdWxk
bi5jb25zdC5jLm9mLmNvbnN0cnVjdG9yUHJvcGVydGllcy5XZWJBc3NlbWJseS5jLnVuZGVmaW5l
ZC50aHJvdy5uZXcuRXJyb3IuQ291bGRuKToKKyAgICAgICAgKGNvbnN0LmMub2YuY29uc3RydWN0
b3JQcm9wZXJ0aWVzLmNhdGNoKToKKworMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKICAgICAgICAgQmFzaWMgV2ViQXNzZW1ibHkgdGVzdGluZwogCiAgICAg
ICAgIENyZWF0ZSBhIHNtYWxsIERTTCBpbiBKYXZhU2NyaXB0IHdoaWNoIGNhbiBidWlsZCBXZWJB
c3NlbWJseSBiaW5hcnkgbW9kdWxlcyBiYXNlZCBvbiB0aGUgSlNPTiBkZXNjcmlwdGlvbiBvZiB0
aGUgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbjoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1s
IGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggNTQ3Y2U3Mi4uOGY0YTg2ZSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTIzLDMgKzIzLDUg
QEAKIAogLSBwYXRoOiB3YXNtL3NlbGYtdGVzdC8KICAgY21kOiBydW5XZWJBc3NlbWJseQorLSBw
YXRoOiB3YXNtL2pzLWFwaS8KKyAgY21kOiBydW5XZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGVzdF9iYXNpY19hcGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk1
M2NiMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19h
cGkuanMKQEAgLTAsMCArMSwzNyBAQAoraWYgKFdlYkFzc2VtYmx5ID09PSB1bmRlZmluZWQpCisg
ICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmpl
Y3QiKTsKKworY29uc3QgZnVuY3Rpb25Qcm9wZXJ0aWVzID0gWyJ2YWxpZGF0ZSIsICJjb21waWxl
Il07Citjb25zdCBjb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBbIk1vZHVsZSIsICJJbnN0YW5jZSIs
ICJNZW1vcnkiLCAiVGFibGUiLCAiQ29tcGlsZUVycm9yIl07CisKK2ZvciAoY29uc3QgZiBvZiBm
dW5jdGlvblByb3BlcnRpZXMpCisgICAgaWYgKFdlYkFzc2VtYmx5W2ZdID09PSB1bmRlZmluZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBXZWJBc3NlbWJseSBmdW5j
dGlvbiBwcm9wZXJ0eSAiJHtmfSJgKTsKKworZm9yIChjb25zdCBjIG9mIGNvbnN0cnVjdG9yUHJv
cGVydGllcykKKyAgICBpZiAoV2ViQXNzZW1ibHlbY10gPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9yIHBy
b3BlcnR5ICIke2N9ImApOworCisvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5Nzc1IEltcGxlbWVudCBhbmQgdGVzdCB0aGVzZSBBUElzIGZ1cnRoZXIu
IEZvciBub3cgdGhleSBqdXN0IHRocm93LgorCitmb3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25Qcm9w
ZXJ0aWVzKSB7CisgICAgdHJ5IHsKKyAgICAgICAgV2ViQXNzZW1ibHlbZl0oKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBXZWJBc3NlbWJseS4k
e2Z9KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7CisgICAgfQorICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgV2ViQXNzZW1ibHkuJHtmfSgpIHRvIHRocm93IGFuIEVycm9yYCk7
Cit9CisKK2ZvciAoY29uc3QgYyBvZiBjb25zdHJ1Y3RvclByb3BlcnRpZXMpIHsKKyAgICB0cnkg
eworICAgICAgICBsZXQgdiA9IG5ldyBXZWJBc3NlbWJseVtjXSgpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIG5ldyBXZWJBc3NlbWJseS4ke2Z9
KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7CisgICAgfQorICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgbmV3IFdlYkFzc2VtYmx5LiR7Zn0oKSB0byB0aHJvdyBhbiBFcnJvcmAp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZGI4ZGQuLjIzYTQx
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg2Myw2ICs4NjMsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV0FTTUNhbGxpbmdDb252ZW50
aW9uLmNwcAogICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKICAgICB3YXNtL1dBU01QbGFu
LmNwcAorICAgIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwCiAKICAgICB5YXJyL1JlZ3VsYXJF
eHByZXNzaW9uLmNwcAogICAgIHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCBkZjM5MDExLi5hOTFjNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFz
aWMgc3R1YgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFT
Y3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNvbnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJv
cGVydGllcyBhcyBkZXNjcmliZWQgaW46CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dl
YkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0
IGRvIGFueXRoaW5nIGF0IHRoZSBtb21lbnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJl
IG9mIGFkZGluZworICAgICAgICBtb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVz
dHMuCisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1Ygor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOiByZWdpc3RlciB0aGUgbmV3
IFdlYkFzc2VtYmx5IG9iamVjdCdzIG5hbWUgYW5kIGl0cyBjb25zdHJ1Y3RvciBwcm9wZXJ0aWVz
CisgICAgICAgICoganNjLmNwcDogcmVtb3ZlIHVzZWxlc3MgaW5jbHVkZQorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6IGFkZCB0aGUgV2ViQXNzZW1ibHkgZ2xvYmFsIG9iamVjdCBhbmQgaXRzIGNvbnN0cnVj
dG9yIHByb3BlcnRpZXMsIGJ1dCBvbmx5IGlmIHRoZSBKU0Mgb3B0aW9uIGVuYWJsZXMgaXQKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDogYWRkIHRoZSB1c2VXZWJBc3NlbWJseSAoYWxpYXM6
IGVuYWJsZVdlYkFzc2VtYmx5KSBvcHRpb24sIGRlZmF1bHRpbmcgdG8gZmFsc2UKKyAgICAgICAg
KiB3YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5T2JqZWN0OjpjcmVhdGUpOiBib2lsZXJwbGF0ZQorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKTogYm9pbGVycGxhdGUKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogYm9pbGVycGxhdGUKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlPYmplY3Q6OldlYkFzc2VtYmx5T2JqZWN0KTogYm9pbGVycGxhdGUK
KyAgICAgICAgKEpTQzo6d2FzbU9iamVjdEZ1bmN2YWxpZGF0ZSk6IGF1dG8tdGhyb3dzIGZvciBu
b3cKKyAgICAgICAgKEpTQzo6d2FzbU9iamVjdEZ1bmNjb21waWxlKTogYXV0by10aHJvd3MgZm9y
IG5vdworICAgICAgICAqIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuaDogQWRkZWQuCisKIDIwMTYt
MTAtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QjMgbmVlZHMgYSBzcGVjaWFsIFdhc21BZGRyZXNzIE9wY29kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlZThjN2Y5Li45ZDliOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTg3NSw2ICsxODc1LDggQEAKIAkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8q
IFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3
RkNDMjZEMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0ZDQzI2QzE3QTBCNkFBMDA3ODZEMUEg
LyogRlRMU3dpdGNoQ2FzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4QTQ3NDhFMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYuYSBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhEMTUxQTgz
MDYwMDQxMjNGRiAvKiBsaWJXVEYuYSAqLzsgfTsKKwkJQUQyRkNCODgxREFFQkYzQzAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMkZDQjg2MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9i
amVjdC5jcHAgKi87IH07CisJCUFEMkZDQjg5MURBRUJGM0YwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNCODcxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggKi87IH07CiAJ
CUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAy
RkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUFEREIxRjYzMThENzdEQkUwMDlCNThBOCAvKiBPcGFxdWVS
b290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFERTM5RkZGMTZERDE0NEIwMDAz
Q0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQcm9wZXJ0eVRhYmxl
LmNwcCAqLzsgfTsKQEAgLTQxOTgsNiArNDIwMCw4IEBACiAJCUE4RTg5NDMxMENEMDYwMjQwMDM2
NzE3OSAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThFODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQ
cm9wZXJ0eVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b3BlcnR5VGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0I4NjFE
QUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXNzZW1ibHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0I4NzFEQUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4NkE5M0QxQUE0RDg3QzAwMkZF
NzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha0dDTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERC
MUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPcGFxdWVSb290U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI1OUY4OTM3MTg5MUFEMzMwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NzQsNiArNTY3OCw4
IEBACiAJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBRDJGQ0I4NjFEQUVCRjM3MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovLAorCQkJCUFEMkZDQjg3MURBRUJGMzcwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseU9iamVjdC5oICovLAogCQkJCTdCOThEMTM0MUI2MENENUEwMDIzQjFB
NCAvKiBKU1dBU01Nb2R1bGUuY3BwICovLAogCQkJCTdCOThEMTM1MUI2MENENUEwMDIzQjFBNCAv
KiBKU1dBU01Nb2R1bGUuaCAqLywKIAkJCQk1M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FT
TUIzSVJHZW5lcmF0b3IuY3BwICovLApAQCAtNzQzMSw2ICs3NDM3LDcgQEAKIAkJCQkwRkM5N0Yz
NDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2RUJCMzE2Njc2RUY2MDA4QkFERTMgLyogQ29kZUJs
b2NrV2l0aEpJVFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQjg5MURBRUJGM0YwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIx
NjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBC
NjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLApAQCAtOTcwNiw2ICs5NzEzLDcg
QEAKIAkJCQk3OTA1QkI2ODFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDI3MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkYxQUFBODA2OTAwRDMzQjMzIC8qIFNj
b3BlZEFyZ3VtZW50c1RhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQjg4MURBRUJG
M0MwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
OTJBQkNGOTFCRUE5QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkUwNTAyQTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBN0E4RUUxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA2ZWJkMzM5Li5kNzQxMmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0x
NTksNiArMTU5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHN0cmluZ1N1YnN0cklu
dGVybmFsKSBcCiAgICAgbWFjcm8obWFrZUJvdW5kRnVuY3Rpb24pIFwKICAgICBtYWNybyhoYXNP
d25MZW5ndGhQcm9wZXJ0eSkgXAorICAgIG1hY3JvKFdlYkFzc2VtYmx5KSBcCisgICAgbWFjcm8o
TW9kdWxlKSBcCisgICAgbWFjcm8oSW5zdGFuY2UpIFwKKyAgICBtYWNybyhNZW1vcnkpIFwKKyAg
ICBtYWNybyhUYWJsZSkgXAorICAgIG1hY3JvKENvbXBpbGVFcnJvcikgXAorICAgIG1hY3JvKFJ1
bnRpbWVFcnJvcikgXAogCiAKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX1RPX1BVQkxJQ19F
TlRSWShuYW1lKSBtX3ByaXZhdGVUb1B1YmxpY01hcC5hZGQobV8jI25hbWUjI1ByaXZhdGVOYW1l
LmltcGwoKSwgJm1fIyNuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMy4uMjhl
NzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNsdWRlICJK
U1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlz
LmgiCi0jaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDNhNGVhZDkuLjYwNGMwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEwNiw3ICsxMDYsNiBAQAogI2luY2x1ZGUgIkpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXQVNN
TW9kdWxlLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0Lmgi
CiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKQEAgLTE1NSw2ICsxNTQsNyBAQAogI2luY2x1ZGUg
IldlYWtNYXBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJXZWFrU2V0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJXZWFrU2V0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlPYmplY3Qu
aCIKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKICNpZiBFTkFCTEUoSU5UTCkKQEAg
LTgxOCw2ICs4MTgsMjIgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIiR2
bSIpLCBkb2xsYXJWTSwgRG9udEVudW0pOwogICAgIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkgeworICAgICAgICBhdXRvKiB3
YXNtID0gV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgV2ViQXNzZW1ibHlPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgIldlYkFzc2VtYmx5IiksIHdhc20sIERvbnRFbnVtKTsKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvIGV4dHJhU3RhdGljR2xvYmFsc1tdID0geworICAgICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk1vZHVsZVBy
aXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiTW9kdWxlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuSW5zdGFuY2VQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgIkluc3RhbmNlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuTWVtb3J5UHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJNZW1vcnkiKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5UYWJsZVByaXZhdGVOYW1lKCksIHdhc20tPmdl
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiVGFibGUiKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Db21waWxlRXJyb3JQcml2YXRl
TmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
IkNvbXBpbGVFcnJvciIpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLlJ1bnRpbWVFcnJvclByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiUnVudGltZUVycm9yIikpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIH07CisgICAgICAgIGFkZFN0YXRpY0dsb2JhbHMo
ZXh0cmFTdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKGV4dHJhU3RhdGljR2xvYmFscykp
OworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisKICAgICByZXNldFByb3Rv
dHlwZSh2bSwgZ2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKaW5kZXggZGI1YzU3Mi4uY2M2ZDgwNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMzkwLDYgKzM5MCw4IEBAIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIFwKICAgICB2KGJvb2wsIHVzZVNvdXJjZVByb3Zp
ZGVyQ2FjaGUsIHRydWUsIE5vcm1hbCwgIklmIGZhbHNlLCB0aGUgcGFyc2VyIHdpbGwgbm90IHVz
ZSB0aGUgc291cmNlIHByb3ZpZGVyIGNhY2hlLiBJdCdzIGdvb2QgdG8gdmVyaWZ5IGV2ZXJ5dGhp
bmcgd29ya3Mgd2hlbiB0aGlzIGlzIGZhbHNlLiBCZWNhdXNlIHRoZSBjYWNoZSBpcyBzbyBzdWNj
ZXNzZnVsLCBpdCBjYW4gbWFzayBidWdzLiIpIFwKICAgICB2KGJvb2wsIHVzZUNvZGVDYWNoZSwg
dHJ1ZSwgTm9ybWFsLCAiSWYgZmFsc2UsIHRoZSB1bmxpbmtlZCBieXRlIGNvZGUgY2FjaGUgd2ls
bCBub3QgYmUgdXNlZC4iKSBcCisgICAgXAorICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHksIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmplY3QuIikgXAog
CiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApAQCAtNDI3LDYgKzQy
OSw3IEBAIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIHYoZW5hYmxlRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6LCB1c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enosIFNhbWVPcHRpb24pIFwK
ICAgICB2KGVuYWJsZU9TUkV4aXRGdXp6LCB1c2VPU1JFeGl0RnV6eiwgU2FtZU9wdGlvbikgXAog
ICAgIHYoZW5hYmxlRG9sbGFyVk0sIHVzZURvbGxhclZNLCBTYW1lT3B0aW9uKSBcCisgICAgdihl
bmFibGVXZWJBc3NlbWJseSwgdXNlV2ViQXNzZW1ibHksIFNhbWVPcHRpb24pIFwKIAogY2xhc3Mg
T3B0aW9ucyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XZWJBc3NlbWJseU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJB
c3NlbWJseU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThi
MGUxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseU9iamVjdC5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVk
ZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoV2ViQXNzZW1ibHlPYmplY3QpOworCisvLyBOYW1lLCBmdW5jdGlvbkxlbmd0aAorI2Rl
ZmluZSBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERPKSBcCisgICAgRE8oTW9k
dWxlLCAxKSBcCisgICAgRE8oSW5zdGFuY2UsIDIpIFwKKyAgICBETyhNZW1vcnksIDEpIFwKKyAg
ICBETyhUYWJsZSwgMSkgXAorICAgIERPKENvbXBpbGVFcnJvciwgMSkgXAorICAgIERPKFJ1bnRp
bWVFcnJvciwgMSkKKworLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKKyNkZWZpbmUgRk9SX0VBQ0hf
V0FTTV9GVU5DVElPTl9QUk9QRVJUWShETykgXAorICAgIERPKHZhbGlkYXRlLCAxKSBcCisgICAg
RE8oY29tcGlsZSwgMSkKKworLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTcwOSBJbXBsZW1lbnQgZWFjaCBvZiB0aGVzZSBpbiB0aGVpciBvd24gaGVh
ZGVyIGZpbGUsIGFuZCBhdXRvZ2VuZXJhdGUgKi5sdXQuaCBmaWxlcyBmb3IgKlByb3RvdHlwZVRh
YmxlLgorI2RlZmluZSBERUZJTkVfV0FTTV9PQkpFQ1RfQ09OU1RSVUNUT1JfUFJPUEVSVFkoTkFN
RSwgLi4uKSBcCisgICAgY2xhc3MgV2ViQXNzZW1ibHkgIyMgTkFNRSA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRlZiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCBCYXNlOyBcCisgICAgICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2Vt
Ymx5ICMjIE5BTUUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSBcCisgICAg
ICAgIHsgXAorICAgICAgICAgICAgYXV0byogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUo
dm0sIHN0cnVjdHVyZSk7IFwKKyAgICAgICAgICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0p
OyBcCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OyBcCisgICAgICAgIH0gXAorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgXAorICAgICAgICB7IFwKKyAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgXAorICAgICAg
ICB9IFwKKyAgICAgICAgXAorICAgICAgICBERUNMQVJFX0lORk87IFwKKyAgICAgICAgXAorICAg
IHByb3RlY3RlZDogXAorICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0s
IHN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOyBcCisgICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
IFwKKyAgICAgICAgfSBcCisgICAgfTsgXAorICAgIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJs
eSAjIyBOQU1FOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5ICMjIE5BTUUpIH07IFwKKyAgICBcCisgICAgY2xhc3Mg
V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUgOiBwdWJsaWMgV2ViQXNzZW1ibHkgIyMg
TkFNRSB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRlZiBXZWJBc3NlbWJseSAjIyBO
QU1FIEJhc2U7IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOyBcCisgICAg
ICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKSBcCisg
ICAgICAgIHsgXAorICAgICAgICAgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJB
c3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsgXAorICAgICAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAgICAgICAgIHJldHVybiBvYmpl
Y3Q7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgICAgIERF
Q0xBUkVfSU5GTzsgXAorICAgICAgICBcCisgICAgcHJvdGVjdGVkOiBcCisgICAgICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgcHJpdmF0
ZTogXAorICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKSBcCisgICAgICAgICAgICA6IFdlYkFzc2VtYmx5ICMjIE5BTUUo
dm0sIHN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgfTsgXAorICAg
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBOQU1FICMjIFByb3RvdHlwZVRh
YmxlSW5kZXhbXSA9IHsgfTsgXAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlVmFs
dWUgTkFNRSAjIyBQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0geyB9OyBcCisgICAgc3RhdGljIGNv
bnN0IHN0cnVjdCBIYXNoVGFibGUgTkFNRSAjIyBQcm90b3R5cGVUYWJsZSA9IHsgMCwgMCwgdHJ1
ZSwgTkFNRSAjIyBQcm90b3R5cGVUYWJsZVZhbHVlcywgTkFNRSAjIyBQcm90b3R5cGVUYWJsZUlu
ZGV4IH07IFwKKyAgICBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZXZWJBc3NlbWJseSAjIyBOQU1FOjpzX2luZm8s
ICZOQU1FICMjIFByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5
ICMjIE5BTUUgIyMgUHJvdG90eXBlKSB9OyBcCisgICAgXAorICAgIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYkFzc2VtYmx5ICMjIE5BTUUoRXhlY1N0YXRl
KiBzdGF0ZSkgXAorICAgIHsgXAorICAgICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsgXAorICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7IFwKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVy
cm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVu
dCB0aGUgIiAjTkFNRSAiIGNvbnN0cnVjdG9yIHByb3BlcnR5IikpKSk7IFwKKyAgICB9IFwKKyAg
ICBcCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2Vt
Ymx5ICMjIE5BTUUoRXhlY1N0YXRlKiBzdGF0ZSkgXAorICAgIHsgXAorICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOyBcCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyBc
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUs
IGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0
IGltcGxlbWVudCB0aGUgIiAjTkFNRSAiIGNvbnN0cnVjdG9yIHByb3BlcnR5IikpKSk7IFwKKyAg
ICB9IFwKKyAgICBcCisgICAgY2xhc3MgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsgXAorICAgIHB1YmxpYzogXAorICAgICAgICB0
eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsgXAorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1By
b3BlcnR5VGFibGU7IFwKKyAgICAgICAgXAorICAgICAgICBzdGF0aWMgV2ViQXNzZW1ibHkgIyMg
TkFNRSAjIyBDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBOQU1FICMjIFByb3RvdHlwZSwgU3Ry
dWN0dXJlKiBOQU1FICMjIFN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIFdl
YkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcj4odm0u
aGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
IFwKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgTkFNRSAjIyBQ
cm90b3R5cGUsIE5BTUUgIyMgU3RydWN0dXJlKTsgXAorICAgICAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdG9yOyBcCisgICAgICAgIH0gXAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgXAorICAgICAg
ICBERUNMQVJFX0lORk87IFwKKyAgICAgICAgXAorICAgICAgICBTdHJ1Y3R1cmUqIE5BTUUgIyMg
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV8gIyMgTkFNRSAjIyBTdHJ1Y3R1cmUuZ2V0KCk7
IH0gXAorICAgICAgICBcCisgICAgcHJvdGVjdGVkOiBcCisgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSogTkFNRSAjIyBQ
cm90b3R5cGUsIFN0cnVjdHVyZSogTkFNRSAjIyBTdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBcCisg
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCNOQU1FKSk7
IFwKKyAgICAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIE5BTUUgIyMgUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSk7IFwKKyAgICAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERv
bnRFbnVtIHwgRG9udERlbGV0ZSk7IFwKKyAgICAgICAgICAgIG1fICMjIE5BTUUgIyMgU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgTkFNRSAjIyBTdHJ1Y3R1cmUpOyBcCisgICAgICAgIH0gXAorICAg
ICAgICBcCisgICAgcHJpdmF0ZTogXAorICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FICMjIENv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgICAgIDog
SW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAgICAgICB9
IFwKKyAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKSBcCisgICAgICAgIHsgXAorICAgICAgICAg
ICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RXZWJBc3NlbWJseSAj
IyBOQU1FOyBcCisgICAgICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsgXAorICAg
ICAgICB9IFwKKyAgICAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxXZWJBc3NlbWJseSAjIyBOQU1FOyBcCisgICAgICAgICAgICBy
ZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikgXAorICAg
ICAgICB7IFwKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1i
bHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcio+KGNlbGwpOyBcCisgICAgICAgICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7IFwKKyAgICAgICAgICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7IFwKKyAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tXyAjIyBOQU1FICMjIFN0cnVjdHVyZSk7IFwKKyAg
ICAgICAgfSBcCisgICAgICAgIFwKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV8g
IyMgTkFNRSAjIyBTdHJ1Y3R1cmU7IFwKKyAgICB9OyBcCisgICAgc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZUluZGV4W10gPSB7IH07
IFwKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIE5BTUUgIyMgQ29uc3Ry
dWN0b3JUYWJsZVZhbHVlc1tdID0geyB9OyBcCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBIYXNo
VGFibGUgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlID0geyAwLCAwLCB0cnVlLCBOQU1FICMjIENv
bnN0cnVjdG9yVGFibGVWYWx1ZXMsIE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZUluZGV4IH07IFwK
KyAgICBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmTkFNRSAj
IyBDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5ICMjIE5B
TUUgIyMgQ29uc3RydWN0b3IpIH07CisKK0ZPUl9FQUNIX1dBU01fQ09OU1RSVUNUT1JfUFJPUEVS
VFkoREVGSU5FX1dBU01fT0JKRUNUX0NPTlNUUlVDVE9SX1BST1BFUlRZKQorCisKKyNkZWZpbmUg
REVDTEFSRV9XQVNNX09CSkVDVF9GVU5DVElPTihOQU1FLCAuLi4pIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2FzbU9iamVjdEZ1bmMgIyMgTkFNRShFeGVjU3RhdGUqKTsKK0ZPUl9FQUNI
X1dBU01fRlVOQ1RJT05fUFJPUEVSVFkoREVDTEFSRV9XQVNNX09CSkVDVF9GVU5DVElPTikKKwor
Citjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlPYmplY3Qp
IH07CisKK1dlYkFzc2VtYmx5T2JqZWN0KiBXZWJBc3NlbWJseU9iamVjdDo6Y3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1i
bHlPYmplY3Q+KHZtLmhlYXApKSBXZWJBc3NlbWJseU9iamVjdCh2bSwgc3RydWN0dXJlKTsKKyAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBv
YmplY3Q7Cit9CisKK1N0cnVjdHVyZSogV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
Kwordm9pZCBXZWJBc3NlbWJseU9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyNkZWZpbmUgU0VUX1VQX1dBU01fQ09O
U1RSVUNUT1JfUFJPUEVSVFkoTkFNRSwgLi4uKSBcCisgICAgYXV0byogcHJvdG90eXBlICMjIE5B
TUUgPSBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOyBcCisg
ICAgYXV0byogc3RydWN0dXJlICMjIE5BTUUgPSBXZWJBc3NlbWJseSAjIyBOQU1FOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlICMjIE5BTUUpOyBcCisgICAgYXV0
byogY29uc3RydWN0b3IgIyMgTkFNRSA9IFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5
cGUoKSksIHByb3RvdHlwZSAjIyBOQU1FLCBzdHJ1Y3R1cmUgIyMgTkFNRSk7IFwKKyAgICBwcm90
b3R5cGUgIyMgTkFNRS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciAjIyBOQU1FLCBEb250RW51bSk7CisgICAg
Rk9SX0VBQ0hfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWShTRVRfVVBfV0FTTV9DT05TVFJVQ1RP
Ul9QUk9QRVJUWSkKKworI2RlZmluZSBSRUdJU1RFUl9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZ
KE5BTUUsIC4uLikgXAorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAjTkFNRSksIGNvbnN0
cnVjdG9yICMjIE5BTUUsIERvbnRFbnVtKTsKKyAgICBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9S
X1BST1BFUlRZKFJFR0lTVEVSX1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkpCisKKyNkZWZpbmUg
UkVHSVNURVJfV0FTTV9GVU5DVElPTl9QUk9QRVJUWShOQU1FLCBMRU5HVEgpIFwKKyAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgI05BTUUpLCBMRU5HVEgsIHdhc21PYmplY3RGdW5jICMjIE5BTUUsIE5vSW50cmlu
c2ljLCBEb250RW51bSk7CisgICAgRk9SX0VBQ0hfV0FTTV9GVU5DVElPTl9QUk9QRVJUWShSRUdJ
U1RFUl9XQVNNX0ZVTkNUSU9OX1BST1BFUlRZKQorfQorCitXZWJBc3NlbWJseU9iamVjdDo6V2Vi
QXNzZW1ibHlPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9u
RmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIENvbnN0cnVjdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisgICAgCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2FzbU9iamVjdEZ1bmN2YWxpZGF0ZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29w
ZSwgY3JlYXRlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkgZG9lc24ndCB5
ZXQgaW1wbGVtZW50IHRoZSB2YWxpZGF0ZSBmdW5jdGlvbiBwcm9wZXJ0eSIpKSkpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdhc21PYmplY3RGdW5jY29tcGlsZShFeGVjU3Rh
dGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJh
bCgiV2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSBjb21waWxlIGZ1bmN0aW9u
IHByb3BlcnR5IikpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNTU5NjM0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2Vt
Ymx5T2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5T2JqZWN0
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseU9i
amVjdChWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTdmNzM0ZS4uZDYw
MmNiNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDIzIEBACiAyMDE2LTEwLTE0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxl
LmNvbT4KIAorICAgICAgICBXZWJBc3NlbWJseSBKUyBBUEk6IGltcGxlbWVudCBiYXNpYyBzdHVi
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBnbG9iYWwgV2ViQXNzZW1ibHkgSmF2YVNjcmlwdCBv
YmplY3QsIGFuZCBpdHMgY29uc3RydWN0b3IgKworICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0aWVz
IGFzIGRlc2NyaWJlZCBpbjoKKyAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1i
bHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCisKKyAgICAgICAgVGhlc2UgZG9uJ3QgZG8gYW55
dGhpbmcgYXQgdGhlIG1vbWVudCwgdGhlIHBhcmVudCBidWcgd2lsbCB0YWtlIGNhcmUgb2YgYWRk
aW5nCisgICAgICAgIG1vcmUgZnVuY3Rpb25hbGl0eSBhbmQgYXNzb2NpYXRlZCB0ZXN0cy4KKwor
ICAgICAgICBXZWJBc3NlbWJseSBKUyBBUEk6IGltcGxlbWVudCBiYXNpYyBzdHViCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHM6IHVzZSB0aGUgbmV3IEpTQyBvcHRpb24gd2hpY2ggZXhwb3NlcyB0aGUg
V2ViQXNzZW1ibHkgb2JqZWN0LgorCisyMDE2LTEwLTE0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVu
QGFwcGxlLmNvbT4KKwogICAgICAgICBCYXNpYyBXZWJBc3NlbWJseSB0ZXN0aW5nCiAKICAgICAg
ICAgQ3JlYXRlIGEgc21hbGwgRFNMIGluIEphdmFTY3JpcHQgd2hpY2ggY2FuIGJ1aWxkIFdlYkFz
c2VtYmx5IGJpbmFyeSBtb2R1bGVzIGJhc2VkIG9uIHRoZSBKU09OIGRlc2NyaXB0aW9uIG9mIHRo
ZSBmb3JtYXQgYXMgZGVzY3JpYmVkIGluOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5k
ZXggMGY2OGZmZC4uMDJhMDkwZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC0x
MTYwLDcgKzExNjAsNyBAQCBkZWYgcnVuV2ViQXNzZW1ibHkKICAgICBtb2R1bGVzID0gRGlyW1dB
U01URVNUU19QQVRIICsgIiouanMiXS5tYXAgeyB8ZnwgRmlsZS5iYXNlbmFtZShmKSB9CiAgICAg
cHJlcGFyZUV4dHJhQWJzb2x1dGVGaWxlcyhXQVNNVEVTVFNfUEFUSCwgWyJ3YXNtLmpzb24iXSkK
ICAgICBwcmVwYXJlRXh0cmFSZWxhdGl2ZUZpbGVzKG1vZHVsZXMubWFwIHsgfGZ8ICIuLi8iICsg
ZiB9LCAkY29sbGVjdGlvbikKLSAgICBydW4oImRlZmF1bHQtd2FzbSIsICItbSIpCisgICAgcnVu
KCJkZWZhdWx0LXdhc20iLCAiLW0iLCAiLS11c2VXZWJBc3NlbWJseT0xIikKIGVuZAogCiBkZWYg
cnVuQ2hha3JhKG1vZGUsIGV4Y2VwdGlvbiwgYmFzZWxpbmVGaWxlLCBleHRyYUZpbGVzKQotLSAK
Mi4xMC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291705</attachid>
            <date>2016-10-14 21:11:41 -0700</date>
            <delta_ts>2016-10-15 11:21:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JS-API-implement-basic-stub.patch</filename>
            <type>text/plain</type>
            <size>32686</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAwNDU5NDgxZTMyNDgyZTRlYjQ4ZGUwYmRkZDk4NTJkMDJjYjNiYTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEzIE9jdCAyMDE2IDE0OjUzOjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgoKSW1wbGVtZW50IHRoZSBnbG9iYWwg
V2ViQXNzZW1ibHkgSmF2YVNjcmlwdCBvYmplY3QsIGFuZCBpdHMgY29uc3RydWN0b3IgKwpmdW5j
dGlvbiBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbjoKICBodHRwczovL2dpdGh1Yi5jb20vV2Vi
QXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCgpUaGVzZSBkb24ndCBkbyBhbnl0aGlu
ZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcK
bW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3NvY2lhdGVkIHRlc3RzLgotLS0KIEpTVGVzdHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsrCiBKU1Rlc3Rz
L3dhc20ueWFtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBKU1Rl
c3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzICAgICAgICAgICAgICB8ICAzNyArKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAx
ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwg
IDMyICsrKwogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAg
ICAgfCAgIDggKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
ICAgICAgfCAgIDcgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDEgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwICAgfCAgMTggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaCAgICAgICAgICAgIHwgICAzICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcCAgIHwgMjU5ICsrKysrKysrKysrKysrKysrKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaCAgICAgfCAgNDggKysrKwogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysK
IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgICAgICAgICAgICAgICAgIHwgICAy
ICstCiAxNCBmaWxlcyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpz
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlPYmplY3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2ViQXNzZW1ibHlPYmplY3QuaAoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGJmYjU1YS4uZTUzYjk5MSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAog
MjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKKyAgICAgICAg
V2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFTY3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNv
bnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJvcGVydGllcyBhcyBkZXNjcmliZWQgaW46
CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21h
c3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0IGRvIGFueXRoaW5nIGF0IHRoZSBtb21l
bnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZworICAgICAgICBtb3Jl
IGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVzdHMuCisKKyAgICAgICAgV2ViQXNzZW1i
bHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9qcy1h
cGkvdGVzdF9iYXNpY19hcGkuanM6IEFkZGVkLgorICAgICAgICAoY29uc3QuZi5vZi5mdW5jdGlv
blByb3BlcnRpZXMuV2ViQXNzZW1ibHkuZi51bmRlZmluZWQudGhyb3cubmV3LkVycm9yLkNvdWxk
bi5jb25zdC5jLm9mLmNvbnN0cnVjdG9yUHJvcGVydGllcy5XZWJBc3NlbWJseS5jLnVuZGVmaW5l
ZC50aHJvdy5uZXcuRXJyb3IuQ291bGRuKToKKyAgICAgICAgKGNvbnN0LmMub2YuY29uc3RydWN0
b3JQcm9wZXJ0aWVzLmNhdGNoKToKKworMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKICAgICAgICAgQmFzaWMgV2ViQXNzZW1ibHkgdGVzdGluZwogCiAgICAg
ICAgIENyZWF0ZSBhIHNtYWxsIERTTCBpbiBKYXZhU2NyaXB0IHdoaWNoIGNhbiBidWlsZCBXZWJB
c3NlbWJseSBiaW5hcnkgbW9kdWxlcyBiYXNlZCBvbiB0aGUgSlNPTiBkZXNjcmlwdGlvbiBvZiB0
aGUgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbjoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1s
IGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggNTQ3Y2U3Mi4uOGY0YTg2ZSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTIzLDMgKzIzLDUg
QEAKIAogLSBwYXRoOiB3YXNtL3NlbGYtdGVzdC8KICAgY21kOiBydW5XZWJBc3NlbWJseQorLSBw
YXRoOiB3YXNtL2pzLWFwaS8KKyAgY21kOiBydW5XZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGVzdF9iYXNpY19hcGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk1
M2NiMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19h
cGkuanMKQEAgLTAsMCArMSwzNyBAQAoraWYgKFdlYkFzc2VtYmx5ID09PSB1bmRlZmluZWQpCisg
ICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmpl
Y3QiKTsKKworY29uc3QgZnVuY3Rpb25Qcm9wZXJ0aWVzID0gWyJ2YWxpZGF0ZSIsICJjb21waWxl
Il07Citjb25zdCBjb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBbIk1vZHVsZSIsICJJbnN0YW5jZSIs
ICJNZW1vcnkiLCAiVGFibGUiLCAiQ29tcGlsZUVycm9yIl07CisKK2ZvciAoY29uc3QgZiBvZiBm
dW5jdGlvblByb3BlcnRpZXMpCisgICAgaWYgKFdlYkFzc2VtYmx5W2ZdID09PSB1bmRlZmluZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBXZWJBc3NlbWJseSBmdW5j
dGlvbiBwcm9wZXJ0eSAiJHtmfSJgKTsKKworZm9yIChjb25zdCBjIG9mIGNvbnN0cnVjdG9yUHJv
cGVydGllcykKKyAgICBpZiAoV2ViQXNzZW1ibHlbY10gPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9yIHBy
b3BlcnR5ICIke2N9ImApOworCisvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5Nzc1IEltcGxlbWVudCBhbmQgdGVzdCB0aGVzZSBBUElzIGZ1cnRoZXIu
IEZvciBub3cgdGhleSBqdXN0IHRocm93LgorCitmb3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25Qcm9w
ZXJ0aWVzKSB7CisgICAgdHJ5IHsKKyAgICAgICAgV2ViQXNzZW1ibHlbZl0oKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBXZWJBc3NlbWJseS4k
e2Z9KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7CisgICAgfQorICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgV2ViQXNzZW1ibHkuJHtmfSgpIHRvIHRocm93IGFuIEVycm9yYCk7
Cit9CisKK2ZvciAoY29uc3QgYyBvZiBjb25zdHJ1Y3RvclByb3BlcnRpZXMpIHsKKyAgICB0cnkg
eworICAgICAgICBsZXQgdiA9IG5ldyBXZWJBc3NlbWJseVtjXSgpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIG5ldyBXZWJBc3NlbWJseS4ke2Z9
KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7CisgICAgfQorICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgbmV3IFdlYkFzc2VtYmx5LiR7Zn0oKSB0byB0aHJvdyBhbiBFcnJvcmAp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZGI4ZGQuLjIzYTQx
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg2Myw2ICs4NjMsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV0FTTUNhbGxpbmdDb252ZW50
aW9uLmNwcAogICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKICAgICB3YXNtL1dBU01QbGFu
LmNwcAorICAgIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwCiAKICAgICB5YXJyL1JlZ3VsYXJF
eHByZXNzaW9uLmNwcAogICAgIHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCBkZjM5MDExLi5hOTFjNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFz
aWMgc3R1YgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFT
Y3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNvbnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJv
cGVydGllcyBhcyBkZXNjcmliZWQgaW46CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dl
YkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0
IGRvIGFueXRoaW5nIGF0IHRoZSBtb21lbnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJl
IG9mIGFkZGluZworICAgICAgICBtb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVz
dHMuCisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1Ygor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOiByZWdpc3RlciB0aGUgbmV3
IFdlYkFzc2VtYmx5IG9iamVjdCdzIG5hbWUgYW5kIGl0cyBjb25zdHJ1Y3RvciBwcm9wZXJ0aWVz
CisgICAgICAgICoganNjLmNwcDogcmVtb3ZlIHVzZWxlc3MgaW5jbHVkZQorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6IGFkZCB0aGUgV2ViQXNzZW1ibHkgZ2xvYmFsIG9iamVjdCBhbmQgaXRzIGNvbnN0cnVj
dG9yIHByb3BlcnRpZXMsIGJ1dCBvbmx5IGlmIHRoZSBKU0Mgb3B0aW9uIGVuYWJsZXMgaXQKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDogYWRkIHRoZSB1c2VXZWJBc3NlbWJseSAoYWxpYXM6
IGVuYWJsZVdlYkFzc2VtYmx5KSBvcHRpb24sIGRlZmF1bHRpbmcgdG8gZmFsc2UKKyAgICAgICAg
KiB3YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5T2JqZWN0OjpjcmVhdGUpOiBib2lsZXJwbGF0ZQorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKTogYm9pbGVycGxhdGUKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogYm9pbGVycGxhdGUKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlPYmplY3Q6OldlYkFzc2VtYmx5T2JqZWN0KTogYm9pbGVycGxhdGUK
KyAgICAgICAgKEpTQzo6d2FzbU9iamVjdEZ1bmN2YWxpZGF0ZSk6IGF1dG8tdGhyb3dzIGZvciBu
b3cKKyAgICAgICAgKEpTQzo6d2FzbU9iamVjdEZ1bmNjb21waWxlKTogYXV0by10aHJvd3MgZm9y
IG5vdworICAgICAgICAqIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuaDogQWRkZWQuCisKIDIwMTYt
MTAtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QjMgbmVlZHMgYSBzcGVjaWFsIFdhc21BZGRyZXNzIE9wY29kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlZThjN2Y5Li45ZDliOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTg3NSw2ICsxODc1LDggQEAKIAkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8q
IFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3
RkNDMjZEMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0ZDQzI2QzE3QTBCNkFBMDA3ODZEMUEg
LyogRlRMU3dpdGNoQ2FzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4QTQ3NDhFMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYuYSBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhEMTUxQTgz
MDYwMDQxMjNGRiAvKiBsaWJXVEYuYSAqLzsgfTsKKwkJQUQyRkNCODgxREFFQkYzQzAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMkZDQjg2MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9i
amVjdC5jcHAgKi87IH07CisJCUFEMkZDQjg5MURBRUJGM0YwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNCODcxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggKi87IH07CiAJ
CUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAy
RkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUFEREIxRjYzMThENzdEQkUwMDlCNThBOCAvKiBPcGFxdWVS
b290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFERTM5RkZGMTZERDE0NEIwMDAz
Q0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQcm9wZXJ0eVRhYmxl
LmNwcCAqLzsgfTsKQEAgLTQxOTgsNiArNDIwMCw4IEBACiAJCUE4RTg5NDMxMENEMDYwMjQwMDM2
NzE3OSAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThFODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQ
cm9wZXJ0eVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b3BlcnR5VGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0I4NjFE
QUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXNzZW1ibHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0I4NzFEQUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4NkE5M0QxQUE0RDg3QzAwMkZF
NzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha0dDTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERC
MUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPcGFxdWVSb290U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI1OUY4OTM3MTg5MUFEMzMwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NzQsNiArNTY3OCw4
IEBACiAJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBRDJGQ0I4NjFEQUVCRjM3MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovLAorCQkJCUFEMkZDQjg3MURBRUJGMzcwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseU9iamVjdC5oICovLAogCQkJCTdCOThEMTM0MUI2MENENUEwMDIzQjFB
NCAvKiBKU1dBU01Nb2R1bGUuY3BwICovLAogCQkJCTdCOThEMTM1MUI2MENENUEwMDIzQjFBNCAv
KiBKU1dBU01Nb2R1bGUuaCAqLywKIAkJCQk1M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FT
TUIzSVJHZW5lcmF0b3IuY3BwICovLApAQCAtNzQzMSw2ICs3NDM3LDcgQEAKIAkJCQkwRkM5N0Yz
NDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2RUJCMzE2Njc2RUY2MDA4QkFERTMgLyogQ29kZUJs
b2NrV2l0aEpJVFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQjg5MURBRUJGM0YwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIx
NjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBC
NjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLApAQCAtOTcwNiw2ICs5NzEzLDcg
QEAKIAkJCQk3OTA1QkI2ODFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDI3MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkYxQUFBODA2OTAwRDMzQjMzIC8qIFNj
b3BlZEFyZ3VtZW50c1RhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQjg4MURBRUJG
M0MwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
OTJBQkNGOTFCRUE5QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkUwNTAyQTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBN0E4RUUxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA2ZWJkMzM5Li5kNzQxMmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0x
NTksNiArMTU5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHN0cmluZ1N1YnN0cklu
dGVybmFsKSBcCiAgICAgbWFjcm8obWFrZUJvdW5kRnVuY3Rpb24pIFwKICAgICBtYWNybyhoYXNP
d25MZW5ndGhQcm9wZXJ0eSkgXAorICAgIG1hY3JvKFdlYkFzc2VtYmx5KSBcCisgICAgbWFjcm8o
TW9kdWxlKSBcCisgICAgbWFjcm8oSW5zdGFuY2UpIFwKKyAgICBtYWNybyhNZW1vcnkpIFwKKyAg
ICBtYWNybyhUYWJsZSkgXAorICAgIG1hY3JvKENvbXBpbGVFcnJvcikgXAorICAgIG1hY3JvKFJ1
bnRpbWVFcnJvcikgXAogCiAKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX1RPX1BVQkxJQ19F
TlRSWShuYW1lKSBtX3ByaXZhdGVUb1B1YmxpY01hcC5hZGQobV8jI25hbWUjI1ByaXZhdGVOYW1l
LmltcGwoKSwgJm1fIyNuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMy4uMjhl
NzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNsdWRlICJK
U1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlz
LmgiCi0jaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDNhNGVhZDkuLjYwNGMwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEwNiw3ICsxMDYsNiBAQAogI2luY2x1ZGUgIkpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXQVNN
TW9kdWxlLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0Lmgi
CiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKQEAgLTE1NSw2ICsxNTQsNyBAQAogI2luY2x1ZGUg
IldlYWtNYXBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJXZWFrU2V0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJXZWFrU2V0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlPYmplY3Qu
aCIKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKICNpZiBFTkFCTEUoSU5UTCkKQEAg
LTgxOCw2ICs4MTgsMjIgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIiR2
bSIpLCBkb2xsYXJWTSwgRG9udEVudW0pOwogICAgIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkgeworICAgICAgICBhdXRvKiB3
YXNtID0gV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgV2ViQXNzZW1ibHlPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgIldlYkFzc2VtYmx5IiksIHdhc20sIERvbnRFbnVtKTsKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvIGV4dHJhU3RhdGljR2xvYmFsc1tdID0geworICAgICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk1vZHVsZVBy
aXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiTW9kdWxlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuSW5zdGFuY2VQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgIkluc3RhbmNlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuTWVtb3J5UHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJNZW1vcnkiKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5UYWJsZVByaXZhdGVOYW1lKCksIHdhc20tPmdl
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiVGFibGUiKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Db21waWxlRXJyb3JQcml2YXRl
TmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
IkNvbXBpbGVFcnJvciIpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLlJ1bnRpbWVFcnJvclByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiUnVudGltZUVycm9yIikpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIH07CisgICAgICAgIGFkZFN0YXRpY0dsb2JhbHMo
ZXh0cmFTdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKGV4dHJhU3RhdGljR2xvYmFscykp
OworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisKICAgICByZXNldFByb3Rv
dHlwZSh2bSwgZ2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKaW5kZXggZGI1YzU3Mi4uY2M2ZDgwNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMzkwLDYgKzM5MCw4IEBAIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIFwKICAgICB2KGJvb2wsIHVzZVNvdXJjZVByb3Zp
ZGVyQ2FjaGUsIHRydWUsIE5vcm1hbCwgIklmIGZhbHNlLCB0aGUgcGFyc2VyIHdpbGwgbm90IHVz
ZSB0aGUgc291cmNlIHByb3ZpZGVyIGNhY2hlLiBJdCdzIGdvb2QgdG8gdmVyaWZ5IGV2ZXJ5dGhp
bmcgd29ya3Mgd2hlbiB0aGlzIGlzIGZhbHNlLiBCZWNhdXNlIHRoZSBjYWNoZSBpcyBzbyBzdWNj
ZXNzZnVsLCBpdCBjYW4gbWFzayBidWdzLiIpIFwKICAgICB2KGJvb2wsIHVzZUNvZGVDYWNoZSwg
dHJ1ZSwgTm9ybWFsLCAiSWYgZmFsc2UsIHRoZSB1bmxpbmtlZCBieXRlIGNvZGUgY2FjaGUgd2ls
bCBub3QgYmUgdXNlZC4iKSBcCisgICAgXAorICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHksIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmplY3QuIikgXAog
CiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApAQCAtNDI3LDYgKzQy
OSw3IEBAIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIHYoZW5hYmxlRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6LCB1c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enosIFNhbWVPcHRpb24pIFwK
ICAgICB2KGVuYWJsZU9TUkV4aXRGdXp6LCB1c2VPU1JFeGl0RnV6eiwgU2FtZU9wdGlvbikgXAog
ICAgIHYoZW5hYmxlRG9sbGFyVk0sIHVzZURvbGxhclZNLCBTYW1lT3B0aW9uKSBcCisgICAgdihl
bmFibGVXZWJBc3NlbWJseSwgdXNlV2ViQXNzZW1ibHksIFNhbWVPcHRpb24pIFwKIAogY2xhc3Mg
T3B0aW9ucyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XZWJBc3NlbWJseU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJB
c3NlbWJseU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBl
YjI5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseU9iamVjdC5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVk
ZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoV2ViQXNzZW1ibHlPYmplY3QpOworCisvLyBOYW1lLCBmdW5jdGlvbkxlbmd0aAorI2Rl
ZmluZSBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERPKSBcCisgICAgRE8oTW9k
dWxlLCAxKSBcCisgICAgRE8oSW5zdGFuY2UsIDIpIFwKKyAgICBETyhNZW1vcnksIDEpIFwKKyAg
ICBETyhUYWJsZSwgMSkgXAorICAgIERPKENvbXBpbGVFcnJvciwgMSkgXAorICAgIERPKFJ1bnRp
bWVFcnJvciwgMSkKKworLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKKyNkZWZpbmUgRk9SX0VBQ0hf
V0FTTV9GVU5DVElPTl9QUk9QRVJUWShETykgXAorICAgIERPKHZhbGlkYXRlLCAxKSBcCisgICAg
RE8oY29tcGlsZSwgMSkKKworLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTcwOSBJbXBsZW1lbnQgZWFjaCBvZiB0aGVzZSBpbiB0aGVpciBvd24gaGVh
ZGVyIGZpbGUsIGFuZCBhdXRvZ2VuZXJhdGUgKi5sdXQuaCBmaWxlcyBmb3IgKlByb3RvdHlwZVRh
YmxlLgorI2RlZmluZSBERUZJTkVfV0FTTV9PQkpFQ1RfQ09OU1RSVUNUT1JfUFJPUEVSVFkoTkFN
RSwgLi4uKSBcCisgICAgY2xhc3MgV2ViQXNzZW1ibHkgIyMgTkFNRSA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRlZiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCBCYXNlOyBcCisgICAgICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2Vt
Ymx5ICMjIE5BTUUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSBcCisgICAg
ICAgIHsgXAorICAgICAgICAgICAgYXV0byogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUo
dm0sIHN0cnVjdHVyZSk7IFwKKyAgICAgICAgICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0p
OyBcCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OyBcCisgICAgICAgIH0gXAorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgXAorICAgICAgICB7IFwKKyAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgXAorICAgICAg
ICB9IFwKKyAgICAgICAgXAorICAgICAgICBERUNMQVJFX0lORk87IFwKKyAgICAgICAgXAorICAg
IHByb3RlY3RlZDogXAorICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0s
IHN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOyBcCisgICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
IFwKKyAgICAgICAgfSBcCisgICAgfTsgXAorICAgIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJs
eSAjIyBOQU1FOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5ICMjIE5BTUUpIH07IFwKKyAgICBcCisgICAgY2xhc3Mg
V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUgOiBwdWJsaWMgV2ViQXNzZW1ibHkgIyMg
TkFNRSB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRlZiBXZWJBc3NlbWJseSAjIyBO
QU1FIEJhc2U7IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOyBcCisgICAg
ICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKSBcCisg
ICAgICAgIHsgXAorICAgICAgICAgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJB
c3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsgXAorICAgICAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAgICAgICAgIHJldHVybiBvYmpl
Y3Q7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgICAgIERF
Q0xBUkVfSU5GTzsgXAorICAgICAgICBcCisgICAgcHJvdGVjdGVkOiBcCisgICAgICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgcHJpdmF0
ZTogXAorICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKSBcCisgICAgICAgICAgICA6IFdlYkFzc2VtYmx5ICMjIE5BTUUo
dm0sIHN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgfTsgXAorICAg
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBOQU1FICMjIFByb3RvdHlwZVRh
YmxlSW5kZXhbMV0gPSB7IH07IFwKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZh
bHVlIE5BTUUgIyMgUHJvdG90eXBlVGFibGVWYWx1ZXNbMV0gPSB7IHsgbnVsbHB0ciwgMCwgTm9J
bnRyaW5zaWMsIHsgMCB9IH0gfTsgXAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxl
IE5BTUUgIyMgUHJvdG90eXBlVGFibGUgPSB7IDAsIDAsIHRydWUsIE5BTUUgIyMgUHJvdG90eXBl
VGFibGVWYWx1ZXMsIE5BTUUgIyMgUHJvdG90eXBlVGFibGVJbmRleCB9OyBcCisgICAgY29uc3Qg
Q2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmV2ViQXNzZW1ibHkgIyMgTkFNRTo6c19pbmZvLCAmTkFNRSAjIyBQcm90b3R5cGVU
YWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlw
ZSkgfTsgXAorICAgIFwKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RXZWJBc3NlbWJseSAjIyBOQU1FKEV4ZWNTdGF0ZSogc3RhdGUpIFwKKyAgICB7IFwK
KyAgICAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7IFwKKyAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOyBcCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlICIgI05BTUUgIiBjb25z
dHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseSAjIyBOQU1FKEV4ZWNTdGF0
ZSogc3RhdGUpIFwKKyAgICB7IFwKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsgXAorICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsgXAorICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlICIgI05B
TUUgIiBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOyBcCisgICAgfSBcCisgICAgXAorICAgIGNs
YXNzIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOyBcCisgICAg
ICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseSAjIyBOQU1F
ICMjIFByb3RvdHlwZSogTkFNRSAjIyBQcm90b3R5cGUsIFN0cnVjdHVyZSogTkFNRSAjIyBTdHJ1
Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FICMj
IENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseSAj
IyBOQU1FICMjIENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOyBcCisgICAgICAgICAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIE5BTUUgIyMgUHJvdG90eXBlLCBOQU1FICMjIFN0
cnVjdHVyZSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsgXAorICAgICAgICB9
IFwKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIFwKKyAgICAgICAg
eyBcCisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFwKKyAgICAgICAgREVDTEFSRV9JTkZPOyBcCisg
ICAgICAgIFwKKyAgICAgICAgU3RydWN0dXJlKiBOQU1FICMjIFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fICMjIE5BTUUgIyMgU3RydWN0dXJlLmdldCgpOyB9IFwKKyAgICAgICAgXAorICAg
IHByb3RlY3RlZDogXAorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2ViQXNz
ZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUqIE5BTUUgIyMgUHJvdG90eXBlLCBTdHJ1Y3R1cmUq
IE5BTUUgIyMgU3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgjTkFNRSkpOyBcCisgICAgICAgICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBO
QU1FICMjIFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOyBcCisg
ICAgICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUp
OyBcCisgICAgICAgICAgICBtXyAjIyBOQU1FICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE5B
TUUgIyMgU3RydWN0dXJlKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgXAorICAgIHByaXZhdGU6
IFwKKyAgICAgICAgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKSBcCisgICAgICAgICAgICA6IEludGVybmFsRnVuY3Rpb24odm0s
IHN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRpYyBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29u
c3RydWN0RGF0YSkgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIGNvbnN0cnVjdERhdGEubmF0
aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0V2ViQXNzZW1ibHkgIyMgTkFNRTsgXAorICAgICAgICAg
ICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpIFwK
KyAgICAgICAgeyBcCisgICAgICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
V2ViQXNzZW1ibHkgIyMgTkFNRTsgXAorICAgICAgICAgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0
OyBcCisgICAgICAgIH0gXAorICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3Ry
dWN0b3IqPihjZWxsKTsgXAorICAgICAgICAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOyBcCisgICAgICAgICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOyBcCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV8gIyMgTkFNRSAjIyBTdHJ1Y3R1cmUpOyBcCisgICAgICAgIH0gXAorICAgICAgICBc
CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fICMjIE5BTUUgIyMgU3RydWN0dXJl
OyBcCisgICAgfTsgXAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBO
QU1FICMjIENvbnN0cnVjdG9yVGFibGVJbmRleFsxXSA9IHsgfTsgXAorICAgIHN0YXRpYyBjb25z
dCBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWUgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlVmFsdWVzWzFd
ID0geyB7IG51bGxwdHIsIDAsIE5vSW50cmluc2ljLCB7IDAgfSB9IH07IFwKKyAgICBzdGF0aWMg
Y29uc3Qgc3RydWN0IEhhc2hUYWJsZSBOQU1FICMjIENvbnN0cnVjdG9yVGFibGUgPSB7IDAsIDAs
IHRydWUsIE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgTkFNRSAjIyBDb25zdHJ1Y3Rv
clRhYmxlSW5kZXggfTsgXAorICAgIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseSAjIyBOQU1F
ICMjIENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9u
OjpzX2luZm8sICZOQU1FICMjIENvbnN0cnVjdG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUo
V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvcikgfTsKKworRk9SX0VBQ0hfV0FTTV9D
T05TVFJVQ1RPUl9QUk9QRVJUWShERUZJTkVfV0FTTV9PQkpFQ1RfQ09OU1RSVUNUT1JfUFJPUEVS
VFkpCisKKworI2RlZmluZSBERUNMQVJFX1dBU01fT0JKRUNUX0ZVTkNUSU9OKE5BTUUsIC4uLikg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3YXNtT2JqZWN0RnVuYyAjIyBOQU1FKEV4ZWNT
dGF0ZSopOworRk9SX0VBQ0hfV0FTTV9GVU5DVElPTl9QUk9QRVJUWShERUNMQVJFX1dBU01fT0JK
RUNUX0ZVTkNUSU9OKQorCisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU9iamVjdDo6c19p
bmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
ZWJBc3NlbWJseU9iamVjdCkgfTsKKworV2ViQXNzZW1ibHlPYmplY3QqIFdlYkFzc2VtYmx5T2Jq
ZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxXZWJBc3NlbWJseU9iamVjdD4odm0uaGVhcCkpIFdlYkFzc2VtYmx5T2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVj
dCk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBXZWJBc3NlbWJseU9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFzc2VtYmx5T2JqZWN0OjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworI2RlZmlu
ZSBTRVRfVVBfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWShOQU1FLCAuLi4pIFwKKyAgICBhdXRv
KiBwcm90b3R5cGUgIyMgTkFNRSA9IFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpKSk7IFwKKyAgICBhdXRvKiBzdHJ1Y3R1cmUgIyMgTkFNRSA9IFdlYkFzc2VtYmx5
ICMjIE5BTUU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUgIyMg
TkFNRSk7IFwKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciAjIyBOQU1FID0gV2ViQXNzZW1ibHkgIyMg
TkFNRSAjIyBDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBXZWJBc3NlbWJseSAjIyBOQU1FICMjIENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblByb3RvdHlwZSgpKSwgcHJvdG90eXBlICMjIE5BTUUsIHN0cnVjdHVyZSAjIyBO
QU1FKTsgXAorICAgIHByb3RvdHlwZSAjIyBOQU1FLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNvbnN0cnVjdG9yICMjIE5BTUUs
IERvbnRFbnVtKTsKKyAgICBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKFNFVF9V
UF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKQorCisjZGVmaW5lIFJFR0lTVEVSX1dBU01fQ09O
U1RSVUNUT1JfUFJPUEVSVFkoTkFNRSwgLi4uKSBcCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksICNOQU1FKSwgY29uc3RydWN0b3IgIyMgTkFNRSwgRG9udEVudW0pOworICAgIEZPUl9FQUNI
X1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkoUkVHSVNURVJfV0FTTV9DT05TVFJVQ1RPUl9QUk9Q
RVJUWSkKKworI2RlZmluZSBSRUdJU1RFUl9XQVNNX0ZVTkNUSU9OX1BST1BFUlRZKE5BTUUsIExF
TkdUSCkgXAorICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAjTkFNRSksIExFTkdUSCwgd2FzbU9iamVjdEZ1bmMg
IyMgTkFNRSwgTm9JbnRyaW5zaWMsIERvbnRFbnVtKTsKKyAgICBGT1JfRUFDSF9XQVNNX0ZVTkNU
SU9OX1BST1BFUlRZKFJFR0lTVEVSX1dBU01fRlVOQ1RJT05fUFJPUEVSVFkpCit9CisKK1dlYkFz
c2VtYmx5T2JqZWN0OjpXZWJBc3NlbWJseU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JzIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyAgICAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3YXNtT2JqZWN0RnVuY3ZhbGlkYXRlKEV4ZWNTdGF0ZSogc3Rh
dGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJB
c3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlIHZhbGlkYXRlIGZ1bmN0aW9uIHByb3Bl
cnR5IikpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2FzbU9iamVjdEZ1
bmNjb21waWxlKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhl
IGNvbXBpbGUgZnVuY3Rpb24gcHJvcGVydHkiKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTk2MzQxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaApAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgV2ViQXNzZW1ibHlPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMg
V2ViQXNzZW1ibHlPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworCitwcml2YXRlOgor
ICAgIFdlYkFzc2VtYmx5T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA1N2Y3MzRlLi5kNjAyY2I3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAKIDIwMTYtMTAtMTQgIEpGIEJhc3RpZW4g
IDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1w
bGVtZW50IGJhc2ljIHN0dWIKKworICAgICAgICBJbXBsZW1lbnQgdGhlIGdsb2JhbCBXZWJBc3Nl
bWJseSBKYXZhU2NyaXB0IG9iamVjdCwgYW5kIGl0cyBjb25zdHJ1Y3RvciArCisgICAgICAgIGZ1
bmN0aW9uIHByb3BlcnRpZXMgYXMgZGVzY3JpYmVkIGluOgorICAgICAgICAgIGh0dHBzOi8vZ2l0
aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvSlMubWQKKworICAgICAgICBU
aGVzZSBkb24ndCBkbyBhbnl0aGluZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxs
IHRha2UgY2FyZSBvZiBhZGRpbmcKKyAgICAgICAgbW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3Nv
Y2lhdGVkIHRlc3RzLgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGJh
c2ljIHN0dWIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czogdXNlIHRoZSBuZXcgSlNDIG9wdGlvbiB3
aGljaCBleHBvc2VzIHRoZSBXZWJBc3NlbWJseSBvYmplY3QuCisKKzIwMTYtMTAtMTQgIEpGIEJh
c3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIEJhc2ljIFdlYkFzc2VtYmx5
IHRlc3RpbmcKIAogICAgICAgICBDcmVhdGUgYSBzbWFsbCBEU0wgaW4gSmF2YVNjcmlwdCB3aGlj
aCBjYW4gYnVpbGQgV2ViQXNzZW1ibHkgYmluYXJ5IG1vZHVsZXMgYmFzZWQgb24gdGhlIEpTT04g
ZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdCBhcyBkZXNjcmliZWQgaW46CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cwppbmRleCAwZjY4ZmZkLi4wMmEwOTBkIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1z
dHJlc3MtdGVzdHMKQEAgLTExNjAsNyArMTE2MCw3IEBAIGRlZiBydW5XZWJBc3NlbWJseQogICAg
IG1vZHVsZXMgPSBEaXJbV0FTTVRFU1RTX1BBVEggKyAiKi5qcyJdLm1hcCB7IHxmfCBGaWxlLmJh
c2VuYW1lKGYpIH0KICAgICBwcmVwYXJlRXh0cmFBYnNvbHV0ZUZpbGVzKFdBU01URVNUU19QQVRI
LCBbIndhc20uanNvbiJdKQogICAgIHByZXBhcmVFeHRyYVJlbGF0aXZlRmlsZXMobW9kdWxlcy5t
YXAgeyB8ZnwgIi4uLyIgKyBmIH0sICRjb2xsZWN0aW9uKQotICAgIHJ1bigiZGVmYXVsdC13YXNt
IiwgIi1tIikKKyAgICBydW4oImRlZmF1bHQtd2FzbSIsICItbSIsICItLXVzZVdlYkFzc2VtYmx5
PTEiKQogZW5kCiAKIGRlZiBydW5DaGFrcmEobW9kZSwgZXhjZXB0aW9uLCBiYXNlbGluZUZpbGUs
IGV4dHJhRmlsZXMpCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291720</attachid>
            <date>2016-10-15 11:21:43 -0700</date>
            <delta_ts>2016-10-17 10:33:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JS-API-implement-basic-stub.patch</filename>
            <type>text/plain</type>
            <size>32700</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBiYWVkNDYxMDFhNmNiNTA1OWM4ZGQxMDg3NDFkOTZlZWIwMTgxMjI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEzIE9jdCAyMDE2IDE0OjUzOjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgoKSW1wbGVtZW50IHRoZSBnbG9iYWwg
V2ViQXNzZW1ibHkgSmF2YVNjcmlwdCBvYmplY3QsIGFuZCBpdHMgY29uc3RydWN0b3IgKwpmdW5j
dGlvbiBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbjoKICBodHRwczovL2dpdGh1Yi5jb20vV2Vi
QXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCgpUaGVzZSBkb24ndCBkbyBhbnl0aGlu
ZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcK
bW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3NvY2lhdGVkIHRlc3RzLgotLS0KIEpTVGVzdHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsrCiBKU1Rlc3Rz
L3dhc20ueWFtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBKU1Rl
c3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzICAgICAgICAgICAgICB8ICAzNyArKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAx
ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwg
IDMyICsrKwogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAg
ICAgfCAgIDggKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
ICAgICAgfCAgIDcgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDEgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwICAgfCAgMTggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaCAgICAgICAgICAgIHwgICAzICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcCAgIHwgMjU5ICsrKysrKysrKysrKysrKysrKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaCAgICAgfCAgNDggKysrKwogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysK
IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgICAgICAgICAgICAgICAgIHwgICAy
ICstCiAxNCBmaWxlcyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpz
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlPYmplY3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2ViQXNzZW1ibHlPYmplY3QuaAoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGJmYjU1YS4uZTUzYjk5MSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAog
MjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKKyAgICAgICAg
V2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFTY3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNv
bnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJvcGVydGllcyBhcyBkZXNjcmliZWQgaW46
CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21h
c3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0IGRvIGFueXRoaW5nIGF0IHRoZSBtb21l
bnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZworICAgICAgICBtb3Jl
IGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVzdHMuCisKKyAgICAgICAgV2ViQXNzZW1i
bHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9qcy1h
cGkvdGVzdF9iYXNpY19hcGkuanM6IEFkZGVkLgorICAgICAgICAoY29uc3QuZi5vZi5mdW5jdGlv
blByb3BlcnRpZXMuV2ViQXNzZW1ibHkuZi51bmRlZmluZWQudGhyb3cubmV3LkVycm9yLkNvdWxk
bi5jb25zdC5jLm9mLmNvbnN0cnVjdG9yUHJvcGVydGllcy5XZWJBc3NlbWJseS5jLnVuZGVmaW5l
ZC50aHJvdy5uZXcuRXJyb3IuQ291bGRuKToKKyAgICAgICAgKGNvbnN0LmMub2YuY29uc3RydWN0
b3JQcm9wZXJ0aWVzLmNhdGNoKToKKworMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKICAgICAgICAgQmFzaWMgV2ViQXNzZW1ibHkgdGVzdGluZwogCiAgICAg
ICAgIENyZWF0ZSBhIHNtYWxsIERTTCBpbiBKYXZhU2NyaXB0IHdoaWNoIGNhbiBidWlsZCBXZWJB
c3NlbWJseSBiaW5hcnkgbW9kdWxlcyBiYXNlZCBvbiB0aGUgSlNPTiBkZXNjcmlwdGlvbiBvZiB0
aGUgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbjoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1s
IGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggNTQ3Y2U3Mi4uOGY0YTg2ZSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTIzLDMgKzIzLDUg
QEAKIAogLSBwYXRoOiB3YXNtL3NlbGYtdGVzdC8KICAgY21kOiBydW5XZWJBc3NlbWJseQorLSBw
YXRoOiB3YXNtL2pzLWFwaS8KKyAgY21kOiBydW5XZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGVzdF9iYXNpY19hcGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk1
M2NiMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19h
cGkuanMKQEAgLTAsMCArMSwzNyBAQAoraWYgKFdlYkFzc2VtYmx5ID09PSB1bmRlZmluZWQpCisg
ICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmpl
Y3QiKTsKKworY29uc3QgZnVuY3Rpb25Qcm9wZXJ0aWVzID0gWyJ2YWxpZGF0ZSIsICJjb21waWxl
Il07Citjb25zdCBjb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBbIk1vZHVsZSIsICJJbnN0YW5jZSIs
ICJNZW1vcnkiLCAiVGFibGUiLCAiQ29tcGlsZUVycm9yIl07CisKK2ZvciAoY29uc3QgZiBvZiBm
dW5jdGlvblByb3BlcnRpZXMpCisgICAgaWYgKFdlYkFzc2VtYmx5W2ZdID09PSB1bmRlZmluZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBXZWJBc3NlbWJseSBmdW5j
dGlvbiBwcm9wZXJ0eSAiJHtmfSJgKTsKKworZm9yIChjb25zdCBjIG9mIGNvbnN0cnVjdG9yUHJv
cGVydGllcykKKyAgICBpZiAoV2ViQXNzZW1ibHlbY10gPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9yIHBy
b3BlcnR5ICIke2N9ImApOworCisvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5Nzc1IEltcGxlbWVudCBhbmQgdGVzdCB0aGVzZSBBUElzIGZ1cnRoZXIu
IEZvciBub3cgdGhleSBqdXN0IHRocm93LgorCitmb3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25Qcm9w
ZXJ0aWVzKSB7CisgICAgdHJ5IHsKKyAgICAgICAgV2ViQXNzZW1ibHlbZl0oKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBXZWJBc3NlbWJseS4k
e2Z9KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7CisgICAgfQorICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgV2ViQXNzZW1ibHkuJHtmfSgpIHRvIHRocm93IGFuIEVycm9yYCk7
Cit9CisKK2ZvciAoY29uc3QgYyBvZiBjb25zdHJ1Y3RvclByb3BlcnRpZXMpIHsKKyAgICB0cnkg
eworICAgICAgICBsZXQgdiA9IG5ldyBXZWJBc3NlbWJseVtjXSgpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIG5ldyBXZWJBc3NlbWJseS4ke2Z9
KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7CisgICAgfQorICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgbmV3IFdlYkFzc2VtYmx5LiR7Zn0oKSB0byB0aHJvdyBhbiBFcnJvcmAp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZGI4ZGQuLjIzYTQx
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg2Myw2ICs4NjMsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV0FTTUNhbGxpbmdDb252ZW50
aW9uLmNwcAogICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKICAgICB3YXNtL1dBU01QbGFu
LmNwcAorICAgIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwCiAKICAgICB5YXJyL1JlZ3VsYXJF
eHByZXNzaW9uLmNwcAogICAgIHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCBkZjM5MDExLi5hOTFjNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFz
aWMgc3R1YgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFT
Y3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNvbnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJv
cGVydGllcyBhcyBkZXNjcmliZWQgaW46CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dl
YkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0
IGRvIGFueXRoaW5nIGF0IHRoZSBtb21lbnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJl
IG9mIGFkZGluZworICAgICAgICBtb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVz
dHMuCisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1Ygor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOiByZWdpc3RlciB0aGUgbmV3
IFdlYkFzc2VtYmx5IG9iamVjdCdzIG5hbWUgYW5kIGl0cyBjb25zdHJ1Y3RvciBwcm9wZXJ0aWVz
CisgICAgICAgICoganNjLmNwcDogcmVtb3ZlIHVzZWxlc3MgaW5jbHVkZQorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6IGFkZCB0aGUgV2ViQXNzZW1ibHkgZ2xvYmFsIG9iamVjdCBhbmQgaXRzIGNvbnN0cnVj
dG9yIHByb3BlcnRpZXMsIGJ1dCBvbmx5IGlmIHRoZSBKU0Mgb3B0aW9uIGVuYWJsZXMgaXQKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDogYWRkIHRoZSB1c2VXZWJBc3NlbWJseSAoYWxpYXM6
IGVuYWJsZVdlYkFzc2VtYmx5KSBvcHRpb24sIGRlZmF1bHRpbmcgdG8gZmFsc2UKKyAgICAgICAg
KiB3YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5T2JqZWN0OjpjcmVhdGUpOiBib2lsZXJwbGF0ZQorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKTogYm9pbGVycGxhdGUKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogYm9pbGVycGxhdGUKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlPYmplY3Q6OldlYkFzc2VtYmx5T2JqZWN0KTogYm9pbGVycGxhdGUK
KyAgICAgICAgKEpTQzo6d2FzbU9iamVjdEZ1bmN2YWxpZGF0ZSk6IGF1dG8tdGhyb3dzIGZvciBu
b3cKKyAgICAgICAgKEpTQzo6d2FzbU9iamVjdEZ1bmNjb21waWxlKTogYXV0by10aHJvd3MgZm9y
IG5vdworICAgICAgICAqIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuaDogQWRkZWQuCisKIDIwMTYt
MTAtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QjMgbmVlZHMgYSBzcGVjaWFsIFdhc21BZGRyZXNzIE9wY29kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlZThjN2Y5Li45ZDliOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTg3NSw2ICsxODc1LDggQEAKIAkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8q
IFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3
RkNDMjZEMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0ZDQzI2QzE3QTBCNkFBMDA3ODZEMUEg
LyogRlRMU3dpdGNoQ2FzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4QTQ3NDhFMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYuYSBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhEMTUxQTgz
MDYwMDQxMjNGRiAvKiBsaWJXVEYuYSAqLzsgfTsKKwkJQUQyRkNCODgxREFFQkYzQzAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMkZDQjg2MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9i
amVjdC5jcHAgKi87IH07CisJCUFEMkZDQjg5MURBRUJGM0YwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNCODcxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggKi87IH07CiAJ
CUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAy
RkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUFEREIxRjYzMThENzdEQkUwMDlCNThBOCAvKiBPcGFxdWVS
b290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFERTM5RkZGMTZERDE0NEIwMDAz
Q0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQcm9wZXJ0eVRhYmxl
LmNwcCAqLzsgfTsKQEAgLTQxOTgsNiArNDIwMCw4IEBACiAJCUE4RTg5NDMxMENEMDYwMjQwMDM2
NzE3OSAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThFODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQ
cm9wZXJ0eVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b3BlcnR5VGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0I4NjFE
QUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXNzZW1ibHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0I4NzFEQUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4NkE5M0QxQUE0RDg3QzAwMkZF
NzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha0dDTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERC
MUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPcGFxdWVSb290U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI1OUY4OTM3MTg5MUFEMzMwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NzQsNiArNTY3OCw4
IEBACiAJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBRDJGQ0I4NjFEQUVCRjM3MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovLAorCQkJCUFEMkZDQjg3MURBRUJGMzcwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseU9iamVjdC5oICovLAogCQkJCTdCOThEMTM0MUI2MENENUEwMDIzQjFB
NCAvKiBKU1dBU01Nb2R1bGUuY3BwICovLAogCQkJCTdCOThEMTM1MUI2MENENUEwMDIzQjFBNCAv
KiBKU1dBU01Nb2R1bGUuaCAqLywKIAkJCQk1M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FT
TUIzSVJHZW5lcmF0b3IuY3BwICovLApAQCAtNzQzMSw2ICs3NDM3LDcgQEAKIAkJCQkwRkM5N0Yz
NDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2RUJCMzE2Njc2RUY2MDA4QkFERTMgLyogQ29kZUJs
b2NrV2l0aEpJVFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQjg5MURBRUJGM0YwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIx
NjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBC
NjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLApAQCAtOTcwNiw2ICs5NzEzLDcg
QEAKIAkJCQk3OTA1QkI2ODFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDI3MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkYxQUFBODA2OTAwRDMzQjMzIC8qIFNj
b3BlZEFyZ3VtZW50c1RhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQjg4MURBRUJG
M0MwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
OTJBQkNGOTFCRUE5QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkUwNTAyQTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBN0E4RUUxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA2ZWJkMzM5Li5kNzQxMmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0x
NTksNiArMTU5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHN0cmluZ1N1YnN0cklu
dGVybmFsKSBcCiAgICAgbWFjcm8obWFrZUJvdW5kRnVuY3Rpb24pIFwKICAgICBtYWNybyhoYXNP
d25MZW5ndGhQcm9wZXJ0eSkgXAorICAgIG1hY3JvKFdlYkFzc2VtYmx5KSBcCisgICAgbWFjcm8o
TW9kdWxlKSBcCisgICAgbWFjcm8oSW5zdGFuY2UpIFwKKyAgICBtYWNybyhNZW1vcnkpIFwKKyAg
ICBtYWNybyhUYWJsZSkgXAorICAgIG1hY3JvKENvbXBpbGVFcnJvcikgXAorICAgIG1hY3JvKFJ1
bnRpbWVFcnJvcikgXAogCiAKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX1RPX1BVQkxJQ19F
TlRSWShuYW1lKSBtX3ByaXZhdGVUb1B1YmxpY01hcC5hZGQobV8jI25hbWUjI1ByaXZhdGVOYW1l
LmltcGwoKSwgJm1fIyNuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMy4uMjhl
NzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNsdWRlICJK
U1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlz
LmgiCi0jaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDNhNGVhZDkuLjYwNGMwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEwNiw3ICsxMDYsNiBAQAogI2luY2x1ZGUgIkpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXQVNN
TW9kdWxlLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0Lmgi
CiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKQEAgLTE1NSw2ICsxNTQsNyBAQAogI2luY2x1ZGUg
IldlYWtNYXBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJXZWFrU2V0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJXZWFrU2V0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlPYmplY3Qu
aCIKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKICNpZiBFTkFCTEUoSU5UTCkKQEAg
LTgxOCw2ICs4MTgsMjIgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIiR2
bSIpLCBkb2xsYXJWTSwgRG9udEVudW0pOwogICAgIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkgeworICAgICAgICBhdXRvKiB3
YXNtID0gV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgV2ViQXNzZW1ibHlPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgIldlYkFzc2VtYmx5IiksIHdhc20sIERvbnRFbnVtKTsKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvIGV4dHJhU3RhdGljR2xvYmFsc1tdID0geworICAgICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk1vZHVsZVBy
aXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiTW9kdWxlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuSW5zdGFuY2VQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgIkluc3RhbmNlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuTWVtb3J5UHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJNZW1vcnkiKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5UYWJsZVByaXZhdGVOYW1lKCksIHdhc20tPmdl
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiVGFibGUiKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Db21waWxlRXJyb3JQcml2YXRl
TmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
IkNvbXBpbGVFcnJvciIpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLlJ1bnRpbWVFcnJvclByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiUnVudGltZUVycm9yIikpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIH07CisgICAgICAgIGFkZFN0YXRpY0dsb2JhbHMo
ZXh0cmFTdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKGV4dHJhU3RhdGljR2xvYmFscykp
OworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisKICAgICByZXNldFByb3Rv
dHlwZSh2bSwgZ2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKaW5kZXggZGI1YzU3Mi4uY2M2ZDgwNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMzkwLDYgKzM5MCw4IEBAIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIFwKICAgICB2KGJvb2wsIHVzZVNvdXJjZVByb3Zp
ZGVyQ2FjaGUsIHRydWUsIE5vcm1hbCwgIklmIGZhbHNlLCB0aGUgcGFyc2VyIHdpbGwgbm90IHVz
ZSB0aGUgc291cmNlIHByb3ZpZGVyIGNhY2hlLiBJdCdzIGdvb2QgdG8gdmVyaWZ5IGV2ZXJ5dGhp
bmcgd29ya3Mgd2hlbiB0aGlzIGlzIGZhbHNlLiBCZWNhdXNlIHRoZSBjYWNoZSBpcyBzbyBzdWNj
ZXNzZnVsLCBpdCBjYW4gbWFzayBidWdzLiIpIFwKICAgICB2KGJvb2wsIHVzZUNvZGVDYWNoZSwg
dHJ1ZSwgTm9ybWFsLCAiSWYgZmFsc2UsIHRoZSB1bmxpbmtlZCBieXRlIGNvZGUgY2FjaGUgd2ls
bCBub3QgYmUgdXNlZC4iKSBcCisgICAgXAorICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHksIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmplY3QuIikgXAog
CiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApAQCAtNDI3LDYgKzQy
OSw3IEBAIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIHYoZW5hYmxlRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6LCB1c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enosIFNhbWVPcHRpb24pIFwK
ICAgICB2KGVuYWJsZU9TUkV4aXRGdXp6LCB1c2VPU1JFeGl0RnV6eiwgU2FtZU9wdGlvbikgXAog
ICAgIHYoZW5hYmxlRG9sbGFyVk0sIHVzZURvbGxhclZNLCBTYW1lT3B0aW9uKSBcCisgICAgdihl
bmFibGVXZWJBc3NlbWJseSwgdXNlV2ViQXNzZW1ibHksIFNhbWVPcHRpb24pIFwKIAogY2xhc3Mg
T3B0aW9ucyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XZWJBc3NlbWJseU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJB
c3NlbWJseU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdj
MGM2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseU9iamVjdC5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVk
ZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoV2ViQXNzZW1ibHlPYmplY3QpOworCisvLyBOYW1lLCBmdW5jdGlvbkxlbmd0aAorI2Rl
ZmluZSBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERPKSBcCisgICAgRE8oTW9k
dWxlLCAxKSBcCisgICAgRE8oSW5zdGFuY2UsIDIpIFwKKyAgICBETyhNZW1vcnksIDEpIFwKKyAg
ICBETyhUYWJsZSwgMSkgXAorICAgIERPKENvbXBpbGVFcnJvciwgMSkgXAorICAgIERPKFJ1bnRp
bWVFcnJvciwgMSkKKworLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKKyNkZWZpbmUgRk9SX0VBQ0hf
V0FTTV9GVU5DVElPTl9QUk9QRVJUWShETykgXAorICAgIERPKHZhbGlkYXRlLCAxKSBcCisgICAg
RE8oY29tcGlsZSwgMSkKKworLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTcwOSBJbXBsZW1lbnQgZWFjaCBvZiB0aGVzZSBpbiB0aGVpciBvd24gaGVh
ZGVyIGZpbGUsIGFuZCBhdXRvZ2VuZXJhdGUgKi5sdXQuaCBmaWxlcyBmb3IgKlByb3RvdHlwZVRh
YmxlLgorI2RlZmluZSBERUZJTkVfV0FTTV9PQkpFQ1RfQ09OU1RSVUNUT1JfUFJPUEVSVFkoTkFN
RSwgLi4uKSBcCisgICAgY2xhc3MgV2ViQXNzZW1ibHkgIyMgTkFNRSA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRlZiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCBCYXNlOyBcCisgICAgICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2Vt
Ymx5ICMjIE5BTUUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKSBcCisgICAg
ICAgIHsgXAorICAgICAgICAgICAgYXV0byogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUo
dm0sIHN0cnVjdHVyZSk7IFwKKyAgICAgICAgICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0p
OyBcCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OyBcCisgICAgICAgIH0gXAorICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgXAorICAgICAgICB7IFwKKyAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgXAorICAgICAg
ICB9IFwKKyAgICAgICAgXAorICAgICAgICBERUNMQVJFX0lORk87IFwKKyAgICAgICAgXAorICAg
IHByb3RlY3RlZDogXAorICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0s
IHN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOyBcCisgICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
IFwKKyAgICAgICAgfSBcCisgICAgfTsgXAorICAgIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJs
eSAjIyBOQU1FOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5ICMjIE5BTUUpIH07IFwKKyAgICBcCisgICAgY2xhc3Mg
V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUgOiBwdWJsaWMgV2ViQXNzZW1ibHkgIyMg
TkFNRSB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRlZiBXZWJBc3NlbWJseSAjIyBO
QU1FIEJhc2U7IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOyBcCisgICAg
ICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKSBcCisg
ICAgICAgIHsgXAorICAgICAgICAgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJB
c3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsgXAorICAgICAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAgICAgICAgIHJldHVybiBvYmpl
Y3Q7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgICAgIERF
Q0xBUkVfSU5GTzsgXAorICAgICAgICBcCisgICAgcHJvdGVjdGVkOiBcCisgICAgICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgcHJpdmF0
ZTogXAorICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKSBcCisgICAgICAgICAgICA6IFdlYkFzc2VtYmx5ICMjIE5BTUUo
dm0sIHN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgfTsgXAorICAg
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBOQU1FICMjIFByb3RvdHlwZVRh
YmxlSW5kZXhbXSA9IHsgeyAwLCAwIH0gfTsgXAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFz
aFRhYmxlVmFsdWUgTkFNRSAjIyBQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0geyB7IG51bGxwdHIs
IDAsIE5vSW50cmluc2ljLCB7IDAgfSB9IH07IFwKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IEhh
c2hUYWJsZSBOQU1FICMjIFByb3RvdHlwZVRhYmxlID0geyAwLCAwLCB0cnVlLCBOQU1FICMjIFBy
b3RvdHlwZVRhYmxlVmFsdWVzLCBOQU1FICMjIFByb3RvdHlwZVRhYmxlSW5kZXggfTsgXAorICAg
IGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZTo6c19pbmZv
ID0geyAiT2JqZWN0IiwgJldlYkFzc2VtYmx5ICMjIE5BTUU6OnNfaW5mbywgJk5BTUUgIyMgUHJv
dG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQ
cm90b3R5cGUpIH07IFwKKyAgICBcCisgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0V2ViQXNzZW1ibHkgIyMgTkFNRShFeGVjU3RhdGUqIHN0YXRlKSBcCisg
ICAgeyBcCisgICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOyBcCisgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsgXAorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3Ioc3RhdGUsIEFT
Q0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSAiICNOQU1F
ICIgY29uc3RydWN0b3IgcHJvcGVydHkiKSkpKTsgXAorICAgIH0gXAorICAgIFwKKyAgICBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHkgIyMgTkFNRShF
eGVjU3RhdGUqIHN0YXRlKSBcCisgICAgeyBcCisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7IFwK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7IFwKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3Io
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRo
ZSAiICNOQU1FICIgY29uc3RydWN0b3IgcHJvcGVydHkiKSkpKTsgXAorICAgIH0gXAorICAgIFwK
KyAgICBjbGFzcyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geyBcCisgICAgcHVibGljOiBcCisgICAgICAgIHR5cGVkZWYgSW50ZXJu
YWxGdW5jdGlvbiBCYXNlOyBcCisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsg
XAorICAgICAgICBcCisgICAgICAgIHN0YXRpYyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0
cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHkg
IyMgTkFNRSAjIyBQcm90b3R5cGUqIE5BTUUgIyMgUHJvdG90eXBlLCBTdHJ1Y3R1cmUqIE5BTUUg
IyMgU3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgV2ViQXNzZW1ibHkgIyMg
TkFNRSAjIyBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNz
ZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsgXAorICAgICAgICAg
ICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBOQU1FICMjIFByb3RvdHlwZSwgTkFN
RSAjIyBTdHJ1Y3R1cmUpOyBcCisgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7IFwKKyAg
ICAgICAgfSBcCisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSBcCisg
ICAgICAgIHsgXAorICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgICAgIERFQ0xBUkVfSU5G
TzsgXAorICAgICAgICBcCisgICAgICAgIFN0cnVjdHVyZSogTkFNRSAjIyBTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtXyAjIyBOQU1FICMjIFN0cnVjdHVyZS5nZXQoKTsgfSBcCisgICAgICAg
IFwKKyAgICBwcm90ZWN0ZWQ6IFwKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKiBOQU1FICMjIFByb3RvdHlwZSwgU3Ry
dWN0dXJlKiBOQU1FICMjIFN0cnVjdHVyZSkgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoI05BTUUpKTsgXAorICAgICAgICAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgTkFNRSAjIyBQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsgXAorICAgICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250
RGVsZXRlKTsgXAorICAgICAgICAgICAgbV8gIyMgTkFNRSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBOQU1FICMjIFN0cnVjdHVyZSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFwKKyAgICBw
cml2YXRlOiBcCisgICAgICAgIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAorICAgICAgICAgICAgOiBJbnRlcm5hbEZ1bmN0
aW9uKHZtLCBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgIH0gXAorICAgICAgICBz
dGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERh
dGEmIGNvbnN0cnVjdERhdGEpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFdlYkFzc2VtYmx5ICMjIE5BTUU7IFwKKyAg
ICAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OyBcCisgICAgICAgIH0gXAorICAg
ICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxE
YXRhKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY2FsbFdlYkFzc2VtYmx5ICMjIE5BTUU7IFwKKyAgICAgICAgICAgIHJldHVybiBDYWxsVHlw
ZTo6SG9zdDsgXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBcCisgICAgICAgIHsgXAorICAg
ICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseSAjIyBOQU1FICMj
IENvbnN0cnVjdG9yKj4oY2VsbCk7IFwKKyAgICAgICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsgXAorICAgICAgICAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsgXAorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fICMjIE5BTUUgIyMgU3RydWN0dXJlKTsgXAorICAgICAgICB9IFwKKyAg
ICAgICAgXAorICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtXyAjIyBOQU1FICMjIFN0
cnVjdHVyZTsgXAorICAgIH07IFwKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlSW5kZXhbXSA9IHsgeyAwLCAwIH0gfTsgXAor
ICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWUgTkFNRSAjIyBDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzW10gPSB7IHsgbnVsbHB0ciwgMCwgTm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsg
XAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlIE5BTUUgIyMgQ29uc3RydWN0b3JU
YWJsZSA9IHsgMCwgMCwgdHJ1ZSwgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCBOQU1F
ICMjIENvbnN0cnVjdG9yVGFibGVJbmRleCB9OyBcCisgICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFz
c2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJklu
dGVybmFsRnVuY3Rpb246OnNfaW5mbywgJk5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRF
X01FVEhPRF9UQUJMRShXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yKSB9OworCitG
T1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERFRklORV9XQVNNX09CSkVDVF9DT05T
VFJVQ1RPUl9QUk9QRVJUWSkKKworCisjZGVmaW5lIERFQ0xBUkVfV0FTTV9PQkpFQ1RfRlVOQ1RJ
T04oTkFNRSwgLi4uKSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdhc21PYmplY3RGdW5j
ICMjIE5BTUUoRXhlY1N0YXRlKik7CitGT1JfRUFDSF9XQVNNX0ZVTkNUSU9OX1BST1BFUlRZKERF
Q0xBUkVfV0FTTV9PQkpFQ1RfRlVOQ1RJT04pCisKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2Vt
Ymx5T2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5T2JqZWN0KSB9OworCitXZWJBc3NlbWJseU9iamVjdCog
V2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5T2JqZWN0Pih2bS5oZWFwKSkgV2ViQXNz
ZW1ibHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFdl
YkFzc2VtYmx5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOworCisjZGVmaW5lIFNFVF9VUF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKE5BTUUsIC4u
LikgXAorICAgIGF1dG8qIHByb3RvdHlwZSAjIyBOQU1FID0gV2ViQXNzZW1ibHkgIyMgTkFNRSAj
IyBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBXZWJBc3NlbWJseSAjIyBOQU1F
ICMjIFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsgXAorICAgIGF1dG8qIHN0cnVjdHVyZSAjIyBOQU1F
ID0gV2ViQXNzZW1ibHkgIyMgTkFNRTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSAjIyBOQU1FKTsgXAorICAgIGF1dG8qIGNvbnN0cnVjdG9yICMjIE5BTUUgPSBX
ZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFdlYkFzc2VtYmx5
ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBwcm90b3R5cGUgIyMgTkFNRSwg
c3RydWN0dXJlICMjIE5BTUUpOyBcCisgICAgcHJvdG90eXBlICMjIE5BTUUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29uc3Ry
dWN0b3IgIyMgTkFNRSwgRG9udEVudW0pOworICAgIEZPUl9FQUNIX1dBU01fQ09OU1RSVUNUT1Jf
UFJPUEVSVFkoU0VUX1VQX1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkpCisKKyNkZWZpbmUgUkVH
SVNURVJfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWShOQU1FLCAuLi4pIFwKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgI05BTUUpLCBjb25zdHJ1Y3RvciAjIyBOQU1FLCBEb250RW51bSk7
CisgICAgRk9SX0VBQ0hfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWShSRUdJU1RFUl9XQVNNX0NP
TlNUUlVDVE9SX1BST1BFUlRZKQorCisjZGVmaW5lIFJFR0lTVEVSX1dBU01fRlVOQ1RJT05fUFJP
UEVSVFkoTkFNRSwgTEVOR1RIKSBcCisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIGds
b2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICNOQU1FKSwgTEVOR1RILCB3
YXNtT2JqZWN0RnVuYyAjIyBOQU1FLCBOb0ludHJpbnNpYywgRG9udEVudW0pOworICAgIEZPUl9F
QUNIX1dBU01fRlVOQ1RJT05fUFJPUEVSVFkoUkVHSVNURVJfV0FTTV9GVU5DVElPTl9QUk9QRVJU
WSkKK30KKworV2ViQXNzZW1ibHlPYmplY3Q6OldlYkFzc2VtYmx5T2JqZWN0KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvcnMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIAorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdhc21PYmplY3RGdW5jdmFsaWRhdGUo
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJ
SUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgdmFsaWRhdGUg
ZnVuY3Rpb24gcHJvcGVydHkiKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3YXNtT2JqZWN0RnVuY2NvbXBpbGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUs
IGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0
IGltcGxlbWVudCB0aGUgY29tcGlsZSBmdW5jdGlvbiBwcm9wZXJ0eSIpKSkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dl
YkFzc2VtYmx5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJs
eU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OTYzNDEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9i
amVjdC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseU9iamVjdCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
KworICAgIHN0YXRpYyBXZWJBc3NlbWJseU9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7
CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDU3ZjczNGUuLmQ2MDJjYjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxNi0xMC0x
NCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViQXNzZW1i
bHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorCisgICAgICAgIEltcGxlbWVudCB0aGUg
Z2xvYmFsIFdlYkFzc2VtYmx5IEphdmFTY3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNvbnN0cnVjdG9y
ICsKKyAgICAgICAgZnVuY3Rpb24gcHJvcGVydGllcyBhcyBkZXNjcmliZWQgaW46CisgICAgICAg
ICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5t
ZAorCisgICAgICAgIFRoZXNlIGRvbid0IGRvIGFueXRoaW5nIGF0IHRoZSBtb21lbnQsIHRoZSBw
YXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZworICAgICAgICBtb3JlIGZ1bmN0aW9u
YWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVzdHMuCisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJ
OiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOiB1c2UgdGhlIG5l
dyBKU0Mgb3B0aW9uIHdoaWNoIGV4cG9zZXMgdGhlIFdlYkFzc2VtYmx5IG9iamVjdC4KKworMjAx
Ni0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKICAgICAgICAgQmFz
aWMgV2ViQXNzZW1ibHkgdGVzdGluZwogCiAgICAgICAgIENyZWF0ZSBhIHNtYWxsIERTTCBpbiBK
YXZhU2NyaXB0IHdoaWNoIGNhbiBidWlsZCBXZWJBc3NlbWJseSBiaW5hcnkgbW9kdWxlcyBiYXNl
ZCBvbiB0aGUgSlNPTiBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbjoK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9T
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IDBmNjhmZmQuLjAyYTA5MGQgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtMTE2MCw3ICsxMTYwLDcgQEAgZGVmIHJ1bldl
YkFzc2VtYmx5CiAgICAgbW9kdWxlcyA9IERpcltXQVNNVEVTVFNfUEFUSCArICIqLmpzIl0ubWFw
IHsgfGZ8IEZpbGUuYmFzZW5hbWUoZikgfQogICAgIHByZXBhcmVFeHRyYUFic29sdXRlRmlsZXMo
V0FTTVRFU1RTX1BBVEgsIFsid2FzbS5qc29uIl0pCiAgICAgcHJlcGFyZUV4dHJhUmVsYXRpdmVG
aWxlcyhtb2R1bGVzLm1hcCB7IHxmfCAiLi4vIiArIGYgfSwgJGNvbGxlY3Rpb24pCi0gICAgcnVu
KCJkZWZhdWx0LXdhc20iLCAiLW0iKQorICAgIHJ1bigiZGVmYXVsdC13YXNtIiwgIi1tIiwgIi0t
dXNlV2ViQXNzZW1ibHk9MSIpCiBlbmQKIAogZGVmIHJ1bkNoYWtyYShtb2RlLCBleGNlcHRpb24s
IGJhc2VsaW5lRmlsZSwgZXh0cmFGaWxlcykKLS0gCjIuMTAuMQoK
</data>
<flag name="review"
          id="314823"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
    <flag name="commit-queue"
          id="314824"
          type_id="3"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291831</attachid>
            <date>2016-10-17 10:33:42 -0700</date>
            <delta_ts>2016-10-17 11:16:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JS-API-implement-basic-stub.patch</filename>
            <type>text/plain</type>
            <size>32724</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBmNWZkODg5NWRkYjZkNjVkZTFhZmU5N2ZlZmU0ODM1MGJlNGZiOTcwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEzIE9jdCAyMDE2IDE0OjUzOjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgoKSW1wbGVtZW50IHRoZSBnbG9iYWwg
V2ViQXNzZW1ibHkgSmF2YVNjcmlwdCBvYmplY3QsIGFuZCBpdHMgY29uc3RydWN0b3IgKwpmdW5j
dGlvbiBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbjoKICBodHRwczovL2dpdGh1Yi5jb20vV2Vi
QXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCgpUaGVzZSBkb24ndCBkbyBhbnl0aGlu
ZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcK
bW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3NvY2lhdGVkIHRlc3RzLgotLS0KIEpTVGVzdHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsrCiBKU1Rlc3Rz
L3dhc20ueWFtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBKU1Rl
c3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzICAgICAgICAgICAgICB8ICAzNyArKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAx
ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwg
IDMyICsrKwogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAg
ICAgfCAgIDggKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
ICAgICAgfCAgIDcgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDEgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwICAgfCAgMTggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaCAgICAgICAgICAgIHwgICAzICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcCAgIHwgMjU5ICsrKysrKysrKysrKysrKysrKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaCAgICAgfCAgNDggKysrKwogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysK
IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgICAgICAgICAgICAgICAgIHwgICAy
ICstCiAxNCBmaWxlcyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpz
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlPYmplY3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2ViQXNzZW1ibHlPYmplY3QuaAoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGJmYjU1YS4uZTUzYjk5MSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAog
MjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKKyAgICAgICAg
V2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFTY3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNv
bnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJvcGVydGllcyBhcyBkZXNjcmliZWQgaW46
CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21h
c3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0IGRvIGFueXRoaW5nIGF0IHRoZSBtb21l
bnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZworICAgICAgICBtb3Jl
IGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVzdHMuCisKKyAgICAgICAgV2ViQXNzZW1i
bHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9qcy1h
cGkvdGVzdF9iYXNpY19hcGkuanM6IEFkZGVkLgorICAgICAgICAoY29uc3QuZi5vZi5mdW5jdGlv
blByb3BlcnRpZXMuV2ViQXNzZW1ibHkuZi51bmRlZmluZWQudGhyb3cubmV3LkVycm9yLkNvdWxk
bi5jb25zdC5jLm9mLmNvbnN0cnVjdG9yUHJvcGVydGllcy5XZWJBc3NlbWJseS5jLnVuZGVmaW5l
ZC50aHJvdy5uZXcuRXJyb3IuQ291bGRuKToKKyAgICAgICAgKGNvbnN0LmMub2YuY29uc3RydWN0
b3JQcm9wZXJ0aWVzLmNhdGNoKToKKworMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKICAgICAgICAgQmFzaWMgV2ViQXNzZW1ibHkgdGVzdGluZwogCiAgICAg
ICAgIENyZWF0ZSBhIHNtYWxsIERTTCBpbiBKYXZhU2NyaXB0IHdoaWNoIGNhbiBidWlsZCBXZWJB
c3NlbWJseSBiaW5hcnkgbW9kdWxlcyBiYXNlZCBvbiB0aGUgSlNPTiBkZXNjcmlwdGlvbiBvZiB0
aGUgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbjoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1s
IGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggNTQ3Y2U3Mi4uOGY0YTg2ZSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTIzLDMgKzIzLDUg
QEAKIAogLSBwYXRoOiB3YXNtL3NlbGYtdGVzdC8KICAgY21kOiBydW5XZWJBc3NlbWJseQorLSBw
YXRoOiB3YXNtL2pzLWFwaS8KKyAgY21kOiBydW5XZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGVzdF9iYXNpY19hcGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk1
M2NiMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19h
cGkuanMKQEAgLTAsMCArMSwzNyBAQAoraWYgKFdlYkFzc2VtYmx5ID09PSB1bmRlZmluZWQpCisg
ICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmpl
Y3QiKTsKKworY29uc3QgZnVuY3Rpb25Qcm9wZXJ0aWVzID0gWyJ2YWxpZGF0ZSIsICJjb21waWxl
Il07Citjb25zdCBjb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBbIk1vZHVsZSIsICJJbnN0YW5jZSIs
ICJNZW1vcnkiLCAiVGFibGUiLCAiQ29tcGlsZUVycm9yIl07CisKK2ZvciAoY29uc3QgZiBvZiBm
dW5jdGlvblByb3BlcnRpZXMpCisgICAgaWYgKFdlYkFzc2VtYmx5W2ZdID09PSB1bmRlZmluZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBXZWJBc3NlbWJseSBmdW5j
dGlvbiBwcm9wZXJ0eSAiJHtmfSJgKTsKKworZm9yIChjb25zdCBjIG9mIGNvbnN0cnVjdG9yUHJv
cGVydGllcykKKyAgICBpZiAoV2ViQXNzZW1ibHlbY10gPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIFdlYkFzc2VtYmx5IGNvbnN0cnVjdG9yIHBy
b3BlcnR5ICIke2N9ImApOworCisvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5Nzc1IEltcGxlbWVudCBhbmQgdGVzdCB0aGVzZSBBUElzIGZ1cnRoZXIu
IEZvciBub3cgdGhleSBqdXN0IHRocm93LgorCitmb3IgKGNvbnN0IGYgb2YgZnVuY3Rpb25Qcm9w
ZXJ0aWVzKSB7CisgICAgdHJ5IHsKKyAgICAgICAgV2ViQXNzZW1ibHlbZl0oKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBXZWJBc3NlbWJseS4k
e2Z9KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7CisgICAgfQorICAgIHRocm93IG5l
dyBFcnJvcihgRXhwZWN0ZWQgV2ViQXNzZW1ibHkuJHtmfSgpIHRvIHRocm93IGFuIEVycm9yYCk7
Cit9CisKK2ZvciAoY29uc3QgYyBvZiBjb25zdHJ1Y3RvclByb3BlcnRpZXMpIHsKKyAgICB0cnkg
eworICAgICAgICBsZXQgdiA9IG5ldyBXZWJBc3NlbWJseVtjXSgpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIG5ldyBXZWJBc3NlbWJseS4ke2Z9
KCkgdG8gdGhyb3cgYW4gRXJyb3IsIGdvdCAke2V9YCk7CisgICAgfQorICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgbmV3IFdlYkFzc2VtYmx5LiR7Zn0oKSB0byB0aHJvdyBhbiBFcnJvcmAp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZGI4ZGQuLjIzYTQx
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg2Myw2ICs4NjMsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV0FTTUNhbGxpbmdDb252ZW50
aW9uLmNwcAogICAgIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKICAgICB3YXNtL1dBU01QbGFu
LmNwcAorICAgIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuY3BwCiAKICAgICB5YXJyL1JlZ3VsYXJF
eHByZXNzaW9uLmNwcAogICAgIHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCBkZjM5MDExLi5hOTFjNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFz
aWMgc3R1YgorCisgICAgICAgIEltcGxlbWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFT
Y3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNvbnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJv
cGVydGllcyBhcyBkZXNjcmliZWQgaW46CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dl
YkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0
IGRvIGFueXRoaW5nIGF0IHRoZSBtb21lbnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJl
IG9mIGFkZGluZworICAgICAgICBtb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVz
dHMuCisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1Ygor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOiByZWdpc3RlciB0aGUgbmV3
IFdlYkFzc2VtYmx5IG9iamVjdCdzIG5hbWUgYW5kIGl0cyBjb25zdHJ1Y3RvciBwcm9wZXJ0aWVz
CisgICAgICAgICoganNjLmNwcDogcmVtb3ZlIHVzZWxlc3MgaW5jbHVkZQorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6IGFkZCB0aGUgV2ViQXNzZW1ibHkgZ2xvYmFsIG9iamVjdCBhbmQgaXRzIGNvbnN0cnVj
dG9yIHByb3BlcnRpZXMsIGJ1dCBvbmx5IGlmIHRoZSBKU0Mgb3B0aW9uIGVuYWJsZXMgaXQKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDogYWRkIHRoZSB1c2VXZWJBc3NlbWJseSAoYWxpYXM6
IGVuYWJsZVdlYkFzc2VtYmx5KSBvcHRpb24sIGRlZmF1bHRpbmcgdG8gZmFsc2UKKyAgICAgICAg
KiB3YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5T2JqZWN0OjpjcmVhdGUpOiBib2lsZXJwbGF0ZQorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKTogYm9pbGVycGxhdGUKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogYm9pbGVycGxhdGUKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlPYmplY3Q6OldlYkFzc2VtYmx5T2JqZWN0KTogYm9pbGVycGxhdGUK
KyAgICAgICAgKEpTQzo6d2FzbU9iamVjdEZ1bmN2YWxpZGF0ZSk6IGF1dG8tdGhyb3dzIGZvciBu
b3cKKyAgICAgICAgKEpTQzo6d2FzbU9iamVjdEZ1bmNjb21waWxlKTogYXV0by10aHJvd3MgZm9y
IG5vdworICAgICAgICAqIHdhc20vV2ViQXNzZW1ibHlPYmplY3QuaDogQWRkZWQuCisKIDIwMTYt
MTAtMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QjMgbmVlZHMgYSBzcGVjaWFsIFdhc21BZGRyZXNzIE9wY29kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlZThjN2Y5Li45ZDliOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTg3NSw2ICsxODc1LDggQEAKIAkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8q
IFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3
RkNDMjZEMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0ZDQzI2QzE3QTBCNkFBMDA3ODZEMUEg
LyogRlRMU3dpdGNoQ2FzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4QTQ3NDhFMTUxQTgzMDYwMDQxMjNGRiAvKiBsaWJXVEYuYSBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhEMTUxQTgz
MDYwMDQxMjNGRiAvKiBsaWJXVEYuYSAqLzsgfTsKKwkJQUQyRkNCODgxREFFQkYzQzAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMkZDQjg2MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9i
amVjdC5jcHAgKi87IH07CisJCUFEMkZDQjg5MURBRUJGM0YwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNCODcxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggKi87IH07CiAJ
CUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg2QTkzRDFBQTREODdDMDAy
RkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUFEREIxRjYzMThENzdEQkUwMDlCNThBOCAvKiBPcGFxdWVS
b290U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
RERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFERTM5RkZGMTZERDE0NEIwMDAz
Q0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQcm9wZXJ0eVRhYmxl
LmNwcCAqLzsgfTsKQEAgLTQxOTgsNiArNDIwMCw4IEBACiAJCUE4RTg5NDMxMENEMDYwMjQwMDM2
NzE3OSAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThFODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMUNGMDY4MTZEQ0FCMkQwMEI5NzEyMyAvKiBQ
cm9wZXJ0eVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b3BlcnR5VGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0I4NjFE
QUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXNzZW1ibHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0I4NzFEQUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ4NkE5M0QxQUE0RDg3QzAwMkZF
NzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha0dDTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRERC
MUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPcGFxdWVSb290U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI1OUY4OTM3MTg5MUFEMzMwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NzQsNiArNTY3OCw4
IEBACiAJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBRDJGQ0I4NjFEQUVCRjM3MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlPYmplY3QuY3BwICovLAorCQkJCUFEMkZDQjg3MURBRUJGMzcwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseU9iamVjdC5oICovLAogCQkJCTdCOThEMTM0MUI2MENENUEwMDIzQjFB
NCAvKiBKU1dBU01Nb2R1bGUuY3BwICovLAogCQkJCTdCOThEMTM1MUI2MENENUEwMDIzQjFBNCAv
KiBKU1dBU01Nb2R1bGUuaCAqLywKIAkJCQk1M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FT
TUIzSVJHZW5lcmF0b3IuY3BwICovLApAQCAtNzQzMSw2ICs3NDM3LDcgQEAKIAkJCQkwRkM5N0Yz
NDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2RUJCMzE2Njc2RUY2MDA4QkFERTMgLyogQ29kZUJs
b2NrV2l0aEpJVFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQjg5MURBRUJGM0YwMEIz
RTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjIx
NjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBC
NjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLApAQCAtOTcwNiw2ICs5NzEzLDcg
QEAKIAkJCQk3OTA1QkI2ODFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDI3MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkYxQUFBODA2OTAwRDMzQjMzIC8qIFNj
b3BlZEFyZ3VtZW50c1RhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFEMkZDQjg4MURBRUJG
M0MwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
OTJBQkNGOTFCRUE5QkQyMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkUwNTAyQTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBN0E4RUUxOENFNEZEODAwNTIzNzFEIC8qIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA2ZWJkMzM5Li5kNzQxMmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0x
NTksNiArMTU5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHN0cmluZ1N1YnN0cklu
dGVybmFsKSBcCiAgICAgbWFjcm8obWFrZUJvdW5kRnVuY3Rpb24pIFwKICAgICBtYWNybyhoYXNP
d25MZW5ndGhQcm9wZXJ0eSkgXAorICAgIG1hY3JvKFdlYkFzc2VtYmx5KSBcCisgICAgbWFjcm8o
TW9kdWxlKSBcCisgICAgbWFjcm8oSW5zdGFuY2UpIFwKKyAgICBtYWNybyhNZW1vcnkpIFwKKyAg
ICBtYWNybyhUYWJsZSkgXAorICAgIG1hY3JvKENvbXBpbGVFcnJvcikgXAorICAgIG1hY3JvKFJ1
bnRpbWVFcnJvcikgXAogCiAKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX1RPX1BVQkxJQ19F
TlRSWShuYW1lKSBtX3ByaXZhdGVUb1B1YmxpY01hcC5hZGQobV8jI25hbWUjI1ByaXZhdGVOYW1l
LmltcGwoKSwgJm1fIyNuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMy4uMjhl
NzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNsdWRlICJK
U1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlz
LmgiCi0jaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDNhNGVhZDkuLjYwNGMwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEwNiw3ICsxMDYsNiBAQAogI2luY2x1ZGUgIkpT
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCi0jaW5jbHVkZSAiSlNXQVNN
TW9kdWxlLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiSlNXZWFrU2V0Lmgi
CiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKQEAgLTE1NSw2ICsxNTQsNyBAQAogI2luY2x1ZGUg
IldlYWtNYXBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJXZWFrU2V0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJXZWFrU2V0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlPYmplY3Qu
aCIKICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKICNpZiBFTkFCTEUoSU5UTCkKQEAg
LTgxOCw2ICs4MTgsMjIgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIiR2
bSIpLCBkb2xsYXJWTSwgRG9udEVudW0pOwogICAgIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkgeworICAgICAgICBhdXRvKiB3
YXNtID0gV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgV2ViQXNzZW1ibHlPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoZXhlYywgIldlYkFzc2VtYmx5IiksIHdhc20sIERvbnRFbnVtKTsKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvIGV4dHJhU3RhdGljR2xvYmFsc1tdID0geworICAgICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk1vZHVsZVBy
aXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAiTW9kdWxlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuSW5zdGFuY2VQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgIkluc3RhbmNlIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuTWVtb3J5UHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJNZW1vcnkiKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5UYWJsZVByaXZhdGVOYW1lKCksIHdhc20tPmdl
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiVGFibGUiKSksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Db21waWxlRXJyb3JQcml2YXRl
TmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
IkNvbXBpbGVFcnJvciIpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLlJ1bnRpbWVFcnJvclByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCAiUnVudGltZUVycm9yIikpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIH07CisgICAgICAgIGFkZFN0YXRpY0dsb2JhbHMo
ZXh0cmFTdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKGV4dHJhU3RhdGljR2xvYmFscykp
OworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisKICAgICByZXNldFByb3Rv
dHlwZSh2bSwgZ2V0UHJvdG90eXBlRGlyZWN0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKaW5kZXggZGI1YzU3Mi4uY2M2ZDgwNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMzkwLDYgKzM5MCw4IEBAIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIFwKICAgICB2KGJvb2wsIHVzZVNvdXJjZVByb3Zp
ZGVyQ2FjaGUsIHRydWUsIE5vcm1hbCwgIklmIGZhbHNlLCB0aGUgcGFyc2VyIHdpbGwgbm90IHVz
ZSB0aGUgc291cmNlIHByb3ZpZGVyIGNhY2hlLiBJdCdzIGdvb2QgdG8gdmVyaWZ5IGV2ZXJ5dGhp
bmcgd29ya3Mgd2hlbiB0aGlzIGlzIGZhbHNlLiBCZWNhdXNlIHRoZSBjYWNoZSBpcyBzbyBzdWNj
ZXNzZnVsLCBpdCBjYW4gbWFzayBidWdzLiIpIFwKICAgICB2KGJvb2wsIHVzZUNvZGVDYWNoZSwg
dHJ1ZSwgTm9ybWFsLCAiSWYgZmFsc2UsIHRoZSB1bmxpbmtlZCBieXRlIGNvZGUgY2FjaGUgd2ls
bCBub3QgYmUgdXNlZC4iKSBcCisgICAgXAorICAgIHYoYm9vbCwgdXNlV2ViQXNzZW1ibHksIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYkFzc2VtYmx5IGdsb2JhbCBvYmplY3QuIikgXAog
CiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApAQCAtNDI3LDYgKzQy
OSw3IEBAIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIHYoZW5hYmxlRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6LCB1c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enosIFNhbWVPcHRpb24pIFwK
ICAgICB2KGVuYWJsZU9TUkV4aXRGdXp6LCB1c2VPU1JFeGl0RnV6eiwgU2FtZU9wdGlvbikgXAog
ICAgIHYoZW5hYmxlRG9sbGFyVk0sIHVzZURvbGxhclZNLCBTYW1lT3B0aW9uKSBcCisgICAgdihl
bmFibGVXZWJBc3NlbWJseSwgdXNlV2ViQXNzZW1ibHksIFNhbWVPcHRpb24pIFwKIAogY2xhc3Mg
T3B0aW9ucyB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XZWJBc3NlbWJseU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJB
c3NlbWJseU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZk
ODQwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcApAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseU9iamVjdC5oIgorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVk
ZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoV2ViQXNzZW1ibHlPYmplY3QpOworCisvLyBOYW1lLCBmdW5jdGlvbkxlbmd0aAorI2Rl
ZmluZSBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKERPKSBcCisgICAgRE8oTW9k
dWxlLCAxKSBcCisgICAgRE8oSW5zdGFuY2UsIDIpIFwKKyAgICBETyhNZW1vcnksIDEpIFwKKyAg
ICBETyhUYWJsZSwgMSkgXAorICAgIERPKENvbXBpbGVFcnJvciwgMSkgXAorICAgIERPKFJ1bnRp
bWVFcnJvciwgMSkKKworLy8gTmFtZSwgZnVuY3Rpb25MZW5ndGgKKyNkZWZpbmUgRk9SX0VBQ0hf
V0FTTV9GVU5DVElPTl9QUk9QRVJUWShETykgXAorICAgIERPKHZhbGlkYXRlLCAxKSBcCisgICAg
RE8oY29tcGlsZSwgMSkKKworLy8gRklYTUUgSW1wbGVtZW50IGVhY2ggb2YgdGhlc2UgaW4gdGhl
aXIgb3duIGhlYWRlciBmaWxlLCBhbmQgYXV0b2dlbmVyYXRlICoubHV0LmggZmlsZXMgZm9yICpQ
cm90b3R5cGVUYWJsZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MTcwOQorI2RlZmluZSBERUZJTkVfV0FTTV9PQkpFQ1RfQ09OU1RSVUNUT1JfUFJPUEVSVFkoTkFN
RSwgZnVuY3Rpb25MZW5ndGgpIFwKKyAgICBjbGFzcyBXZWJBc3NlbWJseSAjIyBOQU1FIDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsgXAorICAgIHB1YmxpYzogXAorICAgICAgICB0eXBl
ZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7IFwKKyAgICAgICAgXAorICAgICAgICBzdGF0
aWMgV2ViQXNzZW1ibHkgIyMgTkFNRSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBhdXRvKiBmb3JtYXQgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseSAjIyBOQU1FPih2bS5oZWFwKSkgV2ViQXNzZW1i
bHkgIyMgTkFNRSh2bSwgc3RydWN0dXJlKTsgXAorICAgICAgICAgICAgZm9ybWF0LT5maW5pc2hD
cmVhdGlvbih2bSk7IFwKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7IFwKKyAgICAgICAgfSBc
CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSBcCisgICAgICAgIHsg
XAorICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OyBcCisgICAgICAgIH0gXAorICAgICAgICBcCisgICAgICAgIERFQ0xBUkVfSU5GTzsgXAorICAg
ICAgICBcCisgICAgcHJvdGVjdGVkOiBcCisgICAgICAgIFdlYkFzc2VtYmx5ICMjIE5BTUUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAorICAgICAgICAgICAgOiBKU0Rlc3RydWN0aWJs
ZU9iamVjdCh2bSwgc3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAgICAgICB9IFwKKyAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pIFwKKyAgICAgICAgeyBcCisgICAgICAgICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAgICAgICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsgXAorICAgICAgICB9IFwKKyAgICB9OyBcCisgICAgY29uc3QgQ2xhc3NJbmZv
IFdlYkFzc2VtYmx5ICMjIE5BTUU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHkgIyMgTkFNRSkgfTsgXAorICAgIFwK
KyAgICBjbGFzcyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSA6IHB1YmxpYyBXZWJB
c3NlbWJseSAjIyBOQU1FIHsgXAorICAgIHB1YmxpYzogXAorICAgICAgICB0eXBlZGVmIFdlYkFz
c2VtYmx5ICMjIE5BTUUgQmFzZTsgXAorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFi
bGU7IFwKKyAgICAgICAgXAorICAgICAgICBzdGF0aWMgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQ
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZT4odm0u
aGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOyBc
CisgICAgICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsgXAorICAgICAgICAgICAg
cmV0dXJuIG9iamVjdDsgXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFwK
KyAgICAgICAgREVDTEFSRV9JTkZPOyBcCisgICAgICAgIFwKKyAgICBwcm90ZWN0ZWQ6IFwKKyAg
ICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pIFwKKyAgICAgICAgeyBcCisgICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFwK
KyAgICBwcml2YXRlOiBcCisgICAgICAgIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgICAgIDogV2ViQXNzZW1i
bHkgIyMgTkFNRSh2bSwgc3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAgICAgICB9IFwKKyAg
ICB9OyBcCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IE5BTUUgIyMg
UHJvdG90eXBlVGFibGVJbmRleFtdID0geyB7IDAsIDAgfSB9OyBcCisgICAgc3RhdGljIGNvbnN0
IHN0cnVjdCBIYXNoVGFibGVWYWx1ZSBOQU1FICMjIFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPSB7
IHsgbnVsbHB0ciwgMCwgTm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsgXAorICAgIHN0YXRpYyBjb25z
dCBzdHJ1Y3QgSGFzaFRhYmxlIE5BTUUgIyMgUHJvdG90eXBlVGFibGUgPSB7IDAsIDAsIHRydWUs
IE5BTUUgIyMgUHJvdG90eXBlVGFibGVWYWx1ZXMsIE5BTUUgIyMgUHJvdG90eXBlVGFibGVJbmRl
eCB9OyBcCisgICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmV2ViQXNzZW1ibHkgIyMgTkFNRTo6c19pbmZvLCAm
TkFNRSAjIyBQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseSAj
IyBOQU1FICMjIFByb3RvdHlwZSkgfTsgXAorICAgIFwKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWJBc3NlbWJseSAjIyBOQU1FKEV4ZWNTdGF0ZSog
c3RhdGUpIFwKKyAgICB7IFwKKyAgICAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7IFwKKyAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyBcCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJv
cihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQg
dGhlICIgI05BTUUgIiBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOyBcCisgICAgfSBcCisgICAg
XAorICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJs
eSAjIyBOQU1FKEV4ZWNTdGF0ZSogc3RhdGUpIFwKKyAgICB7IFwKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsgXAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsgXAor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBj
cmVhdGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBp
bXBsZW1lbnQgdGhlICIgI05BTUUgIiBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOyBcCisgICAg
fSBcCisgICAgXAorICAgIGNsYXNzIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3Ig
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlw
ZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlOyBcCisgICAgICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2VtYmx5ICMjIE5B
TUUgIyMgQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBX
ZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZSogTkFNRSAjIyBQcm90b3R5cGUsIFN0cnVj
dHVyZSogTkFNRSAjIyBTdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBXZWJB
c3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOyBc
CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIE5BTUUgIyMgUHJv
dG90eXBlLCBOQU1FICMjIFN0cnVjdHVyZSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsgXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFwKKyAgICAgICAg
REVDTEFSRV9JTkZPOyBcCisgICAgICAgIFwKKyAgICAgICAgU3RydWN0dXJlKiBOQU1FICMjIFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fICMjIE5BTUUgIyMgU3RydWN0dXJlLmdldCgpOyB9
IFwKKyAgICAgICAgXAorICAgIHByb3RlY3RlZDogXAorICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUqIE5BTUUgIyMgUHJv
dG90eXBlLCBTdHJ1Y3R1cmUqIE5BTUUgIyMgU3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAg
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgjTkFNRSkpOyBc
CisgICAgICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBOQU1FICMjIFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOyBcCisgICAgICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihmdW5jdGlvbkxlbmd0aCksIFJl
YWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsgXAorICAgICAgICAgICAgbV8gIyMgTkFN
RSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBOQU1FICMjIFN0cnVjdHVyZSk7IFwKKyAgICAg
ICAgfSBcCisgICAgICAgIFwKKyAgICBwcml2YXRlOiBcCisgICAgICAgIFdlYkFzc2VtYmx5ICMj
IE5BTUUgIyMgQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAorICAg
ICAgICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBc
CisgICAgICAgIH0gXAorICAgICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpIFwKKyAgICAgICAgeyBc
CisgICAgICAgICAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdFdl
YkFzc2VtYmx5ICMjIE5BTUU7IFwKKyAgICAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpI
b3N0OyBcCisgICAgICAgIH0gXAorICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAg
Y2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFdlYkFzc2VtYmx5ICMjIE5BTUU7IFwKKyAg
ICAgICAgICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsgXAorICAgICAgICB9IFwKKyAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yKj4oY2VsbCk7IFwKKyAgICAgICAg
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsgXAorICAg
ICAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsgXAorICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fICMjIE5BTUUgIyMgU3RydWN0
dXJlKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgXAorICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtXyAjIyBOQU1FICMjIFN0cnVjdHVyZTsgXAorICAgIH07IFwKKyAgICBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlSW5k
ZXhbXSA9IHsgeyAwLCAwIH0gfTsgXAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxl
VmFsdWUgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPSB7IHsgbnVsbHB0ciwgMCwg
Tm9JbnRyaW5zaWMsIHsgMCB9IH0gfTsgXAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRh
YmxlIE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZSA9IHsgMCwgMCwgdHJ1ZSwgTkFNRSAjIyBDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzLCBOQU1FICMjIENvbnN0cnVjdG9yVGFibGVJbmRleCB9OyBcCisg
ICAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgJk5BTUUgIyMg
Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseSAjIyBOQU1F
ICMjIENvbnN0cnVjdG9yKSB9OworCitGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZ
KERFRklORV9XQVNNX09CSkVDVF9DT05TVFJVQ1RPUl9QUk9QRVJUWSkKKworCisjZGVmaW5lIERF
Q0xBUkVfV0FTTV9PQkpFQ1RfRlVOQ1RJT04oTkFNRSwgLi4uKSBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdhc21PYmplY3RGdW5jICMjIE5BTUUoRXhlY1N0YXRlKik7CitGT1JfRUFDSF9X
QVNNX0ZVTkNUSU9OX1BST1BFUlRZKERFQ0xBUkVfV0FTTV9PQkpFQ1RfRlVOQ1RJT04pCisKKwor
Y29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5T2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5T2JqZWN0KSB9
OworCitXZWJBc3NlbWJseU9iamVjdCogV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorewor
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
T2JqZWN0Pih2bS5oZWFwKSkgV2ViQXNzZW1ibHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gb2Jq
ZWN0OworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
K3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisK
K3ZvaWQgV2ViQXNzZW1ibHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisjZGVmaW5lIFNFVF9VUF9XQVNNX0NPTlNU
UlVDVE9SX1BST1BFUlRZKE5BTUUsIC4uLikgXAorICAgIGF1dG8qIHByb3RvdHlwZSAjIyBOQU1F
ID0gV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBXZWJBc3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsgXAorICAg
IGF1dG8qIHN0cnVjdHVyZSAjIyBOQU1FID0gV2ViQXNzZW1ibHkgIyMgTkFNRTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSAjIyBOQU1FKTsgXAorICAgIGF1dG8q
IGNvbnN0cnVjdG9yICMjIE5BTUUgPSBXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBl
KCkpLCBwcm90b3R5cGUgIyMgTkFNRSwgc3RydWN0dXJlICMjIE5BTUUpOyBcCisgICAgcHJvdG90
eXBlICMjIE5BTUUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IgIyMgTkFNRSwgRG9udEVudW0pOworICAgIEZP
Ul9FQUNIX1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkoU0VUX1VQX1dBU01fQ09OU1RSVUNUT1Jf
UFJPUEVSVFkpCisKKyNkZWZpbmUgUkVHSVNURVJfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWShO
QU1FLCAuLi4pIFwKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgI05BTUUpLCBjb25zdHJ1
Y3RvciAjIyBOQU1FLCBEb250RW51bSk7CisgICAgRk9SX0VBQ0hfV0FTTV9DT05TVFJVQ1RPUl9Q
Uk9QRVJUWShSRUdJU1RFUl9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKQorCisjZGVmaW5lIFJF
R0lTVEVSX1dBU01fRlVOQ1RJT05fUFJPUEVSVFkoTkFNRSwgTEVOR1RIKSBcCisgICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICNOQU1FKSwgTEVOR1RILCB3YXNtT2JqZWN0RnVuYyAjIyBOQU1FLCBOb0ludHJpbnNp
YywgRG9udEVudW0pOworICAgIEZPUl9FQUNIX1dBU01fRlVOQ1RJT05fUFJPUEVSVFkoUkVHSVNU
RVJfV0FTTV9GVU5DVElPTl9QUk9QRVJUWSkKK30KKworV2ViQXNzZW1ibHlPYmplY3Q6OldlYkFz
c2VtYmx5T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU05vbkZp
bmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBDb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
ICAgIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdhc21PYmplY3RGdW5jdmFsaWRhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUs
IGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0
IGltcGxlbWVudCB0aGUgdmFsaWRhdGUgZnVuY3Rpb24gcHJvcGVydHkiKSkpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3YXNtT2JqZWN0RnVuY2NvbXBpbGUoRXhlY1N0YXRl
KiBzdGF0ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwo
IldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgY29tcGlsZSBmdW5jdGlvbiBw
cm9wZXJ0eSIpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjU1OTYzNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJs
eU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBXZWJBc3NlbWJseU9iamVjdCog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwor
CisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlPYmpl
Y3QoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU3ZjczNGUuLmQ2MDJj
YjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwyMyBAQAogMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1Ygor
CisgICAgICAgIEltcGxlbWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFTY3JpcHQgb2Jq
ZWN0LCBhbmQgaXRzIGNvbnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJvcGVydGllcyBh
cyBkZXNjcmliZWQgaW46CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5
L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0IGRvIGFueXRo
aW5nIGF0IHRoZSBtb21lbnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGlu
ZworICAgICAgICBtb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVzdHMuCisKKyAg
ICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzOiB1c2UgdGhlIG5ldyBKU0Mgb3B0aW9uIHdoaWNoIGV4cG9zZXMgdGhlIFdl
YkFzc2VtYmx5IG9iamVjdC4KKworMjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CisKICAgICAgICAgQmFzaWMgV2ViQXNzZW1ibHkgdGVzdGluZwogCiAgICAgICAg
IENyZWF0ZSBhIHNtYWxsIERTTCBpbiBKYXZhU2NyaXB0IHdoaWNoIGNhbiBidWlsZCBXZWJBc3Nl
bWJseSBiaW5hcnkgbW9kdWxlcyBiYXNlZCBvbiB0aGUgSlNPTiBkZXNjcmlwdGlvbiBvZiB0aGUg
Zm9ybWF0IGFzIGRlc2NyaWJlZCBpbjoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4
IDBmNjhmZmQuLjAyYTA5MGQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJl
c3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtMTE2
MCw3ICsxMTYwLDcgQEAgZGVmIHJ1bldlYkFzc2VtYmx5CiAgICAgbW9kdWxlcyA9IERpcltXQVNN
VEVTVFNfUEFUSCArICIqLmpzIl0ubWFwIHsgfGZ8IEZpbGUuYmFzZW5hbWUoZikgfQogICAgIHBy
ZXBhcmVFeHRyYUFic29sdXRlRmlsZXMoV0FTTVRFU1RTX1BBVEgsIFsid2FzbS5qc29uIl0pCiAg
ICAgcHJlcGFyZUV4dHJhUmVsYXRpdmVGaWxlcyhtb2R1bGVzLm1hcCB7IHxmfCAiLi4vIiArIGYg
fSwgJGNvbGxlY3Rpb24pCi0gICAgcnVuKCJkZWZhdWx0LXdhc20iLCAiLW0iKQorICAgIHJ1bigi
ZGVmYXVsdC13YXNtIiwgIi1tIiwgIi0tdXNlV2ViQXNzZW1ibHk9MSIpCiBlbmQKIAogZGVmIHJ1
bkNoYWtyYShtb2RlLCBleGNlcHRpb24sIGJhc2VsaW5lRmlsZSwgZXh0cmFGaWxlcykKLS0gCjIu
MTAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291836</attachid>
            <date>2016-10-17 11:16:44 -0700</date>
            <delta_ts>2016-10-17 14:38:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-JS-API-implement-basic-stub.patch</filename>
            <type>text/plain</type>
            <size>32760</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlMjhiZGZlODA5ZGEzMDM1NzQyYWNkM2UyNjc2ZWRjYjhlZjliYTQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDEzIE9jdCAyMDE2IDE0OjUzOjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgoKSW1wbGVtZW50IHRoZSBnbG9iYWwg
V2ViQXNzZW1ibHkgSmF2YVNjcmlwdCBvYmplY3QsIGFuZCBpdHMgY29uc3RydWN0b3IgKwpmdW5j
dGlvbiBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbjoKICBodHRwczovL2dpdGh1Yi5jb20vV2Vi
QXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kCgpUaGVzZSBkb24ndCBkbyBhbnl0aGlu
ZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBvZiBhZGRpbmcK
bW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3NvY2lhdGVkIHRlc3RzLgotLS0KIEpTVGVzdHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsrCiBKU1Rlc3Rz
L3dhc20ueWFtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBKU1Rl
c3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzICAgICAgICAgICAgICB8ICAzNyArKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAx
ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwg
IDMyICsrKwogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAg
ICAgfCAgIDggKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
ICAgICAgfCAgIDcgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDEgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwICAgfCAgMTggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaCAgICAgICAgICAgIHwgICAzICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmNwcCAgIHwgMjU5ICsrKysrKysrKysrKysrKysrKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlPYmplY3QuaCAgICAgfCAgNDggKysrKwogVG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKysK
IFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgICAgICAgICAgICAgICAgIHwgICAy
ICstCiAxNCBmaWxlcyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpz
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlPYmplY3QuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2ViQXNzZW1ibHlPYmplY3QuaAoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGJmYjU1YS4uZmFiOWNkZSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAog
MjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKKyAgICAgICAg
V2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgZ2xvYmFsIFdlYkFzc2VtYmx5IEphdmFTY3JpcHQgb2JqZWN0LCBhbmQgaXRzIGNv
bnN0cnVjdG9yICsKKyAgICAgICAgZnVuY3Rpb24gcHJvcGVydGllcyBhcyBkZXNjcmliZWQgaW46
CisgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21h
c3Rlci9KUy5tZAorCisgICAgICAgIFRoZXNlIGRvbid0IGRvIGFueXRoaW5nIGF0IHRoZSBtb21l
bnQsIHRoZSBwYXJlbnQgYnVnIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZworICAgICAgICBtb3Jl
IGZ1bmN0aW9uYWxpdHkgYW5kIGFzc29jaWF0ZWQgdGVzdHMuCisKKyAgICAgICAgV2ViQXNzZW1i
bHkgSlMgQVBJOiBpbXBsZW1lbnQgYmFzaWMgc3R1YgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vp
dGggTWlsbGVyLgorCisgICAgICAgICogd2FzbS55YW1sOgorICAgICAgICAqIHdhc20vanMtYXBp
L3Rlc3RfYmFzaWNfYXBpLmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0LmYub2YuZnVuY3Rpb25Q
cm9wZXJ0aWVzLldlYkFzc2VtYmx5LmYudW5kZWZpbmVkLnRocm93Lm5ldy5FcnJvci5Db3VsZG4u
Y29uc3QuYy5vZi5jb25zdHJ1Y3RvclByb3BlcnRpZXMuV2ViQXNzZW1ibHkuYy51bmRlZmluZWQu
dGhyb3cubmV3LkVycm9yLkNvdWxkbik6CisgICAgICAgIChjb25zdC5jLm9mLmNvbnN0cnVjdG9y
UHJvcGVydGllcy5jYXRjaCk6CisKKzIwMTYtMTAtMTQgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgorCiAgICAgICAgIEJhc2ljIFdlYkFzc2VtYmx5IHRlc3RpbmcKIAogICAgICAg
ICBDcmVhdGUgYSBzbWFsbCBEU0wgaW4gSmF2YVNjcmlwdCB3aGljaCBjYW4gYnVpbGQgV2ViQXNz
ZW1ibHkgYmluYXJ5IG1vZHVsZXMgYmFzZWQgb24gdGhlIEpTT04gZGVzY3JpcHRpb24gb2YgdGhl
IGZvcm1hdCBhcyBkZXNjcmliZWQgaW46CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20ueWFtbCBi
L0pTVGVzdHMvd2FzbS55YW1sCmluZGV4IDU0N2NlNzIuLjhmNGE4NmUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvd2FzbS55YW1sCisrKyBiL0pTVGVzdHMvd2FzbS55YW1sCkBAIC0yMywzICsyMyw1IEBA
CiAKIC0gcGF0aDogd2FzbS9zZWxmLXRlc3QvCiAgIGNtZDogcnVuV2ViQXNzZW1ibHkKKy0gcGF0
aDogd2FzbS9qcy1hcGkvCisgIGNtZDogcnVuV2ViQXNzZW1ibHkKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rl
c3RfYmFzaWNfYXBpLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NTNj
YjAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBp
LmpzCkBAIC0wLDAgKzEsMzcgQEAKK2lmIChXZWJBc3NlbWJseSA9PT0gdW5kZWZpbmVkKQorICAg
IHRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgZmluZCBXZWJBc3NlbWJseSBnbG9iYWwgb2JqZWN0
Iik7CisKK2NvbnN0IGZ1bmN0aW9uUHJvcGVydGllcyA9IFsidmFsaWRhdGUiLCAiY29tcGlsZSJd
OworY29uc3QgY29uc3RydWN0b3JQcm9wZXJ0aWVzID0gWyJNb2R1bGUiLCAiSW5zdGFuY2UiLCAi
TWVtb3J5IiwgIlRhYmxlIiwgIkNvbXBpbGVFcnJvciJdOworCitmb3IgKGNvbnN0IGYgb2YgZnVu
Y3Rpb25Qcm9wZXJ0aWVzKQorICAgIGlmIChXZWJBc3NlbWJseVtmXSA9PT0gdW5kZWZpbmVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgV2ViQXNzZW1ibHkgZnVuY3Rp
b24gcHJvcGVydHkgIiR7Zn0iYCk7CisKK2ZvciAoY29uc3QgYyBvZiBjb25zdHJ1Y3RvclByb3Bl
cnRpZXMpCisgICAgaWYgKFdlYkFzc2VtYmx5W2NdID09PSB1bmRlZmluZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBXZWJBc3NlbWJseSBjb25zdHJ1Y3RvciBwcm9w
ZXJ0eSAiJHtjfSJgKTsKKworLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTc3NSBJbXBsZW1lbnQgYW5kIHRlc3QgdGhlc2UgQVBJcyBmdXJ0aGVyLiBG
b3Igbm93IHRoZXkganVzdCB0aHJvdy4KKworZm9yIChjb25zdCBmIG9mIGZ1bmN0aW9uUHJvcGVy
dGllcykgeworICAgIHRyeSB7CisgICAgICAgIFdlYkFzc2VtYmx5W2ZdKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgV2ViQXNzZW1ibHkuJHtm
fSgpIHRvIHRocm93IGFuIEVycm9yLCBnb3QgJHtlfWApOworICAgIH0KKyAgICB0aHJvdyBuZXcg
RXJyb3IoYEV4cGVjdGVkIFdlYkFzc2VtYmx5LiR7Zn0oKSB0byB0aHJvdyBhbiBFcnJvcmApOwor
fQorCitmb3IgKGNvbnN0IGMgb2YgY29uc3RydWN0b3JQcm9wZXJ0aWVzKSB7CisgICAgdHJ5IHsK
KyAgICAgICAgbGV0IHYgPSBuZXcgV2ViQXNzZW1ibHlbY10oKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBuZXcgV2ViQXNzZW1ibHkuJHtmfSgp
IHRvIHRocm93IGFuIEVycm9yLCBnb3QgJHtlfWApOworICAgIH0KKyAgICB0aHJvdyBuZXcgRXJy
b3IoYEV4cGVjdGVkIG5ldyBXZWJBc3NlbWJseS4ke2Z9KCkgdG8gdGhyb3cgYW4gRXJyb3JgKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwZmRiOGRkLi4yM2E0MTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04NjMsNiArODYzLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL1dBU01DYWxsaW5nQ29udmVudGlv
bi5jcHAKICAgICB3YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCiAgICAgd2FzbS9XQVNNUGxhbi5j
cHAKKyAgICB3YXNtL1dlYkFzc2VtYmx5T2JqZWN0LmNwcAogCiAgICAgeWFyci9SZWd1bGFyRXhw
cmVzc2lvbi5jcHAKICAgICB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggZGYzOTAxMS4uOWFmODRlNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTYtMTAtMTQgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGJhc2lj
IHN0dWIKKworICAgICAgICBJbXBsZW1lbnQgdGhlIGdsb2JhbCBXZWJBc3NlbWJseSBKYXZhU2Ny
aXB0IG9iamVjdCwgYW5kIGl0cyBjb25zdHJ1Y3RvciArCisgICAgICAgIGZ1bmN0aW9uIHByb3Bl
cnRpZXMgYXMgZGVzY3JpYmVkIGluOgorICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJB
c3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvSlMubWQKKworICAgICAgICBUaGVzZSBkb24ndCBk
byBhbnl0aGluZyBhdCB0aGUgbW9tZW50LCB0aGUgcGFyZW50IGJ1ZyB3aWxsIHRha2UgY2FyZSBv
ZiBhZGRpbmcKKyAgICAgICAgbW9yZSBmdW5jdGlvbmFsaXR5IGFuZCBhc3NvY2lhdGVkIHRlc3Rz
LgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGJhc2ljIHN0dWIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQwNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6IHJlZ2lzdGVyIHRoZSBuZXcgV2Vi
QXNzZW1ibHkgb2JqZWN0J3MgbmFtZSBhbmQgaXRzIGNvbnN0cnVjdG9yIHByb3BlcnRpZXMKKyAg
ICAgICAgKiBqc2MuY3BwOiByZW1vdmUgdXNlbGVzcyBpbmNsdWRlCisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KTogYWRkIHRoZSBXZWJBc3NlbWJseSBnbG9iYWwgb2JqZWN0IGFuZCBpdHMgY29uc3RydWN0b3Ig
cHJvcGVydGllcywgYnV0IG9ubHkgaWYgdGhlIEpTQyBvcHRpb24gZW5hYmxlcyBpdAorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5oOiBhZGQgdGhlIHVzZVdlYkFzc2VtYmx5IChhbGlhczogZW5h
YmxlV2ViQXNzZW1ibHkpIG9wdGlvbiwgZGVmYXVsdGluZyB0byBmYWxzZQorICAgICAgICAqIHdh
c20vV2ViQXNzZW1ibHlPYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlPYmplY3Q6OmNyZWF0ZSk6IGJvaWxlcnBsYXRlCisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOiBib2lsZXJwbGF0ZQorICAgICAgICAoSlNDOjpXZWJB
c3NlbWJseU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOiBib2lsZXJwbGF0ZQorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseU9iamVjdDo6V2ViQXNzZW1ibHlPYmplY3QpOiBib2lsZXJwbGF0ZQorICAg
ICAgICAoSlNDOjp3YXNtT2JqZWN0RnVuY3ZhbGlkYXRlKTogYXV0by10aHJvd3MgZm9yIG5vdwor
ICAgICAgICAoSlNDOjp3YXNtT2JqZWN0RnVuY2NvbXBpbGUpOiBhdXRvLXRocm93cyBmb3Igbm93
CisgICAgICAgICogd2FzbS9XZWJBc3NlbWJseU9iamVjdC5oOiBBZGRlZC4KKwogMjAxNi0xMC0x
NCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCMyBu
ZWVkcyBhIHNwZWNpYWwgV2FzbUFkZHJlc3MgT3Bjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGVlOGM3ZjkuLjlkOWI5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xODc1LDYgKzE4NzUsOCBAQAogCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJv
cGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0ZCNjA0QjEwM0Y1RUFCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdGQ0My
NkQxN0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkNDMjZDMTdBMEI2QUEwMDc4NkQxQSAvKiBG
VExTd2l0Y2hDYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQThBNDc0OEUxNTFBODMwNjAwNDEyM0ZGIC8qIGxpYldURi5hIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEQxNTFBODMwNjAw
NDEyM0ZGIC8qIGxpYldURi5hICovOyB9OworCQlBRDJGQ0I4ODFEQUVCRjNDMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNCODYxREFFQkYzNzAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0
LmNwcCAqLzsgfTsKKwkJQUQyRkNCODkxREFFQkYzRjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJG
Q0I4NzFEQUVCRjM3MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlPYmplY3QuaCAqLzsgfTsKIAkJQUQ4
NkE5M0UxQUE0RDg4RDAwMkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEODZBOTNEMUFBNEQ4N0MwMDJGRTc3
RiAvKiBXZWFrR0NNYXBJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQUREQjFGNjMxOEQ3N0RCRTAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RT
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEREIx
RjYyMThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQURFMzlGRkYxNkREMTQ0QjAwMDNDRDRB
IC8qIFByb3BlcnR5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3Bw
ICovOyB9OwpAQCAtNDE5OCw2ICs0MjAwLDggQEAKIAkJQThFODk0MzEwQ0QwNjAyNDAwMzY3MTc5
IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3Bl
cnR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvcGVy
dHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQjg2MURBRUJG
MzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJBc3NlbWJseU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUFEMkZDQjg3MURBRUJGMzcwMEIzRTczNiAvKiBXZWJBc3NlbWJseU9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseU9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDg2QTkzRDFBQTREODdDMDAyRkU3N0Yg
LyogV2Vha0dDTWFwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWFrR0NNYXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEREIxRjYy
MThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE9wYXF1ZVJvb3RTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjU5Rjg5MzcxODkxQUQzMzAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRJbnN0cnVjdGlvblN0
cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY3NCw2ICs1Njc4LDggQEAK
IAkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0IC8qIHdhc20gKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUFEMkZDQjg2MURBRUJGMzcwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseU9iamVjdC5jcHAgKi8sCisJCQkJQUQyRkNCODcxREFFQkYzNzAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5T2JqZWN0LmggKi8sCiAJCQkJN0I5OEQxMzQxQjYwQ0Q1QTAwMjNCMUE0IC8q
IEpTV0FTTU1vZHVsZS5jcHAgKi8sCiAJCQkJN0I5OEQxMzUxQjYwQ0Q1QTAwMjNCMUE0IC8qIEpT
V0FTTU1vZHVsZS5oICovLAogCQkJCTUzRjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBXQVNNQjNJ
UkdlbmVyYXRvci5jcHAgKi8sCkBAIC03NDMxLDYgKzc0MzcsNyBAQAogCQkJCTBGQzk3RjM0MTgy
MDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRDhBMzE0MTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxvY2tX
aXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCODkxREFFQkYzRjAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdGMTgyMjE2NDA4
OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4
QkU5OTUwMDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJz
ICovLAogCQkJCTk5Q0MwQjYyMThCRTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5
SW5wdXRzVGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCkBAIC05NzA2LDYgKzk3MTMsNyBAQAog
CQkJCTc5MDVCQjY4MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFMDUwMjcxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyRjFBQUE4MDY5MDBEMzNCMzMgLyogU2NvcGVk
QXJndW1lbnRzVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUQyRkNCODgxREFFQkYzQzAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5MkFC
Q0Y5MUJFQTlCRDIwMDY0MDNBMCAvKiBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRTA1MDJBMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkE3QThFRTE4Q0U0RkQ4MDA1MjM3MUQgLyogU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDZlYmQzMzkuLmQ3NDEyZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE1OSw2
ICsxNTksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oc3RyaW5nU3Vic3RySW50ZXJu
YWwpIFwKICAgICBtYWNybyhtYWtlQm91bmRGdW5jdGlvbikgXAogICAgIG1hY3JvKGhhc093bkxl
bmd0aFByb3BlcnR5KSBcCisgICAgbWFjcm8oV2ViQXNzZW1ibHkpIFwKKyAgICBtYWNybyhNb2R1
bGUpIFwKKyAgICBtYWNybyhJbnN0YW5jZSkgXAorICAgIG1hY3JvKE1lbW9yeSkgXAorICAgIG1h
Y3JvKFRhYmxlKSBcCisgICAgbWFjcm8oQ29tcGlsZUVycm9yKSBcCisgICAgbWFjcm8oUnVudGlt
ZUVycm9yKSBcCiAKIAogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZ
KG5hbWUpIG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZChtXyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1w
bCgpLCAmbV8jI25hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAyNzQxMmQzLi4yOGU3MTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIkpTUHJv
eHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIK
LSNpbmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
M2E0ZWFkOS4uNjA0YzBiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTA2LDcgKzEwNiw2IEBACiAjaW5jbHVkZSAiSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKLSNpbmNsdWRlICJKU1dBU01Nb2R1
bGUuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNp
bmNsdWRlICJKU1dpdGhTY29wZS5oIgpAQCAtMTU1LDYgKzE1NCw3IEBACiAjaW5jbHVkZSAiV2Vh
a01hcFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIldlYWtTZXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIldlYWtTZXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseU9iamVjdC5oIgog
I2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIAogI2lmIEVOQUJMRShJTlRMKQpAQCAtODE4
LDYgKzgxOCwyMiBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiJHZtIiks
IGRvbGxhclZNLCBEb250RW51bSk7CiAgICAgfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQor
ICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKSB7CisgICAgICAgIGF1dG8qIHdhc20g
PSBXZWJBc3NlbWJseU9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBXZWJBc3NlbWJseU9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAg
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCAiV2ViQXNzZW1ibHkiKSwgd2FzbSwgRG9udEVudW0pOworICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8gZXh0cmFTdGF0aWNHbG9iYWxzW10gPSB7CisgICAgICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuTW9kdWxlUHJpdmF0
ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJNb2R1bGUiKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5J
bnN0YW5jZVByaXZhdGVOYW1lKCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCAiSW5zdGFuY2UiKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKKyAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5NZW1vcnlQcml2YXRlTmFtZSgpLCB3YXNtLT5nZXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIk1lbW9yeSIpKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlRhYmxlUHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJUYWJsZSIpKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkNvbXBpbGVFcnJvclByaXZhdGVOYW1l
KCksIHdhc20tPmdldERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiQ29t
cGlsZUVycm9yIikpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
UnVudGltZUVycm9yUHJpdmF0ZU5hbWUoKSwgd2FzbS0+Z2V0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJSdW50aW1lRXJyb3IiKSksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgfTsKKyAgICAgICAgYWRkU3RhdGljR2xvYmFscyhleHRy
YVN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoZXh0cmFTdGF0aWNHbG9iYWxzKSk7Cisg
ICAgfQorI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKKwogICAgIHJlc2V0UHJvdG90eXBl
KHZtLCBnZXRQcm90b3R5cGVEaXJlY3QoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAppbmRleCBkYjVjNTcyLi5jYzZkODA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0zOTAsNiArMzkwLDggQEAgdHlwZWRlZiBjb25zdCBj
aGFyKiBvcHRpb25TdHJpbmc7CiAgICAgXAogICAgIHYoYm9vbCwgdXNlU291cmNlUHJvdmlkZXJD
YWNoZSwgdHJ1ZSwgTm9ybWFsLCAiSWYgZmFsc2UsIHRoZSBwYXJzZXIgd2lsbCBub3QgdXNlIHRo
ZSBzb3VyY2UgcHJvdmlkZXIgY2FjaGUuIEl0J3MgZ29vZCB0byB2ZXJpZnkgZXZlcnl0aGluZyB3
b3JrcyB3aGVuIHRoaXMgaXMgZmFsc2UuIEJlY2F1c2UgdGhlIGNhY2hlIGlzIHNvIHN1Y2Nlc3Nm
dWwsIGl0IGNhbiBtYXNrIGJ1Z3MuIikgXAogICAgIHYoYm9vbCwgdXNlQ29kZUNhY2hlLCB0cnVl
LCBOb3JtYWwsICJJZiBmYWxzZSwgdGhlIHVubGlua2VkIGJ5dGUgY29kZSBjYWNoZSB3aWxsIG5v
dCBiZSB1c2VkLiIpIFwKKyAgICBcCisgICAgdihib29sLCB1c2VXZWJBc3NlbWJseSwgZmFsc2Us
IE5vcm1hbCwgIkV4cG9zZSB0aGUgV2ViQXNzZW1ibHkgZ2xvYmFsIG9iamVjdC4iKSBcCiAKIGVu
dW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCkBAIC00MjcsNiArNDI5LDcg
QEAgZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgdihlbmFibGVFeGVjdXRhYmxlQWxsb2Nh
dGlvbkZ1enosIHVzZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6eiwgU2FtZU9wdGlvbikgXAogICAg
IHYoZW5hYmxlT1NSRXhpdEZ1enosIHVzZU9TUkV4aXRGdXp6LCBTYW1lT3B0aW9uKSBcCiAgICAg
dihlbmFibGVEb2xsYXJWTSwgdXNlRG9sbGFyVk0sIFNhbWVPcHRpb24pIFwKKyAgICB2KGVuYWJs
ZVdlYkFzc2VtYmx5LCB1c2VXZWJBc3NlbWJseSwgU2FtZU9wdGlvbikgXAogCiBjbGFzcyBPcHRp
b25zIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dl
YkFzc2VtYmx5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2Vt
Ymx5T2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGMyMjli
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlPYmplY3QuY3BwCkBAIC0wLDAgKzEsMjU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFz
c2VtYmx5T2JqZWN0LmgiCisKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJG
dW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJM
RShXZWJBc3NlbWJseU9iamVjdCk7CisKKy8vIE5hbWUsIGZ1bmN0aW9uTGVuZ3RoCisjZGVmaW5l
IEZPUl9FQUNIX1dBU01fQ09OU1RSVUNUT1JfUFJPUEVSVFkoRE8pIFwKKyAgICBETyhNb2R1bGUs
IDEpIFwKKyAgICBETyhJbnN0YW5jZSwgMikgXAorICAgIERPKE1lbW9yeSwgMSkgXAorICAgIERP
KFRhYmxlLCAxKSBcCisgICAgRE8oQ29tcGlsZUVycm9yLCAxKSBcCisgICAgRE8oUnVudGltZUVy
cm9yLCAxKQorCisvLyBOYW1lLCBmdW5jdGlvbkxlbmd0aAorI2RlZmluZSBGT1JfRUFDSF9XQVNN
X0ZVTkNUSU9OX1BST1BFUlRZKERPKSBcCisgICAgRE8odmFsaWRhdGUsIDEpIFwKKyAgICBETyhj
b21waWxlLCAxKQorCisvLyBGSVhNRSBJbXBsZW1lbnQgZWFjaCBvZiB0aGVzZSBpbiB0aGVpciBv
d24gaGVhZGVyIGZpbGUsIGFuZCBhdXRvZ2VuZXJhdGUgKi5sdXQuaCBmaWxlcyBmb3IgKlByb3Rv
dHlwZVRhYmxlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzA5
CisjZGVmaW5lIERFRklORV9XQVNNX09CSkVDVF9DT05TVFJVQ1RPUl9QUk9QRVJUWShOQU1FLCBm
dW5jdGlvbkxlbmd0aCkgXAorICAgIGNsYXNzIEpTV2ViQXNzZW1ibHkgIyMgTkFNRSA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRl
ZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOyBcCisgICAgICAgIFwKKyAgICAgICAgc3RhdGlj
IEpTV2ViQXNzZW1ibHkgIyMgTkFNRSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBhdXRvKiBmb3JtYXQgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5ICMjIE5BTUU+KHZtLmhlYXApKSBKU1dlYkFz
c2VtYmx5ICMjIE5BTUUodm0sIHN0cnVjdHVyZSk7IFwKKyAgICAgICAgICAgIGZvcm1hdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOyBcCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OyBcCisgICAgICAg
IH0gXAorICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgXAorICAgICAg
ICB7IFwKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgXAorICAgICAgICBERUNMQVJFX0lORk87IFwK
KyAgICAgICAgXAorICAgIHByb3RlY3RlZDogXAorICAgICAgICBKU1dlYkFzc2VtYmx5ICMjIE5B
TUUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAorICAgICAgICAgICAgOiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAgICAgICB9IFwK
KyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pIFwKKyAgICAgICAgeyBcCisgICAg
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7IFwKKyAgICAgICAgICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsgXAorICAgICAgICB9IFwKKyAgICB9OyBcCisgICAgY29uc3QgQ2xh
c3NJbmZvIEpTV2ViQXNzZW1ibHkgIyMgTkFNRTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuIiAj
TkFNRSwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5
ICMjIE5BTUUpIH07IFwKKyAgICBcCisgICAgY2xhc3MgV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQ
cm90b3R5cGUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeyBcCisgICAgcHVibGljOiBc
CisgICAgICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsgXAorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7IFwKKyAgICAgICAgXAorICAgICAgICBzdGF0aWMg
V2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAg
ICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseSAj
IyBOQU1FICMjIFByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOyBcCisgICAgICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsgXAorICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsgXAorICAgICAgICB9IFwKKyAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIFwKKyAgICAgICAgeyBcCisg
ICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IFwK
KyAgICAgICAgfSBcCisgICAgICAgIFwKKyAgICAgICAgREVDTEFSRV9JTkZPOyBcCisgICAgICAg
IFwKKyAgICBwcm90ZWN0ZWQ6IFwKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0p
IFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7IFwK
KyAgICAgICAgfSBcCisgICAgICAgIFwKKyAgICBwcml2YXRlOiBcCisgICAgICAgIFdlYkFzc2Vt
Ymx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIFwK
KyAgICAgICAgICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkgXAorICAg
ICAgICB7IFwKKyAgICAgICAgfSBcCisgICAgfTsgXAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBOQU1FICMjIFByb3RvdHlwZVRhYmxlSW5kZXhbXSA9IHsgeyAwLCAw
IH0gfTsgXAorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWUgTkFNRSAjIyBQ
cm90b3R5cGVUYWJsZVZhbHVlc1tdID0geyB7IG51bGxwdHIsIDAsIE5vSW50cmluc2ljLCB7IDAg
fSB9IH07IFwKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZSBOQU1FICMjIFByb3Rv
dHlwZVRhYmxlID0geyAwLCAwLCB0cnVlLCBOQU1FICMjIFByb3RvdHlwZVRhYmxlVmFsdWVzLCBO
QU1FICMjIFByb3RvdHlwZVRhYmxlSW5kZXggfTsgXAorICAgIGNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseSAjIyBOQU1FICMjIFByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuIiAj
TkFNRSAiLnByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZOQU1FICMjIFByb3RvdHlwZVRhYmxl
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgUHJvdG90eXBlKSB9
OyBcCisgICAgXAorICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTV2ViQXNzZW1ibHkgIyMgTkFNRShFeGVjU3RhdGUqIHN0YXRlKSBcCisgICAgeyBcCisg
ICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOyBcCisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsgXAorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJh
bCgiV2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSAiICNOQU1FICIgY29uc3Ry
dWN0b3IgcHJvcGVydHkiKSkpKTsgXAorICAgIH0gXAorICAgIFwKKyAgICBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseSAjIyBOQU1FKEV4ZWNTdGF0
ZSogc3RhdGUpIFwKKyAgICB7IFwKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsgXAorICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsgXAorICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcihzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlICIgI05B
TUUgIiBjb25zdHJ1Y3RvciBwcm9wZXJ0eSIpKSkpOyBcCisgICAgfSBcCisgICAgXAorICAgIGNs
YXNzIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7IFwKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOyBcCisgICAg
ICAgIFwKKyAgICAgICAgc3RhdGljIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJseSAjIyBOQU1F
ICMjIFByb3RvdHlwZSogTkFNRSAjIyBQcm90b3R5cGUsIFN0cnVjdHVyZSogTkFNRSAjIyBTdHJ1
Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBXZWJBc3NlbWJseSAjIyBOQU1FICMj
IENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseSAj
IyBOQU1FICMjIENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOyBcCisgICAgICAgICAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIE5BTUUgIyMgUHJvdG90eXBlLCBOQU1FICMjIFN0
cnVjdHVyZSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsgXAorICAgICAgICB9
IFwKKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIFwKKyAgICAgICAg
eyBcCisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFwKKyAgICAgICAgREVDTEFSRV9JTkZPOyBcCisg
ICAgICAgIFwKKyAgICAgICAgU3RydWN0dXJlKiBOQU1FICMjIFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fICMjIE5BTUUgIyMgU3RydWN0dXJlLmdldCgpOyB9IFwKKyAgICAgICAgXAorICAg
IHByb3RlY3RlZDogXAorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgV2ViQXNz
ZW1ibHkgIyMgTkFNRSAjIyBQcm90b3R5cGUqIE5BTUUgIyMgUHJvdG90eXBlLCBTdHJ1Y3R1cmUq
IE5BTUUgIyMgU3RydWN0dXJlKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgjTkFNRSkpOyBcCisgICAgICAgICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBO
QU1FICMjIFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOyBcCisg
ICAgICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihmdW5jdGlvbkxlbmd0aCksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsgXAorICAgICAgICAgICAgbV8gIyMgTkFNRSAjIyBTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBOQU1FICMjIFN0cnVjdHVyZSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFwK
KyAgICBwcml2YXRlOiBcCisgICAgICAgIFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgXAorICAgICAgICAgICAgOiBJbnRlcm5h
bEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpIFwKKyAgICAgICAgeyBcCisgICAgICAgIH0gXAorICAg
ICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTV2ViQXNzZW1ibHkgIyMgTkFN
RTsgXAorICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7IFwKKyAgICAgICAg
fSBcCisgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0
YSYgY2FsbERhdGEpIFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjYWxsSlNXZWJBc3NlbWJseSAjIyBOQU1FOyBcCisgICAgICAgICAgICByZXR1
cm4gQ2FsbFR5cGU6Okhvc3Q7IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikgXAorICAgICAg
ICB7IFwKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHkg
IyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcio+KGNlbGwpOyBcCisgICAgICAgICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7IFwKKyAgICAgICAgICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7IFwKKyAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tXyAjIyBOQU1FICMjIFN0cnVjdHVyZSk7IFwKKyAgICAg
ICAgfSBcCisgICAgICAgIFwKKyAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV8gIyMg
TkFNRSAjIyBTdHJ1Y3R1cmU7IFwKKyAgICB9OyBcCisgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZUluZGV4W10gPSB7IHsgMCwg
MCB9IH07IFwKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIE5BTUUgIyMg
Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0geyB7IG51bGxwdHIsIDAsIE5vSW50cmluc2ljLCB7
IDAgfSB9IH07IFwKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZSBOQU1FICMjIENv
bnN0cnVjdG9yVGFibGUgPSB7IDAsIDAsIHRydWUsIE5BTUUgIyMgQ29uc3RydWN0b3JUYWJsZVZh
bHVlcywgTkFNRSAjIyBDb25zdHJ1Y3RvclRhYmxlSW5kZXggfTsgXAorICAgIGNvbnN0IENsYXNz
SW5mbyBXZWJBc3NlbWJseSAjIyBOQU1FICMjIENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sICZOQU1FICMjIENvbnN0cnVjdG9yVGFibGUsIENSRUFURV9N
RVRIT0RfVEFCTEUoV2ViQXNzZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3RvcikgfTsKKworRk9S
X0VBQ0hfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWShERUZJTkVfV0FTTV9PQkpFQ1RfQ09OU1RS
VUNUT1JfUFJPUEVSVFkpCisKKworI2RlZmluZSBERUNMQVJFX1dBU01fT0JKRUNUX0ZVTkNUSU9O
KE5BTUUsIC4uLikgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3YXNtT2JqZWN0RnVuYyAj
IyBOQU1FKEV4ZWNTdGF0ZSopOworRk9SX0VBQ0hfV0FTTV9GVU5DVElPTl9QUk9QRVJUWShERUNM
QVJFX1dBU01fT0JKRUNUX0ZVTkNUSU9OKQorCisKK2NvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJs
eU9iamVjdDo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5T2JqZWN0KSB9OworCitXZWJBc3NlbWJseU9iamVj
dCogV2ViQXNzZW1ibHlPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5T2JqZWN0Pih2bS5oZWFwKSkgV2Vi
QXNzZW1ibHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUq
IFdlYkFzc2VtYmx5T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlPYmpl
Y3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGlu
Zm8oKSkpOworCisjZGVmaW5lIFNFVF9VUF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKE5BTUUs
IC4uLikgXAorICAgIGF1dG8qIHByb3RvdHlwZSAjIyBOQU1FID0gV2ViQXNzZW1ibHkgIyMgTkFN
RSAjIyBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBXZWJBc3NlbWJseSAjIyBO
QU1FICMjIFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsgXAorICAgIGF1dG8qIHN0cnVjdHVyZSAjIyBO
QU1FID0gSlNXZWJBc3NlbWJseSAjIyBOQU1FOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlICMjIE5BTUUpOyBcCisgICAgYXV0byogY29uc3RydWN0b3IgIyMgTkFN
RSA9IFdlYkFzc2VtYmx5ICMjIE5BTUUgIyMgQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgV2ViQXNz
ZW1ibHkgIyMgTkFNRSAjIyBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIHByb3RvdHlwZSAjIyBO
QU1FLCBzdHJ1Y3R1cmUgIyMgTkFNRSk7IFwKKyAgICBwcm90b3R5cGUgIyMgTkFNRS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RvciAjIyBOQU1FLCBEb250RW51bSk7CisgICAgRk9SX0VBQ0hfV0FTTV9DT05TVFJV
Q1RPUl9QUk9QRVJUWShTRVRfVVBfV0FTTV9DT05TVFJVQ1RPUl9QUk9QRVJUWSkKKworI2RlZmlu
ZSBSRUdJU1RFUl9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKE5BTUUsIC4uLikgXAorICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCAjTkFNRSksIGNvbnN0cnVjdG9yICMjIE5BTUUsIERvbnRF
bnVtKTsKKyAgICBGT1JfRUFDSF9XQVNNX0NPTlNUUlVDVE9SX1BST1BFUlRZKFJFR0lTVEVSX1dB
U01fQ09OU1RSVUNUT1JfUFJPUEVSVFkpCisKKyNkZWZpbmUgUkVHSVNURVJfV0FTTV9GVU5DVElP
Tl9QUk9QRVJUWShOQU1FLCBMRU5HVEgpIFwKKyAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgI05BTUUpLCBMRU5H
VEgsIHdhc21PYmplY3RGdW5jICMjIE5BTUUsIE5vSW50cmluc2ljLCBEb250RW51bSk7CisgICAg
Rk9SX0VBQ0hfV0FTTV9GVU5DVElPTl9QUk9QRVJUWShSRUdJU1RFUl9XQVNNX0ZVTkNUSU9OX1BS
T1BFUlRZKQorfQorCitXZWJBc3NlbWJseU9iamVjdDo6V2ViQXNzZW1ibHlPYmplY3QoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVj
dHVyZSkKK3sKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVj
dG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2FzbU9iamVjdEZ1bmN2YWxp
ZGF0ZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3Ioc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSB2YWxp
ZGF0ZSBmdW5jdGlvbiBwcm9wZXJ0eSIpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdhc21PYmplY3RGdW5jY29tcGlsZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKHN0YXRlLCBz
Y29wZSwgY3JlYXRlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkgZG9lc24n
dCB5ZXQgaW1wbGVtZW50IHRoZSBjb21waWxlIGZ1bmN0aW9uIHByb3BlcnR5IikpKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2ViQXNzZW1ibHlPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFz
c2VtYmx5T2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU5NjM0
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2Vt
Ymx5T2JqZWN0LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFzc2VtYmx5T2JqZWN0IDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5T2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqKTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseU9iamVjdChWTSYsIFN0cnVjdHVyZSop
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTdmNzM0ZS4uMzZhNTlmYyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDE2
LTEwLTE0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWJB
c3NlbWJseSBKUyBBUEk6IGltcGxlbWVudCBiYXNpYyBzdHViCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBnbG9iYWwgV2ViQXNzZW1ibHkgSmF2YVNjcmlwdCBvYmplY3QsIGFuZCBpdHMgY29uc3Ry
dWN0b3IgKworICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbjoKKyAg
ICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVy
L0pTLm1kCisKKyAgICAgICAgVGhlc2UgZG9uJ3QgZG8gYW55dGhpbmcgYXQgdGhlIG1vbWVudCwg
dGhlIHBhcmVudCBidWcgd2lsbCB0YWtlIGNhcmUgb2YgYWRkaW5nCisgICAgICAgIG1vcmUgZnVu
Y3Rpb25hbGl0eSBhbmQgYXNzb2NpYXRlZCB0ZXN0cy4KKworICAgICAgICBXZWJBc3NlbWJseSBK
UyBBUEk6IGltcGxlbWVudCBiYXNpYyBzdHViCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBN
aWxsZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOiB1c2UgdGhl
IG5ldyBKU0Mgb3B0aW9uIHdoaWNoIGV4cG9zZXMgdGhlIFdlYkFzc2VtYmx5IG9iamVjdC4KKwor
MjAxNi0xMC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKICAgICAgICAg
QmFzaWMgV2ViQXNzZW1ibHkgdGVzdGluZwogCiAgICAgICAgIENyZWF0ZSBhIHNtYWxsIERTTCBp
biBKYXZhU2NyaXB0IHdoaWNoIGNhbiBidWlsZCBXZWJBc3NlbWJseSBiaW5hcnkgbW9kdWxlcyBi
YXNlZCBvbiB0aGUgSlNPTiBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0IGFzIGRlc2NyaWJlZCBp
bjoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29s
cy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IDBmNjhmZmQuLjAyYTA5MGQgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMv
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtMTE2MCw3ICsxMTYwLDcgQEAgZGVmIHJ1
bldlYkFzc2VtYmx5CiAgICAgbW9kdWxlcyA9IERpcltXQVNNVEVTVFNfUEFUSCArICIqLmpzIl0u
bWFwIHsgfGZ8IEZpbGUuYmFzZW5hbWUoZikgfQogICAgIHByZXBhcmVFeHRyYUFic29sdXRlRmls
ZXMoV0FTTVRFU1RTX1BBVEgsIFsid2FzbS5qc29uIl0pCiAgICAgcHJlcGFyZUV4dHJhUmVsYXRp
dmVGaWxlcyhtb2R1bGVzLm1hcCB7IHxmfCAiLi4vIiArIGYgfSwgJGNvbGxlY3Rpb24pCi0gICAg
cnVuKCJkZWZhdWx0LXdhc20iLCAiLW0iKQorICAgIHJ1bigiZGVmYXVsdC13YXNtIiwgIi1tIiwg
Ii0tdXNlV2ViQXNzZW1ibHk9MSIpCiBlbmQKIAogZGVmIHJ1bkNoYWtyYShtb2RlLCBleGNlcHRp
b24sIGJhc2VsaW5lRmlsZSwgZXh0cmFGaWxlcykKLS0gCjIuMTAuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>