<?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>23636</bug_id>
          
          <creation_ts>2009-01-29 22:09:06 -0800</creation_ts>
          <short_desc>Make the async api of ThreadableLoader functional for the worker context.</short_desc>
          <delta_ts>2009-02-02 23:43:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>23618</dependson>
          <blocked>22720</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107641</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-29 22:09:06 -0800</bug_when>
    <thetext>Implement WorkerThreadableContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107646</commentid>
    <comment_count>1</comment_count>
      <attachid>27173</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-29 23:45:51 -0800</bug_when>
    <thetext>Created attachment 27173
Part 1: Expose WorkerMessagingProxy::postTaskToWorkerContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107650</commentid>
    <comment_count>2</comment_count>
      <attachid>27173</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-30 00:16:16 -0800</bug_when>
    <thetext>Comment on attachment 27173
Part 1: Expose WorkerMessagingProxy::postTaskToWorkerContext

Discussed on IRC - we think that it will be better to merge ScriptExecutionContext::Task and WorkerTask, which will eliminate the need for wrappers.

Besides, we don&apos;t have a DocumentTask, so why have a WorkerTask?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107703</commentid>
    <comment_count>3</comment_count>
      <attachid>27181</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-30 08:56:28 -0800</bug_when>
    <thetext>Created attachment 27181
Part 1: Expose WorkerMessagingProxy::postTaskToWorkerContext

Removed WorkerTask.  Hurray for less code!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107941</commentid>
    <comment_count>4</comment_count>
      <attachid>27243</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-01 22:55:09 -0800</bug_when>
    <thetext>Created attachment 27243
Part 2: Enable the async portion of ThreadableLoader for Workers.

I believe that I have addressed all comments and have refactored the code in an attempt to make it clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107945</commentid>
    <comment_count>5</comment_count>
      <attachid>27181</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-02 02:05:24 -0800</bug_when>
    <thetext>Comment on attachment 27181
Part 1: Expose WorkerMessagingProxy::postTaskToWorkerContext

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107950</commentid>
    <comment_count>6</comment_count>
      <attachid>27243</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-02 03:41:51 -0800</bug_when>
    <thetext>Comment on attachment 27243
Part 2: Enable the async portion of ThreadableLoader for Workers.

+        Enable ThreadableLoader for workers.  Now, when the xhr bindings are
+        exposed to workers, async xhr should work.

I keep reading this as &quot;async XHR will work after landing this patch&quot;, which isn&apos;t true. Maybe it isn&apos;t that important to say what will happen in the future.

+        static Type copy(const std::auto_ptr&lt;T&gt;&amp; autoPtr)
+        {
+            return std::auto_ptr&lt;T&gt;(*const_cast&lt;std::auto_ptr&lt;T&gt;*&gt;(&amp;autoPtr));
+        }

Both const_cast and the name &quot;copy()&quot; make this look suspicious. I don&apos;t have anything to suggest though.

+ * Copyright (c) 2009, Google Inc. All rights reserved.

Looks like you&apos;ve used an old template for this file.

+            RefPtr&lt;ThreadSafeShared&lt;ThreadableLoaderClientWrapper&gt; &gt; m_workerClientWrapper;

Why not RefPtr&lt;ThreadableLoaderClientWrapper&gt;?

I have some further questions, let&apos;s discuss them on IRC.
+            // Maybe used on either thread.
+            WorkerMessagingProxy* m_messagingProxy;

Typo: there should be a space in &quot;May be&quot;. You could consider making m_messagingProxy a reference to make it clearer that it is non-null.

+        MainThreadBridge* m_bridge;

The bridge seems to be non-null, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107970</commentid>
    <comment_count>7</comment_count>
      <attachid>27247</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-02 08:33:24 -0800</bug_when>
    <thetext>Created attachment 27247
Part 2: Enable the async portion of ThreadableLoader for Workers.

Addressed comments.

Here&apos;s a few that I need a little more explanation.

+        static Type copy(const std::auto_ptr&lt;T&gt;&amp; autoPtr)
+        {
+            return std::auto_ptr&lt;T&gt;(*const_cast&lt;std::auto_ptr&lt;T&gt;*&gt;(&amp;autoPtr));
+        }

&gt; Both const_cast and the name &quot;copy()&quot; make this look suspicious. I don&apos;t have
&gt; anything to suggest though.
I agree.  Here&apos;s my reasoning, which I think you got because you said you didn&apos;t have anything to suggest.
1.  The const_cast.  Unfortunately, the createCallbackTask has to take const T&amp;.  In this case (an auto_ptr), it woud be nice just to take a auto_ptr&amp; or just an auto_ptr, so I casted away the const.  If you&apos;re passing in an auto_ptr, you should expect that the function will take it over.

2.  The &quot;copy&quot; method that really transfers ownership.  Well, the intent is to get something that can be used on another thread.  (Maybe Copier/copy wasn&apos;t the best choice...)  If you&apos;re given an auto_ptr, then taking ownership is the thing to do to match the intent.


+ * Copyright (c) 2009, Google Inc. All rights reserved.
&gt; Looks like you&apos;ve used an old template for this file.
I fixed this in several other files to get rid of my bad templates.



+            RefPtr&lt;ThreadSafeShared&lt;ThreadableLoaderClientWrapper&gt; &gt;
m_workerClientWrapper;
&gt; Why not RefPtr&lt;ThreadableLoaderClientWrapper&gt;?
I made a CrossThreadCopier template that expects a RefPtr&lt;ThreadSafeShared&lt;T&gt;&gt;.  

It made sense to me to declare it this way rather than put a lot of mechanics everywhere I called createCallbackTask with this member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108070</commentid>
    <comment_count>8</comment_count>
      <attachid>27271</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-02 18:01:43 -0800</bug_when>
    <thetext>Created attachment 27271
Part 2: Enable the async portion of ThreadableLoader for Workers.

Fixed bug number in changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108088</commentid>
    <comment_count>9</comment_count>
      <attachid>27271</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-02 23:30:12 -0800</bug_when>
    <thetext>Comment on attachment 27271
Part 2: Enable the async portion of ThreadableLoader for Workers.

r=me

I think that in the future, we should think of a way to make the copier work without constructs such as RefPtr&lt;ThreadSafeShared&lt;T&gt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108091</commentid>
    <comment_count>10</comment_count>
      <attachid>27181</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-02 23:39:21 -0800</bug_when>
    <thetext>Comment on attachment 27181
Part 1: Expose WorkerMessagingProxy::postTaskToWorkerContext

Part 1 committed revision 40526.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108093</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-02 23:43:02 -0800</bug_when>
    <thetext>Part 2 Committed revision 40527.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27173</attachid>
            <date>2009-01-29 23:45:51 -0800</date>
            <delta_ts>2009-01-30 08:56:28 -0800</delta_ts>
            <desc>Part 1: Expose WorkerMessagingProxy::postTaskToWorkerContext</desc>
            <filename>bug23636-part1.txt</filename>
            <type>text/plain</type>
            <size>8928</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODc1NzYxOS4uMzVlMGI1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzNiBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEJ1ZyAyMzYzNjogTWFrZSB0aGUgYXN5bmMgYXBpIG9m
IFRocmVhZGFibGVMb2FkZXIgZnVuY3Rpb25hbCBmb3IgdGhlIHdvcmtlciBjb250ZXh0LgorICAg
ICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM2PgorCisg
ICAgICAgIEV4cG9zZSBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb1dvcmtlckNvbnRl
eHQgZm9yIHVzZSBieSB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuCisgICAgICAgIENoYW5nZSB0
aGUgbmFtZSBvZiBwb3N0VGFza1RvUGFyZW50Q29udGV4dCB0byBwb3N0VGFza1RvV29ya2VyT2Jq
ZWN0IGZvciBjb25zaXN0ZW5jeQorICAgICAgICB3aXRoIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRl
c3QuCisKKyAgICAgICAgKiBkb20vV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNv
bnRleHQ6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnBvc3RU
YXNrVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0Lmg6CisgICAg
ICAgICogZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb1dvcmtlckNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3Jr
ZXJPYmplY3QpOgorICAgICAgICAqIGRvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAg
ICAqIGRvbS9Xb3JrZXJUYXNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRUYXNrV29ya2VyVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzazo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dFRh
c2tXb3JrZXJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRU
YXNrV29ya2VyVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGFz
azo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogZG9tL1dvcmtlclRhc2suaDoKKworMjAwOS0w
MS0yOSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQnVnIDIzNjE4OiBUZW1wbGF0ZWQgd29y
a2VyIHRhc2tzIHNob3VsZCBiZSBtb3JlIGVycm9yIHByb29mIHRvIHVzZS4KICAgICAgICAgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxOD4KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250
ZXh0LmNwcAppbmRleCA4ZWYxYjQyLi5iYmY2OTI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9X
b3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcApAQCAt
MTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFdvcmtlck1lc3NhZ2luZ1Byb3h5CiAKIHZvaWQgV29ya2VyQ29u
dGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgcG9z
dFRhc2tUb1BhcmVudENvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZhZGRNZXNzYWdlVGFzaywg
bV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCksIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKKyAgICBwb3N0VGFza1RvV29ya2VyT2Jq
ZWN0KGNyZWF0ZUNhbGxiYWNrVGFzaygmYWRkTWVzc2FnZVRhc2ssIG1fdGhyZWFkLT5tZXNzYWdp
bmdQcm94eSgpLCBkZXN0aW5hdGlvbiwgc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJl
ciwgc291cmNlVVJMKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwdFN0cmluZyYpCkBA
IC0xODUsMzUgKzE4NSwxNCBAQCBib29sIFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiAhZXZl
bnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KIAotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dFRhc2tXb3JrZXJUYXNrIDogcHVibGljIFdvcmtlclRhc2sgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzaz4gY3JlYXRl
KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dFRhc2tXb3Jr
ZXJUYXNrKHRhc2spKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dFRhc2tXb3JrZXJUYXNrKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gdGFzaykKLSAgICAgICAgOiBtX3Rhc2sodGFzaykKLSAgICB7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1UYXNrKFdvcmtlckNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAg
ICAgICBtX3Rhc2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOwotICAgIH0KLQotICAgIFJlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBtX3Rhc2s7Ci19OwotCiB2b2lkIFdvcmtlckNv
bnRleHQ6OnBvc3RUYXNrKFBhc3NSZWZQdHI8VGFzaz4gdGFzaykKIHsKLSAgICB0aHJlYWQoKS0+
cnVuTG9vcCgpLnBvc3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzazo6
Y3JlYXRlKHRhc2spKTsKKyAgICB0aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFdvcmtlclRh
c2s6OmNyZWF0ZVdyYXBwZXIodGFzaykpOwogfQogCi12b2lkIFdvcmtlckNvbnRleHQ6OnBvc3RU
YXNrVG9QYXJlbnRDb250ZXh0KFBhc3NSZWZQdHI8VGFzaz4gdGFzaykKK3ZvaWQgV29ya2VyQ29u
dGV4dDo6cG9zdFRhc2tUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFRhc2s+IHRhc2spCiB7Ci0g
ICAgdGhyZWFkKCktPm1lc3NhZ2luZ1Byb3h5KCktPnBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KHRh
c2spOworICAgIHRocmVhZCgpLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0VGFza1RvV29ya2VyT2Jq
ZWN0KHRhc2spOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Xb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKaW5k
ZXggMmU0NDNkOS4uMDAzNmI3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4
dC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaApAQCAtNzgsNyArNzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0cjxU
YXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9u
b3VzbHkuCi0gICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxU
YXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIGluIHRoZSBwYXJlbnQncyBjb250ZXh0IChhbmQg
dGhyZWFkKSBhc3luY2hyb25vdXNseS4KKyAgICAgICAgdm9pZCBwb3N0VGFza1RvV29ya2VyT2Jq
ZWN0KFBhc3NSZWZQdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiB0aGUgd29ya2Vy
IG9iamVjdCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCmluZGV4IGIwZDE0NWUuLmU4MTAyOWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHAKQEAgLTIxMywxNyArMjEzLDI3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7CisgICAgcG9zdFRhc2tUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxX
b3JrZXJUYXNrPihNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlKSkpOwor
fQorCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvV29ya2VyQ29udGV4dChQ
YXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCit7CisgICAgcG9z
dFRhc2tUb1dvcmtlckNvbnRleHQoV29ya2VyVGFzazo6Y3JlYXRlV3JhcHBlcih0YXNrKSk7Cit9
CisKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KFBh
c3NSZWZQdHI8V29ya2VyVGFzaz4gdGFzaykKK3sKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRl
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93b3JrZXJUaHJlYWQpIHsKICAgICAgICAg
KyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2Up
KTsKKyAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2Vy
Q29udGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNr
cy5hcHBlbmQodGFzayk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
VG9QYXJlbnRDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
dGFzaykKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJPYmplY3Qo
UGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2sodGFzayk7CiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvV2ViQ29yZS9kb20vV29ya2VyTWVz
c2FnaW5nUHJveHkuaAppbmRleCA3ZmRjODc1Li5lYTJiOTk4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgKQEAgLTQ5LDcgKzQ5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7Ci0gICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CisKKyAgICAgICAgdm9pZCBwb3N0VGFz
a1RvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4p
OworICAgICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwogCiAgICAgICAgIHZvaWQgcG9zdFdvcmtlckV4Y2Vw
dGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKTsKIApAQCAtNzUsNiArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgd29ya2VyQ29udGV4dERlc3Ryb3llZEludGVybmFsKCk7CiAgICAgICAg
IHZvaWQgcmVwb3J0V29ya2VyVGhyZWFkQWN0aXZpdHlJbnRlcm5hbChib29sIGNvbmZpcm1pbmdN
ZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CiAgICAgICAgIFdvcmtlciogd29ya2Vy
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3Q7IH0KKyAgICAgICAgdm9pZCBw
b3N0VGFza1RvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFdvcmtlclRhc2s+KTsKIAogICAgICAg
ICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogICAgICAgICBXb3JrZXIqIG1fd29ya2VyT2JqZWN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vV29ya2VyVGFzay5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmNwcAppbmRleCA0YTIy
YzU5Li4xYWE4Mzg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmNwcApAQCAtMzAsOCArMzAsMzkgQEAKIAogI2luY2x1
ZGUgIldvcmtlclRhc2suaCIKIAorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dFRhc2tXb3JrZXJUYXNrIDogcHVibGljIFdvcmtlclRhc2sg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRU
YXNrV29ya2VyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4gdGFzaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dFRhc2tXb3JrZXJUYXNrKHRhc2spKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dFRhc2tXb3JrZXJUYXNrKFBhc3NSZWZQdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKKyAgICAgICAgOiBtX3Rhc2sodGFzaykKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFdvcmtlckNvbnRleHQq
IGNvbnRleHQpCisgICAgeworICAgICAgICBtX3Rhc2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOwor
ICAgIH0KKworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBtX3Rhc2s7
Cit9OworCitQYXNzUmVmUHRyPFdvcmtlclRhc2s+IFdvcmtlclRhc2s6OmNyZWF0ZVdyYXBwZXIo
UGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQoreworICAgIHJl
dHVybiBTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKTsK
K30KKwogV29ya2VyVGFzazo6fldvcmtlclRhc2soKQogewogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vV29ya2VyVGFzay5oIGIvV2ViQ29yZS9kb20vV29ya2VyVGFzay5oCmluZGV4IGE4NDJj
ZTIuLjY1NjNjYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlclRhc2suaAorKysgYi9X
ZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2lmIEVOQUJMRShX
T1JLRVJTKQogCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNyw2ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIFdvcmtlclRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxXb3JrZXJUYXNrPiB7
CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJUYXNrPiBjcmVh
dGVXcmFwcGVyKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOworCiAg
ICAgICAgIHZpcnR1YWwgfldvcmtlclRhc2soKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFdvcmtlckNvbnRleHQqKSA9IDA7CiAgICAgfTsK
</data>
<flag name="review"
          id="13070"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27181</attachid>
            <date>2009-01-30 08:56:28 -0800</date>
            <delta_ts>2009-02-02 23:39:21 -0800</delta_ts>
            <desc>Part 1: Expose WorkerMessagingProxy::postTaskToWorkerContext</desc>
            <filename>bug23636-part1.txt</filename>
            <type>text/plain</type>
            <size>20011</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTZlNDAyMS4uNTM5Y2FiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0NyBAQAogMjAwOS0wMS0zMCAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIzNjM2OiBNYWtlIHRoZSBhc3luYyBhcGkgb2YgVGhyZWFkYWJs
ZUxvYWRlciBmdW5jdGlvbmFsIGZvciB0aGUgd29ya2VyIGNvbnRleHQuCisgICAgICAgIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzY+CisKKyAgICAgICAgTm8g
b2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1dvcmtlci5j
cHA6CisgICAgICAgICogZG9tL1dvcmtlci5oOgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQ29udGV4dDo6cG9zdFRhc2tUb1dvcmtlck9iamVjdCk6CisgICAgICAgICogZG9t
L1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VU
b1dvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgRXhwb3NlIHBvc3RUYXNrVG9Xb3Jr
ZXJDb250ZXh0IGZvciB1c2UgYnkgdGhlIHdvcmtlciBvYmplY3QgdGhyZWFkLgorCisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb1dvcmtlck9iamVjdCk6
CisgICAgICAgIENoYW5nZSB0aGUgbmFtZSBvZiBwb3N0VGFza1RvUGFyZW50Q29udGV4dCB0byBw
b3N0VGFza1RvV29ya2VyT2JqZWN0IGZvciBjb25zaXN0ZW5jeQorICAgICAgICB3aXRoIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJPYmplY3QuCisKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJv
eHkuaDoKKyAgICAgICAgKiBkb20vV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJSdW5Mb29wOjpydW4pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6
cG9zdFRhc2spOgorICAgICAgICAqIGRvbS9Xb3JrZXJSdW5Mb29wLmg6CisgICAgICAgICogZG9t
L1dvcmtlclRhc2suY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9Xb3JrZXJUYXNrLmg6IFJl
bW92ZWQuCisgICAgICAgIFJlbW92ZWQgV29ya2VyVGFzayBhbmQgcmVwbGFjZWQgd2l0aCB0aGUg
ZXhpc3RpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzay4KKworICAgICAgICBUaGUgcmVz
dWx0ZWQgaW4gdGhlIGNsYXNzIGdvaW5nIGF3YXkgYWxvbmcgd2l0aCBhbiBhZGFwdGVyIHRoYXQg
bWFkZQorICAgICAgICBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgbG9vayBsaWtlIGEg
V29ya2VyVGFzay4KKworICAgICAgICAqIGRvbS9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAq
IGRvbS9Xb3JrZXJUaHJlYWQuaDoKKworMjAwOS0wMS0zMCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4K
IAogICAgICAgICBCdWcgMjM2MTY6IFZhcmlvdXMgInRlbXBsYXRlIGhlbHBlcnMiIHNob3VsZCBi
ZSBjb25zb2xpZGF0ZWQgZnJvbSBpc29sYXRlZCBmaWxlcyBpbiBKYXZhU2NyaXB0Q29yZS4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTM1OGViZi4uMGEz
ZTEzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQy
NTcsOCArNDI1Nyw2IEBACiAJCUUxMDc0MDBFMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VD
aGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTA3NDAwQzBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oICovOyB9OwogCQlF
MTA3NDMyNDBFNzgzNTgzMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMDc0MzIz
MEU3ODM1ODMwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwICovOyB9
OwogCQlFMTA3NDMyNzBFNzgzNUE1MDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTA3
NDMyNjBFNzgzNUE1MDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmggKi87
IH07Ci0JCUUxMDgyMjRCMEVDMzE1M0EwMEU5Mzk1MyAvKiBXb3JrZXJUYXNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTA4MjI0QTBFQzMxNTNBMDBF
OTM5NTMgLyogV29ya2VyVGFzay5oICovOyB9OwotCQlFMTA4MjI0RjBFQzMxNTY3MDBFOTM5NTMg
LyogV29ya2VyVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTA4MjI0RTBFQzMxNTY3MDBFOTM5NTMgLyogV29ya2VyVGFzay5jcHAgKi87IH07
CiAJCUUxMEI5MzdDMEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwQjkzN0Iw
QjczQzAwQTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggKi87IH07CiAJCUUx
MEI5M0MzMEI3M0MyOTEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBCOTNDMjBCNzND
MjkxMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwICovOyB9OwogCQlFMTBC
OUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBCOUI2QTBCNzQ3NTk5MDAz
RUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggKi87IH07CkBAIC05MDM3LDggKzkwMzUs
NiBAQAogCQlFMTA3NDAwQzBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lc3NhZ2VDaGFubmVsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMDc0MzIzMEU3ODM1ODMwMDMzQUYyNCAvKiBKU01l
c3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTEwNzQzMjYwRTc4MzVBNTAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5u
ZWxDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lc3Nh
Z2VDaGFubmVsQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTEw
ODIyNEEwRUMzMTUzQTAwRTkzOTUzIC8qIFdvcmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV29ya2VyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlFMTA4MjI0RTBFQzMxNTY3MDBFOTM5NTMgLyogV29ya2VyVGFzay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTEwQjkzN0IwQjczQzAwQTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMEI5M0MyMEI3
M0MyOTEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMEI5QjZBMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF0aXZlWFBhdGhOU1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NDQzNiw4ICsxNDQzMiw2IEBACiAJCQkJRTE0Nzk5QTYwRUNERTNBNDAwMjkyQkYzIC8qIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5LmggKi8sCiAJCQkJMThBMDUzN0EwRjI2ODU5QzAwQTUxNzA1IC8qIFdv
cmtlclJ1bkxvb3AuY3BwICovLAogCQkJCTE4QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3Jr
ZXJSdW5Mb29wLmggKi8sCi0JCQkJRTEwODIyNEUwRUMzMTU2NzAwRTkzOTUzIC8qIFdvcmtlclRh
c2suY3BwICovLAotCQkJCUUxMDgyMjRBMEVDMzE1M0EwMEU5Mzk1MyAvKiBXb3JrZXJUYXNrLmgg
Ki8sCiAJCQkJRTFDMkM0MjgwRUFDRTBFMDAwN0U2MUZCIC8qIFdvcmtlclRocmVhZC5jcHAgKi8s
CiAJCQkJRTFDMkM0MjMwRUFDRTBCQzAwN0U2MUZCIC8qIFdvcmtlclRocmVhZC5oICovLAogCQkJ
CUY1MjNEMzA5MDJERTQ0NzYwMTg2MzVDQSAvKiBYTUxUb2tlbml6ZXIuY3BwICovLApAQCAtMTY2
MDMsNyArMTY1OTcsNiBAQAogCQkJCUUxMjcxQTBCMEVFRUM3N0EwMEY2MTIxMyAvKiBXb3JrZXJO
YXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE4QTA1MzdEMEYyNjg1OUMwMEE1MTcwNSAv
KiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUE2NDNGMjBFQzA5NzI1MDA3
Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEw
ODIyNEIwRUMzMTUzQTAwRTkzOTUzIC8qIFdvcmtlclRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxQzJDNDI0MEVBQ0UwQkMwMDdFNjFGQiAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3Bh
bkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MjAyMDlEMTUwOEQwMDBFNjFENyAv
KiBYTGlua05hbWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTE4NTg3LDcgKzE4NTgwLDYgQEAKIAkJ
CQlFMTI3MUExNDBFRUVDODA0MDBGNjEyMTMgLyogV29ya2VyTmF2aWdhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE4QTA1MzdDMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxQTY0M0ZEMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxMDgyMjRGMEVDMzE1Njcw
MEU5Mzk1MyAvKiBXb3JrZXJUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzJDNDI5MEVB
Q0UwRTAwMDdFNjFGQiAvKiBXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMz
MDlFMjMwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlci5j
cHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXIuY3BwCmluZGV4IDY4ODlhNDIuLjE3ZmUzZWEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlci5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyLmNw
cApAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCi0j
aW5jbHVkZSAiV29ya2VyVGFzay5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlci5o
IGIvV2ViQ29yZS9kb20vV29ya2VyLmgKaW5kZXggNmE0N2JhYy4uZDdlNjYyYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vV29ya2VyLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyLmgKQEAgLTQ3
LDcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFdvcmtlck1lc3NhZ2luZ1By
b3h5OwotICAgIGNsYXNzIFdvcmtlclRhc2s7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNv
cmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDhlZjFiNDIuLmZhYTgxOTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtl
ckNvbnRleHQuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24u
aCIKICNpbmNsdWRlICJXb3JrZXJNZXNzYWdpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck5h
dmlnYXRvci5oIgotI2luY2x1ZGUgIldvcmtlclRhc2suaCIKICNpbmNsdWRlICJXb3JrZXJUaHJl
YWQuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTEyMCw3ICsxMTksNyBAQCBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBX
b3JrZXJNZXNzYWdpbmdQcm94eQogCiB2b2lkIFdvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UoTWVz
c2FnZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIHBvc3RUYXNrVG9QYXJlbnRDb250ZXh0
KGNyZWF0ZUNhbGxiYWNrVGFzaygmYWRkTWVzc2FnZVRhc2ssIG1fdGhyZWFkLT5tZXNzYWdpbmdQ
cm94eSgpLCBkZXN0aW5hdGlvbiwgc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwg
c291cmNlVVJMKSk7CisgICAgcG9zdFRhc2tUb1dvcmtlck9iamVjdChjcmVhdGVDYWxsYmFja1Rh
c2soJmFkZE1lc3NhZ2VUYXNrLCBtX3RocmVhZC0+bWVzc2FnaW5nUHJveHkoKSwgZGVzdGluYXRp
b24sIHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwogfQog
CiB2b2lkIFdvcmtlckNvbnRleHQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1
bnNpZ25lZCBsb25nLCBjb25zdCBTY3JpcHRTdHJpbmcmKQpAQCAtMTg1LDM1ICsxODQsMTQgQEAg
Ym9vbCBXb3JrZXJDb250ZXh0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVk
KCk7CiB9CiAKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzayA6IHB1
YmxpYyBXb3JrZXJUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0VGFza1dvcmtlclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzayh0YXNrKSk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzayhQ
YXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCi0gICAgICAgIDog
bV90YXNrKHRhc2spCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFz
ayhXb3JrZXJDb250ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgbV90YXNrLT5wZXJmb3Jt
VGFzayhjb250ZXh0KTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gbV90YXNrOwotfTsKLQogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFzayhQYXNz
UmVmUHRyPFRhc2s+IHRhc2spCiB7Ci0gICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7CisgICAg
dGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKIH0KIAotdm9pZCBXb3JrZXJDb250
ZXh0Ojpwb3N0VGFza1RvUGFyZW50Q29udGV4dChQYXNzUmVmUHRyPFRhc2s+IHRhc2spCit2b2lk
IFdvcmtlckNvbnRleHQ6OnBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxUYXNrPiB0
YXNrKQogewotICAgIHRocmVhZCgpLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0VGFza1RvUGFyZW50
Q29udGV4dCh0YXNrKTsKKyAgICB0aHJlYWQoKS0+bWVzc2FnaW5nUHJveHkoKS0+cG9zdFRhc2tU
b1dvcmtlck9iamVjdCh0YXNrKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vV29ya2VyQ29u
dGV4dC5oCmluZGV4IDJlNDQzZDkuLjAwMzZiNzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dv
cmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKQEAgLTc4LDcg
Kzc4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBh
c3NSZWZQdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFk
IGFzeW5jaHJvbm91c2x5LgotICAgICAgICB2b2lkIHBvc3RUYXNrVG9QYXJlbnRDb250ZXh0KFBh
c3NSZWZQdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBpbiB0aGUgcGFyZW50J3MgY29u
dGV4dCAoYW5kIHRocmVhZCkgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIHZvaWQgcG9zdFRhc2tU
b1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24g
dGhlIHdvcmtlciBvYmplY3QncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcAppbmRleCBiMGQxNDVlLi5mNWExZWNkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwCkBAIC0zMywxNCArMzMsMTQgQEAKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKICNp
bmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyVGFzay5oIgogI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lc3Nh
Z2VXb3JrZXJDb250ZXh0VGFzayA6IHB1YmxpYyBXb3JrZXJUYXNrIHsKK2NsYXNzIE1lc3NhZ2VX
b3JrZXJDb250ZXh0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewpAQCAtNTMsOCArNTMsMTEgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFdv
cmtlckNvbnRleHQqIGNvbnRleHQpCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQpCiAgICAgeworICAgICAgICBBU1NFUlQo
c2NyaXB0Q29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOworICAgICAgICBXb3JrZXJDb250ZXh0
KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KHNjcmlwdENvbnRleHQpOwor
CiAgICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUobV9tZXNz
YWdlLCAiIiwgIiIsIDAsIDApOwogCiAgICAgICAgIGlmIChjb250ZXh0LT5vbm1lc3NhZ2UoKSkg
ewpAQCAtMjEzLDE3ICsyMTYsMjIgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgV29ya2Vy
TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKKyAgICBwb3N0VGFza1RvV29ya2VyQ29udGV4dChNZXNzYWdlV29ya2VyQ29u
dGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gdGFzaykKK3sKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV93b3JrZXJUaHJlYWQpIHsKICAgICAgICAgKyttX3VuY29u
ZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKKyAgICAg
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayh0YXNrKTsKICAgICB9IGVsc2UK
LSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRh
c2s6OmNyZWF0ZShtZXNzYWdlKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQo
dGFzayk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9QYXJlbnRD
b250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK3Zv
aWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+cG9zdFRhc2sodGFzayk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJv
eHkuaAppbmRleCA3ZmRjODc1Li5iMDEwNzAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmgKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFdvcmtlcjsK
LSAgICBjbGFzcyBXb3JrZXJUYXNrOwogICAgIGNsYXNzIFdvcmtlclRocmVhZDsKIAogICAgIGNs
YXNzIFdvcmtlck1lc3NhZ2luZ1Byb3h5IDogTm9uY29weWFibGUgewpAQCAtNDksNyArNDgsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgdm9pZCBwb3N0
VGFza1RvUGFyZW50Q29udGV4dChQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KTsKKworICAgICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CisgICAgICAgIHZvaWQgcG9zdFRhc2tUb1dv
cmtlckNvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAK
ICAgICAgICAgdm9pZCBwb3N0V29ya2VyRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCkBAIC04NSw3
ICs4Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fYXNrZWRUb1Rl
cm1pbmF0ZTsKIAotICAgICAgICBWZWN0b3I8UmVmUHRyPFdvcmtlclRhc2s+ID4gbV9xdWV1ZWRF
YXJseVRhc2tzOyAvLyBUYXNrcyBhcmUgcXVldWVkIGhlcmUgdW50aWwgdGhlcmUncyBhIHRocmVh
ZCBvYmplY3QgY3JlYXRlZC4KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiA+IG1fcXVldWVkRWFybHlUYXNrczsgLy8gVGFza3MgYXJlIHF1ZXVlZCBo
ZXJlIHVudGlsIHRoZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNyZWF0ZWQuCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9v
cC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCA5OGMyZThkLi5lOTI5
YjdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9XZWJD
b3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMzIsOSArMzIsOSBAQAogCiAjaWYgRU5BQkxF
KFdPUktFUlMpCiAKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLSNpbmNsdWRl
ICJXb3JrZXJUYXNrLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpydW4oV29ya2Vy
Q29udGV4dCogY29udGV4dCkKICAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCktPnRocmVhZElE
KCkgPT0gY3VycmVudFRocmVhZCgpKTsKICAgICAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBSZWZQdHI8V29ya2VyVGFzaz4gdGFzazsKKyAgICAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IHRhc2s7CiAgICAgICAgIGlmICghbV9tZXNzYWdlUXVldWUud2FpdEZv
ck1lc3NhZ2UodGFzaykpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtNTksNyArNTksNyBAQCB2
b2lkIFdvcmtlclJ1bkxvb3A6OnRlcm1pbmF0ZSgpCiAgICAgbV9tZXNzYWdlUXVldWUua2lsbCgp
OwogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKFBhc3NSZWZQdHI8V29ya2VyVGFz
az4gdGFzaykKK3ZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soUGFzc1JlZlB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewogICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVu
ZCh0YXNrKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuaCBiL1dl
YkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuaAppbmRleCAwM2E3NDZiLi4zMzlmZTFjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2Vy
UnVuTG9vcC5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2lu
Y2x1ZGUgIldvcmtlclRhc2suaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAKQEAgLTUxLDEwICs1MSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgdGVybWluYXRlKCk7CiAgICAgICAgIGJvb2wgdGVybWluYXRlZCgpIHsgcmV0dXJuIG1fbWVz
c2FnZVF1ZXVlLmtpbGxlZCgpOyB9CiAKLSAgICAgICAgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRy
PFdvcmtlclRhc2s+KTsKKyAgICAgICAgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
TWVzc2FnZVF1ZXVlPFJlZlB0cjxXb3JrZXJUYXNrPiA+IG1fbWVzc2FnZVF1ZXVlOworICAgICAg
ICBNZXNzYWdlUXVldWU8UmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+ID4gbV9t
ZXNzYWdlUXVldWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vV29ya2VyVGFzay5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEyMmM1OS4uMDAwMDAwMAotLS0gYS9X
ZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdPUktFUlMp
Ci0KLSNpbmNsdWRlICJXb3JrZXJUYXNrLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotV29y
a2VyVGFzazo6fldvcmtlclRhc2soKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtl
clRhc2suaCBiL1dlYkNvcmUvZG9tL1dvcmtlclRhc2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTg0MmNlMi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpZm5kZWYgV29y
a2VyVGFza19oCi0jZGVmaW5lIFdvcmtlclRhc2tfaAotCi0jaWYgRU5BQkxFKFdPUktFUlMpCi0K
LSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAg
IGNsYXNzIFdvcmtlckNvbnRleHQ7Ci0KLSAgICBjbGFzcyBXb3JrZXJUYXNrIDogcHVibGljIFRo
cmVhZFNhZmVTaGFyZWQ8V29ya2VyVGFzaz4gewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVh
bCB+V29ya2VyVGFzaygpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soV29ya2Vy
Q29udGV4dCopID0gMDsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV09SS0VSUykKLQotI2VuZGlmIC8vIFdvcmtlclRhc2tfaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVh
ZC5jcHAKaW5kZXggYTc2MmUwYi4uYjQ0ZDg0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29y
a2VyVGhyZWFkLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zNyw3
ICszNyw2IEBACiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyVGFz
ay5oIgogCiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oIGIvV2ViQ29yZS9kb20vV29y
a2VyVGhyZWFkLmgKaW5kZXggNTA0ZGI4MS4uYmQ3OTJkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vV29ya2VyVGhyZWFkLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKQEAgLTQw
LDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFN0cmluZzsKICAgICBj
bGFzcyBXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIFdvcmtlck1lc3NhZ2luZ1Byb3h5OwotICAg
IGNsYXNzIFdvcmtlclRhc2s7CiAgICAgc3RydWN0IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOwog
CiAgICAgY2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFk
PiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27243</attachid>
            <date>2009-02-01 22:55:09 -0800</date>
            <delta_ts>2009-02-02 08:33:24 -0800</delta_ts>
            <desc>Part 2: Enable the async portion of ThreadableLoader for Workers.</desc>
            <filename>bug23636-part2.txt</filename>
            <type>text/plain</type>
            <size>35347</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTM5Y2FiZC4uMjdjZTVhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAwOS0wMi0wMSAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIEVuYWJsZSBUaHJlYWRhYmxlTG9hZGVyIGZvciB3b3JrZXJzLiAgTm93
LCB3aGVuIHRoZSB4aHIgYmluZGluZ3MgYXJlCisgICAgICAgIGV4cG9zZWQgdG8gd29ya2Vycywg
YXN5bmMgeGhyIHNob3VsZCB3b3JrLgorCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGlu
IGJlaGF2aW9yLCBzbyBubyB0ZXN0LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS5zY29uczoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAg
ICAqIGRvbS9Dcm9zc1RocmVhZENvcGllci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAg
ICAgKiBkb20vR2VuZXJpY1dvcmtlclRhc2suaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgICogZG9tL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRpZFNl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRHZXRDYW5jZWxsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6On5Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJp
ZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZERlc3Ryb3kp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpj
bGVhckNsaWVudFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZFNl
bmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRl
eHREaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRG
YWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZEdl
dENhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpkaWRHZXRDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6d29y
a2VyQ29udGV4dERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24pOgorICAgICAgICAqIGxvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVMb2FkZXI6OnJlZlRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6ZGVyZWZUaHJlYWRhYmxlTG9hZGVyKToKKwogMjAwOS0wMS0zMCAg
RGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA3MmM2ZTRmLi5iZWY0NWY1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEw
OTAsNiArMTA5MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaCBc
CiAJV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIFwKKwlXZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBcCisJV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5oIFwKIAlXZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmUuaCBc
CiAJV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgXAogCVdlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBiMTk2MmMxLi5mYTA5ZGExIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTgxMyw2ICs4MTMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvVGV4dERvY3VtZW50
LmNwcCBcCiAgICAgbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIFwKICAgICBsb2FkZXIv
VGhyZWFkYWJsZUxvYWRlci5jcHAgXAorICAgIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcCBcCiAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBcCiAgICAgcGFn
ZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBcICAgIAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxp
c3QuY3BwIFwgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuc2NvbnMgYi9XZWJDb3Jl
L1dlYkNvcmUuc2NvbnMKaW5kZXggM2ExMzUwMC4uNzhlMWE0NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnNjb25zCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5zY29ucwpAQCAtMzU4LDYgKzM1
OCw3IEBAIHNvdXJjZXNbJ2xvYWRlciddID0gWwogICAgICdsb2FkZXIvVGV4dFJlc291cmNlRGVj
b2Rlci5jcHAnLAogICAgICdsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAnLAogICAgICdsb2Fk
ZXIvVXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwJywKKyAgICAnbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwJywKIF0KIHNvdXJjZXNbJ3BhZ2UnXSA9IFsKICAgICAncGFnZS9BY2Nlc3Np
YmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA5N2VkMTUzLi44OTNjZTM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTI5NDMsNiArMjk0MywxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVy
XFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGxvYWRlclxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQog
CQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJpY29uIg0KIAkJCQk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYTNlMTM2Li43MjVkN2VkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5LDYgKzEzOSw4IEBACiAJ
CTBCOTA1NjFCMEYyNTc4QkYwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTYxNzBGMjU3OEJFMDA5
NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KCk7IH07IH07CiAJCTBCOTA1NjFDMEYyNTc4QkYwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QjkwNTYxODBGMjU3OEJFMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTBCOTA1NjFFMEYyNTdFOTMwMDk1
RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NjFEMEYyNTdFOTMwMDk1RkY2QSAvKiBUaHJlYWRhYmxl
TG9hZGVyLmNwcCAqLzsgfTsKKwkJMEI5MDU2RjgwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEI5MDU2RjYwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwICovOyB9OworCQkwQjkwNTZGOTBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEI5MDU2RjcwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwQkE1RDM4NjBGMjQwRkI0
MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmlj
V29ya2VyVGFzay5oICovOyB9OwogCQkwQkI0REJFMjBGMkVFMjk4MDAzNTQ2MTkgLyogQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEJCNERCRTEwRjJFRTI5ODAwMzU0NjE5IC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAq
LzsgfTsKIAkJMEJFMDMwQTIwRjMxMTJGQjAwM0MxQTQ2IC8qIFJlbmRlckxpbmVCb3hMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkUwMzBBMTBG
MzExMkZCMDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk4NSw2ICs0OTg3LDggQEAKIAkJMEI5
MDU2MTcwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkYWJsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQjkwNTYxODBGMjU3OEJFMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOTA1NjFEMEYyNTdF
OTMwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRocmVhZGFibGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwQjkwNTZGNjBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEI5MDU2Rjcw
RjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dv
cmtlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dvcmtl
clRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJCNERCRTEwRjJFRTI5ODAw
MzU0NjE5IC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEJFMDMwQTEwRjMxMTJGQjAwM0MxQTQ2IC8qIFJlbmRlckxpbmVCb3hMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckxpbmVCb3hMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzYwMSw2ICsxMzYwNSw4IEBACiAJCQkJMEI5
MDU2MTgwRjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCAqLywKIAkJ
CQk3Mjg0QUREQjBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwICov
LAogCQkJCTcyODRBRERDMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5o
ICovLAorCQkJCTBCOTA1NkY2MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCAqLywKKwkJCQkwQjkwNTZGNzBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5oICovLAogCQkJCUJDQjE2QzEzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIu
Y3BwICovLAogCQkJCUJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLywKIAkJ
CSk7CkBAIC0xNjU5OCw2ICsxNjYwNCw3IEBACiAJCQkJMThBMDUzN0QwRjI2ODU5QzAwQTUxNzA1
IC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTY0M0YyMEVDMDk3MjUw
MDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUMyQzQyNDBFQUNFMEJDMDA3RTYxRkIgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwQjkwNTZGOTBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgyMDIwOUQx
NTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQzQ3
MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
ODU4MSw2ICsxODU4OCw3IEBACiAJCQkJMThBMDUzN0MwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtl
clJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBNjQzRkQwRUMwOTdBMDAwNzc5NjY4
IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDMkM0
MjkwRUFDRTBFMDAwN0U2MUZCIC8qIFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwQjkwNTZGODBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUyMzA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRl
bnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEy
Q0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcy
QzQ2MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3Jl
U291cmNlcy5ia2wKaW5kZXggZDU2MTdjYi4uOWU4ODc1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKQEAgLTY1
OCw2ICs2NTgsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVk
IHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIGxvYWRlci9UZXh0RG9jdW1lbnQuY3BwCiAgICAg
ICAgIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAogICAgICAgICBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAKKyAgICAgICAgbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CiAgICAgICAgIGxvYWRlci9sb2FkZXIuY3BwCiAgICAgPC9zZXQ+CiAgICAgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZENvcGllci5oIGIvV2ViQ29yZS9kb20vQ3Jvc3NUaHJl
YWRDb3BpZXIuaAppbmRleCBiYThlZmM3Li5mZDUzZWU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Dcm9zc1RocmVhZENvcGllci5oCisrKyBiL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkQ29waWVy
LmgKQEAgLTM0LDYgKzM0LDkgQEAKICNpZiBFTkFCTEUoV09SS0VSUykKIAogI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjQsNiArNjcsMjIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIH07CiAKICAgICAvLyBDdXN0b20gY29weSBtZXRob2RzLgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIFJlZlB0
cjxUaHJlYWRTYWZlU2hhcmVkPFQ+ID4gPiB7CisgICAgICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxU
PiBUeXBlOworICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFJlZlB0cjxUaHJlYWRTYWZl
U2hhcmVkPFQ+ID4mIHJlZlB0cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFBhc3NS
ZWZQdHI8VD4oc3RhdGljX2Nhc3Q8VCo+KHJlZlB0ci5nZXQoKSkpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJh
c2U8ZmFsc2UsIHN0ZDo6YXV0b19wdHI8VD4gPiB7CisgICAgICAgIHR5cGVkZWYgc3RkOjphdXRv
X3B0cjxUPiBUeXBlOworICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IHN0ZDo6YXV0b19w
dHI8VD4mIGF1dG9QdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmF1dG9f
cHRyPFQ+KCpjb25zdF9jYXN0PHN0ZDo6YXV0b19wdHI8VD4qPigmYXV0b1B0cikpOworICAgICAg
ICB9CisgICAgfTsKKwogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgU3RyaW5nPiB7CiAgICAgICAgIHR5cGVkZWYgU3RyaW5nIFR5cGU7CiAgICAgICAg
IHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9HZW5lcmljV29ya2VyVGFzay5oIGIvV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaApp
bmRleCBiODFlMmZhLi45NmIwZTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9HZW5lcmljV29y
a2VyVGFzay5oCisrKyBiL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmgKQEAgLTU0LDYg
KzU0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBzdGQ6OmF1dG9f
cHRyPFQ+IFBhcmFtVHlwZTsKICAgICB9OwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEdlbmVyaWNXb3JrZXJUYXNrVHJhaXRzPFBhc3NSZWZQdHI8VD4gPiB7CisgICAgICAgIHR5
cGVkZWYgUGFzc1JlZlB0cjxUPiBQYXJhbVR5cGU7CisgICAgfTsKKwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+CiAgICAgY2xhc3MgR2VuZXJpY1dvcmtlclRhc2sxIDog
cHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogICAgIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJU
aHJlYWQuY3BwCmluZGV4IGI0NGQ4NDMuLjQwNTQxYjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L1dvcmtlclRocmVhZC5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmNwcApAQCAt
MzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiV29y
a2VyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgiCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMGYyMmZi
ZS4uMGJhMGM1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTM2LDYgKzM2
LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQu
aCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDMsOCArNDUsMTMgQEAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIHsKICAg
ICBBU1NFUlQoY2xpZW50KTsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgQVNTRVJUKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7CiAKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBpZiAoY29udGV4
dC0+aXNXb3JrZXJDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLCBjbGllbnQs
IHJlcXVlc3QsIGNhbGxiYWNrc1NldHRpbmcsIGNvbnRlbnRTbmlmZik7CisjZW5kaWYgLy8gRU5B
QkxFKFdPUktFUlMpCisKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBy
ZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihjb250ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50
U25pZmYpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5kZXgg
NGZkZTQwNC4uMjEwYjc4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlckNsaWVudC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQu
aApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50IC8qbGVu
Z3RoUmVjZWl2ZWQqLykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgLyppZGVudGlmZXIqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8pIHsgfQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0
Q2FuY2VsbGVkKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyLmggYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2OWM5MmEK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlci5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXJfaAorI2RlZmluZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcl9oCisKKyNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8VGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBjcmVhdGUoVGhyZWFkYWJsZUxvYWRlckNs
aWVudCogY2xpZW50KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyKGNsaWVudCkpOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBjbGVhckNsaWVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY2xpZW50
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3Ro
UmVjZWl2ZWQpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZp
ZXIpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGYWlsKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRGYWls
KCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEdldENhbmNlbGxlZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkR2V0Q2FuY2VsbGVkKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICB9CisKKyAg
ICBwcm90ZWN0ZWQ6CisgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyKFRocmVh
ZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCkKKyAgICAgICAgICAgIDogbV9jbGllbnQoY2xpZW50
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
KiBtX2NsaWVudDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4
ZmY4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgorCisj
aW5jbHVkZSAiR2VuZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlci5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJNZXNz
YWdpbmdQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2FsbGJhY2tz
IGNhbGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYpCisgICAgOiBtX3dv
cmtlckNvbnRleHQod29ya2VyQ29udGV4dCkKKyAgICAsIG1fYnJpZGdlKG5ldyBNYWluVGhyZWFk
QnJpZGdlKGNsaWVudCwgbV93b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+bWVzc2FnaW5nUHJveHko
KSwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKSkKK3sKK30KKworV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6fldvcmtlclRocmVhZGFibGVMb2FkZXIoKQoreworICAgIG1f
YnJpZGdlLT5kZXN0cm95KCk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y2Fu
Y2VsKCkKK3sKKyAgICBtX2JyaWRnZS0+Y2FuY2VsKCk7Cit9CisKK1dvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCogd29ya2VyQ2xpZW50LCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHksIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZENhbGxiYWNrcyBjYWxsYmFj
a3NTZXR0aW5nLCBDb250ZW50U25pZmYgY29udGVudFNuaWZmKQorICAgIDogbV93b3JrZXJDbGll
bnRXcmFwcGVyKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpjcmVhdGUod29ya2VyQ2xp
ZW50KSkKKyAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCit7CisgICAgQVNT
RVJUKHdvcmtlckNsaWVudCk7CisgICAgQVNTRVJUKG1lc3NhZ2luZ1Byb3h5KTsKKyAgICBtX21l
c3NhZ2luZ1Byb3h5LT5wb3N0VGFza1RvV29ya2VyT2JqZWN0KGNyZWF0ZUNhbGxiYWNrVGFzaygm
TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlciwgdGhpcywgcmVxdWVzdCwg
Y2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKSk7Cit9CisKK1dvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJpZGdlKCkKK3sKK30KKwordm9p
ZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ3Jl
YXRlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1haW5UaHJlYWRCcmlk
Z2UqIHRoaXNQdHIsIGF1dG9fcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gcmVx
dWVzdERhdGEsIExvYWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNv
bnRlbnRTbmlmZikKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBhc3NlcnQgZmFpbHMgZm9yIG5lc3Rl
ZCB3b3JrZXJzLiAgUmVtb3ZpbmcgdGhlIGFzc2VydCB3b3VsZCBhbGxvdyBpdCB0byB3b3JrLAor
ICAgIC8vIGJ1dCB0aGVuIHRoZXJlIHdvdWxkIGJlIG9uZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
IGluIGV2ZXJ5IGludGVybWVkaWF0ZSB3b3JrZXIgc2ltcGx5CisgICAgLy8gY2hhaW5pbmcgdGhl
IHJlcXVlc3RzLCB3aGljaCBpcyBub3QgdmVyeSBnb29kLiBJbnN0ZWFkLCB0aGUgcG9zdFRhc2tU
b1dvcmtlck9iamVjdCBzaG91bGQgYmUgYQorICAgIC8vIHBvc3RUYXNrVG9Eb2N1bWVudENvbnRl
eHQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNE
b2N1bWVudCgpKTsKKworICAgIGlmICh0aGlzUHRyLT5tX21lc3NhZ2luZ1Byb3h5LT5hc2tlZFRv
VGVybWluYXRlKCkpIHsKKyAgICAgICAgdGhpc1B0ci0+ZGlkRmFpbCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IHRoZSBjcmVhdGVkIGxvYWRlciBoYXMgbm8ga25v
d2xlZGdlIG9mIHRoZSBvcmlnaW4gb2YgdGhlIHdvcmtlciBkb2luZyB0aGUgbG9hZCByZXF1ZXN0
LgorICAgIC8vIEJhc2ljYWxseSBldmVyeSBzZXR0aW5nIGRvbmUgaW4gU3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZSAoaW5jbHVkaW5nIHRoZSBjb250ZW50cyBvZiBhZGRFeHRyYUZpZWxkc1RvUmVx
dWVzdCkKKyAgICAvLyBuZWVkcyB0byBiZSBleGFtaW5lZCBmb3IgaG93IGl0IHNob3VsZCBiZSB0
YWtlIGludG8gYWNjb3VudCBhIGRpZmZlcmVudCBvcmlnaW5hdG9yLgorICAgIE93blB0cjxSZXNv
dXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChyZXF1ZXN0RGF0YSkp
OworICAgIHRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShjb250ZXh0LCB0aGlzUHRyLCAqcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVu
dFNuaWZmKTsKKyAgICBpZiAoIXRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlcikKKyAgICAgICAg
dGhpc1B0ci0+ZGlkRmFpbCgpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRoaXNQdHIpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1l
bnQoKSk7CisgICAgZGVsZXRlIHRoaXNQdHI7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGVzdHJveSgpCit7CisgICAgLy8gRW5zdXJlIHRoYXQg
bm8gbW9yZSBjbGllbnQgY2FsbGJhY2tzIGFyZSBkb25lIGluIHRoZSB3b3JrZXIgY29udGV4dCdz
IHRocmVhZC4KKyAgICBjbGVhckNsaWVudFdyYXBwZXIoKTsKKworICAgIC8vICJkZWxldGUgdGhp
cyIgYW5kIG1fbWFpblRocmVhZExvYWRlcjo6ZGVyZWYoKSBvbiB0aGUgd29ya2VyIG9iamVjdCdz
IHRocmVhZC4KKyAgICBtX21lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza1RvV29ya2VyT2JqZWN0KGNy
ZWF0ZUNhbGxiYWNrVGFzaygmTWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZERlc3Ryb3ksIHRo
aXMpKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjptYWluVGhyZWFkQ2FuY2VsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1haW5U
aHJlYWRCcmlkZ2UqIHRoaXNQdHIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CisKKyAgICBp
ZiAoIXRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlcikKKyAgICAgICAgcmV0dXJuOworICAgIHRo
aXNQdHItPm1fbWFpblRocmVhZExvYWRlci0+Y2FuY2VsKCk7CisgICAgdGhpc1B0ci0+bV9tYWlu
VGhyZWFkTG9hZGVyID0gMDsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpjYW5jZWwoKQoreworICAgIG1fbWVzc2FnaW5nUHJveHktPnBvc3RUYXNr
VG9Xb3JrZXJPYmplY3QoY3JlYXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWlu
VGhyZWFkQ2FuY2VsLCB0aGlzKSk7CisgICAgY2xlYXJDbGllbnRXcmFwcGVyKCk7Cit9CisKK3Zv
aWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2xlYXJDbGllbnRX
cmFwcGVyKCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
cio+KG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSktPmNsZWFyQ2xpZW50KCk7Cit9CisKK3Zv
aWQgd29ya2VyQ29udGV4dERpZFNlbmREYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQt
PmlzV29ya2VyQ29udGV4dCgpKTsKKyAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTZW5kRGF0
YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKK3sK
KyAgICBtX21lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza1RvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kRGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVy
LCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCkpOworfQorCit2b2lkIHdvcmtlckNvbnRl
eHREaWRSZWNlaXZlUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVm
UHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBh
dXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiByZXNwb25zZURhdGEpCit7
CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7
CisgICAgT3duUHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2U6
OmFkb3B0KHJlc3BvbnNlRGF0YSkpOworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2Vp
dmVSZXNwb25zZSgqcmVzcG9uc2UpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK3sKKyAgICBtX21lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza1RvV29ya2Vy
Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlUmVzcG9u
c2UsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgcmVzcG9uc2UpKTsKK30KKwordm9pZCB3b3JrZXJD
b250ZXh0RGlkUmVjZWl2ZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVm
UHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBh
dXRvX3B0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3JEYXRhKQoreworICAgIEFTU0VSVF9VTlVTRUQo
Y29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOworICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVEYXRhKHZlY3RvckRhdGEtPmRhdGEoKSwgdmVjdG9yRGF0YS0+c2l6
ZSgpKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7
CisgICAgYXV0b19wdHI8VmVjdG9yPGNoYXI+ID4gdmVjdG9yKG5ldyBWZWN0b3I8Y2hhcj4obGVu
Z3RoUmVjZWl2ZWQpKTsgLy8gbmVlZHMgdG8gYmUgYW4gYXV0b19wdHIgZm9yIHVzYWdlIHdpdGgg
Y3JlYXRlQ2FsbGJhY2tUYXNrLgorICAgIG1lbWNweSh2ZWN0b3ItPmRhdGEoKSwgZGF0YSwgbGVu
Z3RoUmVjZWl2ZWQpOworICAgIG1fbWVzc2FnaW5nUHJveHktPnBvc3RUYXNrVG9Xb3JrZXJDb250
ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVEYXRhLCBtX3dv
cmtlckNsaWVudFdyYXBwZXIsIHZlY3RvcikpOworfQorCit2b2lkIHdvcmtlckNvbnRleHREaWRG
aW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgaW50IGlkZW50
aWZpZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNv
bnRleHQoKSk7CisgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVu
dGlmaWVyKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRGaW5pc2hMb2FkaW5nKGludCBpZGVudGlmaWVyKQoreworICAgIG1fbWVzc2FnaW5n
UHJveHktPnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2Vy
Q29udGV4dERpZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmll
cikpOworfQorCit2b2lkIHdvcmtlckNvbnRleHREaWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2Vy
Q2xpZW50V3JhcHBlcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlz
V29ya2VyQ29udGV4dCgpKTsKKyAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKCk7Cit9
CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFp
bCgpCit7CisgICAgbV9tZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tUb1dvcmtlckNvbnRleHQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkRmFpbCwgbV93b3JrZXJDbGllbnRXcmFw
cGVyKSk7Cit9CisKK3ZvaWQgd29ya2VyQ29udGV4dERpZEdldENhbmNlbGxlZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXI+IHdvcmtlckNsaWVudFdyYXBwZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CisgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
R2V0Q2FuY2VsbGVkKCk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkR2V0Q2FuY2VsbGVkKCkKK3sKKyAgICBtX21lc3NhZ2luZ1Byb3h5LT5w
b3N0VGFza1RvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHRE
aWRHZXRDYW5jZWxsZWQsIG1fd29ya2VyQ2xpZW50V3JhcHBlcikpOworfQorCit2b2lkIHdvcmtl
ckNvbnRleHREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVy
PiB3b3JrZXJDbGllbnRXcmFwcGVyLCBhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9u
c2VEYXRhPiByZXNwb25zZURhdGEpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CisgICAgT3duUHRyPFJlc291cmNlUmVzcG9uc2U+IHJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2U6OmFkb3B0KHJlc3BvbnNlRGF0YSkpOworICAgIHdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbigqcmVz
cG9uc2UpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX21lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza1RvV29y
a2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DYW5jZWxsYXRpb24sIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgcmVzcG9uc2Up
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktF
UlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgg
Yi9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmYzE1ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcl9oCisjZGVmaW5lIFdvcmtlclRocmVhZGFibGVMb2FkZXJf
aAorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgi
CisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXJDbGllbnRXcmFwcGVyLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKKyAgICBjbGFzcyBXb3JrZXJD
b250ZXh0OworICAgIGNsYXNzIFdvcmtlck1lc3NhZ2luZ1Byb3h5OworICAgIHN0cnVjdCBDcm9z
c1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhOworICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGE7CisKKyAgICBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxl
TG9hZGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlclRo
cmVhZGFibGVMb2FkZXI+IGNyZWF0ZShXb3JrZXJDb250ZXh0KiB3b3JrZXIsIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2Fk
Q2FsbGJhY2tzIGNhbGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcih3b3JrZXIsIGNsaWVudCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVu
dFNuaWZmKSk7CisgICAgICAgIH0KKworICAgICAgICB+V29ya2VyVGhyZWFkYWJsZUxvYWRlcigp
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKworICAgICAgICB1c2luZyBSZWZD
b3VudGVkPFdvcmtlclRocmVhZGFibGVMb2FkZXI+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNv
dW50ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj46OmRlcmVmOworCisgICAgcHJvdGVjdGVkOgor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmVGhyZWFkYWJsZUxvYWRlcigpIHsgcmVmKCk7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRlcmVmVGhyZWFkYWJsZUxvYWRlcigpIHsgZGVyZWYoKTsgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gQ3JlYXRlcyBhIGxvYWRlciBvbiB0aGUgbWFpbiB0
aHJlYWQgYW5kIGJyaWRnZXMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCisgICAgICAgIC8vIHRoZSBt
YWluIHRocmVhZCBhbmQgdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkIHdoZXJlIFdvcmtlclRo
cmVhZGFibGVMb2FkZXIgcnVucy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gUmVnYXJkaW5nIHRo
ZSBicmlkZ2UgYW5kIGxpZmV0aW1lcyBvZiBpdGVtcyB1c2VkIGluIGNhbGxiYWNrcywgdGhlcmUg
YXJlIGEgZmV3IGNhc2VzOgorICAgICAgICAvLworICAgICAgICAvLyBhbGwgY2FzZXMuIEFsbCB0
YXNrcyBwb3N0ZWQgZnJvbSB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQgYXJlIG9rIGJlY2F1
c2UKKyAgICAgICAgLy8gICAgdGhlIGxhc3QgdGFzayBwb3N0ZWQgYWx3YXlzIGlzICJtYWluVGhy
ZWFkRGVzdHJveSIsIHNvIE1haW5UaHJlYWRCcmlkZ2UgaXMKKyAgICAgICAgLy8gICAgYXJvdW5k
IGZvciBhbGwgdGFza3MgdGhhdCB1c2UgaXQgb24gdGhlIG1pYW4gdGhyZWFkLgorICAgICAgICAv
LworICAgICAgICAvLyBjYXNlIDEuIHdvcmtlci50ZXJtaW5hdGUgaXMgY2FsbGVkLgorICAgICAg
ICAvLyAgICBJbiB0aGlzIGNhc2UsIG5vIG1vcmUgdGFza3MgYXJlIHBvc3RlZCBmcm9tIHRoZSB3
b3JrZXIgb2JqZWN0J3MgdGhyZWFkIHRvIHRoZSB3b3JrZXIKKyAgICAgICAgLy8gICAgY29udGV4
dCdzIHRocmVhZCAtLSBXb3JrZXJNZXNzYWdpbmdQcm94eSBlbmZvcmNlcyB0aGlzLgorICAgICAg
ICAvLworICAgICAgICAvLyBjYXNlIDIuIHhociBnZXRzIGFib3J0ZWQgYW5kIHRoZSB3b3JrZXIg
Y29udGV4dCBjb250aW51ZXMgcnVubmluZy4KKyAgICAgICAgLy8gICAgVGhlIFRocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyIGhhcyB0aGUgdW5kZXJseWluZyBjbGllbnQgY2xlYXJlZCwgc28g
bm8gbW9yZSBjYWxscworICAgICAgICAvLyAgICBnbyB0aHJvdWdoIGl0LiAgQWxsIHRhc2tzIHBv
c3RlZCBmcm9tIHRoZSB3b3JrZXIgb2JqZWN0J3MgdGhyZWFkIHRvIHRoZSB3b3JrZXIgY29udGV4
dCdzCisgICAgICAgIC8vICAgIHRocmVhZCBkbyAiVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXI6OnJlZiIgKGF1dG9tYXRpY2FsbHkgaW5zaWRlIG9mIHRoZSBjcm9zcyB0aHJlYWQgY29weQor
ICAgICAgICAvLyAgICBkb25lIGluIGNyZWF0ZUNhbGxiYWNrVGFzayksIHNvIHRoZSBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlciBpbnN0YW5jZSBpcyB0aGVyZSB1bnRpbCBhbGwKKyAgICAg
ICAgLy8gICAgdGFza3MgYXJlIGV4ZWN1dGVkLgorICAgICAgICBjbGFzcyBNYWluVGhyZWFkQnJp
ZGdlIDogVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAg
ICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQuCisgICAg
ICAgICAgICBNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBXb3JrZXJN
ZXNzYWdpbmdQcm94eSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRDYWxsYmFja3MsIENv
bnRlbnRTbmlmZik7CisgICAgICAgICAgICB2b2lkIGNhbmNlbCgpOworICAgICAgICAgICAgdm9p
ZCBkZXN0cm95KCk7CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIC8vIEV4ZWN1dGVk
IG9uIHRoZSB3b3JrZXIgY29udGV4dCdzIHRocmVhZC4KKyAgICAgICAgICAgIHZvaWQgY2xlYXJD
bGllbnRXcmFwcGVyKCk7CisKKyAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCisgICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTWFpblRocmVhZEJyaWRnZSopOworICAgICAgICAgICAgfk1h
aW5UaHJlYWRCcmlkZ2UoKTsKKworICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENy
ZWF0ZUxvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWFpblRocmVhZEJyaWRnZSosIHN0
ZDo6YXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiwgTG9hZENhbGxiYWNr
cywgQ29udGVudFNuaWZmKTsKKyAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDYW5j
ZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKKyAgICAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoaW50IGlkZW50aWZpZXIpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKTsK
KyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRDYW5jZWxsZWQoKTsKKyAgICAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgICAgICAgICAvLyBPbmx5IHRvIGJlIHVzZWQgb24g
dGhlIG1haW4gdGhyZWFkLgorICAgICAgICAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1f
bWFpblRocmVhZExvYWRlcjsKKworICAgICAgICAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXIgaXMgdG8gYmUgdXNlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQgdGhyZWFkLgorICAg
ICAgICAgICAgLy8gVGhlIHJlZiBjb3VudGluZyBpcyBkb25lIG9uIGVpdGhlciB0aHJlYWQuCisg
ICAgICAgICAgICBSZWZQdHI8VGhyZWFkU2FmZVNoYXJlZDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcj4gPiBtX3dvcmtlckNsaWVudFdyYXBwZXI7CisKKyAgICAgICAgICAgIC8vIE1heWJl
IHVzZWQgb24gZWl0aGVyIHRocmVhZC4KKyAgICAgICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5
KiBtX21lc3NhZ2luZ1Byb3h5OworICAgICAgICB9OworCisgICAgICAgIFdvcmtlclRocmVhZGFi
bGVMb2FkZXIoV29ya2VyQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYpOworCisgICAgICAg
IFJlZlB0cjxXb3JrZXJDb250ZXh0PiBtX3dvcmtlckNvbnRleHQ7CisgICAgICAgIE1haW5UaHJl
YWRCcmlkZ2UqIG1fYnJpZGdlOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQorCisjZW5kaWYgLy8gV29ya2VyVGhyZWFkYWJsZUxv
YWRlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27247</attachid>
            <date>2009-02-02 08:33:24 -0800</date>
            <delta_ts>2009-02-02 18:01:43 -0800</delta_ts>
            <desc>Part 2: Enable the async portion of ThreadableLoader for Workers.</desc>
            <filename>bug23636-part2.txt</filename>
            <type>text/plain</type>
            <size>37274</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTM5Y2FiZC4uOWQ4OTVjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAwOS0wMi0wMSAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIyNzIwOiBNYWtlIFhNTEh0dHBSZXF1ZXN0IHdvcmsgaW4gV29y
a2VycworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzIwPgorCisgICAgICAgIEVuYWJsZSB0aGUgYXN5bmMgcG9ydGlvbiBvZiBUaHJlYWRhYmxlTG9h
ZGVyIGZvciB3b3JrZXJzLgorCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdlIGluIGJlaGF2
aW9yLCBzbyBubyB0ZXN0LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS5zY29uczoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGRv
bS9Dcm9zc1RocmVhZENvcGllci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBk
b20vR2VuZXJpY1dvcmtlclRhc2suaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICog
ZG9tL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRpZFNlbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRHZXRDYW5jZWxsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcjo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIpOgorICAg
ICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6On5Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6
OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJpZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZERlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjbGVhckNs
aWVudFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZFNlbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OndvcmtlckNvbnRleHREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRGYWlsKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZEdldENhbmNl
bGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkaWRHZXRDYW5jZWxsZWQpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29u
dGV4dERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24pOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OnJlZlRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6ZGVyZWZUaHJlYWRhYmxlTG9hZGVyKToKKwogMjAwOS0wMS0zMCAgRGF2aWQg
TGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQppbmRleCA3MmM2ZTRmLi5iZWY0NWY1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEwOTAsNiAr
MTA5MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaCBcCiAJV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIFwKKwlXZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBcCisJV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5oIFwKIAlXZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmUuaCBcCiAJV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgXAogCVdlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
cHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBiMTk2MmMxLi5mYTA5ZGExIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTgx
Myw2ICs4MTMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvVGV4dERvY3VtZW50LmNwcCBc
CiAgICAgbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIFwKICAgICBsb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAgXAorICAgIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBc
CiAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCBcCiAgICAgcGFnZS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCBcICAgIAogICAgIHBhZ2UvQWNjZXNzaWJpbGl0eUxpc3QuY3Bw
IFwgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuc2NvbnMgYi9XZWJDb3JlL1dlYkNv
cmUuc2NvbnMKaW5kZXggM2ExMzUwMC4uNzhlMWE0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnNjb25zCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5zY29ucwpAQCAtMzU4LDYgKzM1OCw3IEBA
IHNvdXJjZXNbJ2xvYWRlciddID0gWwogICAgICdsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHAnLAogICAgICdsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAnLAogICAgICdsb2FkZXIvVXNl
clN0eWxlU2hlZXRMb2FkZXIuY3BwJywKKyAgICAnbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwJywKIF0KIHNvdXJjZXNbJ3BhZ2UnXSA9IFsKICAgICAncGFnZS9BY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCA5N2VkMTUzLi44OTNjZTM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTI5NDMsNiArMjk0MywxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXFRocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRl
clxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZp
bHRlcg0KIAkJCQlOYW1lPSJpY29uIg0KIAkJCQk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAwYTNlMTM2Li43MjVkN2VkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5LDYgKzEzOSw4IEBACiAJCTBCOTA1
NjFCMEYyNTc4QkYwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTYxNzBGMjU3OEJFMDA5NUZGNkEg
LyogVGhyZWFkYWJsZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07
IH07CiAJCTBCOTA1NjFDMEYyNTc4QkYwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTYx
ODBGMjU3OEJFMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTBCOTA1NjFFMEYyNTdFOTMwMDk1RkY2QSAv
KiBUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCOTA1NjFEMEYyNTdFOTMwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVy
LmNwcCAqLzsgfTsKKwkJMEI5MDU2RjgwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEI5MDU2RjYwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
ICovOyB9OworCQkwQjkwNTZGOTBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5
MDU2RjcwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkwQkE1RDM4NjBGMjQwRkI0MDA5Qjg3
MEIgLyogR2VuZXJpY1dvcmtlclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBCQTVEMzg1MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29ya2Vy
VGFzay5oICovOyB9OwogCQkwQkI0REJFMjBGMkVFMjk4MDAzNTQ2MTkgLyogQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEJCNERCRTEwRjJFRTI5ODAwMzU0NjE5IC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLzsgfTsK
IAkJMEJFMDMwQTIwRjMxMTJGQjAwM0MxQTQ2IC8qIFJlbmRlckxpbmVCb3hMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkUwMzBBMTBGMzExMkZC
MDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk4NSw2ICs0OTg3LDggQEAKIAkJMEI5MDU2MTcw
RjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkYWJsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwQjkwNTYxODBGMjU3OEJFMDA5NUZGNkEgLyogVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOTA1NjFEMEYyNTdFOTMwMDk1
RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRocmVhZGFibGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwQjkwNTZGNjBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEI5MDU2RjcwRjI2ODVG
MzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkE1RDM4NTBGMjQwRkI0MDA5Qjg3MEIgLyogR2VuZXJpY1dvcmtlclRh
c2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1dvcmtlclRhc2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJCNERCRTEwRjJFRTI5ODAwMzU0NjE5
IC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEJFMDMwQTEwRjMxMTJGQjAwM0MxQTQ2IC8qIFJlbmRlckxpbmVCb3hMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckxpbmVCb3hMaXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzYwMSw2ICsxMzYwNSw4IEBACiAJCQkJMEI5MDU2MTgw
RjI1NzhCRTAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCAqLywKIAkJCQk3Mjg0
QUREQjBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwICovLAogCQkJ
CTcyODRBRERDMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5oICovLAor
CQkJCTBCOTA1NkY2MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cCAqLywKKwkJCQkwQjkwNTZGNzBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oICovLAogCQkJCUJDQjE2QzEzMDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuY3BwICov
LAogCQkJCUJDQjE2QzE0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBsb2FkZXIuaCAqLywKIAkJCSk7CkBA
IC0xNjU5OCw2ICsxNjYwNCw3IEBACiAJCQkJMThBMDUzN0QwRjI2ODU5QzAwQTUxNzA1IC8qIFdv
cmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTY0M0YyMEVDMDk3MjUwMDc3OTY2
OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUMyQzQy
NDBFQUNFMEJDMDA3RTYxRkIgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
QjkwNTZGOTBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTMzMDlFMjQwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgyMDIwOUQxNTA4RDAw
MEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQzQ3MEM0RUIy
QzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODU4MSw2
ICsxODU4OCw3IEBACiAJCQkJMThBMDUzN0MwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxv
b3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBNjQzRkQwRUMwOTdBMDAwNzc5NjY4IC8qIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDMkM0MjkwRUFD
RTBFMDAwN0U2MUZCIC8qIFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwQjkw
NTZGODBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzMwOUUyMzA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRzSW5E
dW1teVNwYW5Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEyQ0YwNzQw
MEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyQzQ2MEM0
RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNl
cy5ia2wKaW5kZXggZDU2MTdjYi4uOWU4ODc1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
U291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKQEAgLTY1OCw2ICs2
NTgsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1
aWxkIFdlYkNvcmUuCiAgICAgICAgIGxvYWRlci9UZXh0RG9jdW1lbnQuY3BwCiAgICAgICAgIGxv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAogICAgICAgICBsb2FkZXIvVGhyZWFkYWJsZUxv
YWRlci5jcHAKKyAgICAgICAgbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCiAgICAg
ICAgIGxvYWRlci9sb2FkZXIuY3BwCiAgICAgPC9zZXQ+CiAgICAgCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Dcm9zc1RocmVhZENvcGllci5oIGIvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAppbmRleCBiYThlZmM3Li5mZDUzZWU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Dcm9z
c1RocmVhZENvcGllci5oCisrKyBiL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAg
LTM0LDYgKzM0LDkgQEAKICNpZiBFTkFCTEUoV09SS0VSUykKIAogI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjQsNiArNjcsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIH07CiAKICAgICAvLyBDdXN0b20gY29weSBtZXRob2RzLgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIFJlZlB0cjxUaHJl
YWRTYWZlU2hhcmVkPFQ+ID4gPiB7CisgICAgICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxUPiBUeXBl
OworICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFJlZlB0cjxUaHJlYWRTYWZlU2hhcmVk
PFQ+ID4mIHJlZlB0cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
VD4oc3RhdGljX2Nhc3Q8VCo+KHJlZlB0ci5nZXQoKSkpOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIHN0ZDo6YXV0b19wdHI8VD4gPiB7CisgICAgICAgIHR5cGVkZWYgc3RkOjphdXRvX3B0cjxU
PiBUeXBlOworICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IHN0ZDo6YXV0b19wdHI8VD4m
IGF1dG9QdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmF1dG9fcHRyPFQ+
KCpjb25zdF9jYXN0PHN0ZDo6YXV0b19wdHI8VD4qPigmYXV0b1B0cikpOworICAgICAgICB9Cisg
ICAgfTsKKwogICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgU3RyaW5nPiB7CiAgICAgICAgIHR5cGVkZWYgU3RyaW5nIFR5cGU7CiAgICAgICAgIHN0YXRp
YyBUeXBlIGNvcHkoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9HZW5l
cmljV29ya2VyVGFzay5oIGIvV2ViQ29yZS9kb20vR2VuZXJpY1dvcmtlclRhc2suaAppbmRleCBi
ODFlMmZhLi45NmIwZTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9HZW5lcmljV29ya2VyVGFz
ay5oCisrKyBiL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmgKQEAgLTU0LDYgKzU0LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBzdGQ6OmF1dG9fcHRyPFQ+
IFBhcmFtVHlwZTsKICAgICB9OwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEdl
bmVyaWNXb3JrZXJUYXNrVHJhaXRzPFBhc3NSZWZQdHI8VD4gPiB7CisgICAgICAgIHR5cGVkZWYg
UGFzc1JlZlB0cjxUPiBQYXJhbVR5cGU7CisgICAgfTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFAxLCB0eXBlbmFtZSBNUDE+CiAgICAgY2xhc3MgR2VuZXJpY1dvcmtlclRhc2sxIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQu
Y3BwCmluZGV4IGI0NGQ4NDMuLjQwNTQxYjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
clRocmVhZC5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmNwcApAQCAtMzQsNyAr
MzQsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291
cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiV29ya2VyLmgi
CiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1By
b3h5LmgiCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDA1Zjg2NjcuLjRkNjU0YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDks
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5k
ZXggZDkwOTA5MS4uOWZkNjRhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDBmMjJmYmUuLjE3YjUx
ZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzYsNiArMzYsOCBAQAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorI2luY2x1
ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Myw4ICs0NSwxMyBAQCBQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogewogICAgIEFTU0VSVChj
bGllbnQpOwogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKIAorI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIGlmIChjb250ZXh0LT5pc1dvcmtl
ckNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCksIGNsaWVudCwgcmVxdWVzdCwg
Y2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKTsKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VS
UykKKworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIHJldHVybiBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpLCBjbGllbnQsIHJlcXVlc3QsIGNhbGxiYWNrc1NldHRpbmcsIGNvbnRlbnRTbmlmZik7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaCBiL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAppbmRleCBlOGZmMDU4Li40YjkzOWYwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlckNsaWVudC5oIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oCmluZGV4IDRmZGU0MDQuLjY2MDQ3NzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDA5LCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBp
bnQgLypsZW5ndGhSZWNlaXZlZCovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZyAvKmlkZW50aWZlciovKSB7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyAvKmlkZW50aWZpZXIqLykgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRHZXRDYW5jZWxsZWQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTJjZDY5OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyX2gKKyNkZWZpbmUgVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXJf
aAorCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlciA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFRocmVhZGFi
bGVMb2FkZXJDbGllbnRXcmFwcGVyPiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gY3JlYXRlKFRocmVhZGFibGVM
b2FkZXJDbGllbnQqIGNsaWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcihjbGllbnQpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgY2xlYXJDbGllbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2NsaWVudCA9IDA7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEs
IGxlbmd0aFJlY2VpdmVkKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhp
ZGVudGlmaWVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmFpbCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkRmFpbCgpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRHZXRDYW5jZWxsZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICAgICAgbV9j
bGllbnQtPmRpZEdldENhbmNlbGxlZCgpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAg
fQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
cihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCisgICAgICAgICAgICA6IG1fY2xpZW50
KGNsaWVudCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCogbV9jbGllbnQ7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXJfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43NDkxM2IxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTAsMCArMSwyMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIu
aCIKKworI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNrLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29y
a2VyTWVzc2FnaW5nUHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcihXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0LCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZENh
bGxiYWNrcyBjYWxsYmFja3NTZXR0aW5nLCBDb250ZW50U25pZmYgY29udGVudFNuaWZmKQorICAg
IDogbV93b3JrZXJDb250ZXh0KHdvcmtlckNvbnRleHQpCisgICAgLCBtX2JyaWRnZSgqKG5ldyBN
YWluVGhyZWFkQnJpZGdlKGNsaWVudCwgKm1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPm1lc3Nh
Z2luZ1Byb3h5KCksIHJlcXVlc3QsIGNhbGxiYWNrc1NldHRpbmcsIGNvbnRlbnRTbmlmZikpKQor
eworfQorCitXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp+V29ya2VyVGhyZWFkYWJsZUxvYWRlcigp
Cit7CisgICAgbV9icmlkZ2UuZGVzdHJveSgpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6OmNhbmNlbCgpCit7CisgICAgbV9icmlkZ2UuY2FuY2VsKCk7Cit9CisKK1dvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFk
YWJsZUxvYWRlckNsaWVudCogd29ya2VyQ2xpZW50LCBXb3JrZXJNZXNzYWdpbmdQcm94eSYgbWVz
c2FnaW5nUHJveHksIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZENhbGxiYWNr
cyBjYWxsYmFja3NTZXR0aW5nLCBDb250ZW50U25pZmYgY29udGVudFNuaWZmKQorICAgIDogbV93
b3JrZXJDbGllbnRXcmFwcGVyKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpjcmVhdGUo
d29ya2VyQ2xpZW50KSkKKyAgICAsIG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCit7
CisgICAgQVNTRVJUKHdvcmtlckNsaWVudCk7CisgICAgbV9tZXNzYWdpbmdQcm94eS5wb3N0VGFz
a1RvV29ya2VyT2JqZWN0KGNyZWF0ZUNhbGxiYWNrVGFzaygmTWFpblRocmVhZEJyaWRnZTo6bWFp
blRocmVhZENyZWF0ZUxvYWRlciwgdGhpcywgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29u
dGVudFNuaWZmKSk7Cit9CisKK1dvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6On5NYWluVGhyZWFkQnJpZGdlKCkKK3sKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRoaXNQdHIsIGF1dG9fcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEsIExvYWRDYWxsYmFj
a3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZikKK3sKKyAgICAv
LyBGSVhNRTogVGhpcyBhc3NlcnQgZmFpbHMgZm9yIG5lc3RlZCB3b3JrZXJzLiAgUmVtb3Zpbmcg
dGhlIGFzc2VydCB3b3VsZCBhbGxvdyBpdCB0byB3b3JrLAorICAgIC8vIGJ1dCB0aGVuIHRoZXJl
IHdvdWxkIGJlIG9uZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIGluIGV2ZXJ5IGludGVybWVkaWF0
ZSB3b3JrZXIgc2ltcGx5CisgICAgLy8gY2hhaW5pbmcgdGhlIHJlcXVlc3RzLCB3aGljaCBpcyBu
b3QgdmVyeSBnb29kLiBJbnN0ZWFkLCB0aGUgcG9zdFRhc2tUb1dvcmtlck9iamVjdCBzaG91bGQg
YmUgYQorICAgIC8vIHBvc3RUYXNrVG9Eb2N1bWVudENvbnRleHQuCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKworICAgIGlm
ICh0aGlzUHRyLT5tX21lc3NhZ2luZ1Byb3h5LmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gRklYTUU6IHRoZSBjcmVhdGVkIGxvYWRlciBoYXMgbm8ga25vd2xl
ZGdlIG9mIHRoZSBvcmlnaW4gb2YgdGhlIHdvcmtlciBkb2luZyB0aGUgbG9hZCByZXF1ZXN0Lgor
ICAgIC8vIEJhc2ljYWxseSBldmVyeSBzZXR0aW5nIGRvbmUgaW4gU3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZSAoaW5jbHVkaW5nIHRoZSBjb250ZW50cyBvZiBhZGRFeHRyYUZpZWxkc1RvUmVxdWVz
dCkKKyAgICAvLyBuZWVkcyB0byBiZSBleGFtaW5lZCBmb3IgaG93IGl0IHNob3VsZCBiZSB0YWtl
IGludG8gYWNjb3VudCBhIGRpZmZlcmVudCBvcmlnaW5hdG9yLgorICAgIE93blB0cjxSZXNvdXJj
ZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChyZXF1ZXN0RGF0YSkpOwor
ICAgIHRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShjb250ZXh0LCB0aGlzUHRyLCAqcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNu
aWZmKTsKKyAgICBpZiAoIXRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlcikKKyAgICAgICAgdGhp
c1B0ci0+ZGlkRmFpbCgpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRoaXNQdHIpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQo
KSk7CisgICAgZGVsZXRlIHRoaXNQdHI7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGVzdHJveSgpCit7CisgICAgLy8gRW5zdXJlIHRoYXQgbm8g
bW9yZSBjbGllbnQgY2FsbGJhY2tzIGFyZSBkb25lIGluIHRoZSB3b3JrZXIgY29udGV4dCdzIHRo
cmVhZC4KKyAgICBjbGVhckNsaWVudFdyYXBwZXIoKTsKKworICAgIC8vICJkZWxldGUgdGhpcyIg
YW5kIG1fbWFpblRocmVhZExvYWRlcjo6ZGVyZWYoKSBvbiB0aGUgd29ya2VyIG9iamVjdCdzIHRo
cmVhZC4KKyAgICBtX21lc3NhZ2luZ1Byb3h5LnBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkRGVzdHJveSwgdGhpcykp
OworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1h
aW5UaHJlYWRDYW5jZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWFpblRocmVh
ZEJyaWRnZSogdGhpc1B0cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKworICAgIGlmICgh
dGhpc1B0ci0+bV9tYWluVGhyZWFkTG9hZGVyKQorICAgICAgICByZXR1cm47CisgICAgdGhpc1B0
ci0+bV9tYWluVGhyZWFkTG9hZGVyLT5jYW5jZWwoKTsKKyAgICB0aGlzUHRyLT5tX21haW5UaHJl
YWRMb2FkZXIgPSAwOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmNhbmNlbCgpCit7CisgICAgbV9tZXNzYWdpbmdQcm94eS5wb3N0VGFza1RvV29y
a2VyT2JqZWN0KGNyZWF0ZUNhbGxiYWNrVGFzaygmTWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVh
ZENhbmNlbCwgdGhpcykpOworICAgIGNsZWFyQ2xpZW50V3JhcHBlcigpOworfQorCit2b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNsZWFyQ2xpZW50V3JhcHBl
cigpCit7CisgICAgc3RhdGljX2Nhc3Q8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIqPiht
X3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCkpLT5jbGVhckNsaWVudCgpOworfQorCit2b2lkIHdv
cmtlckNvbnRleHREaWRTZW5kRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIs
IHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dv
cmtlckNvbnRleHQoKSk7CisgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkU2VuZERhdGEoYnl0
ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCit7CisgICAg
bV9tZXNzYWdpbmdQcm94eS5wb3N0VGFza1RvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rh
c2soJndvcmtlckNvbnRleHREaWRTZW5kRGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBieXRl
c1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCkpOworfQorCit2b2lkIHdvcmtlckNvbnRleHREaWRS
ZWNlaXZlUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRo
cmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBhdXRvX3B0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiByZXNwb25zZURhdGEpCit7CisgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CisgICAg
T3duUHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2U6OmFkb3B0
KHJlc3BvbnNlRGF0YSkpOworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNw
b25zZSgqcmVzcG9uc2UpOworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK3sKKyAgICBtX21lc3NhZ2luZ1Byb3h5LnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0
KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVSZXNwb25zZSwgbV93
b3JrZXJDbGllbnRXcmFwcGVyLCByZXNwb25zZSkpOworfQorCit2b2lkIHdvcmtlckNvbnRleHRE
aWRSZWNlaXZlRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGF1dG9fcHRy
PFZlY3RvcjxjaGFyPiA+IHZlY3RvckRhdGEpCit7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CisgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+
ZGlkUmVjZWl2ZURhdGEodmVjdG9yRGF0YS0+ZGF0YSgpLCB2ZWN0b3JEYXRhLT5zaXplKCkpOwor
fQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCkKK3sKKyAgICBh
dXRvX3B0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3IobmV3IFZlY3RvcjxjaGFyPihsZW5ndGhSZWNl
aXZlZCkpOyAvLyBuZWVkcyB0byBiZSBhbiBhdXRvX3B0ciBmb3IgdXNhZ2Ugd2l0aCBjcmVhdGVD
YWxsYmFja1Rhc2suCisgICAgbWVtY3B5KHZlY3Rvci0+ZGF0YSgpLCBkYXRhLCBsZW5ndGhSZWNl
aXZlZCk7CisgICAgbV9tZXNzYWdpbmdQcm94eS5wb3N0VGFza1RvV29ya2VyQ29udGV4dChjcmVh
dGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlRGF0YSwgbV93b3JrZXJDbGll
bnRXcmFwcGVyLCB2ZWN0b3IpKTsKK30KKwordm9pZCB3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9h
ZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGludCBpZGVudGlmaWVyKQor
eworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkp
OworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlk
RmluaXNoTG9hZGluZyhpbnQgaWRlbnRpZmllcikKK3sKKyAgICBtX21lc3NhZ2luZ1Byb3h5LnBv
c3RUYXNrVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERp
ZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRlbnRpZmllcikpOworfQor
Cit2b2lkIHdvcmtlckNvbnRleHREaWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29u
dGV4dCgpKTsKKyAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKCk7Cit9CisKK3ZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCgpCit7Cisg
ICAgbV9tZXNzYWdpbmdQcm94eS5wb3N0VGFza1RvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFj
a1Rhc2soJndvcmtlckNvbnRleHREaWRGYWlsLCBtX3dvcmtlckNsaWVudFdyYXBwZXIpKTsKK30K
Kwordm9pZCB3b3JrZXJDb250ZXh0RGlkR2V0Q2FuY2VsbGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2Vy
Q2xpZW50V3JhcHBlcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlz
V29ya2VyQ29udGV4dCgpKTsKKyAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRHZXRDYW5jZWxs
ZWQoKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpkaWRHZXRDYW5jZWxsZWQoKQoreworICAgIG1fbWVzc2FnaW5nUHJveHkucG9zdFRhc2tUb1dv
cmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkR2V0Q2FuY2Vs
bGVkLCBtX3dvcmtlckNsaWVudFdyYXBwZXIpKTsKK30KKwordm9pZCB3b3JrZXJDb250ZXh0RGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xp
ZW50V3JhcHBlciwgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gcmVz
cG9uc2VEYXRhKQoreworICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3Jr
ZXJDb250ZXh0KCkpOworICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25zZURhdGEpKTsKKyAgICB3b3JrZXJDbGllbnRXcmFw
cGVyLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oKnJlc3BvbnNlKTsKK30K
Kwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit7CisgICAgbV9tZXNzYWdpbmdQcm94eS5wb3N0VGFza1RvV29ya2VyQ29udGV4dChj
cmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
YW5jZWxsYXRpb24sIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgcmVzcG9uc2UpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNWQ2MmMyMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuaApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcl9oCisjZGVmaW5lIFdvcmtlclRocmVhZGFibGVMb2FkZXJfaAorCisjaWYgRU5B
QkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGll
bnRXcmFwcGVyLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0OworICAg
IGNsYXNzIFdvcmtlck1lc3NhZ2luZ1Byb3h5OworICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhOworICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE7CisKKyAgICBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI+IGNyZWF0ZShXb3JrZXJDb250ZXh0KiB3b3JrZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2FsbGJhY2tzIGNh
bGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyVGhyZWFkYWJsZUxvYWRlcih3b3Jr
ZXIsIGNsaWVudCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKSk7Cisg
ICAgICAgIH0KKworICAgICAgICB+V29ya2VyVGhyZWFkYWJsZUxvYWRlcigpOworCisgICAgICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKworICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdvcmtl
clRocmVhZGFibGVMb2FkZXI+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcj46OmRlcmVmOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVmVGhyZWFkYWJsZUxvYWRlcigpIHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIGRlcmVmVGhyZWFkYWJsZUxvYWRlcigpIHsgZGVyZWYoKTsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgLy8gQ3JlYXRlcyBhIGxvYWRlciBvbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGJy
aWRnZXMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCisgICAgICAgIC8vIHRoZSBtYWluIHRocmVhZCBh
bmQgdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkIHdoZXJlIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXIgcnVucy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gUmVnYXJkaW5nIHRoZSBicmlkZ2UgYW5k
IGxpZmV0aW1lcyBvZiBpdGVtcyB1c2VkIGluIGNhbGxiYWNrcywgdGhlcmUgYXJlIGEgZmV3IGNh
c2VzOgorICAgICAgICAvLworICAgICAgICAvLyBhbGwgY2FzZXMuIEFsbCB0YXNrcyBwb3N0ZWQg
ZnJvbSB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQgYXJlIG9rIGJlY2F1c2UKKyAgICAgICAg
Ly8gICAgdGhlIGxhc3QgdGFzayBwb3N0ZWQgYWx3YXlzIGlzICJtYWluVGhyZWFkRGVzdHJveSIs
IHNvIE1haW5UaHJlYWRCcmlkZ2UgaXMKKyAgICAgICAgLy8gICAgYXJvdW5kIGZvciBhbGwgdGFz
a3MgdGhhdCB1c2UgaXQgb24gdGhlIG1pYW4gdGhyZWFkLgorICAgICAgICAvLworICAgICAgICAv
LyBjYXNlIDEuIHdvcmtlci50ZXJtaW5hdGUgaXMgY2FsbGVkLgorICAgICAgICAvLyAgICBJbiB0
aGlzIGNhc2UsIG5vIG1vcmUgdGFza3MgYXJlIHBvc3RlZCBmcm9tIHRoZSB3b3JrZXIgb2JqZWN0
J3MgdGhyZWFkIHRvIHRoZSB3b3JrZXIKKyAgICAgICAgLy8gICAgY29udGV4dCdzIHRocmVhZCAt
LSBXb3JrZXJNZXNzYWdpbmdQcm94eSBlbmZvcmNlcyB0aGlzLgorICAgICAgICAvLworICAgICAg
ICAvLyBjYXNlIDIuIHhociBnZXRzIGFib3J0ZWQgYW5kIHRoZSB3b3JrZXIgY29udGV4dCBjb250
aW51ZXMgcnVubmluZy4KKyAgICAgICAgLy8gICAgVGhlIFRocmVhZGFibGVMb2FkZXJDbGllbnRX
cmFwcGVyIGhhcyB0aGUgdW5kZXJseWluZyBjbGllbnQgY2xlYXJlZCwgc28gbm8gbW9yZSBjYWxs
cworICAgICAgICAvLyAgICBnbyB0aHJvdWdoIGl0LiAgQWxsIHRhc2tzIHBvc3RlZCBmcm9tIHRo
ZSB3b3JrZXIgb2JqZWN0J3MgdGhyZWFkIHRvIHRoZSB3b3JrZXIgY29udGV4dCdzCisgICAgICAg
IC8vICAgIHRocmVhZCBkbyAiVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OnJlZiIgKGF1
dG9tYXRpY2FsbHkgaW5zaWRlIG9mIHRoZSBjcm9zcyB0aHJlYWQgY29weQorICAgICAgICAvLyAg
ICBkb25lIGluIGNyZWF0ZUNhbGxiYWNrVGFzayksIHNvIHRoZSBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlciBpbnN0YW5jZSBpcyB0aGVyZSB1bnRpbCBhbGwKKyAgICAgICAgLy8gICAgdGFz
a3MgYXJlIGV4ZWN1dGVkLgorICAgICAgICBjbGFzcyBNYWluVGhyZWFkQnJpZGdlIDogVGhyZWFk
YWJsZUxvYWRlckNsaWVudCB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIC8vIEFsbCBl
eGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQuCisgICAgICAgICAgICBNYWlu
VGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBXb3JrZXJNZXNzYWdpbmdQcm94
eSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZik7
CisgICAgICAgICAgICB2b2lkIGNhbmNlbCgpOworICAgICAgICAgICAgdm9pZCBkZXN0cm95KCk7
CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIC8vIEV4ZWN1dGVkIG9uIHRoZSB3b3Jr
ZXIgY29udGV4dCdzIHRocmVhZC4KKyAgICAgICAgICAgIHZvaWQgY2xlYXJDbGllbnRXcmFwcGVy
KCk7CisKKyAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTWFpblRocmVhZEJyaWRnZSopOworICAgICAgICAgICAgfk1haW5UaHJlYWRCcmlk
Z2UoKTsKKworICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENyZWF0ZUxvYWRlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWFpblRocmVhZEJyaWRnZSosIHN0ZDo6YXV0b19wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNu
aWZmKTsKKyAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDYW5jZWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKKyAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoUmVjZWl2
ZWQpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoaW50IGlkZW50
aWZpZXIpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKTsKKyAgICAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRHZXRDYW5jZWxsZWQoKTsKKyAgICAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworCisgICAgICAgICAgICAvLyBPbmx5IHRvIGJlIHVzZWQgb24gdGhlIG1haW4gdGhy
ZWFkLgorICAgICAgICAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbWFpblRocmVhZExv
YWRlcjsKKworICAgICAgICAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIgaXMg
dG8gYmUgdXNlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQgdGhyZWFkLgorICAgICAgICAgICAgLy8g
VGhlIHJlZiBjb3VudGluZyBpcyBkb25lIG9uIGVpdGhlciB0aHJlYWQuCisgICAgICAgICAgICBS
ZWZQdHI8VGhyZWFkU2FmZVNoYXJlZDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gPiBt
X3dvcmtlckNsaWVudFdyYXBwZXI7CisKKyAgICAgICAgICAgIC8vIE1heSBiZSB1c2VkIG9uIGVp
dGhlciB0aHJlYWQuCisgICAgICAgICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSYgbV9tZXNzYWdp
bmdQcm94eTsKKyAgICAgICAgfTsKKworICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdv
cmtlckNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmKTsKKworICAgICAgICBSZWZQdHI8V29y
a2VyQ29udGV4dD4gbV93b3JrZXJDb250ZXh0OworICAgICAgICBNYWluVGhyZWFkQnJpZGdlJiBt
X2JyaWRnZTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIFdvcmtlclRocmVhZGFibGVMb2FkZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27271</attachid>
            <date>2009-02-02 18:01:43 -0800</date>
            <delta_ts>2009-02-02 23:30:12 -0800</delta_ts>
            <desc>Part 2: Enable the async portion of ThreadableLoader for Workers.</desc>
            <filename>bug23636-part2.txt</filename>
            <type>text/plain</type>
            <size>37312</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTM5Y2FiZC4uMTliYzU1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAwOS0wMi0wMSAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQnVnIDIzNjM2OiBNYWtlIHRoZSBhc3luYyBhcGkgb2YgVGhyZWFkYWJs
ZUxvYWRlciBmdW5jdGlvbmFsIGZvciB0aGUgd29ya2VyIGNvbnRleHQuCisgICAgICAgIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzY+CisKKyAgICAgICAgRW5h
YmxlIHRoZSBhc3luYyBwb3J0aW9uIG9mIFRocmVhZGFibGVMb2FkZXIgZm9yIHdvcmtlcnMuCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5vIHRlc3QuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgKiBXZWJDb3JlLnNjb25zOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogZG9tL0Nyb3NzVGhyZWFkQ29waWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGRvbS9HZW5lcmljV29ya2VyVGFz
ay5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyOjpjbGVhckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI6OmRpZEdldENhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2Vs
bGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVy
OjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcik6CisgICAgICAgICogbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6fldvcmtlclRocmVhZGFibGVMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5U
aHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6fk1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjptYWluVGhyZWFkRGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkZXN0cm95KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5U
aHJlYWRDYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNsZWFyQ2xpZW50V3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JrZXJDb250ZXh0RGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ondv
cmtlckNvbnRleHREaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6d29ya2VyQ29udGV4dERpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JrZXJDb250ZXh0RGlkR2V0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEdldENh
bmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNl
bGxhdGlvbik6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6cmVmVGhyZWFkYWJsZUxv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpkZXJlZlRo
cmVhZGFibGVMb2FkZXIpOgorCiAyMDA5LTAxLTMwICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDcyYzZlNGYuLmJlZjQ1ZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTA5MCw2ICsxMDkwLDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBcCiAJV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oIFwKIAlXZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmggXAorCVdlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwIFwKKwlXZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggXAogCVdl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZS5oIFwKIAlXZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNv
cmUucHJvCmluZGV4IGIxOTYyYzEuLmZhMDlkYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODEzLDYgKzgxMyw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIGxvYWRlci9UZXh0RG9jdW1lbnQuY3BwIFwKICAgICBsb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5jcHAgXAogICAgIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBcCisg
ICAgbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIFwKICAgICBwYWdlL0FjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuY3BwIFwKICAgICBwYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
IFwgICAgCiAgICAgcGFnZS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAgXCAgICAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5zY29ucyBiL1dlYkNvcmUvV2ViQ29yZS5zY29ucwppbmRleCAzYTEz
NTAwLi43OGUxYTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuc2NvbnMKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnNjb25zCkBAIC0zNTgsNiArMzU4LDcgQEAgc291cmNlc1snbG9hZGVyJ10g
PSBbCiAgICAgJ2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCcsCiAgICAgJ2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcCcsCiAgICAgJ2xvYWRlci9Vc2VyU3R5bGVTaGVldExvYWRlci5j
cHAnLAorICAgICdsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAnLAogXQogc291cmNl
c1sncGFnZSddID0gWwogICAgICdwYWdlL0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDk3ZWQxNTMuLjg5M2NlMzcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk0Myw2ICsyOTQzLDE0
IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
bG9hZGVyXFdvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXFdvcmtlclRocmVhZGFibGVM
b2FkZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9Imlj
b24iDQogCQkJCT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDBhM2UxMzYuLjcyNWQ3ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMzksNiArMTM5LDggQEAKIAkJMEI5MDU2MUIwRjI1NzhCRjAwOTVGRjZB
IC8qIFRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCOTA1NjE3MEYyNTc4QkUwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMEI5MDU2MUMwRjI1
NzhCRjAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NjE4MEYyNTc4QkUwMDk1RkY2QSAv
KiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKIAkJMEI5MDU2MUUwRjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI5MDU2
MUQwRjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuY3BwICovOyB9OworCQkwQjkw
NTZGODBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTZGNjBGMjY4NUYz
MDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgKi87IH07CisJCTBCOTA1NkY5
MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQjkwNTZGNzBGMjY4NUYzMDA5NUZG
NkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKCk7IH07IH07CiAJCTBCQTVEMzg2MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29ya2Vy
VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJB
NUQzODUwRjI0MEZCNDAwOUI4NzBCIC8qIEdlbmVyaWNXb3JrZXJUYXNrLmggKi87IH07CiAJCTBC
QjREQkUyMEYyRUUyOTgwMDM1NDYxOSAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkI0REJFMTBGMkVFMjk4MDAz
NTQ2MTkgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQkwQkUwMzBBMjBGMzExMkZC
MDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRTAzMEExMEYzMTEyRkIwMDNDMUE0NiAvKiBSZW5kZXJM
aW5lQm94TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00OTg1LDYgKzQ5ODcsOCBAQAogCQkwQjkwNTYxNzBGMjU3OEJFMDA5NUZGNkEgLyog
VGhyZWFkYWJsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJl
YWRhYmxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOTA1NjE4MEYy
NTc4QkUwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZGFibGVMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEI5MDU2MUQwRjI1N0U5MzAwOTVGRjZBIC8qIFRocmVhZGFibGVM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkYWJs
ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBCOTA1NkY2MEYyNjg1
RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwQjkwNTZGNzBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQTVE
Mzg1MEYyNDBGQjQwMDlCODcwQiAvKiBHZW5lcmljV29ya2VyVGFzay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljV29ya2VyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkI0REJFMTBGMkVFMjk4MDAzNTQ2MTkgLyogQ3Jvc3NUaHJlYWRDb3Bp
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkUwMzBBMTBGMzExMkZC
MDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyTGluZUJveExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzNjAxLDYgKzEzNjA1LDggQEAKIAkJCQkwQjkwNTYxODBGMjU3OEJFMDA5NUZGNkEgLyog
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oICovLAogCQkJCTcyODRBRERCMEU2RkVCMzEwMDJFRUZC
RCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5jcHAgKi8sCiAJCQkJNzI4NEFEREMwRTZGRUIzMTAw
MkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmggKi8sCisJCQkJMEI5MDU2RjYwRjI2ODVG
MzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwICovLAorCQkJCTBCOTA1NkY3
MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggKi8sCiAJCQkJQkNC
MTZDMTMwOTc5QzNCRDAwNDY3NzQxIC8qIGxvYWRlci5jcHAgKi8sCiAJCQkJQkNCMTZDMTQwOTc5
QzNCRDAwNDY3NzQxIC8qIGxvYWRlci5oICovLAogCQkJKTsKQEAgLTE2NTk4LDYgKzE2NjA0LDcg
QEAKIAkJCQkxOEEwNTM3RDBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFBNjQzRjIwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzJDNDI0MEVBQ0UwQkMwMDdFNjFGQiAv
KiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBCOTA1NkY5MEYyNjg1RjMwMDk1
RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUyNDA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODIwMjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJDNDcwQzRFQjJDNjAwODMyODVGIC8qIFhNTEh0
dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTE4NTgxLDYgKzE4NTg4LDcgQEAKIAkJCQkx
OEEwNTM3QzBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUE2NDNGRDBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUMyQzQyOTBFQUNFMEUwMDA3RTYxRkIgLyogV29y
a2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBCOTA1NkY4MEYyNjg1RjMwMDk1RkY2
QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5
RTIzMDk5RTY0OTIwMDU2RTU4MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0IC8qIFhMaW5rTmFt
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3NzJDNDYwQzRFQjJDNjAwODMyODVGIC8qIFhN
TEh0dHBSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlU291cmNlcy5ia2wgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAppbmRleCBkNTYxN2Ni
Li45ZTg4NzU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAorKysgYi9X
ZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbApAQCAtNjU4LDYgKzY1OCw3IEBAIFRoaXMgZmlsZSBj
b250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAg
ICAgbG9hZGVyL1RleHREb2N1bWVudC5jcHAKICAgICAgICAgbG9hZGVyL1RleHRSZXNvdXJjZURl
Y29kZXIuY3BwCiAgICAgICAgIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorICAgICAgICBs
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKICAgICAgICAgbG9hZGVyL2xvYWRlci5j
cHAKICAgICA8L3NldD4KICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFk
Q29waWVyLmggYi9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IGJhOGVmYzcu
LmZkNTNlZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysr
IGIvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMzQsNiArMzQsOSBAQAogI2lm
IEVOQUJMRShXT1JLRVJTKQogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvVHlwZVRyYWl0cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC02NCw2ICs2NywyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIC8v
IEN1c3RvbSBjb3B5IG1ldGhvZHMuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgUmVmUHRyPFRocmVhZFNhZmVTaGFyZWQ8VD4gPiA+
IHsKKyAgICAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFQ+IFR5cGU7CisgICAgICAgIHN0YXRpYyBU
eXBlIGNvcHkoY29uc3QgUmVmUHRyPFRocmVhZFNhZmVTaGFyZWQ8VD4gPiYgcmVmUHRyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUPihzdGF0aWNfY2FzdDxUKj4o
cmVmUHRyLmdldCgpKSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgc3RkOjphdXRvX3B0cjxU
PiA+IHsKKyAgICAgICAgdHlwZWRlZiBzdGQ6OmF1dG9fcHRyPFQ+IFR5cGU7CisgICAgICAgIHN0
YXRpYyBUeXBlIGNvcHkoY29uc3Qgc3RkOjphdXRvX3B0cjxUPiYgYXV0b1B0cikKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6YXV0b19wdHI8VD4oKmNvbnN0X2Nhc3Q8c3RkOjph
dXRvX3B0cjxUPio+KCZhdXRvUHRyKSk7CisgICAgICAgIH0KKyAgICB9OworCiAgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBTdHJpbmc+IHsKICAgICAg
ICAgdHlwZWRlZiBTdHJpbmcgVHlwZTsKICAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmggYi9X
ZWJDb3JlL2RvbS9HZW5lcmljV29ya2VyVGFzay5oCmluZGV4IGI4MWUyZmEuLjk2YjBlNzAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0dlbmVyaWNXb3JrZXJUYXNrLmgKKysrIGIvV2ViQ29yZS9k
b20vR2VuZXJpY1dvcmtlclRhc2suaApAQCAtNTQsNiArNTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB0eXBlZGVmIHN0ZDo6YXV0b19wdHI8VD4gUGFyYW1UeXBlOwogICAgIH07
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY1dvcmtlclRhc2tUcmFp
dHM8UGFzc1JlZlB0cjxUPiA+IHsKKyAgICAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFQ+IFBhcmFt
VHlwZTsKKyAgICB9OworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4K
ICAgICBjbGFzcyBHZW5lcmljV29ya2VyVGFzazEgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2Vy
VGhyZWFkLmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5jcHAKaW5kZXggYjQ0ZDg0My4u
NDA1NDFiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmNwcAorKysgYi9X
ZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJXb3JrZXIuaCIKICNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMDVmODY2Ny4uNGQ2NTRj
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBkOTA5MDkxLi45ZmQ2NGEw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAor
KysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMGYyMmZiZS4uMTdiNTFlNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAy
MDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDggKzQ1LDEzIEBAIFBh
c3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAgICAgQVNTRVJU
KGNvbnRleHQpOwotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogCisjaWYgRU5B
QkxFKFdPUktFUlMpCisgICAgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFdvcmtl
ckNvbnRleHQqPihjb250ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBj
b250ZW50U25pZmYpOworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQorCisgICAgQVNTRVJUKGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIGNsaWVudCwgcmVxdWVz
dCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5oCmluZGV4IGU4ZmYwNTguLjRiOTM5ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmgg
Yi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkZTQwNC4u
NjYwNDc3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCAvKmxlbmd0aFJlY2VpdmVk
Ki8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIC8qaWRlbnRpZmVyKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIC8qaWRlbnRpZmllciovKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEdldENhbmNlbGxlZCgp
IHsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlci5oIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmNkNjk4Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaApA
QCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXJfaAor
I2RlZmluZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcl9oCisKKyNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyPiBjcmVhdGUoVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyKGNsaWVudCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBj
bGVhckNsaWVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY2xpZW50ID0gMDsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRT
ZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
UmVjZWl2ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoUmVjZWl2ZWQpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBkaWRGYWlsKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsKCk7CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGRpZEdldENhbmNlbGxlZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkR2V0Q2FuY2Vs
bGVkKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyKFRocmVhZGFibGVMb2FkZXJD
bGllbnQqIGNsaWVudCkKKyAgICAgICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsK
KyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0OTEzYjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtMCwwICsxLDIyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXT1JLRVJT
KQorCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgorCisjaW5jbHVkZSAiR2Vu
ZXJpY1dvcmtlclRhc2suaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgorI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJNZXNzYWdpbmdQcm94eS5o
IgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtl
ckNvbnRleHQqIHdvcmtlckNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2FsbGJhY2tzIGNhbGxiYWNrc1Nl
dHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYpCisgICAgOiBtX3dvcmtlckNvbnRleHQo
d29ya2VyQ29udGV4dCkKKyAgICAsIG1fYnJpZGdlKCoobmV3IE1haW5UaHJlYWRCcmlkZ2UoY2xp
ZW50LCAqbV93b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+bWVzc2FnaW5nUHJveHkoKSwgcmVxdWVz
dCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmKSkpCit7Cit9CisKK1dvcmtlclRocmVh
ZGFibGVMb2FkZXI6On5Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyKCkKK3sKKyAgICBtX2JyaWRnZS5k
ZXN0cm95KCk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKK3sK
KyAgICBtX2JyaWRnZS5jYW5jZWwoKTsKK30KKworV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiB3
b3JrZXJDbGllbnQsIFdvcmtlck1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2FsbGJhY2tzIGNhbGxiYWNrc1NldHRpbmcs
IENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYpCisgICAgOiBtX3dvcmtlckNsaWVudFdyYXBwZXIo
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZSh3b3JrZXJDbGllbnQpKQorICAg
ICwgbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKK3sKKyAgICBBU1NFUlQod29ya2Vy
Q2xpZW50KTsKKyAgICBtX21lc3NhZ2luZ1Byb3h5LnBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVy
LCB0aGlzLCByZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25pZmYpKTsKK30KKwor
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6fk1haW5UaHJlYWRCcmlk
Z2UoKQoreworfQorCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0ciwgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSwgTG9hZENhbGxiYWNrcyBjYWxsYmFja3NTZXR0aW5n
LCBDb250ZW50U25pZmYgY29udGVudFNuaWZmKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGFzc2Vy
dCBmYWlscyBmb3IgbmVzdGVkIHdvcmtlcnMuICBSZW1vdmluZyB0aGUgYXNzZXJ0IHdvdWxkIGFs
bG93IGl0IHRvIHdvcmssCisgICAgLy8gYnV0IHRoZW4gdGhlcmUgd291bGQgYmUgb25lIFdvcmtl
clRocmVhZGFibGVMb2FkZXIgaW4gZXZlcnkgaW50ZXJtZWRpYXRlIHdvcmtlciBzaW1wbHkKKyAg
ICAvLyBjaGFpbmluZyB0aGUgcmVxdWVzdHMsIHdoaWNoIGlzIG5vdCB2ZXJ5IGdvb2QuIEluc3Rl
YWQsIHRoZSBwb3N0VGFza1RvV29ya2VyT2JqZWN0IHNob3VsZCBiZSBhCisgICAgLy8gcG9zdFRh
c2tUb0RvY3VtZW50Q29udGV4dC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworCisgICAgaWYgKHRoaXNQdHItPm1fbWVzc2Fn
aW5nUHJveHkuYXNrZWRUb1Rlcm1pbmF0ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogdGhlIGNyZWF0ZWQgbG9hZGVyIGhhcyBubyBrbm93bGVkZ2Ugb2YgdGhlIG9yaWdpbiBv
ZiB0aGUgd29ya2VyIGRvaW5nIHRoZSBsb2FkIHJlcXVlc3QuCisgICAgLy8gQmFzaWNhbGx5IGV2
ZXJ5IHNldHRpbmcgZG9uZSBpbiBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlIChpbmNsdWRpbmcg
dGhlIGNvbnRlbnRzIG9mIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KQorICAgIC8vIG5lZWRzIHRv
IGJlIGV4YW1pbmVkIGZvciBob3cgaXQgc2hvdWxkIGJlIHRha2UgaW50byBhY2NvdW50IGEgZGlm
ZmVyZW50IG9yaWdpbmF0b3IuCisgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3Q6OmFkb3B0KHJlcXVlc3REYXRhKSk7CisgICAgdGhpc1B0ci0+bV9tYWlu
VGhyZWFkTG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGNvbnRleHQsIHRoaXNQdHIs
ICpyZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25pZmYpOworICAgIGlmICghdGhp
c1B0ci0+bV9tYWluVGhyZWFkTG9hZGVyKQorICAgICAgICB0aGlzUHRyLT5kaWRGYWlsKCk7Cit9
CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRo
cmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWFpblRocmVhZEJy
aWRnZSogdGhpc1B0cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBkZWxldGUgdGhp
c1B0cjsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpkZXN0cm95KCkKK3sKKyAgICAvLyBFbnN1cmUgdGhhdCBubyBtb3JlIGNsaWVudCBjYWxsYmFj
a3MgYXJlIGRvbmUgaW4gdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkLgorICAgIGNsZWFyQ2xp
ZW50V3JhcHBlcigpOworCisgICAgLy8gImRlbGV0ZSB0aGlzIiBhbmQgbV9tYWluVGhyZWFkTG9h
ZGVyOjpkZXJlZigpIG9uIHRoZSB3b3JrZXIgb2JqZWN0J3MgdGhyZWFkLgorICAgIG1fbWVzc2Fn
aW5nUHJveHkucG9zdFRhc2tUb1dvcmtlck9iamVjdChjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5U
aHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95LCB0aGlzKSk7Cit9CisKK3ZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOworCisgICAgaWYgKCF0aGlzUHRyLT5tX21haW5UaHJl
YWRMb2FkZXIpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzUHRyLT5tX21haW5UaHJlYWRMb2Fk
ZXItPmNhbmNlbCgpOworICAgIHRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlciA9IDA7Cit9CisK
K3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKCkK
K3sKKyAgICBtX21lc3NhZ2luZ1Byb3h5LnBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2VsLCB0aGlzKSk7Cisg
ICAgY2xlYXJDbGllbnRXcmFwcGVyKCk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6Y2xlYXJDbGllbnRXcmFwcGVyKCkKK3sKKyAgICBzdGF0aWNf
Y2FzdDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcio+KG1fd29ya2VyQ2xpZW50V3JhcHBl
ci5nZXQoKSktPmNsZWFyQ2xpZW50KCk7Cit9CisKK3ZvaWQgd29ya2VyQ29udGV4dERpZFNlbmRE
YXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKKyAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNU
b0JlU2VudCk7Cit9CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKK3sKKyAgICBtX21lc3NhZ2luZ1Byb3h5LnBv
c3RUYXNrVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERp
ZFNlbmREYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1Rv
QmVTZW50KSk7Cit9CisKK3ZvaWQgd29ya2VyQ29udGV4dERpZFJlY2VpdmVSZXNwb25zZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGF1dG9fcHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGE+IHJlc3BvbnNlRGF0YSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKKyAgICBPd25QdHI8UmVzb3VyY2VSZXNw
b25zZT4gcmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZTo6YWRvcHQocmVzcG9uc2VEYXRhKSk7Cisg
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKCpyZXNwb25zZSk7Cit9
CisKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1f
bWVzc2FnaW5nUHJveHkucG9zdFRhc2tUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZ3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZVJlc3BvbnNlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIs
IHJlc3BvbnNlKSk7Cit9CisKK3ZvaWQgd29ya2VyQ29udGV4dERpZFJlY2VpdmVEYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgYXV0b19wdHI8VmVjdG9yPGNoYXI+ID4gdmVj
dG9yRGF0YSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2Vy
Q29udGV4dCgpKTsKKyAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0
b3JEYXRhLT5kYXRhKCksIHZlY3RvckRhdGEtPnNpemUoKSk7Cit9CisKK3ZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aFJlY2VpdmVkKQoreworICAgIGF1dG9fcHRyPFZlY3RvcjxjaGFy
PiA+IHZlY3RvcihuZXcgVmVjdG9yPGNoYXI+KGxlbmd0aFJlY2VpdmVkKSk7IC8vIG5lZWRzIHRv
IGJlIGFuIGF1dG9fcHRyIGZvciB1c2FnZSB3aXRoIGNyZWF0ZUNhbGxiYWNrVGFzay4KKyAgICBt
ZW1jcHkodmVjdG9yLT5kYXRhKCksIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAgICBtX21lc3Nh
Z2luZ1Byb3h5LnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29y
a2VyQ29udGV4dERpZFJlY2VpdmVEYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHZlY3Rvcikp
OworfQorCit2b2lkIHdvcmtlckNvbnRleHREaWRGaW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4g
d29ya2VyQ2xpZW50V3JhcHBlciwgaW50IGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CisgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKK30KKwordm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKGludCBp
ZGVudGlmaWVyKQoreworICAgIG1fbWVzc2FnaW5nUHJveHkucG9zdFRhc2tUb1dvcmtlckNvbnRl
eHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkRmluaXNoTG9hZGluZywgbV93
b3JrZXJDbGllbnRXcmFwcGVyLCBpZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgd29ya2VyQ29udGV4
dERpZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFi
bGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyKQoreworICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOworICAgIHdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZEZhaWwoKTsKK30KKwordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsKCkKK3sKKyAgICBtX21lc3NhZ2luZ1Byb3h5
LnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4
dERpZEZhaWwsIG1fd29ya2VyQ2xpZW50V3JhcHBlcikpOworfQorCit2b2lkIHdvcmtlckNvbnRl
eHREaWRHZXRDYW5jZWxsZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRy
PFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyKQorewor
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwor
ICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZEdldENhbmNlbGxlZCgpOworfQorCit2b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEdldENhbmNlbGxlZCgp
Cit7CisgICAgbV9tZXNzYWdpbmdQcm94eS5wb3N0VGFza1RvV29ya2VyQ29udGV4dChjcmVhdGVD
YWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRHZXRDYW5jZWxsZWQsIG1fd29ya2VyQ2xpZW50
V3JhcHBlcikpOworfQorCit2b2lkIHdvcmtlckNvbnRleHREaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DYW5jZWxsYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFRo
cmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBhdXRvX3B0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiByZXNwb25zZURhdGEpCit7CisgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CisgICAg
T3duUHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2U6OmFkb3B0
KHJlc3BvbnNlRGF0YSkpOworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNhbmNlbGxhdGlvbigqcmVzcG9uc2UpOworfQorCit2b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNh
bmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX21l
c3NhZ2luZ1Byb3h5LnBvc3RUYXNrVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygm
d29ya2VyQ29udGV4dERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbiwgbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCByZXNwb25zZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDYyYzIyCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyX2gKKyNkZWZp
bmUgV29ya2VyVGhyZWFkYWJsZUxvYWRlcl9oCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCIKKworI2lu
Y2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OworICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CisgICAgY2xhc3MgV29ya2VyTWVzc2Fn
aW5nUHJveHk7CisgICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE7Cisg
ICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YTsKKworICAgIGNsYXNzIFdv
cmtlclRocmVhZGFibGVMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyPiwgcHVibGljIFRocmVhZGFibGVMb2FkZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFdvcmtlckNv
bnRleHQqIHdvcmtlciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29u
dGVudFNuaWZmIGNvbnRlbnRTbmlmZikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKHdvcmtlciwgY2xpZW50LCByZXF1ZXN0
LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25pZmYpKTsKKyAgICAgICAgfQorCisgICAgICAg
IH5Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNl
bCgpOworCisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj46
OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPjo6
ZGVyZWY7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZUaHJlYWRh
YmxlTG9hZGVyKCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZUaHJlYWRh
YmxlTG9hZGVyKCkgeyBkZXJlZigpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBDcmVh
dGVzIGEgbG9hZGVyIG9uIHRoZSBtYWluIHRocmVhZCBhbmQgYnJpZGdlcyBjb21tdW5pY2F0aW9u
IGJldHdlZW4KKyAgICAgICAgLy8gdGhlIG1haW4gdGhyZWFkIGFuZCB0aGUgd29ya2VyIGNvbnRl
eHQncyB0aHJlYWQgd2hlcmUgV29ya2VyVGhyZWFkYWJsZUxvYWRlciBydW5zLgorICAgICAgICAv
LworICAgICAgICAvLyBSZWdhcmRpbmcgdGhlIGJyaWRnZSBhbmQgbGlmZXRpbWVzIG9mIGl0ZW1z
IHVzZWQgaW4gY2FsbGJhY2tzLCB0aGVyZSBhcmUgYSBmZXcgY2FzZXM6CisgICAgICAgIC8vCisg
ICAgICAgIC8vIGFsbCBjYXNlcy4gQWxsIHRhc2tzIHBvc3RlZCBmcm9tIHRoZSB3b3JrZXIgY29u
dGV4dCdzIHRocmVhZCBhcmUgb2sgYmVjYXVzZQorICAgICAgICAvLyAgICB0aGUgbGFzdCB0YXNr
IHBvc3RlZCBhbHdheXMgaXMgIm1haW5UaHJlYWREZXN0cm95Iiwgc28gTWFpblRocmVhZEJyaWRn
ZSBpcworICAgICAgICAvLyAgICBhcm91bmQgZm9yIGFsbCB0YXNrcyB0aGF0IHVzZSBpdCBvbiB0
aGUgbWlhbiB0aHJlYWQuCisgICAgICAgIC8vCisgICAgICAgIC8vIGNhc2UgMS4gd29ya2VyLnRl
cm1pbmF0ZSBpcyBjYWxsZWQuCisgICAgICAgIC8vICAgIEluIHRoaXMgY2FzZSwgbm8gbW9yZSB0
YXNrcyBhcmUgcG9zdGVkIGZyb20gdGhlIHdvcmtlciBvYmplY3QncyB0aHJlYWQgdG8gdGhlIHdv
cmtlcgorICAgICAgICAvLyAgICBjb250ZXh0J3MgdGhyZWFkIC0tIFdvcmtlck1lc3NhZ2luZ1By
b3h5IGVuZm9yY2VzIHRoaXMuCisgICAgICAgIC8vCisgICAgICAgIC8vIGNhc2UgMi4geGhyIGdl
dHMgYWJvcnRlZCBhbmQgdGhlIHdvcmtlciBjb250ZXh0IGNvbnRpbnVlcyBydW5uaW5nLgorICAg
ICAgICAvLyAgICBUaGUgVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIgaGFzIHRoZSB1bmRl
cmx5aW5nIGNsaWVudCBjbGVhcmVkLCBzbyBubyBtb3JlIGNhbGxzCisgICAgICAgIC8vICAgIGdv
IHRocm91Z2ggaXQuICBBbGwgdGFza3MgcG9zdGVkIGZyb20gdGhlIHdvcmtlciBvYmplY3QncyB0
aHJlYWQgdG8gdGhlIHdvcmtlciBjb250ZXh0J3MKKyAgICAgICAgLy8gICAgdGhyZWFkIGRvICJU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6cmVmIiAoYXV0b21hdGljYWxseSBpbnNpZGUg
b2YgdGhlIGNyb3NzIHRocmVhZCBjb3B5CisgICAgICAgIC8vICAgIGRvbmUgaW4gY3JlYXRlQ2Fs
bGJhY2tUYXNrKSwgc28gdGhlIFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyIGluc3RhbmNl
IGlzIHRoZXJlIHVudGlsIGFsbAorICAgICAgICAvLyAgICB0YXNrcyBhcmUgZXhlY3V0ZWQuCisg
ICAgICAgIGNsYXNzIE1haW5UaHJlYWRCcmlkZ2UgOiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsK
KyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSB3b3Jr
ZXIgY29udGV4dCdzIHRocmVhZC4KKyAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFk
YWJsZUxvYWRlckNsaWVudCosIFdvcmtlck1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmKTsKKyAgICAgICAgICAgIHZvaWQg
Y2FuY2VsKCk7CisgICAgICAgICAgICB2b2lkIGRlc3Ryb3koKTsKKworICAgICAgICBwcml2YXRl
OgorICAgICAgICAgICAgLy8gRXhlY3V0ZWQgb24gdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFk
LgorICAgICAgICAgICAgdm9pZCBjbGVhckNsaWVudFdyYXBwZXIoKTsKKworICAgICAgICAgICAg
Ly8gQWxsIGV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFk
QnJpZGdlKik7CisgICAgICAgICAgICB+TWFpblRocmVhZEJyaWRnZSgpOworCisgICAgICAgICAg
ICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ3JlYXRlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBNYWluVGhyZWFkQnJpZGdlKiwgc3RkOjphdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE+LCBMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYpOworICAgICAgICAgICAg
c3RhdGljIHZvaWQgbWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWFp
blRocmVhZEJyaWRnZSopOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciosIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhpbnQgaWRlbnRpZmllcik7CisgICAgICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEdl
dENhbmNlbGxlZCgpOworICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisKKyAgICAgICAg
ICAgIC8vIE9ubHkgdG8gYmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgICAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9tYWluVGhyZWFkTG9hZGVyOworCisgICAgICAgICAg
ICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciBpcyB0byBiZSB1c2VkIG9uIHRoZSB3
b3JrZXIgY29udGV4dCB0aHJlYWQuCisgICAgICAgICAgICAvLyBUaGUgcmVmIGNvdW50aW5nIGlz
IGRvbmUgb24gZWl0aGVyIHRocmVhZC4KKyAgICAgICAgICAgIFJlZlB0cjxUaHJlYWRTYWZlU2hh
cmVkPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiA+IG1fd29ya2VyQ2xpZW50V3JhcHBl
cjsKKworICAgICAgICAgICAgLy8gTWF5IGJlIHVzZWQgb24gZWl0aGVyIHRocmVhZC4KKyAgICAg
ICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5JiBtX21lc3NhZ2luZ1Byb3h5OworICAgICAgICB9
OworCisgICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyQ29udGV4dCosIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tz
LCBDb250ZW50U25pZmYpOworCisgICAgICAgIFJlZlB0cjxXb3JrZXJDb250ZXh0PiBtX3dvcmtl
ckNvbnRleHQ7CisgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UmIG1fYnJpZGdlOworICAgIH07CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQorCisj
ZW5kaWYgLy8gV29ya2VyVGhyZWFkYWJsZUxvYWRlcl9oCg==
</data>
<flag name="review"
          id="13144"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>