<?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>127068</bug_id>
          
          <creation_ts>2014-01-15 15:00:44 -0800</creation_ts>
          <short_desc>Web Inspector: Page should use std::unique_ptr for InspectorController</short_desc>
          <delta_ts>2014-01-18 11:11:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>andersca</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>968482</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-15 15:00:44 -0800</bug_when>
    <thetext>I think i&apos;ll split this task from https://bugs.webkit.org/show_bug.cgi?id=126771 since this refactoring step mostly deals with call sites non-inspector code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968521</commentid>
    <comment_count>1</comment_count>
      <attachid>221317</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-15 16:47:08 -0800</bug_when>
    <thetext>Created attachment 221317
v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968522</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-15 16:48:29 -0800</bug_when>
    <thetext>Attachment 221317 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageDebuggable.cpp&apos;, u&apos;Source/WebCore/platform/graphics/texmap/coordinated/CompositingCoordinator.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.h&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/InspectorClientEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_view.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebinspector.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/WebInspector.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/WebNodeHighlighter.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.cpp&apos;, u&apos;Source/WebKit/win/WebInspector.cpp&apos;, u&apos;Source/WebKit/win/WebNodeHighlight.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit/win/WebNodeHighlight.cpp:168:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebNodeHighlight.cpp:168:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 43 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>968523</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-15 16:48:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/15830904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968525</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-15 16:49:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/15830903&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968529</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-15 16:57:31 -0800</bug_when>
    <thetext>Filed check-webkit-style bug: https://bugs.webkit.org/show_bug.cgi?id=127076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968530</commentid>
    <comment_count>6</comment_count>
      <attachid>221317</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-15 17:00:48 -0800</bug_when>
    <thetext>Comment on attachment 221317
v1

Attachment 221317 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5536423700594688</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968553</commentid>
    <comment_count>7</comment_count>
      <attachid>221317</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2014-01-15 18:11:20 -0800</bug_when>
    <thetext>Comment on attachment 221317
v1

Attachment 221317 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/5462541673168896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968560</commentid>
    <comment_count>8</comment_count>
      <attachid>221317</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-15 18:54:33 -0800</bug_when>
    <thetext>Comment on attachment 221317
v1

r=me in principle.  But you should fix the builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968565</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-15 19:39:04 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=221317&amp;action=review

&gt; Source/WebCore/inspector/InspectorController.h:80
&gt; +    explicit InspectorController(Page&amp;, InspectorClient*);

The explicit keyword is only needed on constructors with a single parameter, to prevent implicit conversions. It is not needed here (and on plenty of other cases in this patch).

&gt; Source/WebCore/inspector/WorkerInspectorController.cpp:137
&gt; +    m_frontendChannel.reset();

I think we prefer &quot;= nullptr&quot; instead of reset. I certainly have with Inspector unique_ptrs. Am I out of date on that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968793</commentid>
    <comment_count>10</comment_count>
      <attachid>221384</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-16 09:41:31 -0800</bug_when>
    <thetext>Created attachment 221384
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968794</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-16 09:43:12 -0800</bug_when>
    <thetext>Attachment 221384 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorController.h&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorOverlay.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.cpp&apos;, u&apos;Source/WebCore/inspector/WorkerInspectorController.h&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageDebuggable.cpp&apos;, u&apos;Source/WebCore/platform/graphics/texmap/coordinated/CompositingCoordinator.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.cpp&apos;, u&apos;Source/WebCore/workers/WorkerGlobalScope.h&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.cpp&apos;, u&apos;Source/WebCore/workers/WorkerThread.cpp&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/InspectorClientEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_view.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebinspector.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/WebInspector.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/WebNodeHighlighter.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.cpp&apos;, u&apos;Source/WebKit/win/WebInspector.cpp&apos;, u&apos;Source/WebKit/win/WebNodeHighlight.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorFrontendClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebInspector.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit/win/WebNodeHighlight.cpp:168:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebNodeHighlight.cpp:168:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 43 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>968798</commentid>
    <comment_count>12</comment_count>
      <attachid>221384</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-16 09:56:29 -0800</bug_when>
    <thetext>Comment on attachment 221384
v2

Attachment 221384 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/5411048974712832</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968971</commentid>
    <comment_count>13</comment_count>
      <attachid>221420</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-16 15:26:04 -0800</bug_when>
    <thetext>Created attachment 221420
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968972</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-16 15:28:54 -0800</bug_when>
    <thetext>Attachment 221420 did not pass style-queue:


ERROR: Source/WebKit/win/WebNodeHighlight.cpp:168:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebNodeHighlight.cpp:168:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 43 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>968980</commentid>
    <comment_count>15</comment_count>
      <attachid>221420</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-16 16:01:35 -0800</bug_when>
    <thetext>Comment on attachment 221420
v3

Attachment 221420 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/5504649196994560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968988</commentid>
    <comment_count>16</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-16 16:38:12 -0800</bug_when>
    <thetext>I think I&apos;ve addressed all of the build failures, but EWS is uncooperative at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969335</commentid>
    <comment_count>17</comment_count>
      <attachid>221420</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-17 17:15:49 -0800</bug_when>
    <thetext>Comment on attachment 221420
v3

rs=me

I suggest when you land this that you watch the bots just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969480</commentid>
    <comment_count>18</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-18 11:11:50 -0800</bug_when>
    <thetext>Committed r162264: &lt;http://trac.webkit.org/changeset/162264&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221317</attachid>
            <date>2014-01-15 16:47:08 -0800</date>
            <delta_ts>2014-01-16 09:41:27 -0800</delta_ts>
            <desc>v1</desc>
            <filename>bug-127068-20140115164708.patch</filename>
            <type>text/plain</type>
            <size>83830</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q2NGQ5ZjdhOTEwYjdi
YmNlY2MxNDZjMzg1MTA0YjI4OTNmOWFiOS4uODMyOTJjZDYxZWJiZjI0OTI3OWEwYzBjYTIzYmMx
N2YyNDRjM2EwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxNC0wMS0xNiAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdl
IHNob3VsZCB1c2Ugc3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFBhZ2UgYW5k
IFdvcmtlckdsb2JhbFNjb3BlIGtlZXAgYSBzdGQ6OnVuaXF1ZV9wdHIgdG8gSW5zcGVjdG9yQ29u
dHJvbGxlcgorICAgICAgICBhbmQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci4gU3RvcmUgcGFn
ZSByZWZlcmVuY2VzIGFuZCByZXR1cm4gY29udHJvbGxlcgorICAgICAgICByZWZlcmVuY2VzIHdo
ZXJlIHBvc3NpYmxlLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBzaXRlcyB0byB1c2UgYW4gSW5z
cGVjdG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisgICAgICAgIENvbnZlcnQgaW5zdGFudGlhdGlv
bnMgb2YgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgdG8gdXNlIHN0ZDo6dW5pcXVlX3B0ci4KKyAg
ICAgICAgQ29udmVydCBJbnNwZWN0b3JPdmVybGF5IHRvIGtlZXAgUGFnZSByZWZlcmVuY2VzLgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c3VwcG9y
dHNQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0
c1JpY2hTb3VyY2VJbmZvKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjppbnNwZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRldmVsb3BlckV4dHJhc0VuYWJsZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNoYW5nZUF0dGFj
aGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3VGFiKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRv
d0hlaWdodCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yT3ZlcmxheTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aW5zdHJ1bWVudGF0aW9uRm9yUGFnZSk6IHJlbW92ZSBudWxsIGNo
ZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6Omluc3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2JhbFNj
b3BlKTogcmVtb3ZlIG51bGwgY2hlY2tzLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmFkZEluc3BlY3RFbGVtZW50SXRlbSk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6aW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6
aGFzTG9jYWxEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6cGFy
ZW50UHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6
OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6c2V0SW5k
aWNhdGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRp
bmdDb29yZGluYXRvcjo6c3luY0Rpc3BsYXlTdGF0ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVn
aW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRD
YW5jZWxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3Bl
Y3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xvc2VEdW1teUlu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0SW5zcGVj
dG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aDogcmVtb3ZlIGNsZWFySW5zcGVjdG9yKCkuIAorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6Ondvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdFRvV29y
a2VyR2xvYmFsU2NvcGVJbnNwZWN0b3JUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2Nvbm5l
Y3RGcm9tV29ya2VyR2xvYmFsU2NvcGVJbnNwZWN0b3JUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OmRpc3BhdGNoT25JbnNwZWN0b3JCYWNrZW5kVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkU2h1dGRvd25GaW5p
c2hUYXNrOjpwZXJmb3JtVGFzayk6CisKIDIwMTQtMDEtMTUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY2FwdHVyZSBwcm9iZSBzYW1wbGVz
IG9uIHRoZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYjE4ZTUxNGIzZjg2NWFlOThhYjAy
YzBkOGJlNzY5Yjg1MzI3YmUyMS4uYjU3MmJhN2YwOTM4YzJkM2M2NzYzM2FlN2NjMDBjNTQwZmEz
NTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE0LTAxLTE1ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2Ug
c2hvdWxkIHVzZSBzdGQ6OnVuaXF1ZV9wdHIgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzA2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBz
aXRlcyB0byB1c2UgYSBJbnNwZWN0b3JDb250cm9sbGVyIHJlZmVyZW5jZS4KKyAgICAgICAgQ29u
dmVydCBpbnN0YW50aWF0aW9ucyBvZiBJbnNwZWN0b3JGcm9udGVuZENsaWVudCB0byB1c2Ugc3Rk
Ojp1bmlxdWVfcHRyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVh
dGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6b3Blbklu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
ZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfaW5zcGVjdG9yX2Ns
b3NlKToKKwogMjAxNC0wMS0xNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF1bV0sxXSBJbXBsZW1lbnQgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZs
IHRvIGZpeCB0aGUgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0YTMzZWY0NDY5OGMyZGIwNmE3
MjVmYmU3MTU4OTYwNjY4Yzg3MmU0Li5jOTE5YTI0NmFhNDYwNTcwMTBmYmVmNGZjMmVhM2ExNzY3
OTdhNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMDEtMTUgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFn
ZSBzaG91bGQgdXNlIHN0ZDo6dW5pcXVlX3B0ciBmb3IgSW5zcGVjdG9yQ29udHJvbGxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MDY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBjYWxs
IHNpdGVzIHRvIHVzZSBhIEluc3BlY3RvckNvbnRyb2xsZXIgcmVmZXJlbmNlLgorICAgICAgICBD
b252ZXJ0IGluc3RhbnRpYXRpb25zIG9mIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHRvIHVzZSBz
dGQ6OnVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpwYWludFdlYlZpZXcpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0d2ViaW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9w
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jfc2hvdyk6CisgICAgICAgICh3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9pbnNwZWN0X25vZGUpOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jf
aW5zcGVjdF9jb29yZGluYXRlcyk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9jbG9z
ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9leGVjdXRlX3NjcmlwdCk6CisKIDIw
MTQtMDEtMTUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dLMV0gQWRkIFByb2dyZXNzVHJhY2tlckNsaWVudCBpbXBsZW1lbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGY4Yjk2MDI0OWMzMjc4YWQ2ODdiOWY2NTQ1OTU1OTk3ZWViZTM2ZWUu
LjkyMmE0MjA1MjVlNmY2NmEzODY0NmEyM2QzMjAzNTA1NzYwODAxZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNC0wMS0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdlIHNob3VsZCB1c2Ugc3RkOjp1bmlx
dWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGNhbGwgc2l0ZXMgdG8gdXNlIGEgSW5zcGVj
dG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisgICAgICAgIENvbnZlcnQgaW5zdGFudGlhdGlvbnMg
b2YgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgdG8gdXNlIHN0ZDo6dW5pcXVlX3B0ci4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKC1bV2Vi
SW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBkZXN0cm95SW5zcGVjdG9yVmlldzpdKToKKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0
b3Igc2hvd1dpbmRvd10pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgaXNKYXZhU2NyaXB0UHJv
ZmlsaW5nRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3Igc2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvciBjbG9zZTpdKToKKyAg
ICAgICAgKC1bV2ViSW5zcGVjdG9yIGV2YWx1YXRlSW5Gcm9udGVuZDpjYWxsSWQ6c2NyaXB0Ol0p
OgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW06CisgICAgICAg
ICgtW1dlYk5vZGVIaWdobGlnaHRlciBoaWdobGlnaHRdKToKKwogMjAxNC0wMS0xNSAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1pc3NpbmcgUmVu
ZGVyT2JqZWN0OjpzdHlsZSgpIHN5bWJvbCBpbiBXZWJET01PcGVyYXRpb25zLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggMWI5Yjc0NmUyOTE3YTY5NzBmYTk0ZmJhZDQ3MGE3NTk2NzE1MzIwMi4uMGQw
MDJhYWE1ZmM3ZTM2NjBhMjYxZjRlMTM3YmU0ZDQ5MjFhNGVjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1IEBACisyMDE0LTAxLTE1ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2Ugc2hvdWxkIHVzZSBzdGQ6OnVuaXF1ZV9w
dHIgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBzaXRlcyB0byB1c2UgYSBJbnNwZWN0b3JD
b250cm9sbGVyIHJlZmVyZW5jZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJv
eUluc3BlY3RvclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Om9u
Q2xvc2UpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0
b3I6OnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpjbG9zZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3I6OmlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZCk6CisgICAgICAgICogV2ViTm9kZUhpZ2hsaWdodC5j
cHA6CisgICAgICAgIChXZWJOb2RlSGlnaGxpZ2h0Ojp1cGRhdGUpOgorCiAyMDE0LTAxLTEwICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVHdlYWsgUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYxZjRiZjJmZmE3YmY3
YmM5YTU1ZGMxNWRkZmQxY2I3NDg1ZGFkOGIuLjc3NTQwNjIyZjJjYzNmNDAzMDE2M2I5OGY2MGM5
YzRlN2I4MmI4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0wMS0xNSAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdl
IHNob3VsZCB1c2Ugc3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGNhbGwg
c2l0ZXMgdG8gdXNlIGEgSW5zcGVjdG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3Rv
clBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNob3cpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yOjpldmFsdWF0ZVNjcmlwdEZvclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzaG93UmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlw
dERlYnVnZ2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3Jp
cHREZWJ1Z2dpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNldEphdmFTY3Jp
cHRQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzdGFy
dEphdmFTY3JpcHRQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0
b3BKYXZhU2NyaXB0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpz
dGFydFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0b3BQ
YWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6
OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCk6CisKIDIwMTQtMDEtMTUgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYiBwcm9j
ZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHdoZW4gcHJpbnRpbmcgaW4gc3luY2hyb25vdXMgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmNzdjMzFiNzRhNzVhNDI3ZTZjYWIzZjgwMmI5ZDAxM2I2
ZWFhMzY0Li4xN2RlNWM2N2RiZGEwMTNjMTE2NTYzNWYyZGEwZmFjYjczNzUwYmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtMjc2MCw3ICsyNzYwLDcgQEAgX19aTjdXZWJDb3JlMTlJbnNwZWN0
b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9u
dGUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5k
RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZEVsUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU4zV1RGMTBQYXNzT3duUHRySU5TXzIzSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRFRUUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFTlN0M19fMTEwdW5pcXVlX3B0cklOU18yM0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50RU5TMV8xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRUUKIF9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNG
cm9tSW50ZXJuYWxzRWlpCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI0c2hvd0V2
CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMmI4ZGQ0M2NmNTFh
ZmZlZmQzNGNhMDFkZGI1MmIxMWU0MWYzNTUwYi4uNzVhMWY3M2ZhZWJhMTc2OWFkNzU2YmY5NzA3
MDMyNTE0ZmZiOTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1
cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCk7CisgICAgcmV0dXJuIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5wcm9maWxlckVuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMzksNyArMTM5LDcg
QEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGJvb2wgZW5hYmxlZCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZW5h
YmxlZCgpOworICAgIGJvb2wgZW5hYmxlZCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5l
bmFibGVkKCk7CiAgICAgQVNTRVJUKGVuYWJsZWQgfHwgIXRoaXNPYmplY3QtPmRlYnVnZ2VyKCkp
OwogICAgIEFTU0VSVChlbmFibGVkIHx8ICFzdXBwb3J0c1Byb2ZpbGluZyh0aGlzT2JqZWN0KSk7
CiAgICAgcmV0dXJuIGVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZGU3ODc1MTgzNTYyMWNm
NWQ2ZTE3MmMxYWJhNjM3NGIwZGM2YzZkYS4uMDc2MzFjZjg0N2JiNDBmOGRkNjM1NTZkMzBjYjA3
ZDcwMmUyZWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgTm9k
ZTo6aW5zcGVjdCgpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoZG9jdW1lbnQo
KS5wYWdlKCkpCi0gICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmluc3BlY3QodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuaW5zcGVjdCh0aGlzKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggOWE0ZjExYTZkYjE5
Mzc4OGFmN2Q0NjkzNDUwMzQxMDRlYzNjNDQzZS4uODQ0MzAyYjQ0MDkzN2NiNjZjNDA4YzYzNzQy
ZGRmMTNkNGI4NWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtODIsMTAgKzgyLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCkKK0luc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiAgICAgOiBtX2luc3RydW1lbnRp
bmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUluamVjdGVkU2NyaXB0TWFu
YWdlcj4oKnRoaXMsIFBhZ2VJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKLSAgICAsIG1f
b3ZlcmxheShJbnNwZWN0b3JPdmVybGF5OjpjcmVhdGUocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkK
KyAgICAsIG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2Us
IGluc3BlY3RvckNsaWVudCkpCiAgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxs
cHRyKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0
b3JDbGllbnQpCkBAIC0xMDEsNyArMTAxLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdl
bnQpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUoaW5zcGVjdG9yQWdlbnRQdHIpKTsK
IAotICAgIGF1dG8gcGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdl
QWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgaW5zcGVjdG9yQ2xpZW50
LCBtX292ZXJsYXkuZ2V0KCkpOworICAgIGF1dG8gcGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgJnBh
Z2UsIGluc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX3BhZ2VBZ2VudCA9
IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptb3ZlKHBhZ2VB
Z2VudFB0cikpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3Bl
Y3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAg
ICAgbV9yZXNvdXJjZUFnZW50ID0gcmVzb3VyY2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptb3ZlKHJlc291cmNlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gcnVudGlt
ZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PihtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBwYWdlLCBw
YWdlQWdlbnQpOworICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlUnVudGltZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpLCAmcGFnZSwgcGFnZUFnZW50KTsKICAgICBJbnNwZWN0b3JSdW50
aW1lQWdlbnQqIHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5nZXQoKTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptb3ZlKHJ1bnRpbWVBZ2VudFB0cikpOwogCkBAIC0xNTQsNyArMTU0
LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdl
LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2RvbURlYnVnZ2VyQWdlbnQgPSBk
b21EZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUo
ZG9tRGVidWdnZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBwcm9maWxlckFnZW50UHRyID0gSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwg
Y29uc29sZUFnZW50LCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSk7CisgICAg
YXV0byBwcm9maWxlckFnZW50UHRyID0gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgY29uc29sZUFnZW50LCAmcGFnZSwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwogICAgIG1fcHJvZmlsZXJBZ2VudCA9IHByb2ZpbGVyQWdl
bnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShwcm9maWxlckFnZW50
UHRyKSk7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAg
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlci5nZXQoKSkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9ySW5wdXRBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlKSk7
CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5wdXRBZ2Vu
dD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmcGFnZSkpOwogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckxheWVyVHJlZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsK
QEAgLTE5NSwyMyArMTk1LDE3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250
cm9sbGVyKCkKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yQ2xpZW50KTsKIH0KIAotUGFzc093blB0
cjxJbnNwZWN0b3JDb250cm9sbGVyPiBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGUoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JDb250cm9sbGVyKHBhZ2UsIGNsaWVudCkpOwotfQotCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewogICAgIGRpc2Nvbm5lY3RG
cm9udGVuZCgpOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7CiAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwogICAgIG1faW5zcGVj
dG9yQ2xpZW50ID0gMDsKLSAgICBtX3BhZ2UgPSAwOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQordm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQogewotICAgIG1faW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKKyAgICBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50ID0gc3RkOjptb3ZlKGluc3BlY3RvckZyb250ZW5kQ2xpZW50
KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29u
c3QKQEAgLTIzNCw3ICsyMjgsNyBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90
ZUZyb250ZW5kKCkgY29uc3QKIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0
b3JGcm9udGVuZENsaWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuZ2V0KCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAgLTI2OCw3ICsyNjIsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CiAgICAgaWYgKCFtX2hhc1JlbW90ZUZyb250ZW5kKQotICAgICAgICBtX3BhZ2UtPnJlbW90ZUlu
c3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNw
ZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwogI2VuZGlmCiB9CiAKQEAgLTI5MCw3ICsyODQs
NyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoIW1faGFzUmVtb3RlRnJvbnRlbmQp
Ci0gICAgICAgIG1fcGFnZS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsK
KyAgICAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAj
ZW5kaWYKIH0KIApAQCAtMzY1LDcgKzM1OSw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKTsKIH0K
IAotUGFnZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CitQYWdl
JiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYWdlOwogfQpAQCAtNDUzLDEwICs0NDcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZENvbXBvc2l0ZSgpCiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCkuZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCgpOworICAgIHJldHVybiBtX3BhZ2Uuc2V0dGluZ3MoKS5kZXZlbG9wZXJFeHRyYXNF
bmFibGVkKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVj
dGVkU2NyaXB0U3RhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZDZhNzBj
NTNlM2FiOGQ5NmY2MGY2ZmU5NTA1YTUyM2ZlYTY0Y2I1Ny4uOWQ4MjhhNjI2MWQ0YWZlMjI3ZDBi
ZjVmMThjMTYzM2E0YzA2YWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC03NywxOCArNzcsMTggQEAgY2xhc3MgSW5zcGVjdG9yQ29u
dHJvbGxlciBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JDb250
cm9sbGVyKFBhZ2UmLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JD
b250cm9sbGVyKCk7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JDb250cm9sbGVy
PiBjcmVhdGUoUGFnZSosIEluc3BlY3RvckNsaWVudCopOwogICAgIHZvaWQgaW5zcGVjdGVkUGFn
ZURlc3Ryb3llZCgpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7Ci0gICAgUGFnZSogaW5z
cGVjdGVkUGFnZSgpIGNvbnN0OworICAgIFBhZ2UmIGluc3BlY3RlZFBhZ2UoKSBjb25zdDsKIAog
ICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIHZvaWQgc2V0SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4pOwor
ICAgIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50Pik7CiAgICAgYm9vbCBoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCgpIGNvbnN0OwogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwg
RE9NV3JhcHBlcldvcmxkJik7CiAKQEAgLTE0NCwxMyArMTQ0LDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rpb24oKSBPVkVSUklERTsKIAog
cHJpdmF0ZToKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQq
KTsKLQogICAgIGZyaWVuZCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JQ
YWdlKFBhZ2UqKTsKIAogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1l
bnRpbmdBZ2VudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFn
ZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIE93blB0cjxJbnNwZWN0b3JPdmVybGF5
PiBtX292ZXJsYXk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvck92ZXJsYXk+IG1fb3Zl
cmxheTsKIAogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7
CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CkBAIC0xNjQsOSArMTYyLDkgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci0gICAgT3duUHRyPElu
c3BlY3RvckZyb250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVu
ZENsaWVudDsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0gICAgUGFnZSogbV9wYWdlOworICAgIFBhZ2UmIG1fcGFn
ZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9u
Q29va2llczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBhNmNmMDI3NGUwNGQ2OWI4MzY2MGIyMDZm
MDc1ODM5ZTQzMDU1Y2Q5Li40ZTg1YmM1MzI5OTVlZDVkZGE5NDk2ODZjNGRiNmFkMGRlYTlmOGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0xODIsOCArMTgyLDggQEAgYm9vbCBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpjYW5BdHRhY2hXaW5kb3coKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBi
ZSB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0gaW5zcGVjdG9yIHNpemUuCi0g
ICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+
aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKLSAg
ICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmlu
c3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKKyAgICB1
bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNw
ZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAgdW5z
aWduZWQgaW5zcGVjdGVkUGFnZVdpZHRoID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0
ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKICAgICB1bnNpZ25l
ZCBtYXhpbXVtQXR0YWNoZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogbWF4aW11bUF0
dGFjaGVkSGVpZ2h0UmF0aW87CiAgICAgcmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBt
YXhpbXVtQXR0YWNoZWRIZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVk
UGFnZVdpZHRoOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6c2V0RG9ja2luZ1VuYXZhaWxhYmxlKGJvb2wgdW5hdmFpbGFibGUpCiAKIHZv
aWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWln
aHQodW5zaWduZWQgaGVpZ2h0KQogewotICAgIHVuc2lnbmVkIHRvdGFsSGVpZ2h0ID0gbV9mcm9u
dGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJs
ZUhlaWdodCgpOworICAgIHVuc2lnbmVkIHRvdGFsSGVpZ2h0ID0gbV9mcm9udGVuZFBhZ2UtPm1h
aW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAg
ICAgdW5zaWduZWQgYXR0YWNoZWRIZWlnaHQgPSBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVp
Z2h0KGhlaWdodCwgdG90YWxIZWlnaHQpOwogICAgIG1fc2V0dGluZ3MtPnNldFByb3BlcnR5KGlu
c3BlY3RvckF0dGFjaGVkSGVpZ2h0U2V0dGluZywgU3RyaW5nOjpudW1iZXIoYXR0YWNoZWRIZWln
aHQpKTsKICAgICBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodChhdHRhY2hlZEhlaWdodCk7CkBAIC0y
MDMsNyArMjAzLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCiAKIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0
aCkKIHsKLSAgICB1bnNpZ25lZCB0b3RhbFdpZHRoID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFt
ZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRoKCkgKyBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3Bl
Y3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKKyAgICB1bnNp
Z25lZCB0b3RhbFdpZHRoID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlz
aWJsZVdpZHRoKCkgKyBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWlu
RnJhbWUoKS52aWV3KCktPnZpc2libGVXaWR0aCgpOwogICAgIHVuc2lnbmVkIGF0dGFjaGVkV2lk
dGggPSBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgsIHRvdGFsV2lkdGgpOwog
ICAgIHNldEF0dGFjaGVkV2luZG93V2lkdGgoYXR0YWNoZWRXaWR0aCk7CiB9CkBAIC0yMTEsOCAr
MjExLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hl
ZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwot
ICAgIFBhZ2UqIHBhZ2UgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKTsK
LSAgICBGcmFtZSYgbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgRnJhbWUmIG1h
aW5GcmFtZSA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFt
ZSgpOwogICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChtYWluRnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KCksICJfYmxhbmsiKTsKIAogICAgIGJv
b2wgY3JlYXRlZDsKQEAgLTI1Nyw3ICsyNTYsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OnNldEF0dGFjaGVkV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQogCiB2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgp
CiB7Ci0gICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdG9yQ29udHJv
bGxlci0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQo
KTsKKyAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0b3JDb250cm9s
bGVyLT5pbnNwZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7
CiAgICAgU3RyaW5nIHZhbHVlID0gbV9zZXR0aW5ncy0+Z2V0UHJvcGVydHkoaW5zcGVjdG9yQXR0
YWNoZWRIZWlnaHRTZXR0aW5nKTsKICAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1
ZS5pc0VtcHR5KCkgPyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiB2YWx1ZS50b1VJbnQoKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRl
eCBmMTVlMjAzNDFmZWZkY2UzNzBkZTA0YzkzODdmMGY4YzJlNDM4NzE2Li4wYmQ4NjliOThiMDg5
M2I1ZmIzMTkyNmY2NTcxYmY2NzQzMjIxNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0yMjgsMTAgKzIyOCw4IEBAIHN0YXRpYyB2b2lk
IGJ1aWxkTm9kZUhpZ2hsaWdodChOb2RlKiBub2RlLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29u
c3QgSGlnaGxpZ2h0CiAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwgcmVnaW9u
LCBoaWdobGlnaHRDb25maWcsIGhpZ2hsaWdodCk7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkUXVh
ZEhpZ2hsaWdodChQYWdlKiBwYWdlLCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hs
aWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hsaWdodCkKK3N0YXRp
YyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhp
Z2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hsaWdodCkKIHsK
LSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKICAgICBoaWdobGlnaHQtPnNldERhdGFG
cm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7CiAgICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxp
Z2h0VHlwZVJlY3RzOwogICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKHF1YWQpOwpAQCAtMjM5
LDcgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChQYWdlKiBwYWdlLCBj
b25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hsaWdoCiAKIH0gLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQogCi1JbnNwZWN0b3JPdmVybGF5OjpJbnNwZWN0b3JPdmVybGF5KFBhZ2UqIHBhZ2Us
IEluc3BlY3RvckNsaWVudCogY2xpZW50KQorSW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3Zl
cmxheShQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcGFnZShw
YWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewpAQCAtMjc0LDcgKzI3Miw3IEBAIHZvaWQg
SW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCogaGlnaGxpZ2h0KSBjb25z
dAogICAgIGlmIChtX2hpZ2hsaWdodE5vZGUpCiAgICAgICAgIGJ1aWxkTm9kZUhpZ2hsaWdodCht
X2hpZ2hsaWdodE5vZGUuZ2V0KCksIG51bGxwdHIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZywgaGln
aGxpZ2h0KTsKICAgICBlbHNlCi0gICAgICAgIGJ1aWxkUXVhZEhpZ2hsaWdodChtX3BhZ2UsICpt
X2hpZ2hsaWdodFF1YWQsIG1fcXVhZEhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsKKyAgICAg
ICAgYnVpbGRRdWFkSGlnaGxpZ2h0KCptX2hpZ2hsaWdodFF1YWQsIG1fcXVhZEhpZ2hsaWdodENv
bmZpZywgaGlnaGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRQYXVzZWRJ
bkRlYnVnZ2VyTWVzc2FnZShjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCkBAIC0zMDAsNyArMjk4LDcg
QEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUsIGNvbnN0
IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2gKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxp
Z2h0UXVhZChQYXNzT3duUHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmln
JiBoaWdobGlnaHRDb25maWcpCiB7CiAgICAgaWYgKG1fcXVhZEhpZ2hsaWdodENvbmZpZy51c2VQ
YWdlQ29vcmRpbmF0ZXMpCi0gICAgICAgICpxdWFkIC09IG1fcGFnZS0+bWFpbkZyYW1lKCkudmll
dygpLT5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgKnF1YWQgLT0gbV9wYWdlLm1haW5GcmFtZSgp
LnZpZXcoKS0+c2Nyb2xsT2Zmc2V0KCk7CiAKICAgICBtX3F1YWRIaWdobGlnaHRDb25maWcgPSBo
aWdobGlnaHRDb25maWc7CiAgICAgbV9oaWdobGlnaHRRdWFkID0gcXVhZDsKQEAgLTMyNCw3ICsz
MjIsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXco
KTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpOwogICAg
IGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzIsOCArMzMwLDggQEAgdm9pZCBJ
bnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUoKQogICAgIEludFNpemUgdmlld3BvcnRTaXplID0gdmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOwogICAgIEludFNpemUgZnJhbWVWaWV3RnVs
bFNpemUgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVT
Y3JvbGxiYXJzKS5zaXplKCk7CiAgICAgSW50U2l6ZSBzaXplID0gbV9zaXplLmlzRW1wdHkoKSA/
IGZyYW1lVmlld0Z1bGxTaXplIDogbV9zaXplOwotICAgIG92ZXJsYXlQYWdlKCktPnNldFBhZ2VT
Y2FsZUZhY3RvcihtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpLCBJbnRQb2ludCgpKTsKLSAgICBz
aXplLnNjYWxlKG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIG92ZXJsYXlQYWdlKCkt
PnNldFBhZ2VTY2FsZUZhY3RvcihtX3BhZ2UucGFnZVNjYWxlRmFjdG9yKCksIEludFBvaW50KCkp
OworICAgIHNpemUuc2NhbGUobV9wYWdlLnBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICBvdmVybGF5
Vmlldy0+cmVzaXplKHNpemUpOwogCiAgICAgLy8gQ2xlYXIgY2FudmFzIGFuZCBwYWludCB0aGlu
Z3MuCkBAIC03MTAsNyArNzA4LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3Bl
Y3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY28KICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBoaWdobGlnaHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwogCiAgICAgLy8gVGhlIG1haW4gdmlldydzIHNjcm9sbCBvZmZzZXQgaXMgc2hhcmVk
IGFjcm9zcyBhbGwgcXVhZHMuCi0gICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1fcGFnZS0+bWFp
bkZyYW1lKCkudmlldygpOworICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtX3BhZ2UubWFpbkZy
YW1lKCkudmlldygpOwogICAgIGhpZ2hsaWdodE9iamVjdC0+c2V0T2JqZWN0KCJzY3JvbGwiLCBi
dWlsZE9iamVjdEZvclBvaW50KCFtYWluVmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkgPyBtYWlu
Vmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSA6IEZsb2F0UG9pbnQoKSkpOwog
CiAgICAgaGlnaGxpZ2h0T2JqZWN0LT5zZXRBcnJheSgiZnJhZ21lbnRzIiwgaGlnaGxpZ2h0RnJh
Z21lbnRzLnJlbGVhc2UoKSk7CkBAIC03MzgsNyArNzM2LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3UXVhZEhpZ2hsaWdodCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhpZ2hsaWdo
dCBoaWdobGlnaHQ7Ci0gICAgYnVpbGRRdWFkSGlnaGxpZ2h0KG1fcGFnZSwgKm1faGlnaGxpZ2h0
UXVhZCwgbV9xdWFkSGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKKyAgICBidWlsZFF1YWRI
aWdobGlnaHQoKm1faGlnaGxpZ2h0UXVhZCwgbV9xdWFkSGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxp
Z2h0KTsKICAgICBldmFsdWF0ZUluT3ZlcmxheSgiZHJhd1F1YWRIaWdobGlnaHQiLCBidWlsZE9i
amVjdEZvckhpZ2hsaWdodChoaWdobGlnaHQpKTsKIH0KIApAQCAtNzU3LDcgKzc1NSw3IEBAIFBh
Z2UqIEluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKICAgICBmaWxsV2l0aEVtcHR5Q2xp
ZW50cyhwYWdlQ2xpZW50cyk7CiAgICAgbV9vdmVybGF5UGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdl
KHBhZ2VDbGllbnRzKSk7CiAKLSAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBtX3BhZ2UtPnNldHRp
bmdzKCk7CisgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9wYWdlLnNldHRpbmdzKCk7CiAgICAg
U2V0dGluZ3MmIG92ZXJsYXlTZXR0aW5ncyA9IG1fb3ZlcmxheVBhZ2UtPnNldHRpbmdzKCk7CiAK
ICAgICBvdmVybGF5U2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KHNldHRpbmdzLnN0YW5k
YXJkRm9udEZhbWlseSgpKTsKQEAgLTc5OCw3ICs3OTYsNyBAQCBQYWdlKiBJbnNwZWN0b3JPdmVy
bGF5OjpvdmVybGF5UGFnZSgpCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNpemUpCiB7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzZXREYXRhID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKLSAgICByZXNldERhdGEtPnNldE51bWJlcigiZGV2aWNlU2NhbGVGYWN0b3Ii
LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHJlc2V0RGF0YS0+c2V0TnVtYmVy
KCJkZXZpY2VTY2FsZUZhY3RvciIsIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBy
ZXNldERhdGEtPnNldE9iamVjdCgidmlld3BvcnRTaXplIiwgYnVpbGRPYmplY3RGb3JTaXplKHZp
ZXdwb3J0U2l6ZSkpOwogICAgIHJlc2V0RGF0YS0+c2V0T2JqZWN0KCJmcmFtZVZpZXdGdWxsU2l6
ZSIsIGJ1aWxkT2JqZWN0Rm9yU2l6ZShmcmFtZVZpZXdGdWxsU2l6ZSkpOwogICAgIGV2YWx1YXRl
SW5PdmVybGF5KCJyZXNldCIsIHJlc2V0RGF0YS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggYjUyOTIyODU2MTFkM2I2NWYzNzVl
YzMyMjcxOGIzNDljYWQwZjMyOC4uNjA4ZGZiNTk5YjBiODAwNjI3ZDVlYzM3ODE3ODk4MzcxYjY4
ZWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCkBA
IC0xMDUsMTAgKzEwNSw3IEBAIHN0cnVjdCBIaWdobGlnaHQgewogY2xhc3MgSW5zcGVjdG9yT3Zl
cmxheSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5zcGVjdG9yT3ZlcmxheT4gY3JlYXRlKFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNw
ZWN0b3JPdmVybGF5KHBhZ2UsIGNsaWVudCkpOwotICAgIH0KKyAgICBleHBsaWNpdCBJbnNwZWN0
b3JPdmVybGF5KFBhZ2UmLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB+SW5zcGVjdG9yT3Zlcmxh
eSgpOwogCiAgICAgdm9pZCB1cGRhdGUoKTsKQEAgLTEzMCw4ICsxMjcsNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGZyZWVQYWdlKCk7CiBwcml2YXRlOgotICAgIEluc3BlY3Rvck92ZXJsYXkoUGFn
ZSosIEluc3BlY3RvckNsaWVudCopOwotCiAgICAgdm9pZCBkcmF3R3V0dGVyKCk7CiAgICAgdm9p
ZCBkcmF3Tm9kZUhpZ2hsaWdodCgpOwogICAgIHZvaWQgZHJhd1F1YWRIaWdobGlnaHQoKTsKQEAg
LTE0MSw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwogICAgIHZvaWQgZXZh
bHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZT4gYXJndW1lbnQpOwogCi0gICAgUGFnZSogbV9wYWdlOworICAgIFBh
Z2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBt
X3BhdXNlZEluRGVidWdnZXJNZXNzYWdlOwogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodE5v
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0Fn
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5j
cHAKaW5kZXggYTIyMzhlOWZhMDU1ZDY3NGY5ZGRjYzdmOTAxY2M1ZjNjNmRhMWVhNy4uODM0YTRk
ODNlNmNkNzg3OTc0YWU1MzZiMWI0NjhmOGUxM2QxZWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAtMTA1LDE2ICsxMDUsMTIg
QEAgdm9pZCBJbnN0cnVtZW50aW5nQWdlbnRzOjpyZXNldCgpCiBJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50YXRpb25Gb3JQYWdlKFBhZ2UqIHBhZ2UpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFn
ZSA/IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCkgOiBudWxscHRyOwogfQogCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25G
b3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUp
CiB7Ci0gICAgaWYgKFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3b3Jr
ZXJHbG9iYWxTY29wZS0+d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1
cm4gY29udHJvbGxlci0+bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpOwotICAgIHJldHVybiAw
OworICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZSA/IHdvcmtlckdsb2JhbFNjb3BlLT53b3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpIDogbnVs
bHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZTQx
NDA5YWMxNWZiZDIzNmY5OTc1OTBhYWQzNzNhMDFkYzhhYzQuLjM3NzEwNGJhMWQzN2Y0ZmU4Yzc4
ZjEzNzhmZjVkNzU4NTk3NGUwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU1LDcgKzU1LDYgQEAKICNp
bmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIK
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCkBA
IC02NiwzNiArNjUsMzcgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIFBhZ2VJbnNwZWN0b3JQcm94eSA6
IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFBhZ2VJbnNwZWN0b3JQcm94eShXb3JrZXJH
bG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSkgeyB9CisgICAgZXhwbGljaXQgUGFnZUluc3BlY3RvclByb3h5KFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAgICAgOiBtX3dvcmtlckdsb2Jh
bFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSB7IH0KICAgICB2aXJ0dWFsIH5QYWdlSW5zcGVjdG9y
UHJveHkoKSB7IH0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBtX3dvcmtlckdsb2Jh
bFNjb3BlLT50aHJlYWQoKS0+d29ya2VyUmVwb3J0aW5nUHJveHkoKS5wb3N0TWVzc2FnZVRvUGFn
ZUluc3BlY3RvcihtZXNzYWdlKTsKKyAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQo
KS0+d29ya2VyUmVwb3J0aW5nUHJveHkoKS5wb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvcihtZXNz
YWdlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIFdvcmtlckdsb2JhbFNjb3Bl
KiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckds
b2JhbFNjb3BlOwogfTsKIAogfQogCi1Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkK
K1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIDogbV93b3JrZXJHbG9iYWxT
Y29wZSh3b3JrZXJHbG9iYWxTY29wZSkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0
cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywg
UGFnZUluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQotICAgICwgbV9ydW50aW1lQWdlbnQo
MCkKKyAgICAsIG1fcnVudGltZUFnZW50KG51bGxwdHIpCiB7Ci0gICAgYXV0byBydW50aW1lQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4obV9pbnN0cnVtZW50aW5n
QWdlbnRzLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgd29ya2VyR2xvYmFs
U2NvcGUpOworICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJS
dW50aW1lQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuZ2V0KCksICZ3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9ydW50aW1lQWdlbnQg
PSBydW50aW1lQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShydW50
aW1lQWdlbnQpKTsKIAogICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
b3JrZXJDb25zb2xlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQot
ICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJB
Z2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZSwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCAmd29ya2VyR2xvYmFsU2NvcGUsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgp
KTsKICAgICBtX3J1bnRpbWVBZ2VudC0+c2V0U2NyaXB0RGVidWdTZXJ2ZXIoJmRlYnVnZ2VyQWdl
bnQtPnNjcmlwdERlYnVnU2VydmVyKCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUo
ZGVidWdnZXJBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIGNvbnNvbGVBZ2VudC5n
ZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7
CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIGNvbnNvbGVBZ2VudC5nZXQoKSwgJndvcmtlckdsb2Jh
bFNjb3BlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50PihtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CiAj
ZW5kaWYKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1l
bGluZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIs
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Oldvcmtlckluc3BlY3RvciwgbnVsbHB0cikpOwpAQCAt
MTIyLDcgKzEyMiw3IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6On5Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyKCkKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZy
b250ZW5kKCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2Zyb250
ZW5kQ2hhbm5lbCA9IGFkb3B0UHRyKG5ldyBQYWdlSW5zcGVjdG9yUHJveHkobV93b3JrZXJHbG9i
YWxTY29wZSkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
SW5zcGVjdG9yUHJveHk+KG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRDaGFu
bmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9m
cm9udGVuZENoYW5uZWwuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQpAQCAt
MTM0LDcgKzEzNCw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVj
dEZyb250ZW5kKCkKICAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgp
OwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLmNsZWFyKCk7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwuY2xlYXIoKTsKKyAg
ICBtX2Zyb250ZW5kQ2hhbm5lbC5yZXNldCgpOwogfQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuaAppbmRleCAyOWZkMzU4Zjc5OWQwYTExMjY5ZWUwNjE1MGY1MTlkZTY3YmJkNjUy
Li5mZjUwMzY0ZjI5MGVmNjU3ZjEwYTQ3YTk4MGEyMTQxNjIyNTNlOTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAg
LTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTYwLDcgKzU5LDcgQEAgY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciBG
SU5BTCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgZXhwbGljaXQgV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcihXb3JrZXJHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KCk7CiAKICAgICB2b2lkIGNvbm5lY3RGcm9udGVuZCgpOwpAQCAtODAsMTIgKzc5LDEyIEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRhdGlvbkZvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CiAKLSAgICBX
b3JrZXJHbG9iYWxTY29wZSogbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJHbG9iYWxT
Y29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKICAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50
cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JS
dW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
PiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBWZWN0b3I8
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1
bWVudGF0aW9uQ29va2llczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBhNWI1N2Q5YTJhYThjMDY3MjI1MDhlYTg0ODhjODczYTkyNzY1NjMyLi5mOGRmYjAwYjQx
NzgxYWI2YmM2MjE2ZTM0ODkyYmJhOTk3NmNmZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTI5NTcsNyArMjk1Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRp
bnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNz
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewogICAgICAgICBpZiAobV9mcmFt
ZS5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5yZXN1bWUoKTsKKyAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5yZXN1
bWUoKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzM3MCw3ICszMzcwLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCkKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoJm1fZnJhbWUsIHdvcmxkKTsKKyAgICAgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCgmbV9mcmFt
ZSwgd29ybGQpOwogI2VuZGlmCiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZCgmbV9mcmFtZSwgd29ybGQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGEzNmFmNTY0MWFlMDc4NDUy
ODMxYWIwMzFlZmYwOTgwYmVmNmFhZWQuLjZkNWNmNzQ2NWQ3MzcwM2VjM2UwMTUyZmZiOWY2MDNl
YmMwNTRjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkKIHZvaWQgQ29u
dGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29udGV4dE1lbnUoRXZlbnQqIGV2ZW50KQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmVuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5lbmFibGVk
KCkpCiAgICAgICAgIGFkZEluc3BlY3RFbGVtZW50SXRlbSgpOwogI2VuZGlmCiAKQEAgLTUwMyw3
ICs1MDMsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDoKICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5pbnNwZWN0KG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7Cisg
ICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdChtX2hpdFRlc3RS
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6CkBAIC04OTMsNyAr
ODkzLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICNlbmRpZiAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICAgICAgICAgICAgICBpZiAoIShmcmFtZS0+cGFnZSgpICYmIChmcmFtZS0+cGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgfHwg
ZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5oYXNSZW1vdGVGcm9udGVuZCgp
KSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIShmcmFtZS0+cGFnZSgpICYmIChmcmFtZS0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSB8
fCBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaGFzUmVtb3RlRnJvbnRlbmQo
KSkpKSB7CiAjZW5kaWYKIAogICAgICAgICAgICAgICAgIC8vIEluIEdUSysgdW5hdmFpbGFibGUg
aXRlbXMgYXJlIG5vdCBoaWRkZW4gYnV0IGluc2Vuc2l0aXZlLgpAQCAtMTEwMSw5ICsxMTAxLDYg
QEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmFkZEluc3BlY3RFbGVtZW50SXRlbSgpCiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgQ29udGV4dE1lbnVJdGVtIElu
c3BlY3RFbGVtZW50SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxl
bWVudCwgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKSk7CiAjaWYgVVNFKENST1NT
X1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMpCiAgICAgaWYgKG1fY29udGV4dE1lbnUgJiYgIW1fY29u
dGV4dE1lbnUtPml0ZW1zKCkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDhjMDY0ZmI2Y2E3M2NhZDZjMTkxMjM1YTFiYmM3YTcwNGM4MmZlMDguLmE5MDAyZWQzNzdm
MWYwNzNlYWYwMDM0N2IxODkwN2NhMmRjNmUzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTI4OTAsNyArMjg5MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJ
Zk5lZWRlZCgpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBQYWdlKiBwYWdlID0gZnJhbWUo
KS5wYWdlKCk7CiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRz
KCkgJiYgaXNNYWluRnJhbWUpIHsKLSAgICAgICAgaWYgKEluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQ2xpZW50ID0gcGFnZSA/IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdG9y
Q2xpZW50KCkgOiAwKQorICAgICAgICBpZiAoSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGll
bnQgPSBwYWdlID8gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckNsaWVudCgp
IDogbnVsbHB0cikKICAgICAgICAgICAgIGluc3BlY3RvckNsaWVudC0+ZGlkUmVzaXplTWFpbkZy
YW1lKCZmcmFtZSgpKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGMzZWMy
NzMzZTgzNjUyMWYwMTBjYzVjOTJmZjgwMGEyODNkMWFiMDAuLjQ0YTcxY2I0NmMzZDBjYWQyNzBm
NDc1MzkwYTc2N2Q0OTg3ZDQ5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTM2LDcgKzEzNiw3
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9jb250ZXh0
TWVudUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0
aGlzLCAqcGFnZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlmCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihJbnNwZWN0b3JDb250cm9s
bGVyOjpjcmVhdGUodGhpcywgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1f
aW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+
KCp0aGlzLCBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQpKQogI2VuZGlmCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKICAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKFBvaW50ZXJMb2Nr
Q29udHJvbGxlcjo6Y3JlYXRlKHRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBjMzljMmY3ZmY4ZjNl
N2M1Zjg3OGEyZjIyZDhiNjQyZDUyZmU2ZDk3Li40M2VjMGFjYTYwYTRmMzVjODdkNTdmNTlkYmNl
MzI2ODZhMDg5MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoK
ICAgICBDb250ZXh0TWVudUNvbnRyb2xsZXImIGNvbnRleHRNZW51Q29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuICptX2NvbnRleHRNZW51Q29udHJvbGxlcjsgfQogI2VuZGlmCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLmdldCgpOyB9CisgICAgSW5z
cGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICpt
X2luc3BlY3RvckNvbnRyb2xsZXI7IH0KICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgUG9pbnRlckxvY2tDb250cm9sbGVyKiBwb2ludGVyTG9ja0NvbnRyb2xsZXIoKSBjb25z
dCB7IHJldHVybiBtX3BvaW50ZXJMb2NrQ29udHJvbGxlci5nZXQoKTsgfQpAQCAtNDYxLDcgKzQ2
MSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENvbnRleHRNZW51Q29u
dHJvbGxlcj4gbV9jb250ZXh0TWVudUNvbnRyb2xsZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIE93blB0cjxJbnNwZWN0b3JDb250cm9sbGVyPiBtX2luc3BlY3RvckNvbnRy
b2xsZXI7CisgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckNvbnRyb2xsZXI+IG1f
aW5zcGVjdG9yQ29udHJvbGxlcjsKICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAg
ICAgT3duUHRyPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4gbV9wb2ludGVyTG9ja0NvbnRyb2xsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCmluZGV4IDJhMjZlNjNlY2U5YjJm
MjcwNWQ2YWM5ZmY0YTI3NmQ5NDUzZTcyZTMuLmMxZjI2NTIzMzE0M2NhMTY3MmEyMzI0ZTY0YTMz
N2RkMjQwNTllM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2Fi
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCkBAIC02
MywxMiArNjMsMTIgQEAgU3RyaW5nIFBhZ2VEZWJ1Z2dhYmxlOjp1cmwoKSBjb25zdAogCiBib29s
IFBhZ2VEZWJ1Z2dhYmxlOjpoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aGFzTG9jYWxGcm9udGVuZCgpOworICAgIHJl
dHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmhhc0xvY2FsRnJvbnRlbmQoKTsKIH0K
IAogcGlkX3QgUGFnZURlYnVnZ2FibGU6OnBhcmVudFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QK
IHsKLSAgICBpZiAoSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgPSBtX3BhZ2UuaW5z
cGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JDbGllbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9y
Q2xpZW50KiBpbnNwZWN0b3JDbGllbnQgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmlu
c3BlY3RvckNsaWVudCgpKQogICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ2xpZW50LT5wYXJlbnRQ
cm9jZXNzSWRlbnRpZmllcigpOwogCiAgICAgcmV0dXJuIDA7CkBAIC03NiwyNiArNzYsMjYgQEAg
cGlkX3QgUGFnZURlYnVnZ2FibGU6OnBhcmVudFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKIAog
dm9pZCBQYWdlRGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogY2hhbm5lbCkKIHsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpbnNwZWN0b3JD
b250cm9sbGVyLT5zZXRIYXNSZW1vdGVGcm9udGVuZCh0cnVlKTsKLSAgICBpbnNwZWN0b3JDb250
cm9sbGVyLT5jb25uZWN0RnJvbnRlbmQocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqPihjaGFubmVsKSk7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciYg
aW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAg
aW5zcGVjdG9yQ29udHJvbGxlci5zZXRIYXNSZW1vdGVGcm9udGVuZCh0cnVlKTsKKyAgICBpbnNw
ZWN0b3JDb250cm9sbGVyLmNvbm5lY3RGcm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCo+KGNoYW5uZWwpKTsKIH0KIAogdm9pZCBQYWdlRGVi
dWdnYWJsZTo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaW5zcGVj
dG9yQ29udHJvbGxlci0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Ci0gICAgaW5zcGVjdG9yQ29udHJv
bGxlci0+c2V0SGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpOworICAgIEluc3BlY3RvckNvbnRyb2xs
ZXImIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOwor
ICAgIGluc3BlY3RvckNvbnRyb2xsZXIuZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgaW5zcGVj
dG9yQ29udHJvbGxlci5zZXRIYXNSZW1vdGVGcm9udGVuZChmYWxzZSk7CiB9CiAKIHZvaWQgUGFn
ZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworICAgIG1fcGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogfQogCiB2b2lk
IFBhZ2VEZWJ1Z2dhYmxlOjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIHsKLSAgICBt
X3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpOwor
ICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5kaWNhdGluZyhpbmRpY2F0aW5n
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDgwYzJkMzg5NDNjYzExYjZm
ZGE2OTdkYzExODI1MTRlMzkyYmM5Y2YuLjE0YmM5NTY3ZTQ3N2VhYTUxZjQ4MGU1NDg1Yzk4MTY3
MDQ2YjA4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBib29sIENvbXBvc2l0aW5nQ29vcmRp
bmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiB2b2lkIENvbXBvc2l0aW5nQ29vcmRp
bmF0b3I6OnN5bmNEaXNwbGF5U3RhdGUoKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
bV9wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZEJlZ2luRnJhbWUoKTsKKyAgICBtX3Bh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaWRCZWdpbkZyYW1lKCk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJiYgIVVTRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRV9USU1FUikgJiYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNTQ1NzA2ZTYwNzQ4
YmRjYTVkMWYwNDZhYjQ5NjFkMWMyMzYxNzZmMC4uZmQ4ZjllYjJkM2NmYTZhMDVlZTNlYWI0MWVh
YjQxM2FiYmM2NTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTc3
LDcgKzE3Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXkgOiBwdWJsaWMgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbCB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnREdW1teShJbnNwZWN0b3JDb250cm9sbGVyKiwgUGFnZSopOworICAgIGV4cGxpY2l0IElu
c3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXkoSW5zcGVjdG9yQ29udHJvbGxlciosIFBhZ2UqKTsK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15KCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaFdpbmRvdygpIE9WRVJSSURFIHsgfQpAQCAtMjgwLDggKzI4MCw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UqIHBhZ2UpCiAgICAgV2Vi
Q29yZTo6b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFZlY3RvcjxTdHJpbmc+KCkpOwog
ICAgIFdlYkNvcmU6OlNldHRpbmdzOjpzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnMoZmFsc2UpOwog
I2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IGlmIChwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+c2V0UHJvZmlsZXJFbmFibGVkKGZhbHNlKTsKKyAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuc2V0UHJvZmlsZXJFbmFibGVkKGZhbHNlKTsKICNlbmRpZgogI2lm
IEVOQUJMRShWSURFT19UUkFDSykgJiYgIVBMQVRGT1JNKFdJTikKICAgICBwYWdlLT5ncm91cCgp
LmNhcHRpb25QcmVmZXJlbmNlcygpLT5zZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShlbXB0
eVN0cmluZygpKTsKQEAgLTcwNSwxMyArNzA0LDEzIEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExp
c3Q+IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250
ZXh0RG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpIHx8
ICFkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpIHsKKyAgICBpZiAoIWRv
Y3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOwogICAgICAgICByZXR1cm4gQ2xpZW50UmVjdExpc3Q6OmNyZWF0ZSgpOwogICAgIH0K
IAogICAgIEhpZ2hsaWdodCBoaWdobGlnaHQ7Ci0gICAgZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5nZXRIaWdobGlnaHQoJmhpZ2hsaWdodCk7CisgICAgZG9jdW1lbnQt
PnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmdldEhpZ2hsaWdodCgmaGlnaGxpZ2h0KTsK
ICAgICByZXR1cm4gQ2xpZW50UmVjdExpc3Q6OmNyZWF0ZShoaWdobGlnaHQucXVhZHMpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZWMpOwpAQCAtNzIzLDExICs3MjIsMTEgQEAgU3RyaW5nIElu
dGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERv
Y3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSB8fCAhZG9j
dW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKSB7CisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KLSAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3QgPSBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gb2JqZWN0ID0gZG9jdW1lbnQtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmJ1
aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCk7CiAgICAgcmV0dXJuIG9iamVjdCA/IG9iamVj
dC0+dG9KU09OU3RyaW5nKCkgOiBTdHJpbmcoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVj
KTsKQEAgLTEyNTMsMTYgKzEyNTIsMTQgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxz
Ojpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGNlbnRlclgsIGkKIHZvaWQg
SW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
Y29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
OwotICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZEJlZ2luRnJhbWUoKTsKKyAgICBjb250ZXh0
RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlkQmVn
aW5GcmFtZSgpOwogI2VuZGlmCiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlk
Q2FuY2VsRnJhbWUoKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgp
LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVy
LT5kaWRDYW5jZWxGcmFtZSgpOworICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdl
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaWRDYW5jZWxGcmFtZSgpOwogI2VuZGlmCiB9CiAK
QEAgLTE1NTAsMTMgKzE1NDcsMTMgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFsczo6
b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUGFnZSog
ZnJvbnRlbmRQYWdlID0gbV9mcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpOwogICAg
IEFTU0VSVChmcm9udGVuZFBhZ2UpOwogCi0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50RHVtbXk+IGZyb250ZW5kQ2xpZW50ID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50RHVtbXkocGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFBhZ2UpKTsK
KyAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9u
dGVuZENsaWVudER1bW15PigmcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFBh
Z2UpOwogCi0gICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KGZyb250ZW5kQ2xpZW50LnJlbGVhc2UoKSk7CisgICAgZnJvbnRl
bmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
c3RkOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CiAKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGFk
b3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxEdW1teShmcm9udGVuZFBhZ2UpKTsK
IAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKG1fZnJv
bnRlbmRDaGFubmVsLmdldCgpKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29u
bmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKIAogICAgIHJldHVybiBtX2Zy
b250ZW5kV2luZG93OwogfQpAQCAtMTU2Nyw3ICsxNTY0LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmNs
b3NlRHVtbXlJbnNwZWN0b3JGcm9udGVuZCgpCiAgICAgQVNTRVJUKHBhZ2UpOwogICAgIEFTU0VS
VChtX2Zyb250ZW5kV2luZG93KTsKIAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRp
c2Nvbm5lY3RGcm9udGVuZCgpOwogCiAgICAgbV9mcm9udGVuZENoYW5uZWwucmVsZWFzZSgpOwog
CkBAIC0xNTc4LDIyICsxNTc1LDIyIEBAIHZvaWQgSW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVj
dG9yRnJvbnRlbmQoKQogdm9pZCBJbnRlcm5hbHM6OnNldEluc3BlY3RvclJlc291cmNlc0RhdGFT
aXplTGltaXRzKGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGludCBtYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUGFnZSog
cGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdl
IHx8ICFwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpIHsKKyAgICBpZiAoIXBhZ2UpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0
c0Zyb21JbnRlcm5hbHMobWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBtYXhpbXVtU2luZ2xl
UmVzb3VyY2VDb250ZW50U2l6ZSk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNl
dFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFscyhtYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUsIG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKIH0KIAogdm9pZCBJ
bnRlcm5hbHM6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUGFnZSogcGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5m
cmFtZSgpLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkpIHsKKyAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPnNldFByb2ZpbGVyRW5hYmxlZChlbmFibGVkKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuc2V0UHJvZmlsZXJFbmFibGVkKGVuYWJsZWQpOwogfQogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAKaW5kZXggYmFlZWQ3MzZkMzYwMjY5YWJmMmFiMjc1MGJkYzg1M2JlMzdjNGNjMS4u
Mjg4OTIzNmY3MmZmOTQzMTllM2ZjOGExMGUxMjk4OWNlMjVmMGMwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgV29y
a2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgc3QKICAgICAsIG1fc2NyaXB0KGFkb3B0UHRyKG5ldyBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyKHRoaXMpKSkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgICwgbV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKGFkb3B0UHRy
KG5ldyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKHRoaXMpKSkKKyAgICAsIG1fd29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9jbG9zaW5nKGZhbHNlKQogICAgICwgbV9ldmVu
dFF1ZXVlKCp0aGlzKQpAQCAtMTkyLDEzICsxOTIsNiBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3Bl
OjpjbGVhclRpbWVvdXQoaW50IHRpbWVvdXRJZCkKICAgICBET01UaW1lcjo6cmVtb3ZlQnlJZChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRpbWVvdXRJZCk7CiB9CiAKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJJbnNwZWN0b3IoKQotewotICAg
IG1fd29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jbGVhcigpOwotfQotI2VuZGlmCi0KIGludCBX
b3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwoUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+
IGFjdGlvbiwgaW50IHRpbWVvdXQpCiB7CiAgICAgcmV0dXJuIERPTVRpbWVyOjppbnN0YWxsKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYWN0aW9uLCB0aW1lb3V0LCBmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggNTk0MTdiNjlmYTgwZDUx
N2IxMGIzY2U4MmQ5OGU1YTc4NjAyOGYyMS4uMDgxNGI2ZDE3NjgxZWNiNzFiNmVhMDQ3YTYwOWQ0
Yjk3N2E0NmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aApAQCAtNzMsOSArNzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV29ya2Vy
U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KICAg
ICAgICAgdm9pZCBjbGVhclNjcmlwdCgpIHsgbV9zY3JpcHQuY2xlYXIoKTsgfQotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgICAgIHZvaWQgY2xlYXJJbnNwZWN0b3IoKTsKLSNlbmRpZgogCiAg
ICAgICAgIFdvcmtlclRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQ7IH0K
IApAQCAtMTA2LDcgKzEwMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCBPVkVSUklERTsKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIqIHdvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuZ2V0KCk7IH0KKyAgICAgICAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciYgd29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcigpIHsgcmV0dXJuICptX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7
IH0KICNlbmRpZgogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJr
aW5nLiBTZWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xvdFZp
c2l0b3ImKSBpbgogICAgICAgICAvLyBKU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcC4KQEAg
LTE2OCw3ICsxNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlclRocmVh
ZCogbV90aHJlYWQ7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBPd25QdHI8V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOworICAg
ICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV93
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOwogI2VuZGlmCiAgICAgICAgIGJvb2wgbV9jbG9zaW5n
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CmluZGV4IDAxOTZmMDJmYzlkZjQ4MDQ0ZmM1NDk0NjdiNGE5MmEwOTFjMWJiOGUuLmQ1MDRhZDI1
ZTY2ZWY0MWJmMmNhOTkyYWYyNjg5NGM3ZWVhZDY3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC00MDksNyArNDA5LDcgQEAgdm9p
ZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyT2JqZWN0RGVzdHJveWVkSW50ZXJuYWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCoKIHN0YXRpYyB2b2lkIGNvbm5lY3RUb1dvcmtlckdsb2JhbFNj
b3BlSW5zcGVjdG9yVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBib29sKQog
ewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7Ci0gICAgc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUqPihjb250
ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQoKTsKKyAg
ICBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KGNvbnRleHQpLT53b3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKCk7CiB9CiAjZW5kaWYKIApAQCAtNDI4LDcg
KzQyOCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmNvbm5lY3RUb0luc3BlY3RvcihX
b3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjCiBzdGF0aWMgdm9pZCBkaXNjb25uZWN0
RnJvbVdvcmtlckdsb2JhbFNjb3BlSW5zcGVjdG9yVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBib29sKQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgc3RhdGljX2Nhc3Q8V29ya2Vy
R2xvYmFsU2NvcGUqPihjb250ZXh0KS0+d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNj
b25uZWN0RnJvbnRlbmQoKTsKKyAgICBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KGNv
bnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKCk7
CiB9CiAjZW5kaWYKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKCkKIHN0YXRpYyB2b2lkIGRpc3BhdGNoT25JbnNw
ZWN0b3JCYWNrZW5kVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Y29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICBzdGF0aWNfY2FzdDxXb3JrZXJH
bG9iYWxTY29wZSo+KGNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc3Bh
dGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKKyAgICBzdGF0aWNfY2FzdDxXb3JrZXJH
bG9iYWxTY29wZSo+KGNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA4MDRiZTE1ZjRmODE0N2UzZWJhMmE2MDAz
NjkzZDY1ZjdhODA4OGFiLi5kNjYyODBlM2M2MjYzYTNhMDk1ZDBkOWFjYTYyMTBmNWExMjQyN2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0yMTYsOSArMjE2
LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgV29ya2VyR2xv
YmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2Nv
cGUqPihjb250ZXh0KTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICB3b3JrZXJHbG9i
YWxTY29wZS0+Y2xlYXJJbnNwZWN0b3IoKTsKLSNlbmRpZgogICAgICAgICAvLyBJdCdzIG5vdCBz
YWZlIHRvIGNhbGwgY2xlYXJTY3JpcHQgdW50aWwgYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHBvc3Rl
ZCBieSBmdW5jdGlvbnMgaW5pdGlhdGVkIGJ5IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNr
IGhhdmUgY29tcGxldGVkLgogICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+Y2xlYXJTY3JpcHQo
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRleCAxYTdhNzljZWNkNTVhNDg4
YmFmMzk3YTlkMDk1ZTY1MTQxNWI3MGE0Li4xNjc0NzdiNjY0M2E5ZThkNDcxNDUxOTVmNDRhYzFh
NGNhOWI2NDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTQ2Nyw3ICs0NjcsNyBA
QCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldwogICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHBhZ2UpOwogCiAgICAgaWYgKHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5ldmFsdWF0ZUZvclRlc3RJ
bkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxJZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50RWZsLmNwcAppbmRleCBlYWViOTlmNzhlNDZjMjliNjBkMzM1ZDcwN2Y4ZmQ1MGNiMDMzNWUz
Li4zNWU3NmQ3MWVmMmY2N2EwNzIzNTczZjAzNmM1OTk2ZDdiYTlmN2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5j
cHAKQEAgLTk5LDExICs5OSwxMSBAQCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3Rv
ckNsaWVudEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbgogICAgIFN0cmlu
ZyBpbnNwZWN0b3JVcmkgPSBpbnNwZWN0b3JGaWxlc1BhdGgoKSArICIvTWFpbi5odG1sIjsKICAg
ICBld2tfdmlld191cmlfc2V0KG1faW5zcGVjdG9yVmlldywgaW5zcGVjdG9yVXJpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsPiBmcm9udGVu
ZENsaWVudCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbChtX2luc3Bl
Y3RlZFZpZXcsIG1faW5zcGVjdG9yVmlldywgdGhpcykpOworICAgIGF1dG8gZnJvbnRlbmRDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsPihtX2luc3Bl
Y3RlZFZpZXcsIG1faW5zcGVjdG9yVmlldywgdGhpcyk7CiAgICAgbV9mcm9udGVuZENsaWVudCA9
IGZyb250ZW5kQ2xpZW50LmdldCgpOwogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJv
bGxlciA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKG1faW5zcGVjdG9yVmlldyktPmluc3BlY3RvckNv
bnRyb2xsZXIoKTsKLSAgICBjb250cm9sbGVyLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChm
cm9udGVuZENsaWVudC5yZWxlYXNlKCkpOworICAgIGNvbnRyb2xsZXItPnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KHN0ZDo6bW92ZShmcm9udGVuZENsaWVudCkpOwogICAgIAogICAgIHJldHVy
biB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggNDA0NzRmYmM0OWQ5
N2M3Y2VlYzI0N2JlMzQ1ZDA4YjgxNGUwZmI3MS4uODM5NjEwZDgyYjQ5NTQ5MGYwNTk0Y2EyYWZi
OTc5YTY4YjE0NTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC00NjYyLDcg
KzQ2NjIsNyBAQCB2b2lkIGV3a192aWV3X2luc3BlY3Rvcl9zaG93KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsK
IAotICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIHBy
aXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShld2tWaWV3KTsKICNlbmRpZgpAQCAtNDY3NCw3ICs0Njc0LDcgQEAgdm9pZCBld2tf
dmlld19pbnNwZWN0b3JfY2xvc2UoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwogCi0gICAgcHJpdi0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOworICAgIHByaXYtPnBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCmluZGV4IDQ5Y2E4NGRmZDRhMmJiOGJlOGE2M2UyZDAzMTZhODNjZDg3
MmNkMmUuLjA0NDMxMzViYTk4NDMwZjJhNGM4OTZkOGFmNTI4ZTgyZDA5MzE1MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cApAQCAtNTY3LDcgKzU2Nyw3IEBAIHN0YXRpYyB2b2lkIHBhaW50V2ViVmlldyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlZ2lvbiYgZGlyCiAKICAgICBnYy5z
YXZlKCk7CiAgICAgZ2MuY2xpcChkaXJ0eVJlZ2lvbi5ib3VuZHMoKSk7Ci0gICAgZnJhbWUtPnBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kcmF3SGlnaGxpZ2h0KGdjKTsKKyAgICBmcmFt
ZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZHJhd0hpZ2hsaWdodChnYyk7CiAgICAg
Z2MucmVzdG9yZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCAzOGM5YjAzMzk0MGU3MzRjYmJl
MGJmYzc5MTQ2Mzc0YWY5MDI2ZDBiLi4wMzMwYTlhYWY0NWFmMzFmNTFiNGY0MGUwYTUzNThlNWZk
Mjg1OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTEwOSw5ICsxMDksOSBAQCBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3Bl
Y3RvckNvbnRybwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGluc3BlY3RvcldlYlZp
ZXcpKTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShpbnNwZWN0b3JXZWJWaWV3KTsKLSAg
ICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGZyb250ZW5kQ2xpZW50ID0gYWRvcHRQ
dHIobmV3IEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1faW5zcGVjdGVkV2ViVmlldywgaW5zcGVj
dG9yV2ViVmlldywgd2ViSW5zcGVjdG9yLCBtX2Zyb250ZW5kUGFnZSwgdGhpcykpOworICAgIGF1
dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RvcldlYlZpZXcsIHdlYkluc3BlY3Rvciwg
bV9mcm9udGVuZFBhZ2UsIHRoaXMpOwogICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENs
aWVudC5nZXQoKTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
ZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudC5yZWxlYXNlKCkpOworICAg
IG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoc3RkOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CiAKICAgICAvLyBUaGUgaW5zcGVj
dG9yIG11c3QgYmUgaW4gaXQncyBvd24gUGFnZUdyb3VwIHRvIGF2b2lkIGRlYWRsb2NrIHdoaWxl
IGRlYnVnZ2luZy4KICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0R3JvdXBOYW1lKCIiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAKaW5kZXggOGEw
NDQ0NjhjMDQ4YTA4Y2M3MGY3Y2U3YjNjMTQ0NWMxYWQwOGQ0Yy4uZTlhMDg5MTYwZTVjNGFmYjEx
MmRkYmUzYzJjNDk2ZmE2M2Y0MDkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAKQEAgLTM1Myw3ICszNTMsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wX2lkLCBjbwogICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX1BST0ZJTElOR19FTkFCTEVEOiB7
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAgIGJvb2wgZW5hYmxlZCA9
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwotICAgICAgICBwcml2LT5wYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPnNldFByb2ZpbGVyRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgcHJp
di0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldFByb2ZpbGVyRW5hYmxlZChlbmFibGVk
KTsKICNlbHNlCiAgICAgICAgIGdfbWVzc2FnZSgiUFJPUF9KQVZBU0NSSVBUX1BST0ZJTElOR19F
TkFCTEVEIGlzIG5vdCB3b3JrIGJlY2F1c2Ugb2YgdGhlIGphdmFzY3JpcHQgZGVidWdnZXIgaXMg
ZGlzYWJsZWRcbiIpOwogI2VuZGlmCkBAIC0zODMsNyArMzgzLDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cF9pZCwgR1YKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfUFJPRklM
SU5HX0VOQUJMRUQ6CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+cHJvZmlsZXJFbmFibGVkKCkpOworICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucHJvZmlsZXJFbmFibGVkKCkpOwog
I2Vsc2UKICAgICAgICAgZ19tZXNzYWdlKCJQUk9QX0pBVkFTQ1JJUFRfUFJPRklMSU5HX0VOQUJM
RUQgaXMgbm90IHdvcmsgYmVjYXVzZSBvZiB0aGUgamF2YXNjcmlwdCBkZWJ1Z2dlciBpcyBkaXNh
YmxlZFxuIik7CiAjZW5kaWYKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIHdlYmtpdF93ZWJfaW5z
cGVjdG9yX3Nob3coV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IpCiAgICAgaWYgKCF2
aWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPnNob3coKTsKKyAgICBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hv
dygpOwogfQogCiAvKioKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfaW5zcGVj
dG9yX2luc3BlY3Rfbm9kZShXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvciwgV2ViS2l0
RAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9JTlNQRUNUT1Iod2ViSW5zcGVj
dG9yKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX05PREUobm9kZSkpOwog
Ci0gICAgd2ViSW5zcGVjdG9yLT5wcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmlu
c3BlY3QoY29yZShub2RlKSk7CisgICAgd2ViSW5zcGVjdG9yLT5wcml2LT5wYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuaW5zcGVjdChjb3JlKG5vZGUpKTsKIH0KIAogLyoqCkBAIC01NDYsNyAr
NTQ2LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9pbnNwZWN0X2Nvb3JkaW5hdGVzKFdl
YktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9yLAogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
KGRvY3VtZW50UG9pbnQpOwogCiAgICAgZnJhbWUuY29udGVudFJlbmRlcmVyKCktPmxheWVyKCkt
PmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKLSAgICBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmluc3BlY3QocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKKyAgICBwcml2
LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdChyZXN1bHQuaW5uZXJOb25TaGFy
ZWROb2RlKCkpOwogfQogCiAvKioKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIHdlYmtpdF93ZWJf
aW5zcGVjdG9yX2Nsb3NlKFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9yKQogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9JTlNQRUNUT1Iod2ViSW5zcGVjdG9yKSk7CiAK
ICAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViSW5zcGVjdG9yLT5wcml2
OwotICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKKyAgICBw
cml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIH0KIAogdm9pZCB3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9leGVjdXRlX3NjcmlwdChXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYklu
c3BlY3RvciwgbG9uZyBjYWxsSWQsIGNvbnN0IGdjaGFyKiBzY3JpcHQpCkBAIC01NzEsNSArNTcx
LDUgQEAgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9leGVjdXRlX3NjcmlwdChXZWJLaXRXZWJJ
bnNwZWN0b3IqIHdlYkluc3BlY3RvciwgbG9uZwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0
KTsKIAogICAgIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUqIHByaXYgPSB3ZWJJbnNwZWN0b3It
PnByaXY7Ci0gICAgcHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5ldmFsdWF0ZUZv
clRlc3RJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKKyAgICBwcml2LT5wYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQsIHNjcmlwdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KaW5kZXggYTE0Yzg4NTQzMWU2NWY2NjY0ODI5MTljOThiMWI2ZGMyZmIx
MzcxYi4uMzJhNzI3MDdmOWJhNmFlOTkxZjA3ZjY4MjdhNDY0NjljMjc2NTc5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQpAQCAtMTQ1LDExICsxNDUsMTEgQEAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb24KICAgICBb
d2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBt
X2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmlld10pOwot
ICAgIE93blB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gZnJvbnRlbmRDbGllbnQgPSBh
ZG9wdFB0cihuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV93ZWJWaWV3LCB3aW5kb3dD
b250cm9sbGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3Jl
YXRlRnJvbnRlbmRTZXR0aW5ncygpKSk7CisgICAgYXV0byBmcm9udGVuZENsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fd2ViVmlldywgd2luZG93
Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNy
ZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5k
Q2xpZW50LmdldCgpOwogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5z
cGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGlu
aXRXaXRoRnJvbnRlbmRDbGllbnQ6ZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21fd2Vi
VmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsK
LSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChmcm9udGVuZENsaWVudC5yZWxlYXNlKCkpOworICAgIG1fZnJvbnRlbmRQ
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3Rk
Ojptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKQEAgLTY5Myw3
ICs2OTMsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAgICAgaWYgKG5vdGlmeUluc3Bl
Y3RvckNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBbX2lu
c3BlY3RlZFdlYlZpZXcuZ2V0KCkgcGFnZV0pCi0gICAgICAgICAgICBpbnNwZWN0ZWRQYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgICAgICAgICAg
aW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCgp
OwogICAgIH0KIAogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyPiBw
cm90ZWN0KHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L1dlYkluc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNw
ZWN0b3IubW0KaW5kZXggZTMxYmE5YzU0NjgxZGI3YzgwMDZhYzNiYmI4ZDIxNTg2ZmM2NDVhNC4u
ZTRlOWFhZDZlYmUwZjQ5YWZhNmJkOTE3ZjE4NjA5ODViNzY5YjkyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tCkBAIC02Niw3ICs2Niw3IEBA
IE5TU3RyaW5nICpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSA9IEAiV2ViSW5z
cGVjdG9yRGlkU3RvcFNlYXJjaGluZ0ZvCiAtICh2b2lkKXNob3dXaW5kb3cKIHsKICAgICBpZiAo
UGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnNob3coKTsKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNo
b3coKTsKIH0KIAogLSAodm9pZClzaG93OihpZClzZW5kZXIKQEAgLTE0Miw3ICsxNDIsNyBAQCBO
U1N0cmluZyAqV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGUgPSBAIldlYkluc3Bl
Y3RvckRpZFN0b3BTZWFyY2hpbmdGbwogLSAoQk9PTClpc0phdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkCiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKLSAgICAgICAgcmV0
dXJuIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCk7CisgICAg
ICAgIHJldHVybiBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucHJvZmlsZXJFbmFibGVkKCk7
CiAgICAgcmV0dXJuIE5POwogfQogCkBAIC0xNTIsNyArMTUyLDcgQEAgTlNTdHJpbmcgKldlYklu
c3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlID0gQCJXZWJJbnNwZWN0b3JEaWRTdG9wU2Vh
cmNoaW5nRm8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0UHJvZmlsZXJFbmFibGVkKGVuYWJsZWQpOworICAgIHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CiB9
CiAKIC0gKEJPT0wpaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQKQEAgLTE2OSw3ICsxNjksNyBA
QCBOU1N0cmluZyAqV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGUgPSBAIldlYklu
c3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGbwogLSAodm9pZCljbG9zZTooaWQpc2VuZGVyIAogewog
ICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShfd2ViVmlldykpCi0gICAgICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmNsb3NlKCk7CiB9CiAKIC0gKHZvaWQpYXR0YWNoOihpZClzZW5kZXIKQEAgLTE4NSw3
ICsxODUsNyBAQCBOU1N0cmluZyAqV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGUg
PSBAIldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGbwogLSAodm9pZClldmFsdWF0ZUluRnJv
bnRlbmQ6KGlkKXNlbmRlciBjYWxsSWQ6KGxvbmcpY2FsbElkIHNjcmlwdDooTlNTdHJpbmcgKilz
Y3JpcHQKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpKQotICAgICAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2Fs
bElkLCBzY3JpcHQpOworICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZXZhbHVh
dGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQsIHNjcmlwdCk7CiB9CiAKIC0gKHZvaWQpc2V0RnJv
bnRlbmQ6KFdlYkluc3BlY3RvckZyb250ZW5kICopZnJvbnRlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodGVyLm1tCmluZGV4IDJiYTU5
ZDYzZTMyM2Y5MDU1YjczZDZlMjZkYzQ2ODMxZTlmM2Y0YjcuLmQyOTZmNzgzYjgxNTAwOTA4NzNk
MThlODY3MjJmOGM1MjRlMmY5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRlci5tbQpAQCAtNjYsNyArNjYsNyBAQAogICAgICAg
ICByZXR1cm47IC8vIFNraXAgdGhlIGhpZ2hsaWdodCBpZiB3ZSBoYXZlIG5vIHdpbmRvdyAoZS5n
LiBoaWRkZW4gdGFiKS4KICAgICAKICAgICBpZiAoIV9jdXJyZW50SGlnaGxpZ2h0KSB7Ci0gICAg
ICAgIF9jdXJyZW50SGlnaGxpZ2h0ID0gW1tXZWJOb2RlSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0
aFRhcmdldFZpZXc6dmlldyBpbnNwZWN0b3JDb250cm9sbGVyOltfaW5zcGVjdGVkV2ViVmlldyBw
YWdlXS0+aW5zcGVjdG9yQ29udHJvbGxlcigpXTsKKyAgICAgICAgX2N1cnJlbnRIaWdobGlnaHQg
PSBbW1dlYk5vZGVIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoVGFyZ2V0Vmlldzp2aWV3IGluc3Bl
Y3RvckNvbnRyb2xsZXI6JltfaW5zcGVjdGVkV2ViVmlldyBwYWdlXS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpXTsKICAgICAgICAgW19jdXJyZW50SGlnaGxpZ2h0IHNldERlbGVnYXRlOnNlbGZdOwog
ICAgICAgICBbX2N1cnJlbnRIaWdobGlnaHQgYXR0YWNoXTsKICAgICB9IGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggZWY1MjJhMjA3YjRmM2Y3NzcxZDFlMWViM2NiMTFlNzcyZmI5MzdlMi4uOGJh
Y2EyYzEyZjY0MTQ5YzQ5ZDNkMjg5NzJmNTU1NzJjNGJiYTFjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBA
IC0xNzAsOSArMTcwLDkgQEAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnMKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsK
LSAgICBPd25QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGZyb250ZW5kQ2xpZW50ID0g
YWRvcHRQdHIobmV3IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1faW5zcGVjdGVkV2ViVmll
dywgbV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcs
IGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSkpOwor
ICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQs
IGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlz
LCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9u
dGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudC5yZWxlYXNlKCkp
OworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoc3RkOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CiAgICAgbV9mcm9udGVu
ZEh3bmQgPSBmcm9udGVuZEh3bmQ7CiAgICAgcmV0dXJuIHRoaXM7CiB9CkBAIC00MzgsNyArNDM4
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZp
ZXcoYm9vbCBub3RpZnlJbnNwZWN0b3JDb250cm8KICAgICBjbG9zZVdpbmRvd1dpdGhvdXROb3Rp
ZmljYXRpb25zKCk7CiAKICAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikgewotICAg
ICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5k
aXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoKTsKICAgICAgICAgbV9p
bnNwZWN0b3JDbGllbnQtPnVwZGF0ZUhpZ2hsaWdodCgpOwogICAgIH0KICAgICA6OkRlc3Ryb3lX
aW5kb3cobV9mcm9udGVuZEh3bmQpOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIExSRVNVTFQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6Om9uU2l6ZShXUEFSQU0sIExQQVJBTSkKIExSRVNVTFQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Om9uQ2xvc2UoV1BBUkFNLCBMUEFSQU0pCiB7CiAgICAg
OjpTaG93V2luZG93KG1fZnJvbnRlbmRId25kLCBTV19ISURFKTsKLSAgICBtX2luc3BlY3RlZFdl
YlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOworICAgIG1faW5z
cGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIAog
ICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSW5zcGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggOGJmYTdl
NTNhMDQ3OTAyNDRlYTYyODAzYTcyNWU0MTc0NmM1MDdiOC4uZmQ1OGZkNmEwODQ1NTc3MDFkMDBk
NjY0NzNjNGJkNWEzYWU2OWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSW5z
cGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwCkBAIC0x
MDksNyArMTA5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OnNo
b3coKQogewogICAgIGlmIChtX3dlYlZpZXcpCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV93
ZWJWaWV3LT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PnNob3coKTsKKyAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7
CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6Y2xvc2UoKQogewogICAgIGlmIChtX3dlYlZpZXcp
CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV93ZWJWaWV3LT5wYWdlKCkpCi0gICAgICAgICAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNsb3NlKCk7CisgICAgICAgICAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2UoKTsKIAogICAgIHJldHVybiBTX09LOwogfQpA
QCAtMjE5LDcgKzIxOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9y
Ojppc0phdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEJPT0wqIGlzUHJvCiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm4gU19PSzsKIAotICAgICppc1Byb2ZpbGluZ0VuYWJsZWQgPSBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnByb2ZpbGVyRW5hYmxlZCgpOworICAgICppc1Byb2Zp
bGluZ0VuYWJsZWQgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkucHJvZmlsZXJFbmFibGVk
KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIzMiw3ICsyMzIsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQoQk9PTCBlbmFibAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKLSAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFByb2ZpbGVyRW5hYmxlZChlbmFibGVk
KTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0UHJvZmlsZXJFbmFibGVkKGVu
YWJsZWQpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yNDcsNyArMjQ3LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSAgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZUluRnJvbnRlbmQoVUxP
TkcgY2FsbElkLCBCU1RSIGIKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKICAgICBTdHJpbmcgc2Ny
aXB0KGJTY3JpcHQsIFN5c1N0cmluZ0xlbihiU2NyaXB0KSk7Ci0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsK
KyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVu
ZChjYWxsSWQsIHNjcmlwdCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYk5vZGVIaWdobGlnaHQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViTm9kZUhpZ2hsaWdodC5jcHAKaW5kZXggMDU3ZGU1YTE0YzFiNDAzNjg3ZThlODEzYzRjNDJl
NzIwZDViYzJkNC4uOTQzZTM4Nzc4NWQ0ODEyYzZlMzgwOTIzODc2NzI3OWQ3ZjdhYTRlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hsaWdodC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hsaWdodC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2
b2lkIFdlYk5vZGVIaWdobGlnaHQ6OnVwZGF0ZSgpCiAKICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dChoZGMuZ2V0KCkpOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgbV9pbnNwZWN0ZWRX
ZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZHJhd0hpZ2hsaWdodChjb250
ZXh0KTsKLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorICAgIG1faW5zcGVjdGVkV2ViVmll
dy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZHJhd0hpZ2hsaWdodChjb250ZXh0KTsK
KyNlbmRpZgogCiAgICAgQkxFTkRGVU5DVElPTiBiZjsKICAgICBiZi5CbGVuZE9wID0gQUNfU1JD
X09WRVI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNDJmYWZlMDBmMTg1NWFi
YmFmZmE5OGIxNDExMGExMzg1YjA0Y2ViNS4uNzZlMGI4ZDQ4NTExOThkYjYyN2RlYjc5NjdkNDhh
MTZjMTk1MzAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTQ1LDcgKzE0
NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVy
bGF5KiwgV2ViUGFnZSopCiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkcmF3UmVjdChQYWdl
T3ZlcmxheSosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgLypkaXJ0eVJlY3QqLykKIHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+ZHJhd0hpZ2hsaWdodChjb250ZXh0KTsKKyAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kcmF3SGlnaGxpZ2h0KGNvbnRleHQp
OwogfQogCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6bW91c2VFdmVudChQYWdlT3ZlcmxheSos
IGNvbnN0IFdlYk1vdXNlRXZlbnQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50LmNwcAppbmRleCBkMWY1MWRkNGY1OGRlMGM1YjAxYTExN2Y2NTRiYzQxN2VhYmY3OGU0
Li4wNThmMGZmMTBiYjJlNzRlNzhiYzRhZGE0Y2JlZWRjNThmNWIwNmM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViUGFnZSogcGFnZSwg
V2ViUGFnZSogaW5zcGVjdG9yUGFnZSkKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwocGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdl
LT5jb3JlUGFnZSgpLCBhZG9wdFB0cihuZXcgU2V0dGluZ3MoKSkpCisgICAgOiBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsKCZwYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCksIGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIGFkb3B0UHRyKG5ldyBTZXR0aW5ncygpKSkK
ICAgICAsIG1fcGFnZShwYWdlKQogewogfQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJvbnQoKQogCiB2b2lkIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpjbG9zZVdpbmRvdygpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCgpOwog
ICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmRpZENsb3NlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggOWM5ZWNi
NWI2ZmJhYzU2ZjkyYThkODg5NDFhY2Q4ZDVkNWFmNjliNi4uNDMwNTIyYmJkYTllMzk4MWY0Y2Q1
MzBhNzQxZWU1ZWJiOTFlMzBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTg5LDkgKzg5LDkgQEAgV2ViUGFnZSogV2Vi
SW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKCkKICAgICBtX2luc3BlY3RvclBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKGluc3BlY3RvclBhZ2VJRCk7CiAgICAgQVNTRVJU
KG1faW5zcGVjdG9yUGFnZSk7CiAKLSAgICBPd25QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ+IGZyb250ZW5kQ2xpZW50ID0gYWRvcHRQdHIobmV3IFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KG1fcGFnZSwgbV9pbnNwZWN0b3JQYWdlKSk7CisgICAgYXV0byBmcm9udGVuZENsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1fcGFnZSwgbV9p
bnNwZWN0b3JQYWdlKTsKICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0
KCk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KGZyb250ZW5kQ2xpZW50LnJlbGVhc2UoKSk7
CisgICAgbV9pbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CiAg
ICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsKIH0KIApAQCAtMTYyLDEyICsxNjIsMTIgQEAgdm9p
ZCBXZWJJbnNwZWN0b3I6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogLy8gQ2Fs
bGVkIGJ5IFdlYkluc3BlY3RvciBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3coKQog
ewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7
CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwog
fQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2UoKQogewotICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOworICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNsb3NlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
OjpkaWRTYXZlKGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgdm9pZCBX
ZWJJbnNwZWN0b3I6OmRldGFjaGVkKCkKIAogdm9pZCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlU2Ny
aXB0Rm9yVGVzdChsb25nIGNhbGxJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQoY2FsbElELCBzY3JpcHQpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElELCBzY3JpcHQp
OwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd0NvbnNvbGUoKQogewotICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93Q29uc29sZSgpOwogfQog
CiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd1Jlc291cmNlcygpCiB7Ci0gICAgbV9wYWdlLT5jb3Jl
UGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQ
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiAgICAgaWYgKG1fZnJvbnRlbmRD
bGllbnQpCiAgICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dSZXNvdXJjZXMoKTsKIH0KQEAg
LTIyNSw3ICsyMjUsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsK
KyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiAg
ICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPnNob3dN
YWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpOwogfQpAQCAtMjMzLDcgKzIz
Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCkKIHZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3JpcHREZWJ1Z2dpbmco
KQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogICAgIGlmIChtX2Zyb250ZW5kQ2xp
ZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFibGVkKHRydWUp
OwogI2VuZGlmCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2
YVNjcmlwdERlYnVnZ2luZygpCiB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHREZWJ1
Z2dpbmcoKQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgbV9wYWdlLT5j
b3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogICAgIGlmIChtX2Zyb250
ZW5kQ2xpZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXREZWJ1Z2dpbmdFbmFibGVk
KGZhbHNlKTsKICNlbmRpZgpAQCAtMjUxLDE4ICsyNTEsMTggQEAgdm9pZCBXZWJJbnNwZWN0b3I6
OnN0b3BKYXZhU2NyaXB0RGVidWdnaW5nKCkKIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5zaG93KCk7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0UHJvZmls
ZXJFbmFibGVkKGVuYWJsZWQpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNldFByb2ZpbGVyRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogfQogCiB2b2lk
IFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5nKCkKIHsKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+c2hvdygpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLnNob3coKTsKICAgICBpZiAobV9mcm9udGVuZENsaWVudCkKICAgICAgICAgbV9m
cm9udGVuZENsaWVudC0+c3RhcnRQcm9maWxpbmdKYXZhU2NyaXB0KCk7CiAjZW5kaWYKQEAgLTI3
MSw3ICsyNzEsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0UHJvZmlsaW5n
KCkKIHZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdFByb2ZpbGluZygpCiB7CiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnN0b3BQcm9maWxpbmdKYXZhU2NyaXB0KCk7CiAjZW5kaWYK
QEAgLTI3OSwxNCArMjc5LDE0IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdFBy
b2ZpbGluZygpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydFBhZ2VQcm9maWxpbmcoKQogewot
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7Cisg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogICAg
IGlmIChtX2Zyb250ZW5kQ2xpZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1l
bGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzdG9w
UGFnZVByb2ZpbGluZygpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5zaG93KCk7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAgICAgIG1fZnJv
bnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChmYWxzZSk7CiB9CkBAIC0z
MTAsNyArMzEwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpkaXNwYXRj
aE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3Nh
Z2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogfQog
CiB2b2lkIFdlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQpAQCAtMzE5LDE0
ICszMTksMTQgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkK
ICAgICAvLyBTd2l0Y2hpbmcgYmV0d2VlbiBpbi1wcm9jZXNzIGFuZCByZW1vdGUgaW5zcGVjdG9y
cyBpc24ndCBzdXBwb3J0ZWQgeWV0LgogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JQYWdlKTsKICAg
ICAKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVj
dEZyb250ZW5kKG1fZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwpOwog
ICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQogewogICAgIEFTU0VSVChtX3JlbW90
ZUZyb250ZW5kQ29ubmVjdGVkKTsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAgbV9yZW1v
dGVGcm9udGVuZENvbm5lY3RlZCA9IGZhbHNlOwogfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221384</attachid>
            <date>2014-01-16 09:41:31 -0800</date>
            <delta_ts>2014-01-16 15:26:00 -0800</delta_ts>
            <desc>v2</desc>
            <filename>bug-127068-20140116094131.patch</filename>
            <type>text/plain</type>
            <size>85661</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q2NGQ5ZjdhOTEwYjdi
YmNlY2MxNDZjMzg1MTA0YjI4OTNmOWFiOS4uODMyOTJjZDYxZWJiZjI0OTI3OWEwYzBjYTIzYmMx
N2YyNDRjM2EwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxNC0wMS0xNiAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdl
IHNob3VsZCB1c2Ugc3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFBhZ2UgYW5k
IFdvcmtlckdsb2JhbFNjb3BlIGtlZXAgYSBzdGQ6OnVuaXF1ZV9wdHIgdG8gSW5zcGVjdG9yQ29u
dHJvbGxlcgorICAgICAgICBhbmQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci4gU3RvcmUgcGFn
ZSByZWZlcmVuY2VzIGFuZCByZXR1cm4gY29udHJvbGxlcgorICAgICAgICByZWZlcmVuY2VzIHdo
ZXJlIHBvc3NpYmxlLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBzaXRlcyB0byB1c2UgYW4gSW5z
cGVjdG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisgICAgICAgIENvbnZlcnQgaW5zdGFudGlhdGlv
bnMgb2YgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgdG8gdXNlIHN0ZDo6dW5pcXVlX3B0ci4KKyAg
ICAgICAgQ29udmVydCBJbnNwZWN0b3JPdmVybGF5IHRvIGtlZXAgUGFnZSByZWZlcmVuY2VzLgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c3VwcG9y
dHNQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0
c1JpY2hTb3VyY2VJbmZvKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjppbnNwZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRldmVsb3BlckV4dHJhc0VuYWJsZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNoYW5nZUF0dGFj
aGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3VGFiKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRv
d0hlaWdodCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yT3ZlcmxheTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aW5zdHJ1bWVudGF0aW9uRm9yUGFnZSk6IHJlbW92ZSBudWxsIGNo
ZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6Omluc3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2JhbFNj
b3BlKTogcmVtb3ZlIG51bGwgY2hlY2tzLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmFkZEluc3BlY3RFbGVtZW50SXRlbSk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6aW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6
aGFzTG9jYWxEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6cGFy
ZW50UHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6
OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6c2V0SW5k
aWNhdGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRp
bmdDb29yZGluYXRvcjo6c3luY0Rpc3BsYXlTdGF0ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVn
aW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRD
YW5jZWxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3Bl
Y3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xvc2VEdW1teUlu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0SW5zcGVj
dG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aDogcmVtb3ZlIGNsZWFySW5zcGVjdG9yKCkuIAorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6Ondvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdFRvV29y
a2VyR2xvYmFsU2NvcGVJbnNwZWN0b3JUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2Nvbm5l
Y3RGcm9tV29ya2VyR2xvYmFsU2NvcGVJbnNwZWN0b3JUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OmRpc3BhdGNoT25JbnNwZWN0b3JCYWNrZW5kVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkU2h1dGRvd25GaW5p
c2hUYXNrOjpwZXJmb3JtVGFzayk6CisKIDIwMTQtMDEtMTUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY2FwdHVyZSBwcm9iZSBzYW1wbGVz
IG9uIHRoZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYjE4ZTUxNGIzZjg2NWFlOThhYjAy
YzBkOGJlNzY5Yjg1MzI3YmUyMS4uYjU3MmJhN2YwOTM4YzJkM2M2NzYzM2FlN2NjMDBjNTQwZmEz
NTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE0LTAxLTE1ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2Ug
c2hvdWxkIHVzZSBzdGQ6OnVuaXF1ZV9wdHIgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzA2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBz
aXRlcyB0byB1c2UgYSBJbnNwZWN0b3JDb250cm9sbGVyIHJlZmVyZW5jZS4KKyAgICAgICAgQ29u
dmVydCBpbnN0YW50aWF0aW9ucyBvZiBJbnNwZWN0b3JGcm9udGVuZENsaWVudCB0byB1c2Ugc3Rk
Ojp1bmlxdWVfcHRyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVh
dGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6b3Blbklu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
ZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfaW5zcGVjdG9yX2Ns
b3NlKToKKwogMjAxNC0wMS0xNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF1bV0sxXSBJbXBsZW1lbnQgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZs
IHRvIGZpeCB0aGUgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0YTMzZWY0NDY5OGMyZGIwNmE3
MjVmYmU3MTU4OTYwNjY4Yzg3MmU0Li5jOTE5YTI0NmFhNDYwNTcwMTBmYmVmNGZjMmVhM2ExNzY3
OTdhNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMDEtMTUgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFn
ZSBzaG91bGQgdXNlIHN0ZDo6dW5pcXVlX3B0ciBmb3IgSW5zcGVjdG9yQ29udHJvbGxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MDY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBjYWxs
IHNpdGVzIHRvIHVzZSBhIEluc3BlY3RvckNvbnRyb2xsZXIgcmVmZXJlbmNlLgorICAgICAgICBD
b252ZXJ0IGluc3RhbnRpYXRpb25zIG9mIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHRvIHVzZSBz
dGQ6OnVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpwYWludFdlYlZpZXcpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0d2ViaW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9w
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jfc2hvdyk6CisgICAgICAgICh3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9pbnNwZWN0X25vZGUpOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jf
aW5zcGVjdF9jb29yZGluYXRlcyk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9jbG9z
ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9leGVjdXRlX3NjcmlwdCk6CisKIDIw
MTQtMDEtMTUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dLMV0gQWRkIFByb2dyZXNzVHJhY2tlckNsaWVudCBpbXBsZW1lbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGY4Yjk2MDI0OWMzMjc4YWQ2ODdiOWY2NTQ1OTU1OTk3ZWViZTM2ZWUu
LjkyMmE0MjA1MjVlNmY2NmEzODY0NmEyM2QzMjAzNTA1NzYwODAxZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNC0wMS0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdlIHNob3VsZCB1c2Ugc3RkOjp1bmlx
dWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGNhbGwgc2l0ZXMgdG8gdXNlIGEgSW5zcGVj
dG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisgICAgICAgIENvbnZlcnQgaW5zdGFudGlhdGlvbnMg
b2YgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgdG8gdXNlIHN0ZDo6dW5pcXVlX3B0ci4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKC1bV2Vi
SW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBkZXN0cm95SW5zcGVjdG9yVmlldzpdKToKKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0
b3Igc2hvd1dpbmRvd10pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgaXNKYXZhU2NyaXB0UHJv
ZmlsaW5nRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3Igc2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvciBjbG9zZTpdKToKKyAg
ICAgICAgKC1bV2ViSW5zcGVjdG9yIGV2YWx1YXRlSW5Gcm9udGVuZDpjYWxsSWQ6c2NyaXB0Ol0p
OgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW06CisgICAgICAg
ICgtW1dlYk5vZGVIaWdobGlnaHRlciBoaWdobGlnaHRdKToKKwogMjAxNC0wMS0xNSAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1pc3NpbmcgUmVu
ZGVyT2JqZWN0OjpzdHlsZSgpIHN5bWJvbCBpbiBXZWJET01PcGVyYXRpb25zLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggMWI5Yjc0NmUyOTE3YTY5NzBmYTk0ZmJhZDQ3MGE3NTk2NzE1MzIwMi4uMGQw
MDJhYWE1ZmM3ZTM2NjBhMjYxZjRlMTM3YmU0ZDQ5MjFhNGVjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1IEBACisyMDE0LTAxLTE1ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2Ugc2hvdWxkIHVzZSBzdGQ6OnVuaXF1ZV9w
dHIgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBzaXRlcyB0byB1c2UgYSBJbnNwZWN0b3JD
b250cm9sbGVyIHJlZmVyZW5jZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJv
eUluc3BlY3RvclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Om9u
Q2xvc2UpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0
b3I6OnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpjbG9zZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3I6OmlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZCk6CisgICAgICAgICogV2ViTm9kZUhpZ2hsaWdodC5j
cHA6CisgICAgICAgIChXZWJOb2RlSGlnaGxpZ2h0Ojp1cGRhdGUpOgorCiAyMDE0LTAxLTEwICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVHdlYWsgUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYxZjRiZjJmZmE3YmY3
YmM5YTU1ZGMxNWRkZmQxY2I3NDg1ZGFkOGIuLjc3NTQwNjIyZjJjYzNmNDAzMDE2M2I5OGY2MGM5
YzRlN2I4MmI4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0wMS0xNSAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdl
IHNob3VsZCB1c2Ugc3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGNhbGwg
c2l0ZXMgdG8gdXNlIGEgSW5zcGVjdG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3Rv
clBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNob3cpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yOjpldmFsdWF0ZVNjcmlwdEZvclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzaG93UmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlw
dERlYnVnZ2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3Jp
cHREZWJ1Z2dpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNldEphdmFTY3Jp
cHRQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzdGFy
dEphdmFTY3JpcHRQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0
b3BKYXZhU2NyaXB0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpz
dGFydFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0b3BQ
YWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6
OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCk6CisKIDIwMTQtMDEtMTUgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYiBwcm9j
ZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHdoZW4gcHJpbnRpbmcgaW4gc3luY2hyb25vdXMgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmNzdjMzFiNzRhNzVhNDI3ZTZjYWIzZjgwMmI5ZDAxM2I2
ZWFhMzY0Li4xN2RlNWM2N2RiZGEwMTNjMTE2NTYzNWYyZGEwZmFjYjczNzUwYmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtMjc2MCw3ICsyNzYwLDcgQEAgX19aTjdXZWJDb3JlMTlJbnNwZWN0
b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9u
dGUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5k
RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZEVsUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU4zV1RGMTBQYXNzT3duUHRySU5TXzIzSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRFRUUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFTlN0M19fMTEwdW5pcXVlX3B0cklOU18yM0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50RU5TMV8xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRUUKIF9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNG
cm9tSW50ZXJuYWxzRWlpCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI0c2hvd0V2
CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMmI4ZGQ0M2NmNTFh
ZmZlZmQzNGNhMDFkZGI1MmIxMWU0MWYzNTUwYi4uNzVhMWY3M2ZhZWJhMTc2OWFkNzU2YmY5NzA3
MDMyNTE0ZmZiOTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1
cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCk7CisgICAgcmV0dXJuIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5wcm9maWxlckVuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMzksNyArMTM5LDcg
QEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGJvb2wgZW5hYmxlZCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZW5h
YmxlZCgpOworICAgIGJvb2wgZW5hYmxlZCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5l
bmFibGVkKCk7CiAgICAgQVNTRVJUKGVuYWJsZWQgfHwgIXRoaXNPYmplY3QtPmRlYnVnZ2VyKCkp
OwogICAgIEFTU0VSVChlbmFibGVkIHx8ICFzdXBwb3J0c1Byb2ZpbGluZyh0aGlzT2JqZWN0KSk7
CiAgICAgcmV0dXJuIGVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZGU3ODc1MTgzNTYyMWNm
NWQ2ZTE3MmMxYWJhNjM3NGIwZGM2YzZkYS4uMDc2MzFjZjg0N2JiNDBmOGRkNjM1NTZkMzBjYjA3
ZDcwMmUyZWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgTm9k
ZTo6aW5zcGVjdCgpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoZG9jdW1lbnQo
KS5wYWdlKCkpCi0gICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmluc3BlY3QodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuaW5zcGVjdCh0aGlzKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggOWE0ZjExYTZkYjE5
Mzc4OGFmN2Q0NjkzNDUwMzQxMDRlYzNjNDQzZS4uODQ0MzAyYjQ0MDkzN2NiNjZjNDA4YzYzNzQy
ZGRmMTNkNGI4NWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtODIsMTAgKzgyLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCkKK0luc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiAgICAgOiBtX2luc3RydW1lbnRp
bmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUluamVjdGVkU2NyaXB0TWFu
YWdlcj4oKnRoaXMsIFBhZ2VJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKLSAgICAsIG1f
b3ZlcmxheShJbnNwZWN0b3JPdmVybGF5OjpjcmVhdGUocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkK
KyAgICAsIG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2Us
IGluc3BlY3RvckNsaWVudCkpCiAgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxs
cHRyKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0
b3JDbGllbnQpCkBAIC0xMDEsNyArMTAxLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdl
bnQpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUoaW5zcGVjdG9yQWdlbnRQdHIpKTsK
IAotICAgIGF1dG8gcGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdl
QWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgaW5zcGVjdG9yQ2xpZW50
LCBtX292ZXJsYXkuZ2V0KCkpOworICAgIGF1dG8gcGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgJnBh
Z2UsIGluc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX3BhZ2VBZ2VudCA9
IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptb3ZlKHBhZ2VB
Z2VudFB0cikpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3Bl
Y3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAg
ICAgbV9yZXNvdXJjZUFnZW50ID0gcmVzb3VyY2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptb3ZlKHJlc291cmNlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gcnVudGlt
ZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PihtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBwYWdlLCBw
YWdlQWdlbnQpOworICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlUnVudGltZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpLCAmcGFnZSwgcGFnZUFnZW50KTsKICAgICBJbnNwZWN0b3JSdW50
aW1lQWdlbnQqIHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5nZXQoKTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptb3ZlKHJ1bnRpbWVBZ2VudFB0cikpOwogCkBAIC0xNTQsNyArMTU0
LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdl
LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2RvbURlYnVnZ2VyQWdlbnQgPSBk
b21EZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUo
ZG9tRGVidWdnZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBwcm9maWxlckFnZW50UHRyID0gSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwg
Y29uc29sZUFnZW50LCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSk7CisgICAg
YXV0byBwcm9maWxlckFnZW50UHRyID0gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgY29uc29sZUFnZW50LCAmcGFnZSwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwogICAgIG1fcHJvZmlsZXJBZ2VudCA9IHByb2ZpbGVyQWdl
bnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShwcm9maWxlckFnZW50
UHRyKSk7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAg
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlci5nZXQoKSkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9ySW5wdXRBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlKSk7
CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5wdXRBZ2Vu
dD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmcGFnZSkpOwogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckxheWVyVHJlZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsK
QEAgLTE5NSwyMyArMTk1LDE3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250
cm9sbGVyKCkKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yQ2xpZW50KTsKIH0KIAotUGFzc093blB0
cjxJbnNwZWN0b3JDb250cm9sbGVyPiBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGUoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JDb250cm9sbGVyKHBhZ2UsIGNsaWVudCkpOwotfQotCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewogICAgIGRpc2Nvbm5lY3RG
cm9udGVuZCgpOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7CiAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwogICAgIG1faW5zcGVj
dG9yQ2xpZW50ID0gMDsKLSAgICBtX3BhZ2UgPSAwOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQordm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQogewotICAgIG1faW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKKyAgICBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50ID0gc3RkOjptb3ZlKGluc3BlY3RvckZyb250ZW5kQ2xpZW50
KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29u
c3QKQEAgLTIzNCw3ICsyMjgsNyBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90
ZUZyb250ZW5kKCkgY29uc3QKIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0
b3JGcm9udGVuZENsaWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuZ2V0KCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAgLTI2OCw3ICsyNjIsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CiAgICAgaWYgKCFtX2hhc1JlbW90ZUZyb250ZW5kKQotICAgICAgICBtX3BhZ2UtPnJlbW90ZUlu
c3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNw
ZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwogI2VuZGlmCiB9CiAKQEAgLTI5MCw3ICsyODQs
NyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoIW1faGFzUmVtb3RlRnJvbnRlbmQp
Ci0gICAgICAgIG1fcGFnZS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsK
KyAgICAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAj
ZW5kaWYKIH0KIApAQCAtMzY1LDcgKzM1OSw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKTsKIH0K
IAotUGFnZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CitQYWdl
JiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYWdlOwogfQpAQCAtNDUzLDEwICs0NDcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZENvbXBvc2l0ZSgpCiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCkuZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCgpOworICAgIHJldHVybiBtX3BhZ2Uuc2V0dGluZ3MoKS5kZXZlbG9wZXJFeHRyYXNF
bmFibGVkKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVj
dGVkU2NyaXB0U3RhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZDZhNzBj
NTNlM2FiOGQ5NmY2MGY2ZmU5NTA1YTUyM2ZlYTY0Y2I1Ny4uMmJhZTM0YzE2MTM4M2Y5ODI4MTRl
ZWYyN2MxMzkxNjFjNDk2OWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC03NywxOCArNzcsMTggQEAgY2xhc3MgSW5zcGVjdG9yQ29u
dHJvbGxlciBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBh
Z2UmLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDb250cm9sbGVy
KCk7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JDb250cm9sbGVyPiBjcmVhdGUo
UGFnZSosIEluc3BlY3RvckNsaWVudCopOwogICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3ll
ZCgpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7Ci0gICAgUGFnZSogaW5zcGVjdGVkUGFn
ZSgpIGNvbnN0OworICAgIFBhZ2UmIGluc3BlY3RlZFBhZ2UoKSBjb25zdDsKIAogICAgIHZvaWQg
c2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4pOworICAgIHZvaWQg
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250
ZW5kQ2xpZW50Pik7CiAgICAgYm9vbCBoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0
OwogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBl
cldvcmxkJik7CiAKQEAgLTE0NCwxMyArMTQ0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rpb24oKSBPVkVSUklERTsKIAogcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQqKTsKLQogICAg
IGZyaWVuZCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JQYWdlKFBhZ2Uq
KTsKIAogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2Vu
dHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIE93blB0cjxJbnNwZWN0b3JPdmVybGF5PiBtX292ZXJs
YXk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvck92ZXJsYXk+IG1fb3ZlcmxheTsKIAog
ICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAgICAgSW5z
cGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CkBAIC0xNjQsOSArMTYyLDkgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci0gICAgT3duUHRyPEluc3BlY3RvckZy
b250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsK
ICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7Ci0gICAgUGFnZSogbV9wYWdlOworICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJ
bnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcAppbmRleCBhNmNmMDI3NGUwNGQ2OWI4MzY2MGIyMDZmMDc1ODM5ZTQz
MDU1Y2Q5Li40ZTg1YmM1MzI5OTVlZDVkZGE5NDk2ODZjNGRiNmFkMGRlYTlmOGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCkBAIC0xODIsOCArMTgyLDggQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpjYW5BdHRhY2hXaW5kb3coKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21h
bGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0gaW5zcGVjdG9yIHNpemUuCi0gICAgdW5zaWdu
ZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVk
UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKLSAgICB1bnNpZ25l
ZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBh
Z2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKKyAgICB1bnNpZ25lZCBp
bnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdl
KCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAgdW5zaWduZWQgaW5z
cGVjdGVkUGFnZVdpZHRoID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCku
bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKICAgICB1bnNpZ25lZCBtYXhpbXVt
QXR0YWNoZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogbWF4aW11bUF0dGFjaGVkSGVp
Z2h0UmF0aW87CiAgICAgcmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0
YWNoZWRIZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRo
OwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6c2V0RG9ja2luZ1VuYXZhaWxhYmxlKGJvb2wgdW5hdmFpbGFibGUpCiAKIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWdu
ZWQgaGVpZ2h0KQogewotICAgIHVuc2lnbmVkIHRvdGFsSGVpZ2h0ID0gbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0b3JDb250cm9s
bGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgp
OworICAgIHVuc2lnbmVkIHRvdGFsSGVpZ2h0ID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgp
LnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0
ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgdW5zaWdu
ZWQgYXR0YWNoZWRIZWlnaHQgPSBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdo
dCwgdG90YWxIZWlnaHQpOwogICAgIG1fc2V0dGluZ3MtPnNldFByb3BlcnR5KGluc3BlY3RvckF0
dGFjaGVkSGVpZ2h0U2V0dGluZywgU3RyaW5nOjpudW1iZXIoYXR0YWNoZWRIZWlnaHQpKTsKICAg
ICBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodChhdHRhY2hlZEhlaWdodCk7CkBAIC0yMDMsNyArMjAz
LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIHsKLSAg
ICB1bnNpZ25lZCB0b3RhbFdpZHRoID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXco
KS0+dmlzaWJsZVdpZHRoKCkgKyBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2Uo
KS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKKyAgICB1bnNpZ25lZCB0b3Rh
bFdpZHRoID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRo
KCkgKyBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52
aWV3KCktPnZpc2libGVXaWR0aCgpOwogICAgIHVuc2lnbmVkIGF0dGFjaGVkV2lkdGggPSBjb25z
dHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgsIHRvdGFsV2lkdGgpOwogICAgIHNldEF0
dGFjaGVkV2luZG93V2lkdGgoYXR0YWNoZWRXaWR0aCk7CiB9CkBAIC0yMTEsOCArMjExLDcgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKHVuc2lnbmVkIHdpZHRoKQogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpv
cGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgIFBhZ2Uq
IHBhZ2UgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKTsKLSAgICBGcmFt
ZSYgbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgRnJhbWUmIG1haW5GcmFtZSA9
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpOwogICAg
IEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChtYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KCksICJfYmxhbmsiKTsKIAogICAgIGJvb2wgY3JlYXRl
ZDsKQEAgLTI1Nyw3ICsyNTYsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OnNldEF0dGFjaGVkV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQogCiB2b2lkIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgpCiB7Ci0gICAg
dW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5z
cGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1
bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNw
ZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgU3Ry
aW5nIHZhbHVlID0gbV9zZXR0aW5ncy0+Z2V0UHJvcGVydHkoaW5zcGVjdG9yQXR0YWNoZWRIZWln
aHRTZXR0aW5nKTsKICAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0VtcHR5
KCkgPyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiB2YWx1ZS50b1VJbnQoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCBmMTVlMjAz
NDFmZWZkY2UzNzBkZTA0YzkzODdmMGY4YzJlNDM4NzE2Li4wYmQ4NjliOThiMDg5M2I1ZmIzMTky
NmY2NTcxYmY2NzQzMjIxNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCkBAIC0yMjgsMTAgKzIyOCw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkTm9k
ZUhpZ2hsaWdodChOb2RlKiBub2RlLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29uc3QgSGlnaGxp
Z2h0CiAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwgcmVnaW9uLCBoaWdobGln
aHRDb25maWcsIGhpZ2hsaWdodCk7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdo
dChQYWdlKiBwYWdlLCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hsaWdodENvbmZp
ZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hsaWdodCkKK3N0YXRpYyB2b2lkIGJ1
aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hsaWdodENv
bmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hsaWdodCkKIHsKLSAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybjsKICAgICBoaWdobGlnaHQtPnNldERhdGFGcm9tQ29uZmln
KGhpZ2hsaWdodENvbmZpZyk7CiAgICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJl
Y3RzOwogICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKHF1YWQpOwpAQCAtMjM5LDcgKzIzNyw3
IEBAIHN0YXRpYyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChQYWdlKiBwYWdlLCBjb25zdCBGbG9h
dFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hsaWdoCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQog
Ci1JbnNwZWN0b3JPdmVybGF5OjpJbnNwZWN0b3JPdmVybGF5KFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50KQorSW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheShQYWdl
JiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcGFnZShwYWdlKQogICAg
ICwgbV9jbGllbnQoY2xpZW50KQogewpAQCAtMjc0LDcgKzI3Miw3IEBAIHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCogaGlnaGxpZ2h0KSBjb25zdAogICAgIGlm
IChtX2hpZ2hsaWdodE5vZGUpCiAgICAgICAgIGJ1aWxkTm9kZUhpZ2hsaWdodChtX2hpZ2hsaWdo
dE5vZGUuZ2V0KCksIG51bGxwdHIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsK
ICAgICBlbHNlCi0gICAgICAgIGJ1aWxkUXVhZEhpZ2hsaWdodChtX3BhZ2UsICptX2hpZ2hsaWdo
dFF1YWQsIG1fcXVhZEhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsKKyAgICAgICAgYnVpbGRR
dWFkSGlnaGxpZ2h0KCptX2hpZ2hsaWdodFF1YWQsIG1fcXVhZEhpZ2hsaWdodENvbmZpZywgaGln
aGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRQYXVzZWRJbkRlYnVnZ2Vy
TWVzc2FnZShjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCkBAIC0zMDAsNyArMjk4LDcgQEAgdm9pZCBJ
bnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUsIGNvbnN0IEhpZ2hsaWdo
dENvbmZpZyYgaGlnaGxpZ2gKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UXVhZChQ
YXNzT3duUHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGln
aHRDb25maWcpCiB7CiAgICAgaWYgKG1fcXVhZEhpZ2hsaWdodENvbmZpZy51c2VQYWdlQ29vcmRp
bmF0ZXMpCi0gICAgICAgICpxdWFkIC09IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zY3Jv
bGxPZmZzZXQoKTsKKyAgICAgICAgKnF1YWQgLT0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+
c2Nyb2xsT2Zmc2V0KCk7CiAKICAgICBtX3F1YWRIaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRD
b25maWc7CiAgICAgbV9oaWdobGlnaHRRdWFkID0gcXVhZDsKQEAgLTMyNCw3ICszMjIsNyBAQCB2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghdmll
dykKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzIsOCArMzMwLDggQEAgdm9pZCBJbnNwZWN0b3JP
dmVybGF5Ojp1cGRhdGUoKQogICAgIEludFNpemUgdmlld3BvcnRTaXplID0gdmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOwogICAgIEludFNpemUgZnJhbWVWaWV3RnVsbFNpemUgPSB2
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVTY3JvbGxiYXJz
KS5zaXplKCk7CiAgICAgSW50U2l6ZSBzaXplID0gbV9zaXplLmlzRW1wdHkoKSA/IGZyYW1lVmll
d0Z1bGxTaXplIDogbV9zaXplOwotICAgIG92ZXJsYXlQYWdlKCktPnNldFBhZ2VTY2FsZUZhY3Rv
cihtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpLCBJbnRQb2ludCgpKTsKLSAgICBzaXplLnNjYWxl
KG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIG92ZXJsYXlQYWdlKCktPnNldFBhZ2VT
Y2FsZUZhY3RvcihtX3BhZ2UucGFnZVNjYWxlRmFjdG9yKCksIEludFBvaW50KCkpOworICAgIHNp
emUuc2NhbGUobV9wYWdlLnBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICBvdmVybGF5Vmlldy0+cmVz
aXplKHNpemUpOwogCiAgICAgLy8gQ2xlYXIgY2FudmFzIGFuZCBwYWludCB0aGluZ3MuCkBAIC03
MTAsNyArNzA4LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck92ZXJs
YXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY28KICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBoaWdobGlnaHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
CiAgICAgLy8gVGhlIG1haW4gdmlldydzIHNjcm9sbCBvZmZzZXQgaXMgc2hhcmVkIGFjcm9zcyBh
bGwgcXVhZHMuCi0gICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCku
dmlldygpOworICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmll
dygpOwogICAgIGhpZ2hsaWdodE9iamVjdC0+c2V0T2JqZWN0KCJzY3JvbGwiLCBidWlsZE9iamVj
dEZvclBvaW50KCFtYWluVmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkgPyBtYWluVmlldy0+dmlz
aWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSA6IEZsb2F0UG9pbnQoKSkpOwogCiAgICAgaGln
aGxpZ2h0T2JqZWN0LT5zZXRBcnJheSgiZnJhZ21lbnRzIiwgaGlnaGxpZ2h0RnJhZ21lbnRzLnJl
bGVhc2UoKSk7CkBAIC03MzgsNyArNzM2LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3
UXVhZEhpZ2hsaWdodCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhpZ2hsaWdodCBoaWdobGln
aHQ7Ci0gICAgYnVpbGRRdWFkSGlnaGxpZ2h0KG1fcGFnZSwgKm1faGlnaGxpZ2h0UXVhZCwgbV9x
dWFkSGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKKyAgICBidWlsZFF1YWRIaWdobGlnaHQo
Km1faGlnaGxpZ2h0UXVhZCwgbV9xdWFkSGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKICAg
ICBldmFsdWF0ZUluT3ZlcmxheSgiZHJhd1F1YWRIaWdobGlnaHQiLCBidWlsZE9iamVjdEZvckhp
Z2hsaWdodChoaWdobGlnaHQpKTsKIH0KIApAQCAtNzU3LDcgKzc1NSw3IEBAIFBhZ2UqIEluc3Bl
Y3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKICAgICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhwYWdl
Q2xpZW50cyk7CiAgICAgbV9vdmVybGF5UGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGll
bnRzKSk7CiAKLSAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBtX3BhZ2UtPnNldHRpbmdzKCk7Cisg
ICAgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9wYWdlLnNldHRpbmdzKCk7CiAgICAgU2V0dGluZ3Mm
IG92ZXJsYXlTZXR0aW5ncyA9IG1fb3ZlcmxheVBhZ2UtPnNldHRpbmdzKCk7CiAKICAgICBvdmVy
bGF5U2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KHNldHRpbmdzLnN0YW5kYXJkRm9udEZh
bWlseSgpKTsKQEAgLTc5OCw3ICs3OTYsNyBAQCBQYWdlKiBJbnNwZWN0b3JPdmVybGF5OjpvdmVy
bGF5UGFnZSgpCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNpemUpCiB7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcmVzZXREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICByZXNldERhdGEtPnNldE51bWJlcigiZGV2aWNlU2NhbGVGYWN0b3IiLCBtX3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHJlc2V0RGF0YS0+c2V0TnVtYmVyKCJkZXZpY2VT
Y2FsZUZhY3RvciIsIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICByZXNldERhdGEt
PnNldE9iamVjdCgidmlld3BvcnRTaXplIiwgYnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0U2l6
ZSkpOwogICAgIHJlc2V0RGF0YS0+c2V0T2JqZWN0KCJmcmFtZVZpZXdGdWxsU2l6ZSIsIGJ1aWxk
T2JqZWN0Rm9yU2l6ZShmcmFtZVZpZXdGdWxsU2l6ZSkpOwogICAgIGV2YWx1YXRlSW5PdmVybGF5
KCJyZXNldCIsIHJlc2V0RGF0YS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggYjUyOTIyODU2MTFkM2I2NWYzNzVlYzMyMjcxOGIz
NDljYWQwZjMyOC4uN2UzZDAxN2IyMzVmYjc3NzI5MWYyNTBmZjQ3ZjZmMTg5NTc0MjQzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCkBAIC0xMDUsMTAg
KzEwNSw3IEBAIHN0cnVjdCBIaWdobGlnaHQgewogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5zcGVjdG9yT3ZlcmxheT4gY3JlYXRlKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCog
Y2xpZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JPdmVy
bGF5KHBhZ2UsIGNsaWVudCkpOwotICAgIH0KKyAgICBJbnNwZWN0b3JPdmVybGF5KFBhZ2UmLCBJ
bnNwZWN0b3JDbGllbnQqKTsKICAgICB+SW5zcGVjdG9yT3ZlcmxheSgpOwogCiAgICAgdm9pZCB1
cGRhdGUoKTsKQEAgLTEzMCw4ICsxMjcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZyZWVQYWdl
KCk7CiBwcml2YXRlOgotICAgIEluc3BlY3Rvck92ZXJsYXkoUGFnZSosIEluc3BlY3RvckNsaWVu
dCopOwotCiAgICAgdm9pZCBkcmF3R3V0dGVyKCk7CiAgICAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdo
dCgpOwogICAgIHZvaWQgZHJhd1F1YWRIaWdobGlnaHQoKTsKQEAgLTE0MSw3ICsxMzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29u
c3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4g
YXJndW1lbnQpOwogCi0gICAgUGFnZSogbV9wYWdlOworICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJ
bnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3BhdXNlZEluRGVidWdnZXJN
ZXNzYWdlOwogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodE5vZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKaW5kZXggYTIyMzhlOWZh
MDU1ZDY3NGY5ZGRjYzdmOTAxY2M1ZjNjNmRhMWVhNy4uODM0YTRkODNlNmNkNzg3OTc0YWU1MzZi
MWI0NjhmOGUxM2QxZWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0
cnVtZW50aW5nQWdlbnRzLmNwcApAQCAtMTA1LDE2ICsxMDUsMTIgQEAgdm9pZCBJbnN0cnVtZW50
aW5nQWdlbnRzOjpyZXNldCgpCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25G
b3JQYWdlKFBhZ2UqIHBhZ2UpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkgOiBudWxscHRyOwogfQog
CiBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29w
ZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCiB7Ci0gICAgaWYgKFdvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3b3JrZXJHbG9iYWxTY29wZS0+d29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm4gY29udHJvbGxlci0+bV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiB3b3Jr
ZXJHbG9iYWxTY29wZSA/IHdvcmtlckdsb2JhbFNjb3BlLT53b3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpIDogbnVsbHB0cjsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZTQxNDA5YWMxNWZiZDIzNmY5OTc1
OTBhYWQzNzNhMDFkYzhhYzQuLmJmZGZiYzgzZWEyMDAxYzM0MzRjZjM2NjQ3NTdjNDkwYWVmNjA1
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTU1LDcgKzU1LDYgQEAKICNpbmNsdWRlICJXb3JrZXJSdW50
aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCkBAIC02NiwzNiArNjUsMzcgQEAg
bmFtZXNwYWNlIHsKIGNsYXNzIFBhZ2VJbnNwZWN0b3JQcm94eSA6IHB1YmxpYyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIGV4cGxpY2l0IFBhZ2VJbnNwZWN0b3JQcm94eShXb3JrZXJHbG9iYWxTY29wZSogd29ya2Vy
R2xvYmFsU2NvcGUpIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkgeyB9
CisgICAgZXhwbGljaXQgUGFnZUluc3BlY3RvclByb3h5KFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKKyAgICAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2Jh
bFNjb3BlKSB7IH0KICAgICB2aXJ0dWFsIH5QYWdlSW5zcGVjdG9yUHJveHkoKSB7IH0KIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS0+
d29ya2VyUmVwb3J0aW5nUHJveHkoKS5wb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvcihtZXNzYWdl
KTsKKyAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS0+d29ya2VyUmVwb3J0aW5n
UHJveHkoKS5wb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvcihtZXNzYWdlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNj
b3BlOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogfTsKIAog
fQogCi1Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxT
Y29wZSkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpj
cmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgUGFnZUluamVjdGVkU2NyaXB0
SG9zdDo6Y3JlYXRlKCkpKQotICAgICwgbV9ydW50aW1lQWdlbnQoMCkKKyAgICAsIG1fcnVudGlt
ZUFnZW50KG51bGxwdHIpCiB7Ci0gICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUpOworICAgIGF1dG8g
cnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksICZ3
b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9ydW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnQuZ2V0
KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShydW50aW1lQWdlbnQpKTsKIAogICAg
IGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0
KCkpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGF1dG8gZGVidWdnZXJB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4obV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIuZ2V0KCkpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VyRGVidWdnZXJBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmd29ya2VyR2xv
YmFsU2NvcGUsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsKICAgICBtX3J1bnRpbWVB
Z2VudC0+c2V0U2NyaXB0RGVidWdTZXJ2ZXIoJmRlYnVnZ2VyQWdlbnQtPnNjcmlwdERlYnVnU2Vy
dmVyKCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUoZGVidWdnZXJBZ2VudCkpOwog
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIGNvbnNvbGVBZ2VudC5nZXQoKSwgd29ya2VyR2xvYmFs
U2NvcGUsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIGNvbnNvbGVBZ2VudC5nZXQoKSwgJndvcmtlckdsb2JhbFNjb3BlLCBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci5nZXQoKSkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CiAjZW5kaWYKICAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6Oldvcmtlckluc3BlY3RvciwgbnVsbHB0cikpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6On5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKIHZv
aWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKIHsKICAgICBB
U1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGFkb3B0
UHRyKG5ldyBQYWdlSW5zcGVjdG9yUHJveHkobV93b3JrZXJHbG9iYWxTY29wZSkpOworICAgIG1f
ZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlSW5zcGVjdG9yUHJveHk+KG1f
d29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKICAgICBt
X2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0
KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZv
aWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKICAgICBt
X2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpOwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFy
KCk7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwuY2xlYXIoKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5l
bCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4
IDI5ZmQzNThmNzk5ZDBhMTEyNjllZTA2MTUwZjUxOWRlNjdiYmQ2NTIuLmZmNTAzNjRmMjkwZWY2
NTdmMTBhNDdhOTgwYTIxNDE2MjI1M2U5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDAsNyArNDAsNiBAQAog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNjAsNyAr
NTksNyBAQCBjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyIEZJTkFMIDogcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2Nv
cGUqKTsKKyAgICBleHBsaWNpdCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2Jh
bFNjb3BlJik7CiAgICAgfldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAogICAgIHZvaWQg
Y29ubmVjdEZyb250ZW5kKCk7CkBAIC04MCwxMiArNzksMTIgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBmcmllbmQgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGF0aW9uRm9yV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3Bl
KiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckds
b2JhbFNjb3BlOwogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRp
bmdBZ2VudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI+
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogbV9y
dW50aW1lQWdlbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdl
bnRzOwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRlbmRDaGFu
bmVsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1fZnJv
bnRlbmRDaGFubmVsOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUsIDI+IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGE1YjU3ZDlhMmFh
OGMwNjcyMjUwOGVhODQ4OGM4NzNhOTI3NjU2MzIuLmY4ZGZiMDBiNDE3ODFhYjZiYzYyMTZlMzQ4
OTJiYmE5OTc2Y2ZkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
Mjk1Nyw3ICsyOTU3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3MKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoUGFnZSogcGFn
ZSA9IG1fZnJhbWUucGFnZSgpKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
Ci0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc3VtZSgpOworICAg
ICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlc3VtZSgpOwogICAgIH0KICNl
bmRpZgogCkBAIC0zMzcwLDcgKzMzNzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQot
ICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZCgmbV9mcmFtZSwgd29ybGQpOworICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKCZtX2ZyYW1lLCB3b3JsZCk7CiAjZW5k
aWYKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKCZtX2ZyYW1lLCB3b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKaW5kZXggYTM2YWY1NjQxYWUwNzg0NTI4MzFhYjAzMWVmZjA5ODBi
ZWY2YWFlZC4uNmQ1Y2Y3NDY1ZDczNzAzZWMzZTAxNTJmZmI5ZjYwM2ViYzA1NGNhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTU3LDcg
KzE1Nyw3IEBAIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6
Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqIGV2ZW50KQogdm9pZCBDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OnNob3dDb250ZXh0TWVudShFdmVudCogZXZlbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBpZiAobV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZW5hYmxlZCgpKQorICAg
IGlmIChtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmVuYWJsZWQoKSkKICAgICAgICAgYWRk
SW5zcGVjdEVsZW1lbnRJdGVtKCk7CiAjZW5kaWYKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVu
dUl0ZW0qIGl0ZW0pCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0luc3BlY3RFbGVtZW50OgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5w
YWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3Qo
bV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKKyAgICAgICAgICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0KG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNo
YXJlZE5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZToKQEAgLTg5Myw3ICs4OTMsNyBAQCB2b2lkIENv
bnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICAgICAg
ICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYgKGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSB8fCBmcmFtZS0+cGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmhhc1JlbW90ZUZyb250ZW5kKCkpKSkgeworICAgICAgICAg
ICAgICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYgKGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIHx8IGZyYW1lLT5wYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5oYXNSZW1vdGVGcm9udGVuZCgpKSkpIHsKICNlbmRpZgog
CiAgICAgICAgICAgICAgICAgLy8gSW4gR1RLKyB1bmF2YWlsYWJsZSBpdGVtcyBhcmUgbm90IGhp
ZGRlbiBidXQgaW5zZW5zaXRpdmUuCkBAIC0xMTAxLDkgKzExMDEsNiBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6YWRkSW5zcGVjdEVsZW1lbnRJdGVtKCkKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBDb250ZXh0TWVudUl0ZW0gSW5zcGVjdEVsZW1lbnRJdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50LCBjb250ZXh0TWVu
dUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpKTsKICNpZiBVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVY
VF9NRU5VUykKICAgICBpZiAobV9jb250ZXh0TWVudSAmJiAhbV9jb250ZXh0TWVudS0+aXRlbXMo
KS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggOGMwNjRmYjZjYTcz
Y2FkNmMxOTEyMzVhMWJiYzdhNzA0YzgyZmUwOC4uYTkwMDJlZDM3N2YxZjA3M2VhZjAwMzQ3YjE4
OTA3Y2EyZGM2ZTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjg5MCw3ICsy
ODkwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNlbmRSZXNpemVFdmVudElmTmVlZGVkKCkKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKICAgICBp
ZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSAmJiBpc01haW5GcmFt
ZSkgewotICAgICAgICBpZiAoSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgPSBwYWdl
ID8gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JDbGllbnQoKSA6IDApCisg
ICAgICAgIGlmIChJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCA9IHBhZ2UgPyBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yQ2xpZW50KCkgOiBudWxscHRyKQogICAg
ICAgICAgICAgaW5zcGVjdG9yQ2xpZW50LT5kaWRSZXNpemVNYWluRnJhbWUoJmZyYW1lKCkpOwog
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYzNlYzI3MzNlODM2NTIxZjAxMGNj
NWM5MmZmODAwYTI4M2QxYWIwMC4uNDRhNzFjYjQ2YzNkMGNhZDI3MGY0NzUzOTBhNzY3ZDQ5ODdk
NDllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgUGFnZTo6UGFnZShQ
YWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ2xpZW50
cy5jb250ZXh0TWVudUNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
ICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZSh0aGlz
LCBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDbGll
bnRzLmluc3BlY3RvckNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQog
ICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoUG9pbnRlckxvY2tDb250cm9sbGVyOjpjcmVh
dGUodGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGMzOWMyZjdmZjhmM2U3YzVmODc4YTJmMjJkOGI2
NDJkNTJmZTZkOTcuLjQzZWMwYWNhNjBhNGYzNWM4N2Q1N2Y1OWRiY2UzMjY4NmEwODkxY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogICAgIENvbnRleHRNZW51
Q29udHJvbGxlciYgY29udGV4dE1lbnVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fY29u
dGV4dE1lbnVDb250cm9sbGVyOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX2luc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBJbnNwZWN0b3JDb250cm9sbGVy
JiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1faW5zcGVjdG9yQ29udHJv
bGxlcjsgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBQb2ludGVyTG9j
a0NvbnRyb2xsZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
bnRlckxvY2tDb250cm9sbGVyLmdldCgpOyB9CkBAIC00NjEsNyArNDYxLDcgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnVDb250cm9sbGVyPiBtX2NvbnRl
eHRNZW51Q29udHJvbGxlcjsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgT3du
UHRyPEluc3BlY3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9s
bGVyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBPd25QdHI8UG9pbnRl
ckxvY2tDb250cm9sbGVyPiBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHAKaW5kZXggMmEyNmU2M2VjZTliMmYyNzA1ZDZhYzlmZjRhMjc2
ZDk0NTNlNzJlMy4uYzFmMjY1MjMzMTQzY2ExNjcyYTIzMjRlNjRhMzM3ZGQyNDA1OWUzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCBT
dHJpbmcgUGFnZURlYnVnZ2FibGU6OnVybCgpIGNvbnN0CiAKIGJvb2wgUGFnZURlYnVnZ2FibGU6
Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2UuaW5zcGVjdG9y
Q29udHJvbGxlcigpLT5oYXNMb2NhbEZyb250ZW5kKCk7CisgICAgcmV0dXJuIG1fcGFnZS5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuaGFzTG9jYWxGcm9udGVuZCgpOwogfQogCiBwaWRfdCBQYWdlRGVi
dWdnYWJsZTo6cGFyZW50UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAogewotICAgIGlmIChJbnNw
ZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmluc3BlY3RvckNsaWVudCgpKQorICAgIGlmIChJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckNsaWVudCA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yQ2xpZW50KCkp
CiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JDbGllbnQtPnBhcmVudFByb2Nlc3NJZGVudGlmaWVy
KCk7CiAKICAgICByZXR1cm4gMDsKQEAgLTc2LDI2ICs3NiwyNiBAQCBwaWRfdCBQYWdlRGVidWdn
YWJsZTo6cGFyZW50UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIFBhZ2VEZWJ1Z2dh
YmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVs
KQogewotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3Bh
Z2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXItPnNldEhh
c1JlbW90ZUZyb250ZW5kKHRydWUpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmNvbm5lY3RG
cm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCo+KGNoYW5uZWwpKTsKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9s
bGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9s
bGVyLnNldEhhc1JlbW90ZUZyb250ZW5kKHRydWUpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXIu
Y29ubmVjdEZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKj4oY2hhbm5lbCkpOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25u
ZWN0KCkKIHsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
bV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5k
aXNjb25uZWN0RnJvbnRlbmQoKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1v
dGVGcm9udGVuZChmYWxzZSk7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29u
dHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29u
dHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLnNl
dEhhc1JlbW90ZUZyb250ZW5kKGZhbHNlKTsKIH0KIAogdm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlz
cGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
LSAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJv
bnRlbmQobWVzc2FnZSk7CisgICAgbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2FibGU6
OnNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQogewotICAgIG1fcGFnZS5pbnNwZWN0b3JD
b250cm9sbGVyKCktPnNldEluZGljYXRpbmcoaW5kaWNhdGluZyk7CisgICAgbV9wYWdlLmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggODBjMmQzODk0M2NjMTFiNmZkYTY5N2RjMTE4MjUxNGUz
OTJiYzljZi4uMTRiYzk1NjdlNDc3ZWFhNTFmNDgwZTU0ODVjOTgxNjcwNDZiMDg0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApA
QCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkKIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6c3luY0Rpc3Bs
YXlTdGF0ZSgpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBtX3BhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+ZGlkQmVnaW5GcmFtZSgpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpZEJlZ2luRnJhbWUoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKSAm
JiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1NDU3MDZlNjA3NDhiZGNhNWQxZjA0NmFiNDk2
MWQxYzIzNjE3NmYwLi4xOWU5ODcwMWQ5MWI5ODJhMjJhMTk4M2Q1NDgwNTBjZmUwYWRhMjE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yODAsOCArMjgwLDcgQEAgdm9p
ZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSogcGFnZSkKICAgICBXZWJD
b3JlOjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoVmVjdG9yPFN0cmluZz4oKSk7CiAg
ICAgV2ViQ29yZTo6U2V0dGluZ3M6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
aWYgKHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5zZXRQcm9maWxlckVuYWJsZWQoZmFsc2UpOworICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQoZmFsc2UpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiAhUExBVEZPUk0oV0lOKQogICAgIHBhZ2UtPmdyb3VwKCku
Y2FwdGlvblByZWZlcmVuY2VzKCktPnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKGVtcHR5
U3RyaW5nKCkpOwpAQCAtNzA1LDEzICs3MDQsMTMgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlz
dD4gSW50ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRSZWN0cyhFeGNlcHRpb25Db2RlJiBlYykK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRl
eHREb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkgfHwg
IWRvY3VtZW50LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkgeworICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKCk7CiAgICAgfQog
CiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKLSAgICBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPmdldEhpZ2hsaWdodCgmaGlnaGxpZ2h0KTsKKyAgICBkb2N1bWVudC0+
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZ2V0SGlnaGxpZ2h0KCZoaWdobGlnaHQpOwog
ICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKGhpZ2hsaWdodC5xdWFkcyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShlYyk7CkBAIC03MjMsMTEgKzcyMiwxMSBAQCBTdHJpbmcgSW50
ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRPYmplY3QoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9j
dW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpIHx8ICFkb2N1
bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpIHsKKyAgICBpZiAoIWRvY3VtZW50
IHx8ICFkb2N1bWVudC0+cGFnZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQotICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IG9iamVjdCA9IGRvY3VtZW50LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBvYmplY3QgPSBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuYnVp
bGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKTsKICAgICByZXR1cm4gb2JqZWN0ID8gb2JqZWN0
LT50b0pTT05TdHJpbmcoKSA6IFN0cmluZygpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWMp
OwpAQCAtMTI1MywxNiArMTI1MiwxNCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6
Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgY2VudGVyWCwgaQogdm9pZCBJ
bnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBj
b250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7
Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkQmVnaW5GcmFtZSgpOworICAgIGNvbnRleHRE
b2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaWRCZWdp
bkZyYW1lKCk7CiAjZW5kaWYKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRD
YW5jZWxGcmFtZSgpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCkt
PnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXIt
PmRpZENhbmNlbEZyYW1lKCk7CisgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpZENhbmNlbEZyYW1lKCk7CiAjZW5kaWYKIH0KIApA
QCAtMTU1MCwxMyArMTU0NywxMyBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJuYWxzOjpv
cGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBQYWdlKiBm
cm9udGVuZFBhZ2UgPSBtX2Zyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCk7CiAgICAg
QVNTRVJUKGZyb250ZW5kUGFnZSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnREdW1teT4gZnJvbnRlbmRDbGllbnQgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnREdW1teShwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFnZSkpOwor
ICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250
ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFn
ZSk7CiAKLSAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKKyAgICBmcm9udGVu
ZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChz
dGQ6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKIAogICAgIG1fZnJvbnRlbmRDaGFubmVsID0gYWRv
cHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15KGZyb250ZW5kUGFnZSkpOwog
Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQobV9mcm9u
dGVuZENoYW5uZWwuZ2V0KCkpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25u
ZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG1fZnJv
bnRlbmRXaW5kb3c7CiB9CkBAIC0xNTY3LDcgKzE1NjQsNyBAQCB2b2lkIEludGVybmFsczo6Y2xv
c2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAgICBBU1NFUlQocGFnZSk7CiAgICAgQVNTRVJU
KG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5k
aXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlz
Y29ubmVjdEZyb250ZW5kKCk7CiAKICAgICBtX2Zyb250ZW5kQ2hhbm5lbC5yZWxlYXNlKCk7CiAK
QEAgLTE1NzgsMjIgKzE1NzUsMjIgQEAgdm9pZCBJbnRlcm5hbHM6OmNsb3NlRHVtbXlJbnNwZWN0
b3JGcm9udGVuZCgpCiB2b2lkIEludGVybmFsczo6c2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNp
emVMaW1pdHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1TaW5n
bGVSZXNvdXJjZUNvbnRlbnRTaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBQYWdlKiBw
YWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2Ug
fHwgIXBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkgeworICAgIGlmICghcGFnZSkgewogICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFJlc291cmNlc0RhdGFTaXplTGltaXRz
RnJvbUludGVybmFscyhtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIG1heGltdW1TaW5nbGVS
ZXNvdXJjZUNvbnRlbnRTaXplKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0
UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKG1heGltdW1SZXNvdXJjZXNDb250
ZW50U2l6ZSwgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOwogfQogCiB2b2lkIElu
dGVybmFsczo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBQYWdlKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSkgeworICAgIGlmICghcGFnZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c2V0UHJvZmlsZXJFbmFibGVkKGVuYWJsZWQpOworICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcAppbmRleCBiYWVlZDczNmQzNjAyNjlhYmYyYWIyNzUwYmRjODUzYmUzN2M0Y2MxLi4y
ODg5MjM2ZjcyZmY5NDMxOWUzZmM4YTEwZTEyOTg5Y2UyNWYwYzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtODgsNyArODgsNyBAQCBXb3Jr
ZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBzdAogICAgICwgbV9zY3JpcHQoYWRvcHRQdHIobmV3IFdvcmtlclNj
cmlwdENvbnRyb2xsZXIodGhpcykpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgLCBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoYWRvcHRQdHIo
bmV3IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIodGhpcykpKQorICAgICwgbV93b3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2Nsb3NpbmcoZmFsc2UpCiAgICAgLCBtX2V2ZW50
UXVldWUoKnRoaXMpCkBAIC0xOTIsMTMgKzE5Miw2IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6
OmNsZWFyVGltZW91dChpbnQgdGltZW91dElkKQogICAgIERPTVRpbWVyOjpyZW1vdmVCeUlkKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGltZW91dElkKTsKIH0KIAotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbGVhckluc3BlY3RvcigpCi17Ci0gICAg
bV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNsZWFyKCk7Ci19Ci0jZW5kaWYKLQogaW50IFdv
cmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbChQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4g
YWN0aW9uLCBpbnQgdGltZW91dCkKIHsKICAgICByZXR1cm4gRE9NVGltZXI6Omluc3RhbGwoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBhY3Rpb24sIHRpbWVvdXQsIGZhbHNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA1OTQxN2I2OWZhODBkNTE3
YjEwYjNjZTgyZDk4ZTVhNzg2MDI4ZjIxLi4wODE0YjZkMTc2ODFlY2I3MWI2ZWEwNDdhNjA5ZDRi
OTc3YTQ2ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CkBAIC03Myw5ICs3Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQogICAg
ICAgICB2b2lkIGNsZWFyU2NyaXB0KCkgeyBtX3NjcmlwdC5jbGVhcigpOyB9Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICAgICAgdm9pZCBjbGVhckluc3BlY3RvcigpOwotI2VuZGlmCiAKICAg
ICAgICAgV29ya2VyVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZDsgfQog
CkBAIC0xMDYsNyArMTAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICAgICAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciogd29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fd29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5nZXQoKTsgfQorICAgICAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiB3b3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4gKm1fd29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjsg
fQogI2VuZGlmCiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtp
bmcuIFNlZSBKU1dvcmtlckdsb2JhbFNjb3BlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90Vmlz
aXRvciYpIGluCiAgICAgICAgIC8vIEpTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwLgpAQCAt
MTY4LDcgKzE2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV29ya2VyVGhyZWFk
KiBtX3RocmVhZDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIE93blB0cjxXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyPiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CisgICAg
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiBtX3dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2Nsb3Npbmc7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
aW5kZXggMDE5NmYwMmZjOWRmNDgwNDRmYzU0OTQ2N2I0YTkyYTA5MWMxYmI4ZS4uZDUwNGFkMjVl
NjZlZjQxYmYyY2E5OTJhZjI2ODk0YzdlZWFkNjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWRJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kgogc3RhdGljIHZvaWQgY29ubmVjdFRvV29ya2VyR2xvYmFsU2Nv
cGVJbnNwZWN0b3JUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGJvb2wpCiB7
CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKLSAgICBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KGNvbnRl
eHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCgpOworICAg
IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPndvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsKIH0KICNlbmRpZgogCkBAIC00MjgsNyAr
NDI4LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y29ubmVjdFRvSW5zcGVjdG9yKFdv
cmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWMKIHN0YXRpYyB2b2lkIGRpc2Nvbm5lY3RG
cm9tV29ya2VyR2xvYmFsU2NvcGVJbnNwZWN0b3JUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGJvb2wpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Y29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICBzdGF0aWNfY2FzdDxXb3JrZXJH
bG9iYWxTY29wZSo+KGNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nv
bm5lY3RGcm9udGVuZCgpOworICAgIHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4oY29u
dGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoKTsK
IH0KICNlbmRpZgogCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKQogc3RhdGljIHZvaWQgZGlzcGF0Y2hPbkluc3Bl
Y3RvckJhY2tlbmRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihj
b250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgIHN0YXRpY19jYXN0PFdvcmtlckds
b2JhbFNjb3BlKj4oY29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworICAgIHN0YXRpY19jYXN0PFdvcmtlckds
b2JhbFNjb3BlKj4oY29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDgwNGJlMTVmNGY4MTQ3ZTNlYmEyYTYwMDM2
OTNkNjVmN2E4MDg4YWIuLmQ2NjI4MGUzYzYyNjNhM2EwOTVkMGQ5YWNhNjIxMGY1YTEyNDI3ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTIxNiw5ICsyMTYs
NiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICBXb3JrZXJHbG9i
YWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZSo+KGNvbnRleHQpOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIHdvcmtlckdsb2Jh
bFNjb3BlLT5jbGVhckluc3BlY3RvcigpOwotI2VuZGlmCiAgICAgICAgIC8vIEl0J3Mgbm90IHNh
ZmUgdG8gY2FsbCBjbGVhclNjcmlwdCB1bnRpbCBhbGwgdGhlIGNsZWFudXAgdGFza3MgcG9zdGVk
IGJ5IGZ1bmN0aW9ucyBpbml0aWF0ZWQgYnkgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2sg
aGF2ZSBjb21wbGV0ZWQuCiAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5jbGVhclNjcmlwdCgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDFhN2E3OWNlY2Q1NWE0ODhi
YWYzOTdhOWQwOTVlNjUxNDE1YjcwYTQuLjljNTZmODdhZjNkZjc5NGUyNmU4ZjA2MmVjMDgwMGU4
MDQ1OGE4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtNDY2LDggKzQ2Niw3IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBEUlRf
U1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIGlmIChwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQsIHNjcmlwdCk7CisgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElk
LCBzY3JpcHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7CiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcAppbmRleCBlYWViOTlmNzhlNDZjMjliNjBkMzM1
ZDcwN2Y4ZmQ1MGNiMDMzNWUzLi4zNzdmMTNmYzcwNTQ5OGEzZDAxYjM2NGRiZTQ3YjRhMWUyNDg2
MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5jcHAKQEAgLTk5LDExICs5OSwxMSBAQCBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIEluc3BlY3RvckNsaWVudEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3Bl
Y3RvckNvbgogICAgIFN0cmluZyBpbnNwZWN0b3JVcmkgPSBpbnNwZWN0b3JGaWxlc1BhdGgoKSAr
ICIvTWFpbi5odG1sIjsKICAgICBld2tfdmlld191cmlfc2V0KG1faW5zcGVjdG9yVmlldywgaW5z
cGVjdG9yVXJpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50RWZsPiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbChtX2luc3BlY3RlZFZpZXcsIG1faW5zcGVjdG9yVmlldywgdGhpcykpOworICAg
IGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50RWZsPihtX2luc3BlY3RlZFZpZXcsIG1faW5zcGVjdG9yVmlldywgdGhpcyk7CiAgICAg
bV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwogCiAgICAgSW5zcGVjdG9y
Q29udHJvbGxlciogY29udHJvbGxlciA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKG1faW5zcGVjdG9y
VmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBjb250cm9sbGVyLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudC5yZWxlYXNlKCkpOworICAgIGNvbnRyb2xs
ZXItPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6bW92ZShmcm9udGVuZENsaWVudCkp
OwogICAgIAogICAgIHJldHVybiB0aGlzOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIFN0cmluZyBJ
bnNwZWN0b3JDbGllbnRFZmw6Omluc3BlY3RvckZpbGVzUGF0aCgpCiB9CiAKIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50RWZsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbChFdmFzX09iamVjdCog
aW5zcGVjdGVkVmlldywgRXZhc19PYmplY3QqIGluc3BlY3RvclZpZXcsIEluc3BlY3RvckNsaWVu
dEVmbCogaW5zcGVjdG9yQ2xpZW50KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bChFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0ZWRWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLCBFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0b3JWaWV3KSwgYWRvcHRQdHIobmV3IElu
c3BlY3RvckZyb250ZW5kU2V0dGluZ3NFZmwoKSkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsKCZFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0ZWRWaWV3KS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLCBFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0b3JWaWV3KSwgYWRvcHRQ
dHIobmV3IEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NFZmwoKSkpCiAgICAgLCBtX2luc3BlY3Rl
ZFZpZXcoaW5zcGVjdGVkVmlldykKICAgICAsIG1faW5zcGVjdG9yVmlldyhpbnNwZWN0b3JWaWV3
KQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50KQpAQCAtMjEzLDcgKzIx
Myw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6OnNldFRvb2xiYXJIZWlnaHQo
dW5zaWduZWQpCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpkZXN0cm95SW5zcGVj
dG9yV2luZG93KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikKIHsKICAgICBpZiAobm90
aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikKLSAgICAgICAgRVdLUHJpdmF0ZTo6Y29yZVBhZ2UobV9p
bnNwZWN0ZWRWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQo
KTsKKyAgICAgICAgRVdLUHJpdmF0ZTo6Y29yZVBhZ2UobV9pbnNwZWN0ZWRWaWV3KS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCgpOwogCiAgICAgaWYgKG1faW5zcGVj
dG9yQ2xpZW50KQogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5kUGFn
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggNDA0NzRmYmM0OWQ5N2M3Y2Vl
YzI0N2JlMzQ1ZDA4YjgxNGUwZmI3MS4uODM5NjEwZDgyYjQ5NTQ5MGYwNTk0Y2EyYWZiOTc5YTY4
YjE0NTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC00NjYyLDcgKzQ2NjIs
NyBAQCB2b2lkIGV3a192aWV3X2luc3BlY3Rvcl9zaG93KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKIAotICAg
IHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIHByaXYtPnBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShld2tWaWV3KTsKICNlbmRpZgpAQCAtNDY3NCw3ICs0Njc0LDcgQEAgdm9pZCBld2tfdmlld19p
bnNwZWN0b3JfY2xvc2UoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwogCi0gICAgcHJpdi0+cGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOworICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5jbG9zZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuY3BwCmluZGV4IDQ5Y2E4NGRmZDRhMmJiOGJlOGE2M2UyZDAzMTZhODNjZDg3MmNkMmUu
LjA0NDMxMzViYTk4NDMwZjJhNGM4OTZkOGFmNTI4ZTgyZDA5MzE1MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAt
NTY3LDcgKzU2Nyw3IEBAIHN0YXRpYyB2b2lkIHBhaW50V2ViVmlldyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlZ2lvbiYgZGlyCiAKICAgICBnYy5zYXZlKCk7
CiAgICAgZ2MuY2xpcChkaXJ0eVJlZ2lvbi5ib3VuZHMoKSk7Ci0gICAgZnJhbWUtPnBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kcmF3SGlnaGxpZ2h0KGdjKTsKKyAgICBmcmFtZS0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZHJhd0hpZ2hsaWdodChnYyk7CiAgICAgZ2MucmVz
dG9yZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCAzOGM5YjAzMzk0MGU3MzRjYmJlMGJmYzc5
MTQ2Mzc0YWY5MDI2ZDBiLi5jZGFkOGY3MDUxN2I3Y2MyNjA4NDc3MTJhY2Q4YjBjYjcxMmEzNDVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEd0ay5jcHAKQEAgLTEwOSw5ICsxMDksOSBAQCBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNv
bnRybwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGluc3BlY3RvcldlYlZpZXcpKTsK
IAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShpbnNwZWN0b3JXZWJWaWV3KTsKLSAgICBPd25Q
dHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGZyb250ZW5kQ2xpZW50ID0gYWRvcHRQdHIobmV3
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1faW5zcGVjdGVkV2ViVmlldywgaW5zcGVjdG9yV2Vi
Vmlldywgd2ViSW5zcGVjdG9yLCBtX2Zyb250ZW5kUGFnZSwgdGhpcykpOworICAgIGF1dG8gZnJv
bnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50Piht
X2luc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RvcldlYlZpZXcsIHdlYkluc3BlY3RvciwgbV9mcm9u
dGVuZFBhZ2UsIHRoaXMpOwogICAgIG1fZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5n
ZXQoKTsKLSAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudC5yZWxlYXNlKCkpOworICAgIG1fZnJv
bnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQoc3RkOjptb3ZlKGZyb250ZW5kQ2xpZW50KSk7CiAKICAgICAvLyBUaGUgaW5zcGVjdG9yIG11
c3QgYmUgaW4gaXQncyBvd24gUGFnZUdyb3VwIHRvIGF2b2lkIGRlYWRsb2NrIHdoaWxlIGRlYnVn
Z2luZy4KICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0R3JvdXBOYW1lKCIiKTsKQEAgLTE1Niw3ICsx
NTYsNyBAQCBib29sIEluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIH0KIAogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KFdlYktpdFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYktpdFdl
YlZpZXcqIGluc3BlY3RvcldlYlZpZXcsIFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9y
LCBQYWdlKiBpbnNwZWN0b3JQYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkK
LSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoY29yZShpbnNwZWN0ZWRXZWJWaWV3
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdlLCBhZG9wdFB0cihuZXcgSW5z
cGVjdG9yRnJvbnRlbmRTZXR0aW5nc0d0aygpKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwoJmNvcmUoaW5zcGVjdGVkV2ViVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwg
aW5zcGVjdG9yUGFnZSwgYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NHdGso
KSkpCiAgICAgLCBtX2luc3BlY3RvcldlYlZpZXcoaW5zcGVjdG9yV2ViVmlldykKICAgICAsIG1f
aW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0ZWRXZWJWaWV3KQogICAgICwgbV93ZWJJbnNwZWN0b3Io
d2ViSW5zcGVjdG9yKQpAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JXaW5kb3coYm9vbCBub3RpZnlJbnNwZWN0b3JDb250cm9s
CiAgICAgfQogCiAgICAgaWYgKG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIpCi0gICAgICAgIGNv
cmUobV9pbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0
RnJvbnRlbmQoKTsKKyAgICAgICAgY29yZShtX2luc3BlY3RlZFdlYlZpZXcpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKCk7CiAKICAgICBpZiAobV9pbnNwZWN0b3JD
bGllbnQpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5yZWxlYXNlRnJvbnRlbmRQYWdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCmlu
ZGV4IDhhMDQ0NDY4YzA0OGEwOGNjNzBmN2NlN2IzYzE0NDVjMWFkMDhkNGMuLmU5YTA4OTE2MGU1
YzRhZmIxMTJkZGJlM2MyYzQ5NmZhNjNmNDA5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCkBAIC0zNTMsNyArMzUzLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgY28KICAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9QUk9GSUxJTkdfRU5B
QkxFRDogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICAgICBib29sIGVu
YWJsZWQgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKLSAgICAgICAgcHJpdi0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CisgICAg
ICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQo
ZW5hYmxlZCk7CiAjZWxzZQogICAgICAgICBnX21lc3NhZ2UoIlBST1BfSkFWQVNDUklQVF9QUk9G
SUxJTkdfRU5BQkxFRCBpcyBub3Qgd29yayBiZWNhdXNlIG9mIHRoZSBqYXZhc2NyaXB0IGRlYnVn
Z2VyIGlzIGRpc2FibGVkXG4iKTsKICNlbmRpZgpAQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BfaWQsIEdWCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBU
X1BST0ZJTElOR19FTkFCTEVEOgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnByb2ZpbGVyRW5hYmxlZCgpKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bih2YWx1ZSwgcHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnByb2ZpbGVyRW5hYmxl
ZCgpKTsKICNlbHNlCiAgICAgICAgIGdfbWVzc2FnZSgiUFJPUF9KQVZBU0NSSVBUX1BST0ZJTElO
R19FTkFCTEVEIGlzIG5vdCB3b3JrIGJlY2F1c2Ugb2YgdGhlIGphdmFzY3JpcHQgZGVidWdnZXIg
aXMgZGlzYWJsZWRcbiIpOwogI2VuZGlmCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCB3ZWJraXRf
d2ViX2luc3BlY3Rvcl9zaG93KFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9yKQogICAg
IGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+cGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5zaG93KCk7CisgICAgcHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnNob3coKTsKIH0KIAogLyoqCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCB3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9pbnNwZWN0X25vZGUoV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3Is
IFdlYktpdEQKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfSU5TUEVDVE9SKHdl
Ykluc3BlY3RvcikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OT0RFKG5v
ZGUpKTsKIAotICAgIHdlYkluc3BlY3Rvci0+cHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5pbnNwZWN0KGNvcmUobm9kZSkpOworICAgIHdlYkluc3BlY3Rvci0+cHJpdi0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3QoY29yZShub2RlKSk7CiB9CiAKIC8qKgpAQCAt
NTQ2LDcgKzU0Niw3IEBAIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfaW5zcGVjdF9jb29yZGlu
YXRlcyhXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvciwKICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdChkb2N1bWVudFBvaW50KTsKIAogICAgIGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpLT5s
YXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Ci0gICAgcHJpdi0+cGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5pbnNwZWN0KHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7Cisg
ICAgcHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3QocmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpKTsKIH0KIAogLyoqCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCB3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9jbG9zZShXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvcikK
ICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfSU5TUEVDVE9SKHdlYkluc3BlY3Rv
cikpOwogCiAgICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYkluc3BlY3Rv
ci0+cHJpdjsKLSAgICBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNsb3NlKCk7
CisgICAgcHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNsb3NlKCk7CiB9CiAKIHZv
aWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfZXhlY3V0ZV9zY3JpcHQoV2ViS2l0V2ViSW5zcGVjdG9y
KiB3ZWJJbnNwZWN0b3IsIGxvbmcgY2FsbElkLCBjb25zdCBnY2hhciogc2NyaXB0KQpAQCAtNTcx
LDUgKzU3MSw1IEBAIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfZXhlY3V0ZV9zY3JpcHQoV2Vi
S2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIGxvbmcKICAgICBnX3JldHVybl9pZl9mYWls
KHNjcmlwdCk7CiAKICAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViSW5z
cGVjdG9yLT5wcml2OwotICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZh
bHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQsIHNjcmlwdCk7CisgICAgcHJpdi0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElkLCBz
Y3JpcHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGExNGM4ODU0MzFlNjVmNjY2NDgyOTE5Yzk4YjFi
NmRjMmZiMTM3MWIuLjMyYTcyNzA3ZjliYTZhZTk5MWYwN2Y2ODI3YTQ2NDY5YzI3NjU3OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KQEAgLTE0NSwxMSArMTQ1LDExIEBAIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29u
CiAgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50OnRoaXNdOwog
CiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHdlYlZp
ZXddKTsKLSAgICBPd25QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IGZyb250ZW5kQ2xp
ZW50ID0gYWRvcHRQdHIobmV3IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fd2ViVmlldywg
d2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBh
Z2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSkpOworICAgIGF1dG8gZnJvbnRlbmRDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3dlYlZpZXcs
IHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQ
YWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogICAgIG1fZnJvbnRlbmRDbGllbnQgPSBm
cm9udGVuZENsaWVudC5nZXQoKTsKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+
IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFs
bG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50OmZyb250ZW5kQ2xpZW50LmdldCgpXSk7CiAgICAg
W1ttX3dlYlZpZXcgaW5zcGVjdG9yXSBzZXRGcm9udGVuZDp3ZWJJbnNwZWN0b3JGcm9udGVuZC5n
ZXQoKV07Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKKyAgICBtX2Zy
b250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KHN0ZDo6bW92ZShmcm9udGVuZENsaWVudCkpOwogICAgIHJldHVybiB0aGlzOwogfQogCkBA
IC02OTMsNyArNjkzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5k
KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKIAogICAgIGlmIChub3Rp
ZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7CiAgICAgICAgIGlmIChQYWdlKiBpbnNwZWN0ZWRQYWdl
ID0gW19pbnNwZWN0ZWRXZWJWaWV3LmdldCgpIHBhZ2VdKQotICAgICAgICAgICAgaW5zcGVjdGVk
UGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICAg
ICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJv
bnRlbmQoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJv
bGxlcj4gcHJvdGVjdChzZWxmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9XZWJJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yLm1tCmluZGV4IGUzMWJhOWM1NDY4MWRiN2M4MDA2YWMzYmJiOGQyMTU4NmZj
NjQ1YTQuLmU0ZTlhYWQ2ZWJlMGY0OWFmYTZiZDkxN2YxODYwOTg1Yjc2OWI5MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQpAQCAtNjYsNyAr
NjYsNyBAQCBOU1N0cmluZyAqV2ViSW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0Zvck5vZGUgPSBA
IldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGbwogLSAodm9pZClzaG93V2luZG93CiB7CiAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKLSAgICAgICAgcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zaG93KCk7CiB9CiAKIC0gKHZvaWQpc2hvdzooaWQpc2VuZGVyCkBAIC0xNDIsNyArMTQy
LDcgQEAgTlNTdHJpbmcgKldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlID0gQCJX
ZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm8KIC0gKEJPT0wpaXNKYXZhU2NyaXB0UHJvZmls
aW5nRW5hYmxlZAogewogICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShfd2ViVmlldykpCi0gICAg
ICAgIHJldHVybiBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnByb2ZpbGVyRW5hYmxlZCgp
OworICAgICAgICByZXR1cm4gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnByb2ZpbGVyRW5h
YmxlZCgpOwogICAgIHJldHVybiBOTzsKIH0KIApAQCAtMTUyLDcgKzE1Miw3IEBAIE5TU3RyaW5n
ICpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSA9IEAiV2ViSW5zcGVjdG9yRGlk
U3RvcFNlYXJjaGluZ0ZvCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFByb2ZpbGVyRW5hYmxlZChlbmFibGVkKTsK
KyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0UHJvZmlsZXJFbmFibGVkKGVuYWJs
ZWQpOwogfQogCiAtIChCT09MKWlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkCkBAIC0xNjksNyAr
MTY5LDcgQEAgTlNTdHJpbmcgKldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlID0g
QCJXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm8KIC0gKHZvaWQpY2xvc2U6KGlkKXNlbmRl
ciAKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpKQotICAgICAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNsb3NlKCk7CisgICAgICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogfQogCiAtICh2b2lkKWF0dGFjaDooaWQpc2VuZGVyCkBA
IC0xODUsNyArMTg1LDcgQEAgTlNTdHJpbmcgKldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdG
b3JOb2RlID0gQCJXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm8KIC0gKHZvaWQpZXZhbHVh
dGVJbkZyb250ZW5kOihpZClzZW5kZXIgY2FsbElkOihsb25nKWNhbGxJZCBzY3JpcHQ6KE5TU3Ry
aW5nICopc2NyaXB0CiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKLSAg
ICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5ldmFsdWF0ZUZvclRlc3RJbkZyb250
ZW5kKGNhbGxJZCwgc2NyaXB0KTsKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOwogfQogCiAtICh2b2lk
KXNldEZyb250ZW5kOihXZWJJbnNwZWN0b3JGcm9udGVuZCAqKWZyb250ZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodGVyLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRlci5tbQppbmRl
eCAyYmE1OWQ2M2UzMjNmOTA1NWI3M2Q2ZTI2ZGM0NjgzMWU5ZjNmNGI3Li5kMjk2Zjc4M2I4MTUw
MDkwODczZDE4ZTg2NzIyZjhjNTI0ZTJmOTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW0KQEAgLTY2LDcgKzY2LDcgQEAK
ICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIHRoZSBoaWdobGlnaHQgaWYgd2UgaGF2ZSBubyB3aW5k
b3cgKGUuZy4gaGlkZGVuIHRhYikuCiAgICAgCiAgICAgaWYgKCFfY3VycmVudEhpZ2hsaWdodCkg
ewotICAgICAgICBfY3VycmVudEhpZ2hsaWdodCA9IFtbV2ViTm9kZUhpZ2hsaWdodCBhbGxvY10g
aW5pdFdpdGhUYXJnZXRWaWV3OnZpZXcgaW5zcGVjdG9yQ29udHJvbGxlcjpbX2luc3BlY3RlZFdl
YlZpZXcgcGFnZV0tPmluc3BlY3RvckNvbnRyb2xsZXIoKV07CisgICAgICAgIF9jdXJyZW50SGln
aGxpZ2h0ID0gW1tXZWJOb2RlSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aFRhcmdldFZpZXc6dmll
dyBpbnNwZWN0b3JDb250cm9sbGVyOiZbX2luc3BlY3RlZFdlYlZpZXcgcGFnZV0tPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKV07CiAgICAgICAgIFtfY3VycmVudEhpZ2hsaWdodCBzZXREZWxlZ2F0ZTpz
ZWxmXTsKICAgICAgICAgW19jdXJyZW50SGlnaGxpZ2h0IGF0dGFjaF07CiAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCmluZGV4IGVmNTIyYTIwN2I0ZjNmNzc3MWQxZTFlYjNjYjExZTc3MmZiOTM3
ZTIuLjhiYWNhMmMxMmY2NDE0OWM0OWQzZDI4OTcyZjU1NTcyYzRiYmExYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcApAQCAtMTcwLDkgKzE3MCw5IEBAIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5n
ZXQoKSk7Ci0gICAgT3duUHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBmcm9udGVuZENs
aWVudCA9IGFkb3B0UHRyKG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2luc3BlY3Rl
ZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRX
ZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdz
KCkpKTsKKyAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZp
ZXdId25kLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHdu
ZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250ZW5kQ2xpZW50
ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVs
ZWFzZSgpKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6bW92ZShmcm9udGVuZENsaWVudCkpOwogICAgIG1f
ZnJvbnRlbmRId25kID0gZnJvbnRlbmRId25kOwogICAgIHJldHVybiB0aGlzOwogfQpAQCAtNDM4
LDcgKzQzOCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNw
ZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiAgICAgY2xvc2VXaW5kb3dXaXRo
b3V0Tm90aWZpY2F0aW9ucygpOwogCiAgICAgaWYgKG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIp
IHsKLSAgICAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgICAgIG1faW5zcGVjdGVkV2ViVmlldy0+
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT51cGRhdGVIaWdobGlnaHQoKTsKICAgICB9CiAgICAgOjpE
ZXN0cm95V2luZG93KG1fZnJvbnRlbmRId25kKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBMUkVTVUxU
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpvblNpemUoV1BBUkFNLCBMUEFSQU0pCiBMUkVT
VUxUIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpvbkNsb3NlKFdQQVJBTSwgTFBBUkFNKQog
ewogICAgIDo6U2hvd1dpbmRvdyhtX2Zyb250ZW5kSHduZCwgU1dfSElERSk7Ci0gICAgbV9pbnNw
ZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKKyAg
ICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNsb3Nl
KCk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4
IDhiZmE3ZTUzYTA0NzkwMjQ0ZWE2MjgwM2E3MjVlNDE3NDZjNTA3YjguLmZkNThmZDZhMDg0NTU3
NzAxZDAwZDY2NDczYzRiZDVhM2FlNjllNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmNw
cApAQCAtMTA5LDcgKzEwOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVj
dG9yOjpzaG93KCkKIHsKICAgICBpZiAobV93ZWJWaWV3KQogICAgICAgICBpZiAoUGFnZSogcGFn
ZSA9IG1fd2ViVmlldy0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5zaG93KCk7CisgICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
c2hvdygpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OmNsb3NlKCkKIHsKICAgICBpZiAobV93
ZWJWaWV3KQogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpKQotICAg
ICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOworICAgICAgICAg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNsb3NlKCk7CiAKICAgICByZXR1cm4gU19P
SzsKIH0KQEAgLTIxOSw3ICsyMTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYklu
c3BlY3Rvcjo6aXNKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChCT09MKiBpc1BybwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKLSAgICAqaXNQcm9maWxpbmdFbmFibGVk
ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wcm9maWxlckVuYWJsZWQoKTsKKyAgICAq
aXNQcm9maWxpbmdFbmFibGVkID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnByb2ZpbGVy
RW5hYmxlZCgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0yMzIsNyArMjMyLDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKEJPT0wgZW5hYmwKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBTX09L
OwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRQcm9maWxlckVuYWJsZWQo
ZW5hYmxlZCk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldFByb2ZpbGVyRW5h
YmxlZChlbmFibGVkKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMjQ3LDcgKzI0Nyw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgIFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVJbkZyb250
ZW5kKFVMT05HIGNhbGxJZCwgQlNUUiBiCiAgICAgICAgIHJldHVybiBTX09LOwogCiAgICAgU3Ry
aW5nIHNjcmlwdChiU2NyaXB0LCBTeXNTdHJpbmdMZW4oYlNjcmlwdCkpOwotICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQsIHNj
cmlwdCk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYk5vZGVIaWdobGlnaHQuY3BwCmluZGV4IDA1N2RlNWExNGMxYjQwMzY4N2U4ZTgx
M2M0YzQyZTcyMGQ1YmMyZDQuLjk0M2UzODc3ODVkNDgxMmM2ZTM4MDkyMzg3NjcyNzlkN2Y3YWE0
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk5vZGVIaWdobGlnaHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk5vZGVIaWdobGlnaHQuY3BwCkBAIC0xNjUsOCArMTY1
LDggQEAgdm9pZCBXZWJOb2RlSGlnaGxpZ2h0Ojp1cGRhdGUoKQogCiAgICAgR3JhcGhpY3NDb250
ZXh0IGNvbnRleHQoaGRjLmdldCgpKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIG1faW5z
cGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRyYXdIaWdobGln
aHQoY29udGV4dCk7Ci0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyAgICBtX2luc3BlY3Rl
ZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRyYXdIaWdobGlnaHQoY29u
dGV4dCk7CisjZW5kaWYKIAogICAgIEJMRU5ERlVOQ1RJT04gYmY7CiAgICAgYmYuQmxlbmRPcCA9
IEFDX1NSQ19PVkVSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDQyZmFmZTAw
ZjE4NTVhYmJhZmZhOThiMTQxMTBhMTM4NWIwNGNlYjUuLjc2ZTBiOGQ0ODUxMTk4ZGI2MjdkZWI3
OTY3ZDQ4YTE2YzE5NTMwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE0
NSw3ICsxNDUsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkTW92ZVRvV2ViUGFnZShQ
YWdlT3ZlcmxheSosIFdlYlBhZ2UqKQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIC8qZGlydHlSZWN0Ki8pCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRyYXdIaWdobGlnaHQoY29udGV4dCk7CisgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZHJhd0hpZ2hsaWdodChj
b250ZXh0KTsKIH0KIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Om1vdXNlRXZlbnQoUGFnZU92
ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2ZW50JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5jcHAKaW5kZXggZDFmNTFkZDRmNThkZTBjNWIwMWExMTdmNjU0YmM0MTdl
YWJmNzhlNC4uMDU4ZjBmZjEwYmIyZTc0ZTc4YmM0YWRhNGNiZWVkYzU4ZjViMDZjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2Uq
IHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsKHBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaW5zcGVj
dG9yUGFnZS0+Y29yZVBhZ2UoKSwgYWRvcHRQdHIobmV3IFNldHRpbmdzKCkpKQorICAgIDogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLCBpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBhZG9wdFB0cihuZXcgU2V0dGlu
Z3MoKSkpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKIH0KQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6Y2xvc2VXaW5kb3coKQogewotICAgIG1fcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRl
bmQoKTsKICAgICBtX3BhZ2UtPmluc3BlY3RvcigpLT5kaWRDbG9zZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4
IDljOWVjYjViNmZiYWM1NmY5MmE4ZDg4OTQxYWNkOGQ1ZDVhZjY5YjYuLjQzMDUyMmJiZGE5ZTM5
ODFmNGNkNTMwYTc0MWVlNWViYjkxZTMwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC04OSw5ICs4OSw5IEBAIFdlYlBh
Z2UqIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgbV9pbnNwZWN0b3JQ
YWdlID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShpbnNwZWN0b3JQYWdlSUQpOwogICAg
IEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOwogCi0gICAgT3duUHRyPFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50PiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChtX3BhZ2UsIG1faW5zcGVjdG9yUGFnZSkpOworICAgIGF1dG8gZnJvbnRlbmRD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX3Bh
Z2UsIG1faW5zcGVjdG9yUGFnZSk7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xp
ZW50LmdldCgpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudC5yZWxl
YXNlKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6bW92ZShmcm9udGVuZENsaWVu
dCkpOwogICAgIHJldHVybiBtX2luc3BlY3RvclBhZ2U7CiB9CiAKQEAgLTE2MiwxMiArMTYyLDEy
IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkK
IC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3IgbWVzc2FnZXMKIHZvaWQgV2ViSW5zcGVjdG9yOjpz
aG93KCkKIHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c2hvdygpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNo
b3coKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlKCkKIHsKLSAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y2xvc2UoKTsKKyAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogfQogCiB2b2lkIFdlYklu
c3BlY3Rvcjo6ZGlkU2F2ZShjb25zdCBTdHJpbmcmIHVybCkKQEAgLTIwMiwxOSArMjAyLDE5IEBA
IHZvaWQgV2ViSW5zcGVjdG9yOjpkZXRhY2hlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpldmFs
dWF0ZVNjcmlwdEZvclRlc3QobG9uZyBjYWxsSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewot
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5ldmFsdWF0ZUZv
clRlc3RJbkZyb250ZW5kKGNhbGxJRCwgc2NyaXB0KTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJRCwg
c2NyaXB0KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dDb25zb2xlKCkKIHsKLSAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKICAgICBpZiAo
bV9mcm9udGVuZENsaWVudCkKICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd0NvbnNvbGUo
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dSZXNvdXJjZXMoKQogewotICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgbV9wYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogICAgIGlmIChtX2Zy
b250ZW5kQ2xpZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zaG93UmVzb3VyY2VzKCk7
CiB9CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnNob3dNYWluUmVzb3Vy
Y2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
aG93KCk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hv
dygpOwogICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50
LT5zaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKTsKIH0KQEAgLTIz
Myw3ICsyMzMsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQpCiB2b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0RGVi
dWdnaW5nKCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIG1fcGFnZS0+
Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKICAgICBpZiAobV9mcm9u
dGVuZENsaWVudCkKICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5nRW5hYmxl
ZCh0cnVlKTsKICNlbmRpZgpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpz
dGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKQogdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BKYXZhU2Ny
aXB0RGVidWdnaW5nKCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKICAgICBpZiAo
bV9mcm9udGVuZENsaWVudCkKICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0RGVidWdnaW5n
RW5hYmxlZChmYWxzZSk7CiAjZW5kaWYKQEAgLTI1MSwxOCArMjUxLDE4IEBAIHZvaWQgV2ViSW5z
cGVjdG9yOjpzdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCiB2b2lkIFdlYkluc3BlY3Rvcjo6c2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5zaG93KCk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkuc2hvdygpOwogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNl
dFByb2ZpbGVyRW5hYmxlZChlbmFibGVkKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlwdFByb2ZpbGluZygpCiB7CiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpOwogI2VuZGlm
CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlwdFBy
b2ZpbGluZygpCiB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKQog
ewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50
KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zdG9wUHJvZmlsaW5nSmF2YVNjcmlwdCgpOwog
I2VuZGlmCkBAIC0yNzksMTQgKzI3OSwxNCBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFT
Y3JpcHRQcm9maWxpbmcoKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRQYWdlUHJvZmlsaW5n
KCkKIHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hv
dygpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3co
KTsKICAgICBpZiAobV9mcm9udGVuZENsaWVudCkKICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+
c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKHRydWUpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rv
cjo6c3RvcFBhZ2VQcm9maWxpbmcoKQogewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuc2hvdygpOwogICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KQogICAgICAg
ICBtX2Zyb250ZW5kQ2xpZW50LT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpOwog
fQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVt
b3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6
ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdl
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKQEAg
LTMxOSwxNCArMzE5LDE0IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5l
Y3RlZCgpCiAgICAgLy8gU3dpdGNoaW5nIGJldHdlZW4gaW4tcHJvY2VzcyBhbmQgcmVtb3RlIGlu
c3BlY3RvcnMgaXNuJ3Qgc3VwcG9ydGVkIHlldC4KICAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFn
ZSk7CiAgICAgCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmNvbm5lY3RGcm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9wYWdlLT5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmRDaGFu
bmVsKTsKICAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKIHsKICAgICBBU1NFUlQo
bV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgIG1fcGFnZS0+Y29y
ZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZCgpOwogICAg
IG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSBmYWxzZTsKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221420</attachid>
            <date>2014-01-16 15:26:04 -0800</date>
            <delta_ts>2014-01-17 17:15:48 -0800</delta_ts>
            <desc>v3</desc>
            <filename>bug-127068-20140116152603.patch</filename>
            <type>text/plain</type>
            <size>86481</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q2NGQ5ZjdhOTEwYjdi
YmNlY2MxNDZjMzg1MTA0YjI4OTNmOWFiOS4uODMyOTJjZDYxZWJiZjI0OTI3OWEwYzBjYTIzYmMx
N2YyNDRjM2EwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxNC0wMS0xNiAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdl
IHNob3VsZCB1c2Ugc3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFBhZ2UgYW5k
IFdvcmtlckdsb2JhbFNjb3BlIGtlZXAgYSBzdGQ6OnVuaXF1ZV9wdHIgdG8gSW5zcGVjdG9yQ29u
dHJvbGxlcgorICAgICAgICBhbmQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci4gU3RvcmUgcGFn
ZSByZWZlcmVuY2VzIGFuZCByZXR1cm4gY29udHJvbGxlcgorICAgICAgICByZWZlcmVuY2VzIHdo
ZXJlIHBvc3NpYmxlLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBzaXRlcyB0byB1c2UgYW4gSW5z
cGVjdG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisgICAgICAgIENvbnZlcnQgaW5zdGFudGlhdGlv
bnMgb2YgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgdG8gdXNlIHN0ZDo6dW5pcXVlX3B0ci4KKyAg
ICAgICAgQ29udmVydCBJbnNwZWN0b3JPdmVybGF5IHRvIGtlZXAgUGFnZSByZWZlcmVuY2VzLgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6c3VwcG9y
dHNQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpzdXBwb3J0
c1JpY2hTb3VyY2VJbmZvKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjppbnNwZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRldmVsb3BlckV4dHJhc0VuYWJsZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2FuQXR0YWNoV2luZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNoYW5nZUF0dGFj
aGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmNoYW5nZUF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3VGFiKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRv
d0hlaWdodCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yT3ZlcmxheTo6YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1F1YWRIaWdobGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6cmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aW5zdHJ1bWVudGF0aW9uRm9yUGFnZSk6IHJlbW92ZSBudWxsIGNo
ZWNrcy4KKyAgICAgICAgKFdlYkNvcmU6Omluc3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2JhbFNj
b3BlKTogcmVtb3ZlIG51bGwgY2hlY2tzLgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmFkZEluc3BlY3RFbGVtZW50SXRlbSk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6aW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6
aGFzTG9jYWxEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6cGFy
ZW50UHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6
OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc3BhdGNoTWVzc2FnZUZyb21S
ZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6c2V0SW5k
aWNhdGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRp
bmdDb29yZGluYXRvcjo6c3luY0Rpc3BsYXlTdGF0ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVn
aW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRD
YW5jZWxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3Bl
Y3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xvc2VEdW1teUlu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0SW5zcGVj
dG9yUmVzb3VyY2VzRGF0YVNpemVMaW1pdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6
V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aDogcmVtb3ZlIGNsZWFySW5zcGVjdG9yKCkuIAorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6Ondvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdFRvV29y
a2VyR2xvYmFsU2NvcGVJbnNwZWN0b3JUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc2Nvbm5l
Y3RGcm9tV29ya2VyR2xvYmFsU2NvcGVJbnNwZWN0b3JUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OmRpc3BhdGNoT25JbnNwZWN0b3JCYWNrZW5kVGFzayk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkU2h1dGRvd25GaW5p
c2hUYXNrOjpwZXJmb3JtVGFzayk6CisKIDIwMTQtMDEtMTUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY2FwdHVyZSBwcm9iZSBzYW1wbGVz
IG9uIHRoZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYjE4ZTUxNGIzZjg2NWFlOThhYjAy
YzBkOGJlNzY5Yjg1MzI3YmUyMS4uYjU3MmJhN2YwOTM4YzJkM2M2NzYzM2FlN2NjMDBjNTQwZmEz
NTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE0LTAxLTE1ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2Ug
c2hvdWxkIHVzZSBzdGQ6OnVuaXF1ZV9wdHIgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzA2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBz
aXRlcyB0byB1c2UgYSBJbnNwZWN0b3JDb250cm9sbGVyIHJlZmVyZW5jZS4KKyAgICAgICAgQ29u
dmVydCBpbnN0YW50aWF0aW9ucyBvZiBJbnNwZWN0b3JGcm9udGVuZENsaWVudCB0byB1c2Ugc3Rk
Ojp1bmlxdWVfcHRyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVh
dGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6b3Blbklu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
ZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfaW5zcGVjdG9yX2Ns
b3NlKToKKwogMjAxNC0wMS0xNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF1bV0sxXSBJbXBsZW1lbnQgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50RWZs
IHRvIGZpeCB0aGUgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0YTMzZWY0NDY5OGMyZGIwNmE3
MjVmYmU3MTU4OTYwNjY4Yzg3MmU0Li5jOTE5YTI0NmFhNDYwNTcwMTBmYmVmNGZjMmVhM2ExNzY3
OTdhNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMDEtMTUgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUGFn
ZSBzaG91bGQgdXNlIHN0ZDo6dW5pcXVlX3B0ciBmb3IgSW5zcGVjdG9yQ29udHJvbGxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MDY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBjYWxs
IHNpdGVzIHRvIHVzZSBhIEluc3BlY3RvckNvbnRyb2xsZXIgcmVmZXJlbmNlLgorICAgICAgICBD
b252ZXJ0IGluc3RhbnRpYXRpb25zIG9mIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHRvIHVzZSBz
dGQ6OnVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpwYWludFdlYlZpZXcpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0d2ViaW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9w
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkpOgor
ICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jfc2hvdyk6CisgICAgICAgICh3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9pbnNwZWN0X25vZGUpOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3Jf
aW5zcGVjdF9jb29yZGluYXRlcyk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9jbG9z
ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9leGVjdXRlX3NjcmlwdCk6CisKIDIw
MTQtMDEtMTUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dLMV0gQWRkIFByb2dyZXNzVHJhY2tlckNsaWVudCBpbXBsZW1lbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGY4Yjk2MDI0OWMzMjc4YWQ2ODdiOWY2NTQ1OTU1OTk3ZWViZTM2ZWUu
LjkyMmE0MjA1MjVlNmY2NmEzODY0NmEyM2QzMjAzNTA1NzYwODAxZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNC0wMS0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdlIHNob3VsZCB1c2Ugc3RkOjp1bmlx
dWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGNhbGwgc2l0ZXMgdG8gdXNlIGEgSW5zcGVj
dG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisgICAgICAgIENvbnZlcnQgaW5zdGFudGlhdGlvbnMg
b2YgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgdG8gdXNlIHN0ZDo6dW5pcXVlX3B0ci4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKC1bV2Vi
SW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBkZXN0cm95SW5zcGVjdG9yVmlldzpdKToKKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0
b3Igc2hvd1dpbmRvd10pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgaXNKYXZhU2NyaXB0UHJv
ZmlsaW5nRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3Igc2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvciBjbG9zZTpdKToKKyAg
ICAgICAgKC1bV2ViSW5zcGVjdG9yIGV2YWx1YXRlSW5Gcm9udGVuZDpjYWxsSWQ6c2NyaXB0Ol0p
OgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW06CisgICAgICAg
ICgtW1dlYk5vZGVIaWdobGlnaHRlciBoaWdobGlnaHRdKToKKwogMjAxNC0wMS0xNSAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1pc3NpbmcgUmVu
ZGVyT2JqZWN0OjpzdHlsZSgpIHN5bWJvbCBpbiBXZWJET01PcGVyYXRpb25zLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggMWI5Yjc0NmUyOTE3YTY5NzBmYTk0ZmJhZDQ3MGE3NTk2NzE1MzIwMi4uMGQw
MDJhYWE1ZmM3ZTM2NjBhMjYxZjRlMTM3YmU0ZDQ5MjFhNGVjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI1IEBACisyMDE0LTAxLTE1ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2Ugc2hvdWxkIHVzZSBzdGQ6OnVuaXF1ZV9w
dHIgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgY2FsbCBzaXRlcyB0byB1c2UgYSBJbnNwZWN0b3JD
b250cm9sbGVyIHJlZmVyZW5jZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJv
eUluc3BlY3RvclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Om9u
Q2xvc2UpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0
b3I6OnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpjbG9zZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3I6OmlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZCk6CisgICAgICAgICogV2ViTm9kZUhpZ2hsaWdodC5j
cHA6CisgICAgICAgIChXZWJOb2RlSGlnaGxpZ2h0Ojp1cGRhdGUpOgorCiAyMDE0LTAxLTEwICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVHdlYWsgUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYxZjRiZjJmZmE3YmY3
YmM5YTU1ZGMxNWRkZmQxY2I3NDg1ZGFkOGIuLjc3NTQwNjIyZjJjYzNmNDAzMDE2M2I5OGY2MGM5
YzRlN2I4MmI4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0wMS0xNSAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdl
IHNob3VsZCB1c2Ugc3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGNhbGwg
c2l0ZXMgdG8gdXNlIGEgSW5zcGVjdG9yQ29udHJvbGxlciByZWZlcmVuY2UuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3Rv
clBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNob3cpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yOjpldmFsdWF0ZVNjcmlwdEZvclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3I6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzaG93UmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0YXJ0SmF2YVNjcmlw
dERlYnVnZ2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3Jp
cHREZWJ1Z2dpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNldEphdmFTY3Jp
cHRQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpzdGFy
dEphdmFTY3JpcHRQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0
b3BKYXZhU2NyaXB0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpz
dGFydFBhZ2VQcm9maWxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnN0b3BQ
YWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6
OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCk6CisKIDIwMTQtMDEtMTUgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYiBwcm9j
ZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHdoZW4gcHJpbnRpbmcgaW4gc3luY2hyb25vdXMgbW9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmNzdjMzFiNzRhNzVhNDI3ZTZjYWIzZjgwMmI5ZDAxM2I2
ZWFhMzY0Li4xN2RlNWM2N2RiZGEwMTNjMTE2NTYzNWYyZGEwZmFjYjczNzUwYmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtMjc2MCw3ICsyNzYwLDcgQEAgX19aTjdXZWJDb3JlMTlJbnNwZWN0
b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9u
dGUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5k
RXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0UHJvZmlsZXJFbmFibGVk
RWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZEVsUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RU4zV1RGMTBQYXNzT3duUHRySU5TXzIzSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRFRUUKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxl
cjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFTlN0M19fMTEwdW5pcXVlX3B0cklOU18yM0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50RU5TMV8xNGRlZmF1bHRfZGVsZXRlSVMzX0VFRUUKIF9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNG
cm9tSW50ZXJuYWxzRWlpCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI0c2hvd0V2
CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI1Y2xvc2VFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggMmI4ZGQ0M2NmNTFh
ZmZlZmQzNGNhMDFkZGI1MmIxMWU0MWYzNTUwYi4uNzVhMWY3M2ZhZWJhMTc2OWFkNzU2YmY5NzA3
MDMyNTE0ZmZiOTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1
cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgcmV0dXJuIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCk7CisgICAgcmV0dXJuIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5wcm9maWxlckVuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0xMzksNyArMTM5LDcg
QEAgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNH
bG9iYWxPYmplY3QqIG9iamVjdCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGJvb2wgZW5hYmxlZCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZW5h
YmxlZCgpOworICAgIGJvb2wgZW5hYmxlZCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5l
bmFibGVkKCk7CiAgICAgQVNTRVJUKGVuYWJsZWQgfHwgIXRoaXNPYmplY3QtPmRlYnVnZ2VyKCkp
OwogICAgIEFTU0VSVChlbmFibGVkIHx8ICFzdXBwb3J0c1Byb2ZpbGluZyh0aGlzT2JqZWN0KSk7
CiAgICAgcmV0dXJuIGVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZGU3ODc1MTgzNTYyMWNm
NWQ2ZTE3MmMxYWJhNjM3NGIwZGM2YzZkYS4uMDc2MzFjZjg0N2JiNDBmOGRkNjM1NTZkMzBjYjA3
ZDcwMmUyZWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgTm9k
ZTo6aW5zcGVjdCgpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoZG9jdW1lbnQo
KS5wYWdlKCkpCi0gICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmluc3BlY3QodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuaW5zcGVjdCh0aGlzKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggOWE0ZjExYTZkYjE5
Mzc4OGFmN2Q0NjkzNDUwMzQxMDRlYzNjNDQzZS4uODQ0MzAyYjQ0MDkzN2NiNjZjNDA4YzYzNzQy
ZGRmMTNkNGI4NWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtODIsMTAgKzgyLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCkKK0luc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiAgICAgOiBtX2luc3RydW1lbnRp
bmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUluamVjdGVkU2NyaXB0TWFu
YWdlcj4oKnRoaXMsIFBhZ2VJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKLSAgICAsIG1f
b3ZlcmxheShJbnNwZWN0b3JPdmVybGF5OjpjcmVhdGUocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkK
KyAgICAsIG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2Us
IGluc3BlY3RvckNsaWVudCkpCiAgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxs
cHRyKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0
b3JDbGllbnQpCkBAIC0xMDEsNyArMTAxLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdl
bnQpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUoaW5zcGVjdG9yQWdlbnRQdHIpKTsK
IAotICAgIGF1dG8gcGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdl
QWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgaW5zcGVjdG9yQ2xpZW50
LCBtX292ZXJsYXkuZ2V0KCkpOworICAgIGF1dG8gcGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgJnBh
Z2UsIGluc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCA9IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX3BhZ2VBZ2VudCA9
IHBhZ2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptb3ZlKHBhZ2VB
Z2VudFB0cikpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3Bl
Y3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAg
ICAgbV9yZXNvdXJjZUFnZW50ID0gcmVzb3VyY2VBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptb3ZlKHJlc291cmNlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gcnVudGlt
ZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PihtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBwYWdlLCBw
YWdlQWdlbnQpOworICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlUnVudGltZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmdldCgpLCAmcGFnZSwgcGFnZUFnZW50KTsKICAgICBJbnNwZWN0b3JSdW50
aW1lQWdlbnQqIHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5nZXQoKTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptb3ZlKHJ1bnRpbWVBZ2VudFB0cikpOwogCkBAIC0xNTQsNyArMTU0
LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdl
LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBtX2RvbURlYnVnZ2VyQWdlbnQgPSBk
b21EZWJ1Z2dlckFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUo
ZG9tRGVidWdnZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBwcm9maWxlckFnZW50UHRyID0gSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwg
Y29uc29sZUFnZW50LCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSk7CisgICAg
YXV0byBwcm9maWxlckFnZW50UHRyID0gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgY29uc29sZUFnZW50LCAmcGFnZSwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwogICAgIG1fcHJvZmlsZXJBZ2VudCA9IHByb2ZpbGVyQWdl
bnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShwcm9maWxlckFnZW50
UHRyKSk7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAg
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlci5nZXQoKSkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9ySW5wdXRBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlKSk7
CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5wdXRBZ2Vu
dD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmcGFnZSkpOwogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckxheWVyVHJlZUFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpKTsK
QEAgLTE5NSwyMyArMTk1LDE3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250
cm9sbGVyKCkKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yQ2xpZW50KTsKIH0KIAotUGFzc093blB0
cjxJbnNwZWN0b3JDb250cm9sbGVyPiBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGUoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JDb250cm9sbGVyKHBhZ2UsIGNsaWVudCkpOwotfQotCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewogICAgIGRpc2Nvbm5lY3RG
cm9udGVuZCgpOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7CiAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwogICAgIG1faW5zcGVj
dG9yQ2xpZW50ID0gMDsKLSAgICBtX3BhZ2UgPSAwOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQordm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ+IGluc3BlY3RvckZyb250ZW5kQ2xpZW50KQogewotICAgIG1faW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQgPSBpbnNwZWN0b3JGcm9udGVuZENsaWVudDsKKyAgICBtX2lu
c3BlY3RvckZyb250ZW5kQ2xpZW50ID0gc3RkOjptb3ZlKGluc3BlY3RvckZyb250ZW5kQ2xpZW50
KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNMb2NhbEZyb250ZW5kKCkgY29u
c3QKQEAgLTIzNCw3ICsyMjgsNyBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1JlbW90
ZUZyb250ZW5kKCkgY29uc3QKIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0
b3JGcm9udGVuZENsaWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuZ2V0KCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAgLTI2OCw3ICsyNjIsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CiAgICAgaWYgKCFtX2hhc1JlbW90ZUZyb250ZW5kKQotICAgICAgICBtX3BhZ2UtPnJlbW90ZUlu
c3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CisgICAgICAgIG1fcGFnZS5yZW1vdGVJbnNw
ZWN0b3JJbmZvcm1hdGlvbkRpZENoYW5nZSgpOwogI2VuZGlmCiB9CiAKQEAgLTI5MCw3ICsyODQs
NyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoIW1faGFzUmVtb3RlRnJvbnRlbmQp
Ci0gICAgICAgIG1fcGFnZS0+cmVtb3RlSW5zcGVjdG9ySW5mb3JtYXRpb25EaWRDaGFuZ2UoKTsK
KyAgICAgICAgbV9wYWdlLnJlbW90ZUluc3BlY3RvckluZm9ybWF0aW9uRGlkQ2hhbmdlKCk7CiAj
ZW5kaWYKIH0KIApAQCAtMzY1LDcgKzM1OSw3IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKTsKIH0K
IAotUGFnZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CitQYWdl
JiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYWdlOwogfQpAQCAtNDUzLDEwICs0NDcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZENvbXBvc2l0ZSgpCiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCkuZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCgpOworICAgIHJldHVybiBtX3BhZ2Uuc2V0dGluZ3MoKS5kZXZlbG9wZXJFeHRyYXNF
bmFibGVkKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2FuQWNjZXNzSW5zcGVj
dGVkU2NyaXB0U3RhdGUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZDZhNzBj
NTNlM2FiOGQ5NmY2MGY2ZmU5NTA1YTUyM2ZlYTY0Y2I1Ny4uMmJhZTM0YzE2MTM4M2Y5ODI4MTRl
ZWYyN2MxMzkxNjFjNDk2OWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC03NywxOCArNzcsMTggQEAgY2xhc3MgSW5zcGVjdG9yQ29u
dHJvbGxlciBGSU5BTCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBh
Z2UmLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDb250cm9sbGVy
KCk7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JDb250cm9sbGVyPiBjcmVhdGUo
UGFnZSosIEluc3BlY3RvckNsaWVudCopOwogICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3ll
ZCgpOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7Ci0gICAgUGFnZSogaW5zcGVjdGVkUGFn
ZSgpIGNvbnN0OworICAgIFBhZ2UmIGluc3BlY3RlZFBhZ2UoKSBjb25zdDsKIAogICAgIHZvaWQg
c2hvdygpOwogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4pOworICAgIHZvaWQg
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250
ZW5kQ2xpZW50Pik7CiAgICAgYm9vbCBoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0
OwogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBl
cldvcmxkJik7CiAKQEAgLTE0NCwxMyArMTQ0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rpb24oKSBPVkVSUklERTsKIAogcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQqKTsKLQogICAg
IGZyaWVuZCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JQYWdlKFBhZ2Uq
KTsKIAogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2Vu
dHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI+IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIE93blB0cjxJbnNwZWN0b3JPdmVybGF5PiBtX292ZXJs
YXk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvck92ZXJsYXk+IG1fb3ZlcmxheTsKIAog
ICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAgICAgSW5z
cGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CkBAIC0xNjQsOSArMTYyLDkgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci0gICAgT3duUHRyPEluc3BlY3RvckZy
b250ZW5kQ2xpZW50PiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsK
ICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7Ci0gICAgUGFnZSogbV9wYWdlOworICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJ
bnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcAppbmRleCBhNmNmMDI3NGUwNGQ2OWI4MzY2MGIyMDZmMDc1ODM5ZTQz
MDU1Y2Q5Li40ZTg1YmM1MzI5OTVlZDVkZGE5NDk2ODZjNGRiNmFkMGRlYTlmOGQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCkBAIC0xODIsOCArMTgyLDggQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpjYW5BdHRhY2hXaW5kb3coKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIERvbid0IGFsbG93IHRoZSBhdHRhY2ggaWYgdGhlIHdpbmRvdyB3b3VsZCBiZSB0b28gc21h
bGwgdG8gYWNjb21tb2RhdGUgdGhlIG1pbmltdW0gaW5zcGVjdG9yIHNpemUuCi0gICAgdW5zaWdu
ZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVk
UGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKLSAgICB1bnNpZ25l
ZCBpbnNwZWN0ZWRQYWdlV2lkdGggPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBh
Z2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKKyAgICB1bnNpZ25lZCBp
bnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdl
KCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CisgICAgdW5zaWduZWQgaW5z
cGVjdGVkUGFnZVdpZHRoID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCku
bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKICAgICB1bnNpZ25lZCBtYXhpbXVt
QXR0YWNoZWRIZWlnaHQgPSBpbnNwZWN0ZWRQYWdlSGVpZ2h0ICogbWF4aW11bUF0dGFjaGVkSGVp
Z2h0UmF0aW87CiAgICAgcmV0dXJuIG1pbmltdW1BdHRhY2hlZEhlaWdodCA8PSBtYXhpbXVtQXR0
YWNoZWRIZWlnaHQgJiYgbWluaW11bUF0dGFjaGVkV2lkdGggPD0gaW5zcGVjdGVkUGFnZVdpZHRo
OwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6c2V0RG9ja2luZ1VuYXZhaWxhYmxlKGJvb2wgdW5hdmFpbGFibGUpCiAKIHZvaWQgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWdu
ZWQgaGVpZ2h0KQogewotICAgIHVuc2lnbmVkIHRvdGFsSGVpZ2h0ID0gbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0b3JDb250cm9s
bGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhlaWdodCgp
OworICAgIHVuc2lnbmVkIHRvdGFsSGVpZ2h0ID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgp
LnZpZXcoKS0+dmlzaWJsZUhlaWdodCgpICsgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0
ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgdW5zaWdu
ZWQgYXR0YWNoZWRIZWlnaHQgPSBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdo
dCwgdG90YWxIZWlnaHQpOwogICAgIG1fc2V0dGluZ3MtPnNldFByb3BlcnR5KGluc3BlY3RvckF0
dGFjaGVkSGVpZ2h0U2V0dGluZywgU3RyaW5nOjpudW1iZXIoYXR0YWNoZWRIZWlnaHQpKTsKICAg
ICBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodChhdHRhY2hlZEhlaWdodCk7CkBAIC0yMDMsNyArMjAz
LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIHsKLSAg
ICB1bnNpZ25lZCB0b3RhbFdpZHRoID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXco
KS0+dmlzaWJsZVdpZHRoKCkgKyBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2Uo
KS0+bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlV2lkdGgoKTsKKyAgICB1bnNpZ25lZCB0b3Rh
bFdpZHRoID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZVdpZHRo
KCkgKyBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52
aWV3KCktPnZpc2libGVXaWR0aCgpOwogICAgIHVuc2lnbmVkIGF0dGFjaGVkV2lkdGggPSBjb25z
dHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgsIHRvdGFsV2lkdGgpOwogICAgIHNldEF0
dGFjaGVkV2luZG93V2lkdGgoYXR0YWNoZWRXaWR0aCk7CiB9CkBAIC0yMTEsOCArMjExLDcgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dp
ZHRoKHVuc2lnbmVkIHdpZHRoKQogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpv
cGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgIFBhZ2Uq
IHBhZ2UgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKTsKLSAgICBGcmFt
ZSYgbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgRnJhbWUmIG1haW5GcmFtZSA9
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpOwogICAg
IEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChtYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KCksICJfYmxhbmsiKTsKIAogICAgIGJvb2wgY3JlYXRl
ZDsKQEAgLTI1Nyw3ICsyNTYsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OnNldEF0dGFjaGVkV2luZG93KERvY2tTaWRlIGRvY2tTaWRlKQogCiB2b2lkIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCgpCiB7Ci0gICAg
dW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5z
cGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKKyAgICB1
bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNw
ZWN0ZWRQYWdlKCkubWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgU3Ry
aW5nIHZhbHVlID0gbV9zZXR0aW5ncy0+Z2V0UHJvcGVydHkoaW5zcGVjdG9yQXR0YWNoZWRIZWln
aHRTZXR0aW5nKTsKICAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0VtcHR5
KCkgPyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiB2YWx1ZS50b1VJbnQoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCBmMTVlMjAz
NDFmZWZkY2UzNzBkZTA0YzkzODdmMGY4YzJlNDM4NzE2Li4wYmQ4NjliOThiMDg5M2I1ZmIzMTky
NmY2NTcxYmY2NzQzMjIxNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCkBAIC0yMjgsMTAgKzIyOCw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkTm9k
ZUhpZ2hsaWdodChOb2RlKiBub2RlLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29uc3QgSGlnaGxp
Z2h0CiAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwgcmVnaW9uLCBoaWdobGln
aHRDb25maWcsIGhpZ2hsaWdodCk7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdo
dChQYWdlKiBwYWdlLCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hsaWdodENvbmZp
ZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hsaWdodCkKK3N0YXRpYyB2b2lkIGJ1
aWxkUXVhZEhpZ2hsaWdodChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hsaWdodENv
bmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hsaWdodCkKIHsKLSAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybjsKICAgICBoaWdobGlnaHQtPnNldERhdGFGcm9tQ29uZmln
KGhpZ2hsaWdodENvbmZpZyk7CiAgICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJl
Y3RzOwogICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKHF1YWQpOwpAQCAtMjM5LDcgKzIzNyw3
IEBAIHN0YXRpYyB2b2lkIGJ1aWxkUXVhZEhpZ2hsaWdodChQYWdlKiBwYWdlLCBjb25zdCBGbG9h
dFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hsaWdoCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQog
Ci1JbnNwZWN0b3JPdmVybGF5OjpJbnNwZWN0b3JPdmVybGF5KFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50KQorSW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheShQYWdl
JiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcGFnZShwYWdlKQogICAg
ICwgbV9jbGllbnQoY2xpZW50KQogewpAQCAtMjc0LDcgKzI3Miw3IEBAIHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCogaGlnaGxpZ2h0KSBjb25zdAogICAgIGlm
IChtX2hpZ2hsaWdodE5vZGUpCiAgICAgICAgIGJ1aWxkTm9kZUhpZ2hsaWdodChtX2hpZ2hsaWdo
dE5vZGUuZ2V0KCksIG51bGxwdHIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsK
ICAgICBlbHNlCi0gICAgICAgIGJ1aWxkUXVhZEhpZ2hsaWdodChtX3BhZ2UsICptX2hpZ2hsaWdo
dFF1YWQsIG1fcXVhZEhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsKKyAgICAgICAgYnVpbGRR
dWFkSGlnaGxpZ2h0KCptX2hpZ2hsaWdodFF1YWQsIG1fcXVhZEhpZ2hsaWdodENvbmZpZywgaGln
aGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRQYXVzZWRJbkRlYnVnZ2Vy
TWVzc2FnZShjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCkBAIC0zMDAsNyArMjk4LDcgQEAgdm9pZCBJ
bnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUsIGNvbnN0IEhpZ2hsaWdo
dENvbmZpZyYgaGlnaGxpZ2gKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UXVhZChQ
YXNzT3duUHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGln
aHRDb25maWcpCiB7CiAgICAgaWYgKG1fcXVhZEhpZ2hsaWdodENvbmZpZy51c2VQYWdlQ29vcmRp
bmF0ZXMpCi0gICAgICAgICpxdWFkIC09IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zY3Jv
bGxPZmZzZXQoKTsKKyAgICAgICAgKnF1YWQgLT0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+
c2Nyb2xsT2Zmc2V0KCk7CiAKICAgICBtX3F1YWRIaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRD
b25maWc7CiAgICAgbV9oaWdobGlnaHRRdWFkID0gcXVhZDsKQEAgLTMyNCw3ICszMjIsNyBAQCB2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghdmll
dykKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzIsOCArMzMwLDggQEAgdm9pZCBJbnNwZWN0b3JP
dmVybGF5Ojp1cGRhdGUoKQogICAgIEludFNpemUgdmlld3BvcnRTaXplID0gdmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOwogICAgIEludFNpemUgZnJhbWVWaWV3RnVsbFNpemUgPSB2
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVTY3JvbGxiYXJz
KS5zaXplKCk7CiAgICAgSW50U2l6ZSBzaXplID0gbV9zaXplLmlzRW1wdHkoKSA/IGZyYW1lVmll
d0Z1bGxTaXplIDogbV9zaXplOwotICAgIG92ZXJsYXlQYWdlKCktPnNldFBhZ2VTY2FsZUZhY3Rv
cihtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpLCBJbnRQb2ludCgpKTsKLSAgICBzaXplLnNjYWxl
KG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIG92ZXJsYXlQYWdlKCktPnNldFBhZ2VT
Y2FsZUZhY3RvcihtX3BhZ2UucGFnZVNjYWxlRmFjdG9yKCksIEludFBvaW50KCkpOworICAgIHNp
emUuc2NhbGUobV9wYWdlLnBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICBvdmVybGF5Vmlldy0+cmVz
aXplKHNpemUpOwogCiAgICAgLy8gQ2xlYXIgY2FudmFzIGFuZCBwYWludCB0aGluZ3MuCkBAIC03
MTAsNyArNzA4LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rvck92ZXJs
YXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2RlKCkgY28KICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBoaWdobGlnaHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
CiAgICAgLy8gVGhlIG1haW4gdmlldydzIHNjcm9sbCBvZmZzZXQgaXMgc2hhcmVkIGFjcm9zcyBh
bGwgcXVhZHMuCi0gICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCku
dmlldygpOworICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtX3BhZ2UubWFpbkZyYW1lKCkudmll
dygpOwogICAgIGhpZ2hsaWdodE9iamVjdC0+c2V0T2JqZWN0KCJzY3JvbGwiLCBidWlsZE9iamVj
dEZvclBvaW50KCFtYWluVmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkgPyBtYWluVmlldy0+dmlz
aWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSA6IEZsb2F0UG9pbnQoKSkpOwogCiAgICAgaGln
aGxpZ2h0T2JqZWN0LT5zZXRBcnJheSgiZnJhZ21lbnRzIiwgaGlnaGxpZ2h0RnJhZ21lbnRzLnJl
bGVhc2UoKSk7CkBAIC03MzgsNyArNzM2LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3
UXVhZEhpZ2hsaWdodCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhpZ2hsaWdodCBoaWdobGln
aHQ7Ci0gICAgYnVpbGRRdWFkSGlnaGxpZ2h0KG1fcGFnZSwgKm1faGlnaGxpZ2h0UXVhZCwgbV9x
dWFkSGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKKyAgICBidWlsZFF1YWRIaWdobGlnaHQo
Km1faGlnaGxpZ2h0UXVhZCwgbV9xdWFkSGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKICAg
ICBldmFsdWF0ZUluT3ZlcmxheSgiZHJhd1F1YWRIaWdobGlnaHQiLCBidWlsZE9iamVjdEZvckhp
Z2hsaWdodChoaWdobGlnaHQpKTsKIH0KIApAQCAtNzU3LDcgKzc1NSw3IEBAIFBhZ2UqIEluc3Bl
Y3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKICAgICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhwYWdl
Q2xpZW50cyk7CiAgICAgbV9vdmVybGF5UGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGll
bnRzKSk7CiAKLSAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBtX3BhZ2UtPnNldHRpbmdzKCk7Cisg
ICAgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9wYWdlLnNldHRpbmdzKCk7CiAgICAgU2V0dGluZ3Mm
IG92ZXJsYXlTZXR0aW5ncyA9IG1fb3ZlcmxheVBhZ2UtPnNldHRpbmdzKCk7CiAKICAgICBvdmVy
bGF5U2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KHNldHRpbmdzLnN0YW5kYXJkRm9udEZh
bWlseSgpKTsKQEAgLTc5OCw3ICs3OTYsNyBAQCBQYWdlKiBJbnNwZWN0b3JPdmVybGF5OjpvdmVy
bGF5UGFnZSgpCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZnJhbWVWaWV3RnVsbFNpemUpCiB7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gcmVzZXREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICByZXNldERhdGEtPnNldE51bWJlcigiZGV2aWNlU2NhbGVGYWN0b3IiLCBtX3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHJlc2V0RGF0YS0+c2V0TnVtYmVyKCJkZXZpY2VT
Y2FsZUZhY3RvciIsIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICByZXNldERhdGEt
PnNldE9iamVjdCgidmlld3BvcnRTaXplIiwgYnVpbGRPYmplY3RGb3JTaXplKHZpZXdwb3J0U2l6
ZSkpOwogICAgIHJlc2V0RGF0YS0+c2V0T2JqZWN0KCJmcmFtZVZpZXdGdWxsU2l6ZSIsIGJ1aWxk
T2JqZWN0Rm9yU2l6ZShmcmFtZVZpZXdGdWxsU2l6ZSkpOwogICAgIGV2YWx1YXRlSW5PdmVybGF5
KCJyZXNldCIsIHJlc2V0RGF0YS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggYjUyOTIyODU2MTFkM2I2NWYzNzVlYzMyMjcxOGIz
NDljYWQwZjMyOC4uN2UzZDAxN2IyMzVmYjc3NzI5MWYyNTBmZjQ3ZjZmMTg5NTc0MjQzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCkBAIC0xMDUsMTAg
KzEwNSw3IEBAIHN0cnVjdCBIaWdobGlnaHQgewogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5zcGVjdG9yT3ZlcmxheT4gY3JlYXRlKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCog
Y2xpZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JPdmVy
bGF5KHBhZ2UsIGNsaWVudCkpOwotICAgIH0KKyAgICBJbnNwZWN0b3JPdmVybGF5KFBhZ2UmLCBJ
bnNwZWN0b3JDbGllbnQqKTsKICAgICB+SW5zcGVjdG9yT3ZlcmxheSgpOwogCiAgICAgdm9pZCB1
cGRhdGUoKTsKQEAgLTEzMCw4ICsxMjcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZyZWVQYWdl
KCk7CiBwcml2YXRlOgotICAgIEluc3BlY3Rvck92ZXJsYXkoUGFnZSosIEluc3BlY3RvckNsaWVu
dCopOwotCiAgICAgdm9pZCBkcmF3R3V0dGVyKCk7CiAgICAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdo
dCgpOwogICAgIHZvaWQgZHJhd1F1YWRIaWdobGlnaHQoKTsKQEAgLTE0MSw3ICsxMzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwogICAgIHZvaWQgZXZhbHVhdGVJbk92ZXJsYXkoY29u
c3QgU3RyaW5nJiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4g
YXJndW1lbnQpOwogCi0gICAgUGFnZSogbV9wYWdlOworICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJ
bnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3BhdXNlZEluRGVidWdnZXJN
ZXNzYWdlOwogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodE5vZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKaW5kZXggYTIyMzhlOWZh
MDU1ZDY3NGY5ZGRjYzdmOTAxY2M1ZjNjNmRhMWVhNy4uODM0YTRkODNlNmNkNzg3OTc0YWU1MzZi
MWI0NjhmOGUxM2QxZWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0
cnVtZW50aW5nQWdlbnRzLmNwcApAQCAtMTA1LDE2ICsxMDUsMTIgQEAgdm9pZCBJbnN0cnVtZW50
aW5nQWdlbnRzOjpyZXNldCgpCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25G
b3JQYWdlKFBhZ2UqIHBhZ2UpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkgOiBudWxscHRyOwogfQog
CiBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29w
ZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCiB7Ci0gICAgaWYgKFdvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3b3JrZXJHbG9iYWxTY29wZS0+d29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcigpKQotICAgICAgICByZXR1cm4gY29udHJvbGxlci0+bV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiB3b3Jr
ZXJHbG9iYWxTY29wZSA/IHdvcmtlckdsb2JhbFNjb3BlLT53b3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpIDogbnVsbHB0cjsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZTQxNDA5YWMxNWZiZDIzNmY5OTc1
OTBhYWQzNzNhMDFkYzhhYzQuLmJmZGZiYzgzZWEyMDAxYzM0MzRjZjM2NjQ3NTdjNDkwYWVmNjA1
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTU1LDcgKzU1LDYgQEAKICNpbmNsdWRlICJXb3JrZXJSdW50
aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCkBAIC02NiwzNiArNjUsMzcgQEAg
bmFtZXNwYWNlIHsKIGNsYXNzIFBhZ2VJbnNwZWN0b3JQcm94eSA6IHB1YmxpYyBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIGV4cGxpY2l0IFBhZ2VJbnNwZWN0b3JQcm94eShXb3JrZXJHbG9iYWxTY29wZSogd29ya2Vy
R2xvYmFsU2NvcGUpIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkgeyB9
CisgICAgZXhwbGljaXQgUGFnZUluc3BlY3RvclByb3h5KFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKKyAgICAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2Jh
bFNjb3BlKSB7IH0KICAgICB2aXJ0dWFsIH5QYWdlSW5zcGVjdG9yUHJveHkoKSB7IH0KIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS0+
d29ya2VyUmVwb3J0aW5nUHJveHkoKS5wb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvcihtZXNzYWdl
KTsKKyAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS0+d29ya2VyUmVwb3J0aW5n
UHJveHkoKS5wb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvcihtZXNzYWdlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNj
b3BlOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogfTsKIAog
fQogCi1Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxT
Y29wZSkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpj
cmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgUGFnZUluamVjdGVkU2NyaXB0
SG9zdDo6Y3JlYXRlKCkpKQotICAgICwgbV9ydW50aW1lQWdlbnQoMCkKKyAgICAsIG1fcnVudGlt
ZUFnZW50KG51bGxwdHIpCiB7Ci0gICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUpOworICAgIGF1dG8g
cnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksICZ3
b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9ydW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnQuZ2V0
KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShydW50aW1lQWdlbnQpKTsKIAogICAg
IGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0
KCkpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGF1dG8gZGVidWdnZXJB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4obV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIuZ2V0KCkpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VyRGVidWdnZXJBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmd29ya2VyR2xv
YmFsU2NvcGUsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsKICAgICBtX3J1bnRpbWVB
Z2VudC0+c2V0U2NyaXB0RGVidWdTZXJ2ZXIoJmRlYnVnZ2VyQWdlbnQtPnNjcmlwdERlYnVnU2Vy
dmVyKCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUoZGVidWdnZXJBZ2VudCkpOwog
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIGNvbnNvbGVBZ2VudC5nZXQoKSwgd29ya2VyR2xvYmFs
U2NvcGUsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCksIGNvbnNvbGVBZ2VudC5nZXQoKSwgJndvcmtlckdsb2JhbFNjb3BlLCBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci5nZXQoKSkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50PihtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0
KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CiAjZW5kaWYKICAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6Oldvcmtlckluc3BlY3RvciwgbnVsbHB0cikpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6On5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKIHZv
aWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKIHsKICAgICBB
U1NFUlQoIW1fZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGFkb3B0
UHRyKG5ldyBQYWdlSW5zcGVjdG9yUHJveHkobV93b3JrZXJHbG9iYWxTY29wZSkpOworICAgIG1f
ZnJvbnRlbmRDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlSW5zcGVjdG9yUHJveHk+KG1f
d29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKICAgICBt
X2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0
KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZv
aWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKCkKICAgICBt
X2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpOwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFy
KCk7Ci0gICAgbV9mcm9udGVuZENoYW5uZWwuY2xlYXIoKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5l
bCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4
IDI5ZmQzNThmNzk5ZDBhMTEyNjllZTA2MTUwZjUxOWRlNjdiYmQ2NTIuLmZmNTAzNjRmMjkwZWY2
NTdmMTBhNDdhOTgwYTIxNDE2MjI1M2U5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDAsNyArNDAsNiBAQAog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNjAsNyAr
NTksNyBAQCBjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyIEZJTkFMIDogcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2Nv
cGUqKTsKKyAgICBleHBsaWNpdCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2Jh
bFNjb3BlJik7CiAgICAgfldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKTsKIAogICAgIHZvaWQg
Y29ubmVjdEZyb250ZW5kKCk7CkBAIC04MCwxMiArNzksMTIgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBmcmllbmQgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGF0aW9uRm9yV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3Bl
KiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckds
b2JhbFNjb3BlOwogICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRp
bmdBZ2VudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXI+
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogbV9y
dW50aW1lQWdlbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdl
bnRzOwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRlbmRDaGFu
bmVsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1fZnJv
bnRlbmRDaGFubmVsOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUsIDI+IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGE1YjU3ZDlhMmFh
OGMwNjcyMjUwOGVhODQ4OGM4NzNhOTI3NjU2MzIuLmY4ZGZiMDBiNDE3ODFhYjZiYzYyMTZlMzQ4
OTJiYmE5OTc2Y2ZkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
Mjk1Nyw3ICsyOTU3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3MKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoUGFnZSogcGFn
ZSA9IG1fZnJhbWUucGFnZSgpKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
Ci0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc3VtZSgpOworICAg
ICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnJlc3VtZSgpOwogICAgIH0KICNl
bmRpZgogCkBAIC0zMzcwLDcgKzMzNzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQot
ICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZCgmbV9mcmFtZSwgd29ybGQpOworICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKCZtX2ZyYW1lLCB3b3JsZCk7CiAjZW5k
aWYKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKCZtX2ZyYW1lLCB3b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKaW5kZXggYTM2YWY1NjQxYWUwNzg0NTI4MzFhYjAzMWVmZjA5ODBi
ZWY2YWFlZC4uNmQ1Y2Y3NDY1ZDczNzAzZWMzZTAxNTJmZmI5ZjYwM2ViYzA1NGNhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTU3LDcg
KzE1Nyw3IEBAIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6
Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqIGV2ZW50KQogdm9pZCBDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OnNob3dDb250ZXh0TWVudShFdmVudCogZXZlbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBpZiAobV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZW5hYmxlZCgpKQorICAg
IGlmIChtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmVuYWJsZWQoKSkKICAgICAgICAgYWRk
SW5zcGVjdEVsZW1lbnRJdGVtKCk7CiAjZW5kaWYKIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVu
dUl0ZW0qIGl0ZW0pCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0luc3BlY3RFbGVtZW50OgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5w
YWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3Qo
bV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKKyAgICAgICAgICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0KG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNo
YXJlZE5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZToKQEAgLTg5Myw3ICs4OTMsNyBAQCB2b2lkIENv
bnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICAgICAg
ICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYgKGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSB8fCBmcmFtZS0+cGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmhhc1JlbW90ZUZyb250ZW5kKCkpKSkgeworICAgICAgICAg
ICAgICAgIGlmICghKGZyYW1lLT5wYWdlKCkgJiYgKGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5oYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIHx8IGZyYW1lLT5wYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5oYXNSZW1vdGVGcm9udGVuZCgpKSkpIHsKICNlbmRpZgog
CiAgICAgICAgICAgICAgICAgLy8gSW4gR1RLKyB1bmF2YWlsYWJsZSBpdGVtcyBhcmUgbm90IGhp
ZGRlbiBidXQgaW5zZW5zaXRpdmUuCkBAIC0xMTAxLDkgKzExMDEsNiBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6YWRkSW5zcGVjdEVsZW1lbnRJdGVtKCkKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBDb250ZXh0TWVudUl0ZW0gSW5zcGVjdEVsZW1lbnRJdGVt
KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50LCBjb250ZXh0TWVu
dUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpKTsKICNpZiBVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVY
VF9NRU5VUykKICAgICBpZiAobV9jb250ZXh0TWVudSAmJiAhbV9jb250ZXh0TWVudS0+aXRlbXMo
KS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggOGMwNjRmYjZjYTcz
Y2FkNmMxOTEyMzVhMWJiYzdhNzA0YzgyZmUwOC4uYTkwMDJlZDM3N2YxZjA3M2VhZjAwMzQ3YjE4
OTA3Y2EyZGM2ZTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjg5MCw3ICsy
ODkwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNlbmRSZXNpemVFdmVudElmTmVlZGVkKCkKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKICAgICBp
ZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSAmJiBpc01haW5GcmFt
ZSkgewotICAgICAgICBpZiAoSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgPSBwYWdl
ID8gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JDbGllbnQoKSA6IDApCisg
ICAgICAgIGlmIChJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCA9IHBhZ2UgPyBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yQ2xpZW50KCkgOiBudWxscHRyKQogICAg
ICAgICAgICAgaW5zcGVjdG9yQ2xpZW50LT5kaWRSZXNpemVNYWluRnJhbWUoJmZyYW1lKCkpOwog
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYzNlYzI3MzNlODM2NTIxZjAxMGNj
NWM5MmZmODAwYTI4M2QxYWIwMC4uNDRhNzFjYjQ2YzNkMGNhZDI3MGY0NzUzOTBhNzY3ZDQ5ODdk
NDllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgUGFnZTo6UGFnZShQ
YWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ2xpZW50
cy5jb250ZXh0TWVudUNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
ICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZSh0aGlz
LCBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDbGll
bnRzLmluc3BlY3RvckNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQog
ICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoUG9pbnRlckxvY2tDb250cm9sbGVyOjpjcmVh
dGUodGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGMzOWMyZjdmZjhmM2U3YzVmODc4YTJmMjJkOGI2
NDJkNTJmZTZkOTcuLjQzZWMwYWNhNjBhNGYzNWM4N2Q1N2Y1OWRiY2UzMjY4NmEwODkxY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogICAgIENvbnRleHRNZW51
Q29udHJvbGxlciYgY29udGV4dE1lbnVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fY29u
dGV4dE1lbnVDb250cm9sbGVyOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX2luc3BlY3RvckNvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBJbnNwZWN0b3JDb250cm9sbGVy
JiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1faW5zcGVjdG9yQ29udHJv
bGxlcjsgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBQb2ludGVyTG9j
a0NvbnRyb2xsZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
bnRlckxvY2tDb250cm9sbGVyLmdldCgpOyB9CkBAIC00NjEsNyArNDYxLDcgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnVDb250cm9sbGVyPiBtX2NvbnRl
eHRNZW51Q29udHJvbGxlcjsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgT3du
UHRyPEluc3BlY3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBjb25z
dCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9s
bGVyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBPd25QdHI8UG9pbnRl
ckxvY2tDb250cm9sbGVyPiBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5jcHAKaW5kZXggMmEyNmU2M2VjZTliMmYyNzA1ZDZhYzlmZjRhMjc2
ZDk0NTNlNzJlMy4uYzFmMjY1MjMzMTQzY2ExNjcyYTIzMjRlNjRhMzM3ZGQyNDA1OWUzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCBT
dHJpbmcgUGFnZURlYnVnZ2FibGU6OnVybCgpIGNvbnN0CiAKIGJvb2wgUGFnZURlYnVnZ2FibGU6
Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2UuaW5zcGVjdG9y
Q29udHJvbGxlcigpLT5oYXNMb2NhbEZyb250ZW5kKCk7CisgICAgcmV0dXJuIG1fcGFnZS5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuaGFzTG9jYWxGcm9udGVuZCgpOwogfQogCiBwaWRfdCBQYWdlRGVi
dWdnYWJsZTo6cGFyZW50UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAogewotICAgIGlmIChJbnNw
ZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmluc3BlY3RvckNsaWVudCgpKQorICAgIGlmIChJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckNsaWVudCA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdG9yQ2xpZW50KCkp
CiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JDbGllbnQtPnBhcmVudFByb2Nlc3NJZGVudGlmaWVy
KCk7CiAKICAgICByZXR1cm4gMDsKQEAgLTc2LDI2ICs3NiwyNiBAQCBwaWRfdCBQYWdlRGVidWdn
YWJsZTo6cGFyZW50UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIFBhZ2VEZWJ1Z2dh
YmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVs
KQogewotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3Bh
Z2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXItPnNldEhh
c1JlbW90ZUZyb250ZW5kKHRydWUpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmNvbm5lY3RG
cm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCo+KGNoYW5uZWwpKTsKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9s
bGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpbnNwZWN0b3JDb250cm9s
bGVyLnNldEhhc1JlbW90ZUZyb250ZW5kKHRydWUpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXIu
Y29ubmVjdEZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKj4oY2hhbm5lbCkpOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25u
ZWN0KCkKIHsKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
bV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5k
aXNjb25uZWN0RnJvbnRlbmQoKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5zZXRIYXNSZW1v
dGVGcm9udGVuZChmYWxzZSk7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29u
dHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaW5zcGVjdG9yQ29u
dHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLnNl
dEhhc1JlbW90ZUZyb250ZW5kKGZhbHNlKTsKIH0KIAogdm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlz
cGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
LSAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJv
bnRlbmQobWVzc2FnZSk7CisgICAgbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2FibGU6
OnNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQogewotICAgIG1fcGFnZS5pbnNwZWN0b3JD
b250cm9sbGVyKCktPnNldEluZGljYXRpbmcoaW5kaWNhdGluZyk7CisgICAgbV9wYWdlLmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggODBjMmQzODk0M2NjMTFiNmZkYTY5N2RjMTE4MjUxNGUz
OTJiYzljZi4uMTRiYzk1NjdlNDc3ZWFhNTFmNDgwZTU0ODVjOTgxNjcwNDZiMDg0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApA
QCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkKIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6c3luY0Rpc3Bs
YXlTdGF0ZSgpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBtX3BhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+ZGlkQmVnaW5GcmFtZSgpOworICAgIG1fcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpZEJlZ2luRnJhbWUoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKSAm
JiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1NDU3MDZlNjA3NDhiZGNhNWQxZjA0NmFiNDk2
MWQxYzIzNjE3NmYwLi4xOWU5ODcwMWQ5MWI5ODJhMjJhMTk4M2Q1NDgwNTBjZmUwYWRhMjE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yODAsOCArMjgwLDcgQEAgdm9p
ZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSogcGFnZSkKICAgICBXZWJD
b3JlOjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoVmVjdG9yPFN0cmluZz4oKSk7CiAg
ICAgV2ViQ29yZTo6U2V0dGluZ3M6OnNldFVzZXNPdmVybGF5U2Nyb2xsYmFycyhmYWxzZSk7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
aWYgKHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5zZXRQcm9maWxlckVuYWJsZWQoZmFsc2UpOworICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQoZmFsc2UpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiAhUExBVEZPUk0oV0lOKQogICAgIHBhZ2UtPmdyb3VwKCku
Y2FwdGlvblByZWZlcmVuY2VzKCktPnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKGVtcHR5
U3RyaW5nKCkpOwpAQCAtNzA1LDEzICs3MDQsMTMgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlz
dD4gSW50ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRSZWN0cyhFeGNlcHRpb25Db2RlJiBlYykK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRl
eHREb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkgfHwg
IWRvY3VtZW50LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSkgeworICAgIGlmICghZG9j
dW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKCk7CiAgICAgfQog
CiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKLSAgICBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPmdldEhpZ2hsaWdodCgmaGlnaGxpZ2h0KTsKKyAgICBkb2N1bWVudC0+
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZ2V0SGlnaGxpZ2h0KCZoaWdobGlnaHQpOwog
ICAgIHJldHVybiBDbGllbnRSZWN0TGlzdDo6Y3JlYXRlKGhpZ2hsaWdodC5xdWFkcyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShlYyk7CkBAIC03MjMsMTEgKzcyMiwxMSBAQCBTdHJpbmcgSW50
ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRPYmplY3QoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9j
dW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpIHx8ICFkb2N1
bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpIHsKKyAgICBpZiAoIWRvY3VtZW50
IHx8ICFkb2N1bWVudC0+cGFnZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQotICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IG9iamVjdCA9IGRvY3VtZW50LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBvYmplY3QgPSBkb2N1bWVudC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuYnVp
bGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGUoKTsKICAgICByZXR1cm4gb2JqZWN0ID8gb2JqZWN0
LT50b0pTT05TdHJpbmcoKSA6IFN0cmluZygpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWMp
OwpAQCAtMTI1MywxNiArMTI1MiwxNCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6
Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgY2VudGVyWCwgaQogdm9pZCBJ
bnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBj
b250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7
Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkQmVnaW5GcmFtZSgpOworICAgIGNvbnRleHRE
b2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaWRCZWdp
bkZyYW1lKCk7CiAjZW5kaWYKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRD
YW5jZWxGcmFtZSgpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCkt
PnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXIt
PmRpZENhbmNlbEZyYW1lKCk7CisgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpZENhbmNlbEZyYW1lKCk7CiAjZW5kaWYKIH0KIApA
QCAtMTU1MCwxMyArMTU0NywxMyBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJuYWxzOjpv
cGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBQYWdlKiBm
cm9udGVuZFBhZ2UgPSBtX2Zyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCk7CiAgICAg
QVNTRVJUKGZyb250ZW5kUGFnZSk7CiAKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnREdW1teT4gZnJvbnRlbmRDbGllbnQgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnREdW1teShwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFnZSkpOwor
ICAgIGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250
ZW5kQ2xpZW50RHVtbXk+KCZwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kUGFn
ZSk7CiAKLSAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKKyAgICBmcm9udGVu
ZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChz
dGQ6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKIAogICAgIG1fZnJvbnRlbmRDaGFubmVsID0gYWRv
cHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbER1bW15KGZyb250ZW5kUGFnZSkpOwog
Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQobV9mcm9u
dGVuZENoYW5uZWwuZ2V0KCkpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25u
ZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG1fZnJv
bnRlbmRXaW5kb3c7CiB9CkBAIC0xNTY3LDcgKzE1NjQsNyBAQCB2b2lkIEludGVybmFsczo6Y2xv
c2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAgICBBU1NFUlQocGFnZSk7CiAgICAgQVNTRVJU
KG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5k
aXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlz
Y29ubmVjdEZyb250ZW5kKCk7CiAKICAgICBtX2Zyb250ZW5kQ2hhbm5lbC5yZWxlYXNlKCk7CiAK
QEAgLTE1NzgsMjIgKzE1NzUsMjIgQEAgdm9pZCBJbnRlcm5hbHM6OmNsb3NlRHVtbXlJbnNwZWN0
b3JGcm9udGVuZCgpCiB2b2lkIEludGVybmFsczo6c2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNp
emVMaW1pdHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgaW50IG1heGltdW1TaW5n
bGVSZXNvdXJjZUNvbnRlbnRTaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBQYWdlKiBw
YWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2Ug
fHwgIXBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkgeworICAgIGlmICghcGFnZSkgewogICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFJlc291cmNlc0RhdGFTaXplTGltaXRz
RnJvbUludGVybmFscyhtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIG1heGltdW1TaW5nbGVS
ZXNvdXJjZUNvbnRlbnRTaXplKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0
UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKG1heGltdW1SZXNvdXJjZXNDb250
ZW50U2l6ZSwgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOwogfQogCiB2b2lkIElu
dGVybmFsczo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBQYWdlKiBwYWdlID0gY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSkgeworICAgIGlmICghcGFnZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c2V0UHJvZmlsZXJFbmFibGVkKGVuYWJsZWQpOworICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcAppbmRleCBiYWVlZDczNmQzNjAyNjlhYmYyYWIyNzUwYmRjODUzYmUzN2M0Y2MxLi4y
ODg5MjM2ZjcyZmY5NDMxOWUzZmM4YTEwZTEyOTg5Y2UyNWYwYzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtODgsNyArODgsNyBAQCBXb3Jr
ZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBzdAogICAgICwgbV9zY3JpcHQoYWRvcHRQdHIobmV3IFdvcmtlclNj
cmlwdENvbnRyb2xsZXIodGhpcykpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgLCBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoYWRvcHRQdHIo
bmV3IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIodGhpcykpKQorICAgICwgbV93b3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2Nsb3NpbmcoZmFsc2UpCiAgICAgLCBtX2V2ZW50
UXVldWUoKnRoaXMpCkBAIC0xOTIsMTMgKzE5Miw2IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6
OmNsZWFyVGltZW91dChpbnQgdGltZW91dElkKQogICAgIERPTVRpbWVyOjpyZW1vdmVCeUlkKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGltZW91dElkKTsKIH0KIAotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpjbGVhckluc3BlY3RvcigpCi17Ci0gICAg
bV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNsZWFyKCk7Ci19Ci0jZW5kaWYKLQogaW50IFdv
cmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbChQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4g
YWN0aW9uLCBpbnQgdGltZW91dCkKIHsKICAgICByZXR1cm4gRE9NVGltZXI6Omluc3RhbGwoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBhY3Rpb24sIHRpbWVvdXQsIGZhbHNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA1OTQxN2I2OWZhODBkNTE3
YjEwYjNjZTgyZDk4ZTVhNzg2MDI4ZjIxLi4wODE0YjZkMTc2ODFlY2I3MWI2ZWEwNDdhNjA5ZDRi
OTc3YTQ2ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CkBAIC03Myw5ICs3Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQogICAg
ICAgICB2b2lkIGNsZWFyU2NyaXB0KCkgeyBtX3NjcmlwdC5jbGVhcigpOyB9Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICAgICAgdm9pZCBjbGVhckluc3BlY3RvcigpOwotI2VuZGlmCiAKICAg
ICAgICAgV29ya2VyVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZDsgfQog
CkBAIC0xMDYsNyArMTAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICAgICAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciogd29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fd29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5nZXQoKTsgfQorICAgICAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiB3b3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKCkgeyByZXR1cm4gKm1fd29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjsg
fQogI2VuZGlmCiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtp
bmcuIFNlZSBKU1dvcmtlckdsb2JhbFNjb3BlOjp2aXNpdENoaWxkcmVuVmlydHVhbChTbG90Vmlz
aXRvciYpIGluCiAgICAgICAgIC8vIEpTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwLgpAQCAt
MTY4LDcgKzE2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV29ya2VyVGhyZWFk
KiBtX3RocmVhZDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIE93blB0cjxXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyPiBtX3dvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CisgICAg
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiBtX3dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2Nsb3Npbmc7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
aW5kZXggMDE5NmYwMmZjOWRmNDgwNDRmYzU0OTQ2N2I0YTkyYTA5MWMxYmI4ZS4uZDUwNGFkMjVl
NjZlZjQxYmYyY2E5OTJhZjI2ODk0YzdlZWFkNjcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJPYmplY3REZXN0cm95ZWRJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kgogc3RhdGljIHZvaWQgY29ubmVjdFRvV29ya2VyR2xvYmFsU2Nv
cGVJbnNwZWN0b3JUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGJvb2wpCiB7
CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKLSAgICBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KGNvbnRl
eHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCgpOworICAg
IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPndvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsKIH0KICNlbmRpZgogCkBAIC00MjgsNyAr
NDI4LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y29ubmVjdFRvSW5zcGVjdG9yKFdv
cmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWMKIHN0YXRpYyB2b2lkIGRpc2Nvbm5lY3RG
cm9tV29ya2VyR2xvYmFsU2NvcGVJbnNwZWN0b3JUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGJvb2wpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Y29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICBzdGF0aWNfY2FzdDxXb3JrZXJH
bG9iYWxTY29wZSo+KGNvbnRleHQpLT53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nv
bm5lY3RGcm9udGVuZCgpOworICAgIHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4oY29u
dGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoKTsK
IH0KICNlbmRpZgogCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKQogc3RhdGljIHZvaWQgZGlzcGF0Y2hPbkluc3Bl
Y3RvckJhY2tlbmRUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihj
b250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgIHN0YXRpY19jYXN0PFdvcmtlckds
b2JhbFNjb3BlKj4oY29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworICAgIHN0YXRpY19jYXN0PFdvcmtlckds
b2JhbFNjb3BlKj4oY29udGV4dCktPndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDgwNGJlMTVmNGY4MTQ3ZTNlYmEyYTYwMDM2
OTNkNjVmN2E4MDg4YWIuLmQ2NjI4MGUzYzYyNjNhM2EwOTVkMGQ5YWNhNjIxMGY1YTEyNDI3ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTIxNiw5ICsyMTYs
NiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICBXb3JrZXJHbG9i
YWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZSo+KGNvbnRleHQpOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIHdvcmtlckdsb2Jh
bFNjb3BlLT5jbGVhckluc3BlY3RvcigpOwotI2VuZGlmCiAgICAgICAgIC8vIEl0J3Mgbm90IHNh
ZmUgdG8gY2FsbCBjbGVhclNjcmlwdCB1bnRpbCBhbGwgdGhlIGNsZWFudXAgdGFza3MgcG9zdGVk
IGJ5IGZ1bmN0aW9ucyBpbml0aWF0ZWQgYnkgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2sg
aGF2ZSBjb21wbGV0ZWQuCiAgICAgICAgIHdvcmtlckdsb2JhbFNjb3BlLT5jbGVhclNjcmlwdCgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDFhN2E3OWNlY2Q1NWE0ODhi
YWYzOTdhOWQwOTVlNjUxNDE1YjcwYTQuLjljNTZmODdhZjNkZjc5NGUyNmU4ZjA2MmVjMDgwMGU4
MDQ1OGE4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtNDY2LDggKzQ2Niw3IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBEUlRf
U1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIGlmIChwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQsIHNjcmlwdCk7CisgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElk
LCBzY3JpcHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7CiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcAppbmRleCBlYWViOTlmNzhlNDZjMjliNjBkMzM1
ZDcwN2Y4ZmQ1MGNiMDMzNWUzLi5jYTE4Zjk2MzFmZTFlZGU2MWQ3YjIwZTc5NTViYWExNGYwYzFk
YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5jcHAKQEAgLTk5LDExICs5OSwxMSBAQCBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIEluc3BlY3RvckNsaWVudEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3Bl
Y3RvckNvbgogICAgIFN0cmluZyBpbnNwZWN0b3JVcmkgPSBpbnNwZWN0b3JGaWxlc1BhdGgoKSAr
ICIvTWFpbi5odG1sIjsKICAgICBld2tfdmlld191cmlfc2V0KG1faW5zcGVjdG9yVmlldywgaW5z
cGVjdG9yVXJpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50RWZsPiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVmbChtX2luc3BlY3RlZFZpZXcsIG1faW5zcGVjdG9yVmlldywgdGhpcykpOworICAg
IGF1dG8gZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50RWZsPihtX2luc3BlY3RlZFZpZXcsIG1faW5zcGVjdG9yVmlldywgdGhpcyk7CiAgICAg
bV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwogCi0gICAgSW5zcGVjdG9y
Q29udHJvbGxlciogY29udHJvbGxlciA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKG1faW5zcGVjdG9y
VmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBjb250cm9sbGVyLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudC5yZWxlYXNlKCkpOworICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXImIGNvbnRyb2xsZXIgPSBFV0tQcml2YXRlOjpjb3JlUGFnZShtX2luc3BlY3Rv
clZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgY29udHJvbGxlci5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChzdGQ6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKICAgICAKICAgICBy
ZXR1cm4gdGhpczsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50
RWZsOjppbnNwZWN0b3JGaWxlc1BhdGgoKQogfQogCiBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVm
bDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmwoRXZhc19PYmplY3QqIGluc3BlY3RlZFZpZXcs
IEV2YXNfT2JqZWN0KiBpbnNwZWN0b3JWaWV3LCBJbnNwZWN0b3JDbGllbnRFZmwqIGluc3BlY3Rv
ckNsaWVudCkKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoRVdLUHJpdmF0ZTo6
Y29yZVBhZ2UoaW5zcGVjdGVkVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgRVdLUHJpdmF0
ZTo6Y29yZVBhZ2UoaW5zcGVjdG9yVmlldyksIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVu
ZFNldHRpbmdzRWZsKCkpKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmRVdL
UHJpdmF0ZTo6Y29yZVBhZ2UoaW5zcGVjdGVkVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwg
RVdLUHJpdmF0ZTo6Y29yZVBhZ2UoaW5zcGVjdG9yVmlldyksIGFkb3B0UHRyKG5ldyBJbnNwZWN0
b3JGcm9udGVuZFNldHRpbmdzRWZsKCkpKQogICAgICwgbV9pbnNwZWN0ZWRWaWV3KGluc3BlY3Rl
ZFZpZXcpCiAgICAgLCBtX2luc3BlY3RvclZpZXcoaW5zcGVjdG9yVmlldykKICAgICAsIG1faW5z
cGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50RWZsOjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKQogdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6ZGVzdHJveUluc3BlY3RvcldpbmRvdyhib29s
IG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIpCiB7CiAgICAgaWYgKG5vdGlmeUluc3BlY3RvckNv
bnRyb2xsZXIpCi0gICAgICAgIEVXS1ByaXZhdGU6OmNvcmVQYWdlKG1faW5zcGVjdGVkVmlldykt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgICAgIEVX
S1ByaXZhdGU6OmNvcmVQYWdlKG1faW5zcGVjdGVkVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5kaXNjb25uZWN0RnJvbnRlbmQoKTsKIAogICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKICAg
ICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPnJlbGVhc2VGcm9udGVuZFBhZ2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDQwNDc0ZmJjNDlkOTdjN2NlZWMyNDdiZTM0NWQwOGI4
MTRlMGZiNzEuLjgzOTYxMGQ4MmI0OTU0OTBmMDU5NGNhMmFmYjk3OWE2OGIxNDUyZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtNDY2Miw3ICs0NjYyLDcgQEAgdm9pZCBld2tf
dmlld19pbnNwZWN0b3Jfc2hvdyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAKLSAgICBwcml2LT5wYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKKyAgICBwcml2LT5wYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkuc2hvdygpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7CiAj
ZW5kaWYKQEAgLTQ2NzQsNyArNDY3NCw3IEBAIHZvaWQgZXdrX3ZpZXdfaW5zcGVjdG9yX2Nsb3Nl
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2KTsKIAotICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+Y2xvc2UoKTsKKyAgICBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xvc2Uo
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRl
eCA0OWNhODRkZmQ0YTJiYjhiZThhNjNlMmQwMzE2YTgzY2Q4NzJjZDJlLi4wNDQzMTM1YmE5ODQz
MGYyYTRjODk2ZDhhZjUyOGU4MmQwOTMxNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTU2Nyw3ICs1NjcsNyBA
QCBzdGF0aWMgdm9pZCBwYWludFdlYlZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldywgRnJhbWUq
IGZyYW1lLCBjb25zdCBSZWdpb24mIGRpcgogCiAgICAgZ2Muc2F2ZSgpOwogICAgIGdjLmNsaXAo
ZGlydHlSZWdpb24uYm91bmRzKCkpOwotICAgIGZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+ZHJhd0hpZ2hsaWdodChnYyk7CisgICAgZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLmRyYXdIaWdobGlnaHQoZ2MpOwogICAgIGdjLnJlc3RvcmUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEd0ay5jcHAKaW5kZXggMzhjOWIwMzM5NDBlNzM0Y2JiZTBiZmM3OTE0NjM3NGFmOTAyNmQw
Yi4uY2RhZDhmNzA1MTdiN2NjMjYwODQ3NzEyYWNkOGIwY2I3MTJhMzQ1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
Y3BwCkBAIC0xMDksOSArMTA5LDkgQEAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0
b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm8KICAgICBndGtf
d2lkZ2V0X3Nob3coR1RLX1dJREdFVChpbnNwZWN0b3JXZWJWaWV3KSk7CiAKICAgICBtX2Zyb250
ZW5kUGFnZSA9IGNvcmUoaW5zcGVjdG9yV2ViVmlldyk7Ci0gICAgT3duUHRyPEluc3BlY3RvckZy
b250ZW5kQ2xpZW50PiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RvcldlYlZpZXcsIHdlYkluc3Bl
Y3RvciwgbV9mcm9udGVuZFBhZ2UsIHRoaXMpKTsKKyAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJW
aWV3LCBpbnNwZWN0b3JXZWJWaWV3LCB3ZWJJbnNwZWN0b3IsIG1fZnJvbnRlbmRQYWdlLCB0aGlz
KTsKICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7Ci0gICAgbV9m
cm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHN0ZDo6bW92ZShm
cm9udGVuZENsaWVudCkpOwogCiAgICAgLy8gVGhlIGluc3BlY3RvciBtdXN0IGJlIGluIGl0J3Mg
b3duIFBhZ2VHcm91cCB0byBhdm9pZCBkZWFkbG9jayB3aGlsZSBkZWJ1Z2dpbmcuCiAgICAgbV9m
cm9udGVuZFBhZ2UtPnNldEdyb3VwTmFtZSgiIik7CkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBJ
bnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB9CiAKIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChXZWJLaXRXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJLaXRXZWJWaWV3KiBpbnNwZWN0
b3JXZWJWaWV3LCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvciwgUGFnZSogaW5zcGVj
dG9yUGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCi0gICAgOiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsKGNvcmUoaW5zcGVjdGVkV2ViVmlldyktPmluc3BlY3RvckNv
bnRyb2xsZXIoKSwgaW5zcGVjdG9yUGFnZSwgYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5k
U2V0dGluZ3NHdGsoKSkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZjb3Jl
KGluc3BlY3RlZFdlYlZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3RvclBhZ2Us
IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzR3RrKCkpKQogICAgICwgbV9p
bnNwZWN0b3JXZWJWaWV3KGluc3BlY3RvcldlYlZpZXcpCiAgICAgLCBtX2luc3BlY3RlZFdlYlZp
ZXcoaW5zcGVjdGVkV2ViVmlldykKICAgICAsIG1fd2ViSW5zcGVjdG9yKHdlYkluc3BlY3RvcikK
QEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95
SW5zcGVjdG9yV2luZG93KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvbAogICAgIH0KIAogICAg
IGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBjb3JlKG1faW5zcGVjdGVk
V2ViVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7Cisg
ICAgICAgIGNvcmUobV9pbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRp
c2Nvbm5lY3RGcm9udGVuZCgpOwogCiAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAg
ICBtX2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5kUGFnZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcAppbmRleCA4YTA0NDQ2OGMw
NDhhMDhjYzcwZjdjZTdiM2MxNDQ1YzFhZDA4ZDRjLi5lOWEwODkxNjBlNWM0YWZiMTEyZGRiZTNj
MmM0OTZmYTYzZjQwOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViaW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViaW5zcGVjdG9yLmNwcApAQCAtMzUzLDcgKzM1Myw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfaW5zcGVjdG9yX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQs
IGNvCiAgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRfUFJPRklMSU5HX0VOQUJMRUQ6IHsKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAgICAgYm9vbCBlbmFibGVkID0gZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSk7Ci0gICAgICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c2V0UHJvZmlsZXJFbmFibGVkKGVuYWJsZWQpOworICAgICAgICBwcml2LT5wYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0UHJvZmlsZXJFbmFibGVkKGVuYWJsZWQpOwogI2Vs
c2UKICAgICAgICAgZ19tZXNzYWdlKCJQUk9QX0pBVkFTQ1JJUFRfUFJPRklMSU5HX0VOQUJMRUQg
aXMgbm90IHdvcmsgYmVjYXVzZSBvZiB0aGUgamF2YXNjcmlwdCBkZWJ1Z2dlciBpcyBkaXNhYmxl
ZFxuIik7CiAjZW5kaWYKQEAgLTM4Myw3ICszODMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBH
VgogICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfSkFWQVNDUklQVF9QUk9GSUxJTkdfRU5B
QkxFRDoKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wcm9m
aWxlckVuYWJsZWQoKSk7CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYt
PnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5wcm9maWxlckVuYWJsZWQoKSk7CiAjZWxzZQog
ICAgICAgICBnX21lc3NhZ2UoIlBST1BfSkFWQVNDUklQVF9QUk9GSUxJTkdfRU5BQkxFRCBpcyBu
b3Qgd29yayBiZWNhdXNlIG9mIHRoZSBqYXZhc2NyaXB0IGRlYnVnZ2VyIGlzIGRpc2FibGVkXG4i
KTsKICNlbmRpZgpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jf
c2hvdyhXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvcikKICAgICBpZiAoIXZpZXcpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c2hvdygpOworICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiB9
CiAKIC8qKgpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfaW5z
cGVjdF9ub2RlKFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9yLCBXZWJLaXRECiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0lOU1BFQ1RPUih3ZWJJbnNwZWN0b3IpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7CiAKLSAgICB3
ZWJJbnNwZWN0b3ItPnByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdChj
b3JlKG5vZGUpKTsKKyAgICB3ZWJJbnNwZWN0b3ItPnByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5pbnNwZWN0KGNvcmUobm9kZSkpOwogfQogCiAvKioKQEAgLTU0Niw3ICs1NDYsNyBA
QCB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2luc3BlY3RfY29vcmRpbmF0ZXMoV2ViS2l0V2Vi
SW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoZG9jdW1l
bnRQb2ludCk7CiAKICAgICBmcmFtZS5jb250ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQpOwotICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+aW5zcGVjdChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpOworICAgIHByaXYtPnBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0KHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KSk7CiB9CiAKIC8qKgpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0
b3JfY2xvc2UoV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IpCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0lOU1BFQ1RPUih3ZWJJbnNwZWN0b3IpKTsKIAogICAgIFdl
YktpdFdlYkluc3BlY3RvclByaXZhdGUqIHByaXYgPSB3ZWJJbnNwZWN0b3ItPnByaXY7Ci0gICAg
cHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jbG9zZSgpOworICAgIHByaXYtPnBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogfQogCiB2b2lkIHdlYmtpdF93ZWJf
aW5zcGVjdG9yX2V4ZWN1dGVfc2NyaXB0KFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9y
LCBsb25nIGNhbGxJZCwgY29uc3QgZ2NoYXIqIHNjcmlwdCkKQEAgLTU3MSw1ICs1NzEsNSBAQCB2
b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2V4ZWN1dGVfc2NyaXB0KFdlYktpdFdlYkluc3BlY3Rv
ciogd2ViSW5zcGVjdG9yLCBsb25nCiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCiAg
ICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYkluc3BlY3Rvci0+cHJpdjsK
LSAgICBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOworICAgIHByaXYtPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQppbmRleCBhMTRjODg1NDMxZTY1ZjY2NjQ4MjkxOWM5OGIxYjZkYzJmYjEzNzFiLi4z
MmE3MjcwN2Y5YmE2YWU5OTFmMDdmNjgyN2E0NjQ2OWMyNzY1NzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBA
IC0xNDUsMTEgKzE0NSwxMSBAQCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3Rv
ckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbgogICAgIFt3aW5kb3dD
b250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJvbnRl
bmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0gICAgT3du
UHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRy
KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xs
ZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9u
dGVuZFNldHRpbmdzKCkpKTsKKyAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV93ZWJWaWV3LCB3aW5kb3dDb250cm9s
bGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJv
bnRlbmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQu
Z2V0KCk7CiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JG
cm9udGVuZCA9IGFkb3B0TlMoW1tXZWJJbnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhG
cm9udGVuZENsaWVudDpmcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV93ZWJWaWV3IGlu
c3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwotICAgIG1f
ZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KGZyb250ZW5kQ2xpZW50LnJlbGVhc2UoKSk7CisgICAgbV9mcm9udGVuZFBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChzdGQ6Om1vdmUo
ZnJvbnRlbmRDbGllbnQpKTsKICAgICByZXR1cm4gdGhpczsKIH0KIApAQCAtNjkzLDcgKzY5Myw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nCiAKICAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29u
dHJvbGxlcikgewogICAgICAgICBpZiAoUGFnZSogaW5zcGVjdGVkUGFnZSA9IFtfaW5zcGVjdGVk
V2ViVmlldy5nZXQoKSBwYWdlXSkKLSAgICAgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgICAgICAgICBpbnNwZWN0
ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAg
fQogCiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IHByb3RlY3Qo
c2VsZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5z
cGVjdG9yLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5t
bQppbmRleCBlMzFiYTljNTQ2ODFkYjdjODAwNmFjM2JiYjhkMjE1ODZmYzY0NWE0Li5lNGU5YWFk
NmViZTBmNDlhZmE2YmQ5MTdmMTg2MDk4NWI3NjliOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubW0KQEAgLTY2LDcgKzY2LDcgQEAgTlNTdHJp
bmcgKldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlID0gQCJXZWJJbnNwZWN0b3JE
aWRTdG9wU2VhcmNoaW5nRm8KIC0gKHZvaWQpc2hvd1dpbmRvdwogewogICAgIGlmIChQYWdlKiBw
YWdlID0gY29yZShfd2ViVmlldykpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+c2hvdygpOworICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwog
fQogCiAtICh2b2lkKXNob3c6KGlkKXNlbmRlcgpAQCAtMTQyLDcgKzE0Miw3IEBAIE5TU3RyaW5n
ICpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSA9IEAiV2ViSW5zcGVjdG9yRGlk
U3RvcFNlYXJjaGluZ0ZvCiAtIChCT09MKWlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQKIHsK
ICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpKQotICAgICAgICByZXR1cm4gcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wcm9maWxlckVuYWJsZWQoKTsKKyAgICAgICAgcmV0
dXJuIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5wcm9maWxlckVuYWJsZWQoKTsKICAgICBy
ZXR1cm4gTk87CiB9CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBOU1N0cmluZyAqV2ViSW5zcGVjdG9y
RGlkU3RvcFNlYXJjaGluZ0Zvck5vZGUgPSBAIldlYkluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdG
bwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CisgICAgcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNldFByb2ZpbGVyRW5hYmxlZChlbmFibGVkKTsKIH0KIAogLSAo
Qk9PTClpc1RpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZApAQCAtMTY5LDcgKzE2OSw3IEBAIE5TU3Ry
aW5nICpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSA9IEAiV2ViSW5zcGVjdG9y
RGlkU3RvcFNlYXJjaGluZ0ZvCiAtICh2b2lkKWNsb3NlOihpZClzZW5kZXIgCiB7CiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5jbG9zZSgpOworICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
Y2xvc2UoKTsKIH0KIAogLSAodm9pZClhdHRhY2g6KGlkKXNlbmRlcgpAQCAtMTg1LDcgKzE4NSw3
IEBAIE5TU3RyaW5nICpXZWJJbnNwZWN0b3JEaWRTdG9wU2VhcmNoaW5nRm9yTm9kZSA9IEAiV2Vi
SW5zcGVjdG9yRGlkU3RvcFNlYXJjaGluZ0ZvCiAtICh2b2lkKWV2YWx1YXRlSW5Gcm9udGVuZDoo
aWQpc2VuZGVyIGNhbGxJZDoobG9uZyljYWxsSWQgc2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAog
ewogICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShfd2ViVmlldykpCi0gICAgICAgIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSWQsIHNj
cmlwdCk7CisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5ldmFsdWF0ZUZvclRl
c3RJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKIH0KIAogLSAodm9pZClzZXRGcm9udGVuZDoo
V2ViSW5zcGVjdG9yRnJvbnRlbmQgKilmcm9udGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRlci5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0ZXIubW0KaW5kZXggMmJhNTlkNjNlMzIz
ZjkwNTViNzNkNmUyNmRjNDY4MzFlOWYzZjRiNy4uZDI5NmY3ODNiODE1MDA5MDg3M2QxOGU4Njcy
MmY4YzUyNGUyZjkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L1dlYk5vZGVIaWdobGlnaHRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvV2ViTm9kZUhpZ2hsaWdodGVyLm1tCkBAIC02Niw3ICs2Niw3IEBACiAgICAgICAgIHJldHVy
bjsgLy8gU2tpcCB0aGUgaGlnaGxpZ2h0IGlmIHdlIGhhdmUgbm8gd2luZG93IChlLmcuIGhpZGRl
biB0YWIpLgogICAgIAogICAgIGlmICghX2N1cnJlbnRIaWdobGlnaHQpIHsKLSAgICAgICAgX2N1
cnJlbnRIaWdobGlnaHQgPSBbW1dlYk5vZGVIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoVGFyZ2V0
Vmlldzp2aWV3IGluc3BlY3RvckNvbnRyb2xsZXI6W19pbnNwZWN0ZWRXZWJWaWV3IHBhZ2VdLT5p
bnNwZWN0b3JDb250cm9sbGVyKCldOworICAgICAgICBfY3VycmVudEhpZ2hsaWdodCA9IFtbV2Vi
Tm9kZUhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhUYXJnZXRWaWV3OnZpZXcgaW5zcGVjdG9yQ29u
dHJvbGxlcjomW19pbnNwZWN0ZWRXZWJWaWV3IHBhZ2VdLT5pbnNwZWN0b3JDb250cm9sbGVyKCld
OwogICAgICAgICBbX2N1cnJlbnRIaWdobGlnaHQgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgICAg
IFtfY3VycmVudEhpZ2hsaWdodCBhdHRhY2hdOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApp
bmRleCBlZjUyMmEyMDdiNGYzZjc3NzFkMWUxZWIzY2IxMWU3NzJmYjkzN2UyLi5mMjJiNzA5N2Nm
YTRiOGJlZjAzYTRhODlmZGY2N2NmYTI2NDA3NDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE3MCw5
ICsxNzAsOSBAQCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3Rv
ckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKElucwogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIE93
blB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gZnJvbnRlbmRDbGllbnQgPSBhZG9wdFB0
cihuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2lu
c3BlY3RlZFdlYlZpZXdId25kLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRl
bmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKSk7CisgICAgYXV0
byBmcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgZnJvbnRl
bmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0
ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xp
ZW50LmdldCgpOwotICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KGZyb250ZW5kQ2xpZW50LnJlbGVhc2UoKSk7CisgICAg
bV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChzdGQ6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKICAgICBtX2Zyb250ZW5kSHduZCA9
IGZyb250ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsKIH0KQEAgLTIyNCw3ICsyMjQsNyBAQCB2
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKIH0KIAogV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGlu
c3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5zcGVjdGVkV2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRI
d25kLCBjb25zdCBDT01QdHI8V2ViVmlldz4mIGZyb250ZW5kV2ViVmlldywgSFdORCBmcm9udGVu
ZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCwgUGFzc093
blB0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsKGluc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCAgY29y
ZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpLCBzZXR0aW5ncykKKyAgICA6IEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwoJmluc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLCAgY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpLCBzZXR0aW5ncykKICAgICAsIG1f
aW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0ZWRXZWJWaWV3KQogICAgICwgbV9pbnNwZWN0ZWRXZWJW
aWV3SHduZChpbnNwZWN0ZWRXZWJWaWV3SHduZCkKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGlu
c3BlY3RvckNsaWVudCkKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yVmlldyhib29sIG5vdGlmeUluc3BlY3RvckNvbnRy
bwogICAgIGNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsKIAogICAgIGlmIChub3Rp
ZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0gICAgICAgIG1faW5zcGVjdGVkV2ViVmlldy0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgICAg
ICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nv
bm5lY3RGcm9udGVuZCgpOwogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+dXBkYXRlSGlnaGxp
Z2h0KCk7CiAgICAgfQogICAgIDo6RGVzdHJveVdpbmRvdyhtX2Zyb250ZW5kSHduZCk7CkBAIC00
NzIsNyArNDcyLDcgQEAgTFJFU1VMVCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6b25TaXpl
KFdQQVJBTSwgTFBBUkFNKQogTFJFU1VMVCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6b25D
bG9zZShXUEFSQU0sIExQQVJBTSkKIHsKICAgICA6OlNob3dXaW5kb3cobV9mcm9udGVuZEh3bmQs
IFNXX0hJREUpOwotICAgIG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmNsb3NlKCk7CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5jbG9zZSgpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViSW5zcGVjdG9yLmNwcAppbmRleCA4YmZhN2U1M2EwNDc5MDI0NGVhNjI4MDNhNzI1ZTQxNzQ2
YzUwN2I4Li5mZDU4ZmQ2YTA4NDU1NzcwMWQwMGQ2NjQ3M2M0YmQ1YTNhZTY5ZTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkluc3BlY3Rvci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6c2hvdygpCiB7CiAgICAgaWYgKG1fd2ViVmlldykK
ICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2UoKSkKLSAgICAgICAgICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgICAgICAgICAgcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAt
MTMxLDcgKzEzMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9yOjpj
bG9zZSgpCiB7CiAgICAgaWYgKG1fd2ViVmlldykKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X3dlYlZpZXctPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+Y2xvc2UoKTsKKyAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5jbG9z
ZSgpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yMTksNyArMjE5LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OmlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQoQk9PTCogaXNQcm8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBTX09LOwogCi0g
ICAgKmlzUHJvZmlsaW5nRW5hYmxlZCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cHJv
ZmlsZXJFbmFibGVkKCk7CisgICAgKmlzUHJvZmlsaW5nRW5hYmxlZCA9IHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5wcm9maWxlckVuYWJsZWQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApA
QCAtMjMyLDcgKzIzMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9y
OjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChCT09MIGVuYWJsCiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm4gU19PSzsKIAotICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+c2V0UHJvZmlsZXJFbmFibGVkKGVuYWJsZWQpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CiAKICAgICByZXR1cm4gU19PSzsK
IH0KQEAgLTI0Nyw3ICsyNDcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFICBXZWJJbnNw
ZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZChVTE9ORyBjYWxsSWQsIEJTVFIgYgogICAgICAgICBy
ZXR1cm4gU19PSzsKIAogICAgIFN0cmluZyBzY3JpcHQoYlNjcmlwdCwgU3lzU3RyaW5nTGVuKGJT
Y3JpcHQpKTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQoY2FsbElkLCBzY3JpcHQpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNhbGxJZCwgc2NyaXB0KTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hs
aWdodC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNwcAppbmRleCAw
NTdkZTVhMTRjMWI0MDM2ODdlOGU4MTNjNGM0MmU3MjBkNWJjMmQ0Li45NDNlMzg3Nzg1ZDQ4MTJj
NmUzODA5MjM4NzY3Mjc5ZDdmN2FhNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJOb2RlSGlnaGxpZ2h0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxp
Z2h0LmNwcApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQgV2ViTm9kZUhpZ2hsaWdodDo6dXBkYXRl
KCkKIAogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KGhkYy5nZXQoKSk7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5kcmF3SGlnaGxpZ2h0KGNvbnRleHQpOwotI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5kcmF3SGlnaGxpZ2h0KGNvbnRleHQpOworI2VuZGlmCiAKICAgICBCTEVOREZVTkNUSU9O
IGJmOwogICAgIGJmLkJsZW5kT3AgPSBBQ19TUkNfT1ZFUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcAppbmRleCA0MmZhZmUwMGYxODU1YWJiYWZmYTk4YjE0MTEwYTEzODViMDRjZWI1Li43
NmUwYjhkNDg1MTE5OGRiNjI3ZGViNzk2N2Q0OGExNmMxOTUzMDIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OmRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikKIAogdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6OmRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQog
ewotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kcmF3SGln
aGxpZ2h0KGNvbnRleHQpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmRyYXdIaWdobGlnaHQoY29udGV4dCk7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VFdmVudCYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCmluZGV4IGQxZjUxZGQ0ZjU4
ZGUwYzViMDFhMTE3ZjY1NGJjNDE3ZWFiZjc4ZTQuLjA1OGYwZmYxMGJiMmU3NGU3OGJjNGFkYTRj
YmVlZGM1OGY1YjA2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudChXZWJQYWdlKiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKQotICAg
IDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChwYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIGFkb3B0UHRyKG5ldyBT
ZXR0aW5ncygpKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJnBhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2Uo
KSwgYWRvcHRQdHIobmV3IFNldHRpbmdzKCkpKQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CkBA
IC01Nyw3ICs1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmJyaW5nVG9G
cm9udCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KCkK
IHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29u
bmVjdEZyb250ZW5kKCk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKCk7CiAgICAgbV9wYWdlLT5pbnNwZWN0b3IoKS0+ZGlk
Q2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcAppbmRleCA5YzllY2I1YjZmYmFjNTZmOTJhOGQ4ODk0MWFjZDhkNWQ1
YWY2OWI2Li40MzA1MjJiYmRhOWUzOTgxZjRjZDUzMGE3NDFlZTVlYmI5MWUzMGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApA
QCAtODksOSArODksOSBAQCBXZWJQYWdlKiBXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBh
Z2UoKQogICAgIG1faW5zcGVjdG9yUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlBhZ2Uo
aW5zcGVjdG9yUGFnZUlEKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKIAotICAgIE93
blB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gZnJvbnRlbmRDbGllbnQgPSBhZG9wdFB0
cihuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9wYWdlLCBtX2luc3BlY3RvclBhZ2Up
KTsKKyAgICBhdXRvIGZyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudD4obV9wYWdlLCBtX2luc3BlY3RvclBhZ2UpOwogICAgIG1fZnJvbnRl
bmRDbGllbnQgPSBmcm9udGVuZENsaWVudC5nZXQoKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmNvcmVQ
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChz
dGQ6Om1vdmUoZnJvbnRlbmRDbGllbnQpKTsKICAgICByZXR1cm4gbV9pbnNwZWN0b3JQYWdlOwog
fQogCkBAIC0xNjIsMTIgKzE2MiwxMiBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c2V0VG9vbGJhckhl
aWdodCh1bnNpZ25lZCBoZWlnaHQpCiAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yIG1lc3NhZ2Vz
CiB2b2lkIFdlYkluc3BlY3Rvcjo6c2hvdygpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9z
ZSgpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNs
b3NlKCk7CisgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY2xv
c2UoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OmRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwp
CkBAIC0yMDIsMTkgKzIwMiwxOSBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6ZGV0YWNoZWQoKQogCiB2
b2lkIFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVTY3JpcHRGb3JUZXN0KGxvbmcgY2FsbElELCBjb25z
dCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjYWxsSUQsIHNjcmlwdCk7Cisg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChjYWxsSUQsIHNjcmlwdCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpz
aG93Q29uc29sZSgpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zaG93KCk7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAgICAgIG1fZnJvbnRl
bmRDbGllbnQtPnNob3dDb25zb2xlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzaG93UmVz
b3VyY2VzKCkKIHsKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+c2hvdygpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNob3coKTsKICAgICBpZiAobV9mcm9udGVuZENsaWVudCkKICAgICAgICAgbV9mcm9udGVuZENs
aWVudC0+c2hvd1Jlc291cmNlcygpOwogfQpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yOjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKICAgICBpZiAobV9mcm9udGVuZENsaWVudCkKICAg
ICAgICAgbV9mcm9udGVuZENsaWVudC0+c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5j
b3JlRnJhbWUoKSk7CiB9CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogdm9pZCBXZWJJbnNwZWN0
b3I6OnN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5z
aG93KCk7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAgICAgIG1fZnJvbnRlbmRDbGll
bnQtPnNldERlYnVnZ2luZ0VuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKQEAgLTI0Miw3ICsyNDIsNyBA
QCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RhcnRKYXZhU2NyaXB0RGVidWdnaW5nKCkKIHZvaWQgV2Vi
SW5zcGVjdG9yOjpzdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpCiB7CiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCi0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zaG93KCk7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAgICAgIG1fZnJvbnRl
bmRDbGllbnQtPnNldERlYnVnZ2luZ0VuYWJsZWQoZmFsc2UpOwogI2VuZGlmCkBAIC0yNTEsMTgg
KzI1MSwxOCBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEphdmFTY3JpcHREZWJ1Z2dpbmcoKQog
dm9pZCBXZWJJbnNwZWN0b3I6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIG1fcGFnZS0+Y29y
ZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKICAgICBpZiAoIW1fZnJvbnRl
bmRDbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5zZXRQcm9maWxlckVuYWJsZWQoZW5hYmxlZCk7CisgICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0UHJvZmlsZXJFbmFibGVk
KGVuYWJsZWQpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzdGFydEphdmFTY3Jp
cHRQcm9maWxpbmcoKQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2hvdygpOwogICAgIGlmICht
X2Zyb250ZW5kQ2xpZW50KQogICAgICAgICBtX2Zyb250ZW5kQ2xpZW50LT5zdGFydFByb2ZpbGlu
Z0phdmFTY3JpcHQoKTsKICNlbmRpZgpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yOjpzdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKQogdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BK
YXZhU2NyaXB0UHJvZmlsaW5nKCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOwor
ICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKICAg
ICBpZiAobV9mcm9udGVuZENsaWVudCkKICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c3RvcFBy
b2ZpbGluZ0phdmFTY3JpcHQoKTsKICNlbmRpZgpAQCAtMjc5LDE0ICsyNzksMTQgQEAgdm9pZCBX
ZWJJbnNwZWN0b3I6OnN0b3BKYXZhU2NyaXB0UHJvZmlsaW5nKCkKIAogdm9pZCBXZWJJbnNwZWN0
b3I6OnN0YXJ0UGFnZVByb2ZpbGluZygpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zaG93KCk7CiAgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCiAgICAg
ICAgIG1fZnJvbnRlbmRDbGllbnQtPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BQYWdlUHJvZmlsaW5nKCkKIHsKLSAgICBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIG1fcGFn
ZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNob3coKTsKICAgICBpZiAobV9m
cm9udGVuZENsaWVudCkKICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+c2V0VGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkKGZhbHNlKTsKIH0KQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFdlYkluc3Bl
Y3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IAogdm9pZCBXZWJJbnNwZWN0b3I6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKKyAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3Nh
Z2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVG
cm9udGVuZENvbm5lY3RlZCgpCkBAIC0zMTksMTQgKzMxOSwxNCBAQCB2b2lkIFdlYkluc3BlY3Rv
cjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogICAgIC8vIFN3aXRjaGluZyBiZXR3ZWVuIGlu
LXByb2Nlc3MgYW5kIHJlbW90ZSBpbnNwZWN0b3JzIGlzbid0IHN1cHBvcnRlZCB5ZXQuCiAgICAg
QVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwogICAgIAotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwp
OworICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RG
cm9udGVuZChtX2Zyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9yZW1vdGVGcm9udGVuZENvbm5lY3Rl
ZCA9IHRydWU7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5l
Y3RlZCgpCiB7CiAgICAgQVNTRVJUKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwotICAgIG1f
cGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRl
bmQoKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNj
b25uZWN0RnJvbnRlbmQoKTsKICAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7
CiB9CiAjZW5kaWYK
</data>
<flag name="review"
          id="245336"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="245338"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>