<?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>40587</bug_id>
          
          <creation_ts>2010-06-14 13:52:14 -0700</creation_ts>
          <short_desc>Add ScriptExecutionContext argument to File/Blob constructors</short_desc>
          <delta_ts>2010-07-27 14:17:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>238025</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-14 13:52:14 -0700</bug_when>
    <thetext>Need to add ScriptExecutionContext argument to File/Blob constructor. This is needed in order to support Blob.url.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238027</commentid>
    <comment_count>1</comment_count>
      <attachid>58695</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-14 13:54:03 -0700</bug_when>
    <thetext>Created attachment 58695
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238031</commentid>
    <comment_count>2</comment_count>
      <attachid>58698</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-14 13:57:52 -0700</bug_when>
    <thetext>Created attachment 58698
Proposed Patch (remove the code piece that should not be in this patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238044</commentid>
    <comment_count>3</comment_count>
      <attachid>58698</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-14 14:29:57 -0700</bug_when>
    <thetext>Comment on attachment 58698
Proposed Patch (remove the code piece that should not be in this patch)

It is a layering violation for files in the Platform directory to use the Frame class.  r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238060</commentid>
    <comment_count>4</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-14 14:52:27 -0700</bug_when>
    <thetext>Thanks for pointing it out. I am not sure what is the other way to solve this problem: we need to get current ScriptExecutionContext and pass it to File::create in Clipboard*** implementations for Clipboard::files(). I know there is a way in V8 to get current ScriptExecutionContext without relying on Frame, but I do not know whether JSC supports this or not. Sam, do yo know?

If we cannot get the ScriptExecutionContext without Frame, we will have to think of some way to pass Frame or similar thing to the Clipboard implementations under platform directory. What are the restrictions for files in the platform directory: are they not allowed to use any class from the non-platform directory? I have seen some dependencies, like DragData referring to Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238086</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-14 15:25:58 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Thanks for pointing it out. I am not sure what is the other way to solve this problem: we need to get current ScriptExecutionContext and pass it to File::create in Clipboard*** implementations for Clipboard::files(). I know there is a way in V8 to get current ScriptExecutionContext without relying on Frame, but I do not know whether JSC supports this or not. Sam, do yo know?

The Clipboard object can refer to the Frame, just not the classes in Platform. ClipboardMac, for instance, already has a Frame reference.

&gt; 
&gt; If we cannot get the ScriptExecutionContext without Frame, we will have to think of some way to pass Frame or similar thing to the Clipboard implementations under platform directory. What are the restrictions for files in the platform directory: are they not allowed to use any class from the non-platform directory? I have seen some dependencies, like DragData referring to Document.

Classes in the platform directory should only uses classes in the platform directory or in WTF.  Places like DragData using Document are bugs and should be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238090</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-14 15:29:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Thanks for pointing it out. I am not sure what is the other way to solve this problem: we need to get current ScriptExecutionContext and pass it to File::create in Clipboard*** implementations for Clipboard::files(). I know there is a way in V8 to get current ScriptExecutionContext without relying on Frame, but I do not know whether JSC supports this or not. Sam, do yo know?
&gt; 
&gt; The Clipboard object can refer to the Frame, just not the classes in Platform. ClipboardMac, for instance, already has a Frame reference.

I see now that the frame is only set when using the Clipboard from the EventHandler class.  I am not sure how you should solve this, but adding an additional layering violation is not the way.  It seems clear that DragData should not be creating Clipboards in the first place, as that itself is also a layering violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238158</commentid>
    <comment_count>7</comment_count>
      <attachid>58732</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-14 17:22:38 -0700</bug_when>
    <thetext>Created attachment 58732
Proposed Patch

Remove DragData::createClipboard and add Clipboard::create for it to be directly in DragController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238159</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-14 17:25:26 -0700</bug_when>
    <thetext>Attachment 58732 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/dom/Clipboard.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255112</commentid>
    <comment_count>9</comment_count>
      <attachid>62368</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-07-22 17:44:11 -0700</bug_when>
    <thetext>Created attachment 62368
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255118</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-22 17:49:08 -0700</bug_when>
    <thetext>Attachment 62368 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/Clipboard.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255172</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-22 20:02:26 -0700</bug_when>
    <thetext>Attachment 62368 did not build on gtk:
Build output: http://queues.webkit.org/results/3561341</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255569</commentid>
    <comment_count>12</comment_count>
      <attachid>62464</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-07-23 14:47:59 -0700</bug_when>
    <thetext>Created attachment 62464
Proposed Patch

Fixed GTK build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255570</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-23 14:50:17 -0700</bug_when>
    <thetext>Attachment 62464 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/Clipboard.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255590</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-23 16:05:57 -0700</bug_when>
    <thetext>Attachment 62464 did not build on gtk:
Build output: http://queues.webkit.org/results/3617058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255592</commentid>
    <comment_count>15</comment_count>
      <attachid>62471</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-07-23 16:12:53 -0700</bug_when>
    <thetext>Created attachment 62471
Proposed Patch

Fixed gtk build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255594</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-23 16:15:42 -0700</bug_when>
    <thetext>Attachment 62471 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/Clipboard.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256331</commentid>
    <comment_count>17</comment_count>
      <attachid>62471</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-07-26 16:42:33 -0700</bug_when>
    <thetext>Comment on attachment 62471
Proposed Patch

Nice clean up of the layering violation that was present.


In WebCore/platform/DragData.h, please consider removing the forward declaration of &quot;class Clipboard&quot; as it is no longer needed.


&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +2010-07-22  Jian Li  &lt;jianli@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add ScriptExecutionContext argument to File/Blob constructors.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=40587
&gt; +
&gt; +        Remove DragData::createClipboard and add Clipboard::create for it to be
&gt; +        called directly in DragController. This is because we need to pass
&gt; +        Frame pointer to Clipboard class and use it to get ScriptExecutionContext
&gt; +        in order to construct File objectsin Clipboard::files().

typo: objectsin

&gt;
&gt; +        * bindings/js/SerializedScriptValue.cpp:
&gt; +        (WebCore::DeserializingTreeWalker::convertIfTerminal):
&gt; +        * bindings/v8/SerializedScriptValue.cpp:
&gt; +        (WebCore::ZigZag::Reader::readBlob):
&gt; +        (WebCore::ZigZag::Reader::readFile):
&gt; +        (WebCore::ZigZag::Reader::readFileList):
&gt; +        * dom/Clipboard.h:
&gt; +        * editing/Editor.cpp:
&gt; +        (WebCore::Editor::dispatchCPPEvent):
&gt; +        * editing/Editor.h:
&gt; +        * editing/android/EditorAndroid.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * editing/brew/EditorBrew.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * editing/chromium/EditorChromium.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * editing/haiku/EditorHaiku.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * editing/mac/EditorMac.mm:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * editing/qt/EditorQt.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * editing/wx/EditorWx.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * html/Blob.cpp:
&gt; +        (WebCore::Blob::Blob):
&gt; +        (WebCore::Blob::slice):
&gt; +        * html/Blob.h:
&gt; +        (WebCore::Blob::create):
&gt; +        * html/Blob.idl:
&gt; +        * html/BlobBuilder.cpp:
&gt; +        (WebCore::BlobBuilder::getBlob):
&gt; +        * html/BlobBuilder.h:
&gt; +        * html/BlobBuilder.idl:
&gt; +        * html/File.cpp:
&gt; +        (WebCore::File::File):
&gt; +        * html/File.h:
&gt; +        (WebCore::File::create):
&gt; +        * html/HTMLInputElement.cpp:
&gt; +        (WebCore::HTMLInputElement::appendFormData):
&gt; +        (WebCore::HTMLInputElement::setFileListFromRenderer):
&gt; +        * page/DragController.cpp:
&gt; +        (WebCore::DragController::dragExited):
&gt; +        (WebCore::DragController::performDrag):
&gt; +        (WebCore::DragController::tryDHTMLDrag):
&gt; +        * page/chromium/EventHandlerChromium.cpp:
&gt; +        (WebCore::EventHandler::createDraggingClipboard):
&gt; +        * page/gtk/EventHandlerGtk.cpp:
&gt; +        (WebCore::EventHandler::createDraggingClipboard):
&gt; +        * page/win/EventHandlerWin.cpp:
&gt; +        (WebCore::EventHandler::createDraggingClipboard):
&gt; +        * platform/DragData.h:
&gt; +        * platform/android/ClipboardAndroid.cpp:
&gt; +        (WebCore::Clipboard::create):
&gt; +        * platform/android/DragDataAndroid.cpp:
&gt; +        * platform/brew/ClipboardBrew.cpp:
&gt; +        (WebCore::Clipboard::create):
&gt; +        * platform/brew/DragDataBrew.cpp:
&gt; +        * platform/chromium/ClipboardChromium.cpp:
&gt; +        (WebCore::Clipboard::create):
&gt; +        (WebCore::ClipboardChromium::ClipboardChromium):
&gt; +        (WebCore::ClipboardChromium::create):
&gt; +        (WebCore::ClipboardChromium::files):
&gt; +        * platform/chromium/ClipboardChromium.h:
&gt; +        * platform/chromium/DragDataChromium.cpp:
&gt; +        * platform/efl/ClipboardEfl.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        (WebCore::Clipboard::create):
&gt; +        * platform/efl/DragDataEfl.cpp:
&gt; +        * platform/gtk/ClipboardGtk.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        (WebCore::Clipboard::create):
&gt; +        (WebCore::ClipboardGtk::ClipboardGtk):
&gt; +        (WebCore::ClipboardGtk::files):
&gt; +        * platform/gtk/ClipboardGtk.h:
&gt; +        (WebCore::ClipboardGtk::create):
&gt; +        * platform/gtk/DragDataGtk.cpp:
&gt; +        * platform/haiku/ClipboardHaiku.cpp:
&gt; +        (WebCore::Clipboard::create):
&gt; +        * platform/haiku/DragDataHaiku.cpp:
&gt; +        * platform/mac/ClipboardMac.mm:
&gt; +        (WebCore::Clipboard::create):
&gt; +        (WebCore::ClipboardMac::files):
&gt; +        * platform/mac/DragDataMac.mm:
&gt; +        * platform/qt/ClipboardQt.cpp:
&gt; +        (WebCore::Clipboard::create):
&gt; +        * platform/qt/DragDataQt.cpp:
&gt; +        * platform/win/ClipboardWin.cpp:
&gt; +        (WebCore::Clipboard::create):
&gt; +        (WebCore::ClipboardWin::ClipboardWin):
&gt; +        (WebCore::ClipboardWin::files):
&gt; +        * platform/win/ClipboardWin.h:
&gt; +        (WebCore::ClipboardWin::create):
&gt; +        * platform/win/DragDataWin.cpp:
&gt; +        * platform/win/EditorWin.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * platform/wince/DragDataWince.cpp:
&gt; +        * platform/wince/EditorWince.cpp:
&gt; +        (WebCore::Editor::newGeneralClipboard):
&gt; +        * platform/wx/ClipboardWx.cpp:
&gt; +        (WebCore::Clipboard::create):
&gt; +        * platform/wx/DragDataWx.cpp:

In the future please consider, that it&apos;s nice to have short comments here explaining what was done in each place (see any of Darin Adler&apos;s check-ins for good examples).


WebCore/platform/haiku/ClipboardHaiku.cpp:45
 +  WTF::PassRefPtr&lt;Clipboard&gt; Clipboard::create(ClipboardAccessPolicy policy, DragData*, Frame*)
The WTF:: prefix shouldn&apos;t be needed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256827</commentid>
    <comment_count>18</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-07-27 14:17:05 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/64152.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58695</attachid>
            <date>2010-06-14 13:54:03 -0700</date>
            <delta_ts>2010-06-14 13:57:52 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>40587</filename>
            <type>text/plain</type>
            <size>47390</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWRlMzcyNS4uOGFiNjk3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDYgQEAKKzIwMTAtMDYtMTQgIEppYW4gTGkgIDxq
aWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFyZ3VtZW50IHRvIEZpbGUv
QmxvYiBjb25zdHJ1Y3RvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDU4NworCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpj
b252ZXJ0SWZUZXJtaW5hbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlppZ1phZzo6UmVhZGVyOjpyZWFkQmxvYik6
CisgICAgICAgIChXZWJDb3JlOjpaaWdaYWc6OlJlYWRlcjo6cmVhZEZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6WmlnWmFnOjpSZWFkZXI6OnJlYWRGaWxlTGlzdCk6CisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVnaXN0ZXJCbG9iKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6ZGlzcGF0Y2hDUFBFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
aDoKKyAgICAgICAgKiBlZGl0aW5nL2FuZHJvaWQvRWRpdG9yQW5kcm9pZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAqIGVkaXRp
bmcvYnJldy9FZGl0b3JCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2Vu
ZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvaGFpa3UvRWRpdG9ySGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvcXQvRWRpdG9yUXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL3d4L0Vk
aXRvcld4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZCk6CisgICAgICAgICogaHRtbC9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJs
b2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6c2xpY2UpOgorICAgICAgICAqIGh0bWwvQmxv
Yi5oOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0Zp
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6RmlsZSk6CisgICAgICAgICogaHRtbC9G
aWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojpz
ZXRGaWxlTGlzdEZyb21SZW5kZXJlcik6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgICogcGFnZS9jaHJv
bWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL2d0ay9FdmVu
dEhhbmRsZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVE
cmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9h
cmQpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
YW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6
OmNyZWF0ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9EcmFnRGF0YUJyZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OkNsaXBib2FyZENocm9taXVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRh
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2Fy
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9EcmFnRGF0YUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y3JlYXRl
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0ayk6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRHdGs6OmZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3Rr
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
OjpjcmVhdGVDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFp
a3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZE1hYzo6ZmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbik6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmZpbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9FZGl0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5l
cmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvRHJhZ0Rh
dGFXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKToK
KwogMjAxMC0wNi0xNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA5MGY4ZDdjLi4zMTIzODRiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC03MzYsMTggKzczNiwy
MyBAQCBzdHJ1Y3QgRGVzZXJpYWxpemluZ1RyZWVXYWxrZXIgOiBwdWJsaWMgQmFzZVdhbGtlciB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1fZXhlYywgdmFsdWUuYXNEb3VibGUo
KSk7CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkRhdGVUeXBl
OgogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZXhlYykgRGF0ZUluc3RhbmNlKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QtPmRhdGVTdHJ1Y3R1cmUoKSwgdmFsdWUuYXNEb3VibGUoKSk7Ci0g
ICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkZpbGVUeXBlOgorICAg
ICAgICAgICAgY2FzZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpGaWxlVHlwZTogewogICAg
ICAgICAgICAgICAgIGlmICghbV9pc0RPTUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0b0pTKG1fZXhlYywg
c3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCksIEZpbGU6OmNy
ZWF0ZSh2YWx1ZS5hc1N0cmluZygpLmNyb3NzVGhyZWFkU3RyaW5nKCkpKTsKKyAgICAgICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc3Rh
dGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2V4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVj
LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgRmlsZTo6
Y3JlYXRlKHZhbHVlLmFzU3RyaW5nKCkuY3Jvc3NUaHJlYWRTdHJpbmcoKSwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBTZXJpYWxpemVk
U2NyaXB0VmFsdWVEYXRhOjpGaWxlTGlzdFR5cGU6IHsKICAgICAgICAgICAgICAgICBpZiAoIW1f
aXNET01HbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8RmlsZUxpc3Q+IHJlc3VsdCA9IEZpbGVMaXN0OjpjcmVh
dGUoKTsKICAgICAgICAgICAgICAgICBTZXJpYWxpemVkRmlsZUxpc3QqIHNlcmlhbGl6ZWRGaWxl
TGlzdCA9IHZhbHVlLmFzRmlsZUxpc3QoKTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSBzZXJpYWxpemVkRmlsZUxpc3QtPmxlbmd0aCgpOworICAgICAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0aWNfY2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKEZpbGU6OmNyZWF0
ZShzZXJpYWxpemVkRmlsZUxpc3QtPml0ZW0oaSkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNlcmlhbGl6ZWRGaWxlTGlzdC0+aXRlbShpKSwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0b0pTKG1fZXhl
Yywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCksIHJlc3Vs
dC5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGE6OkltYWdlRGF0YVR5cGU6IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4ZTkxOTIwLi40MDg5MWYxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00NCw2ICs0NCw3
IEBACiAjaW5jbHVkZSAiVjhGaWxlTGlzdC5oIgogI2luY2x1ZGUgIlY4SW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04NTMs
NyArODU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIHBhdGg7CiAgICAgICAgIGlmICgh
cmVhZFdlYkNvcmVTdHJpbmcoJnBhdGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBQYXNzUmVmUHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUocGF0aCk7CisgICAgICAg
IFBhc3NSZWZQdHI8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShwYXRoLCBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgICAgICAqdmFsdWUgPSB0b1Y4KGJsb2IpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC04NjMsNyArODY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
U3RyaW5nIHBhdGg7CiAgICAgICAgIGlmICghcmVhZFdlYkNvcmVTdHJpbmcoJnBhdGgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBQYXNzUmVmUHRyPEZpbGU+IGZpbGUgPSBG
aWxlOjpjcmVhdGUocGF0aCk7CisgICAgICAgIFBhc3NSZWZQdHI8RmlsZT4gZmlsZSA9IEZpbGU6
OmNyZWF0ZShwYXRoLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICAqdmFs
dWUgPSB0b1Y4KGZpbGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC04NzgsNyAr
ODc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFN0cmluZyBwYXRoOwogICAgICAgICAgICAg
aWYgKCFyZWFkV2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUocGF0aCkpOwor
ICAgICAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUocGF0aCwgZ2V0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgKnZhbHVlID0gdG9WOChm
aWxlTGlzdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAppbmRleCAyMjZhYWQ4Li5jMGVmMjI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lmIEVOQUJM
RShCTE9CX1VSTCkKKyNpbmNsdWRlICJCbG9iLmgiCisjZW5kaWYKICNpbmNsdWRlICJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFk
LmgiCkBAIC0yNzAsNiArMjczLDEzIEBAIERPTVRpbWVyKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpmaW5kVGltZW91dChpbnQgdGltZW91dElkKQogICAgIHJldHVybiBtX3RpbWVvdXRzLmdldCh0
aW1lb3V0SWQpOwogfQogCisjaWYgRU5BQkxFKEJMT0JfVVJMKQordm9pZCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpyZWdpc3RlckJsb2IoY29uc3QgS1VSTCYgdXJsLCBCbG9iKiBibG9iKQorewor
ICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYik7Cit9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShGSUxFX1JFQURFUikgfHwgRU5BQkxFKEZJTEVfV1JJVEVSKQogRmlsZVRocmVhZCogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZVRocmVhZCgpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKaW5kZXggMThlMmNkMC4uN2E1N2M3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgog
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CkBAIC0zOSw2ICs0MCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBBY3RpdmVET01PYmplY3Q7CisjaWYgRU5BQkxFKEJMT0JfVVJMKQorICAgIGNsYXNzIEJs
b2I7CisjZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgY2xhc3MgRGF0YWJhc2U7CiAg
ICAgY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyOwpAQCAtMTI3LDYgKzEzMSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVtb3ZlVGltZW91dChpbnQgdGltZW91
dElkKTsKICAgICAgICAgRE9NVGltZXIqIGZpbmRUaW1lb3V0KGludCB0aW1lb3V0SWQpOwogCisj
aWYgRU5BQkxFKEJMT0JfVVJMKQorICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYihjb25zdCBLVVJM
JiwgQmxvYiopOworI2VuZGlmCisKICNpZiBVU0UoSlNDKQogICAgICAgICBKU0M6OkpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSgpOwogI2VuZGlmCkBAIC0xNTQsNiArMTYyLDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBIYXNoTWFwPGludCwgRE9NVGltZXIqPiBtX3RpbWVvdXRz
OwogCisjaWYgRU5BQkxFKEJMT0JfVVJMKQorICAgICAgICBIYXNoTWFwPFN0cmluZywgQmxvYio+
IG1fYmxvYnM7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA4YWUxMzEzLi45ODRiYzgzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtNzEyLDcgKzcxMiw3IEBAIGJvb2wgRWRpdG9yOjpkaXNwYXRjaENQ
UEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHRhcmdldCA9IHRhcmdldC0+c2hhZG93QW5jZXN0
b3JOb2RlKCk7CiAgICAgCi0gICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gbmV3R2Vu
ZXJhbENsaXBib2FyZChwb2xpY3kpOworICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9
IG5ld0dlbmVyYWxDbGlwYm9hcmQocG9saWN5LCBtX2ZyYW1lKTsKIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gQ2xpcGJvYXJkRXZlbnQ6OmNyZWF0
ZShldmVudFR5cGUsIHRydWUsIHRydWUsIGNsaXBib2FyZCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmggYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggM2UyMjNk
Yy4uODNkZjYwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBEZWxldGVCdXR0
b25Db250cm9sbGVyOwogY2xhc3MgRWRpdENvbW1hbmQ7CiBjbGFzcyBFZGl0b3JDbGllbnQ7CiBj
bGFzcyBFZGl0b3JJbnRlcm5hbENvbW1hbmQ7CitjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxFbGVt
ZW50OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtpbGxSaW5nOwpAQCAtMzA5LDcgKzMx
MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhbkRlbGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7
CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKik7Ci0g
ICAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5KTsKKyAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gbmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5U
ZXh0V2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCopOwogICAgIHZvaWQgcGFzdGVXaXRoUGFzdGVi
b2FyZChQYXN0ZWJvYXJkKiwgYm9vbCBhbGxvd1BsYWluVGV4dCk7CiAgICAgdm9pZCByZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wg
c2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2FuZHJvaWQvRWRpdG9yQW5kcm9pZC5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcAppbmRleCA4ZTAwMzI2Li42
MWNjZTAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lk
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcApAQCAt
MzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJv
YXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBv
bGljeSkKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQo
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqKQogewogICAgIHJldHVybiBuZXcg
Q2xpcGJvYXJkQW5kcm9pZChwb2xpY3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZWRpdGluZy9icmV3L0VkaXRvckJyZXcuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9y
QnJldy5jcHAKaW5kZXggYjYxMGI2Mi4uNGExZjRkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0
aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9y
QnJldy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5l
cmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAg
ICByZXR1cm4gbmV3IENsaXBib2FyZEJyZXcocG9saWN5LCBmYWxzZSk7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9l
ZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcAppbmRleCAxZWEwODViLi43YTEzYjEy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3Bw
CisrKyBiL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAKQEAgLTMz
LDEyICszMywxMyBAQAogCiAjaW5jbHVkZSAiQ2hyb21pdW1EYXRhT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQ2xpcGJvYXJkQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSwgRnJhbWUqIGZyYW1lKQogewotICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRl
KGZhbHNlLCBDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZSgpLCBwb2xpY3kpOworICAgIHJldHVy
biBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKGZhbHNlLCBDaHJvbWl1bURhdGFPYmplY3Q6OmNy
ZWF0ZSgpLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlrdS5jcHAKaW5kZXggNzIzZDRmZi4uNDU5NmM5ZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvaGFpa3UvRWRpdG9ySGFpa3UuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2Vu
ZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxD
bGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBGcmFtZSopCiB7CiAgICAgcmV0dXJuIENsaXBib2FyZEhhaWt1OjpjcmVhdGUo
cG9saWN5LCBmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbSBiL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGNhMDAxYTIu
LjJjNWE2MDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisr
KyBiL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0zMyw5ICszMyw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3
R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZE1hYzo6
Y3JlYXRlKGZhbHNlLCBbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSwgcG9saWN5LCAw
KTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoZmFsc2UsIFtOU1Bhc3RlYm9hcmQg
Z2VuZXJhbFBhc3RlYm9hcmRdLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogdm9pZCBFZGl0b3I6OnNo
b3dGb250UGFuZWwoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9xdC9FZGl0b3JRdC5jcHAKaW5kZXggZTc0ZTJmMy4uN2ZiMzYz
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvcXQvRWRpdG9yUXQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENs
aXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBGcmFtZSopCiB7CiAgICAgcmV0dXJuIENsaXBib2FyZFF0OjpjcmVhdGUocG9saWN5KTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JXeC5jcHAgYi9XZWJDb3Jl
L2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCmluZGV4IGNiOWU4MzYuLmEyZWM2NTQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JXeC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5n
L3d4L0VkaXRvcld4LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9y
OjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1l
KikgCiB7IAogICAgIHJldHVybiBDbGlwYm9hcmRXeDo6Y3JlYXRlKHBvbGljeSwgdHJ1ZSk7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQmxvYi5jcHAgYi9XZWJDb3JlL2h0bWwvQmxvYi5j
cHAKaW5kZXggMDU0NmYxYy4uOWNkOWJhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2Iu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9CbG9iLmNwcApAQCAtMzMsMTAgKzMzLDE3IEBACiAKICNp
bmNsdWRlICJCbG9iSXRlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmxvYjo6
QmxvYihjb25zdCBTdHJpbmcmIHBhdGgpCitCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgIDogQWN0aXZlRE9NT2JqZWN0KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIHRoaXMpCit7Cit9CisKK0Jsb2I6OkJsb2IoY29uc3QgU3RyaW5n
JiBwYXRoLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQor
ICAgICA6IEFjdGl2ZURPTU9iamVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0aGlzKQogewog
ICAgIC8vIE5vdGU6IHRoaXMgZG9lc24ndCBpbml0aWFsaXplIHRoZSB0eXBlIHVubGlrZSBGaWxl
KHBhdGgpLgogICAgIGFwcGVuZChGaWxlQmxvYkl0ZW06OmNyZWF0ZShwYXRoKSk7CkBAIC04MCw3
ICs4Nyw3IEBAIFBhc3NSZWZQdHI8QmxvYj4gQmxvYjo6c2xpY2UobG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgbGVuZ3RoKSBjb25zdAogICAgICAgICBsZW5ndGggPSB0b3RhbFNpemUgLSBzdGFy
dDsKIAogICAgIHNpemVfdCBpID0gMDsKLSAgICBSZWZQdHI8QmxvYj4gYmxvYiA9IEJsb2I6OmNy
ZWF0ZSgpOworICAgIFJlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgZm9yICg7IGkgPCBtX2l0ZW1zLnNpemUoKSAmJiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHN0YXJ0KSA+PSBtX2l0ZW1zW2ldLT5zaXplKCk7ICsr
aSkKICAgICAgICAgc3RhcnQgLT0gbV9pdGVtc1tpXS0+c2l6ZSgpOwogICAgIGZvciAoOyBsZW5n
dGggPiAwICYmIGkgPCBtX2l0ZW1zLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvQmxvYi5oIGIvV2ViQ29yZS9odG1sL0Jsb2IuaAppbmRleCAzOTE3N2I1Li4xN2I0NDA1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvQmxvYi5oCisrKyBiL1dlYkNvcmUvaHRtbC9CbG9i
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgQmxvYl9oCiAjZGVmaW5lIEJsb2JfaAogCisj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYkl0ZW0uaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0z
OSwxOSArNDAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBCbG9iIDogcHVi
bGljIFJlZkNvdW50ZWQ8QmxvYj4geworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKwor
Y2xhc3MgQmxvYiA6IHB1YmxpYyBSZWZDb3VudGVkPEJsb2I+LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCbG9iKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Ioc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEZXByZWNhdGVkIG1ldGhvZC4g
IFRoaXMgaXMgY2FsbGVkIG9ubHkgZnJvbQogICAgIC8vIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYW5kIHRoZSB1c2FnZSBpbiBpdCB3aWxsIGJlY29tZSBpbnZhbGlkIG9u
Y2UKICAgICAvLyBCbG9iQnVpbGRlciBpcyBpbnRyb2R1Y2VkLgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJsb2I+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmxvYj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQmxvYihwYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYihwYXRo
LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QmxvYigp
IHsgfQpAQCAtNzEsMTAgKzc0LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0g
ICAgQmxvYigpIHsgfQorICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAg
Ly8gRklYTUU6IERlcHJlY2F0ZWQgY29uc3RydWN0b3IuICBTZWUgYWxzbyB0aGUgY29tbWVudCBm
b3IgQmxvYjo6Y3JlYXRlKHBhdGgpLgotICAgIEJsb2IoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAg
ICBCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAg
ICAgQmxvYkl0ZW1MaXN0IG1faXRlbXM7CiAgICAgU3RyaW5nIG1fdHlwZTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9GaWxlLmNwcCBiL1dlYkNvcmUvaHRtbC9GaWxlLmNwcAppbmRleCAyYzlj
ZTUzLi4yODFlNDI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvRmlsZS5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL0ZpbGUuY3BwCkBAIC0yOCwxMSArMjgsMTIgQEAKIAogI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGU6OkZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogQmxvYihwYXRoKQorRmlsZTo6RmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCisgICAgOiBCbG9iKHBhdGgsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgLy8g
V2UgZG9uJ3QgdXNlIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aCgpIGJlY2F1
c2UgaXQgcmV0dXJucyAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB1cG9uIGZhaWx1cmUuCiAg
ICAgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSA9IG5hbWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9GaWxlLmggYi9XZWJDb3JlL2h0bWwvRmlsZS5oCmluZGV4IDU4MmRiMjguLjMxM2Y4MGIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlLmgKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGUu
aApAQCAtMzIsMTEgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKKwogY2xhc3MgRmlsZSA6IHB1YmxpYyBCbG9iIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRo
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZpbGUocGF0aCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC00
OCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVNpemUoKSBj
b25zdCB7IHJldHVybiBzaXplKCk7IH0KIAogcHJpdmF0ZToKLSAgICBGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CisgICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCAzZDMzZmY4Li4yMzg0OTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCkBAIC0xMzc5LDcgKzEzNzksNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGVuZEZv
cm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wgbXVsdGlwYXJ0KQogICAgICAgICAv
LyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMgZW50ZXJlZCwgcmV0dXJuIHN1Y2Nlc3NmdWwgYnV0
IGVtcHR5LgogICAgICAgICAvLyBOdWxsIHdvdWxkIGJlIG1vcmUgbG9naWNhbCwgYnV0IE5ldHNj
YXBlIHBvc3RzIGFuIGVtcHR5IGZpbGUuIEFyZ2guCiAgICAgICAgIGlmICghbnVtRmlsZXMpIHsK
LSAgICAgICAgICAgIGVuY29kaW5nLmFwcGVuZEJsb2IobmFtZSgpLCBGaWxlOjpjcmVhdGUoIiIp
KTsKKyAgICAgICAgICAgIGVuY29kaW5nLmFwcGVuZEJsb2IobmFtZSgpLCBGaWxlOjpjcmVhdGUo
IiIsIGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTk2Nyw3ICsxOTY3LDcgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpzZXRGaWxlTGlzdEZyb21SZW5kZXJlcihjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGF0aHMpCiAgICAgbV9maWxlTGlzdC0+Y2xlYXIoKTsKICAgICBpbnQgc2l6ZSA9IHBhdGhz
LnNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgbV9m
aWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShwYXRoc1tpXSkpOworICAgICAgICBtX2ZpbGVM
aXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldLCBkb2N1bWVudCgpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpKTsKIAogICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVy
ZXIodHJ1ZSk7CiAgICAgSW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNzE2NzcyYi4uYTI2OTM0YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6
ZHJhZ0V4aXRlZChEcmFnRGF0YSogZHJhZ0RhdGEpCiAKICAgICBpZiAoUmVmUHRyPEZyYW1lVmll
dz4gdiA9IG1haW5GcmFtZS0+dmlldygpKSB7CiAgICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3kgPSAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNl
LT5zZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBDbGlw
Ym9hcmRUeXBlc1JlYWRhYmxlOwotICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQg
PSBkcmFnRGF0YS0+Y3JlYXRlQ2xpcGJvYXJkKHBvbGljeSk7CisgICAgICAgIFJlZlB0cjxDbGlw
Ym9hcmQ+IGNsaXBib2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9hcmQocG9saWN5LCBtYWlu
RnJhbWUpOwogICAgICAgICBjbGlwYm9hcmQtPnNldFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0YS0+
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkpOwogICAgICAgICBtYWluRnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRhKSwg
Y2xpcGJvYXJkLmdldCgpKTsKICAgICAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xp
cGJvYXJkTnVtYik7ICAgIC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5
CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWcoRHJh
Z0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBSZWZQdHI8RnJhbWU+IG1haW5GcmFtZSA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCk7CiAgICAgICAgIGlmIChtYWluRnJhbWUtPnZpZXcoKSkgewogICAgICAg
ICAgICAgLy8gU2VuZGluZyBhbiBldmVudCBjYW4gcmVzdWx0IGluIHRoZSBkZXN0cnVjdGlvbiBv
ZiB0aGUgdmlldyBhbmQgcGFydC4KLSAgICAgICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBi
b2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkUmVhZGFibGUpOworICAg
ICAgICAgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gZHJhZ0RhdGEtPmNyZWF0ZUNs
aXBib2FyZChDbGlwYm9hcmRSZWFkYWJsZSwgbWFpbkZyYW1lLmdldCgpKTsKICAgICAgICAgICAg
IGNsaXBib2FyZC0+c2V0U291cmNlT3BlcmF0aW9uKGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2soKSk7CiAgICAgICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5w
ZXJmb3JtRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIGNsaXBib2FyZC5n
ZXQoKSk7CiAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmRO
dW1iKTsgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKQEAgLTUy
NCw3ICs1MjQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoRHJhZ0RhdGEq
IGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kgPSBtX2RvY3VtZW50VW5kZXJN
b3VzZS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNMb2NhbCgpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBD
bGlwYm9hcmRUeXBlc1JlYWRhYmxlOwotICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9
IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9hcmQocG9saWN5KTsKKyAgICBSZWZQdHI8Q2xpcGJvYXJk
PiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRlQ2xpcGJvYXJkKHBvbGljeSwgbWFpbkZyYW1l
LmdldCgpKTsKICAgICBEcmFnT3BlcmF0aW9uIHNyY09wTWFzayA9IGRyYWdEYXRhLT5kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKICAgICBjbGlwYm9hcmQtPnNldFNvdXJjZU9wZXJhdGlv
bihzcmNPcE1hc2spOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRI
YW5kbGVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNo
cm9taXVtLmNwcAppbmRleCBmZjE2MWFmLi43MTkxNjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9j
aHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQpIGNvbnN0CiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVh
dGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9i
amVjdD4gZGF0YU9iamVjdCA9IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0
dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xp
cGJvYXJkV3JpdGFibGUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKHRy
dWUsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKIH0KIAog
dm9pZCBFdmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRI
YW5kbGVyR3RrLmNwcAppbmRleCAwZmY2N2QyLi40MjlhZWE2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2d0ay9FdmVu
dEhhbmRsZXJHdGsuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
V2hlZWxFdmVudFRvV2lkZ2V0KFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCogd2lk
CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xp
cGJvYXJkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJv
YXJkV3JpdGFibGUsIERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpLCB0cnVlKTsKKyAgICByZXR1cm4g
Q2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIERhdGFPYmplY3RHdGs6OmNy
ZWF0ZSgpLCB0cnVlLCBtX2ZyYW1lKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwg
RnJhbWUqIHN1YmZyYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRs
ZXJXaW4uY3BwIGIvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCmluZGV4IDU1
MTEyMDkuLmVhMzE3YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVy
V2luLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJh
Z2dpbmdDbGlwYm9hcmQoKSBjb25zdAogI2Vsc2UKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBk
YXRhT2JqZWN0OwogICAgIFdDRGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3Qp
OwotICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBkYXRhT2JqZWN0LmdldCgp
LCBDbGlwYm9hcmRXcml0YWJsZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRy
dWUsIGRhdGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKICNlbmRp
ZgogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggN2UyY2M0ZC4uOTY4OTVkOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaApAQCAtNjksNiArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2xp
cGJvYXJkOwogICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7
CisgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgS1VSTDsKICAgICAKICNpZiBQTEFURk9STShN
QUMpCkBAIC05Myw3ICs5NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3Qg
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlv
bjsgfQogICAgICAgICBEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtRHJhZ0RhdGE7IH0KICAgICAgICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzazsgfQotICAgICAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gY3JlYXRlQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3Q7CisgICAgICAgIFBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopIGNvbnN0Owog
ICAgICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFt
ZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5z
UGxhaW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNDb21wYXRpYmxlQ29udGVu
dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRh
QW5kcm9pZC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNw
cAppbmRleCA3NTZkMDA3Li41MzJlNzFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Fu
ZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQv
RHJhZ0RhdGFBbmRyb2lkLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNsaXBib2Fy
ZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgsNyAr
NTksNyBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9y
KCk7CiB9CiAgICAgCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBi
b2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpIGNvbnN0CitQYXNzUmVmUHRyPENsaXBib2FyZD4g
RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKikg
Y29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
YnJldy9EcmFnRGF0YUJyZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0RyYWdEYXRhQnJl
dy5jcHAKaW5kZXggMjBmOTNiOC4uZjRlZDg5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9icmV3L0RyYWdEYXRhQnJldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0RyYWdE
YXRhQnJldy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDcgKzU5LDcgQEAg
Q29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBDb2xvcigpOwogfQog
Ci1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kpIGNvbnN0CitQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNy
ZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKikgY29uc3QKIHsKICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5jcHAKaW5kZXggNzUwZmYzMC4uNTEzY2ViNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAi
UmVuZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCkBAIC05MSwxNiAr
OTIsMTggQEAgc3RhdGljIENsaXBib2FyZERhdGFUeXBlIGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBDbGlwYm9hcmRDaHJvbWl1bTo6Q2xpcGJvYXJkQ2hy
b21pdW0oYm9vbCBpc0ZvckRyYWdnaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3kpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFt
ZSogZnJhbWUpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBpc0ZvckRyYWdnaW5nKQogICAgICwg
bV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQogewogfQogCiBQ
YXNzUmVmUHRyPENsaXBib2FyZENocm9taXVtPiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKGJv
b2wgaXNGb3JEcmFnZ2luZywKLSAgICBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0
YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKKyAgICBQYXNzUmVmUHRyPENo
cm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSwgRnJhbWUqIGZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkQ2hy
b21pdW0oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVjdCwgcG9saWN5KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDbGlwYm9hcmRDaHJvbWl1bShpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBw
b2xpY3ksIGZyYW1lKSk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkQ2hyb21pdW06OmNsZWFyRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUpCkBAIC0zNTUsOSArMzU4LDEwIEBAIFBhc3NSZWZQdHI8RmlsZUxp
c3Q+IENsaXBib2FyZENocm9taXVtOjpmaWxlcygpIGNvbnN0CiAgICAgaWYgKCFtX2RhdGFPYmpl
Y3QgfHwgbV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
RmlsZUxpc3Q6OmNyZWF0ZSgpOwogCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0
ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kYXRhT2JqZWN0LT5maWxlbmFtZXMu
c2l6ZSgpOyArK2kpCi0gICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKG1fZGF0
YU9iamVjdC0+ZmlsZW5hbWVzLmF0KGkpKSk7CisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmls
ZTo6Y3JlYXRlKG1fZGF0YU9iamVjdC0+ZmlsZW5hbWVzLmF0KGkpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSk7CiAKICAgICByZXR1cm4gZmlsZUxpc3QucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCmluZGV4IGZiZWJkZTIuLmE0
MTUwZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVt
LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2Fj
aGVkSW1hZ2U7CiAgICAgY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0OworICAgIGNsYXNzIEZyYW1l
OwogICAgIGNsYXNzIEludFBvaW50OwogCiAgICAgY2xhc3MgQ2xpcGJvYXJkQ2hyb21pdW0gOiBw
dWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNDUsNyAr
NDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH5DbGlwYm9hcmRDaHJvbWl1bSgp
IHt9CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IGNyZWF0
ZSgKLSAgICAgICAgICAgIGJvb2wgaXNGb3JEcmFnZ2luZywgUGFzc1JlZlB0cjxDaHJvbWl1bURh
dGFPYmplY3Q+LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOworICAgICAgICAgICAgYm9vbCBpc0Zv
ckRyYWdnaW5nLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vz
c1BvbGljeSwgRnJhbWUqKTsKIAogICAgICAgICAvLyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgKG5v
dCBpbmNsdWRpbmcgdGhlIGV4dGVuc2lvbikuIFRoaXMgcmVtb3ZlcyBhbnkKICAgICAgICAgLy8g
aW52YWxpZCBmaWxlIHN5c3RlbSBjaGFyYWN0ZXJzIGFzIHdlbGwgYXMgbWFraW5nIHN1cmUgdGhl
CkBAIC03OSwxMSArODAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgaGFzRGF0YSgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQ2xpcGJvYXJkQ2hyb21p
dW0oYm9vbCwgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+LCBDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kpOworICAgICAgICBDbGlwYm9hcmRDaHJvbWl1bShib29sLCBQYXNzUmVmUHRyPENocm9t
aXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKIAogICAgICAg
ICB2b2lkIHJlc2V0RnJvbUNsaXBib2FyZCgpOwogICAgICAgICB2b2lkIHNldERyYWdJbWFnZShD
YWNoZWRJbWFnZSosIE5vZGUqLCBjb25zdCBJbnRQb2ludCYpOwogICAgICAgICBSZWZQdHI8Q2hy
b21pdW1EYXRhT2JqZWN0PiBtX2RhdGFPYmplY3Q7CisgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwCmluZGV4IDJjMjE1MWEuLjY5OTcyYjMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgpAQCAtNDgsMTAgKzQ5LDEwIEBAIHN0YXRpYyBib29sIGNvbnRhaW5z
SFRNTChjb25zdCBDaHJvbWl1bURhdGFPYmplY3QqIGRyb3BEYXRhKQogICAgIHJldHVybiBkcm9w
RGF0YS0+dGV4dEh0bWwubGVuZ3RoKCkgPiAwOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4g
RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBj
b25zdAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKSBjb25zdAogewogICAgIFJl
ZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gY2xpcGJvYXJkID0gQ2xpcGJvYXJkQ2hyb21pdW06OmNy
ZWF0ZSh0cnVlLAotICAgICAgICBtX3BsYXRmb3JtRHJhZ0RhdGEsIHBvbGljeSk7CisgICAgICAg
IG1fcGxhdGZvcm1EcmFnRGF0YSwgcG9saWN5LCBmcmFtZSk7CiAKICAgICByZXR1cm4gY2xpcGJv
YXJkLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBi
b2FyZEVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCmluZGV4
IDZlZjUxY2YuLmJiMTZmNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBi
b2FyZEVmbC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcApA
QCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSopCiB7CiAgICAgcmV0dXJuIG5ldyBDbGlwYm9hcmRFZmwocG9saWN5LCBmYWxzZSk7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKaW5kZXggZjZiNDQ2Yy4uMzhkNTkyOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2lu
Y2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjEsNyArNjIsNyBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAg
ICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6
Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QKK1Bhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSwgRnJhbWUqKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ns
aXBib2FyZEd0ay5jcHAKaW5kZXggYWQxYzY2NS4uYzIzMjMzZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUGFzdGVib2Fy
ZC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFn
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJp
bmdIYXNoLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpAQCAtNDMsMjQgKzQ0LDI2IEBAIGVudW0gQ2xpcGJvYXJkVHlwZSB7CiAgICAgQ2xpcGJv
YXJkVHlwZVVua25vd24KIH07CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dl
bmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNy
ZWF0ZShwb2xpY3ksIGd0a19jbGlwYm9hcmRfZ2V0X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dl
dF9kZWZhdWx0KCksIEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKSwgZmFsc2UpOworICAgIHJldHVy
biBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIGd0a19jbGlwYm9hcmRfZ2V0X2Zvcl9kaXNw
bGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKSwg
ZmFsc2UsIGZyYW1lKTsKIH0KIAotQ2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGsoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCitDbGlwYm9hcmRH
dGs6OkNsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtDbGlwYm9h
cmQqIGNsaXBib2FyZCwgRnJhbWUqIGZyYW1lKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZmFs
c2UpCiAgICAgLCBtX2RhdGFPYmplY3QoRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBi
b2FyZCkpCiAgICAgLCBtX2NsaXBib2FyZChjbGlwYm9hcmQpCiAgICAgLCBtX2hlbHBlcihQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5oZWxwZXIoKSkKKyAgICAsIG1fZnJhbWUoZnJh
bWUpCiB7CiB9CiAKLUNsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBm
b3JEcmFnZ2luZykKK0NsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBm
b3JEcmFnZ2luZywgRnJhbWUqIGZyYW1lKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZm9yRHJh
Z2dpbmcpCiAgICAgLCBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKICAgICAsIG1fY2xpcGJvYXJk
KDApCiAgICAgLCBtX2hlbHBlcihQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5oZWxw
ZXIoKSkKKyAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CiB9CiAKQEAgLTI1NSw4ICsyNTgsOSBAQCBQ
YXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRHdGs6OmZpbGVzKCkgY29uc3QKICAgICBSZWZQ
dHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwogICAgIFZlY3RvcjxT
dHJpbmc+IGZpbGVWZWN0b3IobV9kYXRhT2JqZWN0LT5maWxlcygpKTsKIAorICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWxlVmVjdG9yLnNpemUoKTsgaSsrKQotICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6
OmNyZWF0ZShmaWxlVmVjdG9yW2ldKSk7CisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6
Y3JlYXRlKGZpbGVWZWN0b3JbaV0sIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKIAogICAgIHJl
dHVybiBmaWxlTGlzdC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5o
CmluZGV4IGMzNDM4YzQuLjViNDJhYzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5o
CkBAIC0zNCwyMCArMzQsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlw
Ym9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKKyAg
ICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBQYXN0ZWJvYXJkSGVscGVyOwogCiAgICAgLy8gU3Rh
dGUgYXZhaWxhYmxlIGR1cmluZyBJRSdzIGV2ZW50cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29w
eS9wYXN0ZQogICAgIC8vIENyZWF0ZWQgZnJvbSB0aGUgRXZlbnRIYW5kbGVyR3RrIHRvIGJlIHVz
ZWQgYnkgdGhlIGRvbQogICAgIGNsYXNzIENsaXBib2FyZEd0ayA6IHB1YmxpYyBDbGlwYm9hcmQg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBj
cmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9h
cmQsIGJvb2wgaXNGb3JEcmFnZ2luZykKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJv
YXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJk
KiBjbGlwYm9hcmQsIGJvb2wgaXNGb3JEcmFnZ2luZywgRnJhbWUqIGZyYW1lKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIGNs
aXBib2FyZCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGso
cG9saWN5LCBjbGlwYm9hcmQsIGZyYW1lKSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDbGlwYm9hcmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3QsIGJvb2wgaXNGb3JEcmFn
Z2luZykKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRh
T2JqZWN0LCBib29sIGlzRm9yRHJhZ2dpbmcsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBkYXRhT2Jq
ZWN0LCBpc0ZvckRyYWdnaW5nKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENs
aXBib2FyZEd0ayhwb2xpY3ksIGRhdGFPYmplY3QsIGlzRm9yRHJhZ2dpbmcsIGZyYW1lKSk7CiAg
ICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+Q2xpcGJvYXJkR3RrKCk7CiAKQEAgLTc3LDEyICs3
OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YU9iamVj
dEd0az4gZGF0YU9iamVjdCgpIHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgR3RrQ2xpcGJv
YXJkKik7Ci0gICAgICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBhc3NS
ZWZQdHI8RGF0YU9iamVjdEd0az4sIGJvb2wpOworICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LCBHdGtDbGlwYm9hcmQqLCBGcmFtZSopOworICAgICAgICBDbGlwYm9h
cmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+LCBi
b29sLCBGcmFtZSopOwogCiAgICAgICAgIFJlZlB0cjxEYXRhT2JqZWN0R3RrPiBtX2RhdGFPYmpl
Y3Q7CiAgICAgICAgIEd0a0NsaXBib2FyZCogbV9jbGlwYm9hcmQ7CiAgICAgICAgIFBhc3RlYm9h
cmRIZWxwZXIqIG1faGVscGVyOworICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAgICB9OwogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNGVkM2JjMS4uNzJjNTZjMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2lu
Y2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNTcsNyArNTgsNyBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAg
ICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6
Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QKK1Bhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSwgRnJhbWUqKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFp
a3UvRHJhZ0RhdGFIYWlrdS5jcHAKaW5kZXggN2Y0MGI4YS4uNWJkZjc2MCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ2xpcGJvYXJkSGFpa3UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAKIApAQCAtNzYsNyArNzcsNyBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigp
IGNvbnN0CiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLVdURjo6UGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSkgY29uc3QKK1dURjo6UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqKSBjb25zdAogewogICAg
IHJldHVybiBDbGlwYm9hcmRIYWlrdTo6Y3JlYXRlKHBvbGljeSwgdHJ1ZSk7CiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0gYi9XZWJDb3JlL3BsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW0KaW5kZXggZGRmYTBkNS4uOTUxOWQ3MCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiUGFn
ZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKKyNp
bXBvcnQgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKQEAgLTMwNiwxMSArMzA3
LDEyIEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZE1hYzo6ZmlsZXMoKSBjb25zdAog
ICAgIE5TQXJyYXkgKmFic29sdXRlVVJMcyA9IGFic29sdXRlVVJMc0Zyb21QYXN0ZWJvYXJkRmls
ZW5hbWVzKG1fcGFzdGVib2FyZC5nZXQoKSk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFthYnNv
bHV0ZVVSTHMgY291bnRdOwogCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgIGZvciAoTlNVSW50ZWdlciB4ID0gMDsgeCA8IGNvdW50OyB4KyspIHsKICAgICAgICAg
TlNVUkwgKmFic29sdXRlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W2Fic29sdXRlVVJMcyBv
YmplY3RBdEluZGV4OnhdXTsKICAgICAgICAgQVNTRVJUKFthYnNvbHV0ZVVSTCBpc0ZpbGVVUkxd
KTsKLSAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoW2Fic29sdXRlVVJMIHBh
dGhdKSk7CisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKFthYnNvbHV0ZVVS
TCBwYXRoXSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogICAgIH0KICAgICByZXR1cm4gZmls
ZUxpc3QucmVsZWFzZSgpOyAvLyBXZSB3aWxsIGFsd2F5cyByZXR1cm4gYSBGaWxlTGlzdCwgc29t
ZXRpbWVzIGVtcHR5CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0
YU1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IGZhNDE2
ZWQuLjE2ODI0MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFj
Lm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0xMDAsOSAr
MTAwLDkgQEAgQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgICAgICAgICAgICAg
ICAgICAoaW50KShbY29sb3IgYmx1ZUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtj
b2xvciBhbHBoYUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSkpOwogfQogCi1QYXNzUmVmUHRyPENs
aXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5KSBjb25zdAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKSBjb25zdAog
ewotICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZSh0cnVlLCBbbV9wbGF0Zm9ybURyYWdE
YXRhIGRyYWdnaW5nUGFzdGVib2FyZF0sIHBvbGljeSwgMCk7CisgICAgcmV0dXJuIENsaXBib2Fy
ZE1hYzo6Y3JlYXRlKHRydWUsIFttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJk
XSwgcG9saWN5LCBmcmFtZSk7CiB9CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJs
ZUNvbnRlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0
YVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAKaW5kZXggODA4NjA2
ZC4uYWVhNDNkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwCkBAIC0xMDAsNyArMTAw
LDcgQEAgQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBxdmFyaWFu
dF9jYXN0PFFDb2xvcj4obV9wbGF0Zm9ybURyYWdEYXRhLT5jb2xvckRhdGEoKSk7CiB9CiAKLVBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0CitQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6
OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSopIGNv
bnN0CiB7CiAgICAgcmV0dXJuIENsaXBib2FyZFF0OjpjcmVhdGUocG9saWN5LCBtX3BsYXRmb3Jt
RHJhZ0RhdGEpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggM2Mz
YTIwNS4uZWRiN2EyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC0z
OTQsMTcgKzM5NCwxOSBAQCBleGl0OgogICAgIHJldHVybiBocjsKIH0KIAotQ2xpcGJvYXJkV2lu
OjpDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCogZGF0YU9iamVj
dCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK0NsaXBib2FyZFdpbjo6Q2xpcGJvYXJk
V2luKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2Fy
ZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xp
Y3ksIGlzRm9yRHJhZ2dpbmcpCiAgICAgLCBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKICAgICAs
IG1fd3JpdGFibGVEYXRhT2JqZWN0KDApCisgICAgLCBtX2ZyYW1lKGZyYW1lKQogewogfQogCi1D
bGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVj
dCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK0NsaXBib2FyZFdp
bjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiBkYXRhT2Jq
ZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgOiBD
bGlwYm9hcmQocG9saWN5LCBpc0ZvckRyYWdnaW5nKQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFP
YmplY3QpCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9iamVjdChkYXRhT2JqZWN0KQorICAgICwgbV9m
cmFtZShmcmFtZSkKIHsKIH0KIApAQCAtNTk3LDcgKzU5OSw3IEBAIFBhc3NSZWZQdHI8RmlsZUxp
c3Q+IENsaXBib2FyZFdpbjo6ZmlsZXMoKSBjb25zdAogICAgIGZvciAoVUlOVCBpID0gMDsgaSA8
IGZpbGVDb3VudDsgaSsrKSB7CiAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIGks
IGZpbGVuYW1lLCBBUlJBWVNJWkUoZmlsZW5hbWUpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBmaWxlcy0+YXBwZW5kKEZpbGU6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFy
Kj4oZmlsZW5hbWUpKSk7CisgICAgICAgIGZpbGVzLT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8VUNoYXIqPihmaWxlbmFtZSksIG1fZnJhbWUpKTsKICAgICB9CiAKICAgICBH
bG9iYWxVbmxvY2sobWVkaXVtLmhHbG9iYWwpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmggYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4u
aAppbmRleCA0OWZkY2ZlLi5iYTMzMTMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4u
aApAQCAtMzUsMTkgKzM1LDIwIEBAIHN0cnVjdCBJRGF0YU9iamVjdDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIENhY2hlZEltYWdlOworICAgIGNsYXNzIEZyYW1lOwogICAgIGNs
YXNzIEludFBvaW50OwogICAgIGNsYXNzIFdDRGF0YU9iamVjdDsKIAogICAgIC8vIFN0YXRlIGF2
YWlsYWJsZSBkdXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFz
dGUKICAgICBjbGFzcyBDbGlwYm9hcmRXaW4gOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCog
ZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0
YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUq
IGZyYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBi
b2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3kpKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmpl
Y3QsIHBvbGljeSwgZnJhbWUpKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCog
ZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0Rh
dGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1l
KiBmcmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlw
Ym9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVjdCwgcG9saWN5KSk7CisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2Jq
ZWN0LCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgICAgIH0KICAgICAgICAgfkNsaXBib2FyZFdpbigp
OwogICAgIApAQCAtNzYsOCArNzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2JqZWN0ICpkYXRhT2JqZWN0KTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRh
T2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKLSAgICAgICAgQ2xpcGJvYXJkV2luKGJv
b2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsK
KyAgICAgICAgQ2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqLCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CisgICAgICAgIENsaXBib2FyZFdpbihib29s
IGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJh
bWUqKTsKIAogICAgICAgICB2b2lkIHJlc2V0RnJvbUNsaXBib2FyZCgpOwogICAgICAgICB2b2lk
IHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIE5vZGUqLCBjb25zdCBJbnRQb2ludCYpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDgyZTUzN2UuLmM1YWNkZjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCIKICNpbmNsdWRlICJDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIk1hcmt1cC5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgpAQCAtMzksOSArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0CitQYXNzUmVmUHRyPENsaXBib2FyZD4g
RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSogZnJhbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRy
dWUsIG1fcGxhdGZvcm1EcmFnRGF0YSwgcG9saWN5KTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV2lu
OjpjcmVhdGUodHJ1ZSwgbV9wbGF0Zm9ybURyYWdEYXRhLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAog
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVu
YW1lUG9saWN5KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRWRpdG9y
V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHAKaW5kZXggMDlhYmRi
ZC4uMDc1ODI3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRWRpdG9yV2luLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkV2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJodG1sZWRp
dGluZy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgInZpc2libGVfdW5p
dHMuaCIKQEAgLTM4LDEzICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NS
ZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVy
YWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQog
ewogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gY2xpcGJvYXJkRGF0YTsKICAgICBpZiAoIVNVQ0NF
RURFRChPbGVHZXRDbGlwYm9hcmQoJmNsaXBib2FyZERhdGEpKSkKICAgICAgICAgY2xpcGJvYXJk
RGF0YSA9IDA7CiAKLSAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUoZmFsc2UsIGNsaXBi
b2FyZERhdGEuZ2V0KCksIHBvbGljeSk7CisgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRl
KGZhbHNlLCBjbGlwYm9hcmREYXRhLmdldCgpLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFn
RGF0YVdpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5jcHAK
aW5kZXggNWYyYTdiYS4uNTU3YTdmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5j
ZS9EcmFnRGF0YVdpbmNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRh
V2luY2UuY3BwCkBAIC0yMywxMSArMjMsMTIgQEAKIAogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSkgY29uc3QKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRl
Q2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikgY29uc3QKIHsK
ICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRWRp
dG9yV2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9FZGl0b3JXaW5jZS5jcHAKaW5k
ZXggMDJhZjc4MC4uNzFmNGRiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9F
ZGl0b3JXaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9FZGl0b3JXaW5jZS5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRy
PENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xp
cGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdpbmNlKHBvbGljeSwgZmFsc2UpKTsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3d4L0RyYWdEYXRhV3guY3BwCmluZGV4IDI3OGYxMjMuLjIwYjU1YWIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS93eC9EcmFnRGF0YVd4LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNsaXBib2Fy
ZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjYsNyAr
NjcsNyBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9y
KCk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFn
RGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKSBjb25z
dAogewogICAgIHJldHVybiAwOwogfQo=
</data>
<flag name="commit-queue"
          id="45110"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58698</attachid>
            <date>2010-06-14 13:57:52 -0700</date>
            <delta_ts>2010-06-14 17:22:38 -0700</delta_ts>
            <desc>Proposed Patch (remove the code piece that should not be in this patch)</desc>
            <filename>40587_2</filename>
            <type>text/plain</type>
            <size>45694</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWRlMzcyNS4uYjlkOWQ3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDMgQEAKKzIwMTAtMDYtMTQgIEppYW4gTGkgIDxq
aWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFyZ3VtZW50IHRvIEZpbGUv
QmxvYiBjb25zdHJ1Y3RvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDU4NworCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlc2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpj
b252ZXJ0SWZUZXJtaW5hbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlppZ1phZzo6UmVhZGVyOjpyZWFkQmxvYik6
CisgICAgICAgIChXZWJDb3JlOjpaaWdaYWc6OlJlYWRlcjo6cmVhZEZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6WmlnWmFnOjpSZWFkZXI6OnJlYWRGaWxlTGlzdCk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvYW5kcm9p
ZC9FZGl0b3JBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJh
bENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9icmV3L0VkaXRvckJyZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBl
ZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9oYWlrdS9FZGl0
b3JIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9xdC9F
ZGl0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9h
cmQpOgorICAgICAgICAqIGVkaXRpbmcvd3gvRWRpdG9yV3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBodG1sL0Jsb2IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
OjpzbGljZSk6CisgICAgICAgICogaHRtbC9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlOjpGaWxlKToKKyAgICAgICAgKiBodG1sL0ZpbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGU6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKToKKyAg
ICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
b250cm9sbGVyOjpkcmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVy
OjpwZXJmb3JtRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhU
TUxEcmFnKToKKyAgICAgICAgKiBwYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9h
cmQpOgorICAgICAgICAqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAg
KiBwYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vRHJh
Z0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9icmV3L0RyYWdEYXRhQnJldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6
Q2xpcGJvYXJkQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
Q2xpcGJvYXJkRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENs
aXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdH
ZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Q2xpcGJv
YXJkR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6ZmlsZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEd0azo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6CisgICAgICAg
ICogcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpmaWxlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRHJhZ0RhdGFR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZFdpbjo6ZmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNyZWF0
ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OmNyZWF0ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvRWRpdG9yV2lu
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQpOgorCiAyMDEwLTA2LTE0ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDkw
ZjhkN2MuLjMxMjM4NGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTczNiwxOCArNzM2LDIzIEBAIHN0cnVjdCBEZXNlcmlhbGl6aW5nVHJl
ZVdhbGtlciA6IHB1YmxpYyBCYXNlV2Fsa2VyIHsKICAgICAgICAgICAgICAgICByZXR1cm4ganNO
dW1iZXIobV9leGVjLCB2YWx1ZS5hc0RvdWJsZSgpKTsKICAgICAgICAgICAgIGNhc2UgU2VyaWFs
aXplZFNjcmlwdFZhbHVlRGF0YTo6RGF0ZVR5cGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5l
dyAobV9leGVjKSBEYXRlSW5zdGFuY2UobV9leGVjLCBtX2dsb2JhbE9iamVjdC0+ZGF0ZVN0cnVj
dHVyZSgpLCB2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNj
cmlwdFZhbHVlRGF0YTo6RmlsZVR5cGU6CisgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGE6OkZpbGVUeXBlOiB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2lzRE9NR2xv
YmFsT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KG1fZ2xvYmFsT2JqZWN0KSwgRmlsZTo6Y3JlYXRlKHZhbHVlLmFzU3RyaW5nKCkuY3Jvc3NU
aHJlYWRTdHJpbmcoKSkpOworICAgICAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgICAgICAgICAgICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdG9KUyhtX2V4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4obV9nbG9iYWxPYmplY3QpLCBGaWxlOjpjcmVhdGUodmFsdWUuYXNTdHJpbmcoKS5jcm9z
c1RocmVhZFN0cmluZygpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkZpbGVMaXN0VHlw
ZTogewogICAgICAgICAgICAgICAgIGlmICghbV9pc0RPTUdsb2JhbE9iamVjdCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxGaWxl
TGlzdD4gcmVzdWx0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIFNlcmlh
bGl6ZWRGaWxlTGlzdCogc2VyaWFsaXplZEZpbGVMaXN0ID0gdmFsdWUuYXNGaWxlTGlzdCgpOwog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNlcmlhbGl6ZWRGaWxlTGlzdC0+bGVu
Z3RoKCk7CisgICAgICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9leGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNlcmlhbGl6ZWRGaWxlTGlzdC0+aXRlbShp
KSkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZChGaWxlOjpjcmVhdGUoc2Vy
aWFsaXplZEZpbGVMaXN0LT5pdGVtKGkpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgcmVzdWx0LmdldCgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6SW1hZ2VEYXRhVHlwZTog
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDhlOTE5MjAuLjQwODkxZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWOEZpbGVMaXN0Lmgi
CiAjaW5jbHVkZSAiVjhJbWFnZURhdGEuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVk
ZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTg1Myw3ICs4NTQsNyBAQCBwcml2YXRlOgogICAgICAg
ICBTdHJpbmcgcGF0aDsKICAgICAgICAgaWYgKCFyZWFkV2ViQ29yZVN0cmluZygmcGF0aCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIFBhc3NSZWZQdHI8QmxvYj4gYmxvYiA9
IEJsb2I6OmNyZWF0ZShwYXRoKTsKKyAgICAgICAgUGFzc1JlZlB0cjxCbG9iPiBibG9iID0gQmxv
Yjo6Y3JlYXRlKHBhdGgsIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgICp2
YWx1ZSA9IHRvVjgoYmxvYik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTg2Myw3
ICs4NjQsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgcGF0aDsKICAgICAgICAgaWYgKCFy
ZWFkV2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIFBhc3NSZWZQdHI8RmlsZT4gZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoKTsKKyAgICAgICAg
UGFzc1JlZlB0cjxGaWxlPiBmaWxlID0gRmlsZTo6Y3JlYXRlKHBhdGgsIGdldFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgICAgICp2YWx1ZSA9IHRvVjgoZmlsZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTg3OCw3ICs4NzksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgU3RyaW5nIHBhdGg7CiAgICAgICAgICAgICBpZiAoIXJlYWRXZWJDb3JlU3RyaW5nKCZwYXRo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmaWxlTGlzdC0+
YXBwZW5kKEZpbGU6OmNyZWF0ZShwYXRoKSk7CisgICAgICAgICAgICBmaWxlTGlzdC0+YXBwZW5k
KEZpbGU6OmNyZWF0ZShwYXRoLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsKICAgICAg
ICAgfQogICAgICAgICAqdmFsdWUgPSB0b1Y4KGZpbGVMaXN0KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMThlMmNkMC4uNGY0M2Qy
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBi
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTdHJp
bmdIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDhhZTEz
MTMuLjk4NGJjODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC03MTIsNyArNzEyLDcgQEAgYm9vbCBFZGl0
b3I6OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nICZldmVudFR5cGUsIENsaXBi
b2FyZEFjY2Vzc1BvbGkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgdGFyZ2V0ID0gdGFyZ2V0
LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICAKLSAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlw
Ym9hcmQgPSBuZXdHZW5lcmFsQ2xpcGJvYXJkKHBvbGljeSk7CisgICAgUmVmUHRyPENsaXBib2Fy
ZD4gY2xpcGJvYXJkID0gbmV3R2VuZXJhbENsaXBib2FyZChwb2xpY3ksIG1fZnJhbWUpOwogCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBDbGlwYm9h
cmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgY2xpcGJvYXJkKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAppbmRleCAzZTIyM2RjLi44M2RmNjA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVk
aXRvckNsaWVudDsKIGNsYXNzIEVkaXRvckludGVybmFsQ29tbWFuZDsKK2NsYXNzIEZyYW1lOwog
Y2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgS2lsbFJpbmc7
CkBAIC0zMDksNyArMzEwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2Uo
UmFuZ2UqKSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBh
c3RlYm9hcmQqKTsKLSAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gbmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOworICAgIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBuZXdH
ZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKICAgICB2b2lk
IHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKik7CiAgICAgdm9pZCBw
YXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxhaW5UZXh0KTsKICAg
ICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wg
bWF0Y2hTdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JB
bmRyb2lkLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9hbmRyb2lkL0VkaXRvckFuZHJvaWQuY3BwCmlu
ZGV4IDhlMDAzMjYuLjYxY2NlMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9hbmRyb2lk
L0VkaXRvckFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9hbmRyb2lkL0VkaXRvckFu
ZHJvaWQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2Vu
ZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSopCiB7CiAg
ICAgcmV0dXJuIG5ldyBDbGlwYm9hcmRBbmRyb2lkKHBvbGljeSwgZmFsc2UpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAgYi9XZWJDb3JlL2VkaXRp
bmcvYnJldy9FZGl0b3JCcmV3LmNwcAppbmRleCBiNjEwYjYyLi40YTFmNGQ3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcAorKysgYi9XZWJDb3JlL2VkaXRp
bmcvYnJldy9FZGl0b3JCcmV3LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9h
cmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBF
ZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
RnJhbWUqKQogewogICAgIHJldHVybiBuZXcgQ2xpcGJvYXJkQnJldyhwb2xpY3ksIGZhbHNlKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwCmluZGV4IDFl
YTA4NWIuLjdhMTNiMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0
b3JDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9t
aXVtLmNwcApAQCAtMzMsMTIgKzMzLDEzIEBACiAKICNpbmNsdWRlICJDaHJvbWl1bURhdGFPYmpl
Y3QuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6
bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZENo
cm9taXVtOjpjcmVhdGUoZmFsc2UsIENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCksIHBvbGlj
eSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoZmFsc2UsIENocm9taXVt
RGF0YU9iamVjdDo6Y3JlYXRlKCksIHBvbGljeSwgZnJhbWUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaGFpa3UvRWRpdG9ySGFpa3Uu
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcAppbmRleCA3MjNkNGZm
Li40NTk2YzllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaGFpa3UvRWRpdG9ySGFpa3Uu
Y3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlrdS5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4g
RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kp
CitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1cm4gQ2xpcGJvYXJk
SGFpa3U6OmNyZWF0ZShwb2xpY3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRp
dGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
aW5kZXggY2EwMDFhMi4uMmM1YTYwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KKysrIGIvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTMz
LDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBib2Fy
ZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4g
Q2xpcGJvYXJkTWFjOjpjcmVhdGUoZmFsc2UsIFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdLCBwb2xpY3ksIDApOworICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZShmYWxzZSwg
W05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0sIHBvbGljeSwgZnJhbWUpOwogfQogCiB2
b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcv
cXQvRWRpdG9yUXQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNwcAppbmRleCBl
NzRlMmYzLi43ZmIzNjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvcXQvRWRpdG9yUXQu
Y3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9xdC9FZGl0b3JRdC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9y
OjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitQYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6OmNy
ZWF0ZShwb2xpY3kpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3d4L0VkaXRvcld4
LmNwcCBiL1dlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JXeC5jcHAKaW5kZXggY2I5ZTgzNi4uYTJl
YzY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL3d4L0VkaXRvcld4LmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJh
bENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSAKK1Bhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgRnJhbWUqKSAKIHsgCiAgICAgcmV0dXJuIENsaXBib2FyZFd4OjpjcmVhdGUocG9s
aWN5LCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9iLmNwcCBiL1dlYkNv
cmUvaHRtbC9CbG9iLmNwcAppbmRleCAwNTQ2ZjFjLi45Y2Q5YmE5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvQmxvYi5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2IuY3BwCkBAIC0zMywxMCAr
MzMsMTcgQEAKIAogI2luY2x1ZGUgIkJsb2JJdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1CbG9iOjpCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCkKK0Jsb2I6OkJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgOiBBY3RpdmVE
T01PYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdGhpcykKK3sKK30KKworQmxvYjo6Qmxv
Yihjb25zdCBTdHJpbmcmIHBhdGgsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCisgICAgIDogQWN0aXZlRE9NT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIHRoaXMpCiB7CiAgICAgLy8gTm90ZTogdGhpcyBkb2Vzbid0IGluaXRpYWxpemUgdGhlIHR5
cGUgdW5saWtlIEZpbGUocGF0aCkuCiAgICAgYXBwZW5kKEZpbGVCbG9iSXRlbTo6Y3JlYXRlKHBh
dGgpKTsKQEAgLTgwLDcgKzg3LDcgQEAgUGFzc1JlZlB0cjxCbG9iPiBCbG9iOjpzbGljZShsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgpIGNvbnN0CiAgICAgICAgIGxlbmd0aCA9IHRv
dGFsU2l6ZSAtIHN0YXJ0OwogCiAgICAgc2l6ZV90IGkgPSAwOwotICAgIFJlZlB0cjxCbG9iPiBi
bG9iID0gQmxvYjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBmb3IgKDsgaSA8IG1faXRlbXMuc2l6
ZSgpICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc3RhcnQpID49IG1faXRlbXNb
aV0tPnNpemUoKTsgKytpKQogICAgICAgICBzdGFydCAtPSBtX2l0ZW1zW2ldLT5zaXplKCk7CiAg
ICAgZm9yICg7IGxlbmd0aCA+IDAgJiYgaSA8IG1faXRlbXMuc2l6ZSgpOyArK2kpIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9iLmggYi9XZWJDb3JlL2h0bWwvQmxvYi5oCmluZGV4IDM5
MTc3YjUuLjE3YjQ0MDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9CbG9iLmgKKysrIGIvV2Vi
Q29yZS9odG1sL0Jsb2IuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBCbG9iX2gKICNkZWZp
bmUgQmxvYl9oCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJCbG9i
SXRlbS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KQEAgLTM5LDE5ICs0MCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEJsb2IgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iPiB7CitjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OworCitjbGFzcyBCbG9iIDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4sIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2I+
IGNyZWF0ZSgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsb2IoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxv
YihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IERlcHJl
Y2F0ZWQgbWV0aG9kLiAgVGhpcyBpcyBjYWxsZWQgb25seSBmcm9tCiAgICAgLy8gYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBhbmQgdGhlIHVzYWdlIGluIGl0IHdpbGwgYmVj
b21lIGludmFsaWQgb25jZQogICAgIC8vIEJsb2JCdWlsZGVyIGlzIGludHJvZHVjZWQuCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8QmxvYj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iKHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBCbG9iKHBhdGgsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5CbG9iKCkgeyB9CkBAIC03MSwxMCArNzQsMTAgQEAgcHVibGljOgogI2VuZGlmCiAK
IHByb3RlY3RlZDoKLSAgICBCbG9iKCkgeyB9CisgICAgQmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKICAgICAvLyBGSVhNRTogRGVwcmVjYXRlZCBjb25zdHJ1Y3Rvci4gIFNlZSBhbHNv
IHRoZSBjb21tZW50IGZvciBCbG9iOjpjcmVhdGUocGF0aCkuCi0gICAgQmxvYihjb25zdCBTdHJp
bmcmIHBhdGgpOworICAgIEJsb2IoY29uc3QgU3RyaW5nJiBwYXRoLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CiAKICAgICBCbG9iSXRlbUxpc3QgbV9pdGVtczsKICAgICBTdHJpbmcgbV90eXBl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGUuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGUu
Y3BwCmluZGV4IDJjOWNlNTMuLjI4MWU0MjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxl
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZS5jcHAKQEAgLTI4LDExICsyOCwxMiBAQAogCiAj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBCbG9iKHBhdGgpCitGaWxl
OjpGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKKyAgICA6IEJsb2IocGF0aCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKIHsKICAgICAvLyBXZSBkb24ndCB1c2UgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVG
b3JQYXRoKCkgYmVjYXVzZSBpdCByZXR1cm5zICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIHVw
b24gZmFpbHVyZS4KICAgICBjb25zdCBTdHJpbmcmIGZpbGVOYW1lID0gbmFtZSgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0ZpbGUuaCBiL1dlYkNvcmUvaHRtbC9GaWxlLmgKaW5kZXggNTgy
ZGIyOC4uMzEzZjgwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0ZpbGUuaAorKysgYi9XZWJD
b3JlL2h0bWwvRmlsZS5oCkBAIC0zMiwxMSArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCiBjbGFzcyBGaWxlIDogcHVibGlj
IEJsb2IgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgcGF0aCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KQEAgLTQ4LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBmaWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKTsgfQogCiBwcml2YXRlOgotICAgIEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDNkMzNmZjguLjIzODQ5OTUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTEzNzksNyArMTM3OSw3IEBAIGJvb2wgSFRNTElucHV0RWxl
bWVudDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCBtdWx0aXBh
cnQpCiAgICAgICAgIC8vIElmIG5vIGZpbGVuYW1lIGF0IGFsbCBpcyBlbnRlcmVkLCByZXR1cm4g
c3VjY2Vzc2Z1bCBidXQgZW1wdHkuCiAgICAgICAgIC8vIE51bGwgd291bGQgYmUgbW9yZSBsb2dp
Y2FsLCBidXQgTmV0c2NhcGUgcG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4KICAgICAgICAgaWYg
KCFudW1GaWxlcykgewotICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kQmxvYihuYW1lKCksIEZp
bGU6OmNyZWF0ZSgiIikpOworICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kQmxvYihuYW1lKCks
IEZpbGU6OmNyZWF0ZSgiIiwgZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xOTY3LDcgKzE5Njcs
NyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICBtX2ZpbGVMaXN0LT5jbGVhcigpOwogICAgIGlu
dCBzaXplID0gcGF0aHMuc2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KQotICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldKSk7Cisg
ICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUocGF0aHNbaV0sIGRvY3VtZW50
KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOwogCiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1
ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0
ZUNoYW5nZWQodGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA3MTY3NzJiLi5hMjY5
MzRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIERy
YWdDb250cm9sbGVyOjpkcmFnRXhpdGVkKERyYWdEYXRhKiBkcmFnRGF0YSkKIAogICAgIGlmIChS
ZWZQdHI8RnJhbWVWaWV3PiB2ID0gbWFpbkZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgQ2xpcGJv
YXJkQWNjZXNzUG9saWN5IHBvbGljeSA9ICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgbV9kb2N1
bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKSkgPyBDbGlwYm9hcmRS
ZWFkYWJsZSA6IENsaXBib2FyZFR5cGVzUmVhZGFibGU7Ci0gICAgICAgIFJlZlB0cjxDbGlwYm9h
cmQ+IGNsaXBib2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9hcmQocG9saWN5KTsKKyAgICAg
ICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gZHJhZ0RhdGEtPmNyZWF0ZUNsaXBib2Fy
ZChwb2xpY3ksIG1haW5GcmFtZSk7CiAgICAgICAgIGNsaXBib2FyZC0+c2V0U291cmNlT3BlcmF0
aW9uKGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CiAgICAgICAgIG1h
aW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmNhbmNlbERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZl
bnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkpOwogICAgICAgICBjbGlwYm9hcmQtPnNldEFj
Y2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVy
ZSBmb3Igc2VjdXJpdHkKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpw
ZXJmb3JtRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbWFp
bkZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKICAgICAgICAgaWYgKG1haW5GcmFtZS0+dmll
dygpKSB7CiAgICAgICAgICAgICAvLyBTZW5kaW5nIGFuIGV2ZW50IGNhbiByZXN1bHQgaW4gdGhl
IGRlc3RydWN0aW9uIG9mIHRoZSB2aWV3IGFuZCBwYXJ0LgotICAgICAgICAgICAgUmVmUHRyPENs
aXBib2FyZD4gY2xpcGJvYXJkID0gZHJhZ0RhdGEtPmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRS
ZWFkYWJsZSk7CisgICAgICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFn
RGF0YS0+Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZFJlYWRhYmxlLCBtYWluRnJhbWUuZ2V0KCkp
OwogICAgICAgICAgICAgY2xpcGJvYXJkLT5zZXRTb3VyY2VPcGVyYXRpb24oZHJhZ0RhdGEtPmRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKICAgICAgICAgICAgIG1haW5GcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPnBlcmZvcm1EcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRh
KSwgY2xpcGJvYXJkLmdldCgpKTsKICAgICAgICAgICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9s
aWN5KENsaXBib2FyZE51bWIpOyAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJlIGZvciBz
ZWN1cml0eQpAQCAtNTI0LDcgKzUyNCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1M
RHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9wZXJhdGlvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSA9IG1f
ZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkgPyBDbGlwYm9h
cmRSZWFkYWJsZSA6IENsaXBib2FyZFR5cGVzUmVhZGFibGU7Ci0gICAgUmVmUHRyPENsaXBib2Fy
ZD4gY2xpcGJvYXJkID0gZHJhZ0RhdGEtPmNyZWF0ZUNsaXBib2FyZChwb2xpY3kpOworICAgIFJl
ZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9hcmQocG9s
aWN5LCBtYWluRnJhbWUuZ2V0KCkpOwogICAgIERyYWdPcGVyYXRpb24gc3JjT3BNYXNrID0gZHJh
Z0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGNsaXBib2FyZC0+c2V0
U291cmNlT3BlcmF0aW9uKHNyY09wTWFzayk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9j
aHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0v
RXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCmluZGV4IGZmMTYxYWYuLjcxOTE2M2YgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKKysrIGIv
V2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcApAQCAtMTI5LDcg
KzEyOSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVu
dEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKIHsKICAgICBSZWZQdHI8
Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0ID0gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVh
dGUoKTsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSh0cnVlLCBkYXRhT2Jq
ZWN0LmdldCgpLCBDbGlwYm9hcmRXcml0YWJsZSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9t
aXVtOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUsIG1f
ZnJhbWUpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwIGIvV2ViQ29yZS9w
YWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCmluZGV4IDBmZjY3ZDIuLjQyOWFlYTYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVu
dCwgV2lkZ2V0KiB3aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3Jl
YXRlRHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6
OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgRGF0YU9iamVjdEd0azo6Y3JlYXRlKCksIHRydWUp
OworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgRGF0
YU9iamVjdEd0azo6Y3JlYXRlKCksIHRydWUsIG1fZnJhbWUpOwogfQogCiBib29sIEV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
d2luL0V2ZW50SGFuZGxlcldpbi5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldp
bi5jcHAKaW5kZXggNTUxMTIwOS4uZWEzMTdiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dp
bi9FdmVudEhhbmRsZXJXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVy
V2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5k
bGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiAjZWxzZQogICAgIENPTVB0cjxX
Q0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5j
ZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUsIGRh
dGFPYmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJk
V2luOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUsIG1f
ZnJhbWUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCA3ZTJjYzRkLi45Njg5NWQ4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC02OSw2ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBDbGlwYm9hcmQ7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKKyAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBLVVJMOwogICAgIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTkzLDcgKzk0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2dsb2JhbFBvc2l0aW9uOyB9CiAgICAgICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQogICAgICAgICBEcmFnT3BlcmF0aW9u
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrOyB9Ci0gICAgICAgIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjcmVh
dGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5KSBjb25zdDsKKyAgICAgICAgUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IGNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZy
YW1lKikgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9u
UG9saWN5IGZpbGVuYW1lUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcykgY29uc3Q7CiAgICAgICAg
IGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICAgICAgYm9vbCBjb250YWluc0Nv
bXBhdGlibGVDb250ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Fu
ZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFn
RGF0YUFuZHJvaWQuY3BwCmluZGV4IDc1NmQwMDcuLjUzMmU3MWYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC01OCw3ICs1OSw3IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKICAg
ICByZXR1cm4gQ29sb3IoKTsKIH0KICAgICAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0
YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QKK1Bhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSwgRnJhbWUqKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9icmV3L0RyYWdEYXRhQnJldy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Jy
ZXcvRHJhZ0RhdGFCcmV3LmNwcAppbmRleCAyMGY5M2I4Li5mNGVkODkwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2JyZXcvRHJhZ0RhdGFCcmV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2JyZXcvRHJhZ0RhdGFCcmV3LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNs
aXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFn
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTgsNyArNTksNyBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJu
IENvbG9yKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xp
cGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUq
KSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCA3NTBmZjMwLi41MTNjZWI1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmFuZ2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAibWFya3VwLmgi
CiAKQEAgLTkxLDE2ICs5MiwxOCBAQCBzdGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgY2xpcGJvYXJk
VHlwZUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIENsaXBib2FyZENocm9taXVt
OjpDbGlwYm9hcmRDaHJvbWl1bShib29sIGlzRm9yRHJhZ2dpbmcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGRhdGFP
YmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZyYW1lKiBmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJh
Z2dpbmcpCiAgICAgLCBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKKyAgICAsIG1fZnJhbWUoZnJh
bWUpCiB7CiB9CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IENsaXBib2FyZENocm9t
aXVtOjpjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLAotICAgIFBhc3NSZWZQdHI8Q2hyb21pdW1E
YXRhT2JqZWN0PiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorICAg
IFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDbGlwYm9hcmRDaHJvbWl1bShpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3kpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGlzRm9yRHJhZ2dpbmcs
IGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKIH0KIAogdm9pZCBDbGlwYm9hcmRDaHJvbWl1
bTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTM1NSw5ICszNTgsMTAgQEAgUGFz
c1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKCkgY29uc3QKICAgICBp
ZiAoIW1fZGF0YU9iamVjdCB8fCBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBG
aWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RhdGFPYmpl
Y3QtPmZpbGVuYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxl
OjpjcmVhdGUobV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuYXQoaSkpKTsKKyAgICAgICAgZmlsZUxp
c3QtPmFwcGVuZChGaWxlOjpjcmVhdGUobV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuYXQoaSksIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKIAogICAgIHJldHVybiBmaWxlTGlzdC5yZWxlYXNlKCk7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKaW5k
ZXggZmJlYmRlMi4uYTQxNTBkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DbGlwYm9hcmRDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKICAgICBjbGFzcyBDaHJvbWl1bURhdGFPYmplY3Q7Cisg
ICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAKICAgICBjbGFzcyBDbGlwYm9h
cmRDaHJvbWl1bSA6IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7CkBAIC00NSw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfkNsaXBi
b2FyZENocm9taXVtKCkge30KIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRD
aHJvbWl1bT4gY3JlYXRlKAotICAgICAgICAgICAgYm9vbCBpc0ZvckRyYWdnaW5nLCBQYXNzUmVm
UHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGljeSk7CisgICAgICAg
ICAgICBib29sIGlzRm9yRHJhZ2dpbmcsIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0Piwg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIC8vIFJldHVybnMgdGhl
IGZpbGUgbmFtZSAobm90IGluY2x1ZGluZyB0aGUgZXh0ZW5zaW9uKS4gVGhpcyByZW1vdmVzIGFu
eQogICAgICAgICAvLyBpbnZhbGlkIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMgYXMgd2VsbCBhcyBt
YWtpbmcgc3VyZSB0aGUKQEAgLTc5LDExICs4MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBD
bGlwYm9hcmRDaHJvbWl1bShib29sLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENs
aXBib2FyZEFjY2Vzc1BvbGljeSk7CisgICAgICAgIENsaXBib2FyZENocm9taXVtKGJvb2wsIFBh
c3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFt
ZSopOwogCiAgICAgICAgIHZvaWQgcmVzZXRGcm9tQ2xpcGJvYXJkKCk7CiAgICAgICAgIHZvaWQg
c2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50Jik7CiAgICAg
ICAgIFJlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IG1fZGF0YU9iamVjdDsKKyAgICAgICAgRnJh
bWUqIG1fZnJhbWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKaW5kZXggMmMyMTUxYS4u
Njk5NzJiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNo
cm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21p
dW0uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC00OCwxMCArNDksMTAgQEAgc3RhdGlj
IGJvb2wgY29udGFpbnNIVE1MKGNvbnN0IENocm9taXVtRGF0YU9iamVjdCogZHJvcERhdGEpCiAg
ICAgcmV0dXJuIGRyb3BEYXRhLT50ZXh0SHRtbC5sZW5ndGgoKSA+IDA7CiB9CiAKLVBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpIGNvbnN0CitQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0
ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpIGNv
bnN0CiB7CiAgICAgUmVmUHRyPENsaXBib2FyZENocm9taXVtPiBjbGlwYm9hcmQgPSBDbGlwYm9h
cmRDaHJvbWl1bTo6Y3JlYXRlKHRydWUsCi0gICAgICAgIG1fcGxhdGZvcm1EcmFnRGF0YSwgcG9s
aWN5KTsKKyAgICAgICAgbV9wbGF0Zm9ybURyYWdEYXRhLCBwb2xpY3ksIGZyYW1lKTsKIAogICAg
IHJldHVybiBjbGlwYm9hcmQucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2Fy
ZEVmbC5jcHAKaW5kZXggNmVmNTFjZi4uYmIxNmY0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlw
Ym9hcmRFZmwuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1QYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdH
ZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRy
PENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1cm4gbmV3IENsaXBib2FyZEVmbChwb2xp
Y3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRh
RWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcAppbmRleCBmNmI0
NDZjLi4zOGQ1OTI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVm
bC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCkBAIC0yNCw2
ICsyNCw3IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2Miw3IEBAIENvbG9yIERyYWdEYXRhOjphc0Nv
bG9yKCkgY29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5KSBjb25z
dAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LCBGcmFtZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCBhZDFjNjY1Li5jMjMyMzNlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5oIgogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00MywyNCArNDQsMjYgQEAgZW51bSBDbGlwYm9hcmRUeXBl
IHsKICAgICBDbGlwYm9hcmRUeXBlVW5rbm93bgogfTsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+
IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENs
aXBib2FyZEd0azo6Y3JlYXRlKHBvbGljeSwgZ3RrX2NsaXBib2FyZF9nZXRfZm9yX2Rpc3BsYXko
Z2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpLCBmYWxz
ZSk7CisgICAgcmV0dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKHBvbGljeSwgZ3RrX2NsaXBib2Fy
ZF9nZXRfZm9yX2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElP
Tl9DTElQQk9BUkQpLCBmYWxzZSwgZnJhbWUpOwogfQogCi1DbGlwYm9hcmRHdGs6OkNsaXBib2Fy
ZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtDbGlwYm9hcmQqIGNsaXBib2Fy
ZCkKK0NsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBGcmFtZSogZnJhbWUpCiAgICAgOiBDbGlwYm9h
cmQocG9saWN5LCBmYWxzZSkKICAgICAsIG1fZGF0YU9iamVjdChEYXRhT2JqZWN0R3RrOjpmb3JD
bGlwYm9hcmQoY2xpcGJvYXJkKSkKICAgICAsIG1fY2xpcGJvYXJkKGNsaXBib2FyZCkKICAgICAs
IG1faGVscGVyKFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmhlbHBlcigpKQorICAg
ICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIAotQ2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGsoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRh
T2JqZWN0LCBib29sIGZvckRyYWdnaW5nKQorQ2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGsoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRh
T2JqZWN0LCBib29sIGZvckRyYWdnaW5nLCBGcmFtZSogZnJhbWUpCiAgICAgOiBDbGlwYm9hcmQo
cG9saWN5LCBmb3JEcmFnZ2luZykKICAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAg
ICwgbV9jbGlwYm9hcmQoMCkKICAgICAsIG1faGVscGVyKFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0
ZWJvYXJkKCktPmhlbHBlcigpKQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIApAQCAtMjU1
LDggKzI1OCw5IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZEd0azo6ZmlsZXMoKSBj
b25zdAogICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7
CiAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVZlY3RvcihtX2RhdGFPYmplY3QtPmZpbGVzKCkpOwog
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZpbGVWZWN0b3Iuc2l6ZSgpOyBpKyspCi0gICAgICAgIGZpbGVMaXN0
LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVWZWN0b3JbaV0pKTsKKyAgICAgICAgZmlsZUxpc3Qt
PmFwcGVuZChGaWxlOjpjcmVhdGUoZmlsZVZlY3RvcltpXSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkpOwogCiAgICAgcmV0dXJuIGZpbGVMaXN0LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Q2xpcGJvYXJkR3RrLmgKaW5kZXggYzM0MzhjNC4uNWI0MmFjNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Q2xpcGJvYXJkR3RrLmgKQEAgLTM0LDIwICszNCwyMSBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xp
cGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENh
Y2hlZEltYWdlOworICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIFBhc3RlYm9hcmRIZWxwZXI7
CiAKICAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFu
ZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCiAgICAgLy8gQ3JlYXRlZCBmcm9tIHRoZSBFdmVudEhhbmRs
ZXJHdGsgdG8gYmUgdXNlZCBieSB0aGUgZG9tCiAgICAgY2xhc3MgQ2xpcGJvYXJkR3RrIDogcHVi
bGljIENsaXBib2FyZCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
bGlwYm9hcmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtDbGlw
Ym9hcmQqIGNsaXBib2FyZCwgYm9vbCBpc0ZvckRyYWdnaW5nKQorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDbGlwYm9hcmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
LCBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgYm9vbCBpc0ZvckRyYWdnaW5nLCBGcmFtZSogZnJh
bWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJk
R3RrKHBvbGljeSwgY2xpcGJvYXJkKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENsaXBib2FyZEd0ayhwb2xpY3ksIGNsaXBib2FyZCwgZnJhbWUpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCwg
Ym9vbCBpc0ZvckRyYWdnaW5nKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRH
dGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERhdGFP
YmplY3RHdGs+IGRhdGFPYmplY3QsIGJvb2wgaXNGb3JEcmFnZ2luZywgRnJhbWUqIGZyYW1lKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEd0ayhw
b2xpY3ksIGRhdGFPYmplY3QsIGlzRm9yRHJhZ2dpbmcpKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgZGF0YU9iamVjdCwgaXNGb3JEcmFnZ2lu
ZywgZnJhbWUpKTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5DbGlwYm9hcmRHdGsoKTsK
IApAQCAtNzcsMTIgKzc4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFzc1Jl
ZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0KCkgeyByZXR1cm4gbV9kYXRhT2JqZWN0OyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5LCBHdGtDbGlwYm9hcmQqKTsKLSAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vz
c1BvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiwgYm9vbCk7CisgICAgICAgIENsaXBi
b2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEd0a0NsaXBib2FyZCosIEZyYW1lKik7Cisg
ICAgICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBhc3NSZWZQdHI8RGF0
YU9iamVjdEd0az4sIGJvb2wsIEZyYW1lKik7CiAKICAgICAgICAgUmVmUHRyPERhdGFPYmplY3RH
dGs+IG1fZGF0YU9iamVjdDsKICAgICAgICAgR3RrQ2xpcGJvYXJkKiBtX2NsaXBib2FyZDsKICAg
ICAgICAgUGFzdGVib2FyZEhlbHBlciogbV9oZWxwZXI7CisgICAgICAgIEZyYW1lKiBtX2ZyYW1l
OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRh
R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAppbmRleCA0ZWQz
YmMxLi43MmM1NmMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0
ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBAIC0yMCw2
ICsyMCw3IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1OCw3IEBAIENvbG9yIERyYWdEYXRhOjphc0Nv
bG9yKCkgY29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5KSBjb25z
dAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LCBGcmFtZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcAppbmRleCA3ZjQwYjhhLi41YmRmNzYw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJDbGlwYm9hcmRIYWlrdS5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogCkBAIC03Niw3ICs3Nyw3IEBAIENvbG9yIERyYWdE
YXRhOjphc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotV1RGOjpQYXNz
UmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5KSBjb25zdAorV1RGOjpQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0Rh
dGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSop
IGNvbnN0CiB7CiAgICAgcmV0dXJuIENsaXBib2FyZEhhaWt1OjpjcmVhdGUocG9saWN5LCB0cnVl
KTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBi
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBkZGZhMGQ1Li45NTE5
ZDcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJSZW5k
ZXJJbWFnZS5oIgorI2ltcG9ydCAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2ltcG9ydCAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIApA
QCAtMzA2LDExICszMDcsMTIgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkTWFjOjpm
aWxlcygpIGNvbnN0CiAgICAgTlNBcnJheSAqYWJzb2x1dGVVUkxzID0gYWJzb2x1dGVVUkxzRnJv
bVBhc3RlYm9hcmRGaWxlbmFtZXMobV9wYXN0ZWJvYXJkLmdldCgpKTsKICAgICBOU1VJbnRlZ2Vy
IGNvdW50ID0gW2Fic29sdXRlVVJMcyBjb3VudF07CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxl
TGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIHggPSAwOyB4IDwgY291bnQ7IHgr
KykgewogICAgICAgICBOU1VSTCAqYWJzb2x1dGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpb
YWJzb2x1dGVVUkxzIG9iamVjdEF0SW5kZXg6eF1dOwogICAgICAgICBBU1NFUlQoW2Fic29sdXRl
VVJMIGlzRmlsZVVSTF0pOwotICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShb
YWJzb2x1dGVVUkwgcGF0aF0pKTsKKyAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVh
dGUoW2Fic29sdXRlVVJMIHBhdGhdLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAgICAgfQog
ICAgIHJldHVybiBmaWxlTGlzdC5yZWxlYXNlKCk7IC8vIFdlIHdpbGwgYWx3YXlzIHJldHVybiBh
IEZpbGVMaXN0LCBzb21ldGltZXMgZW1wdHkKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMu
bW0KaW5kZXggZmE0MTZlZC4uMTY4MjQxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMu
bW0KQEAgLTEwMCw5ICsxMDAsOSBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAg
ICAgICAgICAgICAgICAgICAgIChpbnQpKFtjb2xvciBibHVlQ29tcG9uZW50XSAqIDI1NS4wICsg
MC41KSwgKGludCkoW2NvbG9yIGFscGhhQ29tcG9uZW50XSAqIDI1NS4wICsgMC41KSk7CiB9CiAK
LVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2Fy
ZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0CitQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0Rh
dGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSog
ZnJhbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZE1hYzo6Y3JlYXRlKHRydWUsIFtt
X3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgcG9saWN5LCAwKTsKKyAgICBy
ZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUodHJ1ZSwgW21fcGxhdGZvcm1EcmFnRGF0YSBkcmFn
Z2luZ1Bhc3RlYm9hcmRdLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0RyYWdEYXRhUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNw
cAppbmRleCA4MDg2MDZkLi5hZWE0M2Q3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0RyYWdEYXRhUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAK
QEAgLTEwMCw3ICsxMDAsNyBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAg
cmV0dXJuIHF2YXJpYW50X2Nhc3Q8UUNvbG9yPihtX3BsYXRmb3JtRHJhZ0RhdGEtPmNvbG9yRGF0
YSgpKTsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9h
cmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY29uc3QKK1Bhc3NSZWZQdHI8Q2xpcGJv
YXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3ksIEZyYW1lKikgY29uc3QKIHsKICAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6OmNyZWF0ZShwb2xp
Y3ksIG1fcGxhdGZvcm1EcmFnRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2lu
LmNwcAppbmRleCAzYzNhMjA1Li5lZGI3YTJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHAKQEAgLTM5NCwxNyArMzk0LDE5IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhyOwogfQog
Ci1DbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2Jq
ZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorQ2xpcGJvYXJk
V2luOjpDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCogZGF0YU9i
amVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogICAgIDog
Q2xpcGJvYXJkKHBvbGljeSwgaXNGb3JEcmFnZ2luZykKICAgICAsIG1fZGF0YU9iamVjdChkYXRh
T2JqZWN0KQogICAgICwgbV93cml0YWJsZURhdGFPYmplY3QoMCkKKyAgICAsIG1fZnJhbWUoZnJh
bWUpCiB7CiB9CiAKLUNsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2lu
ZywgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
KQorQ2xpcGJvYXJkV2luOjpDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFP
YmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBm
cmFtZSkKICAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCiAgICAgLCBtX2Rh
dGFPYmplY3QoZGF0YU9iamVjdCkKICAgICAsIG1fd3JpdGFibGVEYXRhT2JqZWN0KGRhdGFPYmpl
Y3QpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQogewogfQogCkBAIC01OTcsNyArNTk5LDcgQEAgUGFz
c1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkV2luOjpmaWxlcygpIGNvbnN0CiAgICAgZm9yIChV
SU5UIGkgPSAwOyBpIDwgZmlsZUNvdW50OyBpKyspIHsKICAgICAgICAgaWYgKCFEcmFnUXVlcnlG
aWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIEFSUkFZU0laRShmaWxlbmFtZSkpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGZpbGVzLT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8VUNoYXIqPihmaWxlbmFtZSkpKTsKKyAgICAgICAgZmlsZXMtPmFwcGVuZChGaWxl
OjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGZpbGVuYW1lKSwgbV9mcmFtZSkpOwog
ICAgIH0KIAogICAgIEdsb2JhbFVubG9jayhtZWRpdW0uaEdsb2JhbCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaCBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5oCmluZGV4IDQ5ZmRjZmUuLmJhMzMxMzMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5oCkBAIC0zNSwxOSArMzUsMjAgQEAgc3RydWN0IElEYXRhT2JqZWN0Owog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2FjaGVkSW1hZ2U7CisgICAgY2xhc3Mg
RnJhbWU7CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAgICAgY2xhc3MgV0NEYXRhT2JqZWN0OwogCiAg
ICAgLy8gU3RhdGUgYXZhaWxhYmxlIGR1cmluZyBJRSdzIGV2ZW50cyBmb3IgZHJhZyBhbmQgZHJv
cCBhbmQgY29weS9wYXN0ZQogICAgIGNsYXNzIENsaXBib2FyZFdpbiA6IHB1YmxpYyBDbGlwYm9h
cmQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcs
IElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShib29sIGlzRm9y
RHJhZ2dpbmcsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSkp
OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFn
Z2luZywgZGF0YU9iamVjdCwgcG9saWN5LCBmcmFtZSkpOwogICAgICAgICB9Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZywg
V0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShib29sIGlzRm9y
RHJhZ2dpbmcsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3kp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJh
Z2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKICAgICAgICAgfQogICAgICAgICB+
Q2xpcGJvYXJkV2luKCk7CiAgICAgCkBAIC03Niw4ICs3Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBzZXRFeHRlcm5hbERhdGFPYmplY3QoSURhdGFPYmplY3QgKmRhdGFP
YmplY3QpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQ2xpcGJvYXJkV2luKGJvb2wgaXNGb3JE
cmFnZ2luZywgSURhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOwotICAgICAgICBD
bGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqLCBDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kpOworICAgICAgICBDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBJ
RGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICAgICAgQ2xp
cGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIHZvaWQgcmVzZXRGcm9tQ2xpcGJvYXJkKCk7
CiAgICAgICAgIHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IElu
dFBvaW50Jik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggODJlNTM3ZS4u
YzVhY2RmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgogI2luY2x1ZGUgIkNsaXBi
b2FyZEFjY2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiTWFy
a3VwLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCkBAIC0zOSw5ICs0MCw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVh
dGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY29uc3QKK1Bhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJk
V2luOjpjcmVhdGUodHJ1ZSwgbV9wbGF0Zm9ybURyYWdEYXRhLCBwb2xpY3kpOworICAgIHJldHVy
biBDbGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBtX3BsYXRmb3JtRHJhZ0RhdGEsIHBvbGljeSwg
ZnJhbWUpOwogfQogCiBib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNp
b25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9FZGl0b3JXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRWRpdG9yV2luLmNw
cAppbmRleCAwOWFiZGJkLi4wNzU4MjdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9FZGl0b3JXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDbGlwYm9hcmRXaW4uaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAidmlzaWJsZV91bml0cy5oIgpAQCAtMzgsMTMgKzM5LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSogZnJhbWUpCiB7CiAgICAgQ09NUHRyPElEYXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwog
ICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENsaXBib2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAg
ICAgICBjbGlwYm9hcmREYXRhID0gMDsKIAotICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0
ZShmYWxzZSwgY2xpcGJvYXJkRGF0YS5nZXQoKSwgcG9saWN5KTsKKyAgICByZXR1cm4gQ2xpcGJv
YXJkV2luOjpjcmVhdGUoZmFsc2UsIGNsaXBib2FyZERhdGEuZ2V0KCksIHBvbGljeSwgZnJhbWUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFn
RGF0YVdpbmNlLmNwcAppbmRleCA1ZjJhN2JhLi41NTdhN2YwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
d2luY2UvRHJhZ0RhdGFXaW5jZS5jcHAKQEAgLTIzLDExICsyMywxMiBAQAogCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERy
YWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJh
bWUqKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS93aW5jZS9FZGl0b3JXaW5jZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0VkaXRv
cldpbmNlLmNwcAppbmRleCAwMmFmNzgwLi43MWY0ZGI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNl
L0VkaXRvcldpbmNlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6
Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUq
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luY2UocG9saWN5LCBmYWxz
ZSkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAKaW5kZXggMjc4ZjEyMy4uMjBiNTVh
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Niw3ICs2Nyw3IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKICAg
ICByZXR1cm4gQ29sb3IoKTsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpj
cmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5KSBjb25zdAorUGFzc1JlZlB0cjxD
bGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LCBGcmFtZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9Cg==
</data>
<flag name="review"
          id="45115"
          type_id="1"
          status="-"
          setter="sam"
    />
    <flag name="commit-queue"
          id="45116"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58732</attachid>
            <date>2010-06-14 17:22:38 -0700</date>
            <delta_ts>2010-07-22 17:44:11 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>40587_4</filename>
            <type>text/plain</type>
            <size>51702</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTI4NTgxNi4uNzRmMmEzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTMgQEAKKzIwMTAtMDYtMTQgIEppYW4gTGkgIDxq
aWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFyZ3VtZW50IHRvIEZpbGUv
QmxvYiBjb25zdHJ1Y3RvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDU4NworCisgICAgICAgIFJlbW92ZSBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJv
YXJkIGFuZCBhZGQgQ2xpcGJvYXJkOjpjcmVhdGUgZm9yIGl0IHRvIGJlCisgICAgICAgIGNhbGxl
ZCBkaXJlY3RseSBpbiBEcmFnQ29udHJvbGxlci4gVGhpcyBpcyBiZWNhdXNlIHdlIG5lZWQgdG8g
cGFzcworICAgICAgICBGcmFtZSBwb2ludGVyIHRvIENsaXBib2FyZCBjbGFzcyBhbmQgdXNlIGl0
IHRvIGdldCBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGluIG9yZGVyIHRvIGNvbnN0
cnVjdCBGaWxlIG9iamVjdHNpbiBDbGlwYm9hcmQ6OmZpbGVzKCkuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVz
ZXJpYWxpemluZ1RyZWVXYWxrZXI6OmNvbnZlcnRJZlRlcm1pbmFsKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Wmln
WmFnOjpSZWFkZXI6OnJlYWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlppZ1phZzo6UmVhZGVy
OjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpaaWdaYWc6OlJlYWRlcjo6cmVhZEZpbGVM
aXN0KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6IEFkZCBDbGlwYm9hcmQ6OmNyZWF0ZSgp
LgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6ZGlzcGF0Y2hDUFBFdmVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL2FuZHJvaWQvRWRpdG9yQW5kcm9pZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvYnJldy9F
ZGl0b3JCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBi
b2FyZCk6CisgICAgICAgICogZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAq
IGVkaXRpbmcvaGFpa3UvRWRpdG9ySGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAg
ICAgICAqIGVkaXRpbmcvcXQvRWRpdG9yUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5nL3d4L0VkaXRvcld4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAg
ICAgICogaHRtbC9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2IpOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYjo6c2xpY2UpOgorICAgICAgICAqIGh0bWwvQmxvYi5oOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0ZpbGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZTo6RmlsZSk6CisgICAgICAgICogaHRtbC9GaWxlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjphcHBlbmRG
b3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRGaWxlTGlz
dEZyb21SZW5kZXJlcik6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9FdmVu
dEhhbmRsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNy
ZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL2d0ay9FdmVudEhhbmRsZXJH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0Ns
aXBib2FyZCk6CisgICAgICAgICogcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6IFJlbW92ZSBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJv
YXJkKCkuCisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9D
bGlwYm9hcmRCcmV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9icmV3L0RyYWdEYXRhQnJldy5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06
OkNsaXBib2FyZENocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVt
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpu
ZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpu
ZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6ZmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFj
OjpmaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsaXBib2FyZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6Q2xp
cGJvYXJkV2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdpbjo6ZmlsZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZFdpbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4u
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW5jZS9EcmFnRGF0YVdpbmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9FZGl0b3JX
aW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQp
OgorICAgICAgICAqIHBsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9EcmFnRGF0YVd4
LmNwcDoKKwogMjAxMC0wNi0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA5MGY4ZDdjLi4zMTIzODRiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC03MzYs
MTggKzczNiwyMyBAQCBzdHJ1Y3QgRGVzZXJpYWxpemluZ1RyZWVXYWxrZXIgOiBwdWJsaWMgQmFz
ZVdhbGtlciB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1fZXhlYywgdmFsdWUu
YXNEb3VibGUoKSk7CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6
OkRhdGVUeXBlOgogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZXhlYykgRGF0ZUluc3Rh
bmNlKG1fZXhlYywgbV9nbG9iYWxPYmplY3QtPmRhdGVTdHJ1Y3R1cmUoKSwgdmFsdWUuYXNEb3Vi
bGUoKSk7Ci0gICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkZpbGVU
eXBlOgorICAgICAgICAgICAgY2FzZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpGaWxlVHlw
ZTogewogICAgICAgICAgICAgICAgIGlmICghbV9pc0RPTUdsb2JhbE9iamVjdCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0b0pT
KG1fZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCks
IEZpbGU6OmNyZWF0ZSh2YWx1ZS5hc1N0cmluZygpLmNyb3NzVGhyZWFkU3RyaW5nKCkpKTsKKyAg
ICAgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2V4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRv
SlMobV9leGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0
KSwgRmlsZTo6Y3JlYXRlKHZhbHVlLmFzU3RyaW5nKCkuY3Jvc3NUaHJlYWRTdHJpbmcoKSwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpGaWxlTGlzdFR5cGU6IHsKICAgICAgICAgICAgICAg
ICBpZiAoIW1faXNET01HbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBq
c051bGwoKTsKICAgICAgICAgICAgICAgICBSZWZQdHI8RmlsZUxpc3Q+IHJlc3VsdCA9IEZpbGVM
aXN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBTZXJpYWxpemVkRmlsZUxpc3QqIHNlcmlh
bGl6ZWRGaWxlTGlzdCA9IHZhbHVlLmFzRmlsZUxpc3QoKTsKICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsZW5ndGggPSBzZXJpYWxpemVkRmlsZUxpc3QtPmxlbmd0aCgpOworICAgICAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0
aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKEZp
bGU6OmNyZWF0ZShzZXJpYWxpemVkRmlsZUxpc3QtPml0ZW0oaSkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNlcmlhbGl6ZWRGaWxlTGlzdC0+aXRl
bShpKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0
b0pTKG1fZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVj
dCksIHJlc3VsdC5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkltYWdlRGF0YVR5cGU6IHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4ZTkxOTIwLi40MDg5MWYxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC00
NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVjhGaWxlTGlzdC5oIgogI2luY2x1ZGUgIlY4SW1hZ2VE
YXRhLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CkBAIC04NTMsNyArODU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIHBhdGg7CiAgICAg
ICAgIGlmICghcmVhZFdlYkNvcmVTdHJpbmcoJnBhdGgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBQYXNzUmVmUHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUocGF0aCk7
CisgICAgICAgIFBhc3NSZWZQdHI8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShwYXRoLCBnZXRT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICAqdmFsdWUgPSB0b1Y4KGJsb2IpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC04NjMsNyArODY0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgU3RyaW5nIHBhdGg7CiAgICAgICAgIGlmICghcmVhZFdlYkNvcmVTdHJpbmcoJnBh
dGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBQYXNzUmVmUHRyPEZpbGU+
IGZpbGUgPSBGaWxlOjpjcmVhdGUocGF0aCk7CisgICAgICAgIFBhc3NSZWZQdHI8RmlsZT4gZmls
ZSA9IEZpbGU6OmNyZWF0ZShwYXRoLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAg
ICAgICAqdmFsdWUgPSB0b1Y4KGZpbGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC04NzgsNyArODc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFN0cmluZyBwYXRoOwogICAg
ICAgICAgICAgaWYgKCFyZWFkV2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUo
cGF0aCkpOworICAgICAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUocGF0aCwg
Z2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgKnZhbHVl
ID0gdG9WOChmaWxlTGlzdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vQ2xpcGJvYXJkLmggYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAppbmRleCA0MDE4
ZTRmLi4wNTYyMjgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuaAorKysgYi9X
ZWJDb3JlL2RvbS9DbGlwYm9hcmQuaApAQCAtMzMsMTEgKzMzLDE1IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorICAgIGNsYXNzIERyYWdEYXRhOwogICAgIGNsYXNzIEZpbGVMaXN0OworICAg
IGNsYXNzIEZyYW1lOwogCiAgICAgLy8gU3RhdGUgYXZhaWxhYmxlIGR1cmluZyBJRSdzIGV2ZW50
cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29weS9wYXN0ZQogICAgIGNsYXNzIENsaXBib2FyZCA6
IHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZD4gewogICAgIHB1YmxpYzoKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBE
cmFnRGF0YSosIEZyYW1lKik7CisKICAgICAgICAgdmlydHVhbCB+Q2xpcGJvYXJkKCkgeyB9CiAK
ICAgICAgICAgLy8gSXMgdGhpcyBvcGVyYXRpb24gYSBkcmFnLWRyb3Agb3IgYSBjb3B5LXBhc3Rl
PwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCA4YWUxMzEzLi45ODRiYzgzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
NzEyLDcgKzcxMiw3IEBAIGJvb2wgRWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyAmZXZlbnRUeXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIHRhcmdldCA9IHRhcmdldC0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgCi0g
ICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gbmV3R2VuZXJhbENsaXBib2FyZChwb2xp
Y3kpOworICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9IG5ld0dlbmVyYWxDbGlwYm9h
cmQocG9saWN5LCBtX2ZyYW1lKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJl
ZlB0cjxFdmVudD4gZXZ0ID0gQ2xpcGJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUs
IHRydWUsIGNsaXBib2FyZCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgg
Yi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggM2UyMjNkYy4uODNkZjYwNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xh
c3MgRWRpdENvbW1hbmQ7CiBjbGFzcyBFZGl0b3JDbGllbnQ7CiBjbGFzcyBFZGl0b3JJbnRlcm5h
bENvbW1hbmQ7CitjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgSGl0VGVz
dFJlc3VsdDsKIGNsYXNzIEtpbGxSaW5nOwpAQCAtMzA5LDcgKzMxMCw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGNhbkRlbGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFy
dFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKik7Ci0gICAgUGFzc1JlZlB0cjxDbGlw
Ym9hcmQ+IG5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKKyAgICBQ
YXNzUmVmUHRyPENsaXBib2FyZD4gbmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3ksIEZyYW1lKik7CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQo
UGFzdGVib2FyZCopOwogICAgIHZvaWQgcGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiwg
Ym9vbCBhbGxvd1BsYWluVGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdt
ZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQs
IGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL2FuZHJvaWQvRWRpdG9yQW5kcm9pZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvYW5k
cm9pZC9FZGl0b3JBbmRyb2lkLmNwcAppbmRleCA4ZTAwMzI2Li42MWNjZTAxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dl
bmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgRnJhbWUqKQogewogICAgIHJldHVybiBuZXcgQ2xpcGJvYXJkQW5kcm9pZChw
b2xpY3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9icmV3L0VkaXRv
ckJyZXcuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAKaW5kZXggYjYx
MGI2Mi4uNGExZjRkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJl
dy5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4g
RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kp
CitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1cm4gbmV3IENsaXBi
b2FyZEJyZXcocG9saWN5LCBmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcv
Y2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0Vk
aXRvckNocm9taXVtLmNwcAppbmRleCAxZWEwODViLi43YTEzYjEyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAKQEAgLTMzLDEyICszMywxMyBAQAogCiAj
aW5jbHVkZSAiQ2hyb21pdW1EYXRhT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkQ2hyb21p
dW0uaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NS
ZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVy
YWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQog
ewotICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKGZhbHNlLCBDaHJvbWl1bURh
dGFPYmplY3Q6OmNyZWF0ZSgpLCBwb2xpY3kpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1
bTo6Y3JlYXRlKGZhbHNlLCBDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZSgpLCBwb2xpY3ksIGZy
YW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9l
ZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcCBiL1dlYkNvcmUvZWRpdGluZy9oYWlrdS9FZGl0
b3JIYWlrdS5jcHAKaW5kZXggNzIzZDRmZi4uNDU5NmM5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvaGFpa3Uv
RWRpdG9ySGFpa3UuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6
bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSop
CiB7CiAgICAgcmV0dXJuIENsaXBib2FyZEhhaWt1OjpjcmVhdGUocG9saWN5LCBmYWxzZSk7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGNhMDAxYTIuLjJjNWE2MDIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0zMyw5ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRv
cjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZE1hYzo6Y3JlYXRlKGZhbHNlLCBbTlNQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSwgcG9saWN5LCAwKTsKKyAgICByZXR1cm4gQ2xp
cGJvYXJkTWFjOjpjcmVhdGUoZmFsc2UsIFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRd
LCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogdm9pZCBFZGl0b3I6OnNob3dGb250UGFuZWwoKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNwcCBiL1dlYkNvcmUvZWRpdGlu
Zy9xdC9FZGl0b3JRdC5jcHAKaW5kZXggZTc0ZTJmMy4uN2ZiMzYzNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL3F0L0VkaXRvclF0LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvcXQvRWRp
dG9yUXQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2Vu
ZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSopCiB7CiAg
ICAgcmV0dXJuIENsaXBib2FyZFF0OjpjcmVhdGUocG9saWN5KTsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZWRpdGluZy93eC9FZGl0b3JXeC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9y
V3guY3BwCmluZGV4IGNiOWU4MzYuLmEyZWM2NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy93eC9FZGl0b3JXeC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL3d4L0VkaXRvcld4LmNwcApA
QCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSkgCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJv
YXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikgCiB7IAogICAgIHJldHVy
biBDbGlwYm9hcmRXeDo6Y3JlYXRlKHBvbGljeSwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvQmxvYi5jcHAgYi9XZWJDb3JlL2h0bWwvQmxvYi5jcHAKaW5kZXggNmQyNWQ4ZC4u
NzBkODc3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2IuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9CbG9iLmNwcApAQCAtMzMsMTcgKzMzLDIwIEBACiAKICNpbmNsdWRlICJCbG9iSXRlbS5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmxvYjo6QmxvYihjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYgaXRlbXMpCi0gICAgOiBtX3R5cGUodHlwZSkKK0Js
b2I6OkJsb2IoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBCbG9iSXRlbUxpc3QmIGl0ZW1zLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIDogQWN0
aXZlRE9NT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHRoaXMpCisgICAgLCBtX3R5cGUo
dHlwZSkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKQog
ICAgICAgICBtX2l0ZW1zLmFwcGVuZChpdGVtc1tpXSk7CiB9CiAKLUJsb2I6OkJsb2IoY29uc3Qg
U3RyaW5nJiBwYXRoKQorQmxvYjo6QmxvYihjb25zdCBTdHJpbmcmIHBhdGgsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmpl
Y3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdGhpcykKIHsKICAgICAvLyBOb3RlOiB0aGlzIGRv
ZXNuJ3QgaW5pdGlhbGl6ZSB0aGUgdHlwZSB1bmxpa2UgRmlsZShwYXRoKS4KICAgICBtX2l0ZW1z
LmFwcGVuZChGaWxlQmxvYkl0ZW06OmNyZWF0ZShwYXRoKSk7CkBAIC05MSw3ICs5NCw3IEBAIFBh
c3NSZWZQdHI8QmxvYj4gQmxvYjo6c2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoKSBjb25zdAogICAgICAgICBzdGFydCA9IDA7CiAgICAgfQogICAgIC8vIEZJWE1FOiBQYXNz
IGNvbnRlbnQgdHlwZSB3aGVuIHdlIGFkZCBpdCB0byBzbGljZSdzIGFyZ3VtZW50cy4KLSAgICBy
ZXR1cm4gQmxvYjo6Y3JlYXRlKFN0cmluZygpLCBpdGVtcyk7CisgICAgcmV0dXJuIEJsb2I6OmNy
ZWF0ZShTdHJpbmcoKSwgaXRlbXMsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEJMT0JfU0xJQ0UpCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9i
LmggYi9XZWJDb3JlL2h0bWwvQmxvYi5oCmluZGV4IGFjYTYwZWYuLjI3NDZiOTcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9CbG9iLmgKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2IuaApAQCAtMzEs
NiArMzEsNyBAQAogI2lmbmRlZiBCbG9iX2gKICNkZWZpbmUgQmxvYl9oCiAKKyNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJCbG9iSXRlbS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM5LDE5ICs0MCwy
MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEJsb2IgOiBwdWJsaWMgUmVmQ291
bnRlZDxCbG9iPiB7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBCbG9i
IDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4sIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgQmxvYkl0ZW1MaXN0JiBpdGVtcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBCbG9iSXRlbUxpc3QmIGl0ZW1zLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iKHR5cGUsIGl0ZW1zKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQmxvYih0eXBlLCBpdGVtcywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwog
ICAgIH0KIAogICAgIC8vIEZJWE1FOiBEZXByZWNhdGVkIG1ldGhvZC4gIFRoaXMgaXMgY2FsbGVk
IG9ubHkgZnJvbQogICAgIC8vIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
YW5kIHRoZSB1c2FnZSBpbiBpdCB3aWxsIGJlY29tZSBpbnZhbGlkIG9uY2UKICAgICAvLyBCbG9i
QnVpbGRlciBpcyBpbnRyb2R1Y2VkLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYj4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgcGF0aCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYihwYXRo
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYihwYXRoLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QmxvYigpIHsgfQpAQCAtNzAsMTAg
KzczLDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgQmxvYihjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYpOworICAgIEJsb2IoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBCbG9iSXRlbUxpc3QmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAK
ICAgICAvLyBGSVhNRTogRGVwcmVjYXRlZCBjb25zdHJ1Y3Rvci4gIFNlZSBhbHNvIHRoZSBjb21t
ZW50IGZvciBCbG9iOjpjcmVhdGUocGF0aCkuCi0gICAgQmxvYihjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIEJsb2IoY29uc3QgU3RyaW5nJiBwYXRoLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAKICAgICBCbG9iSXRlbUxpc3QgbV9pdGVtczsKICAgICBTdHJpbmcgbV90eXBlOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0ZpbGUuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGUuY3BwCmluZGV4
IDJjOWNlNTMuLjI4MWU0MjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvRmlsZS5jcHAKQEAgLTI4LDExICsyOCwxMiBAQAogCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmlsZTo6
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBCbG9iKHBhdGgpCitGaWxlOjpGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKKyAgICA6IEJsb2IocGF0aCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAg
ICAvLyBXZSBkb24ndCB1c2UgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKCkg
YmVjYXVzZSBpdCByZXR1cm5zICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIHVwb24gZmFpbHVy
ZS4KICAgICBjb25zdCBTdHJpbmcmIGZpbGVOYW1lID0gbmFtZSgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0ZpbGUuaCBiL1dlYkNvcmUvaHRtbC9GaWxlLmgKaW5kZXggNTgyZGIyOC4uMzEz
ZjgwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0ZpbGUuaAorKysgYi9XZWJDb3JlL2h0bWwv
RmlsZS5oCkBAIC0zMiwxMSArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCiBjbGFzcyBGaWxlIDogcHVibGljIEJsb2Igewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
cGF0aCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRmlsZShwYXRoLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
QEAgLTQ4LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKTsgfQogCiBwcml2YXRlOgotICAgIEZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKKyAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCmluZGV4IDNkMzNmZjguLjIzODQ5OTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTEzNzksNyArMTM3OSw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6YXBw
ZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCBtdWx0aXBhcnQpCiAgICAg
ICAgIC8vIElmIG5vIGZpbGVuYW1lIGF0IGFsbCBpcyBlbnRlcmVkLCByZXR1cm4gc3VjY2Vzc2Z1
bCBidXQgZW1wdHkuCiAgICAgICAgIC8vIE51bGwgd291bGQgYmUgbW9yZSBsb2dpY2FsLCBidXQg
TmV0c2NhcGUgcG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4KICAgICAgICAgaWYgKCFudW1GaWxl
cykgewotICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kQmxvYihuYW1lKCksIEZpbGU6OmNyZWF0
ZSgiIikpOworICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kQmxvYihuYW1lKCksIEZpbGU6OmNy
ZWF0ZSgiIiwgZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xOTY3LDcgKzE5NjcsNyBAQCB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXRocykKICAgICBtX2ZpbGVMaXN0LT5jbGVhcigpOwogICAgIGludCBzaXplID0g
cGF0aHMuc2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgICAg
ICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldKSk7CisgICAgICAgIG1f
ZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUocGF0aHNbaV0sIGRvY3VtZW50KCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkpOwogCiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNS
ZW5kZXJlcih0cnVlKTsKICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQo
dGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA3MTY3NzJiLi5kOTNhMjU2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpkcmFnRXhpdGVkKERyYWdEYXRhKiBkcmFnRGF0YSkKIAogICAgIGlmIChSZWZQdHI8RnJh
bWVWaWV3PiB2ID0gbWFpbkZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSA9ICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgbV9kb2N1bWVudFVuZGVy
TW91c2UtPnNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKSkgPyBDbGlwYm9hcmRSZWFkYWJsZSA6
IENsaXBib2FyZFR5cGVzUmVhZGFibGU7Ci0gICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBi
b2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9hcmQocG9saWN5KTsKKyAgICAgICAgUmVmUHRy
PENsaXBib2FyZD4gY2xpcGJvYXJkID0gQ2xpcGJvYXJkOjpjcmVhdGUocG9saWN5LCBkcmFnRGF0
YSwgbWFpbkZyYW1lKTsKICAgICAgICAgY2xpcGJvYXJkLT5zZXRTb3VyY2VPcGVyYXRpb24oZHJh
Z0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKICAgICAgICAgbWFpbkZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+Y2FuY2VsRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFn
RGF0YSksIGNsaXBib2FyZC5nZXQoKSk7CiAgICAgICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9s
aWN5KENsaXBib2FyZE51bWIpOyAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJlIGZvciBz
ZWN1cml0eQpAQCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1E
cmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtYWluRnJhbWUg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpOwogICAgICAgICBpZiAobWFpbkZyYW1lLT52aWV3KCkpIHsK
ICAgICAgICAgICAgIC8vIFNlbmRpbmcgYW4gZXZlbnQgY2FuIHJlc3VsdCBpbiB0aGUgZGVzdHJ1
Y3Rpb24gb2YgdGhlIHZpZXcgYW5kIHBhcnQuCi0gICAgICAgICAgICBSZWZQdHI8Q2xpcGJvYXJk
PiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZFJlYWRhYmxl
KTsKKyAgICAgICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9IENsaXBib2FyZDo6
Y3JlYXRlKENsaXBib2FyZFJlYWRhYmxlLCBkcmFnRGF0YSwgbWFpbkZyYW1lLmdldCgpKTsKICAg
ICAgICAgICAgIGNsaXBib2FyZC0+c2V0U291cmNlT3BlcmF0aW9uKGRyYWdEYXRhLT5kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CiAgICAgICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5wZXJmb3JtRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIGNs
aXBib2FyZC5nZXQoKSk7CiAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShD
bGlwYm9hcmROdW1iKTsgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJp
dHkKQEAgLTUyNCw3ICs1MjQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWco
RHJhZ0RhdGEqIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kgPSBtX2RvY3Vt
ZW50VW5kZXJNb3VzZS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNMb2NhbCgpID8gQ2xpcGJvYXJkUmVh
ZGFibGUgOiBDbGlwYm9hcmRUeXBlc1JlYWRhYmxlOwotICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNs
aXBib2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9hcmQocG9saWN5KTsKKyAgICBSZWZQdHI8
Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBDbGlwYm9hcmQ6OmNyZWF0ZShwb2xpY3ksIGRyYWdEYXRh
LCBtYWluRnJhbWUuZ2V0KCkpOwogICAgIERyYWdPcGVyYXRpb24gc3JjT3BNYXNrID0gZHJhZ0Rh
dGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGNsaXBib2FyZC0+c2V0U291
cmNlT3BlcmF0aW9uKHNyY09wTWFzayk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9jaHJv
bWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZl
bnRIYW5kbGVyQ2hyb21pdW0uY3BwCmluZGV4IGZmMTYxYWYuLjcxOTE2M2YgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcApAQCAtMTI5LDcgKzEy
OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhh
bmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q2hy
b21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0ID0gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSh0cnVlLCBkYXRhT2JqZWN0
LmdldCgpLCBDbGlwYm9hcmRXcml0YWJsZSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9taXVt
OjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUsIG1fZnJh
bWUpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwIGIvV2ViQ29yZS9wYWdl
L2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCmluZGV4IDBmZjY3ZDIuLjQyOWFlYTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
V2lkZ2V0KiB3aWQKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRl
RHJhZ2dpbmdDbGlwYm9hcmQoKSBjb25zdAogewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNy
ZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgRGF0YU9iamVjdEd0azo6Y3JlYXRlKCksIHRydWUpOwor
ICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShDbGlwYm9hcmRXcml0YWJsZSwgRGF0YU9i
amVjdEd0azo6Y3JlYXRlKCksIHRydWUsIG1fZnJhbWUpOwogfQogCiBib29sIEV2ZW50SGFuZGxl
cjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uvd2lu
L0V2ZW50SGFuZGxlcldpbi5jcHAgYi9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5j
cHAKaW5kZXggNTUxMTIwOS4uZWEzMTdiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dpbi9F
dmVudEhhbmRsZXJXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2lu
LmNwcApAQCAtOTMsNyArOTMsNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVy
OjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiAjZWxzZQogICAgIENPTVB0cjxXQ0Rh
dGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSgm
ZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUsIGRhdGFP
YmplY3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV2lu
OjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFibGUsIG1fZnJh
bWUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCA3ZTJjYzRkLi4zNzMzNmYzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIERyYWdEYXRhX2gKICNk
ZWZpbmUgRHJhZ0RhdGFfaAogCi0jaW5jbHVkZSAiQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgiCiAj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIklu
dFBvaW50LmgiCkBAIC05Myw3ICs5Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQ
b3NpdGlvbjsgfQogICAgICAgICBEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtRHJhZ0RhdGE7IH0KICAgICAgICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzazsgfQotICAgICAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gY3JlYXRlQ2xpcGJv
YXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNV
UkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5ID0gQ29udmVydEZpbGVu
YW1lcykgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAg
ICAgICAgYm9vbCBjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAKaW5kZXggMzc1Zjk4MC4uZDli
MmQ2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJv
aWQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNw
cApAQCAtMzUsNiArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQYXNzUmVmUHRy
PENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFn
RGF0YSosIEZyYW1lKikKK3sKKyAgICByZXR1cm4gMDsKK30KKwogQ2xpcGJvYXJkQW5kcm9pZDo6
Q2xpcGJvYXJkQW5kcm9pZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGlzRm9y
RHJhZ2dpbmcpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBpc0ZvckRyYWdnaW5nKQogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcAppbmRleCA3NTZkMDA3
Li40ZTk5YjJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFB
bmRyb2lkLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lk
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRy
YWdEYXRhLmgiCiAKLSNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKIApAQCAtNTgsMTEgKzU3LDYgQEAgQ29s
b3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBDb2xvcigpOwogfQogICAg
IAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5KSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotICAgIAogYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCmluZGV4IDNmZDA4
NWEuLjcyMGQ2YTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRC
cmV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKQEAg
LTM2LDYgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxDbGlw
Ym9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRHJhZ0RhdGEq
LCBGcmFtZSopCit7CisgICAgcmV0dXJuIDA7Cit9CisKIENsaXBib2FyZEJyZXc6OkNsaXBib2Fy
ZEJyZXcoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKQog
ICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgaXNGb3JEcmFnZ2luZykKIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vYnJldy9EcmFnRGF0YUJyZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9i
cmV3L0RyYWdEYXRhQnJldy5jcHAKaW5kZXggMjBmOTNiOC4uNzAwN2Y3MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9icmV3L0RyYWdEYXRhQnJldy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9icmV3L0RyYWdEYXRhQnJldy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAK
QEAgLTU4LDExICs1Nyw2IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKICAgICBy
ZXR1cm4gQ29sb3IoKTsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVh
dGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5KSBjb25zdAotewotICAgIHJldHVybiAw
OwotfQotCiBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QK
IHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uY3BwCmluZGV4IDc1MGZmMzAuLjUyOWZlOWMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiQ2hyb21pdW1EYXRhT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJk
VXRpbGl0aWVzQ2hyb21pdW0uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRy
YWdEYXRhLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKQEAgLTQzLDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU3RyaW5nQnVpbGRl
ci5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCkBAIC04OSwxOCArOTEsMjUgQEAgc3RhdGljIENs
aXBib2FyZERhdGFUeXBlIGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQogICAgIHJldHVybiBDbGlwYm9hcmREYXRhVHlwZU90aGVyOwogfQogCitQYXNzUmVmUHRy
PENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSwgRHJhZ0RhdGEqIGRyYWdEYXRhLCBGcmFtZSogZnJhbWUpCit7CisgICAgcmV0dXJuIENsaXBi
b2FyZENocm9taXVtOjpjcmVhdGUodHJ1ZSwgZHJhZ0RhdGEtPnBsYXRmb3JtRGF0YSgpLCBwb2xp
Y3ksIGZyYW1lKTsKK30KKwogQ2xpcGJvYXJkQ2hyb21pdW06OkNsaXBib2FyZENocm9taXVtKGJv
b2wgaXNGb3JEcmFnZ2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUqIGZyYW1l
KQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgaXNGb3JEcmFnZ2luZykKICAgICAsIG1fZGF0YU9i
amVjdChkYXRhT2JqZWN0KQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIAogUGFzc1JlZlB0
cjxDbGlwYm9hcmRDaHJvbWl1bT4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZShib29sIGlzRm9y
RHJhZ2dpbmcsCi0gICAgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGRhdGFPYmplY3Qs
IENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCisgICAgUGFzc1JlZlB0cjxDaHJvbWl1bURh
dGFPYmplY3Q+IGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1l
KiBmcmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGlz
Rm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ2xpcGJvYXJkQ2hyb21pdW0oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVjdCwgcG9saWN5LCBm
cmFtZSkpOwogfQogCiB2b2lkIENsaXBib2FyZENocm9taXVtOjpjbGVhckRhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlKQpAQCAtMzU1LDkgKzM2NCwxMCBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlw
Ym9hcmRDaHJvbWl1bTo6ZmlsZXMoKSBjb25zdAogICAgIGlmICghbV9kYXRhT2JqZWN0IHx8IG1f
ZGF0YU9iamVjdC0+ZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEZpbGVMaXN0
OjpjcmVhdGUoKTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGF0YU9iamVjdC0+ZmlsZW5hbWVzLnNpemUoKTsg
KytpKQotICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShtX2RhdGFPYmplY3Qt
PmZpbGVuYW1lcy5hdChpKSkpOworICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0
ZShtX2RhdGFPYmplY3QtPmZpbGVuYW1lcy5hdChpKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
OwogCiAgICAgcmV0dXJuIGZpbGVMaXN0LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaAppbmRleCBmYmViZGUyLi5hNDE1MGQwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCkBAIC0z
OCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZEltYWdl
OwogICAgIGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsKKyAgICBjbGFzcyBGcmFtZTsKICAgICBj
bGFzcyBJbnRQb2ludDsKIAogICAgIGNsYXNzIENsaXBib2FyZENocm9taXVtIDogcHVibGljIENs
aXBib2FyZCwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKQEAgLTQ1LDcgKzQ2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB+Q2xpcGJvYXJkQ2hyb21pdW0oKSB7fQogCiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZENocm9taXVtPiBjcmVhdGUoCi0gICAg
ICAgICAgICBib29sIGlzRm9yRHJhZ2dpbmcsIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0
PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKKyAgICAgICAgICAgIGJvb2wgaXNGb3JEcmFnZ2lu
ZywgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ks
IEZyYW1lKik7CiAKICAgICAgICAgLy8gUmV0dXJucyB0aGUgZmlsZSBuYW1lIChub3QgaW5jbHVk
aW5nIHRoZSBleHRlbnNpb24pLiBUaGlzIHJlbW92ZXMgYW55CiAgICAgICAgIC8vIGludmFsaWQg
ZmlsZSBzeXN0ZW0gY2hhcmFjdGVycyBhcyB3ZWxsIGFzIG1ha2luZyBzdXJlIHRoZQpAQCAtNzks
MTEgKzgwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGhh
c0RhdGEoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIENsaXBib2FyZENocm9taXVtKGJvb2ws
IFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsK
KyAgICAgICAgQ2xpcGJvYXJkQ2hyb21pdW0oYm9vbCwgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFP
YmplY3Q+LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CiAKICAgICAgICAgdm9pZCBy
ZXNldEZyb21DbGlwYm9hcmQoKTsKICAgICAgICAgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1h
Z2UqLCBOb2RlKiwgY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAgUmVmUHRyPENocm9taXVtRGF0
YU9iamVjdD4gbV9kYXRhT2JqZWN0OworICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9E
cmFnRGF0YUNocm9taXVtLmNwcAppbmRleCAyYzIxNTFhLi42NzRkMzRkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKQEAgLTMyLDggKzMyLDYg
QEAKIAogI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCiAjaW5jbHVkZSAiQ2hyb21pdW1EYXRh
T2JqZWN0LmgiCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCi0jaW5jbHVkZSAiQ2xpcGJvYXJkQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTQ4LDE0ICs0Niw2IEBAIHN0YXRpYyBib29s
IGNvbnRhaW5zSFRNTChjb25zdCBDaHJvbWl1bURhdGFPYmplY3QqIGRyb3BEYXRhKQogICAgIHJl
dHVybiBkcm9wRGF0YS0+dGV4dEh0bWwubGVuZ3RoKCkgPiAwOwogfQogCi1QYXNzUmVmUHRyPENs
aXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5KSBjb25zdAotewotICAgIFJlZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gY2xpcGJvYXJk
ID0gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSh0cnVlLAotICAgICAgICBtX3BsYXRmb3JtRHJh
Z0RhdGEsIHBvbGljeSk7Ci0KLSAgICByZXR1cm4gY2xpcGJvYXJkLnJlbGVhc2UoKTsKLX0KLQog
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVu
YW1lUG9saWN5KSBjb25zdAogewogICAgIHJldHVybiAhYXNVUkwoZmlsZW5hbWVQb2xpY3kpLmlz
RW1wdHkoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCmluZGV4IDZlZjUxY2Yu
LjE2MzNjY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcApAQCAtMjcsMTEg
KzI3LDE2IEBACiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1QYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpu
ZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikK
IHsKICAgICByZXR1cm4gbmV3IENsaXBib2FyZEVmbChwb2xpY3ksIGZhbHNlKTsKIH0KIAorUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSwgRHJhZ0RhdGEqLCBGcmFtZSopCit7CisgICAgcmV0dXJuIDA7Cit9CisKIENsaXBib2FyZEVm
bDo6Q2xpcGJvYXJkRWZsKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgZm9yRHJh
Z2dpbmcpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFnZ2luZykKIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL0RyYWdEYXRhRWZsLmNwcAppbmRleCBmNmI0NDZjLi5hODQ1OGQ2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCkBA
IC02MSwxMSArNjAsNiBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0
dXJuIENvbG9yKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRl
Q2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsK
LX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5k
ZXggYWQxYzY2NS4uYjk2ODViMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3Bw
CkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkR3RrLmgiCiAKICNpbmNsdWRl
ICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9y
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCkBAIC0yNyw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRI
ZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAibWFya3Vw
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDMsMjQgKzQ1LDMxIEBAIGVu
dW0gQ2xpcGJvYXJkVHlwZSB7CiAgICAgQ2xpcGJvYXJkVHlwZVVua25vd24KIH07CiAKLVBhc3NS
ZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVy
YWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQog
ewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIGd0a19jbGlwYm9hcmRf
Z2V0X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIEdES19TRUxFQ1RJT05f
Q0xJUEJPQVJEKSwgZmFsc2UpOworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xp
Y3ksIGd0a19jbGlwYm9hcmRfZ2V0X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0
KCksIEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKSwgZmFsc2UsIGZyYW1lKTsKIH0KIAotQ2xpcGJv
YXJkR3RrOjpDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xp
cGJvYXJkKiBjbGlwYm9hcmQpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVh
dGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFnRGF0YSosIEZyYW1lKikKK3sKKyAgICByZXR1
cm4gMDsKK30KKworQ2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEZyYW1lKiBmcmFtZSkKICAgICA6
IENsaXBib2FyZChwb2xpY3ksIGZhbHNlKQogICAgICwgbV9kYXRhT2JqZWN0KERhdGFPYmplY3RH
dGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpKQogICAgICwgbV9jbGlwYm9hcmQoY2xpcGJvYXJk
KQogICAgICwgbV9oZWxwZXIoUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aGVscGVy
KCkpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQogewogfQogCi1DbGlwYm9hcmRHdGs6OkNsaXBib2Fy
ZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RH
dGs+IGRhdGFPYmplY3QsIGJvb2wgZm9yRHJhZ2dpbmcpCitDbGlwYm9hcmRHdGs6OkNsaXBib2Fy
ZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RH
dGs+IGRhdGFPYmplY3QsIGJvb2wgZm9yRHJhZ2dpbmcsIEZyYW1lKiBmcmFtZSkKICAgICA6IENs
aXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmpl
Y3QpCiAgICAgLCBtX2NsaXBib2FyZCgwKQogICAgICwgbV9oZWxwZXIoUGFzdGVib2FyZDo6Z2Vu
ZXJhbFBhc3RlYm9hcmQoKS0+aGVscGVyKCkpCisgICAgLCBtX2ZyYW1lKGZyYW1lKQogewogfQog
CkBAIC0yNTUsOCArMjY0LDkgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkR3RrOjpm
aWxlcygpIGNvbnN0CiAgICAgUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0Ojpj
cmVhdGUoKTsKICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlVmVjdG9yKG1fZGF0YU9iamVjdC0+Zmls
ZXMoKSk7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVZlY3Rvci5zaXplKCk7IGkrKykKLSAgICAgICAg
ZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoZmlsZVZlY3RvcltpXSkpOworICAgICAgICBm
aWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShmaWxlVmVjdG9yW2ldLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSk7CiAKICAgICByZXR1cm4gZmlsZUxpc3QucmVsZWFzZSgpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBjMzQzOGM0Li41YjQyYWM2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtMzQsMjAgKzM0LDIxIEBAIHR5cGVkZWYgc3RydWN0
IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgQ2FjaGVkSW1hZ2U7CisgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgUGFzdGVib2Fy
ZEhlbHBlcjsKIAogICAgIC8vIFN0YXRlIGF2YWlsYWJsZSBkdXJpbmcgSUUncyBldmVudHMgZm9y
IGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUKICAgICAvLyBDcmVhdGVkIGZyb20gdGhlIEV2
ZW50SGFuZGxlckd0ayB0byBiZSB1c2VkIGJ5IHRoZSBkb20KICAgICBjbGFzcyBDbGlwYm9hcmRH
dGsgOiBwdWJsaWMgQ2xpcGJvYXJkIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ks
IEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBib29sIGlzRm9yRHJhZ2dpbmcpCisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBib29sIGlzRm9yRHJhZ2dpbmcsIEZy
YW1lKiBmcmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
bGlwYm9hcmRHdGsocG9saWN5LCBjbGlwYm9hcmQpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgY2xpcGJvYXJkLCBmcmFtZSkpOwogICAgICAg
ICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRh
T2JqZWN0LCBib29sIGlzRm9yRHJhZ2dpbmcpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENs
aXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQ
dHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBpc0ZvckRyYWdnaW5nLCBGcmFtZSog
ZnJhbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJv
YXJkR3RrKHBvbGljeSwgZGF0YU9iamVjdCwgaXNGb3JEcmFnZ2luZykpOworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBkYXRhT2JqZWN0LCBpc0Zv
ckRyYWdnaW5nLCBmcmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfkNsaXBib2Fy
ZEd0aygpOwogCkBAIC03NywxMiArNzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3QoKSB7IHJldHVybiBtX2RhdGFP
YmplY3Q7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3ksIEd0a0NsaXBib2FyZCopOwotICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+LCBib29sKTsKKyAgICAg
ICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgR3RrQ2xpcGJvYXJkKiwgRnJh
bWUqKTsKKyAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgUGFzc1Jl
ZlB0cjxEYXRhT2JqZWN0R3RrPiwgYm9vbCwgRnJhbWUqKTsKIAogICAgICAgICBSZWZQdHI8RGF0
YU9iamVjdEd0az4gbV9kYXRhT2JqZWN0OwogICAgICAgICBHdGtDbGlwYm9hcmQqIG1fY2xpcGJv
YXJkOwogICAgICAgICBQYXN0ZWJvYXJkSGVscGVyKiBtX2hlbHBlcjsKKyAgICAgICAgRnJhbWUq
IG1fZnJhbWU7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RHJhZ0RhdGFHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCmlu
ZGV4IDRlZDNiYzEuLjIwYTc3MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ry
YWdEYXRhR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAK
QEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0
YS5oIgogCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAKQEAgLTU3LDExICs1Niw2IEBAIENvbG9yIERy
YWdEYXRhOjphc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5KSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCiBib29sIERyYWdEYXRhOjpjb250
YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuY3BwCmluZGV4IGY3M2JlMDEuLjQwMzQz
ZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuY3BwCkBAIC00Miw2
ICs0MiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURjo6UGFzc1JlZlB0cjxDbGlw
Ym9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERy
YWdEYXRhKiwgRnJhbWUqKQoreworICAgIHJldHVybiBDbGlwYm9hcmRIYWlrdTo6Y3JlYXRlKHBv
bGljeSwgdHJ1ZSk7Cit9CisKIENsaXBib2FyZEhhaWt1OjpDbGlwYm9hcmRIYWlrdShDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQogICAgIDogQ2xpcGJvYXJk
KHBvbGljeSwgZm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2hh
aWt1L0RyYWdEYXRhSGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhh
aWt1LmNwcAppbmRleCA3ZjQwYjhhLi43YzJkYzljIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3Uv
RHJhZ0RhdGFIYWlrdS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAiQ2xpcGJvYXJkSGFpa3UuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNzYsMTEgKzc1LDYgQEAgQ29sb3IgRHJhZ0RhdGE6
OmFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBDb2xvcigpOwogfQogCi1XVEY6OlBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENsaXBib2FyZEhhaWt1OjpjcmVhdGUo
cG9saWN5LCB0cnVlKTsKLX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29u
dGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWluc1VS
TCgpIHx8IGNvbnRhaW5zUGxhaW5UZXh0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9DbGlwYm9hcmRNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0KaW5kZXggZGRmYTBkNS4uMGQzYzU1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1h
Yy5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiRE9NRWxlbWVudEludGVybmFsLmgiCiAj
aW1wb3J0ICJEcmFnQ2xpZW50LmgiCiAjaW1wb3J0ICJEcmFnQ29udHJvbGxlci5oIgorI2ltcG9y
dCAiRHJhZ0RhdGEuaCIKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRm91bmRhdGlvbkV4
dHJhcy5oIgogI2ltcG9ydCAiRmlsZUxpc3QuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbXBvcnQg
IlBhZ2UuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmQuaCIKICNpbXBvcnQgIlJlbmRlckltYWdlLmgi
CisjaW1wb3J0ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW1wb3J0ICJTZWN1cml0eU9y
aWdpbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCkBAIC00Niw2ICs0
OCwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIE5TVUludGVnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lKQorewor
ICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZSh0cnVlLCBbZHJhZ0RhdGEtPnBsYXRmb3Jt
RGF0YSgpIGRyYWdnaW5nUGFzdGVib2FyZF0sIHBvbGljeSwgZnJhbWUpOworfQorCiBDbGlwYm9h
cmRNYWM6OkNsaXBib2FyZE1hYyhib29sIGZvckRyYWdnaW5nLCBOU1Bhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lICpmcmFtZSkKICAgICA6
IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQogICAgICwgbV9wYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmQpCkBAIC0zMDYsMTEgKzMxMywxMiBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9h
cmRNYWM6OmZpbGVzKCkgY29uc3QKICAgICBOU0FycmF5ICphYnNvbHV0ZVVSTHMgPSBhYnNvbHV0
ZVVSTHNGcm9tUGFzdGVib2FyZEZpbGVuYW1lcyhtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogICAgIE5T
VUludGVnZXIgY291bnQgPSBbYWJzb2x1dGVVUkxzIGNvdW50XTsKIAorICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlz
dCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKE5TVUludGVnZXIgeCA9IDA7IHggPCBj
b3VudDsgeCsrKSB7CiAgICAgICAgIE5TVVJMICphYnNvbHV0ZVVSTCA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOlthYnNvbHV0ZVVSTHMgb2JqZWN0QXRJbmRleDp4XV07CiAgICAgICAgIEFTU0VSVChb
YWJzb2x1dGVVUkwgaXNGaWxlVVJMXSk7Ci0gICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6
Y3JlYXRlKFthYnNvbHV0ZVVSTCBwYXRoXSkpOworICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZp
bGU6OmNyZWF0ZShbYWJzb2x1dGVVUkwgcGF0aF0sIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsK
ICAgICB9CiAgICAgcmV0dXJuIGZpbGVMaXN0LnJlbGVhc2UoKTsgLy8gV2Ugd2lsbCBhbHdheXMg
cmV0dXJuIGEgRmlsZUxpc3QsIHNvbWV0aW1lcyBlbXB0eQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbQppbmRleCBmYTQxNmVkLi45Y2I0ODM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbQpAQCAtMjcsOCArMjcsNiBAQAogI2ltcG9ydCAiRHJhZ0RhdGEuaCIKIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCi0jaW1wb3J0ICJDbGlwYm9hcmRNYWMuaCIKLSNpbXBvcnQg
IkNsaXBib2FyZEFjY2Vzc1BvbGljeS5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQg
IkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnQuaCIKQEAg
LTEwMCwxMSArOTgsNiBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgICAg
ICAgICAgICAgICAgIChpbnQpKFtjb2xvciBibHVlQ29tcG9uZW50XSAqIDI1NS4wICsgMC41KSwg
KGludCkoW2NvbG9yIGFscGhhQ29tcG9uZW50XSAqIDI1NS4wICsgMC41KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENsaXBib2FyZE1hYzo6Y3JlYXRl
KHRydWUsIFttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgcG9saWN5LCAw
KTsKLX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0
CiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW21fcGxhdGZvcm1EcmFnRGF0YSBk
cmFnZ2luZ1Bhc3RlYm9hcmRdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlw
Ym9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCBj
OThjNzlhLi4xYWVjZDA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CkBAIC01Nyw2ICs1OCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
LCBEcmFnRGF0YSogZHJhZ0RhdGEsIEZyYW1lKikKK3sKKyAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6
OmNyZWF0ZShwb2xpY3ksIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSk7Cit9CisKIENsaXBib2Fy
ZFF0OjpDbGlwYm9hcmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBjb25zdCBRTWlt
ZURhdGEqIHJlYWRhYmxlQ2xpcGJvYXJkKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgdHJ1ZSkK
ICAgICAsIG1fcmVhZGFibGVEYXRhKHJlYWRhYmxlQ2xpcGJvYXJkKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJh
Z0RhdGFRdC5jcHAKaW5kZXggODA4NjA2ZC4uNDAzMzEyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdE
YXRhUXQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRHJhZ0RhdGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZFF0LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAibWFya3Vw
LmgiCkBAIC0xMDAsMTEgKzk5LDYgQEAgQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAog
ICAgIHJldHVybiBxdmFyaWFudF9jYXN0PFFDb2xvcj4obV9wbGF0Zm9ybURyYWdEYXRhLT5jb2xv
ckRhdGEoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xp
cGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IENsaXBib2FyZFF0OjpjcmVhdGUocG9saWN5LCBtX3BsYXRmb3JtRHJhZ0RhdGEpOwotfQotCiBi
b29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcGxhdGZvcm1EcmFnRGF0YSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
CmluZGV4IDNjM2EyMDUuLjJjYjY4MmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2lu
LmNwcApAQCAtMzk0LDE3ICszOTQsMjQgQEAgZXhpdDoKICAgICByZXR1cm4gaHI7CiB9CiAKLUNs
aXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3Qq
IGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENs
aXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
RHJhZ0RhdGEqIGRyYWdEYXRhLCBGcmFtZSogZnJhbWUpCit7CisgICAgcmV0dXJuIENsaXBib2Fy
ZFdpbjo6Y3JlYXRlKHRydWUsIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgcG9saWN5LCBmcmFt
ZSk7Cit9CisKK0NsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywg
SURhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZy
YW1lKiBmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCiAgICAg
LCBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKICAgICAsIG1fd3JpdGFibGVEYXRhT2JqZWN0KDAp
CisgICAgLCBtX2ZyYW1lKGZyYW1lKQogewogfQogCi1DbGlwYm9hcmRXaW46OkNsaXBib2FyZFdp
bihib29sIGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSkKK0NsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNG
b3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBpc0ZvckRy
YWdnaW5nKQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX3dyaXRhYmxl
RGF0YU9iamVjdChkYXRhT2JqZWN0KQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIApAQCAt
NTkyLDEyICs1OTksMTMgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkV2luOjpmaWxl
cygpIGNvbnN0CiAgICAgaWYgKCFoZHJvcCkKICAgICAgICAgcmV0dXJuIGZpbGVzLnJlbGVhc2Uo
KTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgV0NI
QVIgZmlsZW5hbWVbTUFYX1BBVEhdOwogICAgIFVJTlQgZmlsZUNvdW50ID0gRHJhZ1F1ZXJ5Rmls
ZVcoaGRyb3AsIDB4RkZGRkZGRkYsIDAsIDApOwogICAgIGZvciAoVUlOVCBpID0gMDsgaSA8IGZp
bGVDb3VudDsgaSsrKSB7CiAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIGksIGZp
bGVuYW1lLCBBUlJBWVNJWkUoZmlsZW5hbWUpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBmaWxlcy0+YXBwZW5kKEZpbGU6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4o
ZmlsZW5hbWUpKSk7CisgICAgICAgIGZpbGVzLT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8VUNoYXIqPihmaWxlbmFtZSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKICAg
ICB9CiAKICAgICBHbG9iYWxVbmxvY2sobWVkaXVtLmhHbG9iYWwpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmggYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRXaW4uaAppbmRleCA0OWZkY2ZlLi5iYTMzMTMzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRXaW4uaApAQCAtMzUsMTkgKzM1LDIwIEBAIHN0cnVjdCBJRGF0YU9iamVjdDsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZEltYWdlOworICAgIGNsYXNzIEZy
YW1lOwogICAgIGNsYXNzIEludFBvaW50OwogICAgIGNsYXNzIFdDRGF0YU9iamVjdDsKIAogICAg
IC8vIFN0YXRlIGF2YWlsYWJsZSBkdXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3Ag
YW5kIGNvcHkvcGFzdGUKICAgICBjbGFzcyBDbGlwYm9hcmRXaW4gOiBwdWJsaWMgQ2xpcGJvYXJk
LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBJ
RGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRy
YWdnaW5nLCBJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBv
bGljeSwgRnJhbWUqIGZyYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3kpKTsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJhZ2dp
bmcsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKICAgICAgICAgfQotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRXaW4+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcsIFdD
RGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRy
YWdnaW5nLCBXQ0RhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksIEZyYW1lKiBmcmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVjdCwgcG9saWN5KSk7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdn
aW5nLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgICAgIH0KICAgICAgICAgfkNs
aXBib2FyZFdpbigpOwogICAgIApAQCAtNzYsOCArNzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc2V0RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2JqZWN0ICpkYXRhT2Jq
ZWN0KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJh
Z2dpbmcsIElEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKLSAgICAgICAgQ2xp
cGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5KTsKKyAgICAgICAgQ2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgSURh
dGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CisgICAgICAgIENsaXBi
b2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vz
c1BvbGljeSwgRnJhbWUqKTsKIAogICAgICAgICB2b2lkIHJlc2V0RnJvbUNsaXBib2FyZCgpOwog
ICAgICAgICB2b2lkIHNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIE5vZGUqLCBjb25zdCBJbnRQ
b2ludCYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDgyZTUzN2UuLjA1
ZjkxMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTI2LDkgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVk
ZSAiQ2xpcGJvYXJkV2luLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgiCi0j
aW5jbHVkZSAiQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFn
bWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiTWFya3VwLmgi
CkBAIC0zOSwxMSArMzcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUs
IG1fcGxhdGZvcm1EcmFnRGF0YSwgcG9saWN5KTsKLX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogewog
ICAgIHJldHVybiBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEodXJs
V0Zvcm1hdCgpKSkgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4u
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRWRpdG9yV2luLmNwcAppbmRleCAwOWFiZGJkLi4w
NzU4MjdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJDbGlwYm9hcmRXaW4uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5n
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5o
IgpAQCAtMzgsMTMgKzM5LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENs
aXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7CiAg
ICAgQ09NUHRyPElEYXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVE
KE9sZUdldENsaXBib2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRh
ID0gMDsKIAotICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0ZShmYWxzZSwgY2xpcGJvYXJk
RGF0YS5nZXQoKSwgcG9saWN5KTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUoZmFs
c2UsIGNsaXBib2FyZERhdGEuZ2V0KCksIHBvbGljeSwgZnJhbWUpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRh
V2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcAppbmRl
eCA1ZjJhN2JhLi43M2RkOGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0Ry
YWdEYXRhV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5j
ZS5jcHAKQEAgLTIxLDE3ICsyMSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAotewotICAgIHJldHVybiAwOwot
fQotCiBib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kg
ZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9FZGl0b3JXaW5jZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbmNlL0VkaXRvcldpbmNlLmNwcAppbmRleCAwMmFmNzgwLi43MWY0ZGI5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxD
bGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8Q2xpcGJv
YXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBv
bGljeSwgRnJhbWUqKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luY2Uo
cG9saWN5LCBmYWxzZSkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlw
Ym9hcmRXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcAppbmRleCA2
MTAwODMxLi4yNWJlZjU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2Fy
ZFd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4LmNwcApAQCAtMzcs
NiArMzcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAorUGFzc1JlZlB0cjxDbGlw
Ym9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRHJhZ0RhdGEq
LCBGcmFtZSopCit7CisgICAgcmV0dXJuIDA7Cit9CisKIENsaXBib2FyZFd4OjpDbGlwYm9hcmRX
eChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKSAKICAgICA6
IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFX
eC5jcHAKaW5kZXggMjc4ZjEyMy4uMzVlMzc1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS93eC9EcmFnRGF0YVd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0RyYWdEYXRhV3gu
Y3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJh
Z0RhdGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCkBAIC02NiwxMSArNjUsNiBAQCBDb2xv
ciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLVBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLSAgICAKIGJvb2wgRHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxz
ZTsK
</data>
<flag name="commit-queue"
          id="45159"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62368</attachid>
            <date>2010-07-22 17:44:11 -0700</date>
            <delta_ts>2010-07-23 14:47:59 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>40587_5</filename>
            <type>text/plain</type>
            <size>56185</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzYzZDU2OS4uZmJiN2IxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMTAtMDctMjIgIEppYW4gTGkgIDxq
aWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFyZ3VtZW50IHRvIEZpbGUv
QmxvYiBjb25zdHJ1Y3RvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDU4NworCisgICAgICAgIFJlbW92ZSBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJv
YXJkIGFuZCBhZGQgQ2xpcGJvYXJkOjpjcmVhdGUgZm9yIGl0IHRvIGJlCisgICAgICAgIGNhbGxl
ZCBkaXJlY3RseSBpbiBEcmFnQ29udHJvbGxlci4gVGhpcyBpcyBiZWNhdXNlIHdlIG5lZWQgdG8g
cGFzcworICAgICAgICBGcmFtZSBwb2ludGVyIHRvIENsaXBib2FyZCBjbGFzcyBhbmQgdXNlIGl0
IHRvIGdldCBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGluIG9yZGVyIHRvIGNvbnN0
cnVjdCBGaWxlIG9iamVjdHNpbiBDbGlwYm9hcmQ6OmZpbGVzKCkuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVz
ZXJpYWxpemluZ1RyZWVXYWxrZXI6OmNvbnZlcnRJZlRlcm1pbmFsKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Wmln
WmFnOjpSZWFkZXI6OnJlYWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlppZ1phZzo6UmVhZGVy
OjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpaaWdaYWc6OlJlYWRlcjo6cmVhZEZpbGVM
aXN0KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvYW5kcm9pZC9FZGl0
b3JBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBi
b2FyZCk6CisgICAgICAgICogZWRpdGluZy9icmV3L0VkaXRvckJyZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5n
L2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlr
dS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9xdC9FZGl0b3JR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvd3gvRWRpdG9yV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBodG1sL0Jsb2IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGlj
ZSk6CisgICAgICAgICogaHRtbC9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvQmxvYi5pZGw6CisgICAgICAgICogaHRtbC9CbG9iQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRlcjo6Z2V0QmxvYik6CisgICAgICAg
ICogaHRtbC9CbG9iQnVpbGRlci5oOgorICAgICAgICAqIGh0bWwvQmxvYkJ1aWxkZXIuaWRsOgor
ICAgICAgICAqIGh0bWwvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToK
KyAgICAgICAgKiBodG1sL0ZpbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdl
L0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJh
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAg
ICAgICAgKiBwYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAg
ICAqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL3dpbi9F
dmVudEhhbmRsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVh
dGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQv
RHJhZ0RhdGFBbmRyb2lkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJy
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2JyZXcvRHJhZ0RhdGFCcmV3LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Q2xpcGJvYXJk
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZWZs
L0NsaXBib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxD
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxD
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGspOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkR3RrOjpmaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaGFp
a3UvQ2xpcGJvYXJkSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OmZpbGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpDbGlwYm9hcmRXaW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpmaWxlcyk6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2lu
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0RyYWdE
YXRhV2luY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAg
ICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwOgorCiAy
MDEwLTA3LTIyICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDkwZjhkN2MuLjZkNmZhMjEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTczNiwxOCArNzM2LDIzIEBA
IHN0cnVjdCBEZXNlcmlhbGl6aW5nVHJlZVdhbGtlciA6IHB1YmxpYyBCYXNlV2Fsa2VyIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIobV9leGVjLCB2YWx1ZS5hc0RvdWJsZSgpKTsK
ICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6RGF0ZVR5cGU6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9leGVjKSBEYXRlSW5zdGFuY2UobV9leGVjLCBt
X2dsb2JhbE9iamVjdC0+ZGF0ZVN0cnVjdHVyZSgpLCB2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAg
ICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6RmlsZVR5cGU6CisgICAgICAg
ICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkZpbGVUeXBlOiB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBzdGF0
aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgRmlsZTo6Y3JlYXRl
KHZhbHVlLmFzU3RyaW5nKCkuY3Jvc3NUaHJlYWRTdHJpbmcoKSkpOworICAgICAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9KUyhtX2V4ZWMsIHN0
YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxPYmplY3QpLCBGaWxlOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdmFsdWUuYXNTdHJpbmcoKS5jcm9zc1RocmVhZFN0
cmluZygpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGE6OkZpbGVMaXN0VHlwZTogewogICAgICAgICAgICAgICAgIGlmICghbV9pc0RP
TUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAg
ICAgICAgICAgICAgIFJlZlB0cjxGaWxlTGlzdD4gcmVzdWx0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRGaWxlTGlzdCogc2VyaWFsaXplZEZpbGVMaXN0
ID0gdmFsdWUuYXNGaWxlTGlzdCgpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHNlcmlhbGl6ZWRGaWxlTGlzdC0+bGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNl
cmlhbGl6ZWRGaWxlTGlzdC0+aXRlbShpKSkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQt
PmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2VyaWFsaXplZEZp
bGVMaXN0LT5pdGVtKGkpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgcmVzdWx0Lmdl
dCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6SW1hZ2VEYXRhVHlwZTogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDQ3YzRjMmUuLjlkYzRkMGYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJWOEZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiVjhJbWFnZURhdGEuaCIKICNpbmNs
dWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTg1NCw3ICs4
NTUsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgcGF0aDsKICAgICAgICAgaWYgKCFyZWFk
V2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IFBhc3NSZWZQdHI8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShwYXRoKTsKKyAgICAgICAgUGFz
c1JlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgcGF0aCk7CiAgICAgICAgICp2YWx1ZSA9IHRvVjgoYmxvYik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTg2NCw3ICs4NjUsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJp
bmcgcGF0aDsKICAgICAgICAgaWYgKCFyZWFkV2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIFBhc3NSZWZQdHI8RmlsZT4gZmlsZSA9IEZpbGU6
OmNyZWF0ZShwYXRoKTsKKyAgICAgICAgUGFzc1JlZlB0cjxGaWxlPiBmaWxlID0gRmlsZTo6Y3Jl
YXRlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcGF0aCk7CiAgICAgICAgICp2YWx1ZSA9
IHRvVjgoZmlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTg3OSw3ICs4ODAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3RyaW5nIHBhdGg7CiAgICAgICAgICAgICBpZiAo
IXJlYWRXZWJDb3JlU3RyaW5nKCZwYXRoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShwYXRoKSk7CisgICAg
ICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHBhdGgpKTsKICAgICAgICAgfQogICAgICAgICAqdmFsdWUgPSB0b1Y4KGZpbGVM
aXN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuaCBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCmluZGV4IDQwMThlNGYuLjA1NjIyODAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCisrKyBiL1dlYkNvcmUvZG9tL0Ns
aXBib2FyZC5oCkBAIC0zMywxMSArMzMsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgY2xhc3MgRHJhZ0RhdGE7CiAgICAgY2xhc3MgRmlsZUxpc3Q7CisgICAgY2xhc3MgRnJhbWU7
CiAKICAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFu
ZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCiAgICAgY2xhc3MgQ2xpcGJvYXJkIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2xpcGJvYXJkPiB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJh
bWUqKTsKKwogICAgICAgICB2aXJ0dWFsIH5DbGlwYm9hcmQoKSB7IH0KIAogICAgICAgICAvLyBJ
cyB0aGlzIG9wZXJhdGlvbiBhIGRyYWctZHJvcCBvciBhIGNvcHktcGFzdGU/CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IDc3M2VkOTAuLmZlYWE3NWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC03MTIsNyArNzEyLDcg
QEAgYm9vbCBFZGl0b3I6OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nICZldmVu
dFR5cGUsIENsaXBib2FyZEFjY2Vzc1BvbGkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgdGFy
Z2V0ID0gdGFyZ2V0LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICAKLSAgICBSZWZQdHI8Q2xp
cGJvYXJkPiBjbGlwYm9hcmQgPSBuZXdHZW5lcmFsQ2xpcGJvYXJkKHBvbGljeSk7CisgICAgUmVm
UHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gbmV3R2VuZXJhbENsaXBib2FyZChwb2xpY3ksIG1f
ZnJhbWUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPEV2ZW50PiBl
dnQgPSBDbGlwYm9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgY2xpcGJv
YXJkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCBjZDFiMjA0Li5kYjI0OWU3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC00Miw2
ICs0Miw3IEBAIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFu
ZDsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRvckludGVybmFsQ29tbWFuZDsKK2Ns
YXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xh
c3MgS2lsbFJpbmc7CkBAIC0zMDksNyArMzEwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2Fu
RGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKLSAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gbmV3R2Vu
ZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOworICAgIFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUq
KTsKICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKik7
CiAgICAgdm9pZCBwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxh
aW5UZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJl
cGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvYW5k
cm9pZC9FZGl0b3JBbmRyb2lkLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9hbmRyb2lkL0VkaXRvckFu
ZHJvaWQuY3BwCmluZGV4IDhlMDAzMjYuLjYxY2NlMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRp
dGluZy9hbmRyb2lkL0VkaXRvckFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9hbmRy
b2lkL0VkaXRvckFuZHJvaWQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSopCiB7CiAgICAgcmV0dXJuIG5ldyBDbGlwYm9hcmRBbmRyb2lkKHBvbGljeSwgZmFsc2Up
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcAppbmRleCBiNjEwYjYyLi40YTFmNGQ3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dl
bmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgRnJhbWUqKQogewogICAgIHJldHVybiBuZXcgQ2xpcGJvYXJkQnJldyhwb2xp
Y3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0
b3JDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0u
Y3BwCmluZGV4IDFlYTA4NWIuLjdhMTNiMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9j
aHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVt
L0VkaXRvckNocm9taXVtLmNwcApAQCAtMzMsMTIgKzMzLDEzIEBACiAKICNpbmNsdWRlICJDaHJv
bWl1bURhdGFPYmplY3QuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRDaHJvbWl1bS5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJu
IENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoZmFsc2UsIENocm9taXVtRGF0YU9iamVjdDo6Y3Jl
YXRlKCksIHBvbGljeSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoZmFs
c2UsIENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCksIHBvbGljeSwgZnJhbWUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaGFpa3Uv
RWRpdG9ySGFpa3UuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcApp
bmRleCA3MjNkNGZmLi40NTk2YzllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaGFpa3Uv
RWRpdG9ySGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlrdS5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRy
PENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xp
cGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1
cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0ZShwb2xpY3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KaW5kZXggY2EwMDFhMi4uMmM1YTYwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFs
Q2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsK
LSAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoZmFsc2UsIFtOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdLCBwb2xpY3ksIDApOworICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNy
ZWF0ZShmYWxzZSwgW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0sIHBvbGljeSwgZnJh
bWUpOwogfQogCiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvcXQvRWRpdG9yUXQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0
LmNwcAppbmRleCBlNzRlMmYzLi43ZmIzNjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
cXQvRWRpdG9yUXQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9xdC9FZGl0b3JRdC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBi
b2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1cm4gQ2xp
cGJvYXJkUXQ6OmNyZWF0ZShwb2xpY3kpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L3d4L0VkaXRvcld4LmNwcCBiL1dlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JXeC5jcHAKaW5kZXgg
Y2I5ZTgzNi4uYTJlYzY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL3d4L0VkaXRvcld4
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRv
cjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSAKK1Bh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqKSAKIHsgCiAgICAgcmV0dXJuIENsaXBib2FyZFd4
OjpjcmVhdGUocG9saWN5LCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9i
LmNwcCBiL1dlYkNvcmUvaHRtbC9CbG9iLmNwcAppbmRleCAwNjgwZDgyLi5hNDFmYjJlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvQmxvYi5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2IuY3Bw
CkBAIC0zNiwxOSArMzYsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CbG9iOjpCbG9i
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxvYkl0ZW1MaXN0JiBpdGVtcykKK0Jsb2I6OkJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxv
Ykl0ZW1MaXN0JiBpdGVtcykKICAgICA6IG1fdHlwZSh0eXBlKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1faXRlbXMuYXBwZW5kKGl0
ZW1zW2ldKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBQYXNzUmVmUHRyPEJsb2JJdGVtPiYgaXRl
bSkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFBhc3NSZWZQdHI8
QmxvYkl0ZW0+JiBpdGVtKQogewogICAgIG1faXRlbXMuYXBwZW5kKGl0ZW0pOwogfQogCi1CbG9i
OjpCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICAvLyBOb3RlOiB0aGlzIGRvZXNuJ3Qg
aW5pdGlhbGl6ZSB0aGUgdHlwZSB1bmxpa2UgRmlsZShwYXRoKS4KICAgICBtX2l0ZW1zLmFwcGVu
ZChGaWxlQmxvYkl0ZW06OmNyZWF0ZShwYXRoKSk7CkBAIC03MSw3ICs3MSw3IEBAIGNvbnN0IFN0
cmluZyYgQmxvYjo6cGF0aCgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKLVBh
c3NSZWZQdHI8QmxvYj4gQmxvYjo6c2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBjb25zdAorUGFzc1JlZlB0cjxCbG9iPiBC
bG9iOjpzbGljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0YXJ0IDwgMCkKICAgICAgICAgc3RhcnQgPSAwOwpA
QCAtOTUsNyArOTUsNyBAQCBQYXNzUmVmUHRyPEJsb2I+IEJsb2I6OnNsaWNlKGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICBsZW5ndGgg
LT0gaXRlbXMubGFzdCgpLT5zaXplKCk7CiAgICAgICAgIHN0YXJ0ID0gMDsKICAgICB9Ci0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZW50VHlwZSwgaXRlbXMpOworICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29udGVudFR5cGUsIGl0ZW1zKTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoQkxPQl9TTElDRSkKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0Jsb2IuaCBiL1dlYkNvcmUvaHRtbC9CbG9iLmgKaW5kZXggZjU1MjZjNy4uMTJjY2NhNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2IuaAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYi5oCkBA
IC0zOSwxOSArMzksMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworCiBjbGFzcyBCbG9iIDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYgaXRlbXMpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxvYkl0ZW1MaXN0JiBpdGVtcykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYih0eXBlLCBpdGVtcykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlw
ZSwgaXRlbXMpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRGVwcmVjYXRlZCBtZXRob2QuICBU
aGlzIGlzIGNhbGxlZCBvbmx5IGZyb20KICAgICAvLyBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGFuZCB0aGUgdXNhZ2UgaW4gaXQgd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNl
CiAgICAgLy8gQmxvYkJ1aWxkZXIgaXMgaW50cm9kdWNlZC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxCbG9iPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEJsb2IocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Ioc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgcGF0aCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkJsb2IoKSB7
IH0KQEAgLTY2LDE1ICs2OCwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmxvYkl0ZW1MaXN0JiBp
dGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXM7IH0KIAogI2lmIEVOQUJMRShCTE9CX1NMSUNF
KQotICAgIFBhc3NSZWZQdHI8QmxvYj4gc2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8QmxvYj4gc2xpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IFN0
cmluZygpKSBjb25zdDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgQmxvYihjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYpOwotICAgIEJsb2IoY29uc3QgUGFzc1JlZlB0
cjxCbG9iSXRlbT4mKTsKKyAgICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYpOworICAgIEJsb2IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFBhc3NSZWZQdHI8QmxvYkl0ZW0+Jik7CiAKICAgICAvLyBGSVhN
RTogRGVwcmVjYXRlZCBjb25zdHJ1Y3Rvci4gIFNlZSBhbHNvIHRoZSBjb21tZW50IGZvciBCbG9i
OjpjcmVhdGUocGF0aCkuCi0gICAgQmxvYihjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEJsb2Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICBCbG9i
SXRlbUxpc3QgbV9pdGVtczsKICAgICBTdHJpbmcgbV90eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0Jsb2IuaWRsIGIvV2ViQ29yZS9odG1sL0Jsb2IuaWRsCmluZGV4IDBhZTI3NTkuLjYy
NmJiNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9CbG9iLmlkbAorKysgYi9XZWJDb3JlL2h0
bWwvQmxvYi5pZGwKQEAgLTM0LDggKzM0LDEwIEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplOwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykKICNpZiBkZWZpbmVkKEVOQUJMRV9CTE9CX1NMSUNFKSAmJiBFTkFCTEVfQkxPQl9T
TElDRQotICAgICAgICBCbG9iIHNsaWNlKGluIGxvbmcgbG9uZyBzdGFydCwgaW4gbG9uZyBsb25n
IGxlbmd0aCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgY29udGVudFR5cGUpOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gQmxvYiBzbGljZShpbiBsb25nIGxvbmcgc3RhcnQsIGluIGxvbmcgbG9uZyBs
ZW5ndGgsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKKyNlbmRpZgogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9CbG9iQnVp
bGRlci5jcHAKaW5kZXggYjI2ODRmYy4uMDU5MmZmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0Jsb2JCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuY3BwCkBAIC04
MSw5ICs4MSw5IEBAIGJvb2wgQmxvYkJ1aWxkZXI6OmFwcGVuZChQYXNzUmVmUHRyPEJsb2I+IGJs
b2IpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEJsb2I+IEJsb2JCdWlsZGVy
OjpnZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CitQYXNzUmVmUHRyPEJs
b2I+IEJsb2JCdWlsZGVyOjpnZXRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZW50VHlwZSwgbV9pdGVtcyk7CisgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb250ZW50VHlwZSwgbV9pdGVtcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9C
bG9iQnVpbGRlci5oIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKaW5kZXggMTE3M2MwNC4u
NWQxNzAwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKKysrIGIvV2Vi
Q29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQmxvYjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJv
b2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBlbmRpbmcsIEV4Y2Vw
dGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8QmxvYj4gZ2V0QmxvYihjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QmxvYj4gZ2V0
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9
IFN0cmluZygpKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBCbG9iSXRlbUxpc3QgbV9pdGVtczsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5pZGwgYi9XZWJDb3JlL2h0bWwv
QmxvYkJ1aWxkZXIuaWRsCmluZGV4IDkzY2I4N2YuLjUzYzdhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9CbG9iQnVpbGRlci5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmlk
bApAQCAtMzQsNyArMzQsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEdlbmVyYXRlTmF0aXZl
Q29udmVydGVyLAogICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gQmxvYkJ1aWxkZXIgewot
ICAgICAgICBCbG9iIGdldEJsb2IoaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgY29udGVudFR5cGUpOworI2lmICFkZWZpbmVkKExBTkdV
QUdFX09CSkVDVElWRV9DKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gQmxvYiBnZXRCbG9iKGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKKyNlbmRpZgogICAgICAgICB2b2lkIGFw
cGVuZChpbiBCbG9iIGJsb2IpOwogICAgICAgICB2b2lkIGFwcGVuZChpbiBET01TdHJpbmcgdmFs
dWUsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9N
U3RyaW5nIGVuZGluZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0ZpbGUuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGUuY3BwCmluZGV4IDQw
MDBkY2IuLjEwOWUwZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvRmlsZS5jcHAKQEAgLTMxLDE1ICszMSwxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogQmxvYihwYXRo
KQorRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgOiBCbG9iKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIHBhdGgpCiB7CiAgICAgSW5pdCgpOwogfQogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExP
QUQpCi1GaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQotICAgIDogQmxvYihGaWxlQmxvYkl0ZW06OmNyZWF0ZShmaWxlUGF0aCwgcmVs
YXRpdmVQYXRoKSkKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCisgICAgOiBCbG9iKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZpbGVCbG9iSXRl
bTo6Y3JlYXRlKGZpbGVQYXRoLCByZWxhdGl2ZVBhdGgpKQogewogICAgIEluaXQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlLmggYi9XZWJDb3JlL2h0bWwvRmlsZS5oCmluZGV4
IGQ2ODU0NzIuLmMwYWVjYzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlLmgKKysrIGIv
V2ViQ29yZS9odG1sL0ZpbGUuaApAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRmlsZSA6IHB1YmxpYyBCbG9iIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZpbGUocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcGF0aCkpOwogICAgIH0KIAogI2lmIEVOQUJMRShESVJF
Q1RPUllfVVBMT0FEKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5nJiBwYXRo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHJlbGF0aXZlUGF0aCwg
cGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgcmVsYXRpdmVQYXRoLCBwYXRoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTU5LDEx
ICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGZpbGVTaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
cGF0aCk7CiAgICAgdm9pZCBJbml0KCk7CiAKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
LSAgICBGaWxlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVQYXRoLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggMDBkYzUwMy4uNWJiZTRkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjphcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sIG11bHRpcGFydCkKICAgICAg
ICAgLy8gSWYgbm8gZmlsZW5hbWUgYXQgYWxsIGlzIGVudGVyZWQsIHJldHVybiBzdWNjZXNzZnVs
IGJ1dCBlbXB0eS4KICAgICAgICAgLy8gTnVsbCB3b3VsZCBiZSBtb3JlIGxvZ2ljYWwsIGJ1dCBO
ZXRzY2FwZSBwb3N0cyBhbiBlbXB0eSBmaWxlLiBBcmdoLgogICAgICAgICBpZiAoIW51bUZpbGVz
KSB7Ci0gICAgICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKG5hbWUoKSwgRmlsZTo6Y3JlYXRl
KCIiKSk7CisgICAgICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKG5hbWUoKSwgRmlsZTo6Y3Jl
YXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIiIpKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTE5OTksMTUgKzE5OTksMTUgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRGaWxlTGlzdEZyb21SZW5kZXJlcihjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7
CiAgICAgICAgICAgICAvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgdG8gc2xhc2hlcyBiZWZvcmUg
ZXhwb3NpbmcgdGhlIHJlbGF0aXZlIHBhdGggdG8gc2NyaXB0LgogICAgICAgICAgICAgU3RyaW5n
IHJlbGF0aXZlUGF0aCA9IHBhdGhzW2ldLnN1YnN0cmluZygxICsgcm9vdFBhdGgubGVuZ3RoKCkp
LnJlcGxhY2UoJ1xcJywnLycpOwotICAgICAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6
OmNyZWF0ZShyZWxhdGl2ZVBhdGgsIHBhdGhzW2ldKSk7CisgICAgICAgICAgICBtX2ZpbGVMaXN0
LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgcmVsYXRpdmVQYXRoLCBwYXRoc1tpXSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgICAgICBtX2ZpbGVM
aXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldKSk7CisgICAgICAgICAgICBtX2ZpbGVM
aXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgcGF0aHNbaV0pKTsKICAgICB9CiAjZWxzZQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKQotICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhz
W2ldKSk7CisgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoZG9jdW1lbnQo
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBwYXRoc1tpXSkpOwogI2VuZGlmCiAKICAgICBz
ZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKaW5kZXggNzE2NzcyYi4uZDkzYTI1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBA
IC0xNzAsNyArMTcwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChEcmFnRGF0
YSogZHJhZ0RhdGEpCiAKICAgICBpZiAoUmVmUHRyPEZyYW1lVmlldz4gdiA9IG1haW5GcmFtZS0+
dmlldygpKSB7CiAgICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kgPSAoIW1fZG9j
dW1lbnRVbmRlck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigp
LT5pc0xvY2FsKCkpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBDbGlwYm9hcmRUeXBlc1JlYWRhYmxl
OwotICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRl
Q2xpcGJvYXJkKHBvbGljeSk7CisgICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9
IENsaXBib2FyZDo6Y3JlYXRlKHBvbGljeSwgZHJhZ0RhdGEsIG1haW5GcmFtZSk7CiAgICAgICAg
IGNsaXBib2FyZC0+c2V0U291cmNlT3BlcmF0aW9uKGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2soKSk7CiAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmNhbmNl
bERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkp
OwogICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsgICAg
Ly8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKQEAgLTE5Myw3ICsxOTMs
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEp
CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbWFpbkZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsK
ICAgICAgICAgaWYgKG1haW5GcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICAvLyBTZW5kaW5n
IGFuIGV2ZW50IGNhbiByZXN1bHQgaW4gdGhlIGRlc3RydWN0aW9uIG9mIHRoZSB2aWV3IGFuZCBw
YXJ0LgotICAgICAgICAgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gZHJhZ0RhdGEt
PmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRSZWFkYWJsZSk7CisgICAgICAgICAgICBSZWZQdHI8
Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRSZWFkYWJs
ZSwgZHJhZ0RhdGEsIG1haW5GcmFtZS5nZXQoKSk7CiAgICAgICAgICAgICBjbGlwYm9hcmQtPnNl
dFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkp
OwogICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cGVyZm9ybURyYWdBbmRE
cm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkpOwogICAgICAg
ICAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkTnVtYik7ICAgIC8vIGlu
dmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CkBAIC01MjQsNyArNTI0LDcgQEAg
Ym9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYXRhKiBkcmFnRGF0YSwgRHJh
Z09wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5ID0gbV9kb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5
T3JpZ2luKCktPmlzTG9jYWwoKSA/IENsaXBib2FyZFJlYWRhYmxlIDogQ2xpcGJvYXJkVHlwZXNS
ZWFkYWJsZTsKLSAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3Jl
YXRlQ2xpcGJvYXJkKHBvbGljeSk7CisgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0g
Q2xpcGJvYXJkOjpjcmVhdGUocG9saWN5LCBkcmFnRGF0YSwgbWFpbkZyYW1lLmdldCgpKTsKICAg
ICBEcmFnT3BlcmF0aW9uIHNyY09wTWFzayA9IGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soKTsKICAgICBjbGlwYm9hcmQtPnNldFNvdXJjZU9wZXJhdGlvbihzcmNPcE1hc2sp
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21p
dW0uY3BwIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcApp
bmRleCBmZjE2MWFmLi43MTkxNjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0v
RXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVu
dEhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNv
bnN0CiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0Ns
aXBib2FyZCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9i
amVjdCA9IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIENsaXBib2Fy
ZENocm9taXVtOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFi
bGUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKHRydWUsIGRhdGFPYmpl
Y3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKIH0KIAogdm9pZCBFdmVudEhh
bmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ndGsv
RXZlbnRIYW5kbGVyR3RrLmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNw
cAppbmRleCAwZmY2N2QyLi40MjlhZWE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZ3RrL0V2
ZW50SGFuZGxlckd0ay5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsu
Y3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCogd2lkCiAKIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUs
IERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpLCB0cnVlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkR3Rr
OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpLCB0cnVl
LCBtX2ZyYW1lKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRU
b1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZy
YW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwIGIv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCmluZGV4IGUxZDViZTkuLmVlNGIz
NjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9h
cmQoKSBjb25zdAogI2Vsc2UKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBkYXRhT2JqZWN0Owog
ICAgIFdDRGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3QpOwotICAgIHJldHVy
biBDbGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBkYXRhT2JqZWN0LmdldCgpLCBDbGlwYm9hcmRX
cml0YWJsZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUsIGRhdGFPYmpl
Y3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmgKaW5kZXggZDY2ODk2My4uMGUyNmY5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtMjYs
NyArMjYsNiBAQAogI2lmbmRlZiBEcmFnRGF0YV9oCiAjZGVmaW5lIERyYWdEYXRhX2gKIAotI2lu
Y2x1ZGUgIkNsaXBib2FyZEFjY2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgpAQCAtOTUsNyArOTQs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KICAgICAgICAgRHJh
Z0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRh
OyB9CiAgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KLSAgICAgICAg
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgICAgICBi
b29sIGNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNDb21w
YXRpYmxlQ29udGVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRy
b2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBi
b2FyZEFuZHJvaWQuY3BwCmluZGV4IDM3NWY5ODAuLmQ5YjJkNjggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAKQEAgLTM1LDYgKzM1LDExIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6
Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRHJhZ0RhdGEqLCBGcmFtZSopCit7CisgICAg
cmV0dXJuIDA7Cit9CisKIENsaXBib2FyZEFuZHJvaWQ6OkNsaXBib2FyZEFuZHJvaWQoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKQogICAgIDogQ2xpcGJv
YXJkKHBvbGljeSwgaXNGb3JEcmFnZ2luZykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lk
L0RyYWdEYXRhQW5kcm9pZC5jcHAKaW5kZXggNzU2ZDAwNy4uNGU5OWIyYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAi
Q2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCiAKQEAgLTU4LDExICs1Nyw2IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkg
Y29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KICAgICAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QK
LXsKLSAgICByZXR1cm4gMDsKLX0KLSAgICAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0
aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
YnJldy9DbGlwYm9hcmRCcmV3LmNwcAppbmRleCAzZmQwODVhLi43MjBkNmE2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCkBAIC0zNiw2ICszNiwxMSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0
ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQoreworICAgIHJldHVy
biAwOworfQorCiBDbGlwYm9hcmRCcmV3OjpDbGlwYm9hcmRCcmV3KENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIGJvb2wgaXNGb3JEcmFnZ2luZykKICAgICA6IENsaXBib2FyZChwb2xpY3ks
IGlzRm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvRHJh
Z0RhdGFCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9EcmFnRGF0YUJyZXcuY3BwCmlu
ZGV4IGVlYzhiYzQuLmQxMTRmZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9E
cmFnRGF0YUJyZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9EcmFnRGF0YUJyZXcu
Y3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJh
Z0RhdGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCkBAIC01OCwxMSArNTcsNiBAQCBDb2xv
ciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLVBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQogYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRl
eCA4YWFkOGFhLi4wNjI0NGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNocm9taXVt
RGF0YU9iamVjdC5oIgogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC00
Myw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJtYXJrdXAu
aCIKIApAQCAtODksMTggKzkxLDI1IEBAIHN0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBjbGlwYm9h
cmRUeXBlRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gQ2xpcGJv
YXJkRGF0YVR5cGVPdGhlcjsKIH0KIAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6
Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwg
RnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKHRy
dWUsIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgcG9saWN5LCBmcmFtZSk7Cit9CisKIENsaXBi
b2FyZENocm9taXVtOjpDbGlwYm9hcmRDaHJvbWl1bShib29sIGlzRm9yRHJhZ2dpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFP
YmplY3Q+IGRhdGFPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xp
Y3ksIGlzRm9yRHJhZ2dpbmcpCiAgICAgLCBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKKyAgICAs
IG1fZnJhbWUoZnJhbWUpCiB7CiB9CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IENs
aXBib2FyZENocm9taXVtOjpjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLAotICAgIFBhc3NSZWZQ
dHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5KQorICAgIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0LCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRDaHJvbWl1bShpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0
LCBwb2xpY3kpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGlz
Rm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKIH0KIAogdm9pZCBDbGlw
Ym9hcmRDaHJvbWl1bTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTM1NSw5ICsz
NjQsMTAgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKCkg
Y29uc3QKICAgICBpZiAoIW1fZGF0YU9iamVjdCB8fCBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFJlZlB0cjxGaWxlTGlzdD4g
ZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgZmlsZUxpc3Qt
PmFwcGVuZChGaWxlOjpjcmVhdGUobV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuYXQoaSkpKTsKKyAg
ICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgbV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuYXQoaSkpKTsKIAogICAgIHJldHVybiBmaWxlTGlz
dC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmgKaW5kZXggZmJlYmRlMi4uYTQxNTBkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKICAgICBjbGFzcyBDaHJvbWl1bURh
dGFPYmplY3Q7CisgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAKICAgICBj
bGFzcyBDbGlwYm9hcmRDaHJvbWl1bSA6IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7CkBAIC00NSw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgfkNsaXBib2FyZENocm9taXVtKCkge30KIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDbGlwYm9hcmRDaHJvbWl1bT4gY3JlYXRlKAotICAgICAgICAgICAgYm9vbCBpc0ZvckRyYWdn
aW5nLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGlj
eSk7CisgICAgICAgICAgICBib29sIGlzRm9yRHJhZ2dpbmcsIFBhc3NSZWZQdHI8Q2hyb21pdW1E
YXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIC8v
IFJldHVybnMgdGhlIGZpbGUgbmFtZSAobm90IGluY2x1ZGluZyB0aGUgZXh0ZW5zaW9uKS4gVGhp
cyByZW1vdmVzIGFueQogICAgICAgICAvLyBpbnZhbGlkIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMg
YXMgd2VsbCBhcyBtYWtpbmcgc3VyZSB0aGUKQEAgLTc5LDExICs4MCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBDbGlwYm9hcmRDaHJvbWl1bShib29sLCBQYXNzUmVmUHRyPENocm9taXVtRGF0
YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGljeSk7CisgICAgICAgIENsaXBib2FyZENocm9t
aXVtKGJvb2wsIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIHZvaWQgcmVzZXRGcm9tQ2xpcGJvYXJkKCk7CiAg
ICAgICAgIHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBv
aW50Jik7CiAgICAgICAgIFJlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IG1fZGF0YU9iamVjdDsK
KyAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVt
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKaW5k
ZXggMmMyMTUxYS4uNjc0ZDM0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9EcmFnRGF0YUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ry
YWdEYXRhQ2hyb21pdW0uY3BwCkBAIC0zMiw4ICszMiw2IEBACiAKICNpbmNsdWRlICJDaHJvbWl1
bUJyaWRnZS5oIgogI2luY2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgotI2luY2x1ZGUgIkNs
aXBib2FyZC5oIgotI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJLVVJM
LmgiCkBAIC00OCwxNCArNDYsNiBAQCBzdGF0aWMgYm9vbCBjb250YWluc0hUTUwoY29uc3QgQ2hy
b21pdW1EYXRhT2JqZWN0KiBkcm9wRGF0YSkKICAgICByZXR1cm4gZHJvcERhdGEtPnRleHRIdG1s
Lmxlbmd0aCgpID4gMDsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVh
dGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY29uc3QKLXsKLSAgICBS
ZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IGNsaXBib2FyZCA9IENsaXBib2FyZENocm9taXVtOjpj
cmVhdGUodHJ1ZSwKLSAgICAgICAgbV9wbGF0Zm9ybURyYWdEYXRhLCBwb2xpY3kpOwotCi0gICAg
cmV0dXJuIGNsaXBib2FyZC5yZWxlYXNlKCk7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAg
ICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvQ2xpcGJvYXJkRWZsLmNwcAppbmRleCA2ZWY1MWNmLi4xNjMzY2NiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL0NsaXBib2FyZEVmbC5jcHAKQEAgLTI3LDExICsyNywxNiBAQAogI2luY2x1ZGUgIlN0
cmluZ0hhc2guaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+
IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSopCiB7CiAgICAgcmV0dXJuIG5ldyBDbGlw
Ym9hcmRFZmwocG9saWN5LCBmYWxzZSk7CiB9CiAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlw
Ym9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQor
eworICAgIHJldHVybiAwOworfQorCiBDbGlwYm9hcmRFZmw6OkNsaXBib2FyZEVmbChDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQogICAgIDogQ2xpcGJvYXJk
KHBvbGljeSwgZm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9EcmFnRGF0YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAK
aW5kZXggZjZiNDQ2Yy4uYTg0NThkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
RHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNw
cApAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdE
YXRhLmgiCiAKLSNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKIApAQCAtNjEsMTEgKzYwLDYgQEAgQ29sb3Ig
RHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBDb2xvcigpOwogfQogCi1QYXNz
UmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDkyNGZhYmMuLjRjOWFlZGIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMTgsNiArMTgsNyBAQAogI2lu
Y2x1ZGUgIkNsaXBib2FyZEd0ay5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgpAQCAtMjcsNiArMjgsNyBAQAogI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KQEAgLTQzLDI0ICs0NSwzMSBAQCBlbnVtIENsaXBib2FyZFR5cGUgewogICAg
IENsaXBib2FyZFR5cGVVbmtub3duCiB9OwogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9y
OjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitQYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJk
R3RrOjpjcmVhdGUocG9saWN5LCBndGtfY2xpcGJvYXJkX2dldF9mb3JfZGlzcGxheShnZGtfZGlz
cGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCksIGZhbHNlKTsKKyAg
ICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUocG9saWN5LCBndGtfY2xpcGJvYXJkX2dldF9m
b3JfZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBC
T0FSRCksIGZhbHNlLCBmcmFtZSk7CiB9CiAKLUNsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkKQorUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqKQoreworICAgIHJldHVybiBDbGlw
Ym9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgdHJ1ZSk7
Cit9CisKK0NsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBGcmFtZSogZnJhbWUpCiAgICAgOiBDbGlw
Ym9hcmQocG9saWN5LCBmYWxzZSkKICAgICAsIG1fZGF0YU9iamVjdChEYXRhT2JqZWN0R3RrOjpm
b3JDbGlwYm9hcmQoY2xpcGJvYXJkKSkKICAgICAsIG1fY2xpcGJvYXJkKGNsaXBib2FyZCkKICAg
ICAsIG1faGVscGVyKFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmhlbHBlcigpKQor
ICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIAotQ2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGso
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBk
YXRhT2JqZWN0LCBib29sIGZvckRyYWdnaW5nKQorQ2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGso
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBk
YXRhT2JqZWN0LCBib29sIGZvckRyYWdnaW5nLCBGcmFtZSogZnJhbWUpCiAgICAgOiBDbGlwYm9h
cmQocG9saWN5LCBmb3JEcmFnZ2luZykKICAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQog
ICAgICwgbV9jbGlwYm9hcmQoMCkKICAgICAsIG1faGVscGVyKFBhc3RlYm9hcmQ6OmdlbmVyYWxQ
YXN0ZWJvYXJkKCktPmhlbHBlcigpKQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIApAQCAt
MjU1LDggKzI2NCw5IEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZEd0azo6ZmlsZXMo
KSBjb25zdAogICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRl
KCk7CiAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVZlY3RvcihtX2RhdGFPYmplY3QtPmZpbGVzKCkp
OwogCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZpbGVWZWN0b3Iuc2l6ZSgpOyBpKyspCi0gICAgICAgIGZpbGVM
aXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGZpbGVWZWN0b3JbaV0pKTsKKyAgICAgICAgZmlsZUxp
c3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZmlsZVZlY3Rv
cltpXSkpOwogCiAgICAgcmV0dXJuIGZpbGVMaXN0LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggYzM0MzhjNC4uNWI0MmFjNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTM0LDIwICszNCwyMSBAQCB0eXBlZGVmIHN0cnVjdCBfR3Rr
Q2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IENhY2hlZEltYWdlOworICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIFBhc3RlYm9hcmRIZWxw
ZXI7CiAKICAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFn
IGFuZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCiAgICAgLy8gQ3JlYXRlZCBmcm9tIHRoZSBFdmVudEhh
bmRsZXJHdGsgdG8gYmUgdXNlZCBieSB0aGUgZG9tCiAgICAgY2xhc3MgQ2xpcGJvYXJkR3RrIDog
cHVibGljIENsaXBib2FyZCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDbGlwYm9hcmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCwgYm9vbCBpc0ZvckRyYWdnaW5nKQorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDbGlwYm9hcmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgYm9vbCBpc0ZvckRyYWdnaW5nLCBGcmFtZSog
ZnJhbWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJv
YXJkR3RrKHBvbGljeSwgY2xpcGJvYXJkKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIGNsaXBib2FyZCwgZnJhbWUpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2Fy
ZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVj
dCwgYm9vbCBpc0ZvckRyYWdnaW5nKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9h
cmRHdGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERh
dGFPYmplY3RHdGs+IGRhdGFPYmplY3QsIGJvb2wgaXNGb3JEcmFnZ2luZywgRnJhbWUqIGZyYW1l
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEd0
ayhwb2xpY3ksIGRhdGFPYmplY3QsIGlzRm9yRHJhZ2dpbmcpKTsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgZGF0YU9iamVjdCwgaXNGb3JEcmFn
Z2luZywgZnJhbWUpKTsKICAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIH5DbGlwYm9hcmRHdGso
KTsKIApAQCAtNzcsMTIgKzc4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFz
c1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0KCkgeyByZXR1cm4gbV9kYXRhT2JqZWN0
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LCBHdGtDbGlwYm9hcmQqKTsKLSAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiwgYm9vbCk7CisgICAgICAgIENs
aXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEd0a0NsaXBib2FyZCosIEZyYW1lKik7
CisgICAgICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBhc3NSZWZQdHI8
RGF0YU9iamVjdEd0az4sIGJvb2wsIEZyYW1lKik7CiAKICAgICAgICAgUmVmUHRyPERhdGFPYmpl
Y3RHdGs+IG1fZGF0YU9iamVjdDsKICAgICAgICAgR3RrQ2xpcGJvYXJkKiBtX2NsaXBib2FyZDsK
ICAgICAgICAgUGFzdGVib2FyZEhlbHBlciogbV9oZWxwZXI7CisgICAgICAgIEZyYW1lKiBtX2Zy
YW1lOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdE
YXRhR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAppbmRleCA2
OGY3ZmZjLi42OTk2NmFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0
YUd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBAIC02
MiwxMSArNjIsNiBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJu
IENvbG9yKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xp
cGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IENsaXBib2FyZEd0azo6Y3JlYXRlKHBvbGljeSwgbV9wbGF0Zm9ybURyYWdEYXRhLCB0cnVlKTsK
LX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5UZXh0KCkgfHwgY29udGFpbnNVUkwoKSB8fCBtX3Bs
YXRmb3JtRHJhZ0RhdGEtPmhhc01hcmt1cCgpIHx8IGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWlu
c0ZpbGVzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhh
aWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFpa3UuY3BwCmluZGV4
IGY3M2JlMDEuLjQwMzQzZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xp
cGJvYXJkSGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ2xpcGJvYXJkSGFp
a3UuY3BwCkBAIC00Miw2ICs0MiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURjo6
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQoreworICAgIHJldHVybiBDbGlwYm9hcmRI
YWlrdTo6Y3JlYXRlKHBvbGljeSwgdHJ1ZSk7Cit9CisKIENsaXBib2FyZEhhaWt1OjpDbGlwYm9h
cmRIYWlrdShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQog
ICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9o
YWlrdS9EcmFnRGF0YUhhaWt1LmNwcAppbmRleCA3ZjQwYjhhLi43YzJkYzljIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAiQ2xpcGJv
YXJkSGFpa3UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJh
Z21lbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNzYsMTEgKzc1LDYgQEAg
Q29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBDb2xvcigpOwogfQog
Ci1XVEY6OlBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENsaXBib2Fy
ZEhhaWt1OjpjcmVhdGUocG9saWN5LCB0cnVlKTsKLX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnRhaW5zQ29sb3Io
KSB8fCBjb250YWluc1VSTCgpIHx8IGNvbnRhaW5zUGxhaW5UZXh0KCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9DbGlwYm9hcmRNYWMubW0KaW5kZXggZGRmYTBkNS4uMGNiYjNmNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0NsaXBib2FyZE1hYy5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiRE9NRWxlbWVu
dEludGVybmFsLmgiCiAjaW1wb3J0ICJEcmFnQ2xpZW50LmgiCiAjaW1wb3J0ICJEcmFnQ29udHJv
bGxlci5oIgorI2ltcG9ydCAiRHJhZ0RhdGEuaCIKICNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9y
dCAiRm91bmRhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCAiRmlsZUxpc3QuaCIKQEAgLTM3LDYgKzM4
LDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmQuaCIKICNpbXBvcnQg
IlJlbmRlckltYWdlLmgiCisjaW1wb3J0ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW1w
b3J0ICJTZWN1cml0eU9yaWdpbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogCkBAIC00Niw2ICs0OCwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIE5TVUludGVnZXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3Jl
YXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJh
bWUqIGZyYW1lKQoreworICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZSh0cnVlLCBbZHJh
Z0RhdGEtPnBsYXRmb3JtRGF0YSgpIGRyYWdnaW5nUGFzdGVib2FyZF0sIHBvbGljeSwgZnJhbWUp
OworfQorCiBDbGlwYm9hcmRNYWM6OkNsaXBib2FyZE1hYyhib29sIGZvckRyYWdnaW5nLCBOU1Bh
c3RlYm9hcmQgKnBhc3RlYm9hcmQsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1l
ICpmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQogICAgICwgbV9w
YXN0ZWJvYXJkKHBhc3RlYm9hcmQpCkBAIC0zMDYsMTEgKzMxMywxMiBAQCBQYXNzUmVmUHRyPEZp
bGVMaXN0PiBDbGlwYm9hcmRNYWM6OmZpbGVzKCkgY29uc3QKICAgICBOU0FycmF5ICphYnNvbHV0
ZVVSTHMgPSBhYnNvbHV0ZVVSTHNGcm9tUGFzdGVib2FyZEZpbGVuYW1lcyhtX3Bhc3RlYm9hcmQu
Z2V0KCkpOwogICAgIE5TVUludGVnZXIgY291bnQgPSBbYWJzb2x1dGVVUkxzIGNvdW50XTsKIAor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgUmVmUHRyPEZp
bGVMaXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKE5TVUludGVn
ZXIgeCA9IDA7IHggPCBjb3VudDsgeCsrKSB7CiAgICAgICAgIE5TVVJMICphYnNvbHV0ZVVSTCA9
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOlthYnNvbHV0ZVVSTHMgb2JqZWN0QXRJbmRleDp4XV07CiAg
ICAgICAgIEFTU0VSVChbYWJzb2x1dGVVUkwgaXNGaWxlVVJMXSk7Ci0gICAgICAgIGZpbGVMaXN0
LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKFthYnNvbHV0ZVVSTCBwYXRoXSkpOworICAgICAgICBmaWxl
TGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbYWJzb2x1
dGVVUkwgcGF0aF0pKTsKICAgICB9CiAgICAgcmV0dXJuIGZpbGVMaXN0LnJlbGVhc2UoKTsgLy8g
V2Ugd2lsbCBhbHdheXMgcmV0dXJuIGEgRmlsZUxpc3QsIHNvbWV0aW1lcyBlbXB0eQogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBmYTQxNmVkLi45Y2I0ODM2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtMjcsOCArMjcsNiBAQAogI2ltcG9ydCAiRHJh
Z0RhdGEuaCIKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0jaW1wb3J0ICJDbGlwYm9hcmRN
YWMuaCIKLSNpbXBvcnQgIkNsaXBib2FyZEFjY2Vzc1BvbGljeS5oIgogI2ltcG9ydCAiRG9jdW1l
bnQuaCIKICNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbXBvcnQgIkRPTURvY3VtZW50
RnJhZ21lbnQuaCIKQEAgLTEwMCwxMSArOTgsNiBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigp
IGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIChpbnQpKFtjb2xvciBibHVlQ29tcG9uZW50XSAq
IDI1NS4wICsgMC41KSwgKGludCkoW2NvbG9yIGFscGhhQ29tcG9uZW50XSAqIDI1NS4wICsgMC41
KSk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENsaXBi
b2FyZE1hYzo6Y3JlYXRlKHRydWUsIFttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJv
YXJkXSwgcG9saWN5LCAwKTsKLX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxl
Q29udGVudCgpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW21fcGxh
dGZvcm1EcmFnRGF0YSBkcmFnZ2luZ1Bhc3RlYm9hcmRdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcAppbmRleCA3ZDIyMzQ5Li42Y2E0ODMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1
ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmFn
RGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCkBAIC02OCw2ICs2OSwxMSBAQCBzdGF0aWMgYm9vbCBpc0h0bWxNaW1l
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHR5cGUgPT0gInRleHQvaHRtbCIg
fHwgdHlwZS5zdGFydHNXaXRoKCJ0ZXh0L2h0bWw7Iik7CiB9CiAKK1Bhc3NSZWZQdHI8Q2xpcGJv
YXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFn
RGF0YSogZHJhZ0RhdGEsIEZyYW1lKikKK3sKKyAgICByZXR1cm4gQ2xpcGJvYXJkUXQ6OmNyZWF0
ZShwb2xpY3ksIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSk7Cit9CisKIENsaXBib2FyZFF0OjpD
bGlwYm9hcmRRdChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBjb25zdCBRTWltZURhdGEq
IHJlYWRhYmxlQ2xpcGJvYXJkKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgdHJ1ZSkKICAgICAs
IG1fcmVhZGFibGVEYXRhKHJlYWRhYmxlQ2xpcGJvYXJkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFR
dC5jcHAKaW5kZXggODA4NjA2ZC4uNDAzMzEyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9EcmFnRGF0YVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQu
Y3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJh
Z0RhdGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZFF0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBA
IC0xMDAsMTEgKzk5LDYgQEAgQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgIHJl
dHVybiBxdmFyaWFudF9jYXN0PFFDb2xvcj4obV9wbGF0Zm9ybURyYWdEYXRhLT5jb2xvckRhdGEo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENsaXBi
b2FyZFF0OjpjcmVhdGUocG9saWN5LCBtX3BsYXRmb3JtRHJhZ0RhdGEpOwotfQotCiBib29sIERy
YWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cGxhdGZvcm1EcmFnRGF0YSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4
IDJjZDZmZWIuLmZhZDE2NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApA
QCAtMzkzLDE3ICszOTMsMjQgQEAgZXhpdDoKICAgICByZXR1cm4gaHI7CiB9CiAKLUNsaXBib2Fy
ZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRhdGFP
YmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2Fy
ZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRHJhZ0Rh
dGEqIGRyYWdEYXRhLCBGcmFtZSogZnJhbWUpCit7CisgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6
Y3JlYXRlKHRydWUsIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgcG9saWN5LCBmcmFtZSk7Cit9
CisKK0NsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFP
YmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBm
cmFtZSkKICAgICA6IENsaXBib2FyZChwb2xpY3ksIGlzRm9yRHJhZ2dpbmcpCiAgICAgLCBtX2Rh
dGFPYmplY3QoZGF0YU9iamVjdCkKICAgICAsIG1fd3JpdGFibGVEYXRhT2JqZWN0KDApCisgICAg
LCBtX2ZyYW1lKGZyYW1lKQogewogfQogCi1DbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihib29s
IGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSkKK0NsaXBib2FyZFdpbjo6Q2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFn
Z2luZywgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBGcmFtZSogZnJhbWUpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBpc0ZvckRyYWdnaW5n
KQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9i
amVjdChkYXRhT2JqZWN0KQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIApAQCAtNTg5LDEy
ICs1OTYsMTMgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkV2luOjpmaWxlcygpIGNv
bnN0CiAgICAgaWYgKCFoZHJvcCkKICAgICAgICAgcmV0dXJuIGZpbGVzLnJlbGVhc2UoKTsKIAor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgV0NIQVIgZmls
ZW5hbWVbTUFYX1BBVEhdOwogICAgIFVJTlQgZmlsZUNvdW50ID0gRHJhZ1F1ZXJ5RmlsZVcoaGRy
b3AsIDB4RkZGRkZGRkYsIDAsIDApOwogICAgIGZvciAoVUlOVCBpID0gMDsgaSA8IGZpbGVDb3Vu
dDsgaSsrKSB7CiAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIGksIGZpbGVuYW1l
LCBBUlJBWVNJWkUoZmlsZW5hbWUpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBm
aWxlcy0+YXBwZW5kKEZpbGU6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oZmlsZW5h
bWUpKSk7CisgICAgICAgIGZpbGVzLT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihmaWxlbmFtZSkpKTsKICAgICB9CiAK
ICAgICBHbG9iYWxVbmxvY2sobWVkaXVtLmhHbG9iYWwpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmggYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uaAppbmRleCAxYjEzOWVkLi42YTA4MDg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uaApAQCAtMzUsMTkgKzM1LDIwIEBAIHN0cnVjdCBJRGF0YU9iamVjdDsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1hZ2U7CitjbGFzcyBGcmFtZTsKIGNsYXNzIElu
dFBvaW50OwogY2xhc3MgV0NEYXRhT2JqZWN0OwogCiAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5n
IElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCiBjbGFzcyBDbGlw
Ym9hcmRXaW4gOiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJv
b2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3kpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVh
dGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0YU9iamVjdCwgcG9s
aWN5KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJh
Z2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFP
YmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkV2luPiBjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLCBX
Q0RhdGFPYmplY3QqIGRhdGFPYmplY3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZy
YW1lKiBmcmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJk
V2luKGlzRm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xp
Y3ksIGZyYW1lKSk7CiAgICAgfQogICAgIH5DbGlwYm9hcmRXaW4oKTsKIApAQCAtNzYsOCArNzcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFeHRlcm5hbERhdGFPYmplY3QoSURhdGFPYmplY3Qg
KmRhdGFPYmplY3QpOwogCiBwcml2YXRlOgotICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJh
Z2dpbmcsIElEYXRhT2JqZWN0KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5KTsKLSAgICBDbGlwYm9h
cmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kpOworICAgIENsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2JqZWN0
KiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOworICAgIENsaXBib2FyZFdpbihib29s
IGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJh
bWUqKTsKIAogICAgIHZvaWQgcmVzZXRGcm9tQ2xpcGJvYXJkKCk7CiAgICAgdm9pZCBzZXREcmFn
SW1hZ2UoQ2FjaGVkSW1hZ2UqLCBOb2RlKiwgY29uc3QgSW50UG9pbnQmKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdEYXRhV2luLmNwcAppbmRleCA4MmU1MzdlLi4wNWY5MTAzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC0yNiw5ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZFdpbi5oIgog
I2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgotI2luY2x1ZGUgIkNsaXBib2FyZEFj
Y2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIk1hcmt1cC5oIgpAQCAtMzksMTEgKzM3LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6
OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAotewot
ICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBtX3BsYXRmb3JtRHJhZ0RhdGEs
IHBvbGljeSk7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gU1VDQ0VFREVE
KG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKHVybFdGb3JtYXQoKSkpIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRWRpdG9yV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0VkaXRvcldpbi5jcHAKaW5kZXggMDlhYmRiZC4uMDc1ODI3ZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRWRpdG9yV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9FZGl0b3JXaW4uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJk
V2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKQEAgLTM4LDEzICszOSwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6
Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NS
ZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogewogICAgIENPTVB0cjxJRGF0YU9iamVj
dD4gY2xpcGJvYXJkRGF0YTsKICAgICBpZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9hcmQoJmNs
aXBib2FyZERhdGEpKSkKICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IDA7CiAKLSAgICByZXR1cm4g
Q2xpcGJvYXJkV2luOjpjcmVhdGUoZmFsc2UsIGNsaXBib2FyZERhdGEuZ2V0KCksIHBvbGljeSk7
CisgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKGZhbHNlLCBjbGlwYm9hcmREYXRhLmdl
dCgpLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5jcHAKaW5kZXggNWYyYTdiYS4uNzNkZDhhMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCkBAIC0yMSwxNyArMjEs
MTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5j
bHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQogYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25z
dAogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvRWRpdG9yV2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9FZGl0b3JXaW5jZS5j
cHAKaW5kZXggMDJhZjc4MC4uNzFmNGRiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93
aW5jZS9FZGl0b3JXaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9FZGl0b3JX
aW5jZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5l
cmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZFdpbmNlKHBvbGljeSwgZmFsc2UpKTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAKaW5kZXggNjEwMDgzMS4uMjViZWY1NSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS93eC9DbGlwYm9hcmRXeC5jcHAKQEAgLTM3LDYgKzM3LDExIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNy
ZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQoreworICAgIHJl
dHVybiAwOworfQorCiBDbGlwYm9hcmRXeDo6Q2xpcGJvYXJkV3goQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgYm9vbCBmb3JEcmFnZ2luZykgCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBm
b3JEcmFnZ2luZykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFX
eC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCmluZGV4IDI3OGYxMjMu
LjM1ZTM3NTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcApAQCAtMjYsNyArMjYsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRl
ICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
RnJhZ21lbnQuaCIKIApAQCAtNjYsMTEgKzY1LDYgQEAgQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3Io
KSBjb25zdAogICAgIHJldHVybiBDb2xvcigpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4g
RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIDA7Ci19Ci0gICAgCiBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGli
bGVDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7Cg==
</data>
<flag name="commit-queue"
          id="50549"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62464</attachid>
            <date>2010-07-23 14:47:59 -0700</date>
            <delta_ts>2010-07-23 16:12:53 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>40587_6</filename>
            <type>text/plain</type>
            <size>56198</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzYzZDU2OS4uZmJiN2IxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMTAtMDctMjIgIEppYW4gTGkgIDxq
aWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFyZ3VtZW50IHRvIEZpbGUv
QmxvYiBjb25zdHJ1Y3RvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDU4NworCisgICAgICAgIFJlbW92ZSBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJv
YXJkIGFuZCBhZGQgQ2xpcGJvYXJkOjpjcmVhdGUgZm9yIGl0IHRvIGJlCisgICAgICAgIGNhbGxl
ZCBkaXJlY3RseSBpbiBEcmFnQ29udHJvbGxlci4gVGhpcyBpcyBiZWNhdXNlIHdlIG5lZWQgdG8g
cGFzcworICAgICAgICBGcmFtZSBwb2ludGVyIHRvIENsaXBib2FyZCBjbGFzcyBhbmQgdXNlIGl0
IHRvIGdldCBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGluIG9yZGVyIHRvIGNvbnN0
cnVjdCBGaWxlIG9iamVjdHNpbiBDbGlwYm9hcmQ6OmZpbGVzKCkuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVz
ZXJpYWxpemluZ1RyZWVXYWxrZXI6OmNvbnZlcnRJZlRlcm1pbmFsKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Wmln
WmFnOjpSZWFkZXI6OnJlYWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlppZ1phZzo6UmVhZGVy
OjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpaaWdaYWc6OlJlYWRlcjo6cmVhZEZpbGVM
aXN0KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvYW5kcm9pZC9FZGl0
b3JBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBi
b2FyZCk6CisgICAgICAgICogZWRpdGluZy9icmV3L0VkaXRvckJyZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5n
L2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlr
dS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9xdC9FZGl0b3JR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvd3gvRWRpdG9yV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBodG1sL0Jsb2IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGlj
ZSk6CisgICAgICAgICogaHRtbC9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvQmxvYi5pZGw6CisgICAgICAgICogaHRtbC9CbG9iQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRlcjo6Z2V0QmxvYik6CisgICAgICAg
ICogaHRtbC9CbG9iQnVpbGRlci5oOgorICAgICAgICAqIGh0bWwvQmxvYkJ1aWxkZXIuaWRsOgor
ICAgICAgICAqIGh0bWwvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToK
KyAgICAgICAgKiBodG1sL0ZpbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdl
L0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJh
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAg
ICAgICAgKiBwYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAg
ICAqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL3dpbi9F
dmVudEhhbmRsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVh
dGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQv
RHJhZ0RhdGFBbmRyb2lkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJy
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2JyZXcvRHJhZ0RhdGFCcmV3LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Q2xpcGJvYXJk
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZWZs
L0NsaXBib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxD
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxD
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGspOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkR3RrOjpmaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaGFp
a3UvQ2xpcGJvYXJkSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OmZpbGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpDbGlwYm9hcmRXaW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpmaWxlcyk6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2lu
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0RyYWdE
YXRhV2luY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAg
ICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwOgorCiAy
MDEwLTA3LTIyICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDkwZjhkN2MuLjZkNmZhMjEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTczNiwxOCArNzM2LDIzIEBA
IHN0cnVjdCBEZXNlcmlhbGl6aW5nVHJlZVdhbGtlciA6IHB1YmxpYyBCYXNlV2Fsa2VyIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIobV9leGVjLCB2YWx1ZS5hc0RvdWJsZSgpKTsK
ICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6RGF0ZVR5cGU6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9leGVjKSBEYXRlSW5zdGFuY2UobV9leGVjLCBt
X2dsb2JhbE9iamVjdC0+ZGF0ZVN0cnVjdHVyZSgpLCB2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAg
ICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6RmlsZVR5cGU6CisgICAgICAg
ICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkZpbGVUeXBlOiB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBzdGF0
aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgRmlsZTo6Y3JlYXRl
KHZhbHVlLmFzU3RyaW5nKCkuY3Jvc3NUaHJlYWRTdHJpbmcoKSkpOworICAgICAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9KUyhtX2V4ZWMsIHN0
YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxPYmplY3QpLCBGaWxlOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdmFsdWUuYXNTdHJpbmcoKS5jcm9zc1RocmVhZFN0
cmluZygpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGE6OkZpbGVMaXN0VHlwZTogewogICAgICAgICAgICAgICAgIGlmICghbV9pc0RP
TUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAg
ICAgICAgICAgICAgIFJlZlB0cjxGaWxlTGlzdD4gcmVzdWx0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRGaWxlTGlzdCogc2VyaWFsaXplZEZpbGVMaXN0
ID0gdmFsdWUuYXNGaWxlTGlzdCgpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHNlcmlhbGl6ZWRGaWxlTGlzdC0+bGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNl
cmlhbGl6ZWRGaWxlTGlzdC0+aXRlbShpKSkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQt
PmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2VyaWFsaXplZEZp
bGVMaXN0LT5pdGVtKGkpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgcmVzdWx0Lmdl
dCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6SW1hZ2VEYXRhVHlwZTogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDQ3YzRjMmUuLjlkYzRkMGYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJWOEZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiVjhJbWFnZURhdGEuaCIKICNpbmNs
dWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTg1NCw3ICs4
NTUsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgcGF0aDsKICAgICAgICAgaWYgKCFyZWFk
V2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IFBhc3NSZWZQdHI8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShwYXRoKTsKKyAgICAgICAgUGFz
c1JlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgcGF0aCk7CiAgICAgICAgICp2YWx1ZSA9IHRvVjgoYmxvYik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTg2NCw3ICs4NjUsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJp
bmcgcGF0aDsKICAgICAgICAgaWYgKCFyZWFkV2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIFBhc3NSZWZQdHI8RmlsZT4gZmlsZSA9IEZpbGU6
OmNyZWF0ZShwYXRoKTsKKyAgICAgICAgUGFzc1JlZlB0cjxGaWxlPiBmaWxlID0gRmlsZTo6Y3Jl
YXRlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcGF0aCk7CiAgICAgICAgICp2YWx1ZSA9
IHRvVjgoZmlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTg3OSw3ICs4ODAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3RyaW5nIHBhdGg7CiAgICAgICAgICAgICBpZiAo
IXJlYWRXZWJDb3JlU3RyaW5nKCZwYXRoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShwYXRoKSk7CisgICAg
ICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHBhdGgpKTsKICAgICAgICAgfQogICAgICAgICAqdmFsdWUgPSB0b1Y4KGZpbGVM
aXN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuaCBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCmluZGV4IDQwMThlNGYuLjA1NjIyODAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCisrKyBiL1dlYkNvcmUvZG9tL0Ns
aXBib2FyZC5oCkBAIC0zMywxMSArMzMsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgY2xhc3MgRHJhZ0RhdGE7CiAgICAgY2xhc3MgRmlsZUxpc3Q7CisgICAgY2xhc3MgRnJhbWU7
CiAKICAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFu
ZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCiAgICAgY2xhc3MgQ2xpcGJvYXJkIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2xpcGJvYXJkPiB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJh
bWUqKTsKKwogICAgICAgICB2aXJ0dWFsIH5DbGlwYm9hcmQoKSB7IH0KIAogICAgICAgICAvLyBJ
cyB0aGlzIG9wZXJhdGlvbiBhIGRyYWctZHJvcCBvciBhIGNvcHktcGFzdGU/CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IDc3M2VkOTAuLmZlYWE3NWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC03MTIsNyArNzEyLDcg
QEAgYm9vbCBFZGl0b3I6OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nICZldmVu
dFR5cGUsIENsaXBib2FyZEFjY2Vzc1BvbGkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgdGFy
Z2V0ID0gdGFyZ2V0LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICAKLSAgICBSZWZQdHI8Q2xp
cGJvYXJkPiBjbGlwYm9hcmQgPSBuZXdHZW5lcmFsQ2xpcGJvYXJkKHBvbGljeSk7CisgICAgUmVm
UHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gbmV3R2VuZXJhbENsaXBib2FyZChwb2xpY3ksIG1f
ZnJhbWUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPEV2ZW50PiBl
dnQgPSBDbGlwYm9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgY2xpcGJv
YXJkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCBjZDFiMjA0Li5kYjI0OWU3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC00Miw2
ICs0Miw3IEBAIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFu
ZDsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRvckludGVybmFsQ29tbWFuZDsKK2Ns
YXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xh
c3MgS2lsbFJpbmc7CkBAIC0zMDksNyArMzEwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2Fu
RGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKLSAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gbmV3R2Vu
ZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOworICAgIFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUq
KTsKICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKik7
CiAgICAgdm9pZCBwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxh
aW5UZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJl
cGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvYW5k
cm9pZC9FZGl0b3JBbmRyb2lkLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9hbmRyb2lkL0VkaXRvckFu
ZHJvaWQuY3BwCmluZGV4IDhlMDAzMjYuLjYxY2NlMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRp
dGluZy9hbmRyb2lkL0VkaXRvckFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9hbmRy
b2lkL0VkaXRvckFuZHJvaWQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSopCiB7CiAgICAgcmV0dXJuIG5ldyBDbGlwYm9hcmRBbmRyb2lkKHBvbGljeSwgZmFsc2Up
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcAppbmRleCBiNjEwYjYyLi40YTFmNGQ3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dl
bmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgRnJhbWUqKQogewogICAgIHJldHVybiBuZXcgQ2xpcGJvYXJkQnJldyhwb2xp
Y3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0
b3JDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0u
Y3BwCmluZGV4IDFlYTA4NWIuLjdhMTNiMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9j
aHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVt
L0VkaXRvckNocm9taXVtLmNwcApAQCAtMzMsMTIgKzMzLDEzIEBACiAKICNpbmNsdWRlICJDaHJv
bWl1bURhdGFPYmplY3QuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRDaHJvbWl1bS5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJu
IENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoZmFsc2UsIENocm9taXVtRGF0YU9iamVjdDo6Y3Jl
YXRlKCksIHBvbGljeSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoZmFs
c2UsIENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCksIHBvbGljeSwgZnJhbWUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaGFpa3Uv
RWRpdG9ySGFpa3UuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcApp
bmRleCA3MjNkNGZmLi40NTk2YzllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaGFpa3Uv
RWRpdG9ySGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlrdS5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRy
PENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xp
cGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1
cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0ZShwb2xpY3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KaW5kZXggY2EwMDFhMi4uMmM1YTYwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFs
Q2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsK
LSAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoZmFsc2UsIFtOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdLCBwb2xpY3ksIDApOworICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNy
ZWF0ZShmYWxzZSwgW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0sIHBvbGljeSwgZnJh
bWUpOwogfQogCiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvcXQvRWRpdG9yUXQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0
LmNwcAppbmRleCBlNzRlMmYzLi43ZmIzNjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
cXQvRWRpdG9yUXQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9xdC9FZGl0b3JRdC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBi
b2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1cm4gQ2xp
cGJvYXJkUXQ6OmNyZWF0ZShwb2xpY3kpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L3d4L0VkaXRvcld4LmNwcCBiL1dlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JXeC5jcHAKaW5kZXgg
Y2I5ZTgzNi4uYTJlYzY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL3d4L0VkaXRvcld4
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRv
cjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSAKK1Bh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqKSAKIHsgCiAgICAgcmV0dXJuIENsaXBib2FyZFd4
OjpjcmVhdGUocG9saWN5LCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9i
LmNwcCBiL1dlYkNvcmUvaHRtbC9CbG9iLmNwcAppbmRleCAwNjgwZDgyLi5hNDFmYjJlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvQmxvYi5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2IuY3Bw
CkBAIC0zNiwxOSArMzYsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CbG9iOjpCbG9i
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxvYkl0ZW1MaXN0JiBpdGVtcykKK0Jsb2I6OkJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxv
Ykl0ZW1MaXN0JiBpdGVtcykKICAgICA6IG1fdHlwZSh0eXBlKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1faXRlbXMuYXBwZW5kKGl0
ZW1zW2ldKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBQYXNzUmVmUHRyPEJsb2JJdGVtPiYgaXRl
bSkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFBhc3NSZWZQdHI8
QmxvYkl0ZW0+JiBpdGVtKQogewogICAgIG1faXRlbXMuYXBwZW5kKGl0ZW0pOwogfQogCi1CbG9i
OjpCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICAvLyBOb3RlOiB0aGlzIGRvZXNuJ3Qg
aW5pdGlhbGl6ZSB0aGUgdHlwZSB1bmxpa2UgRmlsZShwYXRoKS4KICAgICBtX2l0ZW1zLmFwcGVu
ZChGaWxlQmxvYkl0ZW06OmNyZWF0ZShwYXRoKSk7CkBAIC03MSw3ICs3MSw3IEBAIGNvbnN0IFN0
cmluZyYgQmxvYjo6cGF0aCgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKLVBh
c3NSZWZQdHI8QmxvYj4gQmxvYjo6c2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBjb25zdAorUGFzc1JlZlB0cjxCbG9iPiBC
bG9iOjpzbGljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0YXJ0IDwgMCkKICAgICAgICAgc3RhcnQgPSAwOwpA
QCAtOTUsNyArOTUsNyBAQCBQYXNzUmVmUHRyPEJsb2I+IEJsb2I6OnNsaWNlKGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICBsZW5ndGgg
LT0gaXRlbXMubGFzdCgpLT5zaXplKCk7CiAgICAgICAgIHN0YXJ0ID0gMDsKICAgICB9Ci0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZW50VHlwZSwgaXRlbXMpOworICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29udGVudFR5cGUsIGl0ZW1zKTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoQkxPQl9TTElDRSkKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0Jsb2IuaCBiL1dlYkNvcmUvaHRtbC9CbG9iLmgKaW5kZXggZjU1MjZjNy4uMTJjY2NhNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2IuaAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYi5oCkBA
IC0zOSwxOSArMzksMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworCiBjbGFzcyBCbG9iIDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYgaXRlbXMpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxvYkl0ZW1MaXN0JiBpdGVtcykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYih0eXBlLCBpdGVtcykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlw
ZSwgaXRlbXMpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRGVwcmVjYXRlZCBtZXRob2QuICBU
aGlzIGlzIGNhbGxlZCBvbmx5IGZyb20KICAgICAvLyBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGFuZCB0aGUgdXNhZ2UgaW4gaXQgd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNl
CiAgICAgLy8gQmxvYkJ1aWxkZXIgaXMgaW50cm9kdWNlZC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxCbG9iPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEJsb2IocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Ioc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgcGF0aCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkJsb2IoKSB7
IH0KQEAgLTY2LDE1ICs2OCwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmxvYkl0ZW1MaXN0JiBp
dGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXM7IH0KIAogI2lmIEVOQUJMRShCTE9CX1NMSUNF
KQotICAgIFBhc3NSZWZQdHI8QmxvYj4gc2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8QmxvYj4gc2xpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IFN0
cmluZygpKSBjb25zdDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgQmxvYihjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYpOwotICAgIEJsb2IoY29uc3QgUGFzc1JlZlB0
cjxCbG9iSXRlbT4mKTsKKyAgICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYpOworICAgIEJsb2IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFBhc3NSZWZQdHI8QmxvYkl0ZW0+Jik7CiAKICAgICAvLyBGSVhN
RTogRGVwcmVjYXRlZCBjb25zdHJ1Y3Rvci4gIFNlZSBhbHNvIHRoZSBjb21tZW50IGZvciBCbG9i
OjpjcmVhdGUocGF0aCkuCi0gICAgQmxvYihjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEJsb2Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICBCbG9i
SXRlbUxpc3QgbV9pdGVtczsKICAgICBTdHJpbmcgbV90eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0Jsb2IuaWRsIGIvV2ViQ29yZS9odG1sL0Jsb2IuaWRsCmluZGV4IDBhZTI3NTkuLjYy
NmJiNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9CbG9iLmlkbAorKysgYi9XZWJDb3JlL2h0
bWwvQmxvYi5pZGwKQEAgLTM0LDggKzM0LDEwIEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplOwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykKICNpZiBkZWZpbmVkKEVOQUJMRV9CTE9CX1NMSUNFKSAmJiBFTkFCTEVfQkxPQl9T
TElDRQotICAgICAgICBCbG9iIHNsaWNlKGluIGxvbmcgbG9uZyBzdGFydCwgaW4gbG9uZyBsb25n
IGxlbmd0aCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgY29udGVudFR5cGUpOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gQmxvYiBzbGljZShpbiBsb25nIGxvbmcgc3RhcnQsIGluIGxvbmcgbG9uZyBs
ZW5ndGgsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKKyNlbmRpZgogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9CbG9iQnVp
bGRlci5jcHAKaW5kZXggYjI2ODRmYy4uMDU5MmZmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0Jsb2JCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuY3BwCkBAIC04
MSw5ICs4MSw5IEBAIGJvb2wgQmxvYkJ1aWxkZXI6OmFwcGVuZChQYXNzUmVmUHRyPEJsb2I+IGJs
b2IpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEJsb2I+IEJsb2JCdWlsZGVy
OjpnZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CitQYXNzUmVmUHRyPEJs
b2I+IEJsb2JCdWlsZGVyOjpnZXRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZW50VHlwZSwgbV9pdGVtcyk7CisgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb250ZW50VHlwZSwgbV9pdGVtcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9C
bG9iQnVpbGRlci5oIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKaW5kZXggMTE3M2MwNC4u
NWQxNzAwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKKysrIGIvV2Vi
Q29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQmxvYjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJv
b2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBlbmRpbmcsIEV4Y2Vw
dGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8QmxvYj4gZ2V0QmxvYihjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QmxvYj4gZ2V0
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9
IFN0cmluZygpKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBCbG9iSXRlbUxpc3QgbV9pdGVtczsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5pZGwgYi9XZWJDb3JlL2h0bWwv
QmxvYkJ1aWxkZXIuaWRsCmluZGV4IDkzY2I4N2YuLjUzYzdhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9CbG9iQnVpbGRlci5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmlk
bApAQCAtMzQsNyArMzQsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEdlbmVyYXRlTmF0aXZl
Q29udmVydGVyLAogICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gQmxvYkJ1aWxkZXIgewot
ICAgICAgICBCbG9iIGdldEJsb2IoaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgY29udGVudFR5cGUpOworI2lmICFkZWZpbmVkKExBTkdV
QUdFX09CSkVDVElWRV9DKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gQmxvYiBnZXRCbG9iKGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKKyNlbmRpZgogICAgICAgICB2b2lkIGFw
cGVuZChpbiBCbG9iIGJsb2IpOwogICAgICAgICB2b2lkIGFwcGVuZChpbiBET01TdHJpbmcgdmFs
dWUsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9N
U3RyaW5nIGVuZGluZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0ZpbGUuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGUuY3BwCmluZGV4IDQw
MDBkY2IuLjEwOWUwZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvRmlsZS5jcHAKQEAgLTMxLDE1ICszMSwxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogQmxvYihwYXRo
KQorRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgOiBCbG9iKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIHBhdGgpCiB7CiAgICAgSW5pdCgpOwogfQogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExP
QUQpCi1GaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQotICAgIDogQmxvYihGaWxlQmxvYkl0ZW06OmNyZWF0ZShmaWxlUGF0aCwgcmVs
YXRpdmVQYXRoKSkKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCisgICAgOiBCbG9iKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZpbGVCbG9iSXRl
bTo6Y3JlYXRlKGZpbGVQYXRoLCByZWxhdGl2ZVBhdGgpKQogewogICAgIEluaXQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlLmggYi9XZWJDb3JlL2h0bWwvRmlsZS5oCmluZGV4
IGQ2ODU0NzIuLmMwYWVjYzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlLmgKKysrIGIv
V2ViQ29yZS9odG1sL0ZpbGUuaApAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRmlsZSA6IHB1YmxpYyBCbG9iIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZpbGUocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcGF0aCkpOwogICAgIH0KIAogI2lmIEVOQUJMRShESVJF
Q1RPUllfVVBMT0FEKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5nJiBwYXRo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHJlbGF0aXZlUGF0aCwg
cGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgcmVsYXRpdmVQYXRoLCBwYXRoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTU5LDEx
ICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGZpbGVTaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
cGF0aCk7CiAgICAgdm9pZCBJbml0KCk7CiAKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
LSAgICBGaWxlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVQYXRoLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggMDBkYzUwMy4uNWJiZTRkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjphcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sIG11bHRpcGFydCkKICAgICAg
ICAgLy8gSWYgbm8gZmlsZW5hbWUgYXQgYWxsIGlzIGVudGVyZWQsIHJldHVybiBzdWNjZXNzZnVs
IGJ1dCBlbXB0eS4KICAgICAgICAgLy8gTnVsbCB3b3VsZCBiZSBtb3JlIGxvZ2ljYWwsIGJ1dCBO
ZXRzY2FwZSBwb3N0cyBhbiBlbXB0eSBmaWxlLiBBcmdoLgogICAgICAgICBpZiAoIW51bUZpbGVz
KSB7Ci0gICAgICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKG5hbWUoKSwgRmlsZTo6Y3JlYXRl
KCIiKSk7CisgICAgICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKG5hbWUoKSwgRmlsZTo6Y3Jl
YXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIiIpKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTE5OTksMTUgKzE5OTksMTUgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRGaWxlTGlzdEZyb21SZW5kZXJlcihjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7
CiAgICAgICAgICAgICAvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgdG8gc2xhc2hlcyBiZWZvcmUg
ZXhwb3NpbmcgdGhlIHJlbGF0aXZlIHBhdGggdG8gc2NyaXB0LgogICAgICAgICAgICAgU3RyaW5n
IHJlbGF0aXZlUGF0aCA9IHBhdGhzW2ldLnN1YnN0cmluZygxICsgcm9vdFBhdGgubGVuZ3RoKCkp
LnJlcGxhY2UoJ1xcJywnLycpOwotICAgICAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6
OmNyZWF0ZShyZWxhdGl2ZVBhdGgsIHBhdGhzW2ldKSk7CisgICAgICAgICAgICBtX2ZpbGVMaXN0
LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgcmVsYXRpdmVQYXRoLCBwYXRoc1tpXSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgICAgICBtX2ZpbGVM
aXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldKSk7CisgICAgICAgICAgICBtX2ZpbGVM
aXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgcGF0aHNbaV0pKTsKICAgICB9CiAjZWxzZQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKQotICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhz
W2ldKSk7CisgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoZG9jdW1lbnQo
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBwYXRoc1tpXSkpOwogI2VuZGlmCiAKICAgICBz
ZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKaW5kZXggNzE2NzcyYi4uZDkzYTI1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBA
IC0xNzAsNyArMTcwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChEcmFnRGF0
YSogZHJhZ0RhdGEpCiAKICAgICBpZiAoUmVmUHRyPEZyYW1lVmlldz4gdiA9IG1haW5GcmFtZS0+
dmlldygpKSB7CiAgICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kgPSAoIW1fZG9j
dW1lbnRVbmRlck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigp
LT5pc0xvY2FsKCkpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBDbGlwYm9hcmRUeXBlc1JlYWRhYmxl
OwotICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRl
Q2xpcGJvYXJkKHBvbGljeSk7CisgICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9
IENsaXBib2FyZDo6Y3JlYXRlKHBvbGljeSwgZHJhZ0RhdGEsIG1haW5GcmFtZSk7CiAgICAgICAg
IGNsaXBib2FyZC0+c2V0U291cmNlT3BlcmF0aW9uKGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2soKSk7CiAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmNhbmNl
bERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkp
OwogICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsgICAg
Ly8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKQEAgLTE5Myw3ICsxOTMs
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEp
CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbWFpbkZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsK
ICAgICAgICAgaWYgKG1haW5GcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICAvLyBTZW5kaW5n
IGFuIGV2ZW50IGNhbiByZXN1bHQgaW4gdGhlIGRlc3RydWN0aW9uIG9mIHRoZSB2aWV3IGFuZCBw
YXJ0LgotICAgICAgICAgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gZHJhZ0RhdGEt
PmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRSZWFkYWJsZSk7CisgICAgICAgICAgICBSZWZQdHI8
Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRSZWFkYWJs
ZSwgZHJhZ0RhdGEsIG1haW5GcmFtZS5nZXQoKSk7CiAgICAgICAgICAgICBjbGlwYm9hcmQtPnNl
dFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkp
OwogICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cGVyZm9ybURyYWdBbmRE
cm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkpOwogICAgICAg
ICAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkTnVtYik7ICAgIC8vIGlu
dmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CkBAIC01MjQsNyArNTI0LDcgQEAg
Ym9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYXRhKiBkcmFnRGF0YSwgRHJh
Z09wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5ID0gbV9kb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5
T3JpZ2luKCktPmlzTG9jYWwoKSA/IENsaXBib2FyZFJlYWRhYmxlIDogQ2xpcGJvYXJkVHlwZXNS
ZWFkYWJsZTsKLSAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3Jl
YXRlQ2xpcGJvYXJkKHBvbGljeSk7CisgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0g
Q2xpcGJvYXJkOjpjcmVhdGUocG9saWN5LCBkcmFnRGF0YSwgbWFpbkZyYW1lLmdldCgpKTsKICAg
ICBEcmFnT3BlcmF0aW9uIHNyY09wTWFzayA9IGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soKTsKICAgICBjbGlwYm9hcmQtPnNldFNvdXJjZU9wZXJhdGlvbihzcmNPcE1hc2sp
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21p
dW0uY3BwIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcApp
bmRleCBmZjE2MWFmLi43MTkxNjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0v
RXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVu
dEhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNv
bnN0CiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0Ns
aXBib2FyZCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9i
amVjdCA9IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIENsaXBib2Fy
ZENocm9taXVtOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFi
bGUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKHRydWUsIGRhdGFPYmpl
Y3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKIH0KIAogdm9pZCBFdmVudEhh
bmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ndGsv
RXZlbnRIYW5kbGVyR3RrLmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNw
cAppbmRleCAwZmY2N2QyLi40MjlhZWE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZ3RrL0V2
ZW50SGFuZGxlckd0ay5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsu
Y3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCogd2lkCiAKIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUs
IERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpLCB0cnVlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkR3Rr
OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpLCB0cnVl
LCBtX2ZyYW1lKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRU
b1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZy
YW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwIGIv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCmluZGV4IGUxZDViZTkuLmVlNGIz
NjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9h
cmQoKSBjb25zdAogI2Vsc2UKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBkYXRhT2JqZWN0Owog
ICAgIFdDRGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3QpOwotICAgIHJldHVy
biBDbGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBkYXRhT2JqZWN0LmdldCgpLCBDbGlwYm9hcmRX
cml0YWJsZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUsIGRhdGFPYmpl
Y3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmgKaW5kZXggZDY2ODk2My4uMGUyNmY5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtMjYs
NyArMjYsNiBAQAogI2lmbmRlZiBEcmFnRGF0YV9oCiAjZGVmaW5lIERyYWdEYXRhX2gKIAotI2lu
Y2x1ZGUgIkNsaXBib2FyZEFjY2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgpAQCAtOTUsNyArOTQs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KICAgICAgICAgRHJh
Z0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRh
OyB9CiAgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KLSAgICAgICAg
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgICAgICBi
b29sIGNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNDb21w
YXRpYmxlQ29udGVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRy
b2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBi
b2FyZEFuZHJvaWQuY3BwCmluZGV4IDM3NWY5ODAuLmQ5YjJkNjggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAKQEAgLTM1LDYgKzM1LDExIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6
Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRHJhZ0RhdGEqLCBGcmFtZSopCit7CisgICAg
cmV0dXJuIDA7Cit9CisKIENsaXBib2FyZEFuZHJvaWQ6OkNsaXBib2FyZEFuZHJvaWQoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKQogICAgIDogQ2xpcGJv
YXJkKHBvbGljeSwgaXNGb3JEcmFnZ2luZykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lk
L0RyYWdEYXRhQW5kcm9pZC5jcHAKaW5kZXggNzU2ZDAwNy4uNGU5OWIyYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAi
Q2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCiAKQEAgLTU4LDExICs1Nyw2IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkg
Y29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KICAgICAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QK
LXsKLSAgICByZXR1cm4gMDsKLX0KLSAgICAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0
aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
YnJldy9DbGlwYm9hcmRCcmV3LmNwcAppbmRleCAzZmQwODVhLi43MjBkNmE2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCkBAIC0zNiw2ICszNiwxMSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0
ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQoreworICAgIHJldHVy
biAwOworfQorCiBDbGlwYm9hcmRCcmV3OjpDbGlwYm9hcmRCcmV3KENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIGJvb2wgaXNGb3JEcmFnZ2luZykKICAgICA6IENsaXBib2FyZChwb2xpY3ks
IGlzRm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvRHJh
Z0RhdGFCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9EcmFnRGF0YUJyZXcuY3BwCmlu
ZGV4IGVlYzhiYzQuLmQxMTRmZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9E
cmFnRGF0YUJyZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9EcmFnRGF0YUJyZXcu
Y3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJh
Z0RhdGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCkBAIC01OCwxMSArNTcsNiBAQCBDb2xv
ciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLVBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQogYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRl
eCA4YWFkOGFhLi4wNjI0NGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNocm9taXVt
RGF0YU9iamVjdC5oIgogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC00
Myw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJtYXJrdXAu
aCIKIApAQCAtODksMTggKzkxLDI1IEBAIHN0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBjbGlwYm9h
cmRUeXBlRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gQ2xpcGJv
YXJkRGF0YVR5cGVPdGhlcjsKIH0KIAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6
Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwg
RnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKHRy
dWUsIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgcG9saWN5LCBmcmFtZSk7Cit9CisKIENsaXBi
b2FyZENocm9taXVtOjpDbGlwYm9hcmRDaHJvbWl1bShib29sIGlzRm9yRHJhZ2dpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFP
YmplY3Q+IGRhdGFPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xp
Y3ksIGlzRm9yRHJhZ2dpbmcpCiAgICAgLCBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKKyAgICAs
IG1fZnJhbWUoZnJhbWUpCiB7CiB9CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IENs
aXBib2FyZENocm9taXVtOjpjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLAotICAgIFBhc3NSZWZQ
dHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5KQorICAgIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0LCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRDaHJvbWl1bShpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0
LCBwb2xpY3kpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGlz
Rm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKIH0KIAogdm9pZCBDbGlw
Ym9hcmRDaHJvbWl1bTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTM1NSw5ICsz
NjQsMTAgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKCkg
Y29uc3QKICAgICBpZiAoIW1fZGF0YU9iamVjdCB8fCBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFJlZlB0cjxGaWxlTGlzdD4g
ZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgZmlsZUxpc3Qt
PmFwcGVuZChGaWxlOjpjcmVhdGUobV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuYXQoaSkpKTsKKyAg
ICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgbV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuYXQoaSkpKTsKIAogICAgIHJldHVybiBmaWxlTGlz
dC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmgKaW5kZXggZmJlYmRlMi4uYTQxNTBkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKICAgICBjbGFzcyBDaHJvbWl1bURh
dGFPYmplY3Q7CisgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAKICAgICBj
bGFzcyBDbGlwYm9hcmRDaHJvbWl1bSA6IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7CkBAIC00NSw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgfkNsaXBib2FyZENocm9taXVtKCkge30KIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDbGlwYm9hcmRDaHJvbWl1bT4gY3JlYXRlKAotICAgICAgICAgICAgYm9vbCBpc0ZvckRyYWdn
aW5nLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGlj
eSk7CisgICAgICAgICAgICBib29sIGlzRm9yRHJhZ2dpbmcsIFBhc3NSZWZQdHI8Q2hyb21pdW1E
YXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIC8v
IFJldHVybnMgdGhlIGZpbGUgbmFtZSAobm90IGluY2x1ZGluZyB0aGUgZXh0ZW5zaW9uKS4gVGhp
cyByZW1vdmVzIGFueQogICAgICAgICAvLyBpbnZhbGlkIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMg
YXMgd2VsbCBhcyBtYWtpbmcgc3VyZSB0aGUKQEAgLTc5LDExICs4MCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBDbGlwYm9hcmRDaHJvbWl1bShib29sLCBQYXNzUmVmUHRyPENocm9taXVtRGF0
YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGljeSk7CisgICAgICAgIENsaXBib2FyZENocm9t
aXVtKGJvb2wsIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIHZvaWQgcmVzZXRGcm9tQ2xpcGJvYXJkKCk7CiAg
ICAgICAgIHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBv
aW50Jik7CiAgICAgICAgIFJlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IG1fZGF0YU9iamVjdDsK
KyAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVt
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKaW5k
ZXggMmMyMTUxYS4uNjc0ZDM0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9EcmFnRGF0YUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ry
YWdEYXRhQ2hyb21pdW0uY3BwCkBAIC0zMiw4ICszMiw2IEBACiAKICNpbmNsdWRlICJDaHJvbWl1
bUJyaWRnZS5oIgogI2luY2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgotI2luY2x1ZGUgIkNs
aXBib2FyZC5oIgotI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJLVVJM
LmgiCkBAIC00OCwxNCArNDYsNiBAQCBzdGF0aWMgYm9vbCBjb250YWluc0hUTUwoY29uc3QgQ2hy
b21pdW1EYXRhT2JqZWN0KiBkcm9wRGF0YSkKICAgICByZXR1cm4gZHJvcERhdGEtPnRleHRIdG1s
Lmxlbmd0aCgpID4gMDsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVh
dGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY29uc3QKLXsKLSAgICBS
ZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IGNsaXBib2FyZCA9IENsaXBib2FyZENocm9taXVtOjpj
cmVhdGUodHJ1ZSwKLSAgICAgICAgbV9wbGF0Zm9ybURyYWdEYXRhLCBwb2xpY3kpOwotCi0gICAg
cmV0dXJuIGNsaXBib2FyZC5yZWxlYXNlKCk7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAg
ICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvQ2xpcGJvYXJkRWZsLmNwcAppbmRleCA2ZWY1MWNmLi4xNjMzY2NiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL0NsaXBib2FyZEVmbC5jcHAKQEAgLTI3LDExICsyNywxNiBAQAogI2luY2x1ZGUgIlN0
cmluZ0hhc2guaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+
IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSopCiB7CiAgICAgcmV0dXJuIG5ldyBDbGlw
Ym9hcmRFZmwocG9saWN5LCBmYWxzZSk7CiB9CiAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlw
Ym9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQor
eworICAgIHJldHVybiAwOworfQorCiBDbGlwYm9hcmRFZmw6OkNsaXBib2FyZEVmbChDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQogICAgIDogQ2xpcGJvYXJk
KHBvbGljeSwgZm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9EcmFnRGF0YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAK
aW5kZXggZjZiNDQ2Yy4uYTg0NThkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
RHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNw
cApAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdE
YXRhLmgiCiAKLSNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKIApAQCAtNjEsMTEgKzYwLDYgQEAgQ29sb3Ig
RHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBDb2xvcigpOwogfQogCi1QYXNz
UmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDkyNGZhYmMuLjM1Y2IxZTEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMTgsNiArMTgsNyBAQAogI2lu
Y2x1ZGUgIkNsaXBib2FyZEd0ay5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgpAQCAtMjcsNiArMjgsNyBAQAogI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KQEAgLTQzLDI0ICs0NSwzMSBAQCBlbnVtIENsaXBib2FyZFR5cGUgewogICAg
IENsaXBib2FyZFR5cGVVbmtub3duCiB9OwogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9y
OjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitQYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJk
R3RrOjpjcmVhdGUocG9saWN5LCBndGtfY2xpcGJvYXJkX2dldF9mb3JfZGlzcGxheShnZGtfZGlz
cGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCksIGZhbHNlKTsKKyAg
ICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUocG9saWN5LCBndGtfY2xpcGJvYXJkX2dldF9m
b3JfZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBC
T0FSRCksIGZhbHNlLCBmcmFtZSk7CiB9CiAKLUNsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkKQorUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lKQoreworICAgIHJldHVy
biBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwg
dHJ1ZSwgZnJhbWUpOworfQorCitDbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0ayhDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqIGZyYW1l
KQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZmFsc2UpCiAgICAgLCBtX2RhdGFPYmplY3QoRGF0
YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCkpCiAgICAgLCBtX2NsaXBib2FyZChj
bGlwYm9hcmQpCiAgICAgLCBtX2hlbHBlcihQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgp
LT5oZWxwZXIoKSkKKyAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CiB9CiAKLUNsaXBib2FyZEd0azo6
Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0
YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBmb3JEcmFnZ2luZykKK0NsaXBib2FyZEd0azo6
Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0
YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBmb3JEcmFnZ2luZywgRnJhbWUqIGZyYW1lKQog
ICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCiAgICAgLCBtX2RhdGFPYmplY3Qo
ZGF0YU9iamVjdCkKICAgICAsIG1fY2xpcGJvYXJkKDApCiAgICAgLCBtX2hlbHBlcihQYXN0ZWJv
YXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5oZWxwZXIoKSkKKyAgICAsIG1fZnJhbWUoZnJhbWUp
CiB7CiB9CiAKQEAgLTI1NSw4ICsyNjQsOSBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9h
cmRHdGs6OmZpbGVzKCkgY29uc3QKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZSgpOwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVWZWN0b3IobV9kYXRhT2Jq
ZWN0LT5maWxlcygpKTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVmVjdG9yLnNpemUoKTsgaSsrKQot
ICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShmaWxlVmVjdG9yW2ldKSk7Cisg
ICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGZpbGVWZWN0b3JbaV0pKTsKIAogICAgIHJldHVybiBmaWxlTGlzdC5yZWxlYXNlKCk7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCmluZGV4IGMzNDM4YzQuLjViNDJhYzYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCkBAIC0zNCwyMCArMzQsMjEgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKKyAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBQ
YXN0ZWJvYXJkSGVscGVyOwogCiAgICAgLy8gU3RhdGUgYXZhaWxhYmxlIGR1cmluZyBJRSdzIGV2
ZW50cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29weS9wYXN0ZQogICAgIC8vIENyZWF0ZWQgZnJv
bSB0aGUgRXZlbnRIYW5kbGVyR3RrIHRvIGJlIHVzZWQgYnkgdGhlIGRvbQogICAgIGNsYXNzIENs
aXBib2FyZEd0ayA6IHB1YmxpYyBDbGlwYm9hcmQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGJvb2wgaXNGb3JEcmFnZ2luZykKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGJvb2wgaXNGb3JEcmFn
Z2luZywgRnJhbWUqIGZyYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIGNsaXBib2FyZCkpOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBjbGlwYm9hcmQsIGZyYW1lKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRHdGs+IGNy
ZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RH
dGs+IGRhdGFPYmplY3QsIGJvb2wgaXNGb3JEcmFnZ2luZykKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
UGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0LCBib29sIGlzRm9yRHJhZ2dpbmcs
IEZyYW1lKiBmcmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDbGlwYm9hcmRHdGsocG9saWN5LCBkYXRhT2JqZWN0LCBpc0ZvckRyYWdnaW5nKSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIGRhdGFPYmpl
Y3QsIGlzRm9yRHJhZ2dpbmcsIGZyYW1lKSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
Q2xpcGJvYXJkR3RrKCk7CiAKQEAgLTc3LDEyICs3OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCgpIHsgcmV0dXJu
IG1fZGF0YU9iamVjdDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQ2xpcGJvYXJkR3RrKENs
aXBib2FyZEFjY2Vzc1BvbGljeSwgR3RrQ2xpcGJvYXJkKik7Ci0gICAgICAgIENsaXBib2FyZEd0
ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4sIGJvb2wp
OworICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBHdGtDbGlwYm9h
cmQqLCBGcmFtZSopOworICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LCBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+LCBib29sLCBGcmFtZSopOwogCiAgICAgICAgIFJl
ZlB0cjxEYXRhT2JqZWN0R3RrPiBtX2RhdGFPYmplY3Q7CiAgICAgICAgIEd0a0NsaXBib2FyZCog
bV9jbGlwYm9hcmQ7CiAgICAgICAgIFBhc3RlYm9hcmRIZWxwZXIqIG1faGVscGVyOworICAgICAg
ICBGcmFtZSogbV9mcmFtZTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0
ay5jcHAKaW5kZXggNjhmN2ZmYy4uNjk5NjZhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0RhdGFHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRh
R3RrLmNwcApAQCAtNjIsMTEgKzYyLDYgQEAgQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25z
dAogICAgIHJldHVybiBDb2xvcigpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0Rh
dGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAot
ewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIG1fcGxhdGZvcm1EcmFn
RGF0YSwgdHJ1ZSk7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRl
bnQoKSBjb25zdAogewogICAgIHJldHVybiBjb250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5z
VVJMKCkgfHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSB8fCBjb250YWluc0NvbG9y
KCkgfHwgY29udGFpbnNGaWxlcygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlr
dS9DbGlwYm9hcmRIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhh
aWt1LmNwcAppbmRleCBmNzNiZTAxLi40MDM0M2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1
L0NsaXBib2FyZEhhaWt1LmNwcApAQCAtNDIsNiArNDIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitXVEY6OlBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSosIEZyYW1lKikKK3sKKyAgICByZXR1
cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0ZShwb2xpY3ksIHRydWUpOworfQorCiBDbGlwYm9hcmRI
YWlrdTo6Q2xpcGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBm
b3JEcmFnZ2luZykKICAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAKaW5kZXggN2Y0MGI4YS4uN2MyZGM5
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCkBAIC0yNyw3ICsy
Nyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKIAotI2lu
Y2x1ZGUgIkNsaXBib2FyZEhhaWt1LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTc2
LDExICs3NSw2IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4g
Q29sb3IoKTsKIH0KIAotV1RGOjpQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0
ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAotewotICAgIHJl
dHVybiBDbGlwYm9hcmRIYWlrdTo6Y3JlYXRlKHBvbGljeSwgdHJ1ZSk7Ci19Ci0KIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBj
b250YWluc0NvbG9yKCkgfHwgY29udGFpbnNVUkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IGRkZmEwZDUuLjBjYmIzZjYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBv
cnQgIkRPTUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRHJhZ0NsaWVudC5oIgogI2ltcG9y
dCAiRHJhZ0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIkRyYWdEYXRhLmgiCiAjaW1wb3J0ICJFZGl0
b3IuaCIKICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgIkZpbGVMaXN0Lmgi
CkBAIC0zNyw2ICszOCw3IEBACiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJk
LmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgorI2ltcG9ydCAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKIApAQCAtNDYsNiArNDgsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBOU1VJ
bnRlZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBD
bGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSog
ZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVh
dGUodHJ1ZSwgW2RyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSBkcmFnZ2luZ1Bhc3RlYm9hcmRdLCBw
b2xpY3ksIGZyYW1lKTsKK30KKwogQ2xpcGJvYXJkTWFjOjpDbGlwYm9hcmRNYWMoYm9vbCBmb3JE
cmFnZ2luZywgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5LCBGcmFtZSAqZnJhbWUpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFnZ2lu
ZykKICAgICAsIG1fcGFzdGVib2FyZChwYXN0ZWJvYXJkKQpAQCAtMzA2LDExICszMTMsMTIgQEAg
UGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkTWFjOjpmaWxlcygpIGNvbnN0CiAgICAgTlNB
cnJheSAqYWJzb2x1dGVVUkxzID0gYWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxlbmFtZXMo
bV9wYXN0ZWJvYXJkLmdldCgpKTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Fic29sdXRlVVJM
cyBjb3VudF07CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChOU1VJbnRlZ2VyIHggPSAwOyB4IDwgY291bnQ7IHgrKykgewogICAgICAgICBOU1VSTCAq
YWJzb2x1dGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbYWJzb2x1dGVVUkxzIG9iamVjdEF0
SW5kZXg6eF1dOwogICAgICAgICBBU1NFUlQoW2Fic29sdXRlVVJMIGlzRmlsZVVSTF0pOwotICAg
ICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShbYWJzb2x1dGVVUkwgcGF0aF0pKTsK
KyAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgW2Fic29sdXRlVVJMIHBhdGhdKSk7CiAgICAgfQogICAgIHJldHVybiBmaWxlTGlzdC5y
ZWxlYXNlKCk7IC8vIFdlIHdpbGwgYWx3YXlzIHJldHVybiBhIEZpbGVMaXN0LCBzb21ldGltZXMg
ZW1wdHkKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1t
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggZmE0MTZlZC4uOWNi
NDgzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTI3LDggKzI3LDYgQEAK
ICNpbXBvcnQgIkRyYWdEYXRhLmgiCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotI2ltcG9y
dCAiQ2xpcGJvYXJkTWFjLmgiCi0jaW1wb3J0ICJDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCIKICNp
bXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW1wb3J0
ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCkBAIC0xMDAsMTEgKzk4LDYgQEAgQ29sb3IgRHJhZ0Rh
dGE6OmFzQ29sb3IoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAoaW50KShbY29sb3IgYmx1
ZUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBhbHBoYUNvbXBvbmVudF0g
KiAyNTUuMCArIDAuNSkpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNy
ZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAotewotICAg
IHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZSh0cnVlLCBbbV9wbGF0Zm9ybURyYWdEYXRhIGRy
YWdnaW5nUGFzdGVib2FyZF0sIHBvbGljeSwgMCk7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCA9IFttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5jcHAKaW5kZXggN2QyMjM0OS4uNmNhNDgzMCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDU1NIZWxw
ZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRmls
ZUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNjgsNiArNjksMTEgQEAgc3RhdGljIGJv
b2wgaXNIdG1sTWltZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB0eXBlID09
ICJ0ZXh0L2h0bWwiIHx8IHR5cGUuc3RhcnRzV2l0aCgidGV4dC9odG1sOyIpOwogfQogCitQYXNz
UmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgRHJhZ0RhdGEqIGRyYWdEYXRhLCBGcmFtZSopCit7CisgICAgcmV0dXJuIENsaXBi
b2FyZFF0OjpjcmVhdGUocG9saWN5LCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCkpOworfQorCiBD
bGlwYm9hcmRRdDo6Q2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgY29u
c3QgUU1pbWVEYXRhKiByZWFkYWJsZUNsaXBib2FyZCkKICAgICA6IENsaXBib2FyZChwb2xpY3ks
IHRydWUpCiAgICAgLCBtX3JlYWRhYmxlRGF0YShyZWFkYWJsZUNsaXBib2FyZCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0RyYWdEYXRhUXQuY3BwCmluZGV4IDgwODYwNmQuLjQwMzMxMjMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9EcmFnRGF0YVF0LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRlICJDbGlwYm9hcmRRdC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUg
Im1hcmt1cC5oIgpAQCAtMTAwLDExICs5OSw2IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkg
Y29uc3QKICAgICByZXR1cm4gcXZhcmlhbnRfY2FzdDxRQ29sb3I+KG1fcGxhdGZvcm1EcmFnRGF0
YS0+Y29sb3JEYXRhKCkpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNy
ZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAotewotICAg
IHJldHVybiBDbGlwYm9hcmRRdDo6Y3JlYXRlKHBvbGljeSwgbV9wbGF0Zm9ybURyYWdEYXRhKTsK
LX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcAppbmRleCAyY2Q2ZmViLi5mYWQxNjQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFdpbi5jcHAKQEAgLTM5MywxNyArMzkzLDI0IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhyOwog
fQogCi1DbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRh
T2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiBD
bGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCksIHBvbGlj
eSwgZnJhbWUpOworfQorCitDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihib29sIGlzRm9yRHJh
Z2dpbmcsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBGcmFtZSogZnJhbWUpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBpc0ZvckRyYWdnaW5n
KQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9i
amVjdCgwKQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIAotQ2xpcGJvYXJkV2luOjpDbGlw
Ym9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqIGRhdGFPYmplY3QsIENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihi
b29sIGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwg
aXNGb3JEcmFnZ2luZykKICAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV93
cml0YWJsZURhdGFPYmplY3QoZGF0YU9iamVjdCkKKyAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CiB9
CiAKQEAgLTU4OSwxMiArNTk2LDEzIEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZFdp
bjo6ZmlsZXMoKSBjb25zdAogICAgIGlmICghaGRyb3ApCiAgICAgICAgIHJldHVybiBmaWxlcy5y
ZWxlYXNlKCk7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIFdDSEFSIGZpbGVuYW1lW01BWF9QQVRIXTsKICAgICBVSU5UIGZpbGVDb3VudCA9IERyYWdR
dWVyeUZpbGVXKGhkcm9wLCAweEZGRkZGRkZGLCAwLCAwKTsKICAgICBmb3IgKFVJTlQgaSA9IDA7
IGkgPCBmaWxlQ291bnQ7IGkrKykgewogICAgICAgICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9w
LCBpLCBmaWxlbmFtZSwgQVJSQVlTSVpFKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgZmlsZXMtPmFwcGVuZChGaWxlOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxV
Q2hhcio+KGZpbGVuYW1lKSkpOworICAgICAgICBmaWxlcy0+YXBwZW5kKEZpbGU6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCByZWludGVycHJldF9jYXN0PFVDaGFyKj4oZmlsZW5hbWUp
KSk7CiAgICAgfQogCiAgICAgR2xvYmFsVW5sb2NrKG1lZGl1bS5oR2xvYmFsKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmgKaW5kZXggMWIxMzllZC4uNmEwODA4NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmgKQEAgLTM1LDE5ICszNSwyMCBAQCBzdHJ1Y3QgSURhdGFPYmpl
Y3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZEltYWdlOworY2xhc3MgRnJh
bWU7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIFdDRGF0YU9iamVjdDsKIAogLy8gU3RhdGUgYXZh
aWxhYmxlIGR1cmluZyBJRSdzIGV2ZW50cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29weS9wYXN0
ZQogY2xhc3MgQ2xpcGJvYXJkV2luIDogcHVibGljIENsaXBib2FyZCwgcHVibGljIENhY2hlZFJl
c291cmNlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRX
aW4+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBi
b2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRhdGFPYmpl
Y3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRh
dGFPYmplY3QsIHBvbGljeSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2Fy
ZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgfQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFn
Z2luZywgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNG
b3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3kpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0
YU9iamVjdCwgcG9saWN5LCBmcmFtZSkpOwogICAgIH0KICAgICB+Q2xpcGJvYXJkV2luKCk7CiAK
QEAgLTc2LDggKzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0RXh0ZXJuYWxEYXRhT2JqZWN0
KElEYXRhT2JqZWN0ICpkYXRhT2JqZWN0KTsKIAogcHJpdmF0ZToKLSAgICBDbGlwYm9hcmRXaW4o
Ym9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSk7
Ci0gICAgQ2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiwgQ2xp
cGJvYXJkQWNjZXNzUG9saWN5KTsKKyAgICBDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5n
LCBJRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICBDbGlw
Ym9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3ksIEZyYW1lKik7CiAKICAgICB2b2lkIHJlc2V0RnJvbUNsaXBib2FyZCgpOwogICAg
IHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50Jik7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggODJlNTM3ZS4uMDVmOTEwMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMjYsOSArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRlICJDbGlw
Ym9hcmRXaW4uaCIKICNpbmNsdWRlICJDbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCIKLSNpbmNsdWRl
ICJDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJNYXJrdXAuaCIKQEAgLTM5
LDExICszNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSkgY29uc3QKLXsKLSAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUodHJ1ZSwgbV9wbGF0
Zm9ybURyYWdEYXRhLCBwb2xpY3kpOwotfQotCiBib29sIERyYWdEYXRhOjpjb250YWluc1VSTChG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YSh1cmxXRm9ybWF0
KCkpKSAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwCmluZGV4IDA5YWJkYmQuLjA3NTgyN2Qg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRWRpdG9yV2luLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkNsaXBib2FyZFdpbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNp
bmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCkBAIC0z
OCwxMyArMzksMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBi
b2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKICAgICBDT01Q
dHI8SURhdGFPYmplY3Q+IGNsaXBib2FyZERhdGE7CiAgICAgaWYgKCFTVUNDRUVERUQoT2xlR2V0
Q2xpcGJvYXJkKCZjbGlwYm9hcmREYXRhKSkpCiAgICAgICAgIGNsaXBib2FyZERhdGEgPSAwOwog
Ci0gICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKGZhbHNlLCBjbGlwYm9hcmREYXRhLmdl
dCgpLCBwb2xpY3kpOworICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0ZShmYWxzZSwgY2xp
cGJvYXJkRGF0YS5nZXQoKSwgcG9saWN5LCBmcmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCmluZGV4IDVmMmE3
YmEuLjczZGQ4YTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFX
aW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcApA
QCAtMjEsMTcgKzIxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0Rh
dGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFt
ZVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2Uv
RWRpdG9yV2luY2UuY3BwCmluZGV4IDAyYWY3ODAuLjcxZjRkYjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vd2luY2UvRWRpdG9yV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
d2luY2UvRWRpdG9yV2luY2UuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSopCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW5jZShwb2xpY3ks
IGZhbHNlKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwCmluZGV4IDYxMDA4MzEu
LjI1YmVmNTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwCkBAIC0zNyw2ICszNywx
MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCitQYXNzUmVmUHRyPENsaXBib2FyZD4g
Q2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFnRGF0YSosIEZyYW1l
KikKK3sKKyAgICByZXR1cm4gMDsKK30KKwogQ2xpcGJvYXJkV3g6OkNsaXBib2FyZFd4KENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpIAogICAgIDogQ2xpcGJv
YXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L0RyYWdEYXRhV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcApp
bmRleCAyNzhmMTIzLi4zNWUzNzUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0Ry
YWdEYXRhV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5o
IgogCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAKQEAgLTY2LDExICs2NSw2IEBAIENvbG9yIERyYWdE
YXRhOjphc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5KSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotICAgIAogYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwo=
</data>
<flag name="commit-queue"
          id="50674"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62471</attachid>
            <date>2010-07-23 16:12:53 -0700</date>
            <delta_ts>2010-07-26 16:42:33 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>40587_7</filename>
            <type>text/plain</type>
            <size>56198</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzYzZDU2OS4uZmJiN2IxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTggQEAKKzIwMTAtMDctMjIgIEppYW4gTGkgIDxq
aWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFyZ3VtZW50IHRvIEZpbGUv
QmxvYiBjb25zdHJ1Y3RvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDU4NworCisgICAgICAgIFJlbW92ZSBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJv
YXJkIGFuZCBhZGQgQ2xpcGJvYXJkOjpjcmVhdGUgZm9yIGl0IHRvIGJlCisgICAgICAgIGNhbGxl
ZCBkaXJlY3RseSBpbiBEcmFnQ29udHJvbGxlci4gVGhpcyBpcyBiZWNhdXNlIHdlIG5lZWQgdG8g
cGFzcworICAgICAgICBGcmFtZSBwb2ludGVyIHRvIENsaXBib2FyZCBjbGFzcyBhbmQgdXNlIGl0
IHRvIGdldCBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIGluIG9yZGVyIHRvIGNvbnN0
cnVjdCBGaWxlIG9iamVjdHNpbiBDbGlwYm9hcmQ6OmZpbGVzKCkuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVz
ZXJpYWxpemluZ1RyZWVXYWxrZXI6OmNvbnZlcnRJZlRlcm1pbmFsKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Wmln
WmFnOjpSZWFkZXI6OnJlYWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlppZ1phZzo6UmVhZGVy
OjpyZWFkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpaaWdaYWc6OlJlYWRlcjo6cmVhZEZpbGVM
aXN0KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvYW5kcm9pZC9FZGl0
b3JBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBi
b2FyZCk6CisgICAgICAgICogZWRpdGluZy9icmV3L0VkaXRvckJyZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBlZGl0aW5n
L2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlr
dS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICogZWRpdGluZy9xdC9FZGl0b3JR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvd3gvRWRpdG9yV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAgICAgKiBodG1sL0Jsb2IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzbGlj
ZSk6CisgICAgICAgICogaHRtbC9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvQmxvYi5pZGw6CisgICAgICAgICogaHRtbC9CbG9iQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRlcjo6Z2V0QmxvYik6CisgICAgICAg
ICogaHRtbC9CbG9iQnVpbGRlci5oOgorICAgICAgICAqIGh0bWwvQmxvYkJ1aWxkZXIuaWRsOgor
ICAgICAgICAqIGh0bWwvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpGaWxlKToK
KyAgICAgICAgKiBodG1sL0ZpbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBwYWdl
L0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnRXhpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJh
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAg
ICAgICAgKiBwYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAg
ICAqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwYWdlL3dpbi9F
dmVudEhhbmRsZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjcmVh
dGVEcmFnZ2luZ0NsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQv
RHJhZ0RhdGFBbmRyb2lkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9icmV3L0NsaXBib2FyZEJy
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2JyZXcvRHJhZ0RhdGFCcmV3LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6Q2xpcGJvYXJk
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6ZmlsZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmg6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZWZs
L0NsaXBib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxD
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxD
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGspOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkR3RrOjpmaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaGFp
a3UvQ2xpcGJvYXJkSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OmZpbGVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpDbGlwYm9hcmRXaW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpmaWxlcyk6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2lu
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0RyYWdE
YXRhV2luY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAg
ICogcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwOgorCiAy
MDEwLTA3LTIyICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDkwZjhkN2MuLjZkNmZhMjEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTczNiwxOCArNzM2LDIzIEBA
IHN0cnVjdCBEZXNlcmlhbGl6aW5nVHJlZVdhbGtlciA6IHB1YmxpYyBCYXNlV2Fsa2VyIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIobV9leGVjLCB2YWx1ZS5hc0RvdWJsZSgpKTsK
ICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6RGF0ZVR5cGU6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9leGVjKSBEYXRlSW5zdGFuY2UobV9leGVjLCBt
X2dsb2JhbE9iamVjdC0+ZGF0ZVN0cnVjdHVyZSgpLCB2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAg
ICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6RmlsZVR5cGU6CisgICAgICAg
ICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkZpbGVUeXBlOiB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBzdGF0
aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgRmlsZTo6Y3JlYXRl
KHZhbHVlLmFzU3RyaW5nKCkuY3Jvc3NUaHJlYWRTdHJpbmcoKSkpOworICAgICAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9KUyhtX2V4ZWMsIHN0
YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxPYmplY3QpLCBGaWxlOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdmFsdWUuYXNTdHJpbmcoKS5jcm9zc1RocmVhZFN0
cmluZygpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGE6OkZpbGVMaXN0VHlwZTogewogICAgICAgICAgICAgICAgIGlmICghbV9pc0RP
TUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAg
ICAgICAgICAgICAgIFJlZlB0cjxGaWxlTGlzdD4gcmVzdWx0ID0gRmlsZUxpc3Q6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRGaWxlTGlzdCogc2VyaWFsaXplZEZpbGVMaXN0
ID0gdmFsdWUuYXNGaWxlTGlzdCgpOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHNlcmlhbGl6ZWRGaWxlTGlzdC0+bGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNl
cmlhbGl6ZWRGaWxlTGlzdC0+aXRlbShpKSkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQt
PmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc2VyaWFsaXplZEZp
bGVMaXN0LT5pdGVtKGkpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9leGVjLCBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KSwgcmVzdWx0Lmdl
dCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6SW1hZ2VEYXRhVHlwZTogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDQ3YzRjMmUuLjlkYzRkMGYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJWOEZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiVjhJbWFnZURhdGEuaCIKICNpbmNs
dWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTg1NCw3ICs4
NTUsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmcgcGF0aDsKICAgICAgICAgaWYgKCFyZWFk
V2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IFBhc3NSZWZQdHI8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShwYXRoKTsKKyAgICAgICAgUGFz
c1JlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgcGF0aCk7CiAgICAgICAgICp2YWx1ZSA9IHRvVjgoYmxvYik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTg2NCw3ICs4NjUsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJp
bmcgcGF0aDsKICAgICAgICAgaWYgKCFyZWFkV2ViQ29yZVN0cmluZygmcGF0aCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIFBhc3NSZWZQdHI8RmlsZT4gZmlsZSA9IEZpbGU6
OmNyZWF0ZShwYXRoKTsKKyAgICAgICAgUGFzc1JlZlB0cjxGaWxlPiBmaWxlID0gRmlsZTo6Y3Jl
YXRlKGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcGF0aCk7CiAgICAgICAgICp2YWx1ZSA9
IHRvVjgoZmlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTg3OSw3ICs4ODAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3RyaW5nIHBhdGg7CiAgICAgICAgICAgICBpZiAo
IXJlYWRXZWJDb3JlU3RyaW5nKCZwYXRoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShwYXRoKSk7CisgICAg
ICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHBhdGgpKTsKICAgICAgICAgfQogICAgICAgICAqdmFsdWUgPSB0b1Y4KGZpbGVM
aXN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuaCBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCmluZGV4IDQwMThlNGYuLjA1NjIyODAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCisrKyBiL1dlYkNvcmUvZG9tL0Ns
aXBib2FyZC5oCkBAIC0zMywxMSArMzMsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgY2xhc3MgRHJhZ0RhdGE7CiAgICAgY2xhc3MgRmlsZUxpc3Q7CisgICAgY2xhc3MgRnJhbWU7
CiAKICAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFu
ZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCiAgICAgY2xhc3MgQ2xpcGJvYXJkIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2xpcGJvYXJkPiB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJh
bWUqKTsKKwogICAgICAgICB2aXJ0dWFsIH5DbGlwYm9hcmQoKSB7IH0KIAogICAgICAgICAvLyBJ
cyB0aGlzIG9wZXJhdGlvbiBhIGRyYWctZHJvcCBvciBhIGNvcHktcGFzdGU/CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IDc3M2VkOTAuLmZlYWE3NWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC03MTIsNyArNzEyLDcg
QEAgYm9vbCBFZGl0b3I6OmRpc3BhdGNoQ1BQRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nICZldmVu
dFR5cGUsIENsaXBib2FyZEFjY2Vzc1BvbGkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgdGFy
Z2V0ID0gdGFyZ2V0LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICAKLSAgICBSZWZQdHI8Q2xp
cGJvYXJkPiBjbGlwYm9hcmQgPSBuZXdHZW5lcmFsQ2xpcGJvYXJkKHBvbGljeSk7CisgICAgUmVm
UHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gbmV3R2VuZXJhbENsaXBib2FyZChwb2xpY3ksIG1f
ZnJhbWUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPEV2ZW50PiBl
dnQgPSBDbGlwYm9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgY2xpcGJv
YXJkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCBjZDFiMjA0Li5kYjI0OWU3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC00Miw2
ICs0Miw3IEBAIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFu
ZDsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRvckludGVybmFsQ29tbWFuZDsKK2Ns
YXNzIEZyYW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xh
c3MgS2lsbFJpbmc7CkBAIC0zMDksNyArMzEwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2Fu
RGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQ
YXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKLSAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gbmV3R2Vu
ZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpOworICAgIFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUq
KTsKICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKik7
CiAgICAgdm9pZCBwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sIGFsbG93UGxh
aW5UZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJl
cGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvYW5k
cm9pZC9FZGl0b3JBbmRyb2lkLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9hbmRyb2lkL0VkaXRvckFu
ZHJvaWQuY3BwCmluZGV4IDhlMDAzMjYuLjYxY2NlMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRp
dGluZy9hbmRyb2lkL0VkaXRvckFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9hbmRy
b2lkL0VkaXRvckFuZHJvaWQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSopCiB7CiAgICAgcmV0dXJuIG5ldyBDbGlwYm9hcmRBbmRyb2lkKHBvbGljeSwgZmFsc2Up
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2JyZXcvRWRpdG9yQnJldy5jcHAgYi9X
ZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcAppbmRleCBiNjEwYjYyLi40YTFmNGQ3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvYnJldy9FZGl0b3JCcmV3LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dl
bmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSwgRnJhbWUqKQogewogICAgIHJldHVybiBuZXcgQ2xpcGJvYXJkQnJldyhwb2xp
Y3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0
b3JDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21pdW0u
Y3BwCmluZGV4IDFlYTA4NWIuLjdhMTNiMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9j
aHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVt
L0VkaXRvckNocm9taXVtLmNwcApAQCAtMzMsMTIgKzMzLDEzIEBACiAKICNpbmNsdWRlICJDaHJv
bWl1bURhdGFPYmplY3QuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRDaHJvbWl1bS5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJu
IENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoZmFsc2UsIENocm9taXVtRGF0YU9iamVjdDo6Y3Jl
YXRlKCksIHBvbGljeSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoZmFs
c2UsIENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCksIHBvbGljeSwgZnJhbWUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaGFpa3Uv
RWRpdG9ySGFpa3UuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2hhaWt1L0VkaXRvckhhaWt1LmNwcApp
bmRleCA3MjNkNGZmLi40NTk2YzllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaGFpa3Uv
RWRpdG9ySGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9oYWlrdS9FZGl0b3JIYWlrdS5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRy
PENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xp
cGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1
cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0ZShwb2xpY3ksIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KaW5kZXggY2EwMDFhMi4uMmM1YTYwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFs
Q2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsK
LSAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoZmFsc2UsIFtOU1Bhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdLCBwb2xpY3ksIDApOworICAgIHJldHVybiBDbGlwYm9hcmRNYWM6OmNy
ZWF0ZShmYWxzZSwgW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0sIHBvbGljeSwgZnJh
bWUpOwogfQogCiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvcXQvRWRpdG9yUXQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3F0L0VkaXRvclF0
LmNwcAppbmRleCBlNzRlMmYzLi43ZmIzNjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
cXQvRWRpdG9yUXQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9xdC9FZGl0b3JRdC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBi
b2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKikKIHsKICAgICByZXR1cm4gQ2xp
cGJvYXJkUXQ6OmNyZWF0ZShwb2xpY3kpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L3d4L0VkaXRvcld4LmNwcCBiL1dlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JXeC5jcHAKaW5kZXgg
Y2I5ZTgzNi4uYTJlYzY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL3d4L0VkaXRvcld4
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRv
cjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSAKK1Bh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJk
QWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqKSAKIHsgCiAgICAgcmV0dXJuIENsaXBib2FyZFd4
OjpjcmVhdGUocG9saWN5LCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9i
LmNwcCBiL1dlYkNvcmUvaHRtbC9CbG9iLmNwcAppbmRleCAwNjgwZDgyLi5hNDFmYjJlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvQmxvYi5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2IuY3Bw
CkBAIC0zNiwxOSArMzYsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CbG9iOjpCbG9i
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxvYkl0ZW1MaXN0JiBpdGVtcykKK0Jsb2I6OkJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxv
Ykl0ZW1MaXN0JiBpdGVtcykKICAgICA6IG1fdHlwZSh0eXBlKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1faXRlbXMuYXBwZW5kKGl0
ZW1zW2ldKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBQYXNzUmVmUHRyPEJsb2JJdGVtPiYgaXRl
bSkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFBhc3NSZWZQdHI8
QmxvYkl0ZW0+JiBpdGVtKQogewogICAgIG1faXRlbXMuYXBwZW5kKGl0ZW0pOwogfQogCi1CbG9i
OjpCbG9iKGNvbnN0IFN0cmluZyYgcGF0aCkKK0Jsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICAvLyBOb3RlOiB0aGlzIGRvZXNuJ3Qg
aW5pdGlhbGl6ZSB0aGUgdHlwZSB1bmxpa2UgRmlsZShwYXRoKS4KICAgICBtX2l0ZW1zLmFwcGVu
ZChGaWxlQmxvYkl0ZW06OmNyZWF0ZShwYXRoKSk7CkBAIC03MSw3ICs3MSw3IEBAIGNvbnN0IFN0
cmluZyYgQmxvYjo6cGF0aCgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQkxPQl9TTElDRSkKLVBh
c3NSZWZQdHI8QmxvYj4gQmxvYjo6c2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBjb25zdAorUGFzc1JlZlB0cjxCbG9iPiBC
bG9iOjpzbGljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0YXJ0IDwgMCkKICAgICAgICAgc3RhcnQgPSAwOwpA
QCAtOTUsNyArOTUsNyBAQCBQYXNzUmVmUHRyPEJsb2I+IEJsb2I6OnNsaWNlKGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICBsZW5ndGgg
LT0gaXRlbXMubGFzdCgpLT5zaXplKCk7CiAgICAgICAgIHN0YXJ0ID0gMDsKICAgICB9Ci0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZW50VHlwZSwgaXRlbXMpOworICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29udGVudFR5cGUsIGl0ZW1zKTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoQkxPQl9TTElDRSkKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0Jsb2IuaCBiL1dlYkNvcmUvaHRtbC9CbG9iLmgKaW5kZXggZjU1MjZjNy4uMTJjY2NhNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2IuaAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYi5oCkBA
IC0zOSwxOSArMzksMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworCiBjbGFzcyBCbG9iIDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYgaXRlbXMpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgQmxvYkl0ZW1MaXN0JiBpdGVtcykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYih0eXBlLCBpdGVtcykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlw
ZSwgaXRlbXMpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRGVwcmVjYXRlZCBtZXRob2QuICBU
aGlzIGlzIGNhbGxlZCBvbmx5IGZyb20KICAgICAvLyBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGFuZCB0aGUgdXNhZ2UgaW4gaXQgd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNl
CiAgICAgLy8gQmxvYkJ1aWxkZXIgaXMgaW50cm9kdWNlZC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxCbG9iPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEJsb2IocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Ioc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgcGF0aCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkJsb2IoKSB7
IH0KQEAgLTY2LDE1ICs2OCwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmxvYkl0ZW1MaXN0JiBp
dGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXM7IH0KIAogI2lmIEVOQUJMRShCTE9CX1NMSUNF
KQotICAgIFBhc3NSZWZQdHI8QmxvYj4gc2xpY2UobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8QmxvYj4gc2xpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IFN0
cmluZygpKSBjb25zdDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgQmxvYihjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYpOwotICAgIEJsb2IoY29uc3QgUGFzc1JlZlB0
cjxCbG9iSXRlbT4mKTsKKyAgICBCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IEJsb2JJdGVtTGlzdCYpOworICAgIEJsb2IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFBhc3NSZWZQdHI8QmxvYkl0ZW0+Jik7CiAKICAgICAvLyBGSVhN
RTogRGVwcmVjYXRlZCBjb25zdHJ1Y3Rvci4gIFNlZSBhbHNvIHRoZSBjb21tZW50IGZvciBCbG9i
OjpjcmVhdGUocGF0aCkuCi0gICAgQmxvYihjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEJsb2Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICBCbG9i
SXRlbUxpc3QgbV9pdGVtczsKICAgICBTdHJpbmcgbV90eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0Jsb2IuaWRsIGIvV2ViQ29yZS9odG1sL0Jsb2IuaWRsCmluZGV4IDBhZTI3NTkuLjYy
NmJiNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9CbG9iLmlkbAorKysgYi9XZWJDb3JlL2h0
bWwvQmxvYi5pZGwKQEAgLTM0LDggKzM0LDEwIEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplOwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CiAKKyNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykKICNpZiBkZWZpbmVkKEVOQUJMRV9CTE9CX1NMSUNFKSAmJiBFTkFCTEVfQkxPQl9T
TElDRQotICAgICAgICBCbG9iIHNsaWNlKGluIGxvbmcgbG9uZyBzdGFydCwgaW4gbG9uZyBsb25n
IGxlbmd0aCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgY29udGVudFR5cGUpOworICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dF0gQmxvYiBzbGljZShpbiBsb25nIGxvbmcgc3RhcnQsIGluIGxvbmcgbG9uZyBs
ZW5ndGgsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKKyNlbmRpZgogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9CbG9iQnVp
bGRlci5jcHAKaW5kZXggYjI2ODRmYy4uMDU5MmZmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0Jsb2JCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuY3BwCkBAIC04
MSw5ICs4MSw5IEBAIGJvb2wgQmxvYkJ1aWxkZXI6OmFwcGVuZChQYXNzUmVmUHRyPEJsb2I+IGJs
b2IpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEJsb2I+IEJsb2JCdWlsZGVy
OjpnZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CitQYXNzUmVmUHRyPEJs
b2I+IEJsb2JCdWlsZGVyOjpnZXRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZW50VHlwZSwgbV9pdGVtcyk7CisgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb250ZW50VHlwZSwgbV9pdGVtcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9C
bG9iQnVpbGRlci5oIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKaW5kZXggMTE3M2MwNC4u
NWQxNzAwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKKysrIGIvV2Vi
Q29yZS9odG1sL0Jsb2JCdWlsZGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQmxvYjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJv
b2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBlbmRpbmcsIEV4Y2Vw
dGlvbkNvZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8QmxvYj4gZ2V0QmxvYihjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QmxvYj4gZ2V0
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9
IFN0cmluZygpKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBCbG9iSXRlbUxpc3QgbV9pdGVtczsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CbG9iQnVpbGRlci5pZGwgYi9XZWJDb3JlL2h0bWwv
QmxvYkJ1aWxkZXIuaWRsCmluZGV4IDkzY2I4N2YuLjUzYzdhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9CbG9iQnVpbGRlci5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmlk
bApAQCAtMzQsNyArMzQsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEdlbmVyYXRlTmF0aXZl
Q29udmVydGVyLAogICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gQmxvYkJ1aWxkZXIgewot
ICAgICAgICBCbG9iIGdldEJsb2IoaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgY29udGVudFR5cGUpOworI2lmICFkZWZpbmVkKExBTkdV
QUdFX09CSkVDVElWRV9DKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gQmxvYiBnZXRCbG9iKGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVs
bFN0cmluZ10gRE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKKyNlbmRpZgogICAgICAgICB2b2lkIGFw
cGVuZChpbiBCbG9iIGJsb2IpOwogICAgICAgICB2b2lkIGFwcGVuZChpbiBET01TdHJpbmcgdmFs
dWUsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9N
U3RyaW5nIGVuZGluZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0ZpbGUuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGUuY3BwCmluZGV4IDQw
MDBkY2IuLjEwOWUwZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvRmlsZS5jcHAKQEAgLTMxLDE1ICszMSwxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogQmxvYihwYXRo
KQorRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgOiBCbG9iKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIHBhdGgpCiB7CiAgICAgSW5pdCgpOwogfQogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExP
QUQpCi1GaWxlOjpGaWxlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQotICAgIDogQmxvYihGaWxlQmxvYkl0ZW06OmNyZWF0ZShmaWxlUGF0aCwgcmVs
YXRpdmVQYXRoKSkKK0ZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCisgICAgOiBCbG9iKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZpbGVCbG9iSXRl
bTo6Y3JlYXRlKGZpbGVQYXRoLCByZWxhdGl2ZVBhdGgpKQogewogICAgIEluaXQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlLmggYi9XZWJDb3JlL2h0bWwvRmlsZS5oCmluZGV4
IGQ2ODU0NzIuLmMwYWVjYzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlLmgKKysrIGIv
V2ViQ29yZS9odG1sL0ZpbGUuaApAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRmlsZSA6IHB1YmxpYyBCbG9iIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZpbGUocGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcGF0aCkpOwogICAgIH0KIAogI2lmIEVOQUJMRShESVJF
Q1RPUllfVVBMT0FEKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5nJiBwYXRoKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbGU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgY29uc3QgU3RyaW5nJiBwYXRo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHJlbGF0aXZlUGF0aCwg
cGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgcmVsYXRpdmVQYXRoLCBwYXRoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTU5LDEx
ICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGZpbGVTaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpOworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
cGF0aCk7CiAgICAgdm9pZCBJbml0KCk7CiAKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
LSAgICBGaWxlKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVQYXRoLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggMDBkYzUwMy4uNWJiZTRkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjphcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sIG11bHRpcGFydCkKICAgICAg
ICAgLy8gSWYgbm8gZmlsZW5hbWUgYXQgYWxsIGlzIGVudGVyZWQsIHJldHVybiBzdWNjZXNzZnVs
IGJ1dCBlbXB0eS4KICAgICAgICAgLy8gTnVsbCB3b3VsZCBiZSBtb3JlIGxvZ2ljYWwsIGJ1dCBO
ZXRzY2FwZSBwb3N0cyBhbiBlbXB0eSBmaWxlLiBBcmdoLgogICAgICAgICBpZiAoIW51bUZpbGVz
KSB7Ci0gICAgICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKG5hbWUoKSwgRmlsZTo6Y3JlYXRl
KCIiKSk7CisgICAgICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKG5hbWUoKSwgRmlsZTo6Y3Jl
YXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIiIpKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTE5OTksMTUgKzE5OTksMTUgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRGaWxlTGlzdEZyb21SZW5kZXJlcihjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7
CiAgICAgICAgICAgICAvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgdG8gc2xhc2hlcyBiZWZvcmUg
ZXhwb3NpbmcgdGhlIHJlbGF0aXZlIHBhdGggdG8gc2NyaXB0LgogICAgICAgICAgICAgU3RyaW5n
IHJlbGF0aXZlUGF0aCA9IHBhdGhzW2ldLnN1YnN0cmluZygxICsgcm9vdFBhdGgubGVuZ3RoKCkp
LnJlcGxhY2UoJ1xcJywnLycpOwotICAgICAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6
OmNyZWF0ZShyZWxhdGl2ZVBhdGgsIHBhdGhzW2ldKSk7CisgICAgICAgICAgICBtX2ZpbGVMaXN0
LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgcmVsYXRpdmVQYXRoLCBwYXRoc1tpXSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgICAgICBtX2ZpbGVM
aXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhzW2ldKSk7CisgICAgICAgICAgICBtX2ZpbGVM
aXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKGRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgcGF0aHNbaV0pKTsKICAgICB9CiAjZWxzZQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKQotICAgICAgICBtX2ZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGhz
W2ldKSk7CisgICAgICAgIG1fZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoZG9jdW1lbnQo
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBwYXRoc1tpXSkpOwogI2VuZGlmCiAKICAgICBz
ZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKaW5kZXggNzE2NzcyYi4uZDkzYTI1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBA
IC0xNzAsNyArMTcwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0V4aXRlZChEcmFnRGF0
YSogZHJhZ0RhdGEpCiAKICAgICBpZiAoUmVmUHRyPEZyYW1lVmlldz4gdiA9IG1haW5GcmFtZS0+
dmlldygpKSB7CiAgICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kgPSAoIW1fZG9j
dW1lbnRVbmRlck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0eU9yaWdpbigp
LT5pc0xvY2FsKCkpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBDbGlwYm9hcmRUeXBlc1JlYWRhYmxl
OwotICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRl
Q2xpcGJvYXJkKHBvbGljeSk7CisgICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9
IENsaXBib2FyZDo6Y3JlYXRlKHBvbGljeSwgZHJhZ0RhdGEsIG1haW5GcmFtZSk7CiAgICAgICAg
IGNsaXBib2FyZC0+c2V0U291cmNlT3BlcmF0aW9uKGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2soKSk7CiAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmNhbmNl
bERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkp
OwogICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsgICAg
Ly8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKQEAgLTE5Myw3ICsxOTMs
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEp
CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbWFpbkZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsK
ICAgICAgICAgaWYgKG1haW5GcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICAvLyBTZW5kaW5n
IGFuIGV2ZW50IGNhbiByZXN1bHQgaW4gdGhlIGRlc3RydWN0aW9uIG9mIHRoZSB2aWV3IGFuZCBw
YXJ0LgotICAgICAgICAgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0gZHJhZ0RhdGEt
PmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRSZWFkYWJsZSk7CisgICAgICAgICAgICBSZWZQdHI8
Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRSZWFkYWJs
ZSwgZHJhZ0RhdGEsIG1haW5GcmFtZS5nZXQoKSk7CiAgICAgICAgICAgICBjbGlwYm9hcmQtPnNl
dFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkp
OwogICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cGVyZm9ybURyYWdBbmRE
cm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkpOwogICAgICAg
ICAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkTnVtYik7ICAgIC8vIGlu
dmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CkBAIC01MjQsNyArNTI0LDcgQEAg
Ym9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYXRhKiBkcmFnRGF0YSwgRHJh
Z09wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5ID0gbV9kb2N1bWVudFVuZGVyTW91c2UtPnNlY3VyaXR5
T3JpZ2luKCktPmlzTG9jYWwoKSA/IENsaXBib2FyZFJlYWRhYmxlIDogQ2xpcGJvYXJkVHlwZXNS
ZWFkYWJsZTsKLSAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3Jl
YXRlQ2xpcGJvYXJkKHBvbGljeSk7CisgICAgUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkID0g
Q2xpcGJvYXJkOjpjcmVhdGUocG9saWN5LCBkcmFnRGF0YSwgbWFpbkZyYW1lLmdldCgpKTsKICAg
ICBEcmFnT3BlcmF0aW9uIHNyY09wTWFzayA9IGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soKTsKICAgICBjbGlwYm9hcmQtPnNldFNvdXJjZU9wZXJhdGlvbihzcmNPcE1hc2sp
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21p
dW0uY3BwIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50SGFuZGxlckNocm9taXVtLmNwcApp
bmRleCBmZjE2MWFmLi43MTkxNjNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21pdW0v
RXZlbnRIYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVu
dEhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNv
bnN0CiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0Ns
aXBib2FyZCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9i
amVjdCA9IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIENsaXBib2Fy
ZENocm9taXVtOjpjcmVhdGUodHJ1ZSwgZGF0YU9iamVjdC5nZXQoKSwgQ2xpcGJvYXJkV3JpdGFi
bGUpOworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKHRydWUsIGRhdGFPYmpl
Y3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKIH0KIAogdm9pZCBFdmVudEhh
bmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ndGsv
RXZlbnRIYW5kbGVyR3RrLmNwcCBiL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNw
cAppbmRleCAwZmY2N2QyLi40MjlhZWE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZ3RrL0V2
ZW50SGFuZGxlckd0ay5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsu
Y3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFdpZGdldCogd2lkCiAKIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUs
IERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpLCB0cnVlKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkR3Rr
OjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpLCB0cnVl
LCBtX2ZyYW1lKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRU
b1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZy
YW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwIGIv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCmluZGV4IGUxZDViZTkuLmVlNGIz
NjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEV2ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9h
cmQoKSBjb25zdAogI2Vsc2UKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBkYXRhT2JqZWN0Owog
ICAgIFdDRGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3QpOwotICAgIHJldHVy
biBDbGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBkYXRhT2JqZWN0LmdldCgpLCBDbGlwYm9hcmRX
cml0YWJsZSk7CisgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKHRydWUsIGRhdGFPYmpl
Y3QuZ2V0KCksIENsaXBib2FyZFdyaXRhYmxlLCBtX2ZyYW1lKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmgKaW5kZXggZDY2ODk2My4uMGUyNmY5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtMjYs
NyArMjYsNiBAQAogI2lmbmRlZiBEcmFnRGF0YV9oCiAjZGVmaW5lIERyYWdEYXRhX2gKIAotI2lu
Y2x1ZGUgIkNsaXBib2FyZEFjY2Vzc1BvbGljeS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgpAQCAtOTUsNyArOTQs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KICAgICAgICAgRHJh
Z0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRh
OyB9CiAgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KLSAgICAgICAg
UGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgICAgICBi
b29sIGNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNDb21w
YXRpYmxlQ29udGVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRy
b2lkL0NsaXBib2FyZEFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0NsaXBi
b2FyZEFuZHJvaWQuY3BwCmluZGV4IDM3NWY5ODAuLmQ5YjJkNjggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vYW5kcm9pZC9DbGlwYm9hcmRBbmRyb2lkLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2FuZHJvaWQvQ2xpcGJvYXJkQW5kcm9pZC5jcHAKQEAgLTM1LDYgKzM1LDExIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6
Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRHJhZ0RhdGEqLCBGcmFtZSopCit7CisgICAg
cmV0dXJuIDA7Cit9CisKIENsaXBib2FyZEFuZHJvaWQ6OkNsaXBib2FyZEFuZHJvaWQoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBpc0ZvckRyYWdnaW5nKQogICAgIDogQ2xpcGJv
YXJkKHBvbGljeSwgaXNGb3JEcmFnZ2luZykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lk
L0RyYWdEYXRhQW5kcm9pZC5jcHAKaW5kZXggNzU2ZDAwNy4uNGU5OWIyYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAi
Q2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCiAKQEAgLTU4LDExICs1Nyw2IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkg
Y29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KICAgICAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3QK
LXsKLSAgICByZXR1cm4gMDsKLX0KLSAgICAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0
aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vYnJldy9DbGlwYm9hcmRCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
YnJldy9DbGlwYm9hcmRCcmV3LmNwcAppbmRleCAzZmQwODVhLi43MjBkNmE2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvQ2xpcGJvYXJkQnJldy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9icmV3L0NsaXBib2FyZEJyZXcuY3BwCkBAIC0zNiw2ICszNiwxMSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0
ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQoreworICAgIHJldHVy
biAwOworfQorCiBDbGlwYm9hcmRCcmV3OjpDbGlwYm9hcmRCcmV3KENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3ksIGJvb2wgaXNGb3JEcmFnZ2luZykKICAgICA6IENsaXBib2FyZChwb2xpY3ks
IGlzRm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvRHJh
Z0RhdGFCcmV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9EcmFnRGF0YUJyZXcuY3BwCmlu
ZGV4IGVlYzhiYzQuLmQxMTRmZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9E
cmFnRGF0YUJyZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYnJldy9EcmFnRGF0YUJyZXcu
Y3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJh
Z0RhdGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCkBAIC01OCwxMSArNTcsNiBAQCBDb2xv
ciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLVBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQogYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRl
eCA4YWFkOGFhLi4wNjI0NGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNocm9taXVt
RGF0YU9iamVjdC5oIgogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC00
Myw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSYW5n
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJtYXJrdXAu
aCIKIApAQCAtODksMTggKzkxLDI1IEBAIHN0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBjbGlwYm9h
cmRUeXBlRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gQ2xpcGJv
YXJkRGF0YVR5cGVPdGhlcjsKIH0KIAorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6
Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwg
RnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKHRy
dWUsIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwgcG9saWN5LCBmcmFtZSk7Cit9CisKIENsaXBi
b2FyZENocm9taXVtOjpDbGlwYm9hcmRDaHJvbWl1bShib29sIGlzRm9yRHJhZ2dpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFP
YmplY3Q+IGRhdGFPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSkKICAgICA6IENsaXBib2FyZChwb2xp
Y3ksIGlzRm9yRHJhZ2dpbmcpCiAgICAgLCBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKKyAgICAs
IG1fZnJhbWUoZnJhbWUpCiB7CiB9CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IENs
aXBib2FyZENocm9taXVtOjpjcmVhdGUoYm9vbCBpc0ZvckRyYWdnaW5nLAotICAgIFBhc3NSZWZQ
dHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5KQorICAgIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBkYXRhT2JqZWN0LCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRDaHJvbWl1bShpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0
LCBwb2xpY3kpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGlz
Rm9yRHJhZ2dpbmcsIGRhdGFPYmplY3QsIHBvbGljeSwgZnJhbWUpKTsKIH0KIAogdm9pZCBDbGlw
Ym9hcmRDaHJvbWl1bTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTM1NSw5ICsz
NjQsMTAgQEAgUGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkQ2hyb21pdW06OmZpbGVzKCkg
Y29uc3QKICAgICBpZiAoIW1fZGF0YU9iamVjdCB8fCBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFJlZlB0cjxGaWxlTGlzdD4g
ZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgZmlsZUxpc3Qt
PmFwcGVuZChGaWxlOjpjcmVhdGUobV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuYXQoaSkpKTsKKyAg
ICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgbV9kYXRhT2JqZWN0LT5maWxlbmFtZXMuYXQoaSkpKTsKIAogICAgIHJldHVybiBmaWxlTGlz
dC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ns
aXBib2FyZENocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmgKaW5kZXggZmJlYmRlMi4uYTQxNTBkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKICAgICBjbGFzcyBDaHJvbWl1bURh
dGFPYmplY3Q7CisgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAKICAgICBj
bGFzcyBDbGlwYm9hcmRDaHJvbWl1bSA6IHB1YmxpYyBDbGlwYm9hcmQsIHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7CkBAIC00NSw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgfkNsaXBib2FyZENocm9taXVtKCkge30KIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDbGlwYm9hcmRDaHJvbWl1bT4gY3JlYXRlKAotICAgICAgICAgICAgYm9vbCBpc0ZvckRyYWdn
aW5nLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGlj
eSk7CisgICAgICAgICAgICBib29sIGlzRm9yRHJhZ2dpbmcsIFBhc3NSZWZQdHI8Q2hyb21pdW1E
YXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIC8v
IFJldHVybnMgdGhlIGZpbGUgbmFtZSAobm90IGluY2x1ZGluZyB0aGUgZXh0ZW5zaW9uKS4gVGhp
cyByZW1vdmVzIGFueQogICAgICAgICAvLyBpbnZhbGlkIGZpbGUgc3lzdGVtIGNoYXJhY3RlcnMg
YXMgd2VsbCBhcyBtYWtpbmcgc3VyZSB0aGUKQEAgLTc5LDExICs4MCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBDbGlwYm9hcmRDaHJvbWl1bShib29sLCBQYXNzUmVmUHRyPENocm9taXVtRGF0
YU9iamVjdD4sIENsaXBib2FyZEFjY2Vzc1BvbGljeSk7CisgICAgICAgIENsaXBib2FyZENocm9t
aXVtKGJvb2wsIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiwgQ2xpcGJvYXJkQWNjZXNz
UG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIHZvaWQgcmVzZXRGcm9tQ2xpcGJvYXJkKCk7CiAg
ICAgICAgIHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBv
aW50Jik7CiAgICAgICAgIFJlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IG1fZGF0YU9iamVjdDsK
KyAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVt
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKaW5k
ZXggMmMyMTUxYS4uNjc0ZDM0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9EcmFnRGF0YUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Ry
YWdEYXRhQ2hyb21pdW0uY3BwCkBAIC0zMiw4ICszMiw2IEBACiAKICNpbmNsdWRlICJDaHJvbWl1
bUJyaWRnZS5oIgogI2luY2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgotI2luY2x1ZGUgIkNs
aXBib2FyZC5oIgotI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJLVVJM
LmgiCkBAIC00OCwxNCArNDYsNiBAQCBzdGF0aWMgYm9vbCBjb250YWluc0hUTUwoY29uc3QgQ2hy
b21pdW1EYXRhT2JqZWN0KiBkcm9wRGF0YSkKICAgICByZXR1cm4gZHJvcERhdGEtPnRleHRIdG1s
Lmxlbmd0aCgpID4gMDsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVh
dGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY29uc3QKLXsKLSAgICBS
ZWZQdHI8Q2xpcGJvYXJkQ2hyb21pdW0+IGNsaXBib2FyZCA9IENsaXBib2FyZENocm9taXVtOjpj
cmVhdGUodHJ1ZSwKLSAgICAgICAgbV9wbGF0Zm9ybURyYWdEYXRhLCBwb2xpY3kpOwotCi0gICAg
cmV0dXJuIGNsaXBib2FyZC5yZWxlYXNlKCk7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAg
ICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvQ2xpcGJvYXJkRWZsLmNwcAppbmRleCA2ZWY1MWNmLi4xNjMzY2NiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9DbGlwYm9hcmRFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL0NsaXBib2FyZEVmbC5jcHAKQEAgLTI3LDExICsyNywxNiBAQAogI2luY2x1ZGUgIlN0
cmluZ0hhc2guaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+
IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5
KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSopCiB7CiAgICAgcmV0dXJuIG5ldyBDbGlw
Ym9hcmRFZmwocG9saWN5LCBmYWxzZSk7CiB9CiAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlw
Ym9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUqKQor
eworICAgIHJldHVybiAwOworfQorCiBDbGlwYm9hcmRFZmw6OkNsaXBib2FyZEVmbChDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQogICAgIDogQ2xpcGJvYXJk
KHBvbGljeSwgZm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9EcmFnRGF0YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAK
aW5kZXggZjZiNDQ2Yy4uYTg0NThkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
RHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNw
cApAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdE
YXRhLmgiCiAKLSNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKIApAQCAtNjEsMTEgKzYwLDYgQEAgQ29sb3Ig
RHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBDb2xvcigpOwogfQogCi1QYXNz
UmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDkyNGZhYmMuLmMwOGIwM2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMTgsNiArMTgsNyBAQAogI2lu
Y2x1ZGUgIkNsaXBib2FyZEd0ay5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNs
dWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgpAQCAtMjcsNiArMjgsNyBAQAogI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KQEAgLTQzLDI0ICs0NSwzMSBAQCBlbnVtIENsaXBib2FyZFR5cGUgewogICAg
IENsaXBib2FyZFR5cGVVbmtub3duCiB9OwogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9y
OjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitQYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJk
R3RrOjpjcmVhdGUocG9saWN5LCBndGtfY2xpcGJvYXJkX2dldF9mb3JfZGlzcGxheShnZGtfZGlz
cGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCksIGZhbHNlKTsKKyAg
ICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUocG9saWN5LCBndGtfY2xpcGJvYXJkX2dldF9m
b3JfZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBC
T0FSRCksIGZhbHNlLCBmcmFtZSk7CiB9CiAKLUNsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkKQorUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lKQoreworICAgIHJldHVy
biBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIGRyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSwg
dHJ1ZSwgZnJhbWUpOworfQorCitDbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0ayhDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3kgcG9saWN5LCBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqIGZyYW1l
KQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZmFsc2UpCiAgICAgLCBtX2RhdGFPYmplY3QoRGF0
YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCkpCiAgICAgLCBtX2NsaXBib2FyZChj
bGlwYm9hcmQpCiAgICAgLCBtX2hlbHBlcihQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgp
LT5oZWxwZXIoKSkKKyAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CiB9CiAKLUNsaXBib2FyZEd0azo6
Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0
YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBmb3JEcmFnZ2luZykKK0NsaXBib2FyZEd0azo6
Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIFBhc3NSZWZQdHI8RGF0
YU9iamVjdEd0az4gZGF0YU9iamVjdCwgYm9vbCBmb3JEcmFnZ2luZywgRnJhbWUqIGZyYW1lKQog
ICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCiAgICAgLCBtX2RhdGFPYmplY3Qo
ZGF0YU9iamVjdCkKICAgICAsIG1fY2xpcGJvYXJkKDApCiAgICAgLCBtX2hlbHBlcihQYXN0ZWJv
YXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5oZWxwZXIoKSkKKyAgICAsIG1fZnJhbWUoZnJhbWUp
CiB7CiB9CiAKQEAgLTI1NSw4ICsyNjQsOSBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9h
cmRHdGs6OmZpbGVzKCkgY29uc3QKICAgICBSZWZQdHI8RmlsZUxpc3Q+IGZpbGVMaXN0ID0gRmls
ZUxpc3Q6OmNyZWF0ZSgpOwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVWZWN0b3IobV9kYXRhT2Jq
ZWN0LT5maWxlcygpKTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVmVjdG9yLnNpemUoKTsgaSsrKQot
ICAgICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShmaWxlVmVjdG9yW2ldKSk7Cisg
ICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGZpbGVWZWN0b3JbaV0pKTsKIAogICAgIHJldHVybiBmaWxlTGlzdC5yZWxlYXNlKCk7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCmluZGV4IGMzNDM4YzQuLjViNDJhYzYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCkBAIC0zNCwyMCArMzQsMjEgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKKyAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBQ
YXN0ZWJvYXJkSGVscGVyOwogCiAgICAgLy8gU3RhdGUgYXZhaWxhYmxlIGR1cmluZyBJRSdzIGV2
ZW50cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29weS9wYXN0ZQogICAgIC8vIENyZWF0ZWQgZnJv
bSB0aGUgRXZlbnRIYW5kbGVyR3RrIHRvIGJlIHVzZWQgYnkgdGhlIGRvbQogICAgIGNsYXNzIENs
aXBib2FyZEd0ayA6IHB1YmxpYyBDbGlwYm9hcmQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGJvb2wgaXNGb3JEcmFnZ2luZykKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGJvb2wgaXNGb3JEcmFn
Z2luZywgRnJhbWUqIGZyYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIGNsaXBib2FyZCkpOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBjbGlwYm9hcmQsIGZyYW1lKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRHdGs+IGNy
ZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERhdGFPYmplY3RH
dGs+IGRhdGFPYmplY3QsIGJvb2wgaXNGb3JEcmFnZ2luZykKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
UGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0LCBib29sIGlzRm9yRHJhZ2dpbmcs
IEZyYW1lKiBmcmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDbGlwYm9hcmRHdGsocG9saWN5LCBkYXRhT2JqZWN0LCBpc0ZvckRyYWdnaW5nKSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIGRhdGFPYmpl
Y3QsIGlzRm9yRHJhZ2dpbmcsIGZyYW1lKSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
Q2xpcGJvYXJkR3RrKCk7CiAKQEAgLTc3LDEyICs3OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCgpIHsgcmV0dXJu
IG1fZGF0YU9iamVjdDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQ2xpcGJvYXJkR3RrKENs
aXBib2FyZEFjY2Vzc1BvbGljeSwgR3RrQ2xpcGJvYXJkKik7Ci0gICAgICAgIENsaXBib2FyZEd0
ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4sIGJvb2wp
OworICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBHdGtDbGlwYm9h
cmQqLCBGcmFtZSopOworICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LCBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+LCBib29sLCBGcmFtZSopOwogCiAgICAgICAgIFJl
ZlB0cjxEYXRhT2JqZWN0R3RrPiBtX2RhdGFPYmplY3Q7CiAgICAgICAgIEd0a0NsaXBib2FyZCog
bV9jbGlwYm9hcmQ7CiAgICAgICAgIFBhc3RlYm9hcmRIZWxwZXIqIG1faGVscGVyOworICAgICAg
ICBGcmFtZSogbV9mcmFtZTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0
ay5jcHAKaW5kZXggNjhmN2ZmYy4uNjk5NjZhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0RhdGFHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRh
R3RrLmNwcApAQCAtNjIsMTEgKzYyLDYgQEAgQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25z
dAogICAgIHJldHVybiBDb2xvcigpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0Rh
dGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAot
ewotICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIG1fcGxhdGZvcm1EcmFn
RGF0YSwgdHJ1ZSk7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRl
bnQoKSBjb25zdAogewogICAgIHJldHVybiBjb250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5z
VVJMKCkgfHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSB8fCBjb250YWluc0NvbG9y
KCkgfHwgY29udGFpbnNGaWxlcygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlr
dS9DbGlwYm9hcmRIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0NsaXBib2FyZEhh
aWt1LmNwcAppbmRleCBmNzNiZTAxLi40MDM0M2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2hhaWt1L0NsaXBib2FyZEhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1
L0NsaXBib2FyZEhhaWt1LmNwcApAQCAtNDIsNiArNDIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitXVEY6OlBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBDbGlwYm9hcmQ6OmNyZWF0ZShDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSosIEZyYW1lKikKK3sKKyAgICByZXR1
cm4gQ2xpcGJvYXJkSGFpa3U6OmNyZWF0ZShwb2xpY3ksIHRydWUpOworfQorCiBDbGlwYm9hcmRI
YWlrdTo6Q2xpcGJvYXJkSGFpa3UoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBm
b3JEcmFnZ2luZykKICAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAKaW5kZXggN2Y0MGI4YS4uN2MyZGM5
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCkBAIC0yNyw3ICsy
Nyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKIAotI2lu
Y2x1ZGUgIkNsaXBib2FyZEhhaWt1LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTc2
LDExICs3NSw2IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4g
Q29sb3IoKTsKIH0KIAotV1RGOjpQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0
ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAotewotICAgIHJl
dHVybiBDbGlwYm9hcmRIYWlrdTo6Y3JlYXRlKHBvbGljeSwgdHJ1ZSk7Ci19Ci0KIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBj
b250YWluc0NvbG9yKCkgfHwgY29udGFpbnNVUkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IGRkZmEwZDUuLjBjYmIzZjYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBv
cnQgIkRPTUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRHJhZ0NsaWVudC5oIgogI2ltcG9y
dCAiRHJhZ0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIkRyYWdEYXRhLmgiCiAjaW1wb3J0ICJFZGl0
b3IuaCIKICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgIkZpbGVMaXN0Lmgi
CkBAIC0zNyw2ICszOCw3IEBACiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJk
LmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgorI2ltcG9ydCAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKIApAQCAtNDYsNiArNDgsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBOU1VJ
bnRlZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBD
bGlwYm9hcmQ6OmNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBEcmFnRGF0YSog
ZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVh
dGUodHJ1ZSwgW2RyYWdEYXRhLT5wbGF0Zm9ybURhdGEoKSBkcmFnZ2luZ1Bhc3RlYm9hcmRdLCBw
b2xpY3ksIGZyYW1lKTsKK30KKwogQ2xpcGJvYXJkTWFjOjpDbGlwYm9hcmRNYWMoYm9vbCBmb3JE
cmFnZ2luZywgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kg
cG9saWN5LCBGcmFtZSAqZnJhbWUpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFnZ2lu
ZykKICAgICAsIG1fcGFzdGVib2FyZChwYXN0ZWJvYXJkKQpAQCAtMzA2LDExICszMTMsMTIgQEAg
UGFzc1JlZlB0cjxGaWxlTGlzdD4gQ2xpcGJvYXJkTWFjOjpmaWxlcygpIGNvbnN0CiAgICAgTlNB
cnJheSAqYWJzb2x1dGVVUkxzID0gYWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxlbmFtZXMo
bV9wYXN0ZWJvYXJkLmdldCgpKTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Fic29sdXRlVVJM
cyBjb3VudF07CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIFJlZlB0cjxGaWxlTGlzdD4gZmlsZUxpc3QgPSBGaWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChOU1VJbnRlZ2VyIHggPSAwOyB4IDwgY291bnQ7IHgrKykgewogICAgICAgICBOU1VSTCAq
YWJzb2x1dGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbYWJzb2x1dGVVUkxzIG9iamVjdEF0
SW5kZXg6eF1dOwogICAgICAgICBBU1NFUlQoW2Fic29sdXRlVVJMIGlzRmlsZVVSTF0pOwotICAg
ICAgICBmaWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNyZWF0ZShbYWJzb2x1dGVVUkwgcGF0aF0pKTsK
KyAgICAgICAgZmlsZUxpc3QtPmFwcGVuZChGaWxlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgW2Fic29sdXRlVVJMIHBhdGhdKSk7CiAgICAgfQogICAgIHJldHVybiBmaWxlTGlzdC5y
ZWxlYXNlKCk7IC8vIFdlIHdpbGwgYWx3YXlzIHJldHVybiBhIEZpbGVMaXN0LCBzb21ldGltZXMg
ZW1wdHkKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1t
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggZmE0MTZlZC4uOWNi
NDgzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTI3LDggKzI3LDYgQEAK
ICNpbXBvcnQgIkRyYWdEYXRhLmgiCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotI2ltcG9y
dCAiQ2xpcGJvYXJkTWFjLmgiCi0jaW1wb3J0ICJDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCIKICNp
bXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW1wb3J0
ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCkBAIC0xMDAsMTEgKzk4LDYgQEAgQ29sb3IgRHJhZ0Rh
dGE6OmFzQ29sb3IoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAoaW50KShbY29sb3IgYmx1
ZUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBhbHBoYUNvbXBvbmVudF0g
KiAyNTUuMCArIDAuNSkpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNy
ZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAotewotICAg
IHJldHVybiBDbGlwYm9hcmRNYWM6OmNyZWF0ZSh0cnVlLCBbbV9wbGF0Zm9ybURyYWdEYXRhIGRy
YWdnaW5nUGFzdGVib2FyZF0sIHBvbGljeSwgMCk7Ci19Ci0KIGJvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCA9IFttX3BsYXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5jcHAKaW5kZXggN2QyMjM0OS4uNmNhNDgzMCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDU1NIZWxw
ZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRmls
ZUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNjgsNiArNjksMTEgQEAgc3RhdGljIGJv
b2wgaXNIdG1sTWltZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB0eXBlID09
ICJ0ZXh0L2h0bWwiIHx8IHR5cGUuc3RhcnRzV2l0aCgidGV4dC9odG1sOyIpOwogfQogCitQYXNz
UmVmUHRyPENsaXBib2FyZD4gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSwgRHJhZ0RhdGEqIGRyYWdEYXRhLCBGcmFtZSopCit7CisgICAgcmV0dXJuIENsaXBi
b2FyZFF0OjpjcmVhdGUocG9saWN5LCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCkpOworfQorCiBD
bGlwYm9hcmRRdDo6Q2xpcGJvYXJkUXQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgY29u
c3QgUU1pbWVEYXRhKiByZWFkYWJsZUNsaXBib2FyZCkKICAgICA6IENsaXBib2FyZChwb2xpY3ks
IHRydWUpCiAgICAgLCBtX3JlYWRhYmxlRGF0YShyZWFkYWJsZUNsaXBib2FyZCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0RyYWdEYXRhUXQuY3BwCmluZGV4IDgwODYwNmQuLjQwMzMxMjMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9EcmFnRGF0YVF0LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRlICJDbGlwYm9hcmRRdC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUg
Im1hcmt1cC5oIgpAQCAtMTAwLDExICs5OSw2IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkg
Y29uc3QKICAgICByZXR1cm4gcXZhcmlhbnRfY2FzdDxRQ29sb3I+KG1fcGxhdGZvcm1EcmFnRGF0
YS0+Y29sb3JEYXRhKCkpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNy
ZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjb25zdAotewotICAg
IHJldHVybiBDbGlwYm9hcmRRdDo6Y3JlYXRlKHBvbGljeSwgbV9wbGF0Zm9ybURyYWdEYXRhKTsK
LX0KLQogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcAppbmRleCAyY2Q2ZmViLi5mYWQxNjQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFdpbi5jcHAKQEAgLTM5MywxNyArMzkzLDI0IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhyOwog
fQogCi1DbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRh
T2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IENsaXBib2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3ksIERyYWdEYXRhKiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiBD
bGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBkcmFnRGF0YS0+cGxhdGZvcm1EYXRhKCksIHBvbGlj
eSwgZnJhbWUpOworfQorCitDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihib29sIGlzRm9yRHJh
Z2dpbmcsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5LCBGcmFtZSogZnJhbWUpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBpc0ZvckRyYWdnaW5n
KQogICAgICwgbV9kYXRhT2JqZWN0KGRhdGFPYmplY3QpCiAgICAgLCBtX3dyaXRhYmxlRGF0YU9i
amVjdCgwKQorICAgICwgbV9mcmFtZShmcmFtZSkKIHsKIH0KIAotQ2xpcGJvYXJkV2luOjpDbGlw
Ym9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqIGRhdGFPYmplY3QsIENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCitDbGlwYm9hcmRXaW46OkNsaXBib2FyZFdpbihi
b29sIGlzRm9yRHJhZ2dpbmcsIFdDRGF0YU9iamVjdCogZGF0YU9iamVjdCwgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwg
aXNGb3JEcmFnZ2luZykKICAgICAsIG1fZGF0YU9iamVjdChkYXRhT2JqZWN0KQogICAgICwgbV93
cml0YWJsZURhdGFPYmplY3QoZGF0YU9iamVjdCkKKyAgICAsIG1fZnJhbWUoZnJhbWUpCiB7CiB9
CiAKQEAgLTU4OSwxMiArNTk2LDEzIEBAIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZFdp
bjo6ZmlsZXMoKSBjb25zdAogICAgIGlmICghaGRyb3ApCiAgICAgICAgIHJldHVybiBmaWxlcy5y
ZWxlYXNlKCk7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIFdDSEFSIGZpbGVuYW1lW01BWF9QQVRIXTsKICAgICBVSU5UIGZpbGVDb3VudCA9IERyYWdR
dWVyeUZpbGVXKGhkcm9wLCAweEZGRkZGRkZGLCAwLCAwKTsKICAgICBmb3IgKFVJTlQgaSA9IDA7
IGkgPCBmaWxlQ291bnQ7IGkrKykgewogICAgICAgICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9w
LCBpLCBmaWxlbmFtZSwgQVJSQVlTSVpFKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgZmlsZXMtPmFwcGVuZChGaWxlOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxV
Q2hhcio+KGZpbGVuYW1lKSkpOworICAgICAgICBmaWxlcy0+YXBwZW5kKEZpbGU6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCByZWludGVycHJldF9jYXN0PFVDaGFyKj4oZmlsZW5hbWUp
KSk7CiAgICAgfQogCiAgICAgR2xvYmFsVW5sb2NrKG1lZGl1bS5oR2xvYmFsKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmgKaW5kZXggMWIxMzllZC4uNmEwODA4NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmgKQEAgLTM1LDE5ICszNSwyMCBAQCBzdHJ1Y3QgSURhdGFPYmpl
Y3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZEltYWdlOworY2xhc3MgRnJh
bWU7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIFdDRGF0YU9iamVjdDsKIAogLy8gU3RhdGUgYXZh
aWxhYmxlIGR1cmluZyBJRSdzIGV2ZW50cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29weS9wYXN0
ZQogY2xhc3MgQ2xpcGJvYXJkV2luIDogcHVibGljIENsaXBib2FyZCwgcHVibGljIENhY2hlZFJl
c291cmNlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRX
aW4+IGNyZWF0ZShib29sIGlzRm9yRHJhZ2dpbmcsIElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBD
bGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBi
b2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFnZ2luZywgSURhdGFPYmplY3QqIGRhdGFPYmpl
Y3QsIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkV2luKGlzRm9yRHJhZ2dpbmcsIGRh
dGFPYmplY3QsIHBvbGljeSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2Fy
ZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3ksIGZyYW1lKSk7CiAgICAgfQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNGb3JEcmFn
Z2luZywgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZFdpbj4gY3JlYXRlKGJvb2wgaXNG
b3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENsaXBib2FyZFdpbihpc0ZvckRyYWdnaW5nLCBkYXRhT2JqZWN0LCBwb2xpY3kpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW4oaXNGb3JEcmFnZ2luZywgZGF0
YU9iamVjdCwgcG9saWN5LCBmcmFtZSkpOwogICAgIH0KICAgICB+Q2xpcGJvYXJkV2luKCk7CiAK
QEAgLTc2LDggKzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0RXh0ZXJuYWxEYXRhT2JqZWN0
KElEYXRhT2JqZWN0ICpkYXRhT2JqZWN0KTsKIAogcHJpdmF0ZToKLSAgICBDbGlwYm9hcmRXaW4o
Ym9vbCBpc0ZvckRyYWdnaW5nLCBJRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSk7
Ci0gICAgQ2xpcGJvYXJkV2luKGJvb2wgaXNGb3JEcmFnZ2luZywgV0NEYXRhT2JqZWN0KiwgQ2xp
cGJvYXJkQWNjZXNzUG9saWN5KTsKKyAgICBDbGlwYm9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5n
LCBJRGF0YU9iamVjdCosIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKKyAgICBDbGlw
Ym9hcmRXaW4oYm9vbCBpc0ZvckRyYWdnaW5nLCBXQ0RhdGFPYmplY3QqLCBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3ksIEZyYW1lKik7CiAKICAgICB2b2lkIHJlc2V0RnJvbUNsaXBib2FyZCgpOwogICAg
IHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hlZEltYWdlKiwgTm9kZSosIGNvbnN0IEludFBvaW50Jik7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggODJlNTM3ZS4uMDVmOTEwMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMjYsOSArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRlICJDbGlw
Ym9hcmRXaW4uaCIKICNpbmNsdWRlICJDbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCIKLSNpbmNsdWRl
ICJDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJNYXJrdXAuaCIKQEAgLTM5
LDExICszNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGlj
eSkgY29uc3QKLXsKLSAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUodHJ1ZSwgbV9wbGF0
Zm9ybURyYWdEYXRhLCBwb2xpY3kpOwotfQotCiBib29sIERyYWdEYXRhOjpjb250YWluc1VSTChG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YSh1cmxXRm9ybWF0
KCkpKSAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9FZGl0b3JXaW4uY3BwCmluZGV4IDA5YWJkYmQuLjA3NTgyN2Qg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0VkaXRvcldpbi5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRWRpdG9yV2luLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkNsaXBib2FyZFdpbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNp
bmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCkBAIC0z
OCwxMyArMzksMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPENsaXBi
b2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBw
b2xpY3kpCitQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKICAgICBDT01Q
dHI8SURhdGFPYmplY3Q+IGNsaXBib2FyZERhdGE7CiAgICAgaWYgKCFTVUNDRUVERUQoT2xlR2V0
Q2xpcGJvYXJkKCZjbGlwYm9hcmREYXRhKSkpCiAgICAgICAgIGNsaXBib2FyZERhdGEgPSAwOwog
Ci0gICAgcmV0dXJuIENsaXBib2FyZFdpbjo6Y3JlYXRlKGZhbHNlLCBjbGlwYm9hcmREYXRhLmdl
dCgpLCBwb2xpY3kpOworICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0ZShmYWxzZSwgY2xp
cGJvYXJkRGF0YS5nZXQoKSwgcG9saWN5LCBmcmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCmluZGV4IDVmMmE3
YmEuLjczZGQ4YTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFX
aW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcApA
QCAtMjEsMTcgKzIxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0Rh
dGEuaCIKIAotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFt
ZVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbmNlL0VkaXRvcldpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2Uv
RWRpdG9yV2luY2UuY3BwCmluZGV4IDAyYWY3ODAuLjcxZjRkYjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vd2luY2UvRWRpdG9yV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
d2luY2UvRWRpdG9yV2luY2UuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQorUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVk
aXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBG
cmFtZSopCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRXaW5jZShwb2xpY3ks
IGZhbHNlKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0NsaXBib2FyZFd4
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwCmluZGV4IDYxMDA4MzEu
LjI1YmVmNTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ2xpcGJvYXJkV3guY3BwCkBAIC0zNyw2ICszNywx
MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCitQYXNzUmVmUHRyPENsaXBib2FyZD4g
Q2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBEcmFnRGF0YSosIEZyYW1l
KikKK3sKKyAgICByZXR1cm4gMDsKK30KKwogQ2xpcGJvYXJkV3g6OkNsaXBib2FyZFd4KENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpIAogICAgIDogQ2xpcGJv
YXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L0RyYWdEYXRhV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcApp
bmRleCAyNzhmMTIzLi4zNWUzNzUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0Ry
YWdEYXRhV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5o
IgogCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAKQEAgLTY2LDExICs2NSw2IEBAIENvbG9yIERyYWdE
YXRhOjphc0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5KSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotICAgIAogYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwo=
</data>
<flag name="review"
          id="50684"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="50685"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>