<?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>148262</bug_id>
          
          <creation_ts>2015-08-20 16:20:26 -0700</creation_ts>
          <short_desc>Move std::function from JSFunction into NativeStdFunctionCell to correctly destroy the heap allocated std::function</short_desc>
          <delta_ts>2015-08-28 14:36:03 -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>148173</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1119429</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 16:20:26 -0700</bug_when>
    <thetext>JSStdFunction is now implemented in JSFunction.cpp.
And it has the memory leak; It does not have destroy method (and it&apos;s not destructible), but it has the std::function as the member.
Since std::function accepts the lambda, it allocates the memory from the heap. So we need to call the destructor onto this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119431</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 16:24:17 -0700</bug_when>
    <thetext>When I tried to use it to implement Asynchronous error reporting for the module loaders, I&apos;ve found the issue. So I created the separate patch.
https://bugs.webkit.org/show_bug.cgi?id=148173</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119511</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-20 18:00:26 -0700</bug_when>
    <thetext>Seems weird to move the std::function to the FunctionRareData.  We&apos;ll have to be careful, since we don&apos;t want to bloat FunctionRareData too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119575</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 19:11:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Seems weird to move the std::function to the FunctionRareData.  We&apos;ll have
&gt; to be careful, since we don&apos;t want to bloat FunctionRareData too much.

Yeah, you&apos;re right.
After starting the prototyping, I found that FunctionRareData is tightly coupled with the object allocation profile. Adding the non-related-to-profile data to it seems not good. I&apos;m now investigating the best way to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119579</commentid>
    <comment_count>4</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-20 19:15:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Seems weird to move the std::function to the FunctionRareData.  We&apos;ll have
&gt; &gt; to be careful, since we don&apos;t want to bloat FunctionRareData too much.
&gt; 
&gt; Yeah, you&apos;re right.
&gt; After starting the prototyping, I found that FunctionRareData is tightly
&gt; coupled with the object allocation profile. Adding the
&gt; non-related-to-profile data to it seems not good. I&apos;m now investigating the
&gt; best way to do.

Having a NativeStdFunctionCell that works like FunctionRareData but only for JSStdFunction was my other proposal. I suggested reusing FunctionRareData because I wasn&apos;t sure how much we wanted to keep it coupled with the object allocation profile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119599</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-20 19:48:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; Seems weird to move the std::function to the FunctionRareData.  We&apos;ll have
&gt; &gt; &gt; to be careful, since we don&apos;t want to bloat FunctionRareData too much.
&gt; &gt; 
&gt; &gt; Yeah, you&apos;re right.
&gt; &gt; After starting the prototyping, I found that FunctionRareData is tightly
&gt; &gt; coupled with the object allocation profile. Adding the
&gt; &gt; non-related-to-profile data to it seems not good. I&apos;m now investigating the
&gt; &gt; best way to do.
&gt; 
&gt; Having a NativeStdFunctionCell that works like FunctionRareData but only for
&gt; JSStdFunction was my other proposal. I suggested reusing FunctionRareData
&gt; because I wasn&apos;t sure how much we wanted to keep it coupled with the object
&gt; allocation profile.

It seems nice. Or creating the new Executable class (like NativeLambdaExecutable or something) that inherits NativeExecutable and holds std::function is one idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119600</commentid>
    <comment_count>6</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-20 19:52:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; Seems weird to move the std::function to the FunctionRareData.  We&apos;ll have
&gt; &gt; &gt; &gt; to be careful, since we don&apos;t want to bloat FunctionRareData too much.
&gt; &gt; &gt; 
&gt; &gt; &gt; Yeah, you&apos;re right.
&gt; &gt; &gt; After starting the prototyping, I found that FunctionRareData is tightly
&gt; &gt; &gt; coupled with the object allocation profile. Adding the
&gt; &gt; &gt; non-related-to-profile data to it seems not good. I&apos;m now investigating the
&gt; &gt; &gt; best way to do.
&gt; &gt; 
&gt; &gt; Having a NativeStdFunctionCell that works like FunctionRareData but only for
&gt; &gt; JSStdFunction was my other proposal. I suggested reusing FunctionRareData
&gt; &gt; because I wasn&apos;t sure how much we wanted to keep it coupled with the object
&gt; &gt; allocation profile.
&gt; 
&gt; It seems nice. Or creating the new Executable class (like
&gt; NativeLambdaExecutable or something) that inherits NativeExecutable and
&gt; holds std::function is one idea.

This is probably better, actually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119637</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-20 20:55:43 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; &gt; Seems weird to move the std::function to the FunctionRareData.  We&apos;ll have
&gt; &gt; &gt; &gt; &gt; to be careful, since we don&apos;t want to bloat FunctionRareData too much.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Yeah, you&apos;re right.
&gt; &gt; &gt; &gt; After starting the prototyping, I found that FunctionRareData is tightly
&gt; &gt; &gt; &gt; coupled with the object allocation profile. Adding the
&gt; &gt; &gt; &gt; non-related-to-profile data to it seems not good. I&apos;m now investigating the
&gt; &gt; &gt; &gt; best way to do.
&gt; &gt; &gt; 
&gt; &gt; &gt; Having a NativeStdFunctionCell that works like FunctionRareData but only for
&gt; &gt; &gt; JSStdFunction was my other proposal. I suggested reusing FunctionRareData
&gt; &gt; &gt; because I wasn&apos;t sure how much we wanted to keep it coupled with the object
&gt; &gt; &gt; allocation profile.
&gt; &gt; 
&gt; &gt; It seems nice. Or creating the new Executable class (like
&gt; &gt; NativeLambdaExecutable or something) that inherits NativeExecutable and
&gt; &gt; holds std::function is one idea.
&gt; 
&gt; This is probably better, actually.

Putting this in executable makes the most sense, IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121503</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-27 17:29:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Putting this in executable makes the most sense, IMO.

After investigating the code, I think holding NativeStdFunctionCell* in JSFunction is better than introducing NativeStdExecutable inheriting ExecutableBase (or NativeExecutable). Here is the reason.

1. Each NativeExecutable (in 64_32 JIT environment) has the trampoline to call the given host function. And this trampoline has the function address as the immediate value within the JIT-compiled trampoline code.
2. To suppress the overuse of the executable memory (which is used to generate the trampoline), NativeExecutable is cached. The host function address is used as the key to look up the cached executable from the table.
3. In all the JSStdFunction, we use the same host function that immediately calls the each std::function.
4. As a result, without any change, all the JSStdFunction hit the cached NativeExecutable even if the held std::function is different.
5. To solve it, if we put the std::function in the NativeExecutable, we need to add this std::function identity (like address) to the cache key to distinguish the NativeExecutables generated from the different JSStdFunctions, because the address of the stub host function (that calls the std::function) is the same in the all JSStdFunction.
6. But since the std::function will be allocated in the heap, this address is always different. So caching has no effect.
7. If we do not cache the NativeExecutable that holds the std::function, each time when creating the JSStdFunction, we need to regenerate the completely same trampolines (since it just calls the same host function stub that calls the std::function).

So I think separating the NativeExecutable from the std::function is preferable. By doing so, all the JSStdFunction can use the same NativeExecutable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121576</commentid>
    <comment_count>9</comment_count>
      <attachid>260122</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-27 22:13:05 -0700</bug_when>
    <thetext>Created attachment 260122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121581</commentid>
    <comment_count>10</comment_count>
      <attachid>260122</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-27 22:18:02 -0700</bug_when>
    <thetext>Comment on attachment 260122
Patch

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

&gt; Source/JavaScriptCore/runtime/JSArrowFunction.h:-52
&gt; -    

JSArrowFunction does not have any fields that need to be destructed. Just drop the `destroy` method.
Note:
Since JSFunction is not destructible object, this `destroy` is not called anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121585</commentid>
    <comment_count>11</comment_count>
      <attachid>260124</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-27 22:20:53 -0700</bug_when>
    <thetext>Created attachment 260124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121761</commentid>
    <comment_count>12</comment_count>
      <attachid>260167</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 11:17:33 -0700</bug_when>
    <thetext>Created attachment 260167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121788</commentid>
    <comment_count>13</comment_count>
      <attachid>260167</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-28 12:16:53 -0700</bug_when>
    <thetext>Comment on attachment 260167
Patch

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

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:107
&gt;  static EncodedJSValue JSC_HOST_CALL runStdFunction(ExecState* state)
&gt;  {
&gt; -    JSStdFunction* jsFunction = jsCast&lt;JSStdFunction*&gt;(state-&gt;callee());
&gt; +    JSNativeStdFunction* jsFunction = jsCast&lt;JSNativeStdFunction*&gt;(state-&gt;callee());
&gt;      ASSERT(jsFunction);
&gt; -    return jsFunction-&gt;stdFunction(state);
&gt; +    return jsFunction-&gt;nativeStdFunctionCell()-&gt;function()(state);
&gt;  }
&gt;  
&gt;  JSFunction* JSFunction::create(VM&amp; vm, JSGlobalObject* globalObject, int length, const String&amp; name, NativeStdFunction&amp;&amp; nativeStdFunction, Intrinsic intrinsic, NativeFunction nativeConstructor)
&gt;  {
&gt;      NativeExecutable* executable = getNativeExecutable(vm, runStdFunction, intrinsic, nativeConstructor);
&gt; -    JSStdFunction* function = new (NotNull, allocateCell&lt;JSStdFunction&gt;(vm.heap)) JSStdFunction(vm, globalObject, globalObject-&gt;functionStructure(), WTF::move(nativeStdFunction));
&gt; -    // Can&apos;t do this during initialization because getHostFunction might do a GC allocation.
&gt; -    function-&gt;finishCreation(vm, executable, length, name);
&gt; +    NativeStdFunctionCell* functionCell = NativeStdFunctionCell::create(vm, WTF::move(nativeStdFunction));
&gt; +    JSNativeStdFunction* function = new (NotNull, allocateCell&lt;JSNativeStdFunction&gt;(vm.heap)) JSNativeStdFunction(vm, globalObject, globalObject-&gt;nativeStdFunctionStructure());
&gt; +    function-&gt;finishCreation(vm, executable, length, name, functionCell);
&gt;      return function;

It&apos;s super weird that this code is in JSFunction and not in JSNativeStdFunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121789</commentid>
    <comment_count>14</comment_count>
      <attachid>260167</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 12:30:44 -0700</bug_when>
    <thetext>Comment on attachment 260167
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:107
&gt;&gt;      return function;
&gt; 
&gt; It&apos;s super weird that this code is in JSFunction and not in JSNativeStdFunction.

OK, I&apos;ll move it out from the JSFunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121817</commentid>
    <comment_count>15</comment_count>
      <attachid>260176</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-28 13:38:36 -0700</bug_when>
    <thetext>Created attachment 260176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121819</commentid>
    <comment_count>16</comment_count>
      <attachid>260176</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-28 13:46:21 -0700</bug_when>
    <thetext>Comment on attachment 260176
Patch

Great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121830</commentid>
    <comment_count>17</comment_count>
      <attachid>260176</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-28 14:35:58 -0700</bug_when>
    <thetext>Comment on attachment 260176
Patch

Clearing flags on attachment: 260176

Committed r189124: &lt;http://trac.webkit.org/changeset/189124&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121831</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-28 14:36:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260122</attachid>
            <date>2015-08-27 22:13:05 -0700</date>
            <delta_ts>2015-08-27 22:20:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148262-20150827221252.patch</filename>
            <type>text/plain</type>
            <size>36464</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NzgzODkzN2VlN2Q3NTZlNjQ5NDNlNGNkZjRjMGJkMzFjNjE5OTA5Li44NjkwNzY5ZThjNWU2YzA5
NGMyNWIxZTM5MGY2ZWNiODMxMmNlNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxNS0wOC0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNb3ZlIHN0ZDo6ZnVuY3Rpb24gZnJvbSBKU0Z1bmN0aW9uIGludG8g
TmF0aXZlU3RkRnVuY3Rpb25DZWxsIHRvIGNvcnJlY3RseSBkZXN0cm95IHRoZSBoZWFwIGFsbG9j
YXRlZCBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDgyNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBzdGQ6OmZ1bmN0aW9uIGlzIGhlYXAgYWxsb2NhdGVkIHZhbHVlLiBTbyBpZiB0
aGlzIGlzIGhlbGQgaW4gdGhlIEpTQ2VsbCwgdGhlIGNlbGwgc2hvdWxkIGJlIGRlc3RydWN0aWJs
ZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIGl0IGlzIGhlbGQgaW4gdGhlIEpTU3RkRnVu
Y3Rpb24uIEpTU3RkRnVuY3Rpb24gaXMgdGhlIGRlcml2ZWQgY2xhc3MgZnJvbSB0aGUgSlNGdW5j
dGlvbiwKKyAgICAgICAgYW5kIHRoZXkgYXJlIG5vdCBkZXN0cnVjdGlibGUuIFNvIGl0IGxlYWtl
ZCB0aGUgbWVtb3J5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMgc3RkOjpmdW5jdGlv
biBmaWVsZCBmcm9tIHRoZSBKU1N0ZEZ1bmN0aW9uIHRvIHRoZSBOYXRpdmVTdGRGdW5jdGlvbkNl
bGwuIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbAorICAgICAgICBpcyByZXNwb25zaWJsZSBmb3IgZGVz
dHJ1Y3RpbmcgdGhlIGhlbGQgc3RkOjpmdW5jdGlvbi4KKyAgICAgICAgSW5zdGVhZCBvZiBtb3Zp
bmcgc3RkOjpmdW5jdGlvbiB0byB0aGUgRXhlY3V0YWJsZUJhc2UsIHdlIG1vdmUgaXQgdG8gdGhl
IG5ld2x5IGNyZWF0ZWQgTmF0aXZlU3RkRnVuY3Rpb25DZWxsIGNlbGwuCisgICAgICAgIFRoZSBy
ZWFzb24gaXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAtIEVhY2ggTmF0aXZlRXhlY3V0YWJs
ZSAoaW4gNjRfMzIgSklUIGVudmlyb25tZW50KSBoYXMgdGhlIHRyYW1wb2xpbmVzIHRvIGNhbGwg
Z2l2ZW4gaG9zdCBmdW5jdGlvbnMuCisgICAgICAgICAgQW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBo
b3N0IGZ1bmN0aW9uIGlzIGRpcmVjdGx5IGVtYmVkZGVkIG9uIHRoZSBKSVQtY29tcGlsZWQgdHJh
bXBvbGluZSBjb2RlLgorICAgICAgICAtIFRvIHN1cHByZXNzIHRoZSBvdmVydXNlIG9mIHRoZSBl
eGVjdXRhYmxlIG1lbW9yeSAod2hpY2ggaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdHJhbXBvbGlu
ZSksIE5hdGl2ZUV4ZWN1dGFibGUKKyAgICAgICAgICBpcyBjYWNoZWQuIFRoZSBob3N0IGZ1bmN0
aW9uIGFkZHJlc3MgaXMgdXNlZCBhcyB0aGUga2V5IHRvIGxvb2sgdXAgdGhlIGNhY2hlZCBleGVj
dXRhYmxlIGZyb20gdGhlIHRhYmxlLgorICAgICAgICAtIEluIGFsbCB0aGUgSlNTdGRGdW5jdGlv
biwgd2UgdXNlIHRoZSBzYW1lIGhvc3QgZnVuY3Rpb24gdGhhdCBpbW1lZGlhdGVseSBjYWxscyB0
aGUgZWFjaCBzdGQ6OmZ1bmN0aW9uLgorICAgICAgICAtIEFzIGEgcmVzdWx0LCB3aXRob3V0IGFu
eSBjaGFuZ2UsIGFsbCB0aGUgSlNTdGRGdW5jdGlvbiBoaXQgdGhlIHNhbWUgY2FjaGVkIE5hdGl2
ZUV4ZWN1dGFibGUgZXZlbiBpZiB0aGUgaGVsZAorICAgICAgICAgIHN0ZDo6ZnVuY3Rpb24gaXMg
ZGlmZmVyZW50LgorICAgICAgICAtIFRvIHNvbHZlIGl0LCBpZiB3ZSBwdXQgdGhlIHN0ZDo6ZnVu
Y3Rpb24gaW4gdGhlIE5hdGl2ZUV4ZWN1dGFibGUsIHdlIG5lZWQgdG8gYWRkIHRoaXMgc3RkOjpm
dW5jdGlvbgorICAgICAgICAgIGlkZW50aXR5IChsaWtlIGFkZHJlc3MpIHRvIHRoZSBjYWNoZSBr
ZXksIGJlY2F1c2UgdGhlIGFkZHJlc3Mgb2YgdGhlIHN0dWIgaG9zdCBmdW5jdGlvbiAodGhhdCBj
YWxscyB0aGUKKyAgICAgICAgICBzdGQ6OmZ1bmN0aW9uKSBpcyB0aGUgc2FtZSBpbiB0aGUgYWxs
IEpTU3RkRnVuY3Rpb24uCisgICAgICAgIC0gQnV0IHNpbmNlIHRoZSBzdGQ6OmZ1bmN0aW9uIHdp
bGwgYmUgYWxsb2NhdGVkIGluIHRoZSBoZWFwLCB0aGlzIGFkZHJlc3MgaXMgYWx3YXlzIGRpZmZl
cmVudC4gU28gY2FjaGluZyBoYXMKKyAgICAgICAgICBubyBlZmZlY3QuCisgICAgICAgIC0gSWYg
d2UgZG8gbm90IGNhY2hlIHRoZSBOYXRpdmVFeGVjdXRhYmxlIHRoYXQgaG9sZHMgdGhlIHN0ZDo6
ZnVuY3Rpb24sIGVhY2ggdGltZSB3aGVuIGNyZWF0aW5nIHRoZSBKU1N0ZEZ1bmN0aW9uLAorICAg
ICAgICAgIHdlIG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgY29tcGxldGVseSBzYW1lIHRyYW1wb2xp
bmVzIChzaW5jZSBpdCBqdXN0IGNhbGxzIHRoZSBzYW1lIGhvc3QgZnVuY3Rpb24gc3R1YiB0aGF0
CisgICAgICAgICAgY2FsbHMgdGhlIHN0ZDo6ZnVuY3Rpb24pLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6cnVuU3RkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1N0ZEZ1bmN0aW9uOjpKU1N0ZEZ1
bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bmF0aXZlU3RkRnVuY3Rpb25T
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5j
cHAuCisgICAgICAgIChKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OkpTTmF0aXZlU3RkRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaC4KKyAgICAgICAgKEpTQzo6
SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNO
YXRpdmVTdGRGdW5jdGlvbjo6bmF0aXZlU3RkRnVuY3Rpb25DZWxsKToKKyAgICAgICAgKiBydW50
aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpOYXRp
dmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbDo6TmF0aXZlU3RkRnVuY3Rpb25DZWxsKToKKyAgICAgICAgKEpTQzo6TmF0aXZlU3Rk
RnVuY3Rpb25DZWxsOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTUtMDgtMjcgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0VTNl0gQWRkIFR5cGVkQXJyYXku
cHJvdG90eXBlIGZ1bmN0aW9uYWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggOTVlMzI2MmNjNWE1ZjA4ZjczYzM2NDY0NDRjYThjMDNjYzVmZjZhZS4uOTk2ZjgyMGEz
MTdmMTEyNDY4ZDFiMjg2NDM3MGYzYjZmMmVhMWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTM3LDYgKzUzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1F
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUvSlNNYXBJdGVyYXRv
ci5jcHAKICAgICBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorICAgIHJ1bnRpbWUvSlNOYXRp
dmVTdGRGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVu
dGltZS9KU09OT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC01NzUsNiAr
NTc2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUv
TmF0aXZlU3RkRnVuY3Rpb25DZWxsLmNwcAogICAgIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9u
LmNwcAogICAgIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvTnVt
YmVyQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpp
bmRleCA3MGNjZjRmMWY3ZDc5MTdlNjAxMmM1YmQ1ZDlhNmY4MDgzM2I3M2JkLi4xZTczNzMzMzhj
MDE3ZDIwMTFkNTZmZDdmNjYzNTlkYmY1YjBmNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKQEAgLTc4Niw2ICs3ODYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTWFwSXRlcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmNwcCIgLz4KQEAgLTgyNCw2ICs4MjUsNyBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJy
b3JQcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxO
YXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxOdWxsU2V0dGVyRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJDb25zdHJ1Y3Rvci5jcHAiIC8+CkBAIC0xNjM4LDYg
KzE2NDAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09OT2JqZWN0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmgiIC8+CkBAIC0x
Njg3LDYgKzE2OTAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNaWNy
b3Rhc2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxO
YXRpdmVFcnJvclByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXE51bGxTZXR0ZXJGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJDb25zdHJ1Y3Rvci5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGNkNjJmOTI0OTQz
NzQwNjE3YzFlYmQ4MDI2YTFhZTAyYWMxMzljNDMuLmVmNjhlNzdkZjQyNTdmZmVjNTkzNjQ2NWE0
MjYyNzQ0MzFjMDY2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKQEAgLTcyNiw2ICs3MjYsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU05vdEFuT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTgxMCw2ICs4MTMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yOTMwLDYgKzI5MzYsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5o
Ij4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmgiPgogICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zNDg5LDYg
KzM0OTgsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJl
Y29yZC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9u
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGVjYjcxNzBhNTdhYzAwNTdkYWE3NTEwNTY3M2YzMWViZGFkZTA5YWIuLjQy
MDMyZjUxMzkxY2U1M2RkN2MxYjllMWRjZWU1NDNiZTZkMmQzYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzA2LDYgKzE3MDYsMTAgQEAKIAkJRTMzNjM3QTUxQjYzMjIwMjAw
RUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3
QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKKwkJRTMzRThEMUMx
QjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUExQjkwMTNDMzAwMzQ2QjUy
IC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwICovOyB9OworCQlFMzNFOEQxRDFCOTAxM0MzMDAz
NDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZl
U3RkRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzNFOEQyMDFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0U4
RDFFMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwICovOyB9Owor
CQlFMzNFOEQyMTFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxRjFCOTAx
M0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwNzQxQjg0MjFDMDAwNDEzODU2
IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDcyMUI4NDIxQzAwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzM0Y1MDc1MUI4NDIxQzAwMDQx
Mzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwNzMxQjg0MjFDMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwNzgxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuY3BwICovOyB9OwpAQCAtMzU2Myw2ICszNTY3LDEwIEBACiAJCUUzMzYz
N0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRThEMUExQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZl
U3RkRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNO
YXRpdmVTdGRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0U4
RDFCMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTmF0aXZlU3RkRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRThEMUUxQjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRp
dmVTdGRGdW5jdGlvbkNlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNF
OEQxRjFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNGNTA3MjFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwNzYx
Qjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzc1LDYgKzQ3ODMsOCBA
QAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCiAJ
CQkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJ
CQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKKwkJCQlF
MzNFOEQxQTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgKi8sCisJ
CQkJRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCAqLywK
IAkJCQlBNzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8sCiAJ
CQkJQTcyNzAwNzcwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuaCAqLywKIAkJCQlC
QzIyQTM5ODBFMTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuY3BwICovLApAQCAtNDg2Miw2ICs0
ODcyLDggQEAKIAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJv
clByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMwMkU5MEIwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2
ZUVycm9yUHJvdG90eXBlLmggKi8sCisJCQkJRTMzRThEMUUxQjkwMTNERTAwMzQ2QjUyIC8qIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgKi8sCisJCQkJRTMzRThEMUYxQjkwMTNERTAwMzQ2QjUy
IC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oICovLAogCQkJCTY1NDZGNTFGMUEzMkE1OUMwMDZG
MDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwICovLAogCQkJCTY1NDZGNTIwMUEzMkE1OUMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQk2NTUyNUZDMzFBNkREM0Iz
MDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCAqLywKQEAgLTYzODAsNiArNjM5Miw3
IEBACiAJCQkJQTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTQwRTE2RjVDRDAwQjM0NDYw
IC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNFOEQxRDFCOTAxM0Mz
MDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDI5RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUVBNzBFOTE5RjVCMTAxMDA5OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjc0MSw2ICs2NzU0LDcgQEAKIAkJCQlBMUQ3OTJG
RDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzM0U4RDIxMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5j
dGlvbkNlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAv
KiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTc4
RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkIxNzY2MTE5NkI4RjlFMDA5MTA1MkEgLyogREZHSGVhcExvY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTc2ODgsNiArNzcwMiw3IEBACiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8q
IEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1
ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRThEMjAxQjkwMTNERTAwMzQ2QjUy
IC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkNGMzlD
MTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5RDAxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyQjY2RTIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03OTE1LDYgKzc5MzAsNyBAQAogCQkJCTUzRjI1NkUyMUI4N0UyODAw
MEI0Qjc2OCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOEYyQjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVT
dGRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBDRDRD
NDE1RjZCNkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjU1NDFCMTE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJv
d0Z1bmN0aW9uLmNwcAppbmRleCA5NTFjMjYwZTE2YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2Rm
NDg2Li45OGM2ZmE2YWI5NjZmY2VlM2RlYzg0YWRhNGViNzA1OWI0ZWI1YmE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTQw
LDExICs0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNBcnJvd0Z1
bmN0aW9uOjpzX2luZm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0Fycm93RnVuY3Rpb24pIH07CiAKLXZvaWQgSlNBcnJvd0Z1bmN0
aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2FzdDxKU0Fycm93RnVu
Y3Rpb24qPihjZWxsKS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7Ci19Ci0K
IEpTQXJyb3dGdW5jdGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhp
cykKIHsKICAgICBKU0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Fycm93RnVuY3Rpb24uaAppbmRleCA3ZjU2ZjY4ZWZlZWRkODIzMWEzNWIyZmMyNDlm
ZDgxYWM5N2Y1YjIzLi5hOTVhM2Y5NTY0NmE3YWI0ZTE3ZTdiOTJiNTg2N2YzN2ZhNDQxNDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaApA
QCAtNDgsOCArNDgsNiBAQCBjbGFzcyBKU0Fycm93RnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlv
biB7CiAgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rpb24q
IGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwotICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6
ZV90IGlubGluZUNhcGFjaXR5KQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVD
YXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMGY3MzU0ZWQ3YTZiZDFlM2U2NGIxODU4NTljMTRmMTUw
MzI2ZDQ1OC4uZTIxMDA5NDVjNDRkY2NjZDYwODJlYjAxYTRkNzMyMDg4YjA0MzU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM4LDggKzM4
LDEwIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCiAjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJQYXJzZXIuaCIKQEAgLTg5LDI4ICs5MSwxOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3Ro
LAogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAotY2xhc3MgSlNTdGRGdW5jdGlvbiA6IHB1Ymxp
YyBKU0Z1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBKU1N0ZEZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5hdGl2ZVN0ZEZ1bmN0aW9u
JiYgZnVuY3Rpb24pCi0gICAgICAgIDogSlNGdW5jdGlvbih2bSwgb2JqZWN0LCBzdHJ1Y3R1cmUp
Ci0gICAgICAgICwgc3RkRnVuY3Rpb24oV1RGOjptb3ZlKGZ1bmN0aW9uKSkgeyB9Ci0KLSAgICBO
YXRpdmVTdGRGdW5jdGlvbiBzdGRGdW5jdGlvbjsKLX07Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
SlNTdGRGdW5jdGlvbioganNGdW5jdGlvbiA9IGpzQ2FzdDxKU1N0ZEZ1bmN0aW9uKj4oc3RhdGUt
PmNhbGxlZSgpKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBqc0Z1bmN0aW9uID0ganNDYXN0
PEpTTmF0aXZlU3RkRnVuY3Rpb24qPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChqc0Z1
bmN0aW9uKTsKLSAgICByZXR1cm4ganNGdW5jdGlvbi0+c3RkRnVuY3Rpb24oc3RhdGUpOworICAg
IHJldHVybiBqc0Z1bmN0aW9uLT5uYXRpdmVTdGRGdW5jdGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShz
dGF0ZSk7CiB9CiAKIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwg
TmF0aXZlU3RkRnVuY3Rpb24mJiBuYXRpdmVTdGRGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUodm0sIHJ1blN0ZEZ1bmN0aW9u
LCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKLSAgICBKU1N0ZEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RkRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU1N0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgV1RGOjptb3ZlKG5hdGl2ZVN0ZEZ1bmN0aW9uKSk7Ci0gICAgLy8gQ2FuJ3Qg
ZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWln
aHQgZG8gYSBHQyBhbGxvY2F0aW9uLgotICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwg
ZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKKyAgICBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIGZ1
bmN0aW9uQ2VsbCA9IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKHZtLCBXVEY6Om1vdmUo
bmF0aXZlU3RkRnVuY3Rpb24pKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bmF0
aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9u
KHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUsIGZ1bmN0aW9uQ2VsbCk7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMjRiZmNiOWRjZWViYTgxN2Y1ZGFmZjkyMTE4NTA4ZGZiZmEy
NzZhMC4uMDdmYjlmYzM1ZDU2Nzk0YzgwNjgyYjczZDAyODk0OGE5MmQ1MTJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODUs
NiArODUsNyBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIK
ICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMjY5LDYgKzI3MCw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9uYXRpdmVTdGRGdW5jdGlvblN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlv
blN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsK
ICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24gPSAwOwpAQCAtODE4LDYgKzgyMCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5j
dGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRG
dW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJy
b3dGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDI2MTMxNmU4NWQyYmFmYmRlZDc4NDMwYjZm
OGY4ZWJhNWFkODc3NmUuLjFhNTI1MGM2N2NkMTQ2ZWZiY2ZkMTEyN2M1NzA2MzhhYTQxM2IxOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMjUyLDYgKzI1Miw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0
cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hdGl2ZVN0ZEZ1bmN0aW9u
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwpAQCAtNDg1LDYg
KzQ4Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJl
KiBuYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlU3Rk
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5j
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI3YWYyMDdmYzQzMDBlMzM5YmIxZDAyMzY1OGFmNzU5NjE1
YTczMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TmF0aXZlU3RkRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCisj
aW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOYXRpdmVTdGRGdW5jdGlvbikgfTsKKworSlNO
YXRpdmVTdGRGdW5jdGlvbjo6SlNOYXRpdmVTdGRGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNOYXRpdmVTdGRGdW5jdGlv
bjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOYXRpdmVTdGRG
dW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ2VsbCk7Cit9CisK
K3ZvaWQgSlNOYXRpdmVTdGRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVF
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKyAgICBtX2Z1bmN0aW9uQ2VsbC5zZXQodm0sIHRoaXMsIGZ1bmN0aW9uQ2Vs
bCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxNzM5NmU3NmEz
ZGQwMTEyYWJiZGQyYTAxMDFjYmZhMGI4MDk3MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSlNOYXRpdmVTdGRGdW5jdGlvbl9oCisjZGVmaW5lIEpTTmF0aXZlU3RkRnVuY3Rpb25faAor
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisKK2NsYXNz
IEpTTmF0aXZlU3RkRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNs
YXNzIEpTRnVuY3Rpb247CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisK
KyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qp
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogbmF0aXZlU3RkRnVuY3Rpb25D
ZWxsKCkgeyByZXR1cm4gbV9mdW5jdGlvbkNlbGwuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqKTsKKworcHJpdmF0ZToK
KyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKKworICAgIFdyaXRlQmFycmllcjxOYXRpdmVTdGRGdW5jdGlvbkNlbGw+IG1fZnVuY3Rpb25D
ZWxsOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU05hdGl2ZVN0ZEZ1
bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVTdGRGdW5jdGlvbkNlbGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YjFiMzMwOTVkYjcyN2NiM2Q1ZWY2
OGExNjVkZjJhMmYwYjQ0YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCisKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OnNfaW5m
byA9IHsgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoTmF0aXZlU3RkRnVuY3Rpb25DZWxsKSB9OworCitOYXRpdmVTdGRGdW5jdGlv
bkNlbGwqIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKFZNJiB2bSwgTmF0aXZlU3RkRnVu
Y3Rpb24mJiBmdW5jdGlvbikKK3sKKyAgICBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIG5hdGl2ZUZ1
bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlU3RkRnVuY3Rpb25DZWxs
Pih2bS5oZWFwKSkgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKHZtLCBXVEY6Om1vdmUoZnVuY3Rpb24p
KTsKKyAgICBuYXRpdmVGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBu
YXRpdmVGdW5jdGlvbjsKK30KKworCitOYXRpdmVTdGRGdW5jdGlvbkNlbGw6Ok5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbChWTSYgdm0sIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgZnVuY3Rpb24pCisgICAgOiBC
YXNlKHZtLCB2bS5uYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBt
X2Z1bmN0aW9uKFdURjo6bW92ZShmdW5jdGlvbikpCit7Cit9CisKK3ZvaWQgTmF0aXZlU3RkRnVu
Y3Rpb25DZWxsOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBOYXRpdmVTdGRGdW5jdGlv
bkNlbGwqIG5hdGl2ZUZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8TmF0aXZlU3RkRnVuY3Rpb25DZWxs
Kj4oY2VsbCk7CisgICAgbmF0aXZlRnVuY3Rpb24tPk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6fk5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYTNh
OGE0N2ZkODNhYWY0MDNlN2EyYTk1N2Q0NDM3NjZhNTQ1Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVTdGRGdW5jdGlvbkNlbGwuaApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBOYXRpdmVTdGRGdW5jdGlvbkNlbGxfaAorI2RlZmluZSBOYXRpdmVTdGRGdW5j
dGlvbkNlbGxfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTmF0aXZlU3RkRnVuY3Rpb25DZWxsIDogcHVi
bGljIEpTQ2VsbCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKiBjcmVhdGUo
Vk0mLCBOYXRpdmVTdGRGdW5jdGlvbiYmKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworCisgICAgY29uc3QgTmF0aXZlU3RkRnVuY3Rpb24mIGZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQorCitwcml2YXRlOgorICAgIE5hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbChWTSYsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYpOworCisgICAgTmF0aXZl
U3RkRnVuY3Rpb24gbV9mdW5jdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gTmF0aXZlU3RkRnVuY3Rpb25DZWxsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCA1YWY2Y2FmMjdkMzU5ZDkxZjQ3YzExNTY0NzU4NDIwOGI3ZjA0OTc2Li45MDMy
NmNjNzIxNGFkN2U0MTZiYTEzMTRkOGRmYTMxYTczMTQ5ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNp
bmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCisjaW5jbHVkZSAiTmF0aXZl
U3RkRnVuY3Rpb25DZWxsLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXIu
aCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCkBAIC0yNDAsNiArMjQxLDcgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaXRlcmF0aW9uVGVybWluYXRvci5zZXQoKnRoaXMs
IEpTRmluYWxPYmplY3Q6OmNyZWF0ZSgqdGhpcywgSlNGaW5hbE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSwgMSkpKTsKKyAgICBuYXRpdmVTdGRGdW5jdGlvbkNlbGxT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlhbGl6ZUNvbW1v
blN0cmluZ3MoKnRoaXMpOwogCiAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRBdG9taWNT
dHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggYmY5MjViNTk1ZjkyMzkzNjJlZjg3OTE3MDNjM2U1MGEyNzJh
YzI4Mi4uNGZiY2IwYjhmMTg5NWQzNjUyMGQ4YTZiMjQzZDcyMjY5MTRkYWYxOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0yOTcsNiArMjk3LDcgQEAgY2xhc3MgVk0gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNl
cHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVj
dHVyZTsKICAgICBTdHJvbmc8SlNDZWxsPiBpdGVyYXRpb25UZXJtaW5hdG9yOwogICAgIFN0cm9u
ZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260124</attachid>
            <date>2015-08-27 22:20:53 -0700</date>
            <delta_ts>2015-08-28 11:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148262-20150827222040.patch</filename>
            <type>text/plain</type>
            <size>36496</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NzgzODkzN2VlN2Q3NTZlNjQ5NDNlNGNkZjRjMGJkMzFjNjE5OTA5Li44NjkwNzY5ZThjNWU2YzA5
NGMyNWIxZTM5MGY2ZWNiODMxMmNlNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxNS0wOC0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNb3ZlIHN0ZDo6ZnVuY3Rpb24gZnJvbSBKU0Z1bmN0aW9uIGludG8g
TmF0aXZlU3RkRnVuY3Rpb25DZWxsIHRvIGNvcnJlY3RseSBkZXN0cm95IHRoZSBoZWFwIGFsbG9j
YXRlZCBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDgyNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBzdGQ6OmZ1bmN0aW9uIGlzIGhlYXAgYWxsb2NhdGVkIHZhbHVlLiBTbyBpZiB0
aGlzIGlzIGhlbGQgaW4gdGhlIEpTQ2VsbCwgdGhlIGNlbGwgc2hvdWxkIGJlIGRlc3RydWN0aWJs
ZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIGl0IGlzIGhlbGQgaW4gdGhlIEpTU3RkRnVu
Y3Rpb24uIEpTU3RkRnVuY3Rpb24gaXMgdGhlIGRlcml2ZWQgY2xhc3MgZnJvbSB0aGUgSlNGdW5j
dGlvbiwKKyAgICAgICAgYW5kIHRoZXkgYXJlIG5vdCBkZXN0cnVjdGlibGUuIFNvIGl0IGxlYWtl
ZCB0aGUgbWVtb3J5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMgc3RkOjpmdW5jdGlv
biBmaWVsZCBmcm9tIHRoZSBKU1N0ZEZ1bmN0aW9uIHRvIHRoZSBOYXRpdmVTdGRGdW5jdGlvbkNl
bGwuIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbAorICAgICAgICBpcyByZXNwb25zaWJsZSBmb3IgZGVz
dHJ1Y3RpbmcgdGhlIGhlbGQgc3RkOjpmdW5jdGlvbi4KKyAgICAgICAgSW5zdGVhZCBvZiBtb3Zp
bmcgc3RkOjpmdW5jdGlvbiB0byB0aGUgRXhlY3V0YWJsZUJhc2UsIHdlIG1vdmUgaXQgdG8gdGhl
IG5ld2x5IGNyZWF0ZWQgTmF0aXZlU3RkRnVuY3Rpb25DZWxsIGNlbGwuCisgICAgICAgIFRoZSBy
ZWFzb24gaXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAtIEVhY2ggTmF0aXZlRXhlY3V0YWJs
ZSAoaW4gNjRfMzIgSklUIGVudmlyb25tZW50KSBoYXMgdGhlIHRyYW1wb2xpbmVzIHRvIGNhbGwg
Z2l2ZW4gaG9zdCBmdW5jdGlvbnMuCisgICAgICAgICAgQW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBo
b3N0IGZ1bmN0aW9uIGlzIGRpcmVjdGx5IGVtYmVkZGVkIG9uIHRoZSBKSVQtY29tcGlsZWQgdHJh
bXBvbGluZSBjb2RlLgorICAgICAgICAtIFRvIHN1cHByZXNzIHRoZSBvdmVydXNlIG9mIHRoZSBl
eGVjdXRhYmxlIG1lbW9yeSAod2hpY2ggaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdHJhbXBvbGlu
ZSksIE5hdGl2ZUV4ZWN1dGFibGUKKyAgICAgICAgICBpcyBjYWNoZWQuIFRoZSBob3N0IGZ1bmN0
aW9uIGFkZHJlc3MgaXMgdXNlZCBhcyB0aGUga2V5IHRvIGxvb2sgdXAgdGhlIGNhY2hlZCBleGVj
dXRhYmxlIGZyb20gdGhlIHRhYmxlLgorICAgICAgICAtIEluIGFsbCB0aGUgSlNTdGRGdW5jdGlv
biwgd2UgdXNlIHRoZSBzYW1lIGhvc3QgZnVuY3Rpb24gdGhhdCBpbW1lZGlhdGVseSBjYWxscyB0
aGUgZWFjaCBzdGQ6OmZ1bmN0aW9uLgorICAgICAgICAtIEFzIGEgcmVzdWx0LCB3aXRob3V0IGFu
eSBjaGFuZ2UsIGFsbCB0aGUgSlNTdGRGdW5jdGlvbiBoaXQgdGhlIHNhbWUgY2FjaGVkIE5hdGl2
ZUV4ZWN1dGFibGUgZXZlbiBpZiB0aGUgaGVsZAorICAgICAgICAgIHN0ZDo6ZnVuY3Rpb24gaXMg
ZGlmZmVyZW50LgorICAgICAgICAtIFRvIHNvbHZlIGl0LCBpZiB3ZSBwdXQgdGhlIHN0ZDo6ZnVu
Y3Rpb24gaW4gdGhlIE5hdGl2ZUV4ZWN1dGFibGUsIHdlIG5lZWQgdG8gYWRkIHRoaXMgc3RkOjpm
dW5jdGlvbgorICAgICAgICAgIGlkZW50aXR5IChsaWtlIGFkZHJlc3MpIHRvIHRoZSBjYWNoZSBr
ZXksIGJlY2F1c2UgdGhlIGFkZHJlc3Mgb2YgdGhlIHN0dWIgaG9zdCBmdW5jdGlvbiAodGhhdCBj
YWxscyB0aGUKKyAgICAgICAgICBzdGQ6OmZ1bmN0aW9uKSBpcyB0aGUgc2FtZSBpbiB0aGUgYWxs
IEpTU3RkRnVuY3Rpb24uCisgICAgICAgIC0gQnV0IHNpbmNlIHRoZSBzdGQ6OmZ1bmN0aW9uIHdp
bGwgYmUgYWxsb2NhdGVkIGluIHRoZSBoZWFwLCB0aGlzIGFkZHJlc3MgaXMgYWx3YXlzIGRpZmZl
cmVudC4gU28gY2FjaGluZyBoYXMKKyAgICAgICAgICBubyBlZmZlY3QuCisgICAgICAgIC0gSWYg
d2UgZG8gbm90IGNhY2hlIHRoZSBOYXRpdmVFeGVjdXRhYmxlIHRoYXQgaG9sZHMgdGhlIHN0ZDo6
ZnVuY3Rpb24sIGVhY2ggdGltZSB3aGVuIGNyZWF0aW5nIHRoZSBKU1N0ZEZ1bmN0aW9uLAorICAg
ICAgICAgIHdlIG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgY29tcGxldGVseSBzYW1lIHRyYW1wb2xp
bmVzIChzaW5jZSBpdCBqdXN0IGNhbGxzIHRoZSBzYW1lIGhvc3QgZnVuY3Rpb24gc3R1YiB0aGF0
CisgICAgICAgICAgY2FsbHMgdGhlIHN0ZDo6ZnVuY3Rpb24pLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6cnVuU3RkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1N0ZEZ1bmN0aW9uOjpKU1N0ZEZ1
bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bmF0aXZlU3RkRnVuY3Rpb25T
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5j
cHAuCisgICAgICAgIChKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OkpTTmF0aXZlU3RkRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaC4KKyAgICAgICAgKEpTQzo6
SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNO
YXRpdmVTdGRGdW5jdGlvbjo6bmF0aXZlU3RkRnVuY3Rpb25DZWxsKToKKyAgICAgICAgKiBydW50
aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpOYXRp
dmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbDo6TmF0aXZlU3RkRnVuY3Rpb25DZWxsKToKKyAgICAgICAgKEpTQzo6TmF0aXZlU3Rk
RnVuY3Rpb25DZWxsOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTUtMDgtMjcgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0VTNl0gQWRkIFR5cGVkQXJyYXku
cHJvdG90eXBlIGZ1bmN0aW9uYWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggOTVlMzI2MmNjNWE1ZjA4ZjczYzM2NDY0NDRjYThjMDNjYzVmZjZhZS4uOTk2ZjgyMGEz
MTdmMTEyNDY4ZDFiMjg2NDM3MGYzYjZmMmVhMWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTM3LDYgKzUzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1F
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUvSlNNYXBJdGVyYXRv
ci5jcHAKICAgICBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorICAgIHJ1bnRpbWUvSlNOYXRp
dmVTdGRGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVu
dGltZS9KU09OT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC01NzUsNiAr
NTc2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUv
TmF0aXZlU3RkRnVuY3Rpb25DZWxsLmNwcAogICAgIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9u
LmNwcAogICAgIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvTnVt
YmVyQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpp
bmRleCA3MGNjZjRmMWY3ZDc5MTdlNjAxMmM1YmQ1ZDlhNmY4MDgzM2I3M2JkLi4xZTczNzMzMzhj
MDE3ZDIwMTFkNTZmZDdmNjYzNTlkYmY1YjBmNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKQEAgLTc4Niw2ICs3ODYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTWFwSXRlcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmNwcCIgLz4KQEAgLTgyNCw2ICs4MjUsNyBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJy
b3JQcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxO
YXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxOdWxsU2V0dGVyRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJDb25zdHJ1Y3Rvci5jcHAiIC8+CkBAIC0xNjM4LDYg
KzE2NDAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09OT2JqZWN0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmgiIC8+CkBAIC0x
Njg3LDYgKzE2OTAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNaWNy
b3Rhc2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxO
YXRpdmVFcnJvclByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXE51bGxTZXR0ZXJGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJDb25zdHJ1Y3Rvci5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGNkNjJmOTI0OTQz
NzQwNjE3YzFlYmQ4MDI2YTFhZTAyYWMxMzljNDMuLmVmNjhlNzdkZjQyNTdmZmVjNTkzNjQ2NWE0
MjYyNzQ0MzFjMDY2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKQEAgLTcyNiw2ICs3MjYsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU05vdEFuT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTgxMCw2ICs4MTMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yOTMwLDYgKzI5MzYsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5o
Ij4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmgiPgogICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zNDg5LDYg
KzM0OTgsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJl
Y29yZC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9u
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGVjYjcxNzBhNTdhYzAwNTdkYWE3NTEwNTY3M2YzMWViZGFkZTA5YWIuLjQy
MDMyZjUxMzkxY2U1M2RkN2MxYjllMWRjZWU1NDNiZTZkMmQzYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzA2LDYgKzE3MDYsMTAgQEAKIAkJRTMzNjM3QTUxQjYzMjIwMjAw
RUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3
QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKKwkJRTMzRThEMUMx
QjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUExQjkwMTNDMzAwMzQ2QjUy
IC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwICovOyB9OworCQlFMzNFOEQxRDFCOTAxM0MzMDAz
NDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZl
U3RkRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzNFOEQyMDFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0U4
RDFFMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwICovOyB9Owor
CQlFMzNFOEQyMTFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxRjFCOTAx
M0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwNzQxQjg0MjFDMDAwNDEzODU2
IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDcyMUI4NDIxQzAwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzM0Y1MDc1MUI4NDIxQzAwMDQx
Mzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwNzMxQjg0MjFDMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwNzgxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuY3BwICovOyB9OwpAQCAtMzU2Myw2ICszNTY3LDEwIEBACiAJCUUzMzYz
N0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRThEMUExQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZl
U3RkRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNO
YXRpdmVTdGRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0U4
RDFCMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTmF0aXZlU3RkRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRThEMUUxQjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRp
dmVTdGRGdW5jdGlvbkNlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNF
OEQxRjFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNGNTA3MjFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwNzYx
Qjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzc1LDYgKzQ3ODMsOCBA
QAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCiAJ
CQkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJ
CQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKKwkJCQlF
MzNFOEQxQTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgKi8sCisJ
CQkJRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCAqLywK
IAkJCQlBNzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8sCiAJ
CQkJQTcyNzAwNzcwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuaCAqLywKIAkJCQlC
QzIyQTM5ODBFMTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuY3BwICovLApAQCAtNDg2Miw2ICs0
ODcyLDggQEAKIAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJv
clByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMwMkU5MEIwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2
ZUVycm9yUHJvdG90eXBlLmggKi8sCisJCQkJRTMzRThEMUUxQjkwMTNERTAwMzQ2QjUyIC8qIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgKi8sCisJCQkJRTMzRThEMUYxQjkwMTNERTAwMzQ2QjUy
IC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oICovLAogCQkJCTY1NDZGNTFGMUEzMkE1OUMwMDZG
MDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwICovLAogCQkJCTY1NDZGNTIwMUEzMkE1OUMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQk2NTUyNUZDMzFBNkREM0Iz
MDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCAqLywKQEAgLTYzODAsNiArNjM5Miw3
IEBACiAJCQkJQTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTQwRTE2RjVDRDAwQjM0NDYw
IC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNFOEQxRDFCOTAxM0Mz
MDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDI5RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUVBNzBFOTE5RjVCMTAxMDA5OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjc0MSw2ICs2NzU0LDcgQEAKIAkJCQlBMUQ3OTJG
RDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzM0U4RDIxMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5j
dGlvbkNlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAv
KiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTc4
RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkIxNzY2MTE5NkI4RjlFMDA5MTA1MkEgLyogREZHSGVhcExvY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTc2ODgsNiArNzcwMiw3IEBACiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8q
IEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1
ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRThEMjAxQjkwMTNERTAwMzQ2QjUy
IC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkNGMzlD
MTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5RDAxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyQjY2RTIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03OTE1LDYgKzc5MzAsNyBAQAogCQkJCTUzRjI1NkUyMUI4N0UyODAw
MEI0Qjc2OCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOEYyQjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVT
dGRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBDRDRD
NDE1RjZCNkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjU1NDFCMTE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJv
d0Z1bmN0aW9uLmNwcAppbmRleCA5NTFjMjYwZTE2YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2Rm
NDg2Li45OGM2ZmE2YWI5NjZmY2VlM2RlYzg0YWRhNGViNzA1OWI0ZWI1YmE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTQw
LDExICs0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNBcnJvd0Z1
bmN0aW9uOjpzX2luZm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0Fycm93RnVuY3Rpb24pIH07CiAKLXZvaWQgSlNBcnJvd0Z1bmN0
aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2FzdDxKU0Fycm93RnVu
Y3Rpb24qPihjZWxsKS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7Ci19Ci0K
IEpTQXJyb3dGdW5jdGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhp
cykKIHsKICAgICBKU0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Fycm93RnVuY3Rpb24uaAppbmRleCA3ZjU2ZjY4ZWZlZWRkODIzMWEzNWIyZmMyNDlm
ZDgxYWM5N2Y1YjIzLi5hOTVhM2Y5NTY0NmE3YWI0ZTE3ZTdiOTJiNTg2N2YzN2ZhNDQxNDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaApA
QCAtNDgsOCArNDgsNiBAQCBjbGFzcyBKU0Fycm93RnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlv
biB7CiAgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rpb24q
IGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwotICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6
ZV90IGlubGluZUNhcGFjaXR5KQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVD
YXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMGY3MzU0ZWQ3YTZiZDFlM2U2NGIxODU4NTljMTRmMTUw
MzI2ZDQ1OC4uZTIxMDA5NDVjNDRkY2NjZDYwODJlYjAxYTRkNzMyMDg4YjA0MzU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM4LDggKzM4
LDEwIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCiAjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJQYXJzZXIuaCIKQEAgLTg5LDI4ICs5MSwxOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3Ro
LAogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAotY2xhc3MgSlNTdGRGdW5jdGlvbiA6IHB1Ymxp
YyBKU0Z1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBKU1N0ZEZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5hdGl2ZVN0ZEZ1bmN0aW9u
JiYgZnVuY3Rpb24pCi0gICAgICAgIDogSlNGdW5jdGlvbih2bSwgb2JqZWN0LCBzdHJ1Y3R1cmUp
Ci0gICAgICAgICwgc3RkRnVuY3Rpb24oV1RGOjptb3ZlKGZ1bmN0aW9uKSkgeyB9Ci0KLSAgICBO
YXRpdmVTdGRGdW5jdGlvbiBzdGRGdW5jdGlvbjsKLX07Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
SlNTdGRGdW5jdGlvbioganNGdW5jdGlvbiA9IGpzQ2FzdDxKU1N0ZEZ1bmN0aW9uKj4oc3RhdGUt
PmNhbGxlZSgpKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBqc0Z1bmN0aW9uID0ganNDYXN0
PEpTTmF0aXZlU3RkRnVuY3Rpb24qPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChqc0Z1
bmN0aW9uKTsKLSAgICByZXR1cm4ganNGdW5jdGlvbi0+c3RkRnVuY3Rpb24oc3RhdGUpOworICAg
IHJldHVybiBqc0Z1bmN0aW9uLT5uYXRpdmVTdGRGdW5jdGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShz
dGF0ZSk7CiB9CiAKIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwg
TmF0aXZlU3RkRnVuY3Rpb24mJiBuYXRpdmVTdGRGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUodm0sIHJ1blN0ZEZ1bmN0aW9u
LCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKLSAgICBKU1N0ZEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RkRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU1N0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgV1RGOjptb3ZlKG5hdGl2ZVN0ZEZ1bmN0aW9uKSk7Ci0gICAgLy8gQ2FuJ3Qg
ZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWln
aHQgZG8gYSBHQyBhbGxvY2F0aW9uLgotICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwg
ZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKKyAgICBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIGZ1
bmN0aW9uQ2VsbCA9IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKHZtLCBXVEY6Om1vdmUo
bmF0aXZlU3RkRnVuY3Rpb24pKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bmF0
aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9u
KHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUsIGZ1bmN0aW9uQ2VsbCk7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMjRiZmNiOWRjZWViYTgxN2Y1ZGFmZjkyMTE4NTA4ZGZiZmEy
NzZhMC4uMDdmYjlmYzM1ZDU2Nzk0YzgwNjgyYjczZDAyODk0OGE5MmQ1MTJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODUs
NiArODUsNyBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIK
ICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMjY5LDYgKzI3MCw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9uYXRpdmVTdGRGdW5jdGlvblN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlv
blN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsK
ICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24gPSAwOwpAQCAtODE4LDYgKzgyMCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5j
dGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRG
dW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJy
b3dGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDI2MTMxNmU4NWQyYmFmYmRlZDc4NDMwYjZm
OGY4ZWJhNWFkODc3NmUuLjFhNTI1MGM2N2NkMTQ2ZWZiY2ZkMTEyN2M1NzA2MzhhYTQxM2IxOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMjUyLDYgKzI1Miw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0
cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hdGl2ZVN0ZEZ1bmN0aW9u
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwpAQCAtNDg1LDYg
KzQ4Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJl
KiBuYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlU3Rk
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5j
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI3YWYyMDdmYzQzMDBlMzM5YmIxZDAyMzY1OGFmNzU5NjE1
YTczMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TmF0aXZlU3RkRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCisj
aW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOYXRpdmVTdGRGdW5jdGlvbikgfTsKKworSlNO
YXRpdmVTdGRGdW5jdGlvbjo6SlNOYXRpdmVTdGRGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNOYXRpdmVTdGRGdW5jdGlv
bjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOYXRpdmVTdGRG
dW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ2VsbCk7Cit9CisK
K3ZvaWQgSlNOYXRpdmVTdGRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVF
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKyAgICBtX2Z1bmN0aW9uQ2VsbC5zZXQodm0sIHRoaXMsIGZ1bmN0aW9uQ2Vs
bCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxNzM5NmU3NmEz
ZGQwMTEyYWJiZGQyYTAxMDFjYmZhMGI4MDk3MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSlNOYXRpdmVTdGRGdW5jdGlvbl9oCisjZGVmaW5lIEpTTmF0aXZlU3RkRnVuY3Rpb25faAor
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisKK2NsYXNz
IEpTTmF0aXZlU3RkRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNs
YXNzIEpTRnVuY3Rpb247CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisK
KyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qp
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogbmF0aXZlU3RkRnVuY3Rpb25D
ZWxsKCkgeyByZXR1cm4gbV9mdW5jdGlvbkNlbGwuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqKTsKKworcHJpdmF0ZToK
KyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKKworICAgIFdyaXRlQmFycmllcjxOYXRpdmVTdGRGdW5jdGlvbkNlbGw+IG1fZnVuY3Rpb25D
ZWxsOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU05hdGl2ZVN0ZEZ1
bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVTdGRGdW5jdGlvbkNlbGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjNDMzYWM5YmVhMzBmYjU0MGViNzVk
MzJmZjVjZjNkZmY5NDAxYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCisKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6c19pbmZvID0geyAiTmF0aXZlU3RkRnVuY3Rpb25D
ZWxsIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVTdGRGdW5j
dGlvbkNlbGwpIH07CisKK05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogTmF0aXZlU3RkRnVuY3Rpb25D
ZWxsOjpjcmVhdGUoVk0mIHZtLCBOYXRpdmVTdGRGdW5jdGlvbiYmIGZ1bmN0aW9uKQoreworICAg
IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogbmF0aXZlRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxOYXRpdmVTdGRGdW5jdGlvbkNlbGw+KHZtLmhlYXApKSBOYXRpdmVTdGRGdW5j
dGlvbkNlbGwodm0sIFdURjo6bW92ZShmdW5jdGlvbikpOworICAgIG5hdGl2ZUZ1bmN0aW9uLT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG5hdGl2ZUZ1bmN0aW9uOworfQorCisKK05h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6TmF0aXZlU3RkRnVuY3Rpb25DZWxsKFZNJiB2bSwgTmF0aXZl
U3RkRnVuY3Rpb24mJiBmdW5jdGlvbikKKyAgICA6IEJhc2Uodm0sIHZtLm5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbFN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fZnVuY3Rpb24oV1RGOjptb3ZlKGZ1bmN0
aW9uKSkKK3sKK30KKwordm9pZCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmRlc3Ryb3koSlNDZWxs
KiBjZWxsKQoreworICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogbmF0aXZlRnVuY3Rpb24gPSBz
dGF0aWNfY2FzdDxOYXRpdmVTdGRGdW5jdGlvbkNlbGwqPihjZWxsKTsKKyAgICBuYXRpdmVGdW5j
dGlvbi0+TmF0aXZlU3RkRnVuY3Rpb25DZWxsOjp+TmF0aXZlU3RkRnVuY3Rpb25DZWxsKCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZVN0
ZEZ1bmN0aW9uQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlU3Rk
RnVuY3Rpb25DZWxsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NhM2E4YTQ3ZmQ4M2FhZjQwM2U3YTJhOTU3ZDQ0
Mzc2NmE1NDVjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbF9oCisjZGVmaW5lIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbF9oCisKKyNpbmNsdWRlICJK
U0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBOYXRpdmVTdGRGdW5jdGlvbkNlbGwgOiBwdWJsaWMgSlNDZWxsIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKworICAgIHN0YXRp
YyBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIGNyZWF0ZShWTSYsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYp
OworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBjb25zdCBOYXRpdmVTdGRGdW5jdGlvbiYgZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKFZNJiwgTmF0
aXZlU3RkRnVuY3Rpb24mJik7CisKKyAgICBOYXRpdmVTdGRGdW5jdGlvbiBtX2Z1bmN0aW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBOYXRpdmVTdGRGdW5jdGlvbkNl
bGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDVhZjZjYWYyN2QzNTlk
OTFmNDdjMTE1NjQ3NTg0MjA4YjdmMDQ5NzYuLjkwMzI2Y2M3MjE0YWQ3ZTQxNmJhMTMxNGQ4ZGZh
MzFhNzMxNDlkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTcwLDYg
KzcwLDcgQEAKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1
ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRlICJOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIKICNpbmNs
dWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0
YWJhc2UuaCIKQEAgLTI0MCw2ICsyNDEsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQ
cm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBpdGVyYXRpb25UZXJtaW5hdG9yLnNldCgqdGhpcywgSlNGaW5hbE9iamVjdDo6Y3JlYXRlKCp0
aGlzLCBKU0ZpbmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpLCAx
KSkpOworICAgIG5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHNtYWxsU3RyaW5ncy5pbml0aWFsaXplQ29tbW9uU3RyaW5ncygqdGhpcyk7CiAKICAgICB3
dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudEF0b21pY1N0cmluZ1RhYmxlKGV4aXN0aW5nRW50cnlB
dG9taWNTdHJpbmdUYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiZjky
NWI1OTVmOTIzOTM2MmVmODc5MTcwM2MzZTUwYTI3MmFjMjgyLi40ZmJjYjBiOGYxODk1ZDM2NTIw
ZDhhNmIyNDNkNzIyNjkxNGRhZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTI5Nyw2ICsyOTcsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxW
TT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVj
dHVyZT4gbmF0aXZlU3RkRnVuY3Rpb25DZWxsU3RydWN0dXJlOwogICAgIFN0cm9uZzxKU0NlbGw+
IGl0ZXJhdGlvblRlcm1pbmF0b3I7CiAgICAgU3Ryb25nPEpTQ2VsbD4gZW1wdHlQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260167</attachid>
            <date>2015-08-28 11:17:33 -0700</date>
            <delta_ts>2015-08-28 13:38:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148262-20150828111719.patch</filename>
            <type>text/plain</type>
            <size>36529</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NzgzODkzN2VlN2Q3NTZlNjQ5NDNlNGNkZjRjMGJkMzFjNjE5OTA5Li5kN2Y0NTM3YTlkMzQzYjEz
ZDk1N2ZiOThlYjEyM2MwOGIyNTY2NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxNS0wOC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNb3ZlIHN0ZDo6ZnVuY3Rpb24gZnJvbSBKU0Z1bmN0aW9uIGludG8g
TmF0aXZlU3RkRnVuY3Rpb25DZWxsIHRvIGNvcnJlY3RseSBkZXN0cm95IHRoZSBoZWFwIGFsbG9j
YXRlZCBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDgyNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBzdGQ6OmZ1bmN0aW9uIGlzIGhlYXAgYWxsb2NhdGVkIHZhbHVlLiBTbyBpZiB0
aGlzIGlzIGhlbGQgaW4gdGhlIEpTQ2VsbCwgdGhlIGNlbGwgc2hvdWxkIGJlIGRlc3RydWN0aWJs
ZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIGl0IGlzIGhlbGQgaW4gdGhlIEpTU3RkRnVu
Y3Rpb24uIEpTU3RkRnVuY3Rpb24gaXMgdGhlIGRlcml2ZWQgY2xhc3MgZnJvbSB0aGUgSlNGdW5j
dGlvbiwKKyAgICAgICAgYW5kIHRoZXkgYXJlIG5vdCBkZXN0cnVjdGlibGUuIFNvIGl0IGxlYWtl
ZCB0aGUgbWVtb3J5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMgc3RkOjpmdW5jdGlv
biBmaWVsZCBmcm9tIHRoZSBKU1N0ZEZ1bmN0aW9uIHRvIHRoZSBOYXRpdmVTdGRGdW5jdGlvbkNl
bGwuIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbAorICAgICAgICBpcyByZXNwb25zaWJsZSBmb3IgZGVz
dHJ1Y3RpbmcgdGhlIGhlbGQgc3RkOjpmdW5jdGlvbi4KKyAgICAgICAgSW5zdGVhZCBvZiBtb3Zp
bmcgc3RkOjpmdW5jdGlvbiB0byB0aGUgRXhlY3V0YWJsZUJhc2UsIHdlIG1vdmUgaXQgdG8gdGhl
IG5ld2x5IGNyZWF0ZWQgTmF0aXZlU3RkRnVuY3Rpb25DZWxsIGNlbGwuCisgICAgICAgIFRoZSBy
ZWFzb24gaXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAtIEVhY2ggTmF0aXZlRXhlY3V0YWJs
ZSAoaW4gNjRfMzIgSklUIGVudmlyb25tZW50KSBoYXMgdGhlIHRyYW1wb2xpbmVzIHRvIGNhbGwg
Z2l2ZW4gaG9zdCBmdW5jdGlvbnMuCisgICAgICAgICAgQW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBo
b3N0IGZ1bmN0aW9uIGlzIGRpcmVjdGx5IGVtYmVkZGVkIG9uIHRoZSBKSVQtY29tcGlsZWQgdHJh
bXBvbGluZSBjb2RlLgorICAgICAgICAtIFRvIHN1cHByZXNzIHRoZSBvdmVydXNlIG9mIHRoZSBl
eGVjdXRhYmxlIG1lbW9yeSAod2hpY2ggaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdHJhbXBvbGlu
ZSksIE5hdGl2ZUV4ZWN1dGFibGUKKyAgICAgICAgICBpcyBjYWNoZWQuIFRoZSBob3N0IGZ1bmN0
aW9uIGFkZHJlc3MgaXMgdXNlZCBhcyB0aGUga2V5IHRvIGxvb2sgdXAgdGhlIGNhY2hlZCBleGVj
dXRhYmxlIGZyb20gdGhlIHRhYmxlLgorICAgICAgICAtIEluIGFsbCB0aGUgSlNTdGRGdW5jdGlv
biwgd2UgdXNlIHRoZSBzYW1lIGhvc3QgZnVuY3Rpb24gdGhhdCBpbW1lZGlhdGVseSBjYWxscyB0
aGUgZWFjaCBzdGQ6OmZ1bmN0aW9uLgorICAgICAgICAtIEFzIGEgcmVzdWx0LCB3aXRob3V0IGFu
eSBjaGFuZ2UsIGFsbCB0aGUgSlNTdGRGdW5jdGlvbiBoaXQgdGhlIHNhbWUgY2FjaGVkIE5hdGl2
ZUV4ZWN1dGFibGUgZXZlbiBpZiB0aGUgaGVsZAorICAgICAgICAgIHN0ZDo6ZnVuY3Rpb24gaXMg
ZGlmZmVyZW50LgorICAgICAgICAtIFRvIHNvbHZlIGl0LCBpZiB3ZSBwdXQgdGhlIHN0ZDo6ZnVu
Y3Rpb24gaW4gdGhlIE5hdGl2ZUV4ZWN1dGFibGUsIHdlIG5lZWQgdG8gYWRkIHRoaXMgc3RkOjpm
dW5jdGlvbgorICAgICAgICAgIGlkZW50aXR5IChsaWtlIGFkZHJlc3MpIHRvIHRoZSBjYWNoZSBr
ZXksIGJlY2F1c2UgdGhlIGFkZHJlc3Mgb2YgdGhlIHN0dWIgaG9zdCBmdW5jdGlvbiAodGhhdCBj
YWxscyB0aGUKKyAgICAgICAgICBzdGQ6OmZ1bmN0aW9uKSBpcyB0aGUgc2FtZSBpbiB0aGUgYWxs
IEpTU3RkRnVuY3Rpb24uCisgICAgICAgIC0gQnV0IHNpbmNlIHRoZSBzdGQ6OmZ1bmN0aW9uIHdp
bGwgYmUgYWxsb2NhdGVkIGluIHRoZSBoZWFwLCB0aGlzIGFkZHJlc3MgaXMgYWx3YXlzIGRpZmZl
cmVudC4gU28gY2FjaGluZyBoYXMKKyAgICAgICAgICBubyBlZmZlY3QuCisgICAgICAgIC0gSWYg
d2UgZG8gbm90IGNhY2hlIHRoZSBOYXRpdmVFeGVjdXRhYmxlIHRoYXQgaG9sZHMgdGhlIHN0ZDo6
ZnVuY3Rpb24sIGVhY2ggdGltZSB3aGVuIGNyZWF0aW5nIHRoZSBKU1N0ZEZ1bmN0aW9uLAorICAg
ICAgICAgIHdlIG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgY29tcGxldGVseSBzYW1lIHRyYW1wb2xp
bmVzIChzaW5jZSBpdCBqdXN0IGNhbGxzIHRoZSBzYW1lIGhvc3QgZnVuY3Rpb24gc3R1YiB0aGF0
CisgICAgICAgICAgY2FsbHMgdGhlIHN0ZDo6ZnVuY3Rpb24pLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Fycm93RnVuY3Rpb246OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6cnVuU3RkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1N0ZEZ1bmN0aW9uOjpKU1N0ZEZ1
bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bmF0aXZlU3RkRnVuY3Rpb25T
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5j
cHAuCisgICAgICAgIChKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OkpTTmF0aXZlU3RkRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaC4KKyAgICAgICAgKEpTQzo6
SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNO
YXRpdmVTdGRGdW5jdGlvbjo6bmF0aXZlU3RkRnVuY3Rpb25DZWxsKToKKyAgICAgICAgKiBydW50
aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpOYXRp
dmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbDo6TmF0aXZlU3RkRnVuY3Rpb25DZWxsKToKKyAgICAgICAgKEpTQzo6TmF0aXZlU3Rk
RnVuY3Rpb25DZWxsOjpkZXN0cm95KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZN
KToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTUtMDgtMjcgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgW0VTNl0gQWRkIFR5cGVkQXJyYXku
cHJvdG90eXBlIGZ1bmN0aW9uYWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggOTVlMzI2MmNjNWE1ZjA4ZjczYzM2NDY0NDRjYThjMDNjYzVmZjZhZS4uOTk2ZjgyMGEz
MTdmMTEyNDY4ZDFiMjg2NDM3MGYzYjZmMmVhMWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTM3LDYgKzUzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1F
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUvSlNNYXBJdGVyYXRv
ci5jcHAKICAgICBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorICAgIHJ1bnRpbWUvSlNOYXRp
dmVTdGRGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVu
dGltZS9KU09OT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC01NzUsNiAr
NTc2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUv
TmF0aXZlU3RkRnVuY3Rpb25DZWxsLmNwcAogICAgIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9u
LmNwcAogICAgIHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvTnVt
YmVyQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpp
bmRleCA3MGNjZjRmMWY3ZDc5MTdlNjAxMmM1YmQ1ZDlhNmY4MDgzM2I3M2JkLi4xZTczNzMzMzhj
MDE3ZDIwMTFkNTZmZDdmNjYzNTlkYmY1YjBmNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKQEAgLTc4Niw2ICs3ODYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTWFwSXRlcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmNwcCIgLz4KQEAgLTgyNCw2ICs4MjUsNyBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJy
b3JQcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxO
YXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxOdWxsU2V0dGVyRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJDb25zdHJ1Y3Rvci5jcHAiIC8+CkBAIC0xNjM4LDYg
KzE2NDAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09OT2JqZWN0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmgiIC8+CkBAIC0x
Njg3LDYgKzE2OTAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNaWNy
b3Rhc2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxO
YXRpdmVFcnJvclByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXE51bGxTZXR0ZXJGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxOdW1iZXJDb25zdHJ1Y3Rvci5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGNkNjJmOTI0OTQz
NzQwNjE3YzFlYmQ4MDI2YTFhZTAyYWMxMzljNDMuLmVmNjhlNzdkZjQyNTdmZmVjNTkzNjQ2NWE0
MjYyNzQ0MzFjMDY2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKQEAgLTcyNiw2ICs3MjYsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU05vdEFuT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTgxMCw2ICs4MTMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yOTMwLDYgKzI5MzYsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5o
Ij4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmgiPgogICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zNDg5LDYg
KzM0OTgsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJl
Y29yZC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9u
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGVjYjcxNzBhNTdhYzAwNTdkYWE3NTEwNTY3M2YzMWViZGFkZTA5YWIuLjQy
MDMyZjUxMzkxY2U1M2RkN2MxYjllMWRjZWU1NDNiZTZkMmQzYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzA2LDYgKzE3MDYsMTAgQEAKIAkJRTMzNjM3QTUxQjYzMjIwMjAw
RUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3
QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKKwkJRTMzRThEMUMx
QjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUExQjkwMTNDMzAwMzQ2QjUy
IC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwICovOyB9OworCQlFMzNFOEQxRDFCOTAxM0MzMDAz
NDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZl
U3RkRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzNFOEQyMDFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0U4
RDFFMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwICovOyB9Owor
CQlFMzNFOEQyMTFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxRjFCOTAx
M0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwNzQxQjg0MjFDMDAwNDEzODU2
IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDcyMUI4NDIxQzAwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzM0Y1MDc1MUI4NDIxQzAwMDQx
Mzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwNzMxQjg0MjFDMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwNzgxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IuY3BwICovOyB9OwpAQCAtMzU2Myw2ICszNTY3LDEwIEBACiAJCUUzMzYz
N0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRThEMUExQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZl
U3RkRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNO
YXRpdmVTdGRGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0U4
RDFCMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTmF0aXZlU3RkRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRThEMUUxQjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRp
dmVTdGRGdW5jdGlvbkNlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNF
OEQxRjFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNGNTA3MjFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwNzYx
Qjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzc1LDYgKzQ3ODMsOCBA
QAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCiAJ
CQkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJ
CQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKKwkJCQlF
MzNFOEQxQTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgKi8sCisJ
CQkJRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCAqLywK
IAkJCQlBNzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8sCiAJ
CQkJQTcyNzAwNzcwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuaCAqLywKIAkJCQlC
QzIyQTM5ODBFMTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuY3BwICovLApAQCAtNDg2Miw2ICs0
ODcyLDggQEAKIAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJv
clByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQkMwMkU5MEIwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2
ZUVycm9yUHJvdG90eXBlLmggKi8sCisJCQkJRTMzRThEMUUxQjkwMTNERTAwMzQ2QjUyIC8qIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgKi8sCisJCQkJRTMzRThEMUYxQjkwMTNERTAwMzQ2QjUy
IC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oICovLAogCQkJCTY1NDZGNTFGMUEzMkE1OUMwMDZG
MDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwICovLAogCQkJCTY1NDZGNTIwMUEzMkE1OUMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQk2NTUyNUZDMzFBNkREM0Iz
MDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCAqLywKQEAgLTYzODAsNiArNjM5Miw3
IEBACiAJCQkJQTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTQwRTE2RjVDRDAwQjM0NDYw
IC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNFOEQxRDFCOTAxM0Mz
MDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDI5RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUVBNzBFOTE5RjVCMTAxMDA5OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjc0MSw2ICs2NzU0LDcgQEAKIAkJCQlBMUQ3OTJG
RDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzM0U4RDIxMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5j
dGlvbkNlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAv
KiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTc4
RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkIxNzY2MTE5NkI4RjlFMDA5MTA1MkEgLyogREZHSGVhcExvY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTc2ODgsNiArNzcwMiw3IEBACiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8q
IEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MEI3RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1
ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRThEMjAxQjkwMTNERTAwMzQ2QjUy
IC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkNGMzlD
MTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5RDAxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyQjY2RTIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03OTE1LDYgKzc5MzAsNyBAQAogCQkJCTUzRjI1NkUyMUI4N0UyODAw
MEI0Qjc2OCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOEYyQjlFMTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVT
dGRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBDRDRD
NDE1RjZCNkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjU1NDFCMTE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Fycm93RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJv
d0Z1bmN0aW9uLmNwcAppbmRleCA5NTFjMjYwZTE2YTIwZTJiODQwOWFlYmI5YTJlNTlkYjliM2Rm
NDg2Li45OGM2ZmE2YWI5NjZmY2VlM2RlYzg0YWRhNGViNzA1OWI0ZWI1YmE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKQEAgLTQw
LDExICs0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNBcnJvd0Z1
bmN0aW9uOjpzX2luZm8gPSB7ICJBcnJvd0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU0Fycm93RnVuY3Rpb24pIH07CiAKLXZvaWQgSlNBcnJvd0Z1bmN0
aW9uOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2FzdDxKU0Fycm93RnVu
Y3Rpb24qPihjZWxsKS0+SlNBcnJvd0Z1bmN0aW9uOjp+SlNBcnJvd0Z1bmN0aW9uKCk7Ci19Ci0K
IEpTQXJyb3dGdW5jdGlvbiogSlNBcnJvd0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlIGJvdW5kVGhp
cykKIHsKICAgICBKU0Fycm93RnVuY3Rpb24qIHJlc3VsdCA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBib3VuZFRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Fycm93RnVuY3Rpb24uaAppbmRleCA3ZjU2ZjY4ZWZlZWRkODIzMWEzNWIyZmMyNDlm
ZDgxYWM5N2Y1YjIzLi5hOTVhM2Y5NTY0NmE3YWI0ZTE3ZTdiOTJiNTg2N2YzN2ZhNDQxNDJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uaApA
QCAtNDgsOCArNDgsNiBAQCBjbGFzcyBKU0Fycm93RnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlv
biB7CiAgICAgc3RhdGljIEpTQXJyb3dGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgSlNTY29wZSosIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0Fycm93RnVuY3Rpb24q
IGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgSlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwotICAgIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6
ZV90IGlubGluZUNhcGFjaXR5KQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVD
YXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMGY3MzU0ZWQ3YTZiZDFlM2U2NGIxODU4NTljMTRmMTUw
MzI2ZDQ1OC4uZTIxMDA5NDVjNDRkY2NjZDYwODJlYjAxYTRkNzMyMDg4YjA0MzU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM4LDggKzM4
LDEwIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU05hdGl2ZVN0
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCiAjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJQYXJzZXIuaCIKQEAgLTg5LDI4ICs5MSwxOSBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3Ro
LAogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAotY2xhc3MgSlNTdGRGdW5jdGlvbiA6IHB1Ymxp
YyBKU0Z1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBKU1N0ZEZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5hdGl2ZVN0ZEZ1bmN0aW9u
JiYgZnVuY3Rpb24pCi0gICAgICAgIDogSlNGdW5jdGlvbih2bSwgb2JqZWN0LCBzdHJ1Y3R1cmUp
Ci0gICAgICAgICwgc3RkRnVuY3Rpb24oV1RGOjptb3ZlKGZ1bmN0aW9uKSkgeyB9Ci0KLSAgICBO
YXRpdmVTdGRGdW5jdGlvbiBzdGRGdW5jdGlvbjsKLX07Ci0KIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
SlNTdGRGdW5jdGlvbioganNGdW5jdGlvbiA9IGpzQ2FzdDxKU1N0ZEZ1bmN0aW9uKj4oc3RhdGUt
PmNhbGxlZSgpKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBqc0Z1bmN0aW9uID0ganNDYXN0
PEpTTmF0aXZlU3RkRnVuY3Rpb24qPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChqc0Z1
bmN0aW9uKTsKLSAgICByZXR1cm4ganNGdW5jdGlvbi0+c3RkRnVuY3Rpb24oc3RhdGUpOworICAg
IHJldHVybiBqc0Z1bmN0aW9uLT5uYXRpdmVTdGRGdW5jdGlvbkNlbGwoKS0+ZnVuY3Rpb24oKShz
dGF0ZSk7CiB9CiAKIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwg
TmF0aXZlU3RkRnVuY3Rpb24mJiBuYXRpdmVTdGRGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUodm0sIHJ1blN0ZEZ1bmN0aW9u
LCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKLSAgICBKU1N0ZEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RkRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU1N0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKSwgV1RGOjptb3ZlKG5hdGl2ZVN0ZEZ1bmN0aW9uKSk7Ci0gICAgLy8gQ2FuJ3Qg
ZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWln
aHQgZG8gYSBHQyBhbGxvY2F0aW9uLgotICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwg
ZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKKyAgICBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIGZ1
bmN0aW9uQ2VsbCA9IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKHZtLCBXVEY6Om1vdmUo
bmF0aXZlU3RkRnVuY3Rpb24pKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bmF0
aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9u
KHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUsIGZ1bmN0aW9uQ2VsbCk7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMjRiZmNiOWRjZWViYTgxN2Y1ZGFmZjkyMTE4NTA4ZGZiZmEy
NzZhMC4uMDdmYjlmYzM1ZDU2Nzk0YzgwNjgyYjczZDAyODk0OGE5MmQ1MTJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODUs
NiArODUsNyBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIK
ICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMjY5LDYgKzI3MCw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZnVuY3Rpb25TdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU0Fycm93RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9uYXRpdmVTdGRGdW5jdGlvblN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbmFtZWRGdW5jdGlv
blN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSwgbV9mdW5jdGlvbk5hbWVPZmZzZXQpKTsK
ICAgICBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24gPSAwOwpAQCAtODE4LDYgKzgyMCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5j
dGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRG
dW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJy
b3dGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDI2MTMxNmU4NWQyYmFmYmRlZDc4NDMwYjZm
OGY4ZWJhNWFkODc3NmUuLjFhNTI1MGM2N2NkMTQ2ZWZiY2ZkMTEyN2M1NzA2MzhhYTQxM2IxOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMjUyLDYgKzI1Miw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZnVuY3Rp
b25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyb3dGdW5jdGlvblN0
cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX25hdGl2ZVN0ZEZ1bmN0aW9u
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmFtZWRGdW5jdGlvblN0
cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwpAQCAtNDg1LDYg
KzQ4Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogZnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBib3VuZEZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhcnJvd0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJl
KiBuYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlU3Rk
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hbWVkRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVu
Y3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5j
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI3YWYyMDdmYzQzMDBlMzM5YmIxZDAyMzY1OGFmNzU5NjE1
YTczMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TmF0aXZlU3RkRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCisj
aW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOYXRpdmVTdGRGdW5jdGlvbikgfTsKKworSlNO
YXRpdmVTdGRGdW5jdGlvbjo6SlNOYXRpdmVTdGRGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSlNOYXRpdmVTdGRGdW5jdGlv
bjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOYXRpdmVTdGRG
dW5jdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ2VsbCk7Cit9CisK
K3ZvaWQgSlNOYXRpdmVTdGRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVF
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogZnVuY3Rpb25DZWxsKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKyAgICBtX2Z1bmN0aW9uQ2VsbC5zZXQodm0sIHRoaXMsIGZ1bmN0aW9uQ2Vs
bCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxNzM5NmU3NmEz
ZGQwMTEyYWJiZGQyYTAxMDFjYmZhMGI4MDk3MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSlNOYXRpdmVTdGRGdW5jdGlvbl9oCisjZGVmaW5lIEpTTmF0aXZlU3RkRnVuY3Rpb25faAor
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisKK2NsYXNz
IEpTTmF0aXZlU3RkRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNs
YXNzIEpTRnVuY3Rpb247CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisK
KyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qp
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCogbmF0aXZlU3RkRnVuY3Rpb25D
ZWxsKCkgeyByZXR1cm4gbV9mdW5jdGlvbkNlbGwuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqKTsKKworcHJpdmF0ZToK
KyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKKworICAgIFdyaXRlQmFycmllcjxOYXRpdmVTdGRGdW5jdGlvbkNlbGw+IG1fZnVuY3Rpb25D
ZWxsOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU05hdGl2ZVN0ZEZ1
bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVTdGRGdW5jdGlvbkNlbGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMGMxODE5ZjFmZjA2OTk0NmM2Y2Vh
MTM2Nzg1MWU3NmRmZmNkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCisKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bDo6c19pbmZvID0geyAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsIiwgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShOYXRpdmVTdGRGdW5jdGlvbkNlbGwpIH07CisKK05hdGl2ZVN0
ZEZ1bmN0aW9uQ2VsbCogTmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpjcmVhdGUoVk0mIHZtLCBOYXRp
dmVTdGRGdW5jdGlvbiYmIGZ1bmN0aW9uKQoreworICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCog
bmF0aXZlRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVTdGRGdW5j
dGlvbkNlbGw+KHZtLmhlYXApKSBOYXRpdmVTdGRGdW5jdGlvbkNlbGwodm0sIFdURjo6bW92ZShm
dW5jdGlvbikpOworICAgIG5hdGl2ZUZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIG5hdGl2ZUZ1bmN0aW9uOworfQorCisKK05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6TmF0
aXZlU3RkRnVuY3Rpb25DZWxsKFZNJiB2bSwgTmF0aXZlU3RkRnVuY3Rpb24mJiBmdW5jdGlvbikK
KyAgICA6IEJhc2Uodm0sIHZtLm5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbFN0cnVjdHVyZS5nZXQoKSkK
KyAgICAsIG1fZnVuY3Rpb24oV1RGOjptb3ZlKGZ1bmN0aW9uKSkKK3sKK30KKwordm9pZCBOYXRp
dmVTdGRGdW5jdGlvbkNlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIE5hdGl2ZVN0
ZEZ1bmN0aW9uQ2VsbCogbmF0aXZlRnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxOYXRpdmVTdGRGdW5j
dGlvbkNlbGwqPihjZWxsKTsKKyAgICBuYXRpdmVGdW5jdGlvbi0+TmF0aXZlU3RkRnVuY3Rpb25D
ZWxsOjp+TmF0aXZlU3RkRnVuY3Rpb25DZWxsKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2NhM2E4YTQ3ZmQ4M2FhZjQwM2U3YTJhOTU3ZDQ0Mzc2NmE1NDVjZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbF9oCisjZGVmaW5lIE5hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbF9oCisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBOYXRpdmVTdGRGdW5jdGlvbkNl
bGwgOiBwdWJsaWMgSlNDZWxsIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKKworICAgIHN0YXRpYyBOYXRpdmVTdGRGdW5jdGlvbkNlbGwq
IGNyZWF0ZShWTSYsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYpOworCisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBjb25zdCBOYXRpdmVTdGRGdW5jdGlv
biYgZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisKK3ByaXZhdGU6Cisg
ICAgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKFZNJiwgTmF0aXZlU3RkRnVuY3Rpb24mJik7CisKKyAg
ICBOYXRpdmVTdGRGdW5jdGlvbiBtX2Z1bmN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBOYXRpdmVTdGRGdW5jdGlvbkNlbGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCmluZGV4IDVhZjZjYWYyN2QzNTlkOTFmNDdjMTE1NjQ3NTg0MjA4YjdmMDQ5
NzYuLjkwMzI2Y2M3MjE0YWQ3ZTQxNmJhMTMxNGQ4ZGZhMzFhNzMxNDlkMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJMZXhl
ci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKKyNpbmNsdWRl
ICJOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKQEAgLTI0MCw2ICsyNDEs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgcHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpdGVyYXRpb25UZXJtaW5hdG9yLnNl
dCgqdGhpcywgSlNGaW5hbE9iamVjdDo6Y3JlYXRlKCp0aGlzLCBKU0ZpbmFsT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpLCAxKSkpOworICAgIG5hdGl2ZVN0ZEZ1bmN0
aW9uQ2VsbFN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNtYWxsU3RyaW5ncy5pbml0aWFs
aXplQ29tbW9uU3RyaW5ncygqdGhpcyk7CiAKICAgICB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVu
dEF0b21pY1N0cmluZ1RhYmxlKGV4aXN0aW5nRW50cnlBdG9taWNTdHJpbmdUYWJsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiZjkyNWI1OTVmOTIzOTM2MmVmODc5MTcwM2Mz
ZTUwYTI3MmFjMjgyLi40ZmJjYjBiOGYxODk1ZDM2NTIwZDhhNmIyNDNkNzIyNjkxNGRhZjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTI5Nyw2ICsyOTcsNyBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gbmF0aXZlU3RkRnVuY3Rpb25D
ZWxsU3RydWN0dXJlOwogICAgIFN0cm9uZzxKU0NlbGw+IGl0ZXJhdGlvblRlcm1pbmF0b3I7CiAg
ICAgU3Ryb25nPEpTQ2VsbD4gZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260176</attachid>
            <date>2015-08-28 13:38:36 -0700</date>
            <delta_ts>2015-08-28 14:35:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148262-20150828133823.patch</filename>
            <type>text/plain</type>
            <size>46681</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YTg3ZjUxNjYyMzQxNmRhMzQ0MGZjMjQ5ZDVlY2NkYWFmMTQ5ZTc3Li40MjIwMDRhZGI1YjcxY2I2
MTBhOTQxZmU2MGUwMTdkYmYxMmJiNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNS0wOC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBNb3ZlIHN0ZDo6ZnVuY3Rpb24gZnJvbSBKU0Z1bmN0aW9uIGludG8g
TmF0aXZlU3RkRnVuY3Rpb25DZWxsIHRvIGNvcnJlY3RseSBkZXN0cm95IHRoZSBoZWFwIGFsbG9j
YXRlZCBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDgyNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBzdGQ6OmZ1bmN0aW9uIGlzIGhlYXAgYWxsb2NhdGVkIHZhbHVlLiBTbyBpZiB0
aGlzIGlzIGhlbGQgaW4gdGhlIEpTQ2VsbCwgdGhlIGNlbGwgc2hvdWxkIGJlIGRlc3RydWN0aWJs
ZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIGl0IGlzIGhlbGQgaW4gdGhlIEpTU3RkRnVu
Y3Rpb24uIEpTU3RkRnVuY3Rpb24gaXMgdGhlIGRlcml2ZWQgY2xhc3MgZnJvbSB0aGUgSlNGdW5j
dGlvbiwKKyAgICAgICAgYW5kIHRoZXkgYXJlIG5vdCBkZXN0cnVjdGlibGUuIFNvIGl0IGxlYWtl
ZCB0aGUgbWVtb3J5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZXh0cmFjdHMgc3RkOjpmdW5jdGlv
biBmaWVsZCBmcm9tIHRoZSBKU1N0ZEZ1bmN0aW9uIHRvIHRoZSBOYXRpdmVTdGRGdW5jdGlvbkNl
bGwuIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbAorICAgICAgICBpcyByZXNwb25zaWJsZSBmb3IgZGVz
dHJ1Y3RpbmcgdGhlIGhlbGQgc3RkOjpmdW5jdGlvbi4KKyAgICAgICAgSW5zdGVhZCBvZiBtb3Zp
bmcgc3RkOjpmdW5jdGlvbiB0byB0aGUgRXhlY3V0YWJsZUJhc2UsIHdlIG1vdmUgaXQgdG8gdGhl
IG5ld2x5IGNyZWF0ZWQgTmF0aXZlU3RkRnVuY3Rpb25DZWxsIGNlbGwuCisgICAgICAgIFRoZSBy
ZWFzb24gaXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAtIEVhY2ggTmF0aXZlRXhlY3V0YWJs
ZSAoaW4gNjRfMzIgSklUIGVudmlyb25tZW50KSBoYXMgdGhlIHRyYW1wb2xpbmVzIHRvIGNhbGwg
Z2l2ZW4gaG9zdCBmdW5jdGlvbnMuCisgICAgICAgICAgQW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBo
b3N0IGZ1bmN0aW9uIGlzIGRpcmVjdGx5IGVtYmVkZGVkIG9uIHRoZSBKSVQtY29tcGlsZWQgdHJh
bXBvbGluZSBjb2RlLgorICAgICAgICAtIFRvIHN1cHByZXNzIHRoZSBvdmVydXNlIG9mIHRoZSBl
eGVjdXRhYmxlIG1lbW9yeSAod2hpY2ggaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdHJhbXBvbGlu
ZSksIE5hdGl2ZUV4ZWN1dGFibGUKKyAgICAgICAgICBpcyBjYWNoZWQuIFRoZSBob3N0IGZ1bmN0
aW9uIGFkZHJlc3MgaXMgdXNlZCBhcyB0aGUga2V5IHRvIGxvb2sgdXAgdGhlIGNhY2hlZCBleGVj
dXRhYmxlIGZyb20gdGhlIHRhYmxlLgorICAgICAgICAtIEluIGFsbCB0aGUgSlNTdGRGdW5jdGlv
biwgd2UgdXNlIHRoZSBzYW1lIGhvc3QgZnVuY3Rpb24gdGhhdCBpbW1lZGlhdGVseSBjYWxscyB0
aGUgZWFjaCBzdGQ6OmZ1bmN0aW9uLgorICAgICAgICAtIEFzIGEgcmVzdWx0LCB3aXRob3V0IGFu
eSBjaGFuZ2UsIGFsbCB0aGUgSlNTdGRGdW5jdGlvbiBoaXQgdGhlIHNhbWUgY2FjaGVkIE5hdGl2
ZUV4ZWN1dGFibGUgZXZlbiBpZiB0aGUgaGVsZAorICAgICAgICAgIHN0ZDo6ZnVuY3Rpb24gaXMg
ZGlmZmVyZW50LgorICAgICAgICAtIFRvIHNvbHZlIGl0LCBpZiB3ZSBwdXQgdGhlIHN0ZDo6ZnVu
Y3Rpb24gaW4gdGhlIE5hdGl2ZUV4ZWN1dGFibGUsIHdlIG5lZWQgdG8gYWRkIHRoaXMgc3RkOjpm
dW5jdGlvbgorICAgICAgICAgIGlkZW50aXR5IChsaWtlIGFkZHJlc3MpIHRvIHRoZSBjYWNoZSBr
ZXksIGJlY2F1c2UgdGhlIGFkZHJlc3Mgb2YgdGhlIHN0dWIgaG9zdCBmdW5jdGlvbiAodGhhdCBj
YWxscyB0aGUKKyAgICAgICAgICBzdGQ6OmZ1bmN0aW9uKSBpcyB0aGUgc2FtZSBpbiB0aGUgYWxs
IEpTU3RkRnVuY3Rpb24uCisgICAgICAgIC0gQnV0IHNpbmNlIHRoZSBzdGQ6OmZ1bmN0aW9uIHdp
bGwgYmUgYWxsb2NhdGVkIGluIHRoZSBoZWFwLCB0aGlzIGFkZHJlc3MgaXMgYWx3YXlzIGRpZmZl
cmVudC4gU28gY2FjaGluZyBoYXMKKyAgICAgICAgICBubyBlZmZlY3QuCisgICAgICAgIC0gSWYg
d2UgZG8gbm90IGNhY2hlIHRoZSBOYXRpdmVFeGVjdXRhYmxlIHRoYXQgaG9sZHMgdGhlIHN0ZDo6
ZnVuY3Rpb24sIGVhY2ggdGltZSB3aGVuIGNyZWF0aW5nIHRoZSBKU1N0ZEZ1bmN0aW9uLAorICAg
ICAgICAgIHdlIG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgY29tcGxldGVseSBzYW1lIHRyYW1wb2xp
bmVzIChzaW5jZSBpdCBqdXN0IGNhbGxzIHRoZSBzYW1lIGhvc3QgZnVuY3Rpb24gc3R1YiB0aGF0
CisgICAgICAgICAgY2FsbHMgdGhlIHN0ZDo6ZnVuY3Rpb24pLgorCisgICAgICAgIEFuZCB0aGlz
IHBhdGNoIGRyb3BzIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveSBiZWNhdXNlICgxKSBKU0Fycm93
RnVuY3Rpb24gaXMgbm90IGRlc3RydWN0aWJsZSBhbmQgKDIpIGl0IG5vIGxvbmdlcgorICAgICAg
ICBob2xkcyBhbnkgZmllbGRzIHRoYXQgcmVxdWlyZSBkZXN0cnVjdGlvbnMuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAocnVu
V2l0aFNjcmlwdHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJvd0Z1bmN0aW9uOjpkZXN0cm95KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omxvb2tVcE9yQ3JlYXRlTmF0aXZlRXhl
Y3V0YWJsZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OmdldE5hdGl2ZUV4ZWN1dGFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1N0ZEZ1
bmN0aW9uOjpKU1N0ZEZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6cnVuU3RkRnVu
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpuYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAgICogcnVu
dGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTmF0
aXZlU3RkRnVuY3Rpb246OkpTTmF0aXZlU3RkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNOYXRpdmVT
dGRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpydW5TdGRGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5oLgorICAgICAgICAoSlNDOjpKU05h
dGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU05hdGl2
ZVN0ZEZ1bmN0aW9uOjpuYXRpdmVTdGRGdW5jdGlvbkNlbGwpOgorICAgICAgICAqIHJ1bnRpbWUv
TmF0aXZlU3RkRnVuY3Rpb25DZWxsLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok5hdGl2ZVN0
ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TmF0aXZlU3RkRnVuY3Rpb25D
ZWxsOjpOYXRpdmVTdGRGdW5jdGlvbkNlbGwpOgorICAgICAgICAoSlNDOjpOYXRpdmVTdGRGdW5j
dGlvbkNlbGw6OmRlc3Ryb3kpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlU3RkRnVuY3Rpb25D
ZWxsLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6ZnVuY3Rp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNS0wOC0yOCAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNlcGFyYXRlIGNy
ZWF0aW5nIGEgc3R5bGUgc2hlZXQgZnJvbSBhZGRpbmcgYSBuZXcgcnVsZSBpbiB0aGUgcHJvdG9j
b2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwMDY0YTU3YmVjNGM2YzNkYzlkZDliNTcxZjk3ODc1YjQ3Mjk5NDMy
Li5iMWY5MGViY2I5MzQwNTkzODJlODE5NGM1NjZkMzg2MTJmMzljOGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTUtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgTW92ZSBzdGQ6OmZ1bmN0aW9uIGZyb20gSlNGdW5jdGlvbiBp
bnRvIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCB0byBjb3JyZWN0bHkgZGVzdHJveSB0aGUgaGVhcCBh
bGxvY2F0ZWQgc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4MjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgIENoYW5nZSBKU0Z1
bmN0aW9uOjpjcmVhdGUgdG8gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlIHRvIGV4cGxpY2l0
bHkgY3JlYXRlIHRoZSBKU05hdGl2ZVN0ZEZ1bmN0aW9uIHdpdGggdGhlIEMrKyBsYW1iZGEuCisK
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24u
aDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVTdGFydFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVB1bGxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVDYW5jZWxSZXN1bHRGdWxmaWxsZWRGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVDYW5jZWxSZXN1bHRSZWplY3RlZEZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0pOgorCiAyMDE1
LTA4LTI4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IE1ha2UgdGhlIEFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgcHJlZmVyZW5jZSB3b3JrIGluIFdl
YktpdCAvIFdlYktpdDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzFi
ZTZiMmRhNTIyYjA5ZTMxZmVhMWEwYTUyNTkxMWEyOTEyNzUxYS4uYjMzZDAxNDQ4YWEzMjE0ZTgw
MmRiODFkMGE5NTJkNjUzN2YwMWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNTM3LDYgKzUzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMK
ICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAKICAg
ICBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorICAgIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5j
dGlvbi5jcHAKICAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCiAgICAgcnVudGltZS9KU09O
T2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC01NzQsNiArNTc1LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvTW9kdWxlTG9h
ZGVyT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKICAg
ICBydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvTmF0aXZlU3Rk
RnVuY3Rpb25DZWxsLmNwcAogICAgIHJ1bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcAogICAg
IHJ1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3Ry
dWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCAxZThl
NjJiOGUxMjY4NTA4OGI3Y2MwYWY2MzRkZmI1NmE4ZGFjNTc0Li5mODA2NzRkOTJjMGQzMDZjZjhk
NDY3NzliMTg5OTI2ZjNmMzNiNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKQEAgLTc4Niw2ICs3ODYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TWFwSXRlcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U01vZHVsZVJlY29yZC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNPTk9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTT2JqZWN0LmNwcCIgLz4KQEAgLTgyNCw2ICs4MjUsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxNb2R1bGVMb2FkZXJPYmplY3QuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JQcm90b3R5
cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVTdGRG
dW5jdGlvbkNlbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxO
dWxsR2V0dGVyRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxOdWxsU2V0dGVyRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxOdW1iZXJDb25zdHJ1Y3Rvci5jcHAiIC8+CkBAIC0xNjM4LDYgKzE2NDAsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU09OT2JqZWN0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTT2JqZWN0LmgiIC8+CkBAIC0xNjg3LDYgKzE2
OTAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxNaWNyb3Rhc2suaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJv
clByb3RvdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRp
dmVTdGRGdW5jdGlvbkNlbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcTnVsbEdldHRlckZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXE51bGxTZXR0ZXJGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxOdW1iZXJDb25zdHJ1Y3Rvci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDAzZTE2Y2MzODlhNzk1NmMzNzQw
NTZkNDY5N2ZiZmI4ZTVjYzAzM2QuLjg3ZjRiMzVmZDI0MzQ5NjYxNDlmNTM2NDE1ZDYzNzhhOWFj
NjhmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKQEAgLTcyNiw2ICs3MjYsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01vZHVsZVJlY29yZC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TmF0aXZlU3RkRnVuY3Rpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgor
ICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05v
dEFuT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTgxMCw2ICs4MTMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yOTM0LDYgKzI5NDAsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVFcnJvclByb3RvdHlwZS5oIj4KICAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxOYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTnVsbEdldHRlckZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0zNDkzLDYgKzM1MDIsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGViNjJjYTU2YTE1ZTA2YzAxOGQ1ODViZGEzMjc2ZTc4YjJlMjhlNzMuLmEzYzRhZWMzZDMx
ZTQzMjA3ZjI2YTVjODRkZTQzNzU4ZGFhOGI1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNzAzLDYgKzE3MDMsMTAgQEAKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8q
IFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICov
OyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIw
MjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKKwkJRTMzRThEMUMxQjkwMTNDMzAw
MzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUExQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0
aXZlU3RkRnVuY3Rpb24uY3BwICovOyB9OworCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyog
SlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzNFOEQyMDFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0U4RDFFMUI5MDEz
REUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwICovOyB9OworCQlFMzNFOEQy
MTFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxRjFCOTAxM0RFMDAzNDZC
NTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzRjUwNzQxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDcyMUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBK
U0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwNzMxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMzRjUwNzgxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMzRjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwICovOyB9OwpAQCAtMzU1Niw2ICszNTYwLDEwIEBACiAJCUUzMzYzN0EzMUI2MzIy
MDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTMzRThEMUExQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXRpdmVTdGRG
dW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0U4RDFCMUI5MDEz
QzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTmF0aXZlU3RkRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTMzRThEMUUxQjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVTdGRGdW5j
dGlvbkNlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNFOEQxRjFCOTAx
M0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzNGNTA3MjFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21p
c2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJ
bnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VQcm90
b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwNzYxQjg0MjI1NzAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzY3LDYgKzQ3NzUsOCBAQAogCQkJCUE3
NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCiAJCQkJRTM5REE0
QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlFMzlEQTRB
NTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKKwkJCQlFMzNFOEQxQTFC
OTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgKi8sCisJCQkJRTMzRThE
MUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCAqLywKIAkJCQlBNzI3
MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi8sCiAJCQkJQTcyNzAw
NzcwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuaCAqLywKIAkJCQlCQzIyQTM5ODBF
MTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuY3BwICovLApAQCAtNDg1Miw2ICs0ODYyLDggQEAK
IAkJCQlCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
ICovLAogCQkJCUJDMDJFOTBBMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlw
ZS5jcHAgKi8sCiAJCQkJQkMwMkU5MEIwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJv
dG90eXBlLmggKi8sCisJCQkJRTMzRThEMUUxQjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbC5jcHAgKi8sCisJCQkJRTMzRThEMUYxQjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbC5oICovLAogCQkJCTY1NDZGNTFGMUEzMkE1OUMwMDZGMDdENSAvKiBO
dWxsR2V0dGVyRnVuY3Rpb24uY3BwICovLAogCQkJCTY1NDZGNTIwMUEzMkE1OUMwMDZGMDdENSAv
KiBOdWxsR2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQk2NTUyNUZDMzFBNkREM0IzMDA3QjU0OTUg
LyogTnVsbFNldHRlckZ1bmN0aW9uLmNwcCAqLywKQEAgLTYzNjksNiArNjM4MSw3IEBACiAJCQkJ
QTU1MkMzODAxQUREQjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTQwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFT
Y3JpcHRDb3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIg
LyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUwRTE2
RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDI5RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUVBNzBFOTE5RjVCMTAxMDA5OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBp
biBIZWFkZXJzICovLApAQCAtNjcyOSw2ICs2NzQyLDcgQEAKIAkJCQlBMUQ3OTJGRDFCNDM4NjRC
MDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0
QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzM0U4RDIxMUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTc4RjExM0FBQjg4
RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNzY2MTE5
NkI4RjlFMDA5MTA1MkEgLyogREZHSGVhcExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc2
NzUsNiArNzY4OSw3IEBACiAJCQkJMEZDNzEyRTIxN0NEODc5MTAwOENDOTNDIC8qIEpJVFRvREZH
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MEI3
RDFEMERDNjlBRjcwMDlDNDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDA1NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRThEMjAxQjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2
ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkNGMzlDMTE2RTE1QTgx
MDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3
RjM5RDAxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYyQjY2RTIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03OTAxLDYgKzc5MTYsNyBAQAogCQkJCUUzRUY4ODc0MUI2NkRGMjMwMDNGMjZDQiAv
KiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjlF
MTczMDZDOEQwMDdEQkRBNSAvKiBTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzNFOEQxQzFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNl
UHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBDRDRDNDE1RjZCNkJCMDAz
MkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1
NDFCMTE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDE2NTQ5YTA2YzZlOGJiZDE5NzY1NTU5NmI4YWFlODhm
NDVjYTA4N2UuLmNhYjFjNjEzNGUzNDZkODAyNzc5NjM5MzY4YWQ2NTllYjQ5MTJmOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNJbnRlcm5hbFBy
b21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKQEAgLTE1MDQsNyArMTUwNSw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAgICAgYm9v
bCBzdWNjZXNzID0gdHJ1ZTsKIAogI2lmIEVOQUJMRShFUzZfTU9EVUxFUykKLSAgICBKU0Z1bmN0
aW9uKiBlcnJvckhhbmRsZXIgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MSwgU3RyaW5nKCksIFsmXShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBKU0Z1bmN0aW9uKiBlcnJv
ckhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MSwgU3RyaW5nKCksIFsmXShFeGVjU3RhdGUqIGV4ZWMpIHsKICAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOwogICAgICAgICBkdW1wRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXhlYy0+YXJndW1lbnQo
MCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyb3dGdW5jdGlvbi5jcHAKaW5k
ZXggOTUxYzI2MGUxNmEyMGUyYjg0MDlhZWJiOWEyZTU5ZGI5YjNkZjQ4Ni4uOThjNmZhNmFiOTY2
ZmNlZTNkZWM4NGFkYTRlYjcwNTliNGViNWJhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Fycm93RnVuY3Rpb24uY3BwCkBAIC00MCwxMSArNDAsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTQXJyb3dGdW5jdGlvbjo6c19pbmZvID0g
eyAiQXJyb3dGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNBcnJvd0Z1bmN0aW9uKSB9OwogCi12b2lkIEpTQXJyb3dGdW5jdGlvbjo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNBcnJvd0Z1bmN0aW9uKj4oY2VsbCktPkpT
QXJyb3dGdW5jdGlvbjo6fkpTQXJyb3dGdW5jdGlvbigpOwotfQotCiBKU0Fycm93RnVuY3Rpb24q
IEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSBib3VuZFRoaXMpCiB7CiAgICAgSlNBcnJv
d0Z1bmN0aW9uKiByZXN1bHQgPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgYm91
bmRUaGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
b3dGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0
aW9uLmgKaW5kZXggN2Y1NmY2OGVmZWVkZDgyMzFhMzViMmZjMjQ5ZmQ4MWFjOTdmNWIyMy4uYTk1
YTNmOTU2NDZhN2FiNGUxN2U3YjkyYjU4NjdmMzdmYTQ0MTQyYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJvd0Z1bmN0aW9uLmgKQEAgLTQ4LDggKzQ4LDYgQEAg
Y2xhc3MgSlNBcnJvd0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgIHN0YXRpYyBK
U0Fycm93RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUq
LCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNBcnJvd0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSosIEpTVmFsdWUpOwogCi0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKLSAg
ICAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0
eSkKICAgICB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVD
YXBhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CmluZGV4IDBmNzM1NGVkN2E2YmQxZTNlNjRiMTg1ODU5YzE0ZjE1MDMyNmQ0NTguLjI2NzVkYzk5
MzNkM2NjYzhlNGY3ZDJjNjVhODYxY2ExNjk2Mjc5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIEpTRnVuY3Rpb24q
IEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgSlNTY29wZSoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgaW5saW5lIE5hdGl2
ZUV4ZWN1dGFibGUqIGdldE5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZl
Q29uc3RydWN0b3IpCitOYXRpdmVFeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpsb29rVXBPckNyZWF0
ZU5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwg
SW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7
CiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGludHJpbnNpYyk7CkBAIC04Miwz
OCArODIsMTMgQEAgc3RhdGljIGlubGluZSBOYXRpdmVFeGVjdXRhYmxlKiBnZXROYXRpdmVFeGVj
dXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gbmF0aXYKIAogSlNGdW5jdGlvbiogSlNGdW5j
dGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxl
bmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwg
SW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7
Ci0gICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUo
dm0sIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKKyAgICBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbG9va1VwT3JDcmVhdGVOYXRpdmVFeGVjdXRh
YmxlKHZtLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rvcik7CiAg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1
bmN0aW9uPih2bS5oZWFwKSkgSlNGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGlu
aXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2Nh
dGlvbi4KICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0
aCwgbmFtZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCi1jbGFzcyBKU1N0ZEZ1bmN0aW9u
IDogcHVibGljIEpTRnVuY3Rpb24gewotcHVibGljOgotICAgIEpTU3RkRnVuY3Rpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTmF0aXZlU3Rk
RnVuY3Rpb24mJiBmdW5jdGlvbikKLSAgICAgICAgOiBKU0Z1bmN0aW9uKHZtLCBvYmplY3QsIHN0
cnVjdHVyZSkKLSAgICAgICAgLCBzdGRGdW5jdGlvbihXVEY6Om1vdmUoZnVuY3Rpb24pKSB7IH0K
LQotICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uIHN0ZEZ1bmN0aW9uOwotfTsKLQotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcnVuU3RkRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkK
LXsKLSAgICBKU1N0ZEZ1bmN0aW9uKiBqc0Z1bmN0aW9uID0ganNDYXN0PEpTU3RkRnVuY3Rpb24q
PihzdGF0ZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVChqc0Z1bmN0aW9uKTsKLSAgICByZXR1cm4g
anNGdW5jdGlvbi0+c3RkRnVuY3Rpb24oc3RhdGUpOwotfQotCi1KU0Z1bmN0aW9uKiBKU0Z1bmN0
aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgbmF0aXZlU3RkRnVu
Y3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVj
dG9yKQotewotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBnZXROYXRpdmVFeGVj
dXRhYmxlKHZtLCBydW5TdGRGdW5jdGlvbiwgaW50cmluc2ljLCBuYXRpdmVDb25zdHJ1Y3Rvcik7
Ci0gICAgSlNTdGRGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU1N0ZEZ1bmN0aW9uPih2bS5oZWFwKSkgSlNTdGRGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIFdURjo6bW92ZShuYXRpdmVTdGRG
dW5jdGlvbikpOwotICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJl
Y2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KLSAgICBmdW5j
dGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7Ci0gICAg
cmV0dXJuIGZ1bmN0aW9uOwotfQotCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBC
YXNlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggOTI4MzUwZTI0
NzhjNDVmN2JmN2U4YWE4NGM5ZWMzYTRlMjUyYTg2ZS4uMTM2NjM0OGY2MDUzZTk2MGRlMzJhODcz
YjJhZGU5MjY4NzdkZmE5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaApAQCAtNDUsOCArNDUsNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIEpJ
VENvbXBpbGVyOwogfQogCi10eXBlZGVmIHN0ZDo6ZnVuY3Rpb248RW5jb2RlZEpTVmFsdWUgKEV4
ZWNTdGF0ZSopPiBOYXRpdmVTdGRGdW5jdGlvbjsKLQogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5
TmFtZShDYWxsRnJhbWUqLCBKU09iamVjdCopOwpAQCAtNzAsNyArNjgsNiBAQCBjbGFzcyBKU0Z1
bmN0aW9uIDogcHVibGljIEpTQ2FsbGVlIHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
SlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywg
TmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25z
dHJ1Y3Rvcik7CiAgICAgCiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Nj
b3BlKik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRp
dmVTdGRGdW5jdGlvbiYmLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24g
bmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CiAKICAg
ICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSopOwogCkBAIC0xNTksNiArMTU2LDkgQEAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBK
U0NhbGxlZSB7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKKworICAgIHN0YXRpYyBOYXRpdmVFeGVjdXRhYmxlKiBsb29rVXBPckNyZWF0
ZU5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBOYXRpdmVG
dW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3Rvcik7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIEpTRnVu
Y3Rpb24qIGNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IEpTU2NvcGUqIHNjb3BlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5M2VlMWZkNzRiOTkyNTkwNDFjYTFlODYyZjYz
MTFmNjUwOTgzODlhLi45ODY2M2RmY2IwODJjN2FhYjA3YTY5NWI5MDkzYzdkYzQ1OWQxYzIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJKU05hdGl2
ZVN0ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCkBAIC0yNjgsNiArMjY5
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9mdW5jdGlvblN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fYXJyb3dGdW5jdGlvblN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEpTQXJyb3dGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9ib3VuZEZ1bmN0aW9uU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX25hdGl2ZVN0ZEZ1bmN0
aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb24odm0sIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtLCBtX2Z1bmN0aW9uTmFtZU9m
ZnNldCkpOwogICAgIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIElu
dGVybmFsRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbiA9IDA7CkBAIC04MTEs
NiArODEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9hcnJvd0Z1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fc3ltYm9sT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMjYxMzE2ZTg1ZDJiYWZiZGVk
Nzg0MzBiNmY4ZjhlYmE1YWQ4Nzc2ZS4uMWE1MjUwYzY3Y2QxNDZlZmJjZmQxMTI3YzU3MDYzOGFh
NDEzYjE5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0yNTIsNiArMjUyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9mdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5k
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJvd0Z1
bmN0aW9uU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbmF0aXZlU3Rk
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9uYW1lZEZ1
bmN0aW9uU3RydWN0dXJlOwogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CkBA
IC00ODUsNiArNDg2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2Fycm93RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIG5hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9u
YXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbmFtZWRG
dW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9CiAgICAgU3RydWN0dXJlKiBudW1iZXJP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRp
dmVTdGRGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2
ZVN0ZEZ1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTFjNzFkNzMyMTUxNWM1Y2M5ZDc3NTIwYjlh
NDFjMGY0ZDk0NGNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJOYXRpdmVTdGRGdW5jdGlvbkNl
bGwuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEpTTmF0aXZlU3RkRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU05hdGl2ZVN0ZEZ1bmN0aW9uKSB9
OworCitKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBC
YXNlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBKU05hdGl2ZVN0
ZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNOYXRpdmVTdGRGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU05h
dGl2ZVN0ZEZ1bmN0aW9uKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25DZWxs
KTsKK30KKwordm9pZCBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSwgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKiBmdW5jdGlvbkNlbGwpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOworICAgIG1fZnVuY3Rpb25DZWxsLnNldCh2bSwgdGhpcywgZnVu
Y3Rpb25DZWxsKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcnVu
U3RkRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU05hdGl2ZVN0ZEZ1bmN0aW9uKj4oc3RhdGUtPmNhbGxlZSgp
KTsKKyAgICBBU1NFUlQoZnVuY3Rpb24pOworICAgIHJldHVybiBmdW5jdGlvbi0+bmF0aXZlU3Rk
RnVuY3Rpb25DZWxsKCktPmZ1bmN0aW9uKCkoc3RhdGUpOworfQorCitKU05hdGl2ZVN0ZEZ1bmN0
aW9uKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1
bmN0aW9uJiYgbmF0aXZlU3RkRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1
bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQoreworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBsb29rVXBPckNyZWF0ZU5hdGl2ZUV4ZWN1dGFibGUodm0sIHJ1blN0ZEZ1bmN0aW9u
LCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKKyAgICBOYXRpdmVTdGRGdW5jdGlvbkNl
bGwqIGZ1bmN0aW9uQ2VsbCA9IE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKHZtLCBXVEY6
Om1vdmUobmF0aXZlU3RkRnVuY3Rpb24pKTsKKyAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTmF0aXZlU3RkRnVuY3Rpb24+KHZt
LmhlYXApKSBKU05hdGl2ZVN0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+bmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZnVuY3Rpb24tPmZpbmlzaENy
ZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUsIGZ1bmN0aW9uQ2VsbCk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lOTkwMTVhYzU2NGQ1ZDU3ODY0ZTM2ZTQ3YjEyYThkYjJjZGMxNGZkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5o
CkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEpTTmF0aXZlU3RkRnVuY3Rpb25faAorI2RlZmluZSBKU05hdGl2ZVN0
ZEZ1bmN0aW9uX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTmF0aXZlU3RkRnVuY3Rpb25DZWxsOwor
Cit0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248RW5jb2RlZEpTVmFsdWUgKEV4ZWNTdGF0ZSopPiBOYXRp
dmVTdGRGdW5jdGlvbjsKKworY2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGNv
bnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGlu
dCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiwgSW50cmlu
c2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIG5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpIHsg
cmV0dXJuIG1fZnVuY3Rpb25DZWxsLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0
cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKik7CisKK3ByaXZhdGU6CisgICAgSlNO
YXRpdmVTdGRGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisKKyAg
ICBXcml0ZUJhcnJpZXI8TmF0aXZlU3RkRnVuY3Rpb25DZWxsPiBtX2Z1bmN0aW9uQ2VsbDsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNOYXRpdmVTdGRGdW5jdGlvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVTdGRGdW5j
dGlvbkNlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlU3RkRnVu
Y3Rpb25DZWxsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjBjMTgxOWYxZmYwNjk5NDZjNmNlYTEzNjc4NTFl
NzZkZmZjZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5j
dGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OnNfaW5m
byA9IHsgIk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoTmF0aXZlU3RkRnVuY3Rpb25DZWxsKSB9OworCitOYXRpdmVTdGRGdW5jdGlv
bkNlbGwqIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKFZNJiB2bSwgTmF0aXZlU3RkRnVu
Y3Rpb24mJiBmdW5jdGlvbikKK3sKKyAgICBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIG5hdGl2ZUZ1
bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TmF0aXZlU3RkRnVuY3Rpb25DZWxs
Pih2bS5oZWFwKSkgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKHZtLCBXVEY6Om1vdmUoZnVuY3Rpb24p
KTsKKyAgICBuYXRpdmVGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBu
YXRpdmVGdW5jdGlvbjsKK30KKworCitOYXRpdmVTdGRGdW5jdGlvbkNlbGw6Ok5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbChWTSYgdm0sIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgZnVuY3Rpb24pCisgICAgOiBC
YXNlKHZtLCB2bS5uYXRpdmVTdGRGdW5jdGlvbkNlbGxTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBt
X2Z1bmN0aW9uKFdURjo6bW92ZShmdW5jdGlvbikpCit7Cit9CisKK3ZvaWQgTmF0aXZlU3RkRnVu
Y3Rpb25DZWxsOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBOYXRpdmVTdGRGdW5jdGlv
bkNlbGwqIG5hdGl2ZUZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8TmF0aXZlU3RkRnVuY3Rpb25DZWxs
Kj4oY2VsbCk7CisgICAgbmF0aXZlRnVuY3Rpb24tPk5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6fk5h
dGl2ZVN0ZEZ1bmN0aW9uQ2VsbCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVTdGRGdW5jdGlvbkNlbGwuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNGE2
YWU0ZDllNTExNjFlZmVlYjE1NTAzNGJmN2Q5Nzk5NWU1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVTdGRGdW5jdGlvbkNlbGwuaApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBOYXRpdmVTdGRGdW5jdGlvbkNlbGxfaAorI2RlZmluZSBOYXRpdmVTdGRGdW5j
dGlvbkNlbGxfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNOYXRpdmVTdGRG
dW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTmF0aXZlU3RkRnVuY3Rpb25D
ZWxsIDogcHVibGljIEpTQ2VsbCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMgTmF0aXZlU3RkRnVuY3Rpb25DZWxs
KiBjcmVhdGUoVk0mLCBOYXRpdmVTdGRGdW5jdGlvbiYmKTsKKworICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgY29uc3QgTmF0aXZlU3RkRnVuY3Rp
b24mIGZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQorCitwcml2YXRlOgor
ICAgIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbChWTSYsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYpOworCisg
ICAgTmF0aXZlU3RkRnVuY3Rpb24gbV9mdW5jdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gTmF0aXZlU3RkRnVuY3Rpb25DZWxsX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCA1YWY2Y2FmMjdkMzU5ZDkxZjQ3YzExNTY0NzU4NDIwOGI3ZjA0
OTc2Li45MDMyNmNjNzIxNGFkN2U0MTZiYTEzMTRkOGRmYTMxYTczMTQ5ZDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiTGV4
ZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCisjaW5jbHVk
ZSAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRl
ICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCkBAIC0yNDAsNiArMjQx
LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHByb21p
c2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaXRlcmF0aW9uVGVybWluYXRvci5z
ZXQoKnRoaXMsIEpTRmluYWxPYmplY3Q6OmNyZWF0ZSgqdGhpcywgSlNGaW5hbE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSwgMSkpKTsKKyAgICBuYXRpdmVTdGRGdW5j
dGlvbkNlbGxTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlh
bGl6ZUNvbW1vblN0cmluZ3MoKnRoaXMpOwogCiAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYmY5MjViNTk1ZjkyMzkzNjJlZjg3OTE3MDNj
M2U1MGEyNzJhYzI4Mi4uNGZiY2IwYjhmMTg5NWQzNjUyMGQ4YTZiMjQzZDcyMjY5MTRkYWYxOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0yOTcsNiArMjk3LDcgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG5hdGl2ZVN0ZEZ1bmN0aW9u
Q2VsbFN0cnVjdHVyZTsKICAgICBTdHJvbmc8SlNDZWxsPiBpdGVyYXRpb25UZXJtaW5hdG9yOwog
ICAgIFN0cm9uZzxKU0NlbGw+IGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU05hdGl2ZVN0
ZEZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pT
TmF0aXZlU3RkRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGRjM2YwNGJhNDUzYWU0ZDIyOTM4YTdl
OTEzN2IzNzRjMTMxZGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmgKQEAgLTAsMCArMSw0IEBA
CisjaWZuZGVmIFdlYkNvcmVfRldEX0pTTmF0aXZlU3RkRnVuY3Rpb25faAorI2RlZmluZSBXZWJD
b3JlX0ZXRF9KU05hdGl2ZVN0ZEZ1bmN0aW9uX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U05hdGl2ZVN0ZEZ1bmN0aW9uLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKaW5kZXggNDA2NjU4YWVkNTgxZWQ4ZmQyNmUxZmI5
NjE0YTFjM2RjYzU3M2I2Ny4uOWViN2FkOTRmMmE0OGNkOTVmMzY1Y2U0YjQ3YWNmMDI4Y2E2NGEz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5j
cHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9KU1Byb21pc2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CkBAIC0xMDAsNyArMTAxLDcgQEAg
SlNET01HbG9iYWxPYmplY3QqIFJlYWRhYmxlSlNTdHJlYW06Omdsb2JhbE9iamVjdCgpCiBzdGF0
aWMgaW5saW5lIEpTRnVuY3Rpb24qIGNyZWF0ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24o
RXhlY1N0YXRlJiBzdGF0ZSwgUmVhZGFibGVTdHJlYW0mIHJlYWRhYmxlU3RyZWFtKQogewogICAg
IFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gc3RyZWFtID0gJnJlYWRhYmxlU3RyZWFtOwotICAgIHJl
dHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCktPmdsb2Jh
bE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgW3N0cmVhbV0oRXhlY1N0YXRlKikgeworICAgIHJldHVy
biBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgW3N0cmVhbV0oRXhlY1N0YXRlKikgewogICAg
ICAgICBzdHJlYW0tPnN0YXJ0KCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgfSk7CkBAIC0xNDcsNyArMTQ4LDcgQEAgdm9pZCBSZWFkYWJsZUpT
U3RyZWFtOjpkb1N0YXJ0KEV4ZWNTdGF0ZSYgZXhlYykKIHN0YXRpYyBpbmxpbmUgSlNGdW5jdGlv
biogY3JlYXRlUHVsbFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVh
ZGFibGVTdHJlYW0mIHN0cmVhbSkKIHsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHByb3Rl
Y3RlZFN0cmVhbSA9ICZzdHJlYW07Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVj
LnZtKCksIGV4ZWMuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgW3Byb3Rl
Y3RlZFN0cmVhbV0oRXhlY1N0YXRlKikgeworICAgIHJldHVybiBKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUoZXhlYy52bSgpLCBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMCwgU3Ry
aW5nKCksIFtwcm90ZWN0ZWRTdHJlYW1dKEV4ZWNTdGF0ZSopIHsKICAgICAgICAgcHJvdGVjdGVk
U3RyZWFtLT5maW5pc2hQdWxsaW5nKCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgfSk7CkBAIC0xNzUsNyArMTc2LDcgQEAgYm9vbCBSZWFkYWJs
ZUpTU3RyZWFtOjpkb1B1bGwoKQogc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUNhbmNlbFJlc3Vs
dEZ1bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgUmVhZGFibGVTdHJlYW0mIHN0cmVh
bSkKIHsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHByb3RlY3RlZFN0cmVhbSA9ICZzdHJl
YW07Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLnZtKCksIGV4ZWMuY2FsbGVl
KCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgW3Byb3RlY3RlZFN0cmVhbV0oRXhlY1N0
YXRlKikgeworICAgIHJldHVybiBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoZXhlYy52bSgp
LCBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFtwcm90ZWN0ZWRT
dHJlYW1dKEV4ZWNTdGF0ZSopIHsKICAgICAgICAgcHJvdGVjdGVkU3RyZWFtLT5ub3RpZnlDYW5j
ZWxTdWNjZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9KTsKQEAgLTE4NCw3ICsxODUsNyBAQCBzdGF0aWMgSlNGdW5jdGlvbiogY3Jl
YXRlQ2FuY2VsUmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBSZWFkYWJs
ZQogc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUNhbmNlbFJlc3VsdFJlamVjdGVkRnVuY3Rpb24o
RXhlY1N0YXRlJiBleGVjLCBSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0pCiB7CiAgICAgUmVmUHRy
PFJlYWRhYmxlSlNTdHJlYW0+IHByb3RlY3RlZFN0cmVhbSA9ICZzdHJlYW07Ci0gICAgcmV0dXJu
IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLnZtKCksIGV4ZWMuY2FsbGVlKCktPmdsb2JhbE9iamVj
dCgpLCAxLCBTdHJpbmcoKSwgW3Byb3RlY3RlZFN0cmVhbV0oRXhlY1N0YXRlKiBleGVjKSB7Cisg
ICAgcmV0dXJuIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShleGVjLnZtKCksIGV4ZWMuY2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgW3Byb3RlY3RlZFN0cmVhbV0oRXhl
Y1N0YXRlKiBleGVjKSB7CiAgICAgICAgIHByb3RlY3RlZFN0cmVhbS0+c3RvcmVFcnJvcigqZXhl
YywgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgICAgICBwcm90ZWN0ZWRTdHJlYW0tPm5vdGlmeUNh
bmNlbEZhaWxlZCgpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtMjYwLDcgKzI2MSw3IEBAIFJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJl
YW0oRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmplY3QqIHNvdXJjZSwgZG91YmxlIGhpCiAgICAgbV9z
b3VyY2Uuc2V0KHN0YXRlLnZtKCksIHNvdXJjZSk7CiAgICAgLy8gV2UgZG8gbm90IHRha2UgYSBS
ZWYgdG8gdGhlIHN0cmVhbSBhcyB0aGlzIHdvdWxkIGNhdXNlIGEgUmVmIGN5Y2xlLgogICAgIC8v
IFRoZSByZXNvbHV0aW9uIGNhbGxiYWNrIHVzZWQgam9pbnRseSB3aXRoIG1fZXJyb3JGdW5jdGlv
biBhcyBwcm9taXNlIGNhbGxiYWNrcyBzaG91bGQgcHJvdGVjdCB0aGUgc3RyZWFtIGluc3RlYWQu
Ci0gICAgbV9lcnJvckZ1bmN0aW9uLnNldChzdGF0ZS52bSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
c3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwg
W3RoaXNdKEV4ZWNTdGF0ZSogc3RhdGUpIHsKKyAgICBtX2Vycm9yRnVuY3Rpb24uc2V0KHN0YXRl
LnZtKCksIEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBzdGF0ZS5jYWxs
ZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbdGhpc10oRXhlY1N0YXRlKiBzdGF0
ZSkgewogICAgICAgICBzdG9yZUVycm9yKCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9KSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>