<?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>146862</bug_id>
          
          <creation_ts>2015-07-10 17:04:54 -0700</creation_ts>
          <short_desc>Adopt AVPlayerLayerView</short_desc>
          <delta_ts>2017-05-01 15:38:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>171514</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1108813</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-10 17:04:54 -0700</bug_when>
    <thetext>Adopt AVPlayerLayerView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108822</commentid>
    <comment_count>1</comment_count>
      <attachid>256628</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-10 17:22:31 -0700</bug_when>
    <thetext>Created attachment 256628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109397</commentid>
    <comment_count>2</comment_count>
      <attachid>256778</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-14 10:53:59 -0700</bug_when>
    <thetext>Created attachment 256778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109399</commentid>
    <comment_count>3</comment_count>
      <attachid>256779</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-14 11:18:56 -0700</bug_when>
    <thetext>Created attachment 256779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109462</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-14 14:33:00 -0700</bug_when>
    <thetext>rdar://problem/21661808</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109486</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-14 15:13:29 -0700</bug_when>
    <thetext>Need to add derivation of AVPictureInPicturePlayerLayerView and implement -pictureInPicturePlayerLayerView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110593</commentid>
    <comment_count>6</comment_count>
      <attachid>257085</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 03:24:54 -0700</bug_when>
    <thetext>Created attachment 257085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110594</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 03:26:25 -0700</bug_when>
    <thetext>Attachment 257085 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:580:  Should not have spaces around = in property attributes.  [whitespace/property] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:589:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 10 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>1110660</commentid>
    <comment_count>8</comment_count>
      <attachid>257085</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-07-20 11:02:01 -0700</bug_when>
    <thetext>Comment on attachment 257085
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:583
&gt; +@property (nonatomic, copy, nullable) NSDictionary *pixelBufferAttributes;

Is this necessary? I don&apos;t see where it&apos;s used in this patch.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:750
&gt; +    static Class theClass = nil;
&gt; +    if (!theClass) {
&gt; +        theClass = objc_allocateClassPair(getAVPictureInPicturePlayerLayerViewClass(), &quot;WebAVPictureInPicturePlayerLayerView&quot;, 0);

If this method is ever called simultaneously on different threads (i.e., web thread vs. main thread), there&apos;s a possibility of a race condition. Perhaps dispatch_once() here instead?

&gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:848
&gt; +    static Class classWebAVPlayerLayerView = nil;
&gt; +    if (!classWebAVPlayerLayerView) {
&gt; +        classWebAVPlayerLayerView = objc_allocateClassPair(getAVPlayerLayerViewClass(), &quot;WebAVPlayerLayerView&quot;, 0);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110718</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 12:47:31 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 257085 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=257085&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:583
&gt; &gt; +@property (nonatomic, copy, nullable) NSDictionary *pixelBufferAttributes;
&gt; 
&gt; Is this necessary? I don&apos;t see where it&apos;s used in this patch.

It is necessary to look like an AVPlayerLayer, it is accessed by AVPlayerLayerView in AVKit.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:750
&gt; &gt; +    static Class theClass = nil;
&gt; &gt; +    if (!theClass) {
&gt; &gt; +        theClass = objc_allocateClassPair(getAVPictureInPicturePlayerLayerViewClass(), &quot;WebAVPictureInPicturePlayerLayerView&quot;, 0);
&gt; 
&gt; If this method is ever called simultaneously on different threads (i.e., web
&gt; thread vs. main thread), there&apos;s a possibility of a race condition. Perhaps
&gt; dispatch_once() here instead?

WebVideoFullscreenInterfaceAVKit is only ever accessed from the main thread. All the jumping between threads happens in WebVideoFullscreenControllerAVKit.

Yes, dispatch_once is the right way to initialize these. I&apos;ll change that.

&gt; 
&gt; &gt; Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:848
&gt; &gt; +    static Class classWebAVPlayerLayerView = nil;
&gt; &gt; +    if (!classWebAVPlayerLayerView) {
&gt; &gt; +        classWebAVPlayerLayerView = objc_allocateClassPair(getAVPlayerLayerViewClass(), &quot;WebAVPlayerLayerView&quot;, 0);
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110731</commentid>
    <comment_count>10</comment_count>
      <attachid>257085</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-07-20 13:18:14 -0700</bug_when>
    <thetext>Comment on attachment 257085
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:328
&gt; +    model-&gt;setLayerHostView(view.get());

Why the .get(), since setLayerHostView takes a RetainPtr&lt;WebLayerHostView&gt;&amp;&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110732</commentid>
    <comment_count>11</comment_count>
      <attachid>257120</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 13:18:31 -0700</bug_when>
    <thetext>Created attachment 257120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110733</commentid>
    <comment_count>12</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 13:19:24 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 257085 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=257085&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm:328
&gt; &gt; +    model-&gt;setLayerHostView(view.get());
&gt; 
&gt; Why the .get(), since setLayerHostView takes a RetainPtr&lt;WebLayerHostView&gt;&amp;&amp;?

I&apos;ll remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110735</commentid>
    <comment_count>13</comment_count>
      <attachid>257121</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 13:22:18 -0700</bug_when>
    <thetext>Created attachment 257121
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110751</commentid>
    <comment_count>14</comment_count>
      <attachid>257125</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 14:00:44 -0700</bug_when>
    <thetext>Created attachment 257125
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110762</commentid>
    <comment_count>15</comment_count>
      <attachid>257127</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 14:35:17 -0700</bug_when>
    <thetext>Created attachment 257127
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110774</commentid>
    <comment_count>16</comment_count>
      <attachid>257127</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 15:07:24 -0700</bug_when>
    <thetext>Comment on attachment 257127
Patch for landing.

Rejecting attachment 257127 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 257127, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
rce/WebCore/platform/spi/cocoa/AVKitSPI.h
patching file Source/WebCore/platform/spi/cocoa/QuartzCoreSPI.h
Hunk #2 succeeded at 135 (offset 9 lines).
patching file Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.h
patching file Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm
patching file Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/5350159965749248</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110779</commentid>
    <comment_count>17</comment_count>
      <attachid>257131</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 15:22:59 -0700</bug_when>
    <thetext>Created attachment 257131
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110781</commentid>
    <comment_count>18</comment_count>
      <attachid>257131</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 15:25:14 -0700</bug_when>
    <thetext>Comment on attachment 257131
Patch for landing.

Rejecting attachment 257131 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 257131, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
creenModelVideoElement.mm
patching file Source/WebCore/platform/spi/cocoa/AVKitSPI.h
patching file Source/WebCore/platform/spi/cocoa/QuartzCoreSPI.h
patching file Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.h
patching file Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm
patching file Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/5774197791916032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110788</commentid>
    <comment_count>19</comment_count>
      <attachid>257134</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2015-07-20 15:34:46 -0700</bug_when>
    <thetext>Created attachment 257134
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110808</commentid>
    <comment_count>20</comment_count>
      <attachid>257134</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 16:29:08 -0700</bug_when>
    <thetext>Comment on attachment 257134
Patch for landing.

Clearing flags on attachment: 257134

Committed r187044: &lt;http://trac.webkit.org/changeset/187044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110809</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-20 16:29:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256628</attachid>
            <date>2015-07-10 17:22:31 -0700</date>
            <delta_ts>2015-07-14 10:53:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146862-20150710172129.patch</filename>
            <type>text/plain</type>
            <size>18370</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyZjQ5NjFmYWNiYzc2
OWRmYTVhMTBlNTM0ZjYzYjc3NmIzMmZkZC4uMTUwYTVmMDhjMjMyYTNiMzRlOTE1NWJlZDZlMDlm
OWY4ZTYyMzVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA3LTEwICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVlBsYXllckxh
eWVyVmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkb3B0aW5nIEFWUGxheWVyTGF5ZXJWaWV3IHJlcXVpcmVzIGRlcml2aW5nIGZyb20gQVZQbGF5
ZXJMYXllclZpZXcgYW5kIHN1cHBseWluZyBhIGN1c3RvbSBiYWNraW5nIGxheWVyLiBBVktpdC5m
cmFtZXdvcmsgaXMgbG9hZGVkCisgICAgICAgIGF0IHJ1bnRpbWUsIHNvIGFuIEFWUGxheWVyTGF5
ZXJWaWV3IGRlcml2ZWQgY2xhc3MgY2FuJ3QgYmUgZGVsY2FyZWQgc3RhdGljYWxseS4gSW5zdGVh
ZCwgdGhpcyBjaGFuZ2UgdXNlcyB0aGUgb2JjIHJ1bnRpbWUgaW50ZXJmYWNlIHRvIAorICAgICAg
ICByZWdpc3RlciBhIG5ldyBvYmpjIGNsYXNzICJXZWJBVlBsYXllckxheWVyVmlldyIgdGhhdCBk
ZXJpdmVzIGZyb20gQVZQbGF5ZXJMYXllclZpZXcsIGFuZCB0byBhZGQgdGhlIG5lY2Vzc2FyeSBv
YmpjIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgQVZLaXQncyBBVlZpZGVvTGF5
ZXIgcHJvdG9jb2wgaGFzIGJlZW4gcmVwbGFjZWQgYnkgImR1Y2sgdHlwaW5nIiB0byBBVlBsYXll
ckxheWVyLiBUaGF0IGlzLCBXZWJBVlBsYXllckxheWVyIGxvb2tzIGxpa2UgYW5kIGFjdHMgbGlr
ZSBhbiBBVlBsYXllckxheWVyLgorICAgICAgICBTbywgV2ViQVZWaWRlb0xheWVyIGlzIHJlbmFt
ZWQgdG8gV2ViQVZQbGF5ZXJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJM
YXllciB2aWRlb0xheWVyXSk6IFJlbmFtZWQgZnJvbSBXZWJBVlZpZGVvTGF5ZXIuCisgICAgICAg
ICgtW1dlYkFWUGxheWVyTGF5ZXIgaW5pdF0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXll
ckxheWVyIHNldFZpZGVvR3Jhdml0eTpdKTogcmVwbGFjZXMgc2V0VmlkZW9MYXllckdyYXZpdHku
CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSk6IHJlcGxhY2VzIHZp
ZGVvTGF5ZXJHcmF2aXR5LgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFz
cyk6IE92ZXJyaWRlcyArW1VJVmlldyBsYXllckNsYXNzXS4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIpOiBPdmVycmlkZXMgLVtBVlBsYXllckxheWVyVmll
dyBwbGF5ZXJDb250cm9sbGVyXSAKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFBs
YXllckNvbnRyb2xsZXIpOiBPdmVycmlkZXMgLVtBVlBsYXllckxheWVyVmlldyBzZXRQbGF5ZXJD
b250cm9sbGVyOl0KKyAgICAgICAgKGdldFdlYkFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOiBSdW50
aW1lIHJlZ2lzdHJhdGlvbiBvZiBXZWJBVlBsYXllckxheWVyVmlldy4KKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKTogUmVuYW1l
IG1fdmlkZW9MYXllciB0byBtX3BsYXllckxheWVyIGFuZCB1c2UgbV9wbGF5ZXJMYXllclZpZXcu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2Ny
ZWVuKTogZGl0dG8KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
bnRlckZ1bGxzY3JlZW4pOiBkaXR0bworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKTogZGl0dG8KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbik6IGRpdHRvCisgICAgICAgIChX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUp
OiBkaXR0bworICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9MYXllcl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgaW5pdF0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdyYXZpdHk6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0eV0pOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oOiBSZW1vdmUgdW51c2VkIFNQSS4K
KwogMjAxNS0wNy0wOSAgTWF0dGhldyBEYWl0ZXIgIDxtZGFpdGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbXBsZW1lbnRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc2VjdGlvbiBvZiBlbnVtZXJhdGVE
ZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IDllN2RmNmY3N2IwYTMwZjZi
YWZmZTRmN2Q0ZjA1NWYyN2UxOTRjNzMuLjcwYmRkZGNjY2QxYTU2ZDQ4OWYyZTM3OGE1NTQwZTNk
YTgzOWU3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC00NSw4ICs0NSw5IEBA
IE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgVUlXaW5kb3c7CiBPQkpD
X0NMQVNTIFVJVmlldzsKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViQVZWaWRl
b0xheWVyOworT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyOwogT0JKQ19DTEFTUyBXZWJDQUxh
eWVySG9zdFdyYXBwZXI7CitPQkpDX0NMQVNTIEFWUGxheWVyTGF5ZXJWaWV3OwogCiBuYW1lc3Bh
Y2UgV1RGIHsKIGNsYXNzIFN0cmluZzsKQEAgLTEzNCw3ICsxMzUsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwog
ICAgIFJldGFpblB0cjxBVlBsYXllclZpZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRy
PFdlYkFWVmlkZW9MYXllcj4gbV92aWRlb0xheWVyQ29udGFpbmVyOworICAgIFJldGFpblB0cjxX
ZWJBVlBsYXllckxheWVyPiBtX3BsYXllckxheWVyOwogICAgIFJldGFpblB0cjxXZWJDQUxheWVy
SG9zdFdyYXBwZXI+IG1fbGF5ZXJIb3N0V3JhcHBlcjsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBXZWJWaWRlb0Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxs
cHRyIH07CkBAIC0xNDQsNiArMTQ1LDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxVSVZp
ZXdDb250cm9sbGVyPiBtX3ZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxVSVZpZXc+IG1f
cGFyZW50VmlldzsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fcGFyZW50V2luZG93OworICAg
IFJldGFpblB0cjxBVlBsYXllckxheWVyVmlldz4gbV9wbGF5ZXJMYXllclZpZXc7CiAgICAgSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKICAgICBzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2s7CiAgICAgYm9vbCBtX2Fs
bG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KaW5kZXggNzRiMWMxOTk1MTFjNDk2M2FkZTE3MzI2NDNjZmZjZjk0MTQ4NjFj
ZS4uYmFlODU2YzI1YzA2NGIwMjg1MzAzYmMwNTI4ZmUyNGFhNTk5OTJmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWwuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlRpbWUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTAsMTEgKzUxLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZG
b3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplLCBOU1N0cmluZyAqKQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVj
dCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsLCBOU1N0cmluZyAqKQogCiBTT0ZUX0xJTktfRlJB
TUVXT1JLKEFWS2l0KQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckNvbnRyb2xsZXIp
CiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyVmlld0NvbnRyb2xsZXIpCiBTT0ZUX0xJ
TktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1pbmcpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFW
UGxheWVyTGF5ZXJWaWV3KQogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5L
X0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQpAQCAtNjQyLDI3ICs2NDcsMjggQEAgc3RhdGlj
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBj
b252ZXJ0VG9FeGl0RnVsbFMKIH0KIEBlbmQKIAotQGludGVyZmFjZSBXZWJBVlZpZGVvTGF5ZXIg
OiBDQUxheWVyIDxBVlZpZGVvTGF5ZXI+Ci0rKFdlYkFWVmlkZW9MYXllciAqKXZpZGVvTGF5ZXI7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jh
dml0eTsKK0BpbnRlcmZhY2UgV2ViQVZQbGF5ZXJMYXllciA6IENBTGF5ZXIKKysoV2ViQVZQbGF5
ZXJMYXllciAqKXZpZGVvTGF5ZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0
cmluZyAqdmlkZW9HcmF2aXR5OwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlciA9IGlzUmVh
ZHlGb3JEaXNwbGF5KSBCT09MIHJlYWR5Rm9yRGlzcGxheTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBDR1JlY3QgdmlkZW9SZWN0OwogLSAodm9pZClzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyOwogLSAodm9pZClzZXRQ
bGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgQ0FMYXllciogdmlkZW9TdWJsYXllcjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24g
V2ViQVZWaWRlb0xheWVyCitAaW1wbGVtZW50YXRpb24gV2ViQVZQbGF5ZXJMYXllcgogewogICAg
IFJldGFpblB0cjxXZWJBVlBsYXllckNvbnRyb2xsZXI+IF9hdlBsYXllckNvbnRyb2xsZXI7CiAg
ICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xsZXI+IF9hdlBsYXllclZpZXdDb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBfdmlkZW9TdWJsYXllcjsKLSAgICBBVlZpZGVv
TGF5ZXJHcmF2aXR5IF92aWRlb0xheWVyR3Jhdml0eTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IF92aWRlb0dyYXZpdHk7CiB9CiAKLSsoV2ViQVZWaWRlb0xheWVyICopdmlkZW9MYXllcgorKyhX
ZWJBVlBsYXllckxheWVyICopdmlkZW9MYXllcgogewotICAgIHJldHVybiBbW1tXZWJBVlZpZGVv
TGF5ZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbV2ViQVZQbGF5
ZXJMYXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdApAQCAtNjcwLDExICs2NzYsMTYgQEAgc3RhdGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFMKICAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmIChzZWxmKSB7CiAgICAgICAgIFtzZWxmIHNldE1h
c2tzVG9Cb3VuZHM6WUVTXTsKLSAgICAgICAgW3NlbGYgc2V0VmlkZW9MYXllckdyYXZpdHk6QVZW
aWRlb0xheWVyR3Jhdml0eVJlc2l6ZUFzcGVjdF07CisgICAgICAgIF92aWRlb0dyYXZpdHkgPSBn
ZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCk7CiAgICAgfQogICAgIHJldHVybiBz
ZWxmOwogfQogCistIChBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyCit7Cisg
ICAgcmV0dXJuIChBVlBsYXllckNvbnRyb2xsZXIgKilfYXZQbGF5ZXJDb250cm9sbGVyLmdldCgp
OworfQorCiAtICh2b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAq
KXBsYXllckNvbnRyb2xsZXIKIHsKICAgICBBU1NFUlQoIXBsYXllckNvbnRyb2xsZXIgfHwgW3Bs
YXllckNvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNsYXNz
XV0pOwpAQCAtNzA3LDE5ICs3MTgsMTkgQEAgc3RhdGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFMKICAgICB9
CiB9CiAKLS0gKHZvaWQpc2V0VmlkZW9MYXllckdyYXZpdHk6KEFWVmlkZW9MYXllckdyYXZpdHkp
dmlkZW9MYXllckdyYXZpdHkKKy0gKHZvaWQpc2V0VmlkZW9HcmF2aXR5OihOU1N0cmluZyAqKXZp
ZGVvR3Jhdml0eQogewotICAgIF92aWRlb0xheWVyR3Jhdml0eSA9IHZpZGVvTGF5ZXJHcmF2aXR5
OworICAgIF92aWRlb0dyYXZpdHkgPSB2aWRlb0dyYXZpdHk7CiAgICAgCiAgICAgaWYgKCFbX2F2
UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0pCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkNv
cmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSA9IFdlYkNv
cmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0g
ICAgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemUpCisg
ICAgaWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplKCkpCiAg
ICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9H
cmF2aXR5UmVzaXplOwotICAgIGlmICh2aWRlb0xheWVyR3Jhdml0eSA9PSBBVlZpZGVvTGF5ZXJH
cmF2aXR5UmVzaXplQXNwZWN0KQorICAgIGlmICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpKQogICAgICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBlbHNl
IGlmICh2aWRlb0xheWVyR3Jhdml0eSA9PSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0
RmlsbCkKKyAgICBlbHNlIGlmICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdEZpbGwoKSkKICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6OldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC03MjcsOSArNzM4LDkgQEAgc3RhdGlj
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBj
b252ZXJ0VG9FeGl0RnVsbFMKICAgICBbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KGdyYXZpdHkpOwogfQogCi0tIChBVlZpZGVvTGF5ZXJHcmF2aXR5
KXZpZGVvTGF5ZXJHcmF2aXR5CistIChOU1N0cmluZyAqKXZpZGVvR3Jhdml0eQogewotICAgIHJl
dHVybiBfdmlkZW9MYXllckdyYXZpdHk7CisgICAgcmV0dXJuIF92aWRlb0dyYXZpdHkuZ2V0KCk7
CiB9CiAKIC0gKHZvaWQpZW50ZXJQSVBNb2RlUmVkaXJlY3RpbmdWaWRlb1RvTGF5ZXI6KENBTGF5
ZXIgKilsYXllcgpAQCAtNzQ1LDYgKzc1Niw0MiBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwog
fQogQGVuZAogCitzdGF0aWMgQ0FMYXllciogV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFz
cyhpZCwgU0VMKQoreworICAgIHJldHVybiBbV2ViQVZQbGF5ZXJMYXllciBjbGFzc107Cit9CisK
K3N0YXRpYyBBVlBsYXllckNvbnRyb2xsZXIqIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXllckNv
bnRyb2xsZXIoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVy
TGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBsYXllckxheWVyID0g
KFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJdOworICAgIHJldHVy
biBbd2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXTsKK30KKworc3RhdGljIHZvaWQg
V2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlcihpZCBhU2VsZiwgU0VMLCBB
VlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIpCit7CisgICAgQVZQbGF5ZXJMYXll
clZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKndl
YkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxh
eWVyTGF5ZXJdOworICAgIFt3ZWJBVlBsYXllckxheWVyIHNldFBsYXllckNvbnRyb2xsZXI6IHBs
YXllckNvbnRyb2xsZXJdOworfQorCitAY2xhc3MgV2ViQVZQbGF5ZXJMYXllclZpZXc7CitzdGF0
aWMgQ2xhc3MgZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpOworc3RhdGljIENsYXNzIGNs
YXNzV2ViQVZQbGF5ZXJMYXllclZpZXcgPSBuaWw7CisKK3N0YXRpYyBDbGFzcyBnZXRXZWJBVlBs
YXllckxheWVyVmlld0NsYXNzKCkKK3sKKyAgICBpZiAoIWNsYXNzV2ViQVZQbGF5ZXJMYXllclZp
ZXcpIHsKKyAgICAgICAgY2xhc3NXZWJBVlBsYXllckxheWVyVmlldyA9IG9iamNfYWxsb2NhdGVD
bGFzc1BhaXIoZ2V0QVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZp
ZXciLCAwKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKGNsYXNzV2ViQVZQbGF5ZXJMYXllclZp
ZXcsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiksIChJTVApV2ViQVZQbGF5ZXJMYXll
clZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0
aG9kKGNsYXNzV2ViQVZQbGF5ZXJMYXllclZpZXcsIEBzZWxlY3RvcihwbGF5ZXJDb250cm9sbGVy
KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19wbGF5ZXJDb250cm9sbGVyLCAiQEA6Iik7Cisg
ICAgICAgIG9iamNfcmVnaXN0ZXJDbGFzc1BhaXIoY2xhc3NXZWJBVlBsYXllckxheWVyVmlldyk7
CisgICAgICAgIENsYXNzIG1ldGFDbGFzcyA9IG9iamNfZ2V0TWV0YUNsYXNzKCJXZWJBVlBsYXll
ckxheWVyVmlldyIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0
b3IobGF5ZXJDbGFzcyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcywgIkBA
OiIpOworICAgIH0KKyAgICByZXR1cm4gY2xhc3NXZWJBVlBsYXllckxheWVyVmlldzsKK30KKwog
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KCkKICAgICA6IG1fcGxheWVyQ29udHJvbGxlcihhZG9wdE5TKFtbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSkpCiB7CkBAIC04ODMsNyArOTMwLDcgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29s
IGVuYWJsZWQsIEV4dGVybmEKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tB
aXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZSA9IGxvY2FsaXplZERldmljZU5hbWU7CiAgICAgcGxh
eWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVybmFsUGxheWJhY2tUeXBl
OwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSA9IGVuYWJsZWQ7
Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKSBzZXRIaWRkZW46ZW5hYmxlZF07Cisg
ICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjplbmFibGVkXTsKIH0KIAogQGludGVyZmFj
ZSBVSVdpbmRvdyAoKQpAQCAtOTE5LDI4ICs5NjYsMjcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImIHZpZGVvTGF5
ZXIKICAgICBbbV9sYXllckhvc3RXcmFwcGVyIHNldE1vZGVsOm1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWxdOwogICAgIFttX2xheWVySG9zdFdyYXBwZXIgc2V0VmlkZW9TdWJsYXllcjptX3ZpZGVvTGF5
ZXIuZ2V0KCldOwogCi0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFWVmlkZW9MYXll
ciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhpZGRlbjpbbV9w
bGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAgIFttX3ZpZGVv
TGF5ZXJDb250YWluZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBwZXIuZ2V0KCld
OworICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdlYkFWUGxheWVyTGF5ZXJW
aWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRk
ZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKKyAgICAK
KyAgICBtX3BsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZp
ZXcgcGxheWVyTGF5ZXJdOworICAgIFttX3BsYXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6bV9s
YXllckhvc3RXcmFwcGVyLmdldCgpXTsKIAogICAgIENHU2l6ZSB2aWRlb1NpemUgPSBbbV9wbGF5
ZXJDb250cm9sbGVyIGNvbnRlbnREaW1lbnNpb25zXTsKICAgICBDR1JlY3QgdmlkZW9SZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCB2aWRlb1NpemUud2lkdGgsIHZpZGVvU2l6ZS5oZWlnaHQpOwotICAg
IFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9SZWN0OnZpZGVvUmVjdF07CisgICAgW21f
cGxheWVyTGF5ZXIgc2V0VmlkZW9SZWN0OnZpZGVvUmVjdF07CiAgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5
ZXJGcmFtZSh2aWRlb1JlY3QpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgaGFzIGJlZW4gZGVwcmVj
YXRlZCBzbyBpZ25vcmUgdGhlIHdhcm5pbmcgdW50aWwgd2UgcG9ydCBvdXIgY29kZSB0byB0aGUg
bmV3IEFQSS4KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBtX3BsYXll
clZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5z
dGFuY2UoKSBpbml0V2l0aFZpZGVvTGF5ZXI6bV92aWRlb0xheWVyQ29udGFpbmVyLmdldCgpXSk7
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisgICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdp
dGhQbGF5ZXJMYXllclZpZXc6bV9wbGF5ZXJMYXllclZpZXcuZ2V0KCldKTsKIAogICAgIFttX3Bs
YXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpOT107CiAgICAgW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9s
bGVyICopbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXREZWxlZ2F0ZTptX3BsYXllckNvbnRyb2xsZXIuZ2V0KCldOwogICAgIFttX3BsYXll
clZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazptX2FsbG93
c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107CiAKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVy
IHNldFBsYXllclZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCldOwor
ICAgIFttX3BsYXllckxheWVyIHNldFBsYXllclZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0Nv
bnRyb2xsZXIuZ2V0KCldOwogCiAgICAgaWYgKG1fdmlld0NvbnRyb2xsZXIpIHsKICAgICAgICAg
W21fdmlld0NvbnRyb2xsZXIgYWRkQ2hpbGRWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250
cm9sbGVyLmdldCgpXTsKQEAgLTk2OCw3ICsxMDE0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBtX2V4aXRSZXF1ZXN0ZWQg
PSBmYWxzZTsKICAgICBtX2VudGVyUmVxdWVzdGVkID0gdHJ1ZTsKIAotICAgIFttX3ZpZGVvTGF5
ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xvckNsYXNzKCkgYmxhY2tD
b2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29s
b3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNrQ29sb3JdXTsKICAgICBpZiAobW9kZSgpID09IEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUp
CiAgICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIGVsc2UgaWYgKG1vZGUoKSA9
PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKQEAg
LTEwMTcsOCArMTA2Myw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmV4aXRGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpCiAgICAgZWxzZQogICAg
ICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IGZpbmFsUmVjdDsKIAot
ICAgIGlmIChbbV92aWRlb0xheWVyQ29udGFpbmVyIHZpZGVvTGF5ZXJHcmF2aXR5XSAhPSBBVlZp
ZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQotICAgICAgICBbbV92aWRlb0xheWVyQ29udGFp
bmVyIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3Rd
OworICAgIGlmIChbbV9wbGF5ZXJMYXllciB2aWRlb0dyYXZpdHldICE9IGdldEFWTGF5ZXJWaWRl
b0dyYXZpdHlSZXNpemVBc3BlY3QoKSkKKyAgICAgICAgW21fcGxheWVyTGF5ZXIgc2V0VmlkZW9H
cmF2aXR5OmdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKV07CiAgICAgW1ttX3Bs
YXllclZpZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsKIAogICAgIGlmIChpc01v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGlj
dHVyZSkpIHsKQEAgLTEwMzcsNyArMTA4Myw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpCiAK
ICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICAgICAgICAgIFtDQVRyYW5z
YWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107Ci0gICAgICAgICAgICBbbV92aWRlb0xheWVy
Q29udGFpbmVyIHNldEJhY2tncm91bmRDb2xvcjpbW2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29s
b3JdIENHQ29sb3JdXTsKKyAgICAgICAgICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3Jv
dW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKICAgICAgICAgICAgIFtb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29s
b3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1p
dF07CiAKQEAgLTEwODEsMTUgKzExMjcsMTYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oKQogICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdOwogICAgIAogICAgIFttX3Zp
ZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFttX3ZpZGVvTGF5ZXJDb250YWlu
ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0
UGxheWVyVmlld0NvbnRyb2xsZXI6bmlsXTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgcmVtb3Zl
RnJvbVN1cGVydmlld107CisgICAgW21fcGxheWVyTGF5ZXIgc2V0UGxheWVyVmlld0NvbnRyb2xs
ZXI6bmlsXTsKICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVydmll
d107CiAKICAgICBbbV9sYXllckhvc3RXcmFwcGVyIHNldE1vZGVsOm51bGxwdHJdOwogCisgICAg
bV9wbGF5ZXJMYXllclZpZXcgPSBuaWw7CiAgICAgbV9sYXllckhvc3RXcmFwcGVyID0gbmlsOwog
ICAgIG1fdmlkZW9MYXllciA9IG5pbDsKLSAgICBtX3ZpZGVvTGF5ZXJDb250YWluZXIgPSBuaWw7
CisgICAgbV9wbGF5ZXJMYXllciA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0g
bmlsOwogICAgIG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVy
ID0gbmlsOwpAQCAtMTIwNiw3ICsxMjUzLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgbV9leGl0Q29tcGxl
dGVkID0gdHJ1ZTsKIAotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENv
bG9yOltbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3Bs
YXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFy
Q29sb3JdXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3Vu
ZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAKICAgICBjbGVhck1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQVZLaXRT
UEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCmluZGV4
IDdjYmIwN2I2NjNkZGYxMzQxNDE3ZWZiZmQ1NGNiMDMwM2ZhNjRkZWIuLmMzNmJiMDViNTM3NDlk
NWRmM2JkNWExNWJlNTBhYmFlMmJiYjBjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jb2NvYS9BVktpdFNQSS5oCkBAIC0zNCw5ICszNCwxMiBAQAogI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiAKICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyQ29udHJvbGxlci5oPgorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV29iamMtcHJvcGVydHktbm8tYXR0cmlidXRlIgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5
ZXJMYXllclZpZXcuaD4KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNpbXBvcnQgPEFW
S2l0L0FWUGxheWVyVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZLaXQvQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5Lmg+Ci0jaW1wb3J0IDxBVktpdC9BVlZpZGVv
TGF5ZXIuaD4KIAogI2Vsc2UKIApAQCAtNDksNiArNTIsMTIgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyU3RhdHVzKSB7CiAgICAgQVZQbGF5ZXJDb250cm9s
bGVyU3RhdHVzUmVhZHlUb1BsYXkgPSAyLAogfTsKIAorQGNsYXNzIEFWUGxheWVyTGF5ZXI7CisK
K0BpbnRlcmZhY2UgQVZQbGF5ZXJMYXllclZpZXcgOiBVSVZpZXcKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXI7CitAZW5kCisKIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tU
eXBlKSB7CiAgICAgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lID0g
MCwKICAgICBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZUFpclBsYXkgPSAx
LApAQCAtNTgsMTkgKzY3LDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJD
b250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKIEBwcm9wZXJ0eSAoTlNfTk9OQVRPTUlD
X0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXMgc3RhdHVzOwogQGVu
ZAogCi1AcHJvdG9jb2wgQVZWaWRlb0xheWVyCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBB
VlZpZGVvTGF5ZXJHcmF2aXR5KSB7Ci0gICAgQVZWaWRlb0xheWVyR3Jhdml0eUludmFsaWQgPSAw
LAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3QgPSAxLAotICAgIEFWVmlkZW9M
YXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsID0gMiwKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5
UmVzaXplID0gMywKLX07Ci0tICh2b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29u
dHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQVZWaWRl
b0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBD
R1JlY3QgdmlkZW9SZWN0OwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9
aXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5OwotQGVuZAotCiBAcHJvdG9j
b2wgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAog
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxs
U2NyZWVuUmVhc29uKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256778</attachid>
            <date>2015-07-14 10:53:59 -0700</date>
            <delta_ts>2015-07-14 11:18:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146862-20150714105252.patch</filename>
            <type>text/plain</type>
            <size>18511</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyZjQ5NjFmYWNiYzc2
OWRmYTVhMTBlNTM0ZjYzYjc3NmIzMmZkZC4uMTUwYTVmMDhjMjMyYTNiMzRlOTE1NWJlZDZlMDlm
OWY4ZTYyMzVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA3LTEwICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVlBsYXllckxh
eWVyVmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkb3B0aW5nIEFWUGxheWVyTGF5ZXJWaWV3IHJlcXVpcmVzIGRlcml2aW5nIGZyb20gQVZQbGF5
ZXJMYXllclZpZXcgYW5kIHN1cHBseWluZyBhIGN1c3RvbSBiYWNraW5nIGxheWVyLiBBVktpdC5m
cmFtZXdvcmsgaXMgbG9hZGVkCisgICAgICAgIGF0IHJ1bnRpbWUsIHNvIGFuIEFWUGxheWVyTGF5
ZXJWaWV3IGRlcml2ZWQgY2xhc3MgY2FuJ3QgYmUgZGVsY2FyZWQgc3RhdGljYWxseS4gSW5zdGVh
ZCwgdGhpcyBjaGFuZ2UgdXNlcyB0aGUgb2JjIHJ1bnRpbWUgaW50ZXJmYWNlIHRvIAorICAgICAg
ICByZWdpc3RlciBhIG5ldyBvYmpjIGNsYXNzICJXZWJBVlBsYXllckxheWVyVmlldyIgdGhhdCBk
ZXJpdmVzIGZyb20gQVZQbGF5ZXJMYXllclZpZXcsIGFuZCB0byBhZGQgdGhlIG5lY2Vzc2FyeSBv
YmpjIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgQVZLaXQncyBBVlZpZGVvTGF5
ZXIgcHJvdG9jb2wgaGFzIGJlZW4gcmVwbGFjZWQgYnkgImR1Y2sgdHlwaW5nIiB0byBBVlBsYXll
ckxheWVyLiBUaGF0IGlzLCBXZWJBVlBsYXllckxheWVyIGxvb2tzIGxpa2UgYW5kIGFjdHMgbGlr
ZSBhbiBBVlBsYXllckxheWVyLgorICAgICAgICBTbywgV2ViQVZWaWRlb0xheWVyIGlzIHJlbmFt
ZWQgdG8gV2ViQVZQbGF5ZXJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJM
YXllciB2aWRlb0xheWVyXSk6IFJlbmFtZWQgZnJvbSBXZWJBVlZpZGVvTGF5ZXIuCisgICAgICAg
ICgtW1dlYkFWUGxheWVyTGF5ZXIgaW5pdF0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXll
ckxheWVyIHNldFZpZGVvR3Jhdml0eTpdKTogcmVwbGFjZXMgc2V0VmlkZW9MYXllckdyYXZpdHku
CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSk6IHJlcGxhY2VzIHZp
ZGVvTGF5ZXJHcmF2aXR5LgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFz
cyk6IE92ZXJyaWRlcyArW1VJVmlldyBsYXllckNsYXNzXS4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIpOiBPdmVycmlkZXMgLVtBVlBsYXllckxheWVyVmll
dyBwbGF5ZXJDb250cm9sbGVyXSAKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFBs
YXllckNvbnRyb2xsZXIpOiBPdmVycmlkZXMgLVtBVlBsYXllckxheWVyVmlldyBzZXRQbGF5ZXJD
b250cm9sbGVyOl0KKyAgICAgICAgKGdldFdlYkFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOiBSdW50
aW1lIHJlZ2lzdHJhdGlvbiBvZiBXZWJBVlBsYXllckxheWVyVmlldy4KKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKTogUmVuYW1l
IG1fdmlkZW9MYXllciB0byBtX3BsYXllckxheWVyIGFuZCB1c2UgbV9wbGF5ZXJMYXllclZpZXcu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2Ny
ZWVuKTogZGl0dG8KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
bnRlckZ1bGxzY3JlZW4pOiBkaXR0bworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKTogZGl0dG8KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbik6IGRpdHRvCisgICAgICAgIChX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUp
OiBkaXR0bworICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9MYXllcl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgaW5pdF0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdyYXZpdHk6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0eV0pOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oOiBSZW1vdmUgdW51c2VkIFNQSS4K
KwogMjAxNS0wNy0wOSAgTWF0dGhldyBEYWl0ZXIgIDxtZGFpdGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbXBsZW1lbnRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc2VjdGlvbiBvZiBlbnVtZXJhdGVE
ZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IDllN2RmNmY3N2IwYTMwZjZi
YWZmZTRmN2Q0ZjA1NWYyN2UxOTRjNzMuLjcwYmRkZGNjY2QxYTU2ZDQ4OWYyZTM3OGE1NTQwZTNk
YTgzOWU3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC00NSw4ICs0NSw5IEBA
IE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgVUlXaW5kb3c7CiBPQkpD
X0NMQVNTIFVJVmlldzsKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViQVZWaWRl
b0xheWVyOworT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyOwogT0JKQ19DTEFTUyBXZWJDQUxh
eWVySG9zdFdyYXBwZXI7CitPQkpDX0NMQVNTIEFWUGxheWVyTGF5ZXJWaWV3OwogCiBuYW1lc3Bh
Y2UgV1RGIHsKIGNsYXNzIFN0cmluZzsKQEAgLTEzNCw3ICsxMzUsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwog
ICAgIFJldGFpblB0cjxBVlBsYXllclZpZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRy
PFdlYkFWVmlkZW9MYXllcj4gbV92aWRlb0xheWVyQ29udGFpbmVyOworICAgIFJldGFpblB0cjxX
ZWJBVlBsYXllckxheWVyPiBtX3BsYXllckxheWVyOwogICAgIFJldGFpblB0cjxXZWJDQUxheWVy
SG9zdFdyYXBwZXI+IG1fbGF5ZXJIb3N0V3JhcHBlcjsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBXZWJWaWRlb0Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxs
cHRyIH07CkBAIC0xNDQsNiArMTQ1LDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxVSVZp
ZXdDb250cm9sbGVyPiBtX3ZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxVSVZpZXc+IG1f
cGFyZW50VmlldzsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fcGFyZW50V2luZG93OworICAg
IFJldGFpblB0cjxBVlBsYXllckxheWVyVmlldz4gbV9wbGF5ZXJMYXllclZpZXc7CiAgICAgSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKICAgICBzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2s7CiAgICAgYm9vbCBtX2Fs
bG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KaW5kZXggNzRiMWMxOTk1MTFjNDk2M2FkZTE3MzI2NDNjZmZjZjk0MTQ4NjFj
ZS4uYmFlODU2YzI1YzA2NGIwMjg1MzAzYmMwNTI4ZmUyNGFhNTk5OTJmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWwuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlRpbWUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTAsMTEgKzUxLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZG
b3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplLCBOU1N0cmluZyAqKQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVj
dCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsLCBOU1N0cmluZyAqKQogCiBTT0ZUX0xJTktfRlJB
TUVXT1JLKEFWS2l0KQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckNvbnRyb2xsZXIp
CiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyVmlld0NvbnRyb2xsZXIpCiBTT0ZUX0xJ
TktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1pbmcpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFW
UGxheWVyTGF5ZXJWaWV3KQogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5L
X0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQpAQCAtNjQyLDI3ICs2NDcsMjggQEAgc3RhdGlj
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBj
b252ZXJ0VG9FeGl0RnVsbFMKIH0KIEBlbmQKIAotQGludGVyZmFjZSBXZWJBVlZpZGVvTGF5ZXIg
OiBDQUxheWVyIDxBVlZpZGVvTGF5ZXI+Ci0rKFdlYkFWVmlkZW9MYXllciAqKXZpZGVvTGF5ZXI7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jh
dml0eTsKK0BpbnRlcmZhY2UgV2ViQVZQbGF5ZXJMYXllciA6IENBTGF5ZXIKKysoV2ViQVZQbGF5
ZXJMYXllciAqKXZpZGVvTGF5ZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0
cmluZyAqdmlkZW9HcmF2aXR5OwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlciA9IGlzUmVh
ZHlGb3JEaXNwbGF5KSBCT09MIHJlYWR5Rm9yRGlzcGxheTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBDR1JlY3QgdmlkZW9SZWN0OwogLSAodm9pZClzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyOwogLSAodm9pZClzZXRQ
bGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgQ0FMYXllciogdmlkZW9TdWJsYXllcjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24g
V2ViQVZWaWRlb0xheWVyCitAaW1wbGVtZW50YXRpb24gV2ViQVZQbGF5ZXJMYXllcgogewogICAg
IFJldGFpblB0cjxXZWJBVlBsYXllckNvbnRyb2xsZXI+IF9hdlBsYXllckNvbnRyb2xsZXI7CiAg
ICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xsZXI+IF9hdlBsYXllclZpZXdDb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBfdmlkZW9TdWJsYXllcjsKLSAgICBBVlZpZGVv
TGF5ZXJHcmF2aXR5IF92aWRlb0xheWVyR3Jhdml0eTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IF92aWRlb0dyYXZpdHk7CiB9CiAKLSsoV2ViQVZWaWRlb0xheWVyICopdmlkZW9MYXllcgorKyhX
ZWJBVlBsYXllckxheWVyICopdmlkZW9MYXllcgogewotICAgIHJldHVybiBbW1tXZWJBVlZpZGVv
TGF5ZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbV2ViQVZQbGF5
ZXJMYXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdApAQCAtNjcwLDExICs2NzYsMTYgQEAgc3RhdGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFMKICAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmIChzZWxmKSB7CiAgICAgICAgIFtzZWxmIHNldE1h
c2tzVG9Cb3VuZHM6WUVTXTsKLSAgICAgICAgW3NlbGYgc2V0VmlkZW9MYXllckdyYXZpdHk6QVZW
aWRlb0xheWVyR3Jhdml0eVJlc2l6ZUFzcGVjdF07CisgICAgICAgIF92aWRlb0dyYXZpdHkgPSBn
ZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCk7CiAgICAgfQogICAgIHJldHVybiBz
ZWxmOwogfQogCistIChBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyCit7Cisg
ICAgcmV0dXJuIChBVlBsYXllckNvbnRyb2xsZXIgKilfYXZQbGF5ZXJDb250cm9sbGVyLmdldCgp
OworfQorCiAtICh2b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAq
KXBsYXllckNvbnRyb2xsZXIKIHsKICAgICBBU1NFUlQoIXBsYXllckNvbnRyb2xsZXIgfHwgW3Bs
YXllckNvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNsYXNz
XV0pOwpAQCAtNzA3LDE5ICs3MTgsMTkgQEAgc3RhdGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFMKICAgICB9
CiB9CiAKLS0gKHZvaWQpc2V0VmlkZW9MYXllckdyYXZpdHk6KEFWVmlkZW9MYXllckdyYXZpdHkp
dmlkZW9MYXllckdyYXZpdHkKKy0gKHZvaWQpc2V0VmlkZW9HcmF2aXR5OihOU1N0cmluZyAqKXZp
ZGVvR3Jhdml0eQogewotICAgIF92aWRlb0xheWVyR3Jhdml0eSA9IHZpZGVvTGF5ZXJHcmF2aXR5
OworICAgIF92aWRlb0dyYXZpdHkgPSB2aWRlb0dyYXZpdHk7CiAgICAgCiAgICAgaWYgKCFbX2F2
UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0pCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkNv
cmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSA9IFdlYkNv
cmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0g
ICAgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemUpCisg
ICAgaWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplKCkpCiAg
ICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9H
cmF2aXR5UmVzaXplOwotICAgIGlmICh2aWRlb0xheWVyR3Jhdml0eSA9PSBBVlZpZGVvTGF5ZXJH
cmF2aXR5UmVzaXplQXNwZWN0KQorICAgIGlmICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpKQogICAgICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBlbHNl
IGlmICh2aWRlb0xheWVyR3Jhdml0eSA9PSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0
RmlsbCkKKyAgICBlbHNlIGlmICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdEZpbGwoKSkKICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6OldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC03MjcsOSArNzM4LDkgQEAgc3RhdGlj
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBj
b252ZXJ0VG9FeGl0RnVsbFMKICAgICBbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KGdyYXZpdHkpOwogfQogCi0tIChBVlZpZGVvTGF5ZXJHcmF2aXR5
KXZpZGVvTGF5ZXJHcmF2aXR5CistIChOU1N0cmluZyAqKXZpZGVvR3Jhdml0eQogewotICAgIHJl
dHVybiBfdmlkZW9MYXllckdyYXZpdHk7CisgICAgcmV0dXJuIF92aWRlb0dyYXZpdHkuZ2V0KCk7
CiB9CiAKIC0gKHZvaWQpZW50ZXJQSVBNb2RlUmVkaXJlY3RpbmdWaWRlb1RvTGF5ZXI6KENBTGF5
ZXIgKilsYXllcgpAQCAtNzQ1LDYgKzc1Niw0MiBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwog
fQogQGVuZAogCitzdGF0aWMgQ0FMYXllciogV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFz
cyhpZCwgU0VMKQoreworICAgIHJldHVybiBbV2ViQVZQbGF5ZXJMYXllciBjbGFzc107Cit9CisK
K3N0YXRpYyBBVlBsYXllckNvbnRyb2xsZXIqIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXllckNv
bnRyb2xsZXIoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVy
TGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBsYXllckxheWVyID0g
KFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJdOworICAgIHJldHVy
biBbd2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXTsKK30KKworc3RhdGljIHZvaWQg
V2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlcihpZCBhU2VsZiwgU0VMLCBB
VlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIpCit7CisgICAgQVZQbGF5ZXJMYXll
clZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKndl
YkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxh
eWVyTGF5ZXJdOworICAgIFt3ZWJBVlBsYXllckxheWVyIHNldFBsYXllckNvbnRyb2xsZXI6IHBs
YXllckNvbnRyb2xsZXJdOworfQorCitAY2xhc3MgV2ViQVZQbGF5ZXJMYXllclZpZXc7CitzdGF0
aWMgQ2xhc3MgZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpOworc3RhdGljIENsYXNzIGNs
YXNzV2ViQVZQbGF5ZXJMYXllclZpZXcgPSBuaWw7CisKK3N0YXRpYyBDbGFzcyBnZXRXZWJBVlBs
YXllckxheWVyVmlld0NsYXNzKCkKK3sKKyAgICBpZiAoIWNsYXNzV2ViQVZQbGF5ZXJMYXllclZp
ZXcpIHsKKyAgICAgICAgY2xhc3NXZWJBVlBsYXllckxheWVyVmlldyA9IG9iamNfYWxsb2NhdGVD
bGFzc1BhaXIoZ2V0QVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZp
ZXciLCAwKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKGNsYXNzV2ViQVZQbGF5ZXJMYXllclZp
ZXcsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiksIChJTVApV2ViQVZQbGF5ZXJMYXll
clZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0
aG9kKGNsYXNzV2ViQVZQbGF5ZXJMYXllclZpZXcsIEBzZWxlY3RvcihwbGF5ZXJDb250cm9sbGVy
KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19wbGF5ZXJDb250cm9sbGVyLCAiQEA6Iik7Cisg
ICAgICAgIG9iamNfcmVnaXN0ZXJDbGFzc1BhaXIoY2xhc3NXZWJBVlBsYXllckxheWVyVmlldyk7
CisgICAgICAgIENsYXNzIG1ldGFDbGFzcyA9IG9iamNfZ2V0TWV0YUNsYXNzKCJXZWJBVlBsYXll
ckxheWVyVmlldyIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0
b3IobGF5ZXJDbGFzcyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcywgIkBA
OiIpOworICAgIH0KKyAgICByZXR1cm4gY2xhc3NXZWJBVlBsYXllckxheWVyVmlldzsKK30KKwog
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KCkKICAgICA6IG1fcGxheWVyQ29udHJvbGxlcihhZG9wdE5TKFtbV2ViQVZQbGF5
ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSkpCiB7CkBAIC04ODMsNyArOTMwLDcgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29s
IGVuYWJsZWQsIEV4dGVybmEKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tB
aXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZSA9IGxvY2FsaXplZERldmljZU5hbWU7CiAgICAgcGxh
eWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVybmFsUGxheWJhY2tUeXBl
OwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSA9IGVuYWJsZWQ7
Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKSBzZXRIaWRkZW46ZW5hYmxlZF07Cisg
ICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjplbmFibGVkXTsKIH0KIAogQGludGVyZmFj
ZSBVSVdpbmRvdyAoKQpAQCAtOTE5LDI4ICs5NjYsMjcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImIHZpZGVvTGF5
ZXIKICAgICBbbV9sYXllckhvc3RXcmFwcGVyIHNldE1vZGVsOm1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWxdOwogICAgIFttX2xheWVySG9zdFdyYXBwZXIgc2V0VmlkZW9TdWJsYXllcjptX3ZpZGVvTGF5
ZXIuZ2V0KCldOwogCi0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFWVmlkZW9MYXll
ciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhpZGRlbjpbbV9w
bGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAgIFttX3ZpZGVv
TGF5ZXJDb250YWluZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBwZXIuZ2V0KCld
OworICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdlYkFWUGxheWVyTGF5ZXJW
aWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRk
ZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKKyAgICAK
KyAgICBtX3BsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZp
ZXcgcGxheWVyTGF5ZXJdOworICAgIFttX3BsYXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6bV9s
YXllckhvc3RXcmFwcGVyLmdldCgpXTsKIAogICAgIENHU2l6ZSB2aWRlb1NpemUgPSBbbV9wbGF5
ZXJDb250cm9sbGVyIGNvbnRlbnREaW1lbnNpb25zXTsKICAgICBDR1JlY3QgdmlkZW9SZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCB2aWRlb1NpemUud2lkdGgsIHZpZGVvU2l6ZS5oZWlnaHQpOwotICAg
IFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9SZWN0OnZpZGVvUmVjdF07CisgICAgW21f
cGxheWVyTGF5ZXIgc2V0VmlkZW9SZWN0OnZpZGVvUmVjdF07CiAgICAgaWYgKG1fdmlkZW9GdWxs
c2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5
ZXJGcmFtZSh2aWRlb1JlY3QpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgaGFzIGJlZW4gZGVwcmVj
YXRlZCBzbyBpZ25vcmUgdGhlIHdhcm5pbmcgdW50aWwgd2UgcG9ydCBvdXIgY29kZSB0byB0aGUg
bmV3IEFQSS4KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBtX3BsYXll
clZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5z
dGFuY2UoKSBpbml0V2l0aFZpZGVvTGF5ZXI6bV92aWRlb0xheWVyQ29udGFpbmVyLmdldCgpXSk7
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisgICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdp
dGhQbGF5ZXJMYXllclZpZXc6bV9wbGF5ZXJMYXllclZpZXcuZ2V0KCldKTsKIAogICAgIFttX3Bs
YXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpOT107CiAgICAgW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9s
bGVyICopbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXREZWxlZ2F0ZTptX3BsYXllckNvbnRyb2xsZXIuZ2V0KCldOwogICAgIFttX3BsYXll
clZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazptX2FsbG93
c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107CiAKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVy
IHNldFBsYXllclZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCldOwor
ICAgIFttX3BsYXllckxheWVyIHNldFBsYXllclZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0Nv
bnRyb2xsZXIuZ2V0KCldOwogCiAgICAgaWYgKG1fdmlld0NvbnRyb2xsZXIpIHsKICAgICAgICAg
W21fdmlld0NvbnRyb2xsZXIgYWRkQ2hpbGRWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250
cm9sbGVyLmdldCgpXTsKQEAgLTk2OCw3ICsxMDE0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBtX2V4aXRSZXF1ZXN0ZWQg
PSBmYWxzZTsKICAgICBtX2VudGVyUmVxdWVzdGVkID0gdHJ1ZTsKIAotICAgIFttX3ZpZGVvTGF5
ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xvckNsYXNzKCkgYmxhY2tD
b2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29s
b3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNrQ29sb3JdXTsKICAgICBpZiAobW9kZSgpID09IEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUp
CiAgICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIGVsc2UgaWYgKG1vZGUoKSA9
PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKQEAg
LTEwMTcsOCArMTA2Myw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmV4aXRGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpCiAgICAgZWxzZQogICAg
ICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IGZpbmFsUmVjdDsKIAot
ICAgIGlmIChbbV92aWRlb0xheWVyQ29udGFpbmVyIHZpZGVvTGF5ZXJHcmF2aXR5XSAhPSBBVlZp
ZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQotICAgICAgICBbbV92aWRlb0xheWVyQ29udGFp
bmVyIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3Rd
OworICAgIGlmIChbbV9wbGF5ZXJMYXllciB2aWRlb0dyYXZpdHldICE9IGdldEFWTGF5ZXJWaWRl
b0dyYXZpdHlSZXNpemVBc3BlY3QoKSkKKyAgICAgICAgW21fcGxheWVyTGF5ZXIgc2V0VmlkZW9H
cmF2aXR5OmdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKV07CiAgICAgW1ttX3Bs
YXllclZpZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsKIAogICAgIGlmIChpc01v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGlj
dHVyZSkpIHsKQEAgLTEwMzcsNyArMTA4Myw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpCiAK
ICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICAgICAgICAgIFtDQVRyYW5z
YWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107Ci0gICAgICAgICAgICBbbV92aWRlb0xheWVy
Q29udGFpbmVyIHNldEJhY2tncm91bmRDb2xvcjpbW2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29s
b3JdIENHQ29sb3JdXTsKKyAgICAgICAgICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3Jv
dW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKICAgICAgICAgICAgIFtb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29s
b3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1p
dF07CiAKQEAgLTEwODEsMTUgKzExMjcsMTYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oKQogICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdOwogICAgIAogICAgIFttX3Zp
ZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFttX3ZpZGVvTGF5ZXJDb250YWlu
ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0
UGxheWVyVmlld0NvbnRyb2xsZXI6bmlsXTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgcmVtb3Zl
RnJvbVN1cGVydmlld107CisgICAgW21fcGxheWVyTGF5ZXIgc2V0UGxheWVyVmlld0NvbnRyb2xs
ZXI6bmlsXTsKICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gcmVtb3ZlRnJvbVN1cGVydmll
d107CiAKICAgICBbbV9sYXllckhvc3RXcmFwcGVyIHNldE1vZGVsOm51bGxwdHJdOwogCisgICAg
bV9wbGF5ZXJMYXllclZpZXcgPSBuaWw7CiAgICAgbV9sYXllckhvc3RXcmFwcGVyID0gbmlsOwog
ICAgIG1fdmlkZW9MYXllciA9IG5pbDsKLSAgICBtX3ZpZGVvTGF5ZXJDb250YWluZXIgPSBuaWw7
CisgICAgbV9wbGF5ZXJMYXllciA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0g
bmlsOwogICAgIG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVy
ID0gbmlsOwpAQCAtMTIwNiw3ICsxMjUzLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgbV9leGl0Q29tcGxl
dGVkID0gdHJ1ZTsKIAotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENv
bG9yOltbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3Bs
YXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFy
Q29sb3JdXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3Vu
ZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAKICAgICBjbGVhck1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQVZLaXRT
UEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCmluZGV4
IDdjYmIwN2I2NjNkZGYxMzQxNDE3ZWZiZmQ1NGNiMDMwM2ZhNjRkZWIuLjUxNDgxYTc2MGMxZTky
NWY2ZDZjNzY0NDQwNGFmMDQ4MjQ5N2U2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jb2NvYS9BVktpdFNQSS5oCkBAIC0zNCw5ICszNCwxMiBAQAogI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiAKICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyQ29udHJvbGxlci5oPgorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV29iamMtcHJvcGVydHktbm8tYXR0cmlidXRlIgorI2ltcG9ydCA8QVZLaXQvQVZQbGF5
ZXJMYXllclZpZXcuaD4KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNpbXBvcnQgPEFW
S2l0L0FWUGxheWVyVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZLaXQvQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5Lmg+Ci0jaW1wb3J0IDxBVktpdC9BVlZpZGVv
TGF5ZXIuaD4KIAogI2Vsc2UKIApAQCAtNTgsMTcgKzYxLDEwIEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlKSB7CiBAcHJv
cGVydHkgKE5TX05PTkFUT01JQ19JT1NPTkxZLCByZWFkb25seSkgQVZQbGF5ZXJDb250cm9sbGVy
U3RhdHVzIHN0YXR1czsKIEBlbmQKIAotQHByb3RvY29sIEFWVmlkZW9MYXllcgotdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgQVZWaWRlb0xheWVyR3Jhdml0eSkgewotICAgIEFWVmlkZW9MYXll
ckdyYXZpdHlJbnZhbGlkID0gMCwKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0
ID0gMSwKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0RmlsbCA9IDIsCi0gICAg
QVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSA9IDMsCi19OwotLSAodm9pZClzZXRQbGF5ZXJDb250
cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOwotQHByb3BlcnR5
IChub25hdG9taWMpIEFWVmlkZW9MYXllckdyYXZpdHkgdmlkZW9MYXllckdyYXZpdHk7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYykgQ0dSZWN0IHZpZGVvUmVjdDsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgZ2V0dGVyPWlzUmVhZHlGb3JEaXNwbGF5KSBCT09MIHJlYWR5Rm9yRGlzcGxh
eTsKK0BjbGFzcyBBVlBsYXllckxheWVyOworCitAaW50ZXJmYWNlIEFWUGxheWVyTGF5ZXJWaWV3
IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWUGxheWVyTGF5ZXIg
KnBsYXllckxheWVyOwogQGVuZAogCiBAcHJvdG9jb2wgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRl
bGVnYXRlIDxOU09iamVjdD4KQEAgLTg1LDcgKzgxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVhc29uKSB7CiBAZW5k
CiAKIEBpbnRlcmZhY2UgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAoRGV0YWlscykKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFZpZGVvTGF5ZXI6KENBTGF5ZXIgPEFWVmlkZW9MYXllcj4gKil2aWRl
b0xheWVyOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGxheWVyTGF5ZXJWaWV3OihBVlBsYXll
ckxheWVyVmlldyAqKXBsYXllckxheWVyVmlldzsKIC0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuQW5p
bWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpZXhpdEZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256779</attachid>
            <date>2015-07-14 11:18:56 -0700</date>
            <delta_ts>2015-07-20 03:24:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146862-20150714111749.patch</filename>
            <type>text/plain</type>
            <size>18495</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyZjQ5NjFmYWNiYzc2
OWRmYTVhMTBlNTM0ZjYzYjc3NmIzMmZkZC4uMTUwYTVmMDhjMjMyYTNiMzRlOTE1NWJlZDZlMDlm
OWY4ZTYyMzVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA3LTEwICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVlBsYXllckxh
eWVyVmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkb3B0aW5nIEFWUGxheWVyTGF5ZXJWaWV3IHJlcXVpcmVzIGRlcml2aW5nIGZyb20gQVZQbGF5
ZXJMYXllclZpZXcgYW5kIHN1cHBseWluZyBhIGN1c3RvbSBiYWNraW5nIGxheWVyLiBBVktpdC5m
cmFtZXdvcmsgaXMgbG9hZGVkCisgICAgICAgIGF0IHJ1bnRpbWUsIHNvIGFuIEFWUGxheWVyTGF5
ZXJWaWV3IGRlcml2ZWQgY2xhc3MgY2FuJ3QgYmUgZGVsY2FyZWQgc3RhdGljYWxseS4gSW5zdGVh
ZCwgdGhpcyBjaGFuZ2UgdXNlcyB0aGUgb2JjIHJ1bnRpbWUgaW50ZXJmYWNlIHRvIAorICAgICAg
ICByZWdpc3RlciBhIG5ldyBvYmpjIGNsYXNzICJXZWJBVlBsYXllckxheWVyVmlldyIgdGhhdCBk
ZXJpdmVzIGZyb20gQVZQbGF5ZXJMYXllclZpZXcsIGFuZCB0byBhZGQgdGhlIG5lY2Vzc2FyeSBv
YmpjIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgQVZLaXQncyBBVlZpZGVvTGF5
ZXIgcHJvdG9jb2wgaGFzIGJlZW4gcmVwbGFjZWQgYnkgImR1Y2sgdHlwaW5nIiB0byBBVlBsYXll
ckxheWVyLiBUaGF0IGlzLCBXZWJBVlBsYXllckxheWVyIGxvb2tzIGxpa2UgYW5kIGFjdHMgbGlr
ZSBhbiBBVlBsYXllckxheWVyLgorICAgICAgICBTbywgV2ViQVZWaWRlb0xheWVyIGlzIHJlbmFt
ZWQgdG8gV2ViQVZQbGF5ZXJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKCtbV2ViQVZQbGF5ZXJM
YXllciB2aWRlb0xheWVyXSk6IFJlbmFtZWQgZnJvbSBXZWJBVlZpZGVvTGF5ZXIuCisgICAgICAg
ICgtW1dlYkFWUGxheWVyTGF5ZXIgaW5pdF0pOiBkaXR0by4KKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXSk6IGRpdHRvLgorICAgICAgICAoLVtXZWJBVlBsYXll
ckxheWVyIHNldFZpZGVvR3Jhdml0eTpdKTogcmVwbGFjZXMgc2V0VmlkZW9MYXllckdyYXZpdHku
CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSk6IHJlcGxhY2VzIHZp
ZGVvTGF5ZXJHcmF2aXR5LgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFz
cyk6IE92ZXJyaWRlcyArW1VJVmlldyBsYXllckNsYXNzXS4KKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIpOiBPdmVycmlkZXMgLVtBVlBsYXllckxheWVyVmll
dyBwbGF5ZXJDb250cm9sbGVyXSAKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFBs
YXllckNvbnRyb2xsZXIpOiBPdmVycmlkZXMgLVtBVlBsYXllckxheWVyVmlldyBzZXRQbGF5ZXJD
b250cm9sbGVyOl0KKyAgICAgICAgKGdldFdlYkFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOiBSdW50
aW1lIHJlZ2lzdHJhdGlvbiBvZiBXZWJBVlBsYXllckxheWVyVmlldy4KKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKTogUmVuYW1l
IG1fdmlkZW9MYXllciB0byBtX3BsYXllckxheWVyIGFuZCB1c2UgbV9wbGF5ZXJMYXllclZpZXcu
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2Ny
ZWVuKTogZGl0dG8KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
bnRlckZ1bGxzY3JlZW4pOiBkaXR0bworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKTogZGl0dG8KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbik6IGRpdHRvCisgICAgICAgIChX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUp
OiBkaXR0bworICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9MYXllcl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgaW5pdF0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdyYXZpdHk6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0eV0pOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oOiBSZW1vdmUgdW51c2VkIFNQSS4K
KwogMjAxNS0wNy0wOSAgTWF0dGhldyBEYWl0ZXIgIDxtZGFpdGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbXBsZW1lbnRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc2VjdGlvbiBvZiBlbnVtZXJhdGVE
ZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IDllN2RmNmY3N2IwYTMwZjZi
YWZmZTRmN2Q0ZjA1NWYyN2UxOTRjNzMuLjcwYmRkZGNjY2QxYTU2ZDQ4OWYyZTM3OGE1NTQwZTNk
YTgzOWU3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC00NSw4ICs0NSw5IEBA
IE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgVUlXaW5kb3c7CiBPQkpD
X0NMQVNTIFVJVmlldzsKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViQVZWaWRl
b0xheWVyOworT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyOwogT0JKQ19DTEFTUyBXZWJDQUxh
eWVySG9zdFdyYXBwZXI7CitPQkpDX0NMQVNTIEFWUGxheWVyTGF5ZXJWaWV3OwogCiBuYW1lc3Bh
Y2UgV1RGIHsKIGNsYXNzIFN0cmluZzsKQEAgLTEzNCw3ICsxMzUsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwog
ICAgIFJldGFpblB0cjxBVlBsYXllclZpZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRy
PFdlYkFWVmlkZW9MYXllcj4gbV92aWRlb0xheWVyQ29udGFpbmVyOworICAgIFJldGFpblB0cjxX
ZWJBVlBsYXllckxheWVyPiBtX3BsYXllckxheWVyOwogICAgIFJldGFpblB0cjxXZWJDQUxheWVy
SG9zdFdyYXBwZXI+IG1fbGF5ZXJIb3N0V3JhcHBlcjsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBXZWJWaWRlb0Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxs
cHRyIH07CkBAIC0xNDQsNiArMTQ1LDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxVSVZp
ZXdDb250cm9sbGVyPiBtX3ZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxVSVZpZXc+IG1f
cGFyZW50VmlldzsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fcGFyZW50V2luZG93OworICAg
IFJldGFpblB0cjxBVlBsYXllckxheWVyVmlldz4gbV9wbGF5ZXJMYXllclZpZXc7CiAgICAgSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKICAgICBzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2s7CiAgICAgYm9vbCBtX2Fs
bG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KaW5kZXggNzRiMWMxOTk1MTFjNDk2M2FkZTE3MzI2NDNjZmZjZjk0MTQ4NjFj
ZS4uZmY0MDQ5Nzc4ODNhNTU3NWMyMzdhNjhkODEzMDlmYTNlODcyMjVhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWwuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlRpbWUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTAsMTEgKzUxLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZG
b3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplLCBOU1N0cmluZyAqKQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVj
dCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsLCBOU1N0cmluZyAqKQogCiBTT0ZUX0xJTktfRlJB
TUVXT1JLKEFWS2l0KQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckNvbnRyb2xsZXIp
CiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWUGxheWVyVmlld0NvbnRyb2xsZXIpCiBTT0ZUX0xJ
TktfQ0xBU1MoQVZLaXQsIEFWVmFsdWVUaW1pbmcpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFW
UGxheWVyTGF5ZXJWaWV3KQogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5L
X0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQpAQCAtNjQyLDI3ICs2NDcsMjggQEAgc3RhdGlj
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBj
b252ZXJ0VG9FeGl0RnVsbFMKIH0KIEBlbmQKIAotQGludGVyZmFjZSBXZWJBVlZpZGVvTGF5ZXIg
OiBDQUxheWVyIDxBVlZpZGVvTGF5ZXI+Ci0rKFdlYkFWVmlkZW9MYXllciAqKXZpZGVvTGF5ZXI7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jh
dml0eTsKK0BpbnRlcmZhY2UgV2ViQVZQbGF5ZXJMYXllciA6IENBTGF5ZXIKKysoV2ViQVZQbGF5
ZXJMYXllciAqKXZpZGVvTGF5ZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0
cmluZyAqdmlkZW9HcmF2aXR5OwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlciA9IGlzUmVh
ZHlGb3JEaXNwbGF5KSBCT09MIHJlYWR5Rm9yRGlzcGxheTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBDR1JlY3QgdmlkZW9SZWN0OwogLSAodm9pZClzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyOwogLSAodm9pZClzZXRQ
bGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgQ0FMYXllciogdmlkZW9TdWJsYXllcjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNEaWN0aW9uYXJ5ICpwaXhlbEJ1
ZmZlckF0dHJpYnV0ZXM7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlZpZGVvTGF5ZXIK
K0BpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckxheWVyCiB7CiAgICAgUmV0YWluUHRyPFdlYkFW
UGxheWVyQ29udHJvbGxlcj4gX2F2UGxheWVyQ29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8QVZQ
bGF5ZXJWaWV3Q29udHJvbGxlcj4gX2F2UGxheWVyVmlld0NvbnRyb2xsZXI7CiAgICAgUmV0YWlu
UHRyPENBTGF5ZXI+IF92aWRlb1N1YmxheWVyOwotICAgIEFWVmlkZW9MYXllckdyYXZpdHkgX3Zp
ZGVvTGF5ZXJHcmF2aXR5OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3ZpZGVvR3Jhdml0eTsK
IH0KIAotKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyCisrKFdlYkFWUGxheWVyTGF5ZXIg
Kil2aWRlb0xheWVyCiB7Ci0gICAgcmV0dXJuIFtbW1dlYkFWVmlkZW9MYXllciBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tXZWJBVlBsYXllckxheWVyIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC02NzAsMTEg
KzY3NiwxNiBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRG
dWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwogICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CiAgICAgaWYgKHNlbGYpIHsKICAgICAgICAgW3NlbGYgc2V0TWFza3NUb0JvdW5kczpZRVNd
OwotICAgICAgICBbc2VsZiBzZXRWaWRlb0xheWVyR3Jhdml0eTpBVlZpZGVvTGF5ZXJHcmF2aXR5
UmVzaXplQXNwZWN0XTsKKyAgICAgICAgX3ZpZGVvR3Jhdml0eSA9IGdldEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QoKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKy0gKEFW
UGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIKK3sKKyAgICByZXR1cm4gKEFWUGxh
eWVyQ29udHJvbGxlciAqKV9hdlBsYXllckNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKIC0gKHZvaWQp
c2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxl
cgogewogICAgIEFTU0VSVCghcGxheWVyQ29udHJvbGxlciB8fCBbcGxheWVyQ29udHJvbGxlciBp
c0tpbmRPZkNsYXNzOltXZWJBVlBsYXllckNvbnRyb2xsZXIgY2xhc3NdXSk7CkBAIC03MDcsMTkg
KzcxOCwxOSBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRG
dWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwogICAgIH0KIH0KIAotLSAodm9pZClz
ZXRWaWRlb0xheWVyR3Jhdml0eTooQVZWaWRlb0xheWVyR3Jhdml0eSl2aWRlb0xheWVyR3Jhdml0
eQorLSAodm9pZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0g
ICAgX3ZpZGVvTGF5ZXJHcmF2aXR5ID0gdmlkZW9MYXllckdyYXZpdHk7CisgICAgX3ZpZGVvR3Jh
dml0eSA9IHZpZGVvR3Jhdml0eTsKICAgICAKICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVy
IGRlbGVnYXRlXSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBpZiAodmlkZW9MYXll
ckdyYXZpdHkgPT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSkKKyAgICBpZiAodmlkZW9HcmF2
aXR5ID09IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKSkKICAgICAgICAgZ3Jhdml0eSA9
IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemU7Ci0g
ICAgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3Bl
Y3QpCisgICAgaWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0KCkpCiAgICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGVsc2UgaWYgKHZpZGVvTGF5ZXJH
cmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgIGVsc2Ug
aWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0Rmls
bCgpKQogICAgICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6
OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTcyNyw5ICs3MzgsOSBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxs
UwogICAgIFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckdyYXZp
dHkoZ3Jhdml0eSk7CiB9CiAKLS0gKEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdyYXZp
dHkKKy0gKE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0gICAgcmV0dXJuIF92aWRlb0xheWVy
R3Jhdml0eTsKKyAgICByZXR1cm4gX3ZpZGVvR3Jhdml0eS5nZXQoKTsKIH0KIAogLSAodm9pZCll
bnRlclBJUE1vZGVSZWRpcmVjdGluZ1ZpZGVvVG9MYXllcjooQ0FMYXllciAqKWxheWVyCkBAIC03
NDUsNiArNzU2LDQyIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiB9CiBAZW5kCiAKK3N0YXRp
YyBDQUxheWVyKiBXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzKGlkLCBTRUwpCit7Cisg
ICAgcmV0dXJuIFtXZWJBVlBsYXllckxheWVyIGNsYXNzXTsKK30KKworc3RhdGljIEFWUGxheWVy
Q29udHJvbGxlciogV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlcihpZCBhU2Vs
ZiwgU0VMKQoreworICAgIEFWUGxheWVyTGF5ZXJWaWV3ICpwbGF5ZXJMYXllciA9IGFTZWxmOwor
ICAgIFdlYkFWUGxheWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXll
ciAqKVtwbGF5ZXJMYXllciBwbGF5ZXJMYXllcl07CisgICAgcmV0dXJuIFt3ZWJBVlBsYXllckxh
eWVyIHBsYXllckNvbnRyb2xsZXJdOworfQorCitzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVy
Vmlld19zZXRQbGF5ZXJDb250cm9sbGVyKGlkIGFTZWxmLCBTRUwsIEFWUGxheWVyQ29udHJvbGxl
ciAqcGxheWVyQ29udHJvbGxlcikKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5
ZXJWaWV3ID0gYVNlbGY7CisgICAgV2ViQVZQbGF5ZXJMYXllciAqd2ViQVZQbGF5ZXJMYXllciA9
IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CisgICAg
W3dlYkFWUGxheWVyTGF5ZXIgc2V0UGxheWVyQ29udHJvbGxlcjogcGxheWVyQ29udHJvbGxlcl07
Cit9CisKK0BjbGFzcyBXZWJBVlBsYXllckxheWVyVmlldzsKK3N0YXRpYyBDbGFzcyBnZXRXZWJB
VlBsYXllckxheWVyVmlld0NsYXNzKCk7CitzdGF0aWMgQ2xhc3MgY2xhc3NXZWJBVlBsYXllckxh
eWVyVmlldyA9IG5pbDsKKworc3RhdGljIENsYXNzIGdldFdlYkFWUGxheWVyTGF5ZXJWaWV3Q2xh
c3MoKQoreworICAgIGlmICghY2xhc3NXZWJBVlBsYXllckxheWVyVmlldykgeworICAgICAgICBj
bGFzc1dlYkFWUGxheWVyTGF5ZXJWaWV3ID0gb2JqY19hbGxvY2F0ZUNsYXNzUGFpcihnZXRBVlBs
YXllckxheWVyVmlld0NsYXNzKCksICJXZWJBVlBsYXllckxheWVyVmlldyIsIDApOworICAgICAg
ICBjbGFzc19hZGRNZXRob2QoY2xhc3NXZWJBVlBsYXllckxheWVyVmlldywgQHNlbGVjdG9yKHNl
dFBsYXllckNvbnRyb2xsZXI6KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zZXRQbGF5ZXJD
b250cm9sbGVyLCAidkA6QCIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QoY2xhc3NXZWJBVlBs
YXllckxheWVyVmlldywgQHNlbGVjdG9yKHBsYXllckNvbnRyb2xsZXIpLCAoSU1QKVdlYkFWUGxh
eWVyTGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIsICJAQDoiKTsKKyAgICAgICAgb2JqY19yZWdp
c3RlckNsYXNzUGFpcihjbGFzc1dlYkFWUGxheWVyTGF5ZXJWaWV3KTsKKyAgICAgICAgQ2xhc3Mg
bWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xhc3MoIldlYkFWUGxheWVyTGF5ZXJWaWV3Iik7Cisg
ICAgICAgIGNsYXNzX2FkZE1ldGhvZChtZXRhQ2xhc3MsIEBzZWxlY3RvcihsYXllckNsYXNzKSwg
KElNUClXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzLCAiQEA6Iik7CisgICAgfQorICAg
IHJldHVybiBjbGFzc1dlYkFWUGxheWVyTGF5ZXJWaWV3OworfQorCiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogICAg
IDogbV9wbGF5ZXJDb250cm9sbGVyKGFkb3B0TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxs
b2NdIGluaXRdKSkKIHsKQEAgLTg4Myw3ICs5MzAsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJu
YQogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FpclBsYXlEZXZpY2VMb2Nh
bGl6ZWROYW1lID0gbG9jYWxpemVkRGV2aWNlTmFtZTsKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4
dGVybmFsUGxheWJhY2tUeXBlID0gZXh0ZXJuYWxQbGF5YmFja1R5cGU7CiAgICAgcGxheWVyQ29u
dHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlID0gZW5hYmxlZDsKLSAgICBbbV92aWRlb0xh
eWVyQ29udGFpbmVyLmdldCgpIHNldEhpZGRlbjplbmFibGVkXTsKKyAgICBbbV9wbGF5ZXJMYXll
clZpZXcgc2V0SGlkZGVuOmVuYWJsZWRdOwogfQogCiBAaW50ZXJmYWNlIFVJV2luZG93ICgpCkBA
IC05MTksMjggKzk2NiwyNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXR1cEZ1bGxzY3JlZW4oUGxhdGZvcm1MYXllciYgdmlkZW9MYXllcgogICAgIFttX2xheWVy
SG9zdFdyYXBwZXIgc2V0TW9kZWw6bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbF07CiAgICAgW21fbGF5
ZXJIb3N0V3JhcHBlciBzZXRWaWRlb1N1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKV07CiAKLSAg
ICBtX3ZpZGVvTGF5ZXJDb250YWluZXIgPSBbV2ViQVZWaWRlb0xheWVyIHZpZGVvTGF5ZXJdOwot
ICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0SGlkZGVuOlttX3BsYXllckNvbnRyb2xsZXIg
aXNFeHRlcm5hbFBsYXliYWNrQWN0aXZlXV07Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBz
ZXRWaWRlb1N1YmxheWVyOm1fbGF5ZXJIb3N0V3JhcHBlci5nZXQoKV07CisgICAgbV9wbGF5ZXJM
YXllclZpZXcgPSBhZG9wdE5TKFtbZ2V0V2ViQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9j
XSBpbml0XSk7CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjpbbV9wbGF5ZXJDb250
cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOworICAgIAorICAgIG1fcGxheWVyTGF5
ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07
CisgICAgW21fcGxheWVyTGF5ZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBwZXIu
Z2V0KCldOwogCiAgICAgQ0dTaXplIHZpZGVvU2l6ZSA9IFttX3BsYXllckNvbnRyb2xsZXIgY29u
dGVudERpbWVuc2lvbnNdOwogICAgIENHUmVjdCB2aWRlb1JlY3QgPSBDR1JlY3RNYWtlKDAsIDAs
IHZpZGVvU2l6ZS53aWR0aCwgdmlkZW9TaXplLmhlaWdodCk7Ci0gICAgW21fdmlkZW9MYXllckNv
bnRhaW5lciBzZXRWaWRlb1JlY3Q6dmlkZW9SZWN0XTsKKyAgICBbbV9wbGF5ZXJMYXllciBzZXRW
aWRlb1JlY3Q6dmlkZW9SZWN0XTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKHZpZGVvUmVj
dCk7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkIHNvIGlnbm9yZSB0
aGUgd2FybmluZyB1bnRpbCB3ZSBwb3J0IG91ciBjb2RlIHRvIHRoZSBuZXcgQVBJLgotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIg
PSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRo
VmlkZW9MYXllcjptX3ZpZGVvTGF5ZXJDb250YWluZXIuZ2V0KCldKTsKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKKyAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxs
b2NBVlBsYXllclZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBsYXllckxheWVyVmll
dzptX3BsYXllckxheWVyVmlldy5nZXQoKV0pOwogCiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKiltX3BsYXllckNv
bnRyb2xsZXIuZ2V0KCldOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRl
Om1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
c2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOm1fYWxsb3dzUGljdHVyZUluUGljdHVy
ZVBsYXliYWNrXTsKIAotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0UGxheWVyVmlld0Nv
bnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CisgICAgW21fcGxheWVyTGF5
ZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07
CiAKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikgewogICAgICAgICBbbV92aWV3Q29udHJvbGxl
ciBhZGRDaGlsZFZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCldOwpA
QCAtOTY4LDcgKzEwMTQsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjplbnRlckZ1bGxzY3JlZW4oKQogICAgIG1fZXhpdFJlcXVlc3RlZCA9IGZhbHNlOwogICAgIG1f
ZW50ZXJSZXF1ZXN0ZWQgPSB0cnVlOwogCi0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRC
YWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNvbG9yQ2xhc3MoKSBibGFja0NvbG9yXSBDR0NvbG9yXV07
CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEJhY2tncm91bmRDb2xvcjpbZ2V0VUlDb2xvckNs
YXNzKCkgYmxhY2tDb2xvcl1dOwogICAgIGlmIChtb2RlKCkgPT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKICAgICAgICAgZW50ZXJQ
aWN0dXJlSW5QaWN0dXJlKCk7CiAgICAgZWxzZSBpZiAobW9kZSgpID09IEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQpAQCAtMTAxNyw4ICsxMDYzLDgg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4o
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmkKICAgICBlbHNlCiAgICAgICAgIFttX3BsYXllclZp
ZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gZmluYWxSZWN0OwogCi0gICAgaWYgKFttX3ZpZGVv
TGF5ZXJDb250YWluZXIgdmlkZW9MYXllckdyYXZpdHldICE9IEFWVmlkZW9MYXllckdyYXZpdHlS
ZXNpemVBc3BlY3QpCi0gICAgICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9MYXll
ckdyYXZpdHk6QVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZUFzcGVjdF07CisgICAgaWYgKFttX3Bs
YXllckxheWVyIHZpZGVvR3Jhdml0eV0gIT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdCgpKQorICAgICAgICBbbV9wbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6Z2V0QVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwogCiAgICAgaWYgKGlzTW9kZShIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSkgewpAQCAtMTAz
Nyw3ICsxMDgzLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhp
dEZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmkKIAogICAgICAgICAgICAgW0NB
VHJhbnNhY3Rpb24gYmVnaW5dOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJs
ZUFjdGlvbnM6WUVTXTsKLSAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFj
a2dyb3VuZENvbG9yOltbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl0gQ0dDb2xvcl1dOwor
ICAgICAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEJhY2tncm91bmRDb2xvcjpbZ2V0VUlD
b2xvckNsYXNzKCkgY2xlYXJDb2xvcl1dOwogICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250
cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xvcjpbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJD
b2xvcl1dOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIApAQCAtMTA4MSwx
NSArMTEyNywxNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVh
bnVwRnVsbHNjcmVlbigpCiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHJlbW92ZUZy
b21QYXJlbnRWaWV3Q29udHJvbGxlcl07CiAgICAgCiAgICAgW21fdmlkZW9MYXllciByZW1vdmVG
cm9tU3VwZXJsYXllcl07Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRQbGF5ZXJWaWV3Q29udHJv
bGxlcjpuaWxdOworICAgIFttX3BsYXllckxheWVyVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsK
KyAgICBbbV9wbGF5ZXJMYXllciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjpuaWxdOwogICAgIFtb
bV92aWV3Q29udHJvbGxlciB2aWV3XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAogICAgIFttX2xh
eWVySG9zdFdyYXBwZXIgc2V0TW9kZWw6bnVsbHB0cl07CiAKKyAgICBtX3BsYXllckxheWVyVmll
dyA9IG5pbDsKICAgICBtX2xheWVySG9zdFdyYXBwZXIgPSBuaWw7CiAgICAgbV92aWRlb0xheWVy
ID0gbmlsOwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKKyAgICBtX3BsYXllckxh
eWVyID0gbmlsOwogICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBuaWw7CiAgICAgbV9wbGF5
ZXJDb250cm9sbGVyID0gbmlsOwogICAgIG1fdmlld0NvbnRyb2xsZXIgPSBuaWw7CkBAIC0xMjA2
LDcgKzEyNTMsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRT
dG9wUGljdHVyZUluUGljdHVyZSgpCiAKICAgICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVlOwogCi0g
ICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRCYWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNvbG9y
Q2xhc3MoKSBjbGVhckNvbG9yXSBDR0NvbG9yXV07CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNl
dEJhY2tncm91bmRDb2xvcjpbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl1dOwogICAgIFtb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29s
b3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKIAogICAgIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKaW5kZXggN2NiYjA3YjY2M2RkZjEz
NDE0MTdlZmJmZDU0Y2IwMzAzZmE2NGRlYi4uNTE0ODFhNzYwYzFlOTI1ZjZkNmM3NjQ0NDA0YWYw
NDgyNDk3ZTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29h
L0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0
U1BJLmgKQEAgLTM0LDkgKzM0LDEyIEBACiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAog
I2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xb2JqYy1wcm9w
ZXJ0eS1uby1hdHRyaWJ1dGUiCisjaW1wb3J0IDxBVktpdC9BVlBsYXllckxheWVyVmlldy5oPgor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3
Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVktpdC9BVlBsYXllclZpZXdDb250cm9s
bGVyX1dlYktpdE9ubHkuaD4KLSNpbXBvcnQgPEFWS2l0L0FWVmlkZW9MYXllci5oPgogCiAjZWxz
ZQogCkBAIC01OCwxNyArNjEsMTAgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZQbGF5
ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKIEBwcm9wZXJ0eSAoTlNfTk9OQVRP
TUlDX0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNvbnRyb2xsZXJTdGF0dXMgc3RhdHVzOwog
QGVuZAogCi1AcHJvdG9jb2wgQVZWaWRlb0xheWVyCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBBVlZpZGVvTGF5ZXJHcmF2aXR5KSB7Ci0gICAgQVZWaWRlb0xheWVyR3Jhdml0eUludmFsaWQg
PSAwLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3QgPSAxLAotICAgIEFWVmlk
ZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsID0gMiwKLSAgICBBVlZpZGVvTGF5ZXJHcmF2
aXR5UmVzaXplID0gMywKLX07Ci0tICh2b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVy
Q29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQVZW
aWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBDR1JlY3QgdmlkZW9SZWN0OwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0
ZXI9aXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5OworQGNsYXNzIEFWUGxh
eWVyTGF5ZXI7CisKK0BpbnRlcmZhY2UgQVZQbGF5ZXJMYXllclZpZXcgOiBVSVZpZXcKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXI7CiBA
ZW5kCiAKIEBwcm90b2NvbCBBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgPE5TT2JqZWN0
PgpAQCAtODUsNyArODEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllclZp
ZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb24pIHsKIEBlbmQKIAogQGludGVyZmFjZSBB
VlBsYXllclZpZXdDb250cm9sbGVyIChEZXRhaWxzKQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
VmlkZW9MYXllcjooQ0FMYXllciA8QVZWaWRlb0xheWVyPiAqKXZpZGVvTGF5ZXI7CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6KEFWUGxheWVyTGF5ZXJWaWV3ICopcGxh
eWVyTGF5ZXJWaWV3OwogLSAodm9pZCllbnRlckZ1bGxTY3JlZW5BbmltYXRlZDooQk9PTClhbmlt
YXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClleGl0RnVsbFNjcmVlbkFuaW1hdGVkOihCT09M
KWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIHN1Y2Nlc3MsIE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257085</attachid>
            <date>2015-07-20 03:24:54 -0700</date>
            <delta_ts>2015-07-20 13:18:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146862-20150720032342.patch</filename>
            <type>text/plain</type>
            <size>61544</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyZjQ5NjFmYWNiYzc2
OWRmYTVhMTBlNTM0ZjYzYjc3NmIzMmZkZC4uMTEzNzI3NmEzNDhkOWNmZGZiZmJkMTJmMGY1ODRl
MDlmMjliZjU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNS0wNy0yMCAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZQbGF5ZXJM
YXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBDQUxheWVySG9zdCBpcyByZXBsYWNlZCB3aXRoIFdlYkxheWVySG9zdFZpZXcgdG8gYmUg
Y29tcGF0aWJsZSB3aXRoIFVJVmlldyBhbmltYXRpb25zLgorICAgICAgICBTb21lIGFuaW1hdGlv
biBpcyBpbXByb3ZlZCBpbiB0aGUgY29udmVyc2lvbi4KKworICAgICAgICBXZWJBVlBsYXllckxh
eWVyVmlldyBhbmQgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3IGRlcml2ZSBm
cm9tIEFWS2l0IGFuZCBVSUtpdCByZXNwZWN0aXZlbHkuCisgICAgICAgIEJlY2F1c2UgdGhlc2Ug
ZnJhbWV3b3JrcyBhcmUgbG9hZGVkIGF0IHJ1bnRpbWUsIHRoZXNlIGNsYXNzZXMgbXVzdCBiZSBn
ZW5lcmF0ZSB1c2luZyBvYmpjL3J1bnRpbWUuaCB0bworICAgICAgICByZWdpc3RlciB0aGVtIGZy
b20gYyBmdW5jdGlvbnMgYXQgcnVudGltZS4gVGhlIG1vc3QgaW1wb3J0YW50IHBhcnQgb2YgdGhl
c2UgVUlWaWV3cyBpcyB0aGF0IHRoZWlyCisgICAgICAgIGJhY2tpbmcgbGF5ZXIgaXMgYSBXZWJB
VlBsYXllckxheWVyLgorCisgICAgICAgIFdlYkNBTGF5ZXJIb3N0V3JhcHBlciBhbmQgV2ViQVZW
aWRlb0xheWVyIGFyZSBjb21iaW5lZCBpbnRvIFdlYkFWUGxheWVyTGF5ZXIgdG8gc2ltcGxpZnkg
dGhlIGhpZXJhcmNoeS4KKyAgICAgICAgV2ViQVZQbGF5ZXJMYXllciBpcyBhIHN0YW5kLWluIGZv
ciBhbiBBVlBsYXllckxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogLXJlbW92ZUZyb21TdXBlcmxheWVyIGlzIHJlZHVuZGFudC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZp
ZGVvRnVsbHNjcmVlbkdyYXZpdHkpOiBzeW5jVGV4dFRyYWNrQm91bmRzIG9uIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgV2UgbmV2ZXIgd2FudCBhbmltYXRpb24gaGVy
ZSwgc2luY2UgYWxsIGFuaW1hdGlvbiB3aWxsIGhhcHBlbiBpbiBVSVZpZXdzLiAKKyAgICAgICAg
VGhpcyBpcyBqdXN0IGZvciBnb2luZyBpbnRvIHRoZSBmaW5hbCBzaXplIGFmdGVyIGEgdHJhbnNm
b3JtIGJhc2VkIGFuaW1hdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKTogbGF5ZXIgLT4gdmlldworICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxs
c2NyZWVuKTogbGF5ZXIgLT4gdmlldworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcKKworICAgICAgICAo
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZSk6
IGxheWVyIC0+IHZpZXcKKyAgICAgICAgVXNlIGZlbmNlIHBvcnQgdG8gc3luY2hyb25pemUgYmV0
d2VlbiB0aGUgVUlUaHJlYWQgYW5kIHRoZSBXZWJUaHJlYWQsCisgICAgICAgIHRoZSBzYW1lIHdh
eSBXZWJLaXQyIHVzZXMgYSBmZW5jZSBwb3J0IHRvIHN5bmNocm9uaXplIGJldHdlZW4gcHJvY2Vz
c2VzLgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0
VmlkZW9MYXllckdyYXZpdHkpOgorICAgICAgICBObyBsb25nZXIgbmVjZXNzYXJ5IHRvIGNhY2hl
IHZpZGVvR3Jhdml0eSBhdCB0aGlzIGxldmVsLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorCisgICAgICAgICgtW1dlYkFW
UGxheWVyTGF5ZXIgaW5pdF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGRlYWxsb2Nd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXSk6CisgICAg
ICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0Qm91bmRzOl0pOgorICAgICAgICAoLVtXZWJBVlBs
YXllckxheWVyIHJlc29sdmVCb3VuZHNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBz
ZXRWaWRlb0dyYXZpdHk6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgdmlkZW9HcmF2
aXR5XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgdmlkZW9SZWN0XSk6CisgICAgICAg
ICgrW1dlYkFWUGxheWVyTGF5ZXIga2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdWaWRlb1JlY3Rd
KToKKyAgICAgICAgQWRkZWQgY2xhc3MgV2ViQVZQbGF5ZXJMYXllciwgcmVwbGFjaW5nIFdlYkFW
VmlkZW9MYXllciBhbmQgV2ViQ0FMYXllckhvc3RXcmFwcGVyLgorCisgICAgICAgIChXZWJBVlBp
Y3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyk6CisgICAgICAgIChnZXRX
ZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVk
IHJ1bnRpbWUgY2xhc3MgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3CisKKyAg
ICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MpOgorICAgICAgICAoV2ViQVZQ
bGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19zZXRQbGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJW
aWV3X3ZpZGVvVmlldyk6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1Zp
ZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1Bp
Y3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXll
clZpZXdfc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyk6
CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3KToKKyAgICAgICAgKGdldFdlYkFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOgorICAgICAg
ICBBZGRlZCBydW50aW1lIGNsYXNzIFdlYkFWUGxheWVyTGF5ZXJWaWV3CisKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgorICAg
ICAgICBEaW1lbnNpb25zIGFyZSBhbHNvIHN0b3JlZCBpbiBXZWJBVlBsYXllckxheWVyIHNvIGl0
IGNhbiBtYWtlIGRlY2lzaW9ucyBhYm91dAorICAgICAgICBhbmltYXRpbmcgdGhlIHZpZGVvIGxh
eWVyLgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0
ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZW50ZXJGdWxsc2NyZWVuKTogCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFudXBGdWxsc2NyZWVuKToKKyAgICAgICAgU3RyYWln
aHRmb3J3YXJkIGxheWVyIHRvIHZpZXcgY29udmVyc2lvbi4KKworICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSk6CisgICAg
ICAgIFNldCB2aWV3IGZyYW1lIHVzaW5nIHRoZSB2aWV3IGhpZXJhcmNoeSBpbnN0ZWFkIG9mIGFz
c3VtaW5nIGl0IGlzIGRpcmVjdGx5IGluIGEgd2luZG93LgorCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICBTZXQgdmll
dyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVyYXJjaHkgaW5zdGVhZCBvZiBhc3N1bWluZyBpdCBp
cyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgYmVmb3JlIGNh
bGxpbmcgZGlkRXhpdEZ1bGxzY3JlZW4oKSB0byBhbGxvd3MgQ0FUcmFuc2FjdGlvbnMgdG8gY29t
cGxldGUuCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1
cEZ1bGxzY3JlZW4pOgorICAgICAgICBTZXQgdmlldyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVy
YXJjaHkgaW5zdGVhZCBvZiBhc3N1bWluZyBpdCBpcyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKyAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMgYmVmb3JlIGNhbGxpbmcgZGlkU2V0dXBGdWxsc2NyZWVuKCkg
dG8gYWxsb3dzIENBVHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLgorCisgICAgICAgICgtW1dlYkNB
TGF5ZXJIb3N0V3JhcHBlciBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNBTGF5
ZXJIb3N0V3JhcHBlciBzZXRWaWRlb1N1YmxheWVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJDQUxheWVySG9zdFdyYXBwZXIgdmlkZW9TdWJsYXllcl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJDQUxheWVySG9zdFdyYXBwZXIgc2V0Qm91bmRzOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJDQUxheWVySG9zdFdyYXBwZXIgcmVzb2x2ZUJvdW5kc10pOiBEZWxldGVkLgorICAgICAg
ICBDbGFzcyBXZWJDQUxheWVySG9zdFdyYXBwZXIgZGVsZXRlZC4gRnVuY3Rpb25hbGl0eSByb2xs
ZWQgaW50byBXZWJBVlBsYXllckxheWVyLgorCisgICAgICAgICgrW1dlYkFWVmlkZW9MYXllciB2
aWRlb0xheWVyXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBpbml0XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRQbGF5ZXJWaWV3Q29udHJv
bGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZWaWRlb0xheWVyIHNldFZpZGVvU3Vi
bGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRCb3VuZHM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRWaWRlb0xheWVyR3Jh
dml0eTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZWaWRlb0xheWVyIHZpZGVvTGF5ZXJH
cmF2aXR5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBlbnRlclBJUE1v
ZGVSZWRpcmVjdGluZ1ZpZGVvVG9MYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZW
aWRlb0xheWVyIGxlYXZlUElQTW9kZV0pOiBEZWxldGVkLgorICAgICAgICBDbGFzcyBXZWJBVlZp
ZGVvTGF5ZXIgZGVsZXRlZC4gRnVuY3Rpb25hbGl0eSByb2xsZWQgaW50byBXZWJBVlBsYXllckxh
eWVyLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Lm1tOgorICAgICAgICBObyBuZWVkIHRvIHN0b3JlIGZyYW1lIGFuZCBncmF2aXR5
IGluIHRoZSBtb2RlbC4gSXQgaXMgc3RvcmVkIGluIHRoZSBVSSB3aGVyZSBpdCBpcyB1c2VkLgor
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dmlkZW9MYXll
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Ojp2aWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
c3BpL2NvY29hL0FWS2l0U1BJLmg6IEFkZCBBVlBsYXllckxheWVyVmlldy4KKwogMjAxNS0wNy0w
OSAgTWF0dGhldyBEYWl0ZXIgIDxtZGFpdGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc2VjdGlvbiBvZiBlbnVtZXJhdGVEZXZpY2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMjllNTVlY2VhOWM4M2IyMmViYjQ0NmY4ZWRkNDdhYTNjNGQ5ODNhNS4uZjA0MTBk
NzlkYzIxZTQyOTBkMjMxYWZmNjI5YWJjMjYzM2RiNmE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQwIEBACisyMDE1LTA3LTIwICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZG9wdCBBVlBsYXllckxheWVyVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2ODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENBTGF5ZXJIb3N0IGlzIHJlcGxhY2VkIHdpdGgg
V2ViTGF5ZXJIb3N0VmlldyB0byBiZSBjb21wYXRpYmxlIHdpdGggVUlWaWV3IGFuaW1hdGlvbnMu
CisgICAgICAgIHZpZGVvTGF5ZXJGcmFtZSBhbmQgdmlkZW9MYXllckdyYXZpdHkgbm8gbG9uZ2Vy
IG5lZWQgdG8gYmUgc3RvcmVkIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkCisgICAgICAgIHdoZXJl
IHRoZXkgYXJlIHVzZWQgaW4gdGhlIGludGVyZmFjZS4gU29tZSBhbmltYXRpb24gaXMgaW1wcm92
ZWQgaW4gdGhlIGNvbnZlcnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoK1tXZWJMYXllckhvc3RWaWV3
IGxheWVyQ2xhc3NdKTogQWRkIGNsYXNzIFdlYkxheWVySG9zdFZpZXcuCisgICAgICAgICgtW1dl
YkxheWVySG9zdFZpZXcgY29udGV4dElEXSk6CisgICAgICAgICgtW1dlYkxheWVySG9zdFZpZXcg
c2V0Q29udGV4dElEOl0pOgorICAgICAgICAoLVtXZWJMYXllckhvc3RWaWV3IGxheWVySG9zdF0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFs
aWRhdGUpOiBsYXllciAtPiB2aWV3CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKToKKyAgICAgICAgQXBwbHkgdGhl
IGhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvciB0cmFuc2Zvcm0gdG8gLXN1YmxheWVyVHJhbnNmb3Jt
IGluc3RlYWQgb2YgdG8KKyAgICAgICAgLXRyYW5zZm9ybS4gVGhpcyBtb3JlIGRpcmVjdGx5IGlu
dmVydHMgdGhlIHRyYW5mb3JtIFdlYlByb2Nlc3MgYW5kIGFsbG93cyAtdHJhbnNmb3JtCisgICAg
ICAgIHRvIGJlIHVzZWQgZm9yIGFuaW1hdGlvbiBpbiB0aGUgVUlQcm9jZXNzLiBUaGlzIGlzIGlt
cG9ydGFudCBiZWNhdXNlIFVJVmlldydzIGFjdGlvbnMKKyAgICAgICAgYW5pbWF0ZSAtdHJhbnNm
b3JtLCBidXQgbm90IC1zdWJsYXllclRyYXNmb3JtLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOiBsYXllciAt
PiB2aWV3CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
c2V0VmlkZW9MYXllckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp2aWRlb0xheWVyRnJhbWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNldFZpZGVvTGF5ZXJH
cmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0Ojp2aWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0Vs
ZW1lbnQpOgorICAgICAgICBTZXQgaW5pdGlhbCB2aWRlbyBsYXllciBmcmFtZSB0byBmaXggc3Rh
cnQgcG9pbnQgb2YgYW5pbWF0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIGRpc3BhdGNoX2FzeW5j
IGFsbG93cyB0aGUgQ0FUcmFuc2FjdGlvbiB0byBjb21wbGV0ZSBiZWZvcmUgY29udGludWluZyB3
aXRoIHRoZSBhbmltYXRpb24uCisgICAgICAgIFRoaXMgcHJldmVudHMgYSBmbGFzaCBkdXJpbmcg
YW5pbWF0aW9uLgorCiAyMDE1LTA3LTA5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBSZXBvcnQgdGhlIGZpcnN0IHBhaW50IGFmdGVyIGNvbW1pdHRp
bmcgYSBsb2FkIGFzIGEgcmVuZGVyaW5nIHByb2dyZXNzIGV2ZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA3YmFiNWM3OGM1ZmQ5M2EyZjBhNTc2YWM1ZjljMDk1N2ExNThhOGRiLi5lOThk
ZmQ5YWZjMWFhN2Y0MzM4NWJhZGQwODZlNzgzYTViNWQzNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTExMjQsOSArMTEyNCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKICAgICBD
QUNvbnRleHQgKm5ld0NvbnRleHQgPSBuaWw7CiAgICAgCiAgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgJiYgbV92aWRlb0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1fdmlk
ZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKLSAgICAgICAgW21fdmlkZW9MYXllciByZW1v
dmVGcm9tU3VwZXJsYXllcl07CiAgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGluc2Vy
dFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAgICAgICBbbV92aWRl
b0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53
aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07CiAgICAgICAgIG5ld0Nv
bnRleHQgPSBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBjb250ZXh0XTsKICAgICB9IGVsc2UgaWYg
KG1fdmlkZW9JbmxpbmVMYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKICAgICAgICAgW21fdmlkZW9M
YXllciBzZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVyIGJvdW5kc11dOwpAQCAtMTE1OCwxMSAr
MTE1Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRTdHlsZTpuaWxd
OyAvLyBUaGlzIGVuYWJsZXMgYWN0aW9ucywgaS5lLiBpbXBsaWNpdCBhbmltYXRpb25zLgotICAg
ICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCBmcmFtZS53aWR0aCgpLCBmcmFtZS5oZWlnaHQoKSldOwotICAg
ICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwotICAgICAgICBbbV92aWRlb0xheWVyIHdlYl9k
aXNhYmxlQWxsQWN0aW9uc107CiAgICAgfQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0K
QEAgLTExODIsOCArMTE3NywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OgogICAgICAgICB2
aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDsKICAgICBl
bHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIAorICAgIGlmIChbbV92aWRl
b0xheWVyIHZpZGVvR3Jhdml0eV0gPT0gdmlkZW9HcmF2aXR5KQorICAgICAgICByZXR1cm47CiAK
ICAgICBbbV92aWRlb0xheWVyIHNldFZpZGVvR3Jhdml0eTp2aWRlb0dyYXZpdHldOworICAgIHN5
bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBkMTlh
ZjAxZjllOWM5NzAyM2Q5OWMwOTE0ZGQ5YzRmMDNkNWYxYWJjLi42MGQyOGJjMmZkM2MyOTJlNDI2
ZTNlYTlmMWZhNmI4ZTc5ZTBhMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0K
QEAgLTMwLDYgKzMwLDggQEAKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5oIgogCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJRdWFydHpDb3JlU1BJLmgi
CisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9y
dCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCIKICNpbXBvcnQgIldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgiCkBAIC0zNyw2ICszOSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFJ1bi5oPgogCitTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNT
KFVJS2l0LCBVSVZpZXcpCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAjaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gODAyMDAgfHwgIUhBVkUoQVZLSVQpCkBAIC0x
MjksOSArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nhbm5pbmcoKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZnJhbWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdy
YXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBWaWRlb0dyYXZpdHkgdmlkZW9MYXllckdyYXZpdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2dyYXZpdHk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRp
YU9wdGlvbih1aW50NjRfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwpAQCAtMTM5LDEwICsxNDIsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV9pbnRlcmZhY2U7
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtX21vZGVs
OwogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBtX3ZpZGVvRWxlbWVudDsKLSAgICBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0Z1bGxzY3JlZW5MYXllcjsKKyAgICBSZXRhaW5Q
dHI8VUlWaWV3PiBtX3ZpZGVvRnVsbHNjcmVlblZpZXc7CiAgICAgUmV0YWluUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKLSAgICBGbG9hdFJlY3QgbV9mcmFt
ZTsKLSAgICBWaWRlb0dyYXZpdHkgbV9ncmF2aXR5OwogfTsKIAogI3ByYWdtYSBtYXJrIFdlYlZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyCkBAIC0xNTEsOCArMTUyLDkgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKIHsK
ICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgV2ViVGhyZWFkUnVuKFtz
dHJvbmdUaGlzLCB0aGlzXSB7Ci0gICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOworICAgIFJldGFpblB0cjxDQUxheWVy
PiB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdOwor
ICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXJd
IHsKKyAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCkpOwogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10gewogICAgICAgICAgICAgbV9pbnRlcmZhY2Ut
PmVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICB9KTsKQEAgLTE3Nyw2ICsxNzksNyBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVl
bigpCiAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKG51bGxwdHIp
OwogICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihu
dWxscHRyKTsKICAgICBtX2ludGVyZmFjZSA9IG51bGxwdHI7CisgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5WaWV3ID0gbmlsOwogICAgIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXNdIHsKQEAgLTE4NSw3ICsxODgsNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVlbigpCiAgICAgICAgIG1fbW9kZWwt
PnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbV9tb2RlbCA9IG51bGxwdHI7CiAg
ICAgICAgIG1fdmlkZW9FbGVtZW50ID0gbnVsbHB0cjsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllciA9IG5pbDsKICAgICAgICAgCiAgICAgICAgIFttX2NvbnRyb2xsZXIgZGlkRmluaXNo
RnVsbHNjcmVlbjp0aGlzXTsKICAgICB9KTsKQEAgLTQ1MCwxOCArNDUyLDI1IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigp
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVy
RnJhbWUoRmxvYXRSZWN0IGZyYW1lKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAg
IG1fZnJhbWUgPSBmcmFtZTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlz
LCB0aGlzLCBmcmFtZV0geworICAgIFJldGFpblB0cjxDQUxheWVyPiB2aWRlb0Z1bGxzY3JlZW5M
YXllciA9IFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdOworCisgICAgbWFjaF9wb3J0X25h
bWVfdCBmZW5jZVBvcnQgPSBbW3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRdIGNyZWF0ZUZl
bmNlUG9ydF07CisgICAgCisgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCBmcmFt
ZSwgZmVuY2VQb3J0LCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0geworICAgICAgICBbQ0FUcmFuc2Fj
dGlvbiBiZWdpbl07CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0aW9u
OjBdOwogICAgICAgICBpZiAobV9tb2RlbCkKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVv
TGF5ZXJGcmFtZShmcmFtZSk7CisgICAgICAgIFtbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4
dF0gc2V0RmVuY2VQb3J0OmZlbmNlUG9ydF07CisgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRl
KG1hY2hfdGFza19zZWxmKCksIGZlbmNlUG9ydCk7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNv
bW1pdF07CiAgICAgfSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRl
b0dyYXZpdHkgdmlkZW9HcmF2aXR5KQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAg
IG1fZ3Jhdml0eSA9IHZpZGVvR3Jhdml0eTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtz
dHJvbmdUaGlzLCB0aGlzLCB2aWRlb0dyYXZpdHldIHsKICAgICAgICAgaWYgKG1fbW9kZWwpCkBA
IC01MTAsMTkgKzUxOSwxOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgIG1faW50ZXJm
YWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZSgpOwogICAgIG1f
aW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcih0aGlzKTsKICAg
ICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwodGhpcyk7CisgICAgbV92
aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxsb2NdIGlu
aXRdKTsKICAgICAKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlz
LCB2aWV3UmVmLCBtb2RlXSB7CiAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7CiAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZSh0aGlzKTsKICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9FbGVt
ZW50KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXll
ciA9IFtDQUxheWVyIGxheWVyXTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWxsb3dzUGljdHVy
ZUluUGljdHVyZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYVNlc3Npb24oKS5hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlKCptX3ZpZGVvRWxlbWVudC5nZXQoKSk7CiAgICAgICAgIEludFJlY3QgdmlkZW9F
bGVtZW50Q2xpZW50UmVjdCA9IG1fdmlkZW9FbGVtZW50LT5jbGllbnRSZWN0KCk7CiAgICAgICAg
IAogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ry
b25nVGhpcywgdGhpcywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZiwgbW9kZSwgYWxs
b3dzUGljdHVyZUluUGljdHVyZV0gewotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldHVwRnVs
bHNjcmVlbigqbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgdmlkZW9FbGVtZW50Q2xpZW50
UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CisgICAg
ICAgICAgICBtX2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3ZpZGVvRnVsbHNjcmVlblZp
ZXcuZ2V0KCksIHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYuZ2V0KCksIG1vZGUsIGFs
bG93c1BpY3R1cmVJblBpY3R1cmUpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0LmgKaW5kZXggOWU3ZGY2Zjc3YjBhMzBmNmJhZmZlNGY3ZDRmMDU1ZjI3
ZTE5NGM3My4uMDRhMmU4YTk3YWYxOWIzYjcxMTAxOGUxOWVkOTk5NDMzOWI4NTQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTQ1LDggKzQ1LDggQEAgT0JKQ19DTEFTUyBVSVZp
ZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVdpbmRvdzsKIE9CSkNfQ0xBU1MgVUlWaWV3Owog
T0JKQ19DTEFTUyBDQUxheWVyOwotT0JKQ19DTEFTUyBXZWJBVlZpZGVvTGF5ZXI7Ci1PQkpDX0NM
QVNTIFdlYkNBTGF5ZXJIb3N0V3JhcHBlcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllclZp
ZXc7CitPQkpDX0NMQVNTIFdlYkFWUGxheWVyTGF5ZXI7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xh
c3MgU3RyaW5nOwpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9v
bCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxp
emVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIHNldHVwRnVsbHNjcmVlbihQbGF0Zm9ybUxheWVyJiwgY29uc3QgSW50UmVjdCYgaW5p
dGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0dXBGdWxsc2NyZWVuKFVJVmlldyYsIGNvbnN0IEludFJl
Y3QmIGluaXRpYWxSZWN0LCBVSVZpZXcgKiwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbihjb25zdCBJbnRSZWN0JiBmaW5h
bFJlY3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGVhbnVwRnVsbHNjcmVl
bigpOwpAQCAtMTMzLDkgKzEzMyw2IEBAIHByb3RlY3RlZDoKIAogICAgIFJldGFpblB0cjxXZWJB
VlBsYXllckNvbnRyb2xsZXI+IG1fcGxheWVyQ29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8QVZQ
bGF5ZXJWaWV3Q29udHJvbGxlcj4gbV9wbGF5ZXJWaWV3Q29udHJvbGxlcjsKLSAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbV92aWRlb0xheWVyOwotICAgIFJldGFpblB0cjxXZWJBVlZpZGVvTGF5ZXI+
IG1fdmlkZW9MYXllckNvbnRhaW5lcjsKLSAgICBSZXRhaW5QdHI8V2ViQ0FMYXllckhvc3RXcmFw
cGVyPiBtX2xheWVySG9zdFdyYXBwZXI7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxscHRyIH07CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0ciB9Owog
CkBAIC0xNDQsNiArMTQxLDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxVSVZpZXdDb250
cm9sbGVyPiBtX3ZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxVSVZpZXc+IG1fcGFyZW50
VmlldzsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fcGFyZW50V2luZG93OworICAgIFJldGFp
blB0cjxXZWJBVlBsYXllckxheWVyVmlldz4gbV9wbGF5ZXJMYXllclZpZXc7CiAgICAgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKICAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2s7CiAgICAgYm9vbCBtX2FsbG93
c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KaW5kZXggNzRiMWMxOTk1MTFjNDk2M2FkZTE3MzI2NDNjZmZjZjk0MTQ4NjFjZS4u
ZjRiMzYwNjM1OGZiYTIzZjQ5Mzc1YzI1ZTUxNzdmYTcyNDhmYzY4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQpAQCAtMzksNiArMzksOCBAQAogI2ltcG9ydCAiV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlRpbWUuaD4KICNpbXBvcnQg
PFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxvYmpjL21lc3NhZ2UuaD4KKyNpbXBvcnQgPG9iamMv
cnVudGltZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC01MCwxMSArNTIs
MTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNPRlRfTElOS19GUkFNRVdPUksoQVZG
b3VuZGF0aW9uKQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXllcikK
K1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNp
emUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVy
VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5TU3Ry
aW5nICopCiAKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZL
aXQsIEFWUGxheWVyQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJW
aWV3Q29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWluZykKK1NP
RlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJMYXllclZpZXcpCitTT0ZUX0xJTktfQ0xBU1Mo
QVZLaXQsIEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldykKIAogU09GVF9MSU5LX0ZS
QU1FV09SSyhVSUtpdCkKIFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlBcHBsaWNhdGlvbikKQEAg
LTU2OCwxMDEgKzU3NSwyMSBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwogQGltcGxlbWVudGF0
aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24KIEBlbmQKIAotCi1AaW50ZXJmYWNlIFdlYkNB
TGF5ZXJIb3N0V3JhcHBlciA6IENBTGF5ZXIKLUBwcm9wZXJ0eSAoYXNzaWduKSBXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbCogbW9kZWw7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJDQUxheWVy
SG9zdFdyYXBwZXIgewotICAgIFJldGFpblB0cjxDQUxheWVyPiBfdmlkZW9TdWJsYXllcjsKLX0K
LQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9y
bVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91bmRz
KSBvYmplY3Q6bmlsXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpc2V0Vmlk
ZW9TdWJsYXllcjooQ0FMYXllciopdmlkZW9TdWJsYXllcgotewotICAgIF92aWRlb1N1YmxheWVy
ID0gdmlkZW9TdWJsYXllcjsKLSAgICBbc2VsZiBhZGRTdWJsYXllcjp2aWRlb1N1YmxheWVyXTsK
LX0KLQotLSAoQ0FMYXllciopdmlkZW9TdWJsYXllcgotewotICAgIHJldHVybiBfdmlkZW9TdWJs
YXllci5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRCb3VuZHM6KENHUmVjdClib3VuZHMKLXsKLSAg
ICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QoYm91bmRzLCBzZWxmLmJvdW5kcykpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91bmRzXTsKLQotICAgIFtfdmlkZW9TdWJs
YXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRYKGJvdW5kcyksIENHUmVj
dEdldE1pZFkoYm91bmRzKSldOwotCi0gICAgaWYgKCFzZWxmLm1vZGVsKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBGbG9hdFJlY3QgdmlkZW9GcmFtZSA9IHNlbGYubW9kZWwtPnZpZGVvTGF5ZXJG
cmFtZSgpOwotICAgIEZsb2F0UmVjdCB0YXJnZXRGcmFtZTsKLSAgICBzd2l0Y2ggKHNlbGYubW9k
ZWwtPnZpZGVvTGF5ZXJHcmF2aXR5KCkpIHsKLSAgICBjYXNlIFdlYkNvcmU6OldlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemU6Ci0gICAgICAgIHRhcmdldEZyYW1lID0g
Ym91bmRzOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q6Ci0gICAgICAgIHRhcmdldEZyYW1l
ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvRnJhbWUuc2l6ZSgp
LmFzcGVjdFJhdGlvKCksIGJvdW5kcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw6
Ci0gICAgICAgIHRhcmdldEZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5k
UmVjdCh2aWRlb0ZyYW1lLnNpemUoKS5hc3BlY3RSYXRpbygpLCBib3VuZHMpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNE
TWFrZVNjYWxlKHRhcmdldEZyYW1lLndpZHRoKCkgLyB2aWRlb0ZyYW1lLndpZHRoKCksIHRhcmdl
dEZyYW1lLmhlaWdodCgpIC8gdmlkZW9GcmFtZS5oZWlnaHQoKSwgMSk7Ci0gICAgW192aWRlb1N1
YmxheWVyIHNldFN1YmxheWVyVHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0KLSAgICBbTlNPYmplY3Qg
Y2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOwotICAgIFtzZWxmIHBlcmZvcm1TZWxl
Y3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpb
Q0FUcmFuc2FjdGlvbiBhbmltYXRpb25EdXJhdGlvbl0gKyAwLjFdOwotfQotCi0tICh2b2lkKXJl
c29sdmVCb3VuZHMKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVz
dHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVj
dDpuaWxdOwotICAgIGlmICghc2VsZi5tb2RlbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW0NB
VHJhbnNhY3Rpb24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0
aW9uOjBdOwotCi0gICAgW192aWRlb1N1YmxheWVyIHNldFN1YmxheWVyVHJhbnNmb3JtOkNBVHJh
bnNmb3JtM0RJZGVudGl0eV07Ci0gICAgc2VsZi5tb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKFtz
ZWxmIGJvdW5kc10pOwotICAgIAotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19Ci1AZW5k
Ci0KLUBpbnRlcmZhY2UgV2ViQVZWaWRlb0xheWVyIDogQ0FMYXllciA8QVZWaWRlb0xheWVyPgot
KyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyOwotQHByb3BlcnR5IChub25hdG9taWMpIEFW
VmlkZW9MYXllckdyYXZpdHkgdmlkZW9MYXllckdyYXZpdHk7CitAaW50ZXJmYWNlIFdlYkFWUGxh
eWVyTGF5ZXIgOiBDQUxheWVyCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0cmlu
ZyAqdmlkZW9HcmF2aXR5OwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlciA9IGlzUmVhZHlG
b3JEaXNwbGF5KSBCT09MIHJlYWR5Rm9yRGlzcGxheTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBD
R1JlY3QgdmlkZW9SZWN0OwotLSAodm9pZClzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQbGF5
ZXJWaWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyOwotLSAodm9pZClzZXRQbGF5
ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbikgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250
cm9sbGVyOwogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgQ0FMYXllciogdmlkZW9TdWJs
YXllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNEaWN0aW9uYXJ5
ICpwaXhlbEJ1ZmZlckF0dHJpYnV0ZXM7CitAcHJvcGVydHkgQ0dTaXplIHZpZGVvRGltZW5zaW9u
czsKK0Bwcm9wZXJ0eSBDR1JlY3QgbW9kZWxWaWRlb0xheWVyRnJhbWU7CiBAZW5kCiAKLUBpbXBs
ZW1lbnRhdGlvbiBXZWJBVlZpZGVvTGF5ZXIKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckxh
eWVyCiB7CiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gX2F2UGxheWVyQ29u
dHJvbGxlcjsKLSAgICBSZXRhaW5QdHI8QVZQbGF5ZXJWaWV3Q29udHJvbGxlcj4gX2F2UGxheWVy
Vmlld0NvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IF92aWRlb1N1YmxheWVyOwot
ICAgIEFWVmlkZW9MYXllckdyYXZpdHkgX3ZpZGVvTGF5ZXJHcmF2aXR5OwotfQotCi0rKFdlYkFW
VmlkZW9MYXllciAqKXZpZGVvTGF5ZXIKLXsKLSAgICByZXR1cm4gW1tbV2ViQVZWaWRlb0xheWVy
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfdmlk
ZW9HcmF2aXR5OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdApAQCAtNjcwLDI2ICs1OTcsMzEg
QEAgc3RhdGljIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVl
blJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFMKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAg
IGlmIChzZWxmKSB7CiAgICAgICAgIFtzZWxmIHNldE1hc2tzVG9Cb3VuZHM6WUVTXTsKLSAgICAg
ICAgW3NlbGYgc2V0VmlkZW9MYXllckdyYXZpdHk6QVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZUFz
cGVjdF07CisgICAgICAgIF92aWRlb0dyYXZpdHkgPSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0KCk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCistICh2b2lkKWRlYWxs
b2MKK3sKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFy
Z2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOwor
ICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVy
Q29udHJvbGxlcgoreworICAgIHJldHVybiAoQVZQbGF5ZXJDb250cm9sbGVyICopX2F2UGxheWVy
Q29udHJvbGxlci5nZXQoKTsKK30KKwogLSAodm9pZClzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBs
YXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyCiB7CiAgICAgQVNTRVJUKCFwbGF5ZXJD
b250cm9sbGVyIHx8IFtwbGF5ZXJDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFWUGxheWVy
Q29udHJvbGxlciBjbGFzc11dKTsKICAgICBfYXZQbGF5ZXJDb250cm9sbGVyID0gKFdlYkFWUGxh
eWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7CiB9CiAKLS0gKHZvaWQpc2V0UGxheWVy
Vmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJv
bGxlcgotewotICAgIF9hdlBsYXllclZpZXdDb250cm9sbGVyID0gcGxheWVyVmlld0NvbnRyb2xs
ZXI7Ci19Ci0KIC0gKHZvaWQpc2V0VmlkZW9TdWJsYXllcjooQ0FMYXllciAqKXZpZGVvU3VibGF5
ZXIKIHsKICAgICBfdmlkZW9TdWJsYXllciA9IHZpZGVvU3VibGF5ZXI7Ci0gICAgW3NlbGYgYWRk
U3VibGF5ZXI6dmlkZW9TdWJsYXllcl07CiB9CiAKIC0gKENBTGF5ZXIqKXZpZGVvU3VibGF5ZXIK
QEAgLTY5OSwyNyArNjMxLDc5IEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAKIC0gKHZvaWQp
c2V0Qm91bmRzOihDR1JlY3QpYm91bmRzCiB7CisgICAgaWYgKENHUmVjdEVxdWFsVG9SZWN0KGJv
dW5kcywgc2VsZi5ib3VuZHMpKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgW3N1cGVyIHNl
dEJvdW5kczpib3VuZHNdOworICAgIAorICAgIGlmIChbX3ZpZGVvU3VibGF5ZXIgc3VwZXJsYXll
cl0gIT0gc2VsZikKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFtfdmlkZW9TdWJsYXllciBz
dXBlcmxheWVyXSA9PSBzZWxmKSB7Ci0gICAgICAgIFtfdmlkZW9TdWJsYXllciBzZXRQb3NpdGlv
bjpDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRYKGJvdW5kcyksIENHUmVjdEdldE1pZFkoYm91bmRz
KSldOwotICAgICAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0Qm91bmRzOmJvdW5kc107Ci0gICAgfQor
ICAgIFtfdmlkZW9TdWJsYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRY
KGJvdW5kcyksIENHUmVjdEdldE1pZFkoYm91bmRzKSldOworICAgIAorICAgIGlmICghW19hdlBs
YXllckNvbnRyb2xsZXIgZGVsZWdhdGVdKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFJl
Y3Qgc291cmNlVmlkZW9GcmFtZTsKKyAgICBGbG9hdFJlY3QgdGFyZ2V0VmlkZW9GcmFtZTsKKyAg
ICBmbG9hdCB2aWRlb0FzcGVjdFJhdGlvID0gc2VsZi52aWRlb0RpbWVuc2lvbnMud2lkdGggLyBz
ZWxmLnZpZGVvRGltZW5zaW9ucy5oZWlnaHQ7CisgICAgCisgICAgaWYgKFtnZXRBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplKCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgewor
ICAgICAgICBzb3VyY2VWaWRlb0ZyYW1lID0gc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZTsKKyAg
ICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9IHNlbGYuYm91bmRzOworICAgIH0gZWxzZSBpZiAoW2dl
dEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52
aWRlb0dyYXZpdHldKSB7CisgICAgICAgIHNvdXJjZVZpZGVvRnJhbWUgPSBsYXJnZXN0UmVjdFdp
dGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVv
TGF5ZXJGcmFtZSk7CisgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBsYXJnZXN0UmVjdFdpdGhB
c3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOworICAg
IH0gZWxzZSBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKCkgaXNF
cXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgeworICAgICAgICBzb3VyY2VWaWRlb0Zy
YW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2aWRlb0FzcGVjdFJh
dGlvLCBzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKKyAgICAgICAgc2VsZi5tb2RlbFZpZGVv
TGF5ZXJGcmFtZSA9IENHUmVjdE1ha2UoMCwgMCwgc291cmNlVmlkZW9GcmFtZS53aWR0aCgpLCBz
b3VyY2VWaWRlb0ZyYW1lLmhlaWdodCgpKTsKKyAgICAgICAgW19hdlBsYXllckNvbnRyb2xsZXIg
ZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7
CisgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9B
cm91bmRSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBVSVZpZXcgKnZpZXcgPSBbX3ZpZGVv
U3VibGF5ZXIgZGVsZWdhdGVdOworICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IENH
QWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKHRhcmdldFZpZGVvRnJhbWUud2lkdGgoKSAvIHNvdXJj
ZVZpZGVvRnJhbWUud2lkdGgoKSwgdGFyZ2V0VmlkZW9GcmFtZS5oZWlnaHQoKSAvIHNvdXJjZVZp
ZGVvRnJhbWUuaGVpZ2h0KCkpOworICAgIFt2aWV3IHNldFRyYW5zZm9ybTp0cmFuc2Zvcm1dOwor
ICAgIAorICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJn
ZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgb2JqZWN0Om5pbF07Cisg
ICAgCisgICAgaWYgKCFDR0FmZmluZVRyYW5zZm9ybUVxdWFsVG9UcmFuc2Zvcm0oQ0dBZmZpbmVU
cmFuc2Zvcm1JZGVudGl0eSwgdHJhbnNmb3JtKSkKKyAgICAgICAgW3NlbGYgcGVyZm9ybVNlbGVj
dG9yOkBzZWxlY3RvcihyZXNvbHZlQm91bmRzKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OltD
QVRyYW5zYWN0aW9uIGFuaW1hdGlvbkR1cmF0aW9uXSArIDAuMV07Cit9CisKKy0gKHZvaWQpcmVz
b2x2ZUJvdW5kcworeworICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0
c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgb2JqZWN0
Om5pbF07CisgICAgaWYgKCFbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0pCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBpZiAoW192aWRlb1N1YmxheWVyIHN1cGVybGF5ZXJdICE9IHNl
bGYpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Cisg
ICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CisgICAgCisgICAgWyhV
SVZpZXcgKilbX3ZpZGVvU3VibGF5ZXIgZGVsZWdhdGVdIHNldFRyYW5zZm9ybTpDR0FmZmluZVRy
YW5zZm9ybUlkZW50aXR5XTsKKyAgICBzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lID0gW3NlbGYg
Ym91bmRzXTsKKyAgICBbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNldFZpZGVvTGF5
ZXJGcmFtZShzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKKyAgICAKKyAgICBbQ0FUcmFuc2Fj
dGlvbiBjb21taXRdOwogfQogCi0tICh2b2lkKXNldFZpZGVvTGF5ZXJHcmF2aXR5OihBVlZpZGVv
TGF5ZXJHcmF2aXR5KXZpZGVvTGF5ZXJHcmF2aXR5CistICh2b2lkKXNldFZpZGVvR3Jhdml0eToo
TlNTdHJpbmcgKil2aWRlb0dyYXZpdHkKIHsKLSAgICBfdmlkZW9MYXllckdyYXZpdHkgPSB2aWRl
b0xheWVyR3Jhdml0eTsKKyAgICBfdmlkZW9HcmF2aXR5ID0gdmlkZW9HcmF2aXR5OwogICAgIAog
ICAgIGlmICghW19hdlBsYXllckNvbnRyb2xsZXIgZGVsZWdhdGVdKQogICAgICAgICByZXR1cm47
CiAKICAgICBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5IGdy
YXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0OwotICAgIGlmICh2aWRlb0xheWVyR3Jhdml0eSA9PSBBVlZpZGVvTGF5ZXJHcmF2
aXR5UmVzaXplKQorICAgIGlmICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0
eVJlc2l6ZSgpKQogICAgICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZTsKLSAgICBpZiAodmlkZW9MYXllckdyYXZpdHkgPT0g
QVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZUFzcGVjdCkKKyAgICBpZiAodmlkZW9HcmF2aXR5ID09
IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKSkKICAgICAgICAgZ3Jhdml0eSA9
IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3Q7Ci0gICAgZWxzZSBpZiAodmlkZW9MYXllckdyYXZpdHkgPT0gQVZWaWRlb0xheWVyR3Jhdml0
eVJlc2l6ZUFzcGVjdEZpbGwpCisgICAgZWxzZSBpZiAodmlkZW9HcmF2aXR5ID09IGdldEFWTGF5
ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKCkpCiAgICAgICAgIGdyYXZpdHkgPSBXZWJD
b3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0Rmls
bDsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzI3LDI0ICs3
MTEsMTU5IEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1
bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAgICAgW19hdlBsYXllckNvbnRyb2xs
ZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyR3Jhdml0eShncmF2aXR5KTsKIH0KIAotLSAoQVZW
aWRlb0xheWVyR3Jhdml0eSl2aWRlb0xheWVyR3Jhdml0eQorLSAoTlNTdHJpbmcgKil2aWRlb0dy
YXZpdHkKIHsKLSAgICByZXR1cm4gX3ZpZGVvTGF5ZXJHcmF2aXR5OworICAgIHJldHVybiBfdmlk
ZW9HcmF2aXR5LmdldCgpOwogfQogCi0tICh2b2lkKWVudGVyUElQTW9kZVJlZGlyZWN0aW5nVmlk
ZW9Ub0xheWVyOihDQUxheWVyICopbGF5ZXIKKy0gKENHUmVjdCl2aWRlb1JlY3QKIHsKLSAgICBb
X3ZpZGVvU3VibGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFtsYXllciBhZGRTdWJs
YXllcjpfdmlkZW9TdWJsYXllci5nZXQoKV07CisgICAgZmxvYXQgdmlkZW9Bc3BlY3RSYXRpbyA9
IHNlbGYudmlkZW9EaW1lbnNpb25zLndpZHRoIC8gc2VsZi52aWRlb0RpbWVuc2lvbnMuaGVpZ2h0
OworICAgIAorICAgIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpIGlz
RXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCisgICAgICAgIHJldHVybiBsYXJnZXN0
UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3Vu
ZHMpOworICAgIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKSBp
c0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAgICAgICByZXR1cm4gc21hbGxl
c3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJv
dW5kcyk7CisKKyAgICByZXR1cm4gc2VsZi5ib3VuZHM7Cit9CisKKysgKE5TU2V0ICopa2V5UGF0
aHNGb3JWYWx1ZXNBZmZlY3RpbmdWaWRlb1JlY3QKK3sKKyAgICByZXR1cm4gW05TU2V0IHNldFdp
dGhPYmplY3RzOkAidmlkZW9EaW1lbnNpb25zIiwgQCJ2aWRlb0dyYXZpdHkiLCBuaWxdOworfQor
CitAZW5kCisKK0BpbnRlcmZhY2UgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
IDogQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3CitAZW5kCisKK3N0YXRpYyBDQUxh
eWVyKiBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyhpZCwg
U0VMKQoreworICAgIHJldHVybiBbV2ViQVZQbGF5ZXJMYXllciBjbGFzc107CiB9CiAKLS0gKHZv
aWQpbGVhdmVQSVBNb2RlCitzdGF0aWMgQ2xhc3MgZ2V0V2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3Q2xhc3MoKQogewotICAgIFtfdmlkZW9TdWJsYXllciByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07Ci0gICAgW3NlbGYgYWRkU3VibGF5ZXI6X3ZpZGVvU3VibGF5ZXIuZ2V0KCldOwor
ICAgIHN0YXRpYyBDbGFzcyB0aGVDbGFzcyA9IG5pbDsKKyAgICBpZiAoIXRoZUNsYXNzKSB7Cisg
ICAgICAgIHRoZUNsYXNzID0gb2JqY19hbGxvY2F0ZUNsYXNzUGFpcihnZXRBVlBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3IiwgMCk7CisgICAgICAgIG9iamNfcmVnaXN0ZXJDbGFzc1BhaXIodGhlQ2xhc3Mp
OworICAgICAgICBDbGFzcyBtZXRhQ2xhc3MgPSBvYmpjX2dldE1ldGFDbGFzcygiV2ViQVZQaWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCht
ZXRhQ2xhc3MsIEBzZWxlY3RvcihsYXllckNsYXNzKSwgKElNUClXZWJBVlBpY3R1cmVJblBpY3R1
cmVQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcywgIkBAOiIpOworICAgIH0KKyAgICByZXR1cm4g
dGhlQ2xhc3M7CiB9CisKK0BpbnRlcmZhY2UgV2ViQVZQbGF5ZXJMYXllclZpZXcgOiBBVlBsYXll
ckxheWVyVmlldworQHByb3BlcnR5IChyZXRhaW4pIFVJVmlldyogdmlkZW9WaWV3OwogQGVuZAog
CitzdGF0aWMgQ0FMYXllciogV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyhpZCwgU0VM
KQoreworICAgIHJldHVybiBbV2ViQVZQbGF5ZXJMYXllciBjbGFzc107Cit9CisKK3N0YXRpYyBB
VlBsYXllckNvbnRyb2xsZXIqIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIo
aWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIgPSBh
U2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxh
eWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJdOworICAgIHJldHVybiBbd2ViQVZQ
bGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXTsKK30KKworc3RhdGljIHZvaWQgV2ViQVZQbGF5
ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlcihpZCBhU2VsZiwgU0VMLCBBVlBsYXllckNv
bnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIpCit7CisgICAgQVZQbGF5ZXJMYXllclZpZXcgKnBs
YXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKndlYkFWUGxheWVy
TGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJd
OworICAgIFt3ZWJBVlBsYXllckxheWVyIHNldFBsYXllckNvbnRyb2xsZXI6IHBsYXllckNvbnRy
b2xsZXJdOworfQorCitzdGF0aWMgVUlWaWV3KiBXZWJBVlBsYXllckxheWVyVmlld192aWRlb1Zp
ZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIg
PSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFW
UGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJdOworICAgIENBTGF5ZXIqIHZp
ZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1YmxheWVyXTsKKyAgICBpZiAoIXZp
ZGVvTGF5ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgQVNTRVJUKFtbdmlkZW9MYXllciBk
ZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpnZXRVSVZpZXdDbGFzcygpXSk7CisgICAgcmV0dXJuIChV
SVZpZXcgKilbdmlkZW9MYXllciBkZWxlZ2F0ZV07Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxh
eWVyTGF5ZXJWaWV3X3NldFZpZGVvVmlldyhpZCBhU2VsZiwgU0VMLCBVSVZpZXcgKnZpZGVvVmll
dykKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7Cisg
ICAgV2ViQVZQbGF5ZXJMYXllciAqd2ViQVZQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVy
ICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CisgICAgW3dlYkFWUGxheWVyTGF5ZXIg
c2V0VmlkZW9TdWJsYXllcjpbdmlkZW9WaWV3IGxheWVyXV07Cit9CisKK3N0YXRpYyB2b2lkIFdl
YkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7CisgICAgV2ViQVZQbGF5ZXJMYXllclZpZXcg
KnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIEFWUGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXllclZpZXcgcGljdHVyZUluUGljdHVyZVBsYXll
ckxheWVyVmlld107CisKKyAgICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJB
VlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CisgICAgV2ViQVZQ
bGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3
IHBsYXllckxheWVyXTsKKyAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OmdldEFWTGF5
ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKV07CisgICAgW3BpcFBsYXllckxheWVyIHNldFZp
ZGVvU3VibGF5ZXI6cGxheWVyTGF5ZXIudmlkZW9TdWJsYXllcl07CisgICAgW3BpcFBsYXllckxh
eWVyIHNldFZpZGVvRGltZW5zaW9uczpwbGF5ZXJMYXllci52aWRlb0RpbWVuc2lvbnNdOworICAg
IFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6cGxheWVyTGF5ZXIudmlkZW9HcmF2aXR5
XTsKKyAgICBbcGlwUGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6cGxheWVyTGF5
ZXIubW9kZWxWaWRlb0xheWVyRnJhbWVdOworICAgIFtwaXBQbGF5ZXJMYXllciBzZXRQbGF5ZXJD
b250cm9sbGVyOnBsYXllckxheWVyLnBsYXllckNvbnRyb2xsZXJdOworICAgIFtwaXBWaWV3IGFk
ZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107Cit9CisKK3N0YXRpYyB2b2lkIFdl
YkFWUGxheWVyTGF5ZXJWaWV3X3N0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5
ZXJMYXllclZpZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJBVlBsYXllckxheWVyVmlldyAq
cGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXllckxheWVyVmlldyBhZGRTdWJ2aWV3
OnBsYXllckxheWVyVmlldy52aWRlb1ZpZXddOworfQorCitzdGF0aWMgQVZQaWN0dXJlSW5QaWN0
dXJlUGxheWVyTGF5ZXJWaWV3ICpXZWJBVlBsYXllckxheWVyVmlld19waWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7CisgICAgV2ViQVZQbGF5ZXJMYXllclZp
ZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGljdHVyZUluUGljdHVyZVBs
YXllckxheWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXllclZpZXcgdmFsdWVGb3JLZXk6QCJf
cGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyJdOworICAgIGlmICghcGlwVmlldykgewor
ICAgICAgICBwaXBWaWV3ID0gW1tnZXRXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZp
ZXdDbGFzcygpIGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dOworICAgICAgICBbcGxh
eWVyTGF5ZXJWaWV3IHNldFZhbHVlOnBpcFZpZXcgZm9yS2V5OkAiX3BpY3R1cmVJblBpY3R1cmVQ
bGF5ZXJMYXllclZpZXciXTsKKyAgICB9CisgICAgcmV0dXJuIHBpcFZpZXc7Cit9CisKK3N0YXRp
YyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X2RlYWxsb2MoaWQgYVNlbGYsIFNFTCkKK3sKKyAg
ICBXZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgUmV0
YWluUHRyPFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldz4gcGlwVmlldyA9IGFk
b3B0TlMoW3BsYXllckxheWVyVmlldyB2YWx1ZUZvcktleTpAIl9waWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3Il0pOworICAgIFtwbGF5ZXJMYXllclZpZXcgc2V0VmFsdWU6bmlsIGZvcktl
eTpAIl9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Il07CisgICAgb2JqY19zdXBlciBz
dXBlckNsYXNzIHsgcGxheWVyTGF5ZXJWaWV3LCBnZXRBVlBsYXllckxheWVyVmlld0NsYXNzKCkg
fTsKKyAgICBhdXRvIHN1cGVyX2RlYWxsb2MgPSByZWludGVycHJldF9jYXN0PHZvaWQoKikob2Jq
Y19zdXBlciosIFNFTCk+KG9iamNfbXNnU2VuZFN1cGVyKTsKKyAgICBzdXBlcl9kZWFsbG9jKCZz
dXBlckNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYykpOworfQorCisjcHJhZ21hIG1hcmsgLSBNZXRo
b2RzCisKK3N0YXRpYyBDbGFzcyBnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKCkKK3sKKyAg
ICBzdGF0aWMgQ2xhc3MgY2xhc3NXZWJBVlBsYXllckxheWVyVmlldyA9IG5pbDsKKyAgICBpZiAo
IWNsYXNzV2ViQVZQbGF5ZXJMYXllclZpZXcpIHsKKyAgICAgICAgY2xhc3NXZWJBVlBsYXllckxh
eWVyVmlldyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0QVZQbGF5ZXJMYXllclZpZXdDbGFz
cygpLCAiV2ViQVZQbGF5ZXJMYXllclZpZXciLCAwKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9k
KGNsYXNzV2ViQVZQbGF5ZXJMYXllclZpZXcsIEBzZWxlY3RvcihkZWFsbG9jKSwgKElNUClXZWJB
VlBsYXllckxheWVyVmlld19kZWFsbG9jLCAidkA6Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhv
ZChjbGFzc1dlYkFWUGxheWVyTGF5ZXJWaWV3LCBAc2VsZWN0b3Ioc2V0UGxheWVyQ29udHJvbGxl
cjopLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xsZXIsICJ2QDpA
Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZChjbGFzc1dlYkFWUGxheWVyTGF5ZXJWaWV3LCBA
c2VsZWN0b3IocGxheWVyQ29udHJvbGxlciksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxh
eWVyQ29udHJvbGxlciwgIkBAOiIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QoY2xhc3NXZWJB
VlBsYXllckxheWVyVmlldywgQHNlbGVjdG9yKHNldFZpZGVvVmlldzopLCAoSU1QKVdlYkFWUGxh
eWVyTGF5ZXJWaWV3X3NldFZpZGVvVmlldywgInZAOkAiKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0
aG9kKGNsYXNzV2ViQVZQbGF5ZXJMYXllclZpZXcsIEBzZWxlY3Rvcih2aWRlb1ZpZXcpLCAoSU1Q
KVdlYkFWUGxheWVyTGF5ZXJWaWV3X3ZpZGVvVmlldywgIkBAOiIpOworICAgICAgICBjbGFzc19h
ZGRNZXRob2QoY2xhc3NXZWJBVlBsYXllckxheWVyVmlldywgQHNlbGVjdG9yKHN0YXJ0Um91dGlu
Z1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXll
ckxheWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVy
VmlldywgInZAOiIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QoY2xhc3NXZWJBVlBsYXllckxh
eWVyVmlldywgQHNlbGVjdG9yKHN0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5
ZXJMYXllclZpZXcpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0b3BSb3V0aW5nVmlkZW9U
b1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJ2QDoiKTsKKyAgICAgICAgY2xhc3Nf
YWRkTWV0aG9kKGNsYXNzV2ViQVZQbGF5ZXJMYXllclZpZXcsIEBzZWxlY3RvcihwaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19waWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3LCAiQEA6Iik7CisKKyAgICAgICAgY2xhc3NfYWRkSXZh
cihjbGFzc1dlYkFWUGxheWVyTGF5ZXJWaWV3LCAiX3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXll
clZpZXciLCBzaXplb2YoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopLCBs
b2cyKHNpemVvZihXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKikpLCAiQCIp
OworICAgICAgICAKKyAgICAgICAgb2JqY19yZWdpc3RlckNsYXNzUGFpcihjbGFzc1dlYkFWUGxh
eWVyTGF5ZXJWaWV3KTsKKyAgICAgICAgQ2xhc3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xh
c3MoIldlYkFWUGxheWVyTGF5ZXJWaWV3Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZChtZXRh
Q2xhc3MsIEBzZWxlY3RvcihsYXllckNsYXNzKSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19s
YXllckNsYXNzLCAiQEA6Iik7CisgICAgfQorICAgIHJldHVybiBjbGFzc1dlYkFWUGxheWVyTGF5
ZXJWaWV3OworfQorCiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogICAgIDogbV9wbGF5ZXJDb250cm9sbGVyKGFkb3B0
TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkKIHsKQEAgLTgxOSw2ICs5
MzgsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdAogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKKyAgICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXll
ciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsK
KworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwg
aGVpZ2h0KV07CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRIYXNFbmFibGVkVmlkZW86aGFz
VmlkZW9dOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q29udGVudERpbWVuc2lvbnM6Q0dT
aXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiB9CkBAIC04ODMsMTQgKzEwMDUsMTQgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29s
IGVuYWJsZWQsIEV4dGVybmEKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tB
aXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZSA9IGxvY2FsaXplZERldmljZU5hbWU7CiAgICAgcGxh
eWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVybmFsUGxheWJhY2tUeXBl
OwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSA9IGVuYWJsZWQ7
Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKSBzZXRIaWRkZW46ZW5hYmxlZF07Cisg
ICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjplbmFibGVkXTsKIH0KIAogQGludGVyZmFj
ZSBVSVdpbmRvdyAoKQogLShCT09MKV9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3M7CiBAZW5kCiAK
LXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQ
bGF0Zm9ybUxheWVyJiB2aWRlb0xheWVyLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFs
UmVjdCwgVUlWaWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlW
aWV3JiB2aWRlb1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxSZWN0LCBVSVZp
ZXcqIHBhcmVudFZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaykKIHsKICAgICBBU1NF
UlQobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXR1cEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7CkBAIC04OTksNyArMTAyMSw2IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0Zm9y
bUxheWVyJiB2aWRlb0xheWVyCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBtX3ZpZGVvTGF5ZXIgPSAm
dmlkZW9MYXllcjsKICAgICBtX21vZGUgPSBtb2RlOwogICAgIG1fcGFyZW50VmlldyA9IHBhcmVu
dFZpZXc7CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBwYXJlbnRWaWV3LndpbmRvdzsKQEAgLTkxMyw1
MSArMTAzNCw0NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1
cEZ1bGxzY3JlZW4oUGxhdGZvcm1MYXllciYgdmlkZW9MYXllcgogICAgICAgICBbbV93aW5kb3cg
bWFrZUtleUFuZFZpc2libGVdOwogICAgIH0KIAotICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJv
bVN1cGVybGF5ZXJdOworICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdlYkFW
UGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFttX3BsYXllckxheWVy
VmlldyBzZXRIaWRkZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tBY3Rp
dmVdXTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNv
bG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CisgICAgCisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNl
dFZpZGVvVmlldzomdmlkZW9WaWV3XTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgYWRkU3Vidmll
dzomdmlkZW9WaWV3XTsKIAotICAgIG1fbGF5ZXJIb3N0V3JhcHBlciA9IGFkb3B0TlMoW1tXZWJD
QUxheWVySG9zdFdyYXBwZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbbV9sYXllckhvc3RXcmFwcGVy
IHNldE1vZGVsOm1fdmlkZW9GdWxsc2NyZWVuTW9kZWxdOwotICAgIFttX2xheWVySG9zdFdyYXBw
ZXIgc2V0VmlkZW9TdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOworICAgIFdlYkFWUGxheWVy
TGF5ZXIgKnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZp
ZXcgcGxheWVyTGF5ZXJdOwogCi0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFWVmlk
ZW9MYXllciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhpZGRl
bjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAgIFtt
X3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBwZXIu
Z2V0KCldOworICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdodCgpKV07Cisg
ICAgW3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250cm9sbGVyIGNv
bnRlbnREaW1lbnNpb25zXV07CiAKLSAgICBDR1NpemUgdmlkZW9TaXplID0gW21fcGxheWVyQ29u
dHJvbGxlciBjb250ZW50RGltZW5zaW9uc107Ci0gICAgQ0dSZWN0IHZpZGVvUmVjdCA9IENHUmVj
dE1ha2UoMCwgMCwgdmlkZW9TaXplLndpZHRoLCB2aWRlb1NpemUuaGVpZ2h0KTsKLSAgICBbbV92
aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvUmVjdDp2aWRlb1JlY3RdOwotICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5zZXRW
aWRlb0xheWVyRnJhbWUodmlkZW9SZWN0KTsKLQotICAgIC8vIFRoaXMgbWV0aG9kIGhhcyBiZWVu
IGRlcHJlY2F0ZWQgc28gaWdub3JlIHRoZSB3YXJuaW5nIHVudGlsIHdlIHBvcnQgb3VyIGNvZGUg
dG8gdGhlIG5ldyBBUEkuCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAg
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJv
bGxlckluc3RhbmNlKCkgaW5pdFdpdGhWaWRlb0xheWVyOm1fdmlkZW9MYXllckNvbnRhaW5lci5n
ZXQoKV0pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIG1fcGxheWVyVmlld0Nv
bnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgp
IGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAKICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwog
ICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVy
Q29udHJvbGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAgW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKICAgICBb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s6
bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwogCi0gICAgW21fdmlkZW9MYXllckNv
bnRhaW5lciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVyLmdl
dCgpXTsKLQogICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdDb250
cm9sbGVyIGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQo
KV07CiAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXll
clZpZXdDb250cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKLSAgICAgICAgW3BhcmVudFZpZXcu
d2luZG93IGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOworICAgICAg
ICBbcGFyZW50VmlldyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsK
IAotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW3BhcmVudFZpZXcg
Y29udmVydFJlY3Q6aW5pdGlhbFJlY3QgdG9WaWV3Om5pbF07CisgICAgW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgdmlld10uZnJhbWUgPSBbcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbml0aWFsUmVj
dCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKIAogICAg
IFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJ
Q29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKKyAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
dmlld10gc2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0
b21NYXJnaW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CisKICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOwogICAgIFtb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07CiAKICAgICBbQ0FU
cmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2NyZWVu
KCk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdU
aGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtzdHJvbmdUaGlzLCB0aGlzXSB7CisgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlcikKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1
bGxzY3JlZW4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKQEAgLTk2OCw3ICsxMDg0LDcgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBtX2V4
aXRSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBtX2VudGVyUmVxdWVzdGVkID0gdHJ1ZTsKIAotICAg
IFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xvckNs
YXNzKCkgYmxhY2tDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRC
YWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNrQ29sb3JdXTsKICAgICBpZiAo
bW9kZSgpID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1
cmVJblBpY3R1cmUpCiAgICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIGVsc2Ug
aWYgKG1vZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVT
dGFuZGFyZCkKQEAgLTEwMTIsMTMgKzExMjgsMTIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmkK
ICAgICAKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpleGl0RnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIGlmIChtX3ZpZXdDb250cm9s
bGVyKQotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3Bh
cmVudFZpZXcgY29udmVydFJlY3Q6ZmluYWxSZWN0IHRvVmlldzpuaWxdOwotICAgIGVsc2UKLSAg
ICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBmaW5hbFJlY3Q7Cisg
ICAgCisgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRW
aWV3IGNvbnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIg
dmlld10uc3VwZXJ2aWV3XTsKIAotICAgIGlmIChbbV92aWRlb0xheWVyQ29udGFpbmVyIHZpZGVv
TGF5ZXJHcmF2aXR5XSAhPSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQotICAgICAg
ICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9MYXll
ckdyYXZpdHlSZXNpemVBc3BlY3RdOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVy
ID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwor
ICAgIGlmIChbcGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSAhPSBnZXRBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0KCkpCisgICAgICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6
Z2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwogCiAgICAgaWYgKGlzTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSkg
ewpAQCAtMTAzNywxMiArMTE1MiwxNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaQogCiAgICAg
ICAgICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlv
biBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotICAgICAgICAgICAgW21fdmlkZW9MYXllckNvbnRh
aW5lciBzZXRCYWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXSBD
R0NvbG9yXV07CisgICAgICAgICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENv
bG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xh
c3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwog
Ci0gICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAg
ICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7Cisg
ICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewor
ICAgICAgICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAgICAg
ICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVu
KCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfV07CiAgICAgfTsKIH0KQEAgLTEwODAsMTYg
KzExOTcsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51
cEZ1bGxzY3JlZW4oKQogICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKQogICAgICAgICBbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdOwogICAgIAot
ICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFttX3ZpZGVvTGF5
ZXJDb250YWluZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFttX3ZpZGVvTGF5ZXJDb250
YWluZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6bmlsXTsKKyAgICBbbV9wbGF5ZXJMYXllclZp
ZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgW1ttX3ZpZXdDb250cm9sbGVyIHZpZXddIHJl
bW92ZUZyb21TdXBlcnZpZXddOwogCi0gICAgW21fbGF5ZXJIb3N0V3JhcHBlciBzZXRNb2RlbDpu
dWxscHRyXTsKLQotICAgIG1fbGF5ZXJIb3N0V3JhcHBlciA9IG5pbDsKLSAgICBtX3ZpZGVvTGF5
ZXIgPSBuaWw7Ci0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gbmlsOworICAgIG1fcGxheWVy
TGF5ZXJWaWV3ID0gbmlsOwogICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBuaWw7CiAgICAg
bV9wbGF5ZXJDb250cm9sbGVyID0gbmlsOwogICAgIG1fdmlld0NvbnRyb2xsZXIgPSBuaWw7CkBA
IC0xMTM1LDcgKzEyNDYsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjbwogICAgIExPRyhGdWxs
c2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1
cm5Ub0lubGluZSglcCkgLSB2aXNpYmxlKCVzKSIsIHRoaXMsIGJvb2xTdHJpbmcodmlzaWJsZSkp
OwogICAgIGlmIChtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrKSB7CiAgICAgICAgIAotICAgICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZpZXcgY29u
dmVydFJlY3Q6aW5saW5lUmVjdCB0b1ZpZXc6bmlsXTsKKyAgICAgICAgW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRSZWN0OmlubGluZVJl
Y3QgdG9WaWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLnN1cGVydmlld107CiAKICAg
ICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBjYWxsYmFjayA9IFdURjo6bW92ZShtX3By
ZXBhcmVUb0lubGluZUNhbGxiYWNrKTsKICAgICAgICAgY2FsbGJhY2sodmlzaWJsZSk7CkBAIC0x
MjA2LDcgKzEzMTcsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpk
aWRTdG9wUGljdHVyZUluUGljdHVyZSgpCiAKICAgICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVlOwog
Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRCYWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNv
bG9yQ2xhc3MoKSBjbGVhckNvbG9yXSBDR0NvbG9yXV07CisgICAgW21fcGxheWVyTGF5ZXJWaWV3
IHNldEJhY2tncm91bmRDb2xvcjpbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl1dOwogICAg
IFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJ
Q29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKIAogICAgIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgK
aW5kZXggNzI5MTRkYmYyMzE1MWM0YWVjMGE2Y2ZmYWVhMTU3ODI4ZmZjZjE5YS4uM2M1NWFhM2Ix
YzM3OTU1ZmEyZmYwZGRmNWViODExOWM3MGEzZDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKQEAgLTQ4LDEwICs0
OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nhbm5pbmcoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgPSAwOwotICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IHZpZGVvTGF5ZXJGcmFtZSgpIGNvbnN0ID0gMDsKICAgICBlbnVtIFZpZGVvR3Jhdml0eSB7
IFZpZGVvR3Jhdml0eVJlc2l6ZSwgVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3RGaWxsIH07CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2
aXR5KFZpZGVvR3Jhdml0eSkgPSAwOwotICAgIHZpcnR1YWwgVmlkZW9HcmF2aXR5IHZpZGVvTGF5
ZXJHcmF2aXR5KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlh
T3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdExlZ2li
bGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDY5YzhmMDFi
OGMzZjJkZTZiYjIwZTUyODk2YjQyMDRmNzYxZGQ0NjkuLjFhYTNjZTViYmM5MDhjY2RhNDRhM2Qy
MmI0NDJhMjAyYTc2YmUxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCkBA
IC03Miw5ICs3Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZW5kU2Nhbm5pbmcoKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jh
dml0eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
VmlkZW9HcmF2aXR5IHZpZGVvTGF5ZXJHcmF2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZXgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5tbQppbmRleCA5Yzg5NWFiZjIzY2ZmNDIyMDBmNjM2OGU3NmVlOGY3YTQy
MTU2MTBlLi5iODUyZTlmZTA4NjIyODk2NDg2ZTc3NGIzZWEwNDg2NGU1M2U2MjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0yNTQsMTEgKzI1NCw2IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5ZXJGcmFtZShG
bG9hdFJlY3QgcmVjdCkKICAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKHJlY3QpOwogfQogCi1GbG9hdFJlY3QgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OnZpZGVvTGF5ZXJGcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmlkZW9G
cmFtZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0
VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBn
cmF2aXR5KQogewogICAgIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgdmlkZW9HcmF2aXR5ID0g
TWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKQEAgLTI3NCwyMSArMjY5LDYg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXll
ckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWUKICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9G
dWxsc2NyZWVuR3Jhdml0eSh2aWRlb0dyYXZpdHkpOwogfQogCi1XZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbDo6VmlkZW9HcmF2aXR5IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp2
aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChtX3ZpZGVvRWxlbWVudC0+
dmlkZW9GdWxsc2NyZWVuR3Jhdml0eSgpKSB7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6VmlkZW9H
cmF2aXR5UmVzaXplOgotICAgICAgICByZXR1cm4gVmlkZW9HcmF2aXR5UmVzaXplOwotICAgIGNh
c2UgTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDoKLSAgICAgICAgcmV0dXJu
IFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3RGaWxsOgotICAgICAgICByZXR1cm4gVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0RmlsbDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gVmlkZW9HcmF2aXR5UmVzaXplOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IHNlbGVjdGVkQXVk
aW9JbmRleCkKIHsKICAgICBBdWRpb1RyYWNrKiBzZWxlY3RlZEF1ZGlvVHJhY2sgPSBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQVZLaXRTUEkuaAppbmRleCA3
Y2JiMDdiNjYzZGRmMTM0MTQxN2VmYmZkNTRjYjAzMDNmYTY0ZGViLi4wODUyMTJhMGM2YzhkNmZk
ZTNlNTE0MzFjM2EzMWMwMGU2N2Q2ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvY29jb2EvQVZLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cGkvY29jb2EvQVZLaXRTUEkuaApAQCAtMzQsOSArMzQsMTIgQEAKICNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogCiAjaW1wb3J0IDxBVktpdC9BVlBsYXllckNvbnRyb2xsZXIuaD4KKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdvYmpjLXByb3BlcnR5LW5vLWF0dHJpYnV0ZSIKKyNpbXBvcnQgPEFWS2l0L0FWUGxheWVy
TGF5ZXJWaWV3Lmg+CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjaW1wb3J0IDxBVktp
dC9BVlBsYXllclZpZXdDb250cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWS2l0L0FWUGxh
eWVyVmlld0NvbnRyb2xsZXJfV2ViS2l0T25seS5oPgotI2ltcG9ydCA8QVZLaXQvQVZWaWRlb0xh
eWVyLmg+CiAKICNlbHNlCiAKQEAgLTU4LDE3ICs2MSwxMCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBBVlBsYXllckNvbnRyb2xsZXJFeHRlcm5hbFBsYXliYWNrVHlwZSkgewogQHByb3Bl
cnR5IChOU19OT05BVE9NSUNfSU9TT05MWSwgcmVhZG9ubHkpIEFWUGxheWVyQ29udHJvbGxlclN0
YXR1cyBzdGF0dXM7CiBAZW5kCiAKLUBwcm90b2NvbCBBVlZpZGVvTGF5ZXIKLXR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIEFWVmlkZW9MYXllckdyYXZpdHkpIHsKLSAgICBBVlZpZGVvTGF5ZXJH
cmF2aXR5SW52YWxpZCA9IDAsCi0gICAgQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZUFzcGVjdCA9
IDEsCi0gICAgQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwgPSAyLAotICAgIEFW
VmlkZW9MYXllckdyYXZpdHlSZXNpemUgPSAzLAotfTsKLS0gKHZvaWQpc2V0UGxheWVyQ29udHJv
bGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcjsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBBVlZpZGVvTGF5ZXJHcmF2aXR5IHZpZGVvTGF5ZXJHcmF2aXR5OwotQHByb3Bl
cnR5IChub25hdG9taWMpIENHUmVjdCB2aWRlb1JlY3Q7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGdldHRlcj1pc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFkeUZvckRpc3BsYXk7
CitAY2xhc3MgQVZQbGF5ZXJMYXllcjsKKworQGludGVyZmFjZSBBVlBsYXllckxheWVyVmlldyA6
IFVJVmlldworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlBsYXllckxheWVyICpw
bGF5ZXJMYXllcjsKIEBlbmQKIAogQHByb3RvY29sIEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSA8TlNPYmplY3Q+CkBAIC04NSwxNSArODEsMTUgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVhc29uKSB7CiBAZW5k
CiAKIEBpbnRlcmZhY2UgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAoRGV0YWlscykKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFZpZGVvTGF5ZXI6KENBTGF5ZXIgPEFWVmlkZW9MYXllcj4gKil2aWRl
b0xheWVyOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGxheWVyTGF5ZXJWaWV3OihBVlBsYXll
ckxheWVyVmlldyAqKXBsYXllckxheWVyVmlldzsKIC0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuQW5p
bWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpZXhpdEZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogCiAtIChCT09MKWlzUGlj
dHVyZUluUGljdHVyZVBvc3NpYmxlOwogLSAodm9pZClzdGFydFBpY3R1cmVJblBpY3R1cmU7CiAt
ICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlOwotLSAodm9pZClzZXRBbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlUGxheWJhY2s6KEJPT0wpYWxsb3c7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09M
IGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBz
dHJvbmcpIEFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcjsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrKSBpZCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxl
Z2F0ZTsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDA4YmYzYmNlNDNiZWQx
Yjc5MTQ0OTc0ZDBkODgyYzE0N2RmZGJmNTYuLmZhMzFlZWQ0NGUzMDZjNDM1ZjhmODExNDkzN2E5
NDM1NzBlZTQxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtNTMsMTAgKzUzLDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21hbmFnZXIgPSBudWxscHRy
OyB9CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBsYXllckhvc3QoKSBjb25zdCB7IHJldHVybiBtX2xh
eWVySG9zdC5nZXQoKTsgfQotICAgIHZvaWQgc2V0TGF5ZXJIb3N0KFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPiYmIGxheWVySG9zdCkgeyBtX2xheWVySG9zdCA9IFdURjo6bW92ZShsYXllckhvc3Qp
OyB9Ci0KLSAgICB2b2lkIHNldEluaXRpYWxWaWRlb0xheWVyRnJhbWUoV2ViQ29yZTo6RmxvYXRS
ZWN0IGZyYW1lKSB7IG1fdmlkZW9MYXllckZyYW1lID0gZnJhbWU7IH0KKyAgICBVSVZpZXcgKmxh
eWVySG9zdFZpZXcoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdFZpZXcuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldExheWVySG9zdFZpZXcoUmV0YWluUHRyPFVJVmlldz4mJiBsYXllckhvc3RWaWV3
KSB7IG1fbGF5ZXJIb3N0VmlldyA9IFdURjo6bW92ZShsYXllckhvc3RWaWV3KTsgfQogCiBwcml2
YXRlOgogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKQEAgLTc4LDkgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nhbm5pbmcoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShWaWRl
b0dyYXZpdHkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmlkZW9HcmF2aXR5IHZpZGVvTGF5ZXJH
cmF2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEF1ZGlvTWVk
aWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKQEAgLTk0LDkgKzkwLDcgQEAgcHJpdmF0ZToKIAogICAg
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwogICAgIHVpbnQ2NF90
IG1fY29udGV4dElkOwotICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX2xheWVySG9zdDsK
LSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aWRlb0xheWVyRnJhbWU7Ci0gICAgVmlkZW9HcmF2
aXR5IG1fdmlkZW9MYXllckdyYXZpdHkgeyBWaWRlb0dyYXZpdHlSZXNpemUgfTsKKyAgICBSZXRh
aW5QdHI8VUlWaWV3ICo+IG1fbGF5ZXJIb3N0VmlldzsKIH07CiAKIGNsYXNzIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbQppbmRleCA3M2NjN2MyZmYyYmY1Y2RkMjE3MWM5NjJhN2MzMzQ1YTUw
ZDYxNDczLi45ODY5YWI2YTAwNGRkOTk0NzYzODA4NDRhYmNiYjQyNGM2ZTBlY2MxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMzQsMTAgKzM0LDM1IEBACiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdl
cy5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
KyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllckhvc3QuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUv
Q29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+CiAjaW1wb3J0
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KIAorQGludGVyZmFjZSBXZWJMYXllckhvc3RWaWV3
IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSB1aW50MzJfdCBjb250ZXh0
SUQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJMYXllckhvc3RWaWV3CisKKysgKENsYXNz
KWxheWVyQ2xhc3MgeworICAgIHJldHVybiBbQ0FMYXllckhvc3QgY2xhc3NdOworfQorCistICh1
aW50MzJfdCljb250ZXh0SUQgeworICAgIHJldHVybiBbW3NlbGYgbGF5ZXJIb3N0XSBjb250ZXh0
SWRdOworfQorCistICh2b2lkKXNldENvbnRleHRJRDoodWludDMyX3QpY29udGV4dElEIHsKKyAg
ICBbW3NlbGYgbGF5ZXJIb3N0XSBzZXRDb250ZXh0SWQ6Y29udGV4dElEXTsKK30KKworLSAoQ0FM
YXllckhvc3QgKilsYXllckhvc3QgeworICAgIHJldHVybiAoQ0FMYXllckhvc3QgKilbc2VsZiBs
YXllcl07Cit9CisKK0BlbmQKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTM5LDI4ICsxNjQsMTYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCiAKIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0
IGZyYW1lKQogewotICAgIG1fdmlkZW9MYXllckZyYW1lID0gZnJhbWU7CiAgICAgaWYgKG1fbWFu
YWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5zZXRWaWRlb0xheWVyRnJhbWUobV9jb250ZXh0SWQs
IGZyYW1lKTsKIH0KIAotV2ViQ29yZTo6RmxvYXRSZWN0IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6dmlkZW9MYXllckZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92aWRlb0xh
eWVyRnJhbWU7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRW
aWRlb0xheWVyR3Jhdml0eShXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9H
cmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV92aWRlb0xheWVyR3Jhdml0eSA9IGdyYXZpdHk7CiAg
ICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5zZXRWaWRlb0xheWVyR3Jhdml0
eShtX2NvbnRleHRJZCwgZ3Jhdml0eSk7CiB9CiAKLVdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsOjpWaWRlb0dyYXZpdHkgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp2aWRl
b0xheWVyR3Jhdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmlkZW9MYXllckdyYXZpdHk7
Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQogewogICAgIGlmIChtX21hbmFnZXIpCkBAIC0y
NDAsOCArMjUzLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFs
aWRhdGUoKQogICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwogCiAg
ICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwotICAgICAgICBbbW9kZWwtPmxheWVySG9z
dCgpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgbW9kZWwtPnNldExheWVySG9zdChu
dWxscHRyKTsKKyAgICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVy
dmlld107CisgICAgICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxwdHIpOwogICAgIH0K
IAogICAgIG1fY29udGV4dE1hcC5jbGVhcigpOwpAQCAtMzEwLDE2ICszMjMsMTcgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldpdGhJRCh1aW50
NjRfdCBjb250ZXh0SWQsIHUKIAogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5z
dXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAotICAgIG1vZGVsLT5zZXRJbml0aWFs
VmlkZW9MYXllckZyYW1lKGluaXRpYWxSZWN0KTsKLSAgICBtb2RlbC0+c2V0TGF5ZXJIb3N0KFdL
TWFrZVJlbmRlckxheWVyKHZpZGVvTGF5ZXJJRCkpOworICAgIFJldGFpblB0cjxXZWJMYXllckhv
c3RWaWV3PiB2aWV3ID0gYWRvcHROUyhbW1dlYkxheWVySG9zdFZpZXcgYWxsb2NdIGluaXRdKTsK
KyAgICBbdmlldyBzZXRDb250ZXh0SUQ6dmlkZW9MYXllcklEXTsKKyAgICBtb2RlbC0+c2V0TGF5
ZXJIb3N0Vmlldyh2aWV3LmdldCgpKTsKICAgICBpZiAoaG9zdGluZ0RldmljZVNjYWxlRmFjdG9y
ICE9IDEpIHsKICAgICAgICAgLy8gSW52ZXJ0IHRoZSBzY2FsZSB0cmFuc2Zvcm0gYWRkZWQgaW4g
dGhlIFdlYlByb2Nlc3MgdG8gZml4IDxyZGFyOi8vcHJvYmxlbS8xODMxNjU0Mj4uCiAgICAgICAg
IGZsb2F0IGludmVyc2VTY2FsZSA9IDEgLyBob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3I7Ci0gICAg
ICAgIFttb2RlbC0+bGF5ZXJIb3N0KCkgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtlU2Nh
bGUoaW52ZXJzZVNjYWxlLCBpbnZlcnNlU2NhbGUsIDEpXTsKKyAgICAgICAgW1ttb2RlbC0+bGF5
ZXJIb3N0VmlldygpIGxheWVyXSBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFr
ZVNjYWxlKGludmVyc2VTY2FsZSwgaW52ZXJzZVNjYWxlLCAxKV07CiAgICAgfQogCiAgICAgVUlW
aWV3ICpwYXJlbnRWaWV3ID0gZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eT4oKm1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkucmVtb3RlTGF5ZXJUcmVlSG9zdCgpLnJvb3RMYXll
cigpOwotICAgIGludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptb2RlbC0+bGF5ZXJIb3N0KCks
IGluaXRpYWxSZWN0LCBwYXJlbnRWaWV3LCB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlKTsKKyAgICBpbnRlcmZhY2UtPnNldHVwRnVsbHNjcmVlbigqbW9kZWwtPmxh
eWVySG9zdFZpZXcoKSwgaW5pdGlhbFJlY3QsIHBhcmVudFZpZXcsIHZpZGVvRnVsbHNjcmVlbk1v
ZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6cmVzZXRNZWRpYVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKQEAgLTUw
Miw4ICs1MTYsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkQ2xl
YW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIGF1dG8mIG1vZGVsID0gZW5z
dXJlTW9kZWwoY29udGV4dElkKTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKLSAgICBb
bW9kZWwubGF5ZXJIb3N0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIG1vZGVsLnNldExh
eWVySG9zdChudWxscHRyKTsKKyAgICBbbW9kZWwubGF5ZXJIb3N0VmlldygpIHJlbW92ZUZyb21T
dXBlcnZpZXddOworICAgIG1vZGVsLnNldExheWVySG9zdFZpZXcobnVsbHB0cik7CiAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVw
RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIG1fY29udGV4
dE1hcC5yZW1vdmUoY29udGV4dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDUzNDI0Njkx
Y2IyZTI5OThlMTNhYzhkZWQ1MGMxYjc0YTg0NTE0MjcuLjgxYzRkYzcwZDNiMzBkMDQ4NTg2Zjhm
YzQ3OGU4MmZlM2VjMzI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjMyLDkgKzIzMiwx
MyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVy
ZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCisgICAgRmxvYXRS
ZWN0IGNsaWVudFJlY3QgPSBjbGllbnRSZWN0Rm9yRWxlbWVudCgmdmlkZW9FbGVtZW50KTsKKyAg
ICBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lID0gRmxvYXRSZWN0KDAsIDAsIGNsaWVudFJlY3Qu
d2lkdGgoKSwgY2xpZW50UmVjdC5oZWlnaHQoKSk7CisgICAgCiAgICAgaW50ZXJmYWNlLT5zZXRU
YXJnZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7CiAgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9k
ZShtb2RlKTsKICAgICBtb2RlbC0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOworICAg
IG1vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUodmlkZW9MYXllckZyYW1lKTsKIAogICAgIGlmIChp
bnRlcmZhY2UtPmlzQW5pbWF0aW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQyOCw3ICs0MzIs
MTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogCiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIAotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpF
bnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNv
bnRleHRJZF0geworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIH0pOwogfQogICAgIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257120</attachid>
            <date>2015-07-20 13:18:31 -0700</date>
            <delta_ts>2015-07-20 14:00:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146862-20150720131717.patch</filename>
            <type>text/plain</type>
            <size>63266</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyZjQ5NjFmYWNiYzc2
OWRmYTVhMTBlNTM0ZjYzYjc3NmIzMmZkZC4uMTEzNzI3NmEzNDhkOWNmZGZiZmJkMTJmMGY1ODRl
MDlmMjliZjU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNS0wNy0yMCAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZQbGF5ZXJM
YXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBDQUxheWVySG9zdCBpcyByZXBsYWNlZCB3aXRoIFdlYkxheWVySG9zdFZpZXcgdG8gYmUg
Y29tcGF0aWJsZSB3aXRoIFVJVmlldyBhbmltYXRpb25zLgorICAgICAgICBTb21lIGFuaW1hdGlv
biBpcyBpbXByb3ZlZCBpbiB0aGUgY29udmVyc2lvbi4KKworICAgICAgICBXZWJBVlBsYXllckxh
eWVyVmlldyBhbmQgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3IGRlcml2ZSBm
cm9tIEFWS2l0IGFuZCBVSUtpdCByZXNwZWN0aXZlbHkuCisgICAgICAgIEJlY2F1c2UgdGhlc2Ug
ZnJhbWV3b3JrcyBhcmUgbG9hZGVkIGF0IHJ1bnRpbWUsIHRoZXNlIGNsYXNzZXMgbXVzdCBiZSBn
ZW5lcmF0ZSB1c2luZyBvYmpjL3J1bnRpbWUuaCB0bworICAgICAgICByZWdpc3RlciB0aGVtIGZy
b20gYyBmdW5jdGlvbnMgYXQgcnVudGltZS4gVGhlIG1vc3QgaW1wb3J0YW50IHBhcnQgb2YgdGhl
c2UgVUlWaWV3cyBpcyB0aGF0IHRoZWlyCisgICAgICAgIGJhY2tpbmcgbGF5ZXIgaXMgYSBXZWJB
VlBsYXllckxheWVyLgorCisgICAgICAgIFdlYkNBTGF5ZXJIb3N0V3JhcHBlciBhbmQgV2ViQVZW
aWRlb0xheWVyIGFyZSBjb21iaW5lZCBpbnRvIFdlYkFWUGxheWVyTGF5ZXIgdG8gc2ltcGxpZnkg
dGhlIGhpZXJhcmNoeS4KKyAgICAgICAgV2ViQVZQbGF5ZXJMYXllciBpcyBhIHN0YW5kLWluIGZv
ciBhbiBBVlBsYXllckxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKTogLXJlbW92ZUZyb21TdXBlcmxheWVyIGlzIHJlZHVuZGFudC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZp
ZGVvRnVsbHNjcmVlbkdyYXZpdHkpOiBzeW5jVGV4dFRyYWNrQm91bmRzIG9uIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgV2UgbmV2ZXIgd2FudCBhbmltYXRpb24gaGVy
ZSwgc2luY2UgYWxsIGFuaW1hdGlvbiB3aWxsIGhhcHBlbiBpbiBVSVZpZXdzLiAKKyAgICAgICAg
VGhpcyBpcyBqdXN0IGZvciBnb2luZyBpbnRvIHRoZSBmaW5hbCBzaXplIGFmdGVyIGEgdHJhbnNm
b3JtIGJhc2VkIGFuaW1hdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKTogbGF5ZXIgLT4gdmlldworICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxs
c2NyZWVuKTogbGF5ZXIgLT4gdmlldworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcKKworICAgICAgICAo
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZSk6
IGxheWVyIC0+IHZpZXcKKyAgICAgICAgVXNlIGZlbmNlIHBvcnQgdG8gc3luY2hyb25pemUgYmV0
d2VlbiB0aGUgVUlUaHJlYWQgYW5kIHRoZSBXZWJUaHJlYWQsCisgICAgICAgIHRoZSBzYW1lIHdh
eSBXZWJLaXQyIHVzZXMgYSBmZW5jZSBwb3J0IHRvIHN5bmNocm9uaXplIGJldHdlZW4gcHJvY2Vz
c2VzLgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0
VmlkZW9MYXllckdyYXZpdHkpOgorICAgICAgICBObyBsb25nZXIgbmVjZXNzYXJ5IHRvIGNhY2hl
IHZpZGVvR3Jhdml0eSBhdCB0aGlzIGxldmVsLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tOgorCisgICAgICAgICgtW1dlYkFW
UGxheWVyTGF5ZXIgaW5pdF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGRlYWxsb2Nd
KToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXSk6CisgICAg
ICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0Qm91bmRzOl0pOgorICAgICAgICAoLVtXZWJBVlBs
YXllckxheWVyIHJlc29sdmVCb3VuZHNdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBz
ZXRWaWRlb0dyYXZpdHk6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgdmlkZW9HcmF2
aXR5XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgdmlkZW9SZWN0XSk6CisgICAgICAg
ICgrW1dlYkFWUGxheWVyTGF5ZXIga2V5UGF0aHNGb3JWYWx1ZXNBZmZlY3RpbmdWaWRlb1JlY3Rd
KToKKyAgICAgICAgQWRkZWQgY2xhc3MgV2ViQVZQbGF5ZXJMYXllciwgcmVwbGFjaW5nIFdlYkFW
VmlkZW9MYXllciBhbmQgV2ViQ0FMYXllckhvc3RXcmFwcGVyLgorCisgICAgICAgIChXZWJBVlBp
Y3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyk6CisgICAgICAgIChnZXRX
ZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcyk6CisgICAgICAgIEFkZGVk
IHJ1bnRpbWUgY2xhc3MgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3CisKKyAg
ICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MpOgorICAgICAgICAoV2ViQVZQ
bGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJBVlBsYXllckxh
eWVyVmlld19zZXRQbGF5ZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJW
aWV3X3ZpZGVvVmlldyk6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1Zp
ZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1Bp
Y3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXll
clZpZXdfc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyk6
CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3KToKKyAgICAgICAgKGdldFdlYkFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOgorICAgICAg
ICBBZGRlZCBydW50aW1lIGNsYXNzIFdlYkFWUGxheWVyTGF5ZXJWaWV3CisKKyAgICAgICAgKFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgorICAg
ICAgICBEaW1lbnNpb25zIGFyZSBhbHNvIHN0b3JlZCBpbiBXZWJBVlBsYXllckxheWVyIHNvIGl0
IGNhbiBtYWtlIGRlY2lzaW9ucyBhYm91dAorICAgICAgICBhbmltYXRpbmcgdGhlIHZpZGVvIGxh
eWVyLgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0
ZXJuYWxQbGF5YmFjayk6CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZW50ZXJGdWxsc2NyZWVuKTogCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFudXBGdWxsc2NyZWVuKToKKyAgICAgICAgU3RyYWln
aHRmb3J3YXJkIGxheWVyIHRvIHZpZXcgY29udmVyc2lvbi4KKworICAgICAgICAoV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSk6CisgICAg
ICAgIFNldCB2aWV3IGZyYW1lIHVzaW5nIHRoZSB2aWV3IGhpZXJhcmNoeSBpbnN0ZWFkIG9mIGFz
c3VtaW5nIGl0IGlzIGRpcmVjdGx5IGluIGEgd2luZG93LgorCisgICAgICAgIChXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICBTZXQgdmll
dyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVyYXJjaHkgaW5zdGVhZCBvZiBhc3N1bWluZyBpdCBp
cyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgYmVmb3JlIGNh
bGxpbmcgZGlkRXhpdEZ1bGxzY3JlZW4oKSB0byBhbGxvd3MgQ0FUcmFuc2FjdGlvbnMgdG8gY29t
cGxldGUuCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1
cEZ1bGxzY3JlZW4pOgorICAgICAgICBTZXQgdmlldyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVy
YXJjaHkgaW5zdGVhZCBvZiBhc3N1bWluZyBpdCBpcyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKyAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMgYmVmb3JlIGNhbGxpbmcgZGlkU2V0dXBGdWxsc2NyZWVuKCkg
dG8gYWxsb3dzIENBVHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlLgorCisgICAgICAgICgtW1dlYkNB
TGF5ZXJIb3N0V3JhcHBlciBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNBTGF5
ZXJIb3N0V3JhcHBlciBzZXRWaWRlb1N1YmxheWVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJDQUxheWVySG9zdFdyYXBwZXIgdmlkZW9TdWJsYXllcl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJDQUxheWVySG9zdFdyYXBwZXIgc2V0Qm91bmRzOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJDQUxheWVySG9zdFdyYXBwZXIgcmVzb2x2ZUJvdW5kc10pOiBEZWxldGVkLgorICAgICAg
ICBDbGFzcyBXZWJDQUxheWVySG9zdFdyYXBwZXIgZGVsZXRlZC4gRnVuY3Rpb25hbGl0eSByb2xs
ZWQgaW50byBXZWJBVlBsYXllckxheWVyLgorCisgICAgICAgICgrW1dlYkFWVmlkZW9MYXllciB2
aWRlb0xheWVyXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBpbml0XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRQbGF5ZXJWaWV3Q29udHJv
bGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZWaWRlb0xheWVyIHNldFZpZGVvU3Vi
bGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRCb3VuZHM6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRWaWRlb0xheWVyR3Jh
dml0eTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZWaWRlb0xheWVyIHZpZGVvTGF5ZXJH
cmF2aXR5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBlbnRlclBJUE1v
ZGVSZWRpcmVjdGluZ1ZpZGVvVG9MYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZW
aWRlb0xheWVyIGxlYXZlUElQTW9kZV0pOiBEZWxldGVkLgorICAgICAgICBDbGFzcyBXZWJBVlZp
ZGVvTGF5ZXIgZGVsZXRlZC4gRnVuY3Rpb25hbGl0eSByb2xsZWQgaW50byBXZWJBVlBsYXllckxh
eWVyLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Lm1tOgorICAgICAgICBObyBuZWVkIHRvIHN0b3JlIGZyYW1lIGFuZCBncmF2aXR5
IGluIHRoZSBtb2RlbC4gSXQgaXMgc3RvcmVkIGluIHRoZSBVSSB3aGVyZSBpdCBpcyB1c2VkLgor
CisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6dmlkZW9MYXll
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Ojp2aWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
c3BpL2NvY29hL0FWS2l0U1BJLmg6IEFkZCBBVlBsYXllckxheWVyVmlldy4KKwogMjAxNS0wNy0w
OSAgTWF0dGhldyBEYWl0ZXIgIDxtZGFpdGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc2VjdGlvbiBvZiBlbnVtZXJhdGVEZXZpY2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMjllNTVlY2VhOWM4M2IyMmViYjQ0NmY4ZWRkNDdhYTNjNGQ5ODNhNS4uZjA0MTBk
NzlkYzIxZTQyOTBkMjMxYWZmNjI5YWJjMjYzM2RiNmE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQwIEBACisyMDE1LTA3LTIwICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZG9wdCBBVlBsYXllckxheWVyVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2ODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENBTGF5ZXJIb3N0IGlzIHJlcGxhY2VkIHdpdGgg
V2ViTGF5ZXJIb3N0VmlldyB0byBiZSBjb21wYXRpYmxlIHdpdGggVUlWaWV3IGFuaW1hdGlvbnMu
CisgICAgICAgIHZpZGVvTGF5ZXJGcmFtZSBhbmQgdmlkZW9MYXllckdyYXZpdHkgbm8gbG9uZ2Vy
IG5lZWQgdG8gYmUgc3RvcmVkIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkCisgICAgICAgIHdoZXJl
IHRoZXkgYXJlIHVzZWQgaW4gdGhlIGludGVyZmFjZS4gU29tZSBhbmltYXRpb24gaXMgaW1wcm92
ZWQgaW4gdGhlIGNvbnZlcnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoK1tXZWJMYXllckhvc3RWaWV3
IGxheWVyQ2xhc3NdKTogQWRkIGNsYXNzIFdlYkxheWVySG9zdFZpZXcuCisgICAgICAgICgtW1dl
YkxheWVySG9zdFZpZXcgY29udGV4dElEXSk6CisgICAgICAgICgtW1dlYkxheWVySG9zdFZpZXcg
c2V0Q29udGV4dElEOl0pOgorICAgICAgICAoLVtXZWJMYXllckhvc3RWaWV3IGxheWVySG9zdF0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFs
aWRhdGUpOiBsYXllciAtPiB2aWV3CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKToKKyAgICAgICAgQXBwbHkgdGhl
IGhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvciB0cmFuc2Zvcm0gdG8gLXN1YmxheWVyVHJhbnNmb3Jt
IGluc3RlYWQgb2YgdG8KKyAgICAgICAgLXRyYW5zZm9ybS4gVGhpcyBtb3JlIGRpcmVjdGx5IGlu
dmVydHMgdGhlIHRyYW5mb3JtIFdlYlByb2Nlc3MgYW5kIGFsbG93cyAtdHJhbnNmb3JtCisgICAg
ICAgIHRvIGJlIHVzZWQgZm9yIGFuaW1hdGlvbiBpbiB0aGUgVUlQcm9jZXNzLiBUaGlzIGlzIGlt
cG9ydGFudCBiZWNhdXNlIFVJVmlldydzIGFjdGlvbnMKKyAgICAgICAgYW5pbWF0ZSAtdHJhbnNm
b3JtLCBidXQgbm90IC1zdWJsYXllclRyYXNmb3JtLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOiBsYXllciAt
PiB2aWV3CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
c2V0VmlkZW9MYXllckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp2aWRlb0xheWVyRnJhbWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNldFZpZGVvTGF5ZXJH
cmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0Ojp2aWRlb0xheWVyR3Jhdml0eSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0Vs
ZW1lbnQpOgorICAgICAgICBTZXQgaW5pdGlhbCB2aWRlbyBsYXllciBmcmFtZSB0byBmaXggc3Rh
cnQgcG9pbnQgb2YgYW5pbWF0aW9uLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIGRpc3BhdGNoX2FzeW5j
IGFsbG93cyB0aGUgQ0FUcmFuc2FjdGlvbiB0byBjb21wbGV0ZSBiZWZvcmUgY29udGludWluZyB3
aXRoIHRoZSBhbmltYXRpb24uCisgICAgICAgIFRoaXMgcHJldmVudHMgYSBmbGFzaCBkdXJpbmcg
YW5pbWF0aW9uLgorCiAyMDE1LTA3LTA5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBSZXBvcnQgdGhlIGZpcnN0IHBhaW50IGFmdGVyIGNvbW1pdHRp
bmcgYSBsb2FkIGFzIGEgcmVuZGVyaW5nIHByb2dyZXNzIGV2ZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA3YmFiNWM3OGM1ZmQ5M2EyZjBhNTc2YWM1ZjljMDk1N2ExNThhOGRiLi5lOThk
ZmQ5YWZjMWFhN2Y0MzM4NWJhZGQwODZlNzgzYTViNWQzNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTExMjQsOSArMTEyNCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllcioKICAgICBD
QUNvbnRleHQgKm5ld0NvbnRleHQgPSBuaWw7CiAgICAgCiAgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgJiYgbV92aWRlb0xheWVyKSB7Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1fdmlk
ZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKLSAgICAgICAgW21fdmlkZW9MYXllciByZW1v
dmVGcm9tU3VwZXJsYXllcl07CiAgICAgICAgIFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGluc2Vy
dFN1YmxheWVyOm1fdmlkZW9MYXllci5nZXQoKSBhdEluZGV4OjBdOworICAgICAgICBbbV92aWRl
b0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS53
aWR0aCgpLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLmhlaWdodCgpKV07CiAgICAgICAgIG5ld0Nv
bnRleHQgPSBbbV92aWRlb0Z1bGxzY3JlZW5MYXllciBjb250ZXh0XTsKICAgICB9IGVsc2UgaWYg
KG1fdmlkZW9JbmxpbmVMYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKICAgICAgICAgW21fdmlkZW9M
YXllciBzZXRGcmFtZTpbbV92aWRlb0lubGluZUxheWVyIGJvdW5kc11dOwpAQCAtMTE1OCwxMSAr
MTE1Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRTdHlsZTpuaWxd
OyAvLyBUaGlzIGVuYWJsZXMgYWN0aW9ucywgaS5lLiBpbXBsaWNpdCBhbmltYXRpb25zLgotICAg
ICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCBmcmFtZS53aWR0aCgpLCBmcmFtZS5oZWlnaHQoKSldOwotICAg
ICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwotICAgICAgICBbbV92aWRlb0xheWVyIHdlYl9k
aXNhYmxlQWxsQWN0aW9uc107CiAgICAgfQogICAgIHN5bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0K
QEAgLTExODIsOCArMTE3NywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OgogICAgICAgICB2
aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDsKICAgICBl
bHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIAorICAgIGlmIChbbV92aWRl
b0xheWVyIHZpZGVvR3Jhdml0eV0gPT0gdmlkZW9HcmF2aXR5KQorICAgICAgICByZXR1cm47CiAK
ICAgICBbbV92aWRlb0xheWVyIHNldFZpZGVvR3Jhdml0eTp2aWRlb0dyYXZpdHldOworICAgIHN5
bmNUZXh0VHJhY2tCb3VuZHMoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCBkMTlh
ZjAxZjllOWM5NzAyM2Q5OWMwOTE0ZGQ5YzRmMDNkNWYxYWJjLi42MGQyOGJjMmZkM2MyOTJlNDI2
ZTNlYTlmMWZhNmI4ZTc5ZTBhMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0K
QEAgLTMwLDYgKzMwLDggQEAKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5oIgogCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJRdWFydHpDb3JlU1BJLmgi
CisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9y
dCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCIKICNpbXBvcnQgIldlYlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgiCkBAIC0zNyw2ICszOSw5IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFJ1bi5oPgogCitTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNT
KFVJS2l0LCBVSVZpZXcpCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAjaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gODAyMDAgfHwgIUhBVkUoQVZLSVQpCkBAIC0x
MjksOSArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nhbm5pbmcoKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZnJhbWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdy
YXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBWaWRlb0dyYXZpdHkgdmlkZW9MYXllckdyYXZpdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2dyYXZpdHk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRp
YU9wdGlvbih1aW50NjRfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwpAQCAtMTM5LDEwICsxNDIsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV9pbnRlcmZhY2U7
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtX21vZGVs
OwogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBtX3ZpZGVvRWxlbWVudDsKLSAgICBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gbV92aWRlb0Z1bGxzY3JlZW5MYXllcjsKKyAgICBSZXRhaW5Q
dHI8VUlWaWV3PiBtX3ZpZGVvRnVsbHNjcmVlblZpZXc7CiAgICAgUmV0YWluUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKLSAgICBGbG9hdFJlY3QgbV9mcmFt
ZTsKLSAgICBWaWRlb0dyYXZpdHkgbV9ncmF2aXR5OwogfTsKIAogI3ByYWdtYSBtYXJrIFdlYlZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyCkBAIC0xNTEsOCArMTUyLDkgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKIHsK
ICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgV2ViVGhyZWFkUnVuKFtz
dHJvbmdUaGlzLCB0aGlzXSB7Ci0gICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOworICAgIFJldGFpblB0cjxDQUxheWVy
PiB2aWRlb0Z1bGxzY3JlZW5MYXllciA9IFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdOwor
ICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXJd
IHsKKyAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCkpOwogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10gewogICAgICAgICAgICAgbV9pbnRlcmZhY2Ut
PmVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICB9KTsKQEAgLTE3Nyw2ICsxNzksNyBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVl
bigpCiAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKG51bGxwdHIp
OwogICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihu
dWxscHRyKTsKICAgICBtX2ludGVyZmFjZSA9IG51bGxwdHI7CisgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5WaWV3ID0gbmlsOwogICAgIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXNdIHsKQEAgLTE4NSw3ICsxODgsNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVlbigpCiAgICAgICAgIG1fbW9kZWwt
PnNldFZpZGVvRWxlbWVudChudWxscHRyKTsKICAgICAgICAgbV9tb2RlbCA9IG51bGxwdHI7CiAg
ICAgICAgIG1fdmlkZW9FbGVtZW50ID0gbnVsbHB0cjsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllciA9IG5pbDsKICAgICAgICAgCiAgICAgICAgIFttX2NvbnRyb2xsZXIgZGlkRmluaXNo
RnVsbHNjcmVlbjp0aGlzXTsKICAgICB9KTsKQEAgLTQ1MCwxOCArNDUyLDI1IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigp
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVy
RnJhbWUoRmxvYXRSZWN0IGZyYW1lKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAg
IG1fZnJhbWUgPSBmcmFtZTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlz
LCB0aGlzLCBmcmFtZV0geworICAgIFJldGFpblB0cjxDQUxheWVyPiB2aWRlb0Z1bGxzY3JlZW5M
YXllciA9IFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdOworCisgICAgbWFjaF9wb3J0X25h
bWVfdCBmZW5jZVBvcnQgPSBbW3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRdIGNyZWF0ZUZl
bmNlUG9ydF07CisgICAgCisgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCBmcmFt
ZSwgZmVuY2VQb3J0LCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0geworICAgICAgICBbQ0FUcmFuc2Fj
dGlvbiBiZWdpbl07CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0aW9u
OjBdOwogICAgICAgICBpZiAobV9tb2RlbCkKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVv
TGF5ZXJGcmFtZShmcmFtZSk7CisgICAgICAgIFtbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4
dF0gc2V0RmVuY2VQb3J0OmZlbmNlUG9ydF07CisgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRl
KG1hY2hfdGFza19zZWxmKCksIGZlbmNlUG9ydCk7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNv
bW1pdF07CiAgICAgfSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRl
b0dyYXZpdHkgdmlkZW9HcmF2aXR5KQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAg
IG1fZ3Jhdml0eSA9IHZpZGVvR3Jhdml0eTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtz
dHJvbmdUaGlzLCB0aGlzLCB2aWRlb0dyYXZpdHldIHsKICAgICAgICAgaWYgKG1fbW9kZWwpCkBA
IC01MTAsMTkgKzUxOSwxOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgIG1faW50ZXJm
YWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZSgpOwogICAgIG1f
aW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcih0aGlzKTsKICAg
ICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwodGhpcyk7CisgICAgbV92
aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxsb2NdIGlu
aXRdKTsKICAgICAKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlz
LCB2aWV3UmVmLCBtb2RlXSB7CiAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7CiAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZSh0aGlzKTsKICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9FbGVt
ZW50KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5MYXll
ciA9IFtDQUxheWVyIGxheWVyXTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWxsb3dzUGljdHVy
ZUluUGljdHVyZSA9IG1fdmlkZW9FbGVtZW50LT5tZWRpYVNlc3Npb24oKS5hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlKCptX3ZpZGVvRWxlbWVudC5nZXQoKSk7CiAgICAgICAgIEludFJlY3QgdmlkZW9F
bGVtZW50Q2xpZW50UmVjdCA9IG1fdmlkZW9FbGVtZW50LT5jbGllbnRSZWN0KCk7CiAgICAgICAg
IAogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ry
b25nVGhpcywgdGhpcywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZiwgbW9kZSwgYWxs
b3dzUGljdHVyZUluUGljdHVyZV0gewotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldHVwRnVs
bHNjcmVlbigqbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSwgdmlkZW9FbGVtZW50Q2xpZW50
UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CisgICAg
ICAgICAgICBtX2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3ZpZGVvRnVsbHNjcmVlblZp
ZXcuZ2V0KCksIHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYuZ2V0KCksIG1vZGUsIGFs
bG93c1BpY3R1cmVJblBpY3R1cmUpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0LmgKaW5kZXggOWU3ZGY2Zjc3YjBhMzBmNmJhZmZlNGY3ZDRmMDU1ZjI3
ZTE5NGM3My4uMDRhMmU4YTk3YWYxOWIzYjcxMTAxOGUxOWVkOTk5NDMzOWI4NTQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTQ1LDggKzQ1LDggQEAgT0JKQ19DTEFTUyBVSVZp
ZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVdpbmRvdzsKIE9CSkNfQ0xBU1MgVUlWaWV3Owog
T0JKQ19DTEFTUyBDQUxheWVyOwotT0JKQ19DTEFTUyBXZWJBVlZpZGVvTGF5ZXI7Ci1PQkpDX0NM
QVNTIFdlYkNBTGF5ZXJIb3N0V3JhcHBlcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllclZp
ZXc7CitPQkpDX0NMQVNTIFdlYkFWUGxheWVyTGF5ZXI7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xh
c3MgU3RyaW5nOwpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9v
bCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9jYWxp
emVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIHNldHVwRnVsbHNjcmVlbihQbGF0Zm9ybUxheWVyJiwgY29uc3QgSW50UmVjdCYgaW5p
dGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0dXBGdWxsc2NyZWVuKFVJVmlldyYsIGNvbnN0IEludFJl
Y3QmIGluaXRpYWxSZWN0LCBVSVZpZXcgKiwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbihjb25zdCBJbnRSZWN0JiBmaW5h
bFJlY3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjbGVhbnVwRnVsbHNjcmVl
bigpOwpAQCAtMTMzLDkgKzEzMyw2IEBAIHByb3RlY3RlZDoKIAogICAgIFJldGFpblB0cjxXZWJB
VlBsYXllckNvbnRyb2xsZXI+IG1fcGxheWVyQ29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8QVZQ
bGF5ZXJWaWV3Q29udHJvbGxlcj4gbV9wbGF5ZXJWaWV3Q29udHJvbGxlcjsKLSAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbV92aWRlb0xheWVyOwotICAgIFJldGFpblB0cjxXZWJBVlZpZGVvTGF5ZXI+
IG1fdmlkZW9MYXllckNvbnRhaW5lcjsKLSAgICBSZXRhaW5QdHI8V2ViQ0FMYXllckhvc3RXcmFw
cGVyPiBtX2xheWVySG9zdFdyYXBwZXI7CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxscHRyIH07CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0ciB9Owog
CkBAIC0xNDQsNiArMTQxLDcgQEAgcHJvdGVjdGVkOgogICAgIFJldGFpblB0cjxVSVZpZXdDb250
cm9sbGVyPiBtX3ZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxVSVZpZXc+IG1fcGFyZW50
VmlldzsKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IG1fcGFyZW50V2luZG93OworICAgIFJldGFp
blB0cjxXZWJBVlBsYXllckxheWVyVmlldz4gbV9wbGF5ZXJMYXllclZpZXc7CiAgICAgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fbW9kZSB7IEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKICAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQoYm9vbCk+IG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2s7CiAgICAgYm9vbCBtX2FsbG93
c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KaW5kZXggNzRiMWMxOTk1MTFjNDk2M2FkZTE3MzI2NDNjZmZjZjk0MTQ4NjFjZS4u
Y2I1ZGU0Y2UwNmI3M2E2YjkyYTJhZTZjMjY4MmFhMzRkNWVmODBkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQpAQCAtMzksNiArMzksOCBAQAogI2ltcG9ydCAiV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlRpbWUuaD4KICNpbXBvcnQg
PFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDxvYmpjL21lc3NhZ2UuaD4KKyNpbXBvcnQgPG9iamMv
cnVudGltZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC01MCwxMSArNTIs
MTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNPRlRfTElOS19GUkFNRVdPUksoQVZG
b3VuZGF0aW9uKQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXllcikK
K1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNp
emUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVy
VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5TU3Ry
aW5nICopCiAKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZL
aXQsIEFWUGxheWVyQ29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJW
aWV3Q29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZWYWx1ZVRpbWluZykKK1NP
RlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJMYXllclZpZXcpCitTT0ZUX0xJTktfQ0xBU1Mo
QVZLaXQsIEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldykKIAogU09GVF9MSU5LX0ZS
QU1FV09SSyhVSUtpdCkKIFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlBcHBsaWNhdGlvbikKQEAg
LTc0LDEzICs4MSwxMiBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkK
IAogQGNsYXNzIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKLUBpbnRlcmZhY2UgV2ViQVZQ
bGF5ZXJDb250cm9sbGVyIDogTlNPYmplY3QgPEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZT4KLXsKK0BpbnRlcmZhY2UgV2ViQVZQbGF5ZXJDb250cm9sbGVyIDogTlNPYmplY3QgPEFWUGxh
eWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gewogICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRp
b24gKl9jdXJyZW50QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbjsKICAgICBXZWJBVk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICpfY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIH0KIAot
LSh2b2lkKXJlc2V0U3RhdGU7CistICh2b2lkKXJlc2V0U3RhdGU7CiAKIEBwcm9wZXJ0eSAocmV0
YWluKSBBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXJQcm94eTsKIEBwcm9wZXJ0
eSAoYXNzaWduKSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogZGVsZWdhdGU7CkBAIC0xNTAsNyAr
MTU2LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIGJvb2xTdHJpbmcoYm9vbCB2YWwpCiAgICAgW3N1
cGVyIGRlYWxsb2NdOwogfQogCi0tKHZvaWQpcmVzZXRTdGF0ZSB7CistICh2b2lkKXJlc2V0U3Rh
dGUKK3sKICAgICBzZWxmLmNvbnRlbnREdXJhdGlvbiA9IDA7CiAgICAgc2VsZi5tYXhUaW1lID0g
MDsKICAgICBzZWxmLmNvbnRlbnREdXJhdGlvbldpdGhpbkVuZFRpbWVzID0gMDsKQEAgLTE4MSw3
ICsxODgsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICAgICBz
ZWxmLmN1cnJlbnRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24gPSBuaWw7CiB9CiAKLS0gKEFW
UGxheWVyKikgcGxheWVyIHsKKy0gKEFWUGxheWVyICopIHBsYXllcgorewogICAgIHJldHVybiBu
aWw7CiB9CiAKQEAgLTU2OCwxMDEgKzU3NiwyMCBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwog
QGltcGxlbWVudGF0aW9uIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24KIEBlbmQKIAotCi1AaW50
ZXJmYWNlIFdlYkNBTGF5ZXJIb3N0V3JhcHBlciA6IENBTGF5ZXIKLUBwcm9wZXJ0eSAoYXNzaWdu
KSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbW9kZWw7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBXZWJDQUxheWVySG9zdFdyYXBwZXIgewotICAgIFJldGFpblB0cjxDQUxheWVyPiBfdmlkZW9T
dWJsYXllcjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW05TT2JqZWN0IGNhbmNlbFBy
ZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihy
ZXNvbHZlQm91bmRzKSBvYmplY3Q6bmlsXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0g
KHZvaWQpc2V0VmlkZW9TdWJsYXllcjooQ0FMYXllciopdmlkZW9TdWJsYXllcgotewotICAgIF92
aWRlb1N1YmxheWVyID0gdmlkZW9TdWJsYXllcjsKLSAgICBbc2VsZiBhZGRTdWJsYXllcjp2aWRl
b1N1YmxheWVyXTsKLX0KLQotLSAoQ0FMYXllciopdmlkZW9TdWJsYXllcgotewotICAgIHJldHVy
biBfdmlkZW9TdWJsYXllci5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRCb3VuZHM6KENHUmVjdCli
b3VuZHMKLXsKLSAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QoYm91bmRzLCBzZWxmLmJvdW5kcykp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91bmRzXTsKLQotICAg
IFtfdmlkZW9TdWJsYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRYKGJv
dW5kcyksIENHUmVjdEdldE1pZFkoYm91bmRzKSldOwotCi0gICAgaWYgKCFzZWxmLm1vZGVsKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFJlY3QgdmlkZW9GcmFtZSA9IHNlbGYubW9kZWwt
PnZpZGVvTGF5ZXJGcmFtZSgpOwotICAgIEZsb2F0UmVjdCB0YXJnZXRGcmFtZTsKLSAgICBzd2l0
Y2ggKHNlbGYubW9kZWwtPnZpZGVvTGF5ZXJHcmF2aXR5KCkpIHsKLSAgICBjYXNlIFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemU6Ci0gICAgICAgIHRh
cmdldEZyYW1lID0gYm91bmRzOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6Oldl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q6Ci0gICAgICAg
IHRhcmdldEZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVv
RnJhbWUuc2l6ZSgpLmFzcGVjdFJhdGlvKCksIGJvdW5kcyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGw6Ci0gICAgICAgIHRhcmdldEZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVj
dFJhdGlvQXJvdW5kUmVjdCh2aWRlb0ZyYW1lLnNpemUoKS5hc3BlY3RSYXRpbygpLCBib3VuZHMp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm0gPSBD
QVRyYW5zZm9ybTNETWFrZVNjYWxlKHRhcmdldEZyYW1lLndpZHRoKCkgLyB2aWRlb0ZyYW1lLndp
ZHRoKCksIHRhcmdldEZyYW1lLmhlaWdodCgpIC8gdmlkZW9GcmFtZS5oZWlnaHQoKSwgMSk7Ci0g
ICAgW192aWRlb1N1YmxheWVyIHNldFN1YmxheWVyVHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0KLSAg
ICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOwotICAgIFtzZWxm
IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgd2l0aE9iamVjdDpuaWwg
YWZ0ZXJEZWxheTpbQ0FUcmFuc2FjdGlvbiBhbmltYXRpb25EdXJhdGlvbl0gKyAwLjFdOwotfQot
Ci0tICh2b2lkKXJlc29sdmVCb3VuZHMKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQ
ZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVC
b3VuZHMpIG9iamVjdDpuaWxdOwotICAgIGlmICghc2VsZi5tb2RlbCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldEFu
aW1hdGlvbkR1cmF0aW9uOjBdOwotCi0gICAgW192aWRlb1N1YmxheWVyIHNldFN1YmxheWVyVHJh
bnNmb3JtOkNBVHJhbnNmb3JtM0RJZGVudGl0eV07Ci0gICAgc2VsZi5tb2RlbC0+c2V0VmlkZW9M
YXllckZyYW1lKFtzZWxmIGJvdW5kc10pOwotICAgIAotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1p
dF07Ci19Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV2ViQVZWaWRlb0xheWVyIDogQ0FMYXllciA8QVZW
aWRlb0xheWVyPgotKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyOwotQHByb3BlcnR5IChu
b25hdG9taWMpIEFWVmlkZW9MYXllckdyYXZpdHkgdmlkZW9MYXllckdyYXZpdHk7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgZ2V0dGVyID0gaXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JE
aXNwbGF5OwotQHByb3BlcnR5IChub25hdG9taWMpIENHUmVjdCB2aWRlb1JlY3Q7Ci0tICh2b2lk
KXNldFBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVyICopcGxheWVy
Vmlld0NvbnRyb2xsZXI7Ci0tICh2b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29u
dHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWlu
KSBDQUxheWVyKiB2aWRlb1N1YmxheWVyOworQGludGVyZmFjZSBXZWJBVlBsYXllckxheWVyIDog
Q0FMYXllcgorQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgTlNTdHJpbmcgKnZpZGVvR3Jh
dml0eTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNSZWFkeUZvckRpc3BsYXkpIEJP
T0wgcmVhZHlGb3JEaXNwbGF5OworQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgQVZQbGF5
ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
dGFpbikgQ0FMYXllciAqdmlkZW9TdWJsYXllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
LCBudWxsYWJsZSkgTlNEaWN0aW9uYXJ5ICpwaXhlbEJ1ZmZlckF0dHJpYnV0ZXM7CitAcHJvcGVy
dHkgQ0dTaXplIHZpZGVvRGltZW5zaW9uczsKK0Bwcm9wZXJ0eSBDR1JlY3QgbW9kZWxWaWRlb0xh
eWVyRnJhbWU7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlZpZGVvTGF5ZXIKLXsKK0Bp
bXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckxheWVyIHsKICAgICBSZXRhaW5QdHI8V2ViQVZQbGF5
ZXJDb250cm9sbGVyPiBfYXZQbGF5ZXJDb250cm9sbGVyOwotICAgIFJldGFpblB0cjxBVlBsYXll
clZpZXdDb250cm9sbGVyPiBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gX3ZpZGVvU3VibGF5ZXI7Ci0gICAgQVZWaWRlb0xheWVyR3Jhdml0eSBfdmlkZW9M
YXllckdyYXZpdHk7Ci19Ci0KLSsoV2ViQVZWaWRlb0xheWVyICopdmlkZW9MYXllcgotewotICAg
IHJldHVybiBbW1tXZWJBVlZpZGVvTGF5ZXIgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IF92aWRlb0dyYXZpdHk7CiB9CiAKIC0gKGluc3RhbmNldHlw
ZSlpbml0CkBAIC02NzAsMjYgKzU5NywzMSBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwogICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKHNlbGYpIHsKICAgICAgICAgW3NlbGYgc2V0
TWFza3NUb0JvdW5kczpZRVNdOwotICAgICAgICBbc2VsZiBzZXRWaWRlb0xheWVyR3Jhdml0eTpB
VlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0XTsKKyAgICAgICAgX3ZpZGVvR3Jhdml0eSA9
IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKTsKICAgICB9CiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtOU09iamVjdCBjYW5jZWxQcmV2
aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVz
b2x2ZUJvdW5kcykgb2JqZWN0Om5pbF07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChB
VlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyCit7CisgICAgcmV0dXJuIChBVlBs
YXllckNvbnRyb2xsZXIgKilfYXZQbGF5ZXJDb250cm9sbGVyLmdldCgpOworfQorCiAtICh2b2lk
KXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xs
ZXIKIHsKICAgICBBU1NFUlQoIXBsYXllckNvbnRyb2xsZXIgfHwgW3BsYXllckNvbnRyb2xsZXIg
aXNLaW5kT2ZDbGFzczpbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGNsYXNzXV0pOwogICAgIF9hdlBs
YXllckNvbnRyb2xsZXIgPSAoV2ViQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxl
cjsKIH0KIAotLSAodm9pZClzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyCi17Ci0gICAgX2F2UGxheWVyVmlld0NvbnRy
b2xsZXIgPSBwbGF5ZXJWaWV3Q29udHJvbGxlcjsKLX0KLQogLSAodm9pZClzZXRWaWRlb1N1Ymxh
eWVyOihDQUxheWVyICopdmlkZW9TdWJsYXllcgogewogICAgIF92aWRlb1N1YmxheWVyID0gdmlk
ZW9TdWJsYXllcjsKLSAgICBbc2VsZiBhZGRTdWJsYXllcjp2aWRlb1N1YmxheWVyXTsKIH0KIAog
LSAoQ0FMYXllciopdmlkZW9TdWJsYXllcgpAQCAtNjk5LDI3ICs2MzEsNzkgQEAgc3RhdGljIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252
ZXJ0VG9FeGl0RnVsbFMKIAogLSAodm9pZClzZXRCb3VuZHM6KENHUmVjdClib3VuZHMKIHsKKyAg
ICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QoYm91bmRzLCBzZWxmLmJvdW5kcykpCisgICAgICAgIHJl
dHVybjsKKyAgICAKICAgICBbc3VwZXIgc2V0Qm91bmRzOmJvdW5kc107CisgICAgCisgICAgaWYg
KFtfdmlkZW9TdWJsYXllciBzdXBlcmxheWVyXSAhPSBzZWxmKQorICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoW192aWRlb1N1YmxheWVyIHN1cGVybGF5ZXJdID09IHNlbGYpIHsKLSAgICAgICAg
W192aWRlb1N1YmxheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoYm91
bmRzKSwgQ0dSZWN0R2V0TWlkWShib3VuZHMpKV07Ci0gICAgICAgIFtfdmlkZW9TdWJsYXllciBz
ZXRCb3VuZHM6Ym91bmRzXTsKLSAgICB9CisgICAgW192aWRlb1N1YmxheWVyIHNldFBvc2l0aW9u
OkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoYm91bmRzKSwgQ0dSZWN0R2V0TWlkWShib3VuZHMp
KV07CisgICAgCisgICAgaWYgKCFbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0pCisgICAg
ICAgIHJldHVybjsKKworICAgIEZsb2F0UmVjdCBzb3VyY2VWaWRlb0ZyYW1lOworICAgIEZsb2F0
UmVjdCB0YXJnZXRWaWRlb0ZyYW1lOworICAgIGZsb2F0IHZpZGVvQXNwZWN0UmF0aW8gPSBzZWxm
LnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlkZW9EaW1lbnNpb25zLmhlaWdodDsKKyAg
ICAKKyAgICBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKSBpc0VxdWFsVG9TdHJp
bmc6c2VsZi52aWRlb0dyYXZpdHldKSB7CisgICAgICAgIHNvdXJjZVZpZGVvRnJhbWUgPSBzZWxm
Lm1vZGVsVmlkZW9MYXllckZyYW1lOworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gc2VsZi5i
b3VuZHM7CisgICAgfSBlbHNlIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVj
dCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKKyAgICAgICAgc291cmNl
VmlkZW9GcmFtZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh2aWRlb0Fz
cGVjdFJhdGlvLCBzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKKyAgICAgICAgdGFyZ2V0Vmlk
ZW9GcmFtZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh2aWRlb0FzcGVj
dFJhdGlvLCBzZWxmLmJvdW5kcyk7CisgICAgfSBlbHNlIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGwoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHld
KSB7CisgICAgICAgIHNvdXJjZVZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0
aW9Bcm91bmRSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUp
OworICAgICAgICBzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lID0gQ0dSZWN0TWFrZSgwLCAwLCBz
b3VyY2VWaWRlb0ZyYW1lLndpZHRoKCksIHNvdXJjZVZpZGVvRnJhbWUuaGVpZ2h0KCkpOworICAg
ICAgICBbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNldFZpZGVvTGF5ZXJGcmFtZShz
ZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKKyAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9IHNt
YWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2Vs
Zi5ib3VuZHMpOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKwor
ICAgIFVJVmlldyAqdmlldyA9IFtfdmlkZW9TdWJsYXllciBkZWxlZ2F0ZV07CisgICAgQ0dBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUodGFyZ2V0
VmlkZW9GcmFtZS53aWR0aCgpIC8gc291cmNlVmlkZW9GcmFtZS53aWR0aCgpLCB0YXJnZXRWaWRl
b0ZyYW1lLmhlaWdodCgpIC8gc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7CisgICAgW3ZpZXcg
c2V0VHJhbnNmb3JtOnRyYW5zZm9ybV07CisgICAgCisgICAgW05TT2JqZWN0IGNhbmNlbFByZXZp
b3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihyZXNv
bHZlQm91bmRzKSBvYmplY3Q6bmlsXTsKKyAgICAKKyAgICBpZiAoIUNHQWZmaW5lVHJhbnNmb3Jt
RXF1YWxUb1RyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCB0cmFuc2Zvcm0pKQor
ICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIHdp
dGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6W0NBVHJhbnNhY3Rpb24gYW5pbWF0aW9uRHVyYXRpb25d
ICsgMC4xXTsKK30KKworLSAodm9pZClyZXNvbHZlQm91bmRzCit7CisgICAgW05TT2JqZWN0IGNh
bmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihyZXNvbHZlQm91bmRzKSBvYmplY3Q6bmlsXTsKKyAgICBpZiAoIVtfYXZQbGF5ZXJDb250
cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChbX3ZpZGVv
U3VibGF5ZXIgc3VwZXJsYXllcl0gIT0gc2VsZikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25E
dXJhdGlvbjowXTsKKyAgICAKKyAgICBbKFVJVmlldyAqKVtfdmlkZW9TdWJsYXllciBkZWxlZ2F0
ZV0gc2V0VHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHldOworICAgIHNlbGYubW9k
ZWxWaWRlb0xheWVyRnJhbWUgPSBbc2VsZiBib3VuZHNdOworICAgIFtfYXZQbGF5ZXJDb250cm9s
bGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9kZWxWaWRlb0xheWVyRnJh
bWUpOworICAgIAorICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKLS0gKHZvaWQpc2V0
VmlkZW9MYXllckdyYXZpdHk6KEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdyYXZpdHkK
Ky0gKHZvaWQpc2V0VmlkZW9HcmF2aXR5OihOU1N0cmluZyAqKXZpZGVvR3Jhdml0eQogewotICAg
IF92aWRlb0xheWVyR3Jhdml0eSA9IHZpZGVvTGF5ZXJHcmF2aXR5OworICAgIF92aWRlb0dyYXZp
dHkgPSB2aWRlb0dyYXZpdHk7CiAgICAgCiAgICAgaWYgKCFbX2F2UGxheWVyQ29udHJvbGxlciBk
ZWxlZ2F0ZV0pCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkNvcmU6OldlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSA9IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0gICAgaWYgKHZpZGVvTGF5ZXJH
cmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemUpCisgICAgaWYgKHZpZGVvR3Jhdml0
eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplKCkpCiAgICAgICAgIGdyYXZpdHkgPSBX
ZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplOwotICAg
IGlmICh2aWRlb0xheWVyR3Jhdml0eSA9PSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0
KQorICAgIGlmICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdCgpKQogICAgICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBlbHNlIGlmICh2aWRlb0xheWVyR3Jh
dml0eSA9PSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0RmlsbCkKKyAgICBlbHNlIGlm
ICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwo
KSkKICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC03MjcsMjQgKzcxMSwxNjIgQEAgc3RhdGljIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVs
bFMKICAgICBbX2F2UGxheWVyQ29udHJvbGxlciBkZWxlZ2F0ZV0tPnNldFZpZGVvTGF5ZXJHcmF2
aXR5KGdyYXZpdHkpOwogfQogCi0tIChBVlZpZGVvTGF5ZXJHcmF2aXR5KXZpZGVvTGF5ZXJHcmF2
aXR5CistIChOU1N0cmluZyAqKXZpZGVvR3Jhdml0eQogewotICAgIHJldHVybiBfdmlkZW9MYXll
ckdyYXZpdHk7CisgICAgcmV0dXJuIF92aWRlb0dyYXZpdHkuZ2V0KCk7CiB9CiAKLS0gKHZvaWQp
ZW50ZXJQSVBNb2RlUmVkaXJlY3RpbmdWaWRlb1RvTGF5ZXI6KENBTGF5ZXIgKilsYXllcgorLSAo
Q0dSZWN0KXZpZGVvUmVjdAogewotICAgIFtfdmlkZW9TdWJsYXllciByZW1vdmVGcm9tU3VwZXJs
YXllcl07Ci0gICAgW2xheWVyIGFkZFN1YmxheWVyOl92aWRlb1N1YmxheWVyLmdldCgpXTsKKyAg
ICBmbG9hdCB2aWRlb0FzcGVjdFJhdGlvID0gc2VsZi52aWRlb0RpbWVuc2lvbnMud2lkdGggLyBz
ZWxmLnZpZGVvRGltZW5zaW9ucy5oZWlnaHQ7CisgICAgCisgICAgaWYgKFtnZXRBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5
XSkKKyAgICAgICAgcmV0dXJuIGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh2
aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CisgICAgaWYgKFtnZXRBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0
eV0pCisgICAgICAgIHJldHVybiBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0
KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKworICAgIHJldHVybiBzZWxmLmJvdW5k
czsKK30KKworKyAoTlNTZXQgKilrZXlQYXRoc0ZvclZhbHVlc0FmZmVjdGluZ1ZpZGVvUmVjdAor
eworICAgIHJldHVybiBbTlNTZXQgc2V0V2l0aE9iamVjdHM6QCJ2aWRlb0RpbWVuc2lvbnMiLCBA
InZpZGVvR3Jhdml0eSIsIG5pbF07Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXZWJBVlBpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgOiBBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXll
clZpZXcKK0BlbmQKKworc3RhdGljIENBTGF5ZXIqIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXll
ckxheWVyVmlld19sYXllckNsYXNzKGlkLCBTRUwpCit7CisgICAgcmV0dXJuIFtXZWJBVlBsYXll
ckxheWVyIGNsYXNzXTsKIH0KIAotLSAodm9pZClsZWF2ZVBJUE1vZGUKK3N0YXRpYyBDbGFzcyBn
ZXRXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcygpCiB7Ci0gICAgW192
aWRlb1N1YmxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbc2VsZiBhZGRTdWJsYXll
cjpfdmlkZW9TdWJsYXllci5nZXQoKV07CisgICAgc3RhdGljIENsYXNzIHRoZUNsYXNzID0gbmls
OworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgdGhlQ2xhc3MgPSBvYmpjX2FsbG9jYXRlQ2xhc3NQ
YWlyKGdldEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld0NsYXNzKCksICJXZWJBVlBp
Y3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXciLCAwKTsKKyAgICAgICAgb2JqY19yZWdpc3Rl
ckNsYXNzUGFpcih0aGVDbGFzcyk7CisgICAgICAgIENsYXNzIG1ldGFDbGFzcyA9IG9iamNfZ2V0
TWV0YUNsYXNzKCJXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXciKTsKKyAgICAg
ICAgY2xhc3NfYWRkTWV0aG9kKG1ldGFDbGFzcywgQHNlbGVjdG9yKGxheWVyQ2xhc3MpLCAoSU1Q
KVdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld19sYXllckNsYXNzLCAiQEA6Iik7
CisgICAgfSk7CisgICAgCisgICAgcmV0dXJuIHRoZUNsYXNzOwogfQorCitAaW50ZXJmYWNlIFdl
YkFWUGxheWVyTGF5ZXJWaWV3IDogQVZQbGF5ZXJMYXllclZpZXcKK0Bwcm9wZXJ0eSAocmV0YWlu
KSBVSVZpZXcqIHZpZGVvVmlldzsKIEBlbmQKIAorc3RhdGljIENBTGF5ZXIqIFdlYkFWUGxheWVy
TGF5ZXJWaWV3X2xheWVyQ2xhc3MoaWQsIFNFTCkKK3sKKyAgICByZXR1cm4gW1dlYkFWUGxheWVy
TGF5ZXIgY2xhc3NdOworfQorCitzdGF0aWMgQVZQbGF5ZXJDb250cm9sbGVyKiBXZWJBVlBsYXll
ckxheWVyVmlld19wbGF5ZXJDb250cm9sbGVyKGlkIGFTZWxmLCBTRUwpCit7CisgICAgQVZQbGF5
ZXJMYXllclZpZXcgKnBsYXllckxheWVyID0gYVNlbGY7CisgICAgV2ViQVZQbGF5ZXJMYXllciAq
d2ViQVZQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyIHBsYXll
ckxheWVyXTsKKyAgICByZXR1cm4gW3dlYkFWUGxheWVyTGF5ZXIgcGxheWVyQ29udHJvbGxlcl07
Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xs
ZXIoaWQgYVNlbGYsIFNFTCwgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyKQor
eworICAgIEFWUGxheWVyTGF5ZXJWaWV3ICpwbGF5ZXJMYXllclZpZXcgPSBhU2VsZjsKKyAgICBX
ZWJBVlBsYXllckxheWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilb
cGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKKyAgICBbd2ViQVZQbGF5ZXJMYXllciBzZXRQ
bGF5ZXJDb250cm9sbGVyOiBwbGF5ZXJDb250cm9sbGVyXTsKK30KKworc3RhdGljIFVJVmlldyog
V2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KGlkIGFTZWxmLCBTRUwpCit7CisgICAgQVZQ
bGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyID0gYVNlbGY7CisgICAgV2ViQVZQbGF5ZXJMYXll
ciAqd2ViQVZQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyIHBs
YXllckxheWVyXTsKKyAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gW3dlYkFWUGxheWVyTGF5ZXIg
dmlkZW9TdWJsYXllcl07CisgICAgaWYgKCF2aWRlb0xheWVyKQorICAgICAgICByZXR1cm4gbmls
OworICAgIEFTU0VSVChbW3ZpZGVvTGF5ZXIgZGVsZWdhdGVdIGlzS2luZE9mQ2xhc3M6Z2V0VUlW
aWV3Q2xhc3MoKV0pOworICAgIHJldHVybiAoVUlWaWV3ICopW3ZpZGVvTGF5ZXIgZGVsZWdhdGVd
OworfQorCitzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1ZpZXcoaWQg
YVNlbGYsIFNFTCwgVUlWaWV3ICp2aWRlb1ZpZXcpCit7CisgICAgQVZQbGF5ZXJMYXllclZpZXcg
KnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKndlYkFWUGxh
eWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5
ZXJdOworICAgIFt3ZWJBVlBsYXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6W3ZpZGVvVmlldyBs
YXllcl1dOworfQorCitzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVyVmlld19zdGFydFJvdXRp
bmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyhpZCBhU2VsZiwgU0VMKQor
eworICAgIFdlYkFWUGxheWVyTGF5ZXJWaWV3ICpwbGF5ZXJMYXllclZpZXcgPSBhU2VsZjsKKyAg
ICBBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSBbcGxheWVyTGF5
ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXddOworCisgICAgV2ViQVZQbGF5
ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZp
ZXcgcGxheWVyTGF5ZXJdOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBpcFBsYXllckxheWVyID0g
KFdlYkFWUGxheWVyTGF5ZXIgKilbcGlwVmlldyBwbGF5ZXJMYXllcl07CisgICAgW3BsYXllckxh
eWVyIHNldFZpZGVvR3Jhdml0eTpnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCld
OworICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb1N1YmxheWVyOnBsYXllckxheWVyLnZpZGVv
U3VibGF5ZXJdOworICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6cGxheWVy
TGF5ZXIudmlkZW9EaW1lbnNpb25zXTsKKyAgICBbcGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2
aXR5OnBsYXllckxheWVyLnZpZGVvR3Jhdml0eV07CisgICAgW3BpcFBsYXllckxheWVyIHNldE1v
ZGVsVmlkZW9MYXllckZyYW1lOnBsYXllckxheWVyLm1vZGVsVmlkZW9MYXllckZyYW1lXTsKKyAg
ICBbcGlwUGxheWVyTGF5ZXIgc2V0UGxheWVyQ29udHJvbGxlcjpwbGF5ZXJMYXllci5wbGF5ZXJD
b250cm9sbGVyXTsKKyAgICBbcGlwVmlldyBhZGRTdWJ2aWV3OnBsYXllckxheWVyVmlldy52aWRl
b1ZpZXddOworfQorCitzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGlu
Z1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7
CisgICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAg
IFtwbGF5ZXJMYXllclZpZXcgYWRkU3VidmlldzpwbGF5ZXJMYXllclZpZXcudmlkZW9WaWV3XTsK
K30KKworc3RhdGljIEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqV2ViQVZQbGF5
ZXJMYXllclZpZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyhpZCBhU2VsZiwgU0VM
KQoreworICAgIFdlYkFWUGxheWVyTGF5ZXJWaWV3ICpwbGF5ZXJMYXllclZpZXcgPSBhU2VsZjsK
KyAgICBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSBbcGxh
eWVyTGF5ZXJWaWV3IHZhbHVlRm9yS2V5OkAiX3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZp
ZXciXTsKKyAgICBpZiAoIXBpcFZpZXcpIHsKKyAgICAgICAgcGlwVmlldyA9IFtbZ2V0V2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RaZXJvXTsKKyAgICAgICAgW3BsYXllckxheWVyVmlldyBzZXRWYWx1ZTpwaXBWaWV3
IGZvcktleTpAIl9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Il07CisgICAgfQorICAg
IHJldHVybiBwaXBWaWV3OworfQorCitzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVyVmlld19k
ZWFsbG9jKGlkIGFTZWxmLCBTRUwpCit7CisgICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXll
ckxheWVyVmlldyA9IGFTZWxmOworICAgIFJldGFpblB0cjxXZWJBVlBpY3R1cmVJblBpY3R1cmVQ
bGF5ZXJMYXllclZpZXc+IHBpcFZpZXcgPSBhZG9wdE5TKFtwbGF5ZXJMYXllclZpZXcgdmFsdWVG
b3JLZXk6QCJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyJdKTsKKyAgICBbcGxheWVy
TGF5ZXJWaWV3IHNldFZhbHVlOm5pbCBmb3JLZXk6QCJfcGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldyJdOworICAgIG9iamNfc3VwZXIgc3VwZXJDbGFzcyB7IHBsYXllckxheWVyVmlldywg
Z2V0QVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIH07CisgICAgYXV0byBzdXBlcl9kZWFsbG9jID0g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKG9iamNfc3VwZXIqLCBTRUwpPihvYmpjX21zZ1NlbmRT
dXBlcik7CisgICAgc3VwZXJfZGVhbGxvYygmc3VwZXJDbGFzcywgQHNlbGVjdG9yKGRlYWxsb2Mp
KTsKK30KKworI3ByYWdtYSBtYXJrIC0gTWV0aG9kcworCitzdGF0aWMgQ2xhc3MgZ2V0V2ViQVZQ
bGF5ZXJMYXllclZpZXdDbGFzcygpCit7CisgICAgc3RhdGljIENsYXNzIHRoZUNsYXNzID0gbmls
OworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgdGhlQ2xhc3MgPSBvYmpjX2FsbG9jYXRlQ2xhc3NQ
YWlyKGdldEFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSwgIldlYkFWUGxheWVyTGF5ZXJWaWV3Iiwg
MCk7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKGRlYWxsb2Mp
LCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X2RlYWxsb2MsICJ2QDoiKTsKKyAgICAgICAgY2xh
c3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc2V0UGxheWVyQ29udHJvbGxlcjopLCAo
SU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xsZXIsICJ2QDpAIik7Cisg
ICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHBsYXllckNvbnRyb2xs
ZXIpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIsICJAQDoiKTsK
KyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc2V0VmlkZW9WaWV3
OiksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0VmlkZW9WaWV3LCAidkA6QCIpOworICAg
ICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3Rvcih2aWRlb1ZpZXcpLCAoSU1Q
KVdlYkFWUGxheWVyTGF5ZXJWaWV3X3ZpZGVvVmlldywgIkBAOiIpOworICAgICAgICBjbGFzc19h
ZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRS
b3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJ2QDoiKTsKKyAg
ICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc3RvcFJvdXRpbmdWaWRl
b1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXll
clZpZXdfc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywg
InZAOiIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihwaWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19w
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3LCAiQEA6Iik7CisgICAgICAgIAorICAgICAg
ICBjbGFzc19hZGRJdmFyKHRoZUNsYXNzLCAiX3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZp
ZXciLCBzaXplb2YoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopLCBsb2cy
KHNpemVvZihXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKikpLCAiQCIpOwor
ICAgICAgICAKKyAgICAgICAgb2JqY19yZWdpc3RlckNsYXNzUGFpcih0aGVDbGFzcyk7CisgICAg
ICAgIENsYXNzIG1ldGFDbGFzcyA9IG9iamNfZ2V0TWV0YUNsYXNzKCJXZWJBVlBsYXllckxheWVy
VmlldyIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0b3IobGF5
ZXJDbGFzcyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcywgIkBAOiIpOwor
ICAgIH0pOworICAgIHJldHVybiB0aGVDbGFzczsKK30KKwogV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKICAgICA6IG1f
cGxheWVyQ29udHJvbGxlcihhZG9wdE5TKFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBp
bml0XSkpCiB7CkBAIC04MTksNiArOTQxLDkgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXQKIAog
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25z
KGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7CisgICAgV2ViQVZQ
bGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVttX3BsYXllckxh
eWVyVmlldyBwbGF5ZXJMYXllcl07CisKKyAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNp
b25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIg
c2V0SGFzRW5hYmxlZFZpZGVvOmhhc1ZpZGVvXTsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNl
dENvbnRlbnREaW1lbnNpb25zOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwogfQpAQCAtODgz
LDE0ICsxMDA4LDE0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNl
dEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hCiAgICAgcGxheWVyQ29udHJv
bGxlci5leHRlcm5hbFBsYXliYWNrQWlyUGxheURldmljZUxvY2FsaXplZE5hbWUgPSBsb2NhbGl6
ZWREZXZpY2VOYW1lOwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja1R5cGUg
PSBleHRlcm5hbFBsYXliYWNrVHlwZTsKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxh
eWJhY2tBY3RpdmUgPSBlbmFibGVkOwotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIuZ2V0KCkg
c2V0SGlkZGVuOmVuYWJsZWRdOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRkZW46ZW5h
YmxlZF07CiB9CiAKIEBpbnRlcmZhY2UgVUlXaW5kb3cgKCkKLS0oQk9PTClfaXNIb3N0ZWRJbkFu
b3RoZXJQcm9jZXNzOworLSAoQk9PTClfaXNIb3N0ZWRJbkFub3RoZXJQcm9jZXNzOwogQGVuZAog
Ci12b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4o
UGxhdGZvcm1MYXllciYgdmlkZW9MYXllciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlh
bFJlY3QsIFVJVmlldyogcGFyZW50VmlldywgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKQor
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJ
VmlldyYgdmlkZW9WaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgVUlW
aWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spCiB7CiAgICAgQVNT
RVJUKG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSk7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6c2V0dXBGdWxsc2NyZWVuKCVwKSIsIHRoaXMpOwpAQCAtODk5LDcgKzEwMjQsNiBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oUGxhdGZv
cm1MYXllciYgdmlkZW9MYXllcgogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtD
QVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107Ci0gICAgbV92aWRlb0xheWVyID0g
JnZpZGVvTGF5ZXI7CiAgICAgbV9tb2RlID0gbW9kZTsKICAgICBtX3BhcmVudFZpZXcgPSBwYXJl
bnRWaWV3OwogICAgIG1fcGFyZW50V2luZG93ID0gcGFyZW50Vmlldy53aW5kb3c7CkBAIC05MTMs
NTEgKzEwMzcsNDYgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0
dXBGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImIHZpZGVvTGF5ZXIKICAgICAgICAgW21fd2luZG93
IG1ha2VLZXlBbmRWaXNpYmxlXTsKICAgICB9CiAKLSAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZy
b21TdXBlcmxheWVyXTsKKyAgICBtX3BsYXllckxheWVyVmlldyA9IGFkb3B0TlMoW1tnZXRXZWJB
VlBsYXllckxheWVyVmlld0NsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICBbbV9wbGF5ZXJMYXll
clZpZXcgc2V0SGlkZGVuOlttX3BsYXllckNvbnRyb2xsZXIgaXNFeHRlcm5hbFBsYXliYWNrQWN0
aXZlXV07CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEJhY2tncm91bmRDb2xvcjpbZ2V0VUlD
b2xvckNsYXNzKCkgY2xlYXJDb2xvcl1dOworICAgIAorICAgIFttX3BsYXllckxheWVyVmlldyBz
ZXRWaWRlb1ZpZXc6JnZpZGVvVmlld107CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IGFkZFN1YnZp
ZXc6JnZpZGVvVmlld107CiAKLSAgICBtX2xheWVySG9zdFdyYXBwZXIgPSBhZG9wdE5TKFtbV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW21fbGF5ZXJIb3N0V3JhcHBl
ciBzZXRNb2RlbDptX3ZpZGVvRnVsbHNjcmVlbk1vZGVsXTsKLSAgICBbbV9sYXllckhvc3RXcmFw
cGVyIHNldFZpZGVvU3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpXTsKKyAgICBXZWJBVlBsYXll
ckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJW
aWV3IHBsYXllckxheWVyXTsKIAotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IFtXZWJBVlZp
ZGVvTGF5ZXIgdmlkZW9MYXllcl07Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRIaWRk
ZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKLSAgICBb
bV92aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvU3VibGF5ZXI6bV9sYXllckhvc3RXcmFwcGVy
LmdldCgpXTsKKyAgICBbcGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCBpbml0aWFsUmVjdC53aWR0aCgpLCBpbml0aWFsUmVjdC5oZWlnaHQoKSldOwor
ICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6W21fcGxheWVyQ29udHJvbGxlciBj
b250ZW50RGltZW5zaW9uc11dOwogCi0gICAgQ0dTaXplIHZpZGVvU2l6ZSA9IFttX3BsYXllckNv
bnRyb2xsZXIgY29udGVudERpbWVuc2lvbnNdOwotICAgIENHUmVjdCB2aWRlb1JlY3QgPSBDR1Jl
Y3RNYWtlKDAsIDAsIHZpZGVvU2l6ZS53aWR0aCwgdmlkZW9TaXplLmhlaWdodCk7Ci0gICAgW21f
dmlkZW9MYXllckNvbnRhaW5lciBzZXRWaWRlb1JlY3Q6dmlkZW9SZWN0XTsKLSAgICBpZiAobV92
aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+c2V0
VmlkZW9MYXllckZyYW1lKHZpZGVvUmVjdCk7Ci0KLSAgICAvLyBUaGlzIG1ldGhvZCBoYXMgYmVl
biBkZXByZWNhdGVkIHNvIGlnbm9yZSB0aGUgd2FybmluZyB1bnRpbCB3ZSBwb3J0IG91ciBjb2Rl
IHRvIHRoZSBuZXcgQVBJLgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAg
IG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRy
b2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoVmlkZW9MYXllcjptX3ZpZGVvTGF5ZXJDb250YWluZXIu
Z2V0KCldKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICBtX3BsYXllclZpZXdD
b250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5zdGFuY2Uo
KSBpbml0V2l0aFBsYXllckxheWVyVmlldzptX3BsYXllckxheWVyVmlldy5nZXQoKV0pOwogCiAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsK
ICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXll
ckNvbnRyb2xsZXIgKiltX3BsYXllckNvbnRyb2xsZXIuZ2V0KCldOwogICAgIFttX3BsYXllclZp
ZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAg
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNr
Om1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKIAotICAgIFttX3ZpZGVvTGF5ZXJD
b250YWluZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5n
ZXQoKV07Ci0KICAgICBpZiAobV92aWV3Q29udHJvbGxlcikgewogICAgICAgICBbbV92aWV3Q29u
dHJvbGxlciBhZGRDaGlsZFZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0
KCldOwogICAgICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gYWRkU3VidmlldzpbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XV07CiAgICAgfSBlbHNlCi0gICAgICAgIFtwYXJlbnRWaWV3
LndpbmRvdyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKKyAgICAg
ICAgW3BhcmVudFZpZXcgYWRkU3VidmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XV07
CiAKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFtwYXJlbnRWaWV3
IGNvbnZlcnRSZWN0OmluaXRpYWxSZWN0IHRvVmlldzpuaWxdOworICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddLmZyYW1lID0gW3BhcmVudFZpZXcgY29udmVydFJlY3Q6aW5pdGlhbFJl
Y3QgdG9WaWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLnN1cGVydmlld107CiAKICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRV
SUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CisgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVy
IHZpZXddIHNldEF1dG9yZXNpemluZ01hc2s6KFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlQm90
dG9tTWFyZ2luIHwgVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVSaWdodE1hcmdpbildOworCiAg
ICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldE5lZWRzTGF5b3V0XTsKICAgICBb
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwogCiAgICAgW0NB
VHJhbnNhY3Rpb24gY29tbWl0XTsKIAotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZFNldHVwRnVsbHNjcmVl
bigpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25n
VGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbc3Ryb25nVGhpcywgdGhpc10geworICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBG
dWxsc2NyZWVuKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlbigpCkBAIC05NjgsNyArMTA4Nyw3IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgbV9l
eGl0UmVxdWVzdGVkID0gZmFsc2U7CiAgICAgbV9lbnRlclJlcXVlc3RlZCA9IHRydWU7CiAKLSAg
ICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEJhY2tncm91bmRDb2xvcjpbW2dldFVJQ29sb3JD
bGFzcygpIGJsYWNrQ29sb3JdIENHQ29sb3JdXTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0
QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBibGFja0NvbG9yXV07CiAgICAgaWYg
KG1vZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0
dXJlSW5QaWN0dXJlKQogICAgICAgICBlbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKICAgICBlbHNl
IGlmIChtb2RlKCkgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
U3RhbmRhcmQpCkBAIC0xMDEyLDEzICsxMTMxLDEyIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZp
CiAgICAgCiAgICAgTE9HKEZ1bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6ZXhpdEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7CiAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsKLSAgICBpZiAobV92aWV3Q29udHJv
bGxlcikKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9w
YXJlbnRWaWV3IGNvbnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6bmlsXTsKLSAgICBlbHNlCi0g
ICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gZmluYWxSZWN0Owor
ICAgIAorICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50
VmlldyBjb252ZXJ0UmVjdDpmaW5hbFJlY3QgdG9WaWV3OlttX3BsYXllclZpZXdDb250cm9sbGVy
IHZpZXddLnN1cGVydmlld107CiAKLSAgICBpZiAoW21fdmlkZW9MYXllckNvbnRhaW5lciB2aWRl
b0xheWVyR3Jhdml0eV0gIT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZUFzcGVjdCkKLSAgICAg
ICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBzZXRWaWRlb0xheWVyR3Jhdml0eTpBVlZpZGVvTGF5
ZXJHcmF2aXR5UmVzaXplQXNwZWN0XTsKKyAgICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXll
ciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsK
KyAgICBpZiAoW3BsYXllckxheWVyIHZpZGVvR3Jhdml0eV0gIT0gZ2V0QVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdCgpKQorICAgICAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5
OmdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKV07CiAgICAgW1ttX3BsYXllclZp
ZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsKIAogICAgIGlmIChpc01vZGUoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkp
IHsKQEAgLTEwMzcsMjIgKzExNTUsMjQgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmkKIAogICAg
ICAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rp
b24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICAgICAgICAgIFttX3ZpZGVvTGF5ZXJDb250
YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl0g
Q0dDb2xvcl1dOworICAgICAgICAgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEJhY2tncm91bmRD
b2xvcjpbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl1dOwogICAgICAgICAgICAgW1ttX3Bs
YXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xvcjpbZ2V0VUlDb2xvckNs
YXNzKCkgY2xlYXJDb2xvcl1dOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsK
IAotICAgICAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICAg
ICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFeGl0RnVsbHNjcmVlbigpOwor
ICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
KyAgICAgICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCisgICAgICAg
ICAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFeGl0RnVsbHNjcmVl
bigpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH1dOwogICAgIH07CiB9CiAKIEBpbnRlcmZh
Y2UgVUlBcHBsaWNhdGlvbiAoKQotLSh2b2lkKV9zZXRTdGF0dXNCYXJPcmllbnRhdGlvbjooVUlJ
bnRlcmZhY2VPcmllbnRhdGlvbilvOworLSAodm9pZClfc2V0U3RhdHVzQmFyT3JpZW50YXRpb246
KFVJSW50ZXJmYWNlT3JpZW50YXRpb24pbzsKIEBlbmQKIAogQGludGVyZmFjZSBVSVdpbmRvdyAo
KQotLShVSUludGVyZmFjZU9yaWVudGF0aW9uKWludGVyZmFjZU9yaWVudGF0aW9uOworLSAoVUlJ
bnRlcmZhY2VPcmllbnRhdGlvbilpbnRlcmZhY2VPcmllbnRhdGlvbjsKIEBlbmQKIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oKQpAQCAt
MTA4MCwxNiArMTIwMCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpjbGVhbnVwRnVsbHNjcmVlbigpCiAgICAgaWYgKG1fdmlld0NvbnRyb2xsZXIpCiAgICAgICAg
IFttX3BsYXllclZpZXdDb250cm9sbGVyIHJlbW92ZUZyb21QYXJlbnRWaWV3Q29udHJvbGxlcl07
CiAgICAgCi0gICAgW21fdmlkZW9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgW21f
dmlkZW9MYXllckNvbnRhaW5lciByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgW21fdmlkZW9M
YXllckNvbnRhaW5lciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjpuaWxdOworICAgIFttX3BsYXll
ckxheWVyVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBbW21fdmlld0NvbnRyb2xsZXIg
dmlld10gcmVtb3ZlRnJvbVN1cGVydmlld107CiAKLSAgICBbbV9sYXllckhvc3RXcmFwcGVyIHNl
dE1vZGVsOm51bGxwdHJdOwotCi0gICAgbV9sYXllckhvc3RXcmFwcGVyID0gbmlsOwotICAgIG1f
dmlkZW9MYXllciA9IG5pbDsKLSAgICBtX3ZpZGVvTGF5ZXJDb250YWluZXIgPSBuaWw7CisgICAg
bV9wbGF5ZXJMYXllclZpZXcgPSBuaWw7CiAgICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IG5p
bDsKICAgICBtX3BsYXllckNvbnRyb2xsZXIgPSBuaWw7CiAgICAgbV92aWV3Q29udHJvbGxlciA9
IG5pbDsKQEAgLTExMzUsNyArMTI0OSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShib29sIHZpc2libGUsIGNvCiAgICAg
TE9HKEZ1bGxzY3JlZW4sICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFy
ZWRUb1JldHVyblRvSW5saW5lKCVwKSAtIHZpc2libGUoJXMpIiwgdGhpcywgYm9vbFN0cmluZyh2
aXNpYmxlKSk7CiAgICAgaWYgKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2spIHsKICAgICAgICAg
Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50
VmlldyBjb252ZXJ0UmVjdDppbmxpbmVSZWN0IHRvVmlldzpuaWxdOworICAgICAgICBbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZpZXcgY29udmVydFJlY3Q6
aW5saW5lUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3
XTsKIAogICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RGOjpt
b3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2spOwogICAgICAgICBjYWxsYmFjayh2aXNpYmxl
KTsKQEAgLTEyMDYsNyArMTMyMCw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAgIG1fZXhpdENvbXBsZXRlZCA9
IHRydWU7CiAKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEJhY2tncm91bmRDb2xvcjpb
W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdIENHQ29sb3JdXTsKKyAgICBbbV9wbGF5ZXJM
YXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9y
XV07CiAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xv
cjpbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl1dOwogCiAgICAgY2xlYXJNb2RlKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWwuaAppbmRleCA3MjkxNGRiZjIzMTUxYzRhZWMwYTZjZmZhZWExNTc4MjhmZmNmMTlhLi4z
YzU1YWEzYjFjMzc5NTVmYTJmZjBkZGY1ZWI4MTE5YzcwYTNkMmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwuaApAQCAt
NDgsMTAgKzQ4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSA9IDA7Ci0gICAgdmlydHVh
bCBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lKCkgY29uc3QgPSAwOwogICAgIGVudW0gVmlkZW9H
cmF2aXR5IHsgVmlkZW9HcmF2aXR5UmVzaXplLCBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIFZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9M
YXllckdyYXZpdHkoVmlkZW9HcmF2aXR5KSA9IDA7Ci0gICAgdmlydHVhbCBWaWRlb0dyYXZpdHkg
dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Vs
ZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKaW5kZXgg
NjljOGYwMWI4YzNmMmRlNmJiMjBlNTI4OTZiNDIwNGY3NjFkZDQ2OS4uMWFhM2NlNWJiYzkwOGNj
ZGE0NGEzZDIyYjQ0MmEyMDJhNzZiZTEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50LmgKQEAgLTcyLDkgKzcyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFZpZGVv
TGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBWaWRlb0dyYXZpdHkgdmlkZW9MYXllckdyYXZpdHkoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1
aW50NjRfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDljODk1YWJmMjNjZmY0MjIwMGY2MzY4ZTc2
ZWU4ZjdhNDIxNTYxMGUuLmI4NTJlOWZlMDg2MjI4OTY0ODZlNzc0YjNlYTA0ODY0ZTUzZTYyNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTI1NCwxMSArMjU0LDYg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9MYXll
ckZyYW1lKEZsb2F0UmVjdCByZWN0KQogICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUocmVjdCk7CiB9CiAKLUZsb2F0UmVjdCBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6dmlkZW9MYXllckZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV92aWRlb0ZyYW1lOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9H
cmF2aXR5IGdyYXZpdHkpCiB7CiAgICAgTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSB2aWRlb0dy
YXZpdHkgPSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OwpAQCAtMjc0LDIx
ICsyNjksNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRW
aWRlb0xheWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZQogICAgIG1fdmlkZW9FbGVtZW50LT5z
ZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KHZpZGVvR3Jhdml0eSk7CiB9CiAKLVdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnZpZGVvTGF5ZXJHcmF2aXR5KCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1fdmlkZW9F
bGVtZW50LT52aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkpIHsKLSAgICBjYXNlIE1lZGlhUGxheWVy
OjpWaWRlb0dyYXZpdHlSZXNpemU6Ci0gICAgICAgIHJldHVybiBWaWRlb0dyYXZpdHlSZXNpemU7
Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OgotICAgICAg
ICByZXR1cm4gVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGNhc2UgTWVkaWFQbGF5ZXI6
OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw6Ci0gICAgICAgIHJldHVybiBWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3RGaWxsOwotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBWaWRlb0dyYXZpdHlSZXNpemU7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3Qgc2Vs
ZWN0ZWRBdWRpb0luZGV4KQogewogICAgIEF1ZGlvVHJhY2sqIHNlbGVjdGVkQXVkaW9UcmFjayA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2Ev
QVZLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5o
CmluZGV4IDdjYmIwN2I2NjNkZGYxMzQxNDE3ZWZiZmQ1NGNiMDMwM2ZhNjRkZWIuLjFhNDVhMzc5
YWIyMzE0ZTMwNDA2ZDQyNDE4NmNlZWEzOTA3YjhhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCkBAIC0zNCw5ICszNCwxMiBAQAogI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCiAKICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyQ29udHJvbGxlci5o
PgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV29iamMtcHJvcGVydHktbm8tYXR0cmlidXRlIgorI2ltcG9ydCA8QVZLaXQv
QVZQbGF5ZXJMYXllclZpZXcuaD4KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNpbXBv
cnQgPEFWS2l0L0FWUGxheWVyVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZL
aXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5Lmg+Ci0jaW1wb3J0IDxBVktpdC9B
VlZpZGVvTGF5ZXIuaD4KIAogI2Vsc2UKIApAQCAtNTgsMTcgKzYxLDE3IEBAIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIEFWUGxheWVyQ29udHJvbGxlckV4dGVybmFsUGxheWJhY2tUeXBlKSB7
CiBAcHJvcGVydHkgKE5TX05PTkFUT01JQ19JT1NPTkxZLCByZWFkb25seSkgQVZQbGF5ZXJDb250
cm9sbGVyU3RhdHVzIHN0YXR1czsKIEBlbmQKIAotQHByb3RvY29sIEFWVmlkZW9MYXllcgotdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgQVZWaWRlb0xheWVyR3Jhdml0eSkgewotICAgIEFWVmlk
ZW9MYXllckdyYXZpdHlJbnZhbGlkID0gMCwKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXpl
QXNwZWN0ID0gMSwKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0RmlsbCA9IDIs
Ci0gICAgQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSA9IDMsCi19OwotLSAodm9pZClzZXRQbGF5
ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOwotQHBy
b3BlcnR5IChub25hdG9taWMpIEFWVmlkZW9MYXllckdyYXZpdHkgdmlkZW9MYXllckdyYXZpdHk7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dSZWN0IHZpZGVvUmVjdDsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzUmVhZHlGb3JEaXNwbGF5KSBCT09MIHJlYWR5Rm9y
RGlzcGxheTsKK0BjbGFzcyBBVlBsYXllckxheWVyOworCitAaW50ZXJmYWNlIEFWUGxheWVyTGF5
ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWUGxheWVy
TGF5ZXIgKnBsYXllckxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlBp
Y3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXll
clZpZXc7CistICh2b2lkKXN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3OworLSAodm9pZClzdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3OworQGVuZAorCitAaW50ZXJmYWNlIEFWUGljdHVyZUluUGljdHVyZVBsYXll
ckxheWVyVmlldyA6IFVJVmlldworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlBs
YXllckxheWVyICpwbGF5ZXJMYXllcjsKIEBlbmQKIAogQHByb3RvY29sIEFWUGxheWVyVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSA8TlNPYmplY3Q+CkBAIC04NSwxNSArODgsMTUgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVh
c29uKSB7CiBAZW5kCiAKIEBpbnRlcmZhY2UgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAoRGV0YWls
cykKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZGVvTGF5ZXI6KENBTGF5ZXIgPEFWVmlkZW9M
YXllcj4gKil2aWRlb0xheWVyOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGxheWVyTGF5ZXJW
aWV3OihBVlBsYXllckxheWVyVmlldyAqKXBsYXllckxheWVyVmlldzsKIC0gKHZvaWQpZW50ZXJG
dWxsU2NyZWVuQW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQp
ZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogCiAt
IChCT09MKWlzUGljdHVyZUluUGljdHVyZVBvc3NpYmxlOwogLSAodm9pZClzdGFydFBpY3R1cmVJ
blBpY3R1cmU7CiAtICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlOwotLSAodm9pZClzZXRBbGxv
d3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s6KEJPT0wpYWxsb3c7CiAKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzdHJvbmcpIEFWUGxheWVyQ29udHJvbGxlciAqcGxheWVyQ29udHJvbGxlcjsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRl
bGVnYXRlPiBkZWxlZ2F0ZTsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDA4
YmYzYmNlNDNiZWQxYjc5MTQ0OTc0ZDBkODgyYzE0N2RmZGJmNTYuLmZhMzFlZWQ0NGUzMDZjNDM1
ZjhmODExNDkzN2E5NDM1NzBlZTQxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAt
NTMsMTAgKzUzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21hbmFn
ZXIgPSBudWxscHRyOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBsYXllckhvc3QoKSBjb25zdCB7
IHJldHVybiBtX2xheWVySG9zdC5nZXQoKTsgfQotICAgIHZvaWQgc2V0TGF5ZXJIb3N0KFJldGFp
blB0cjxQbGF0Zm9ybUxheWVyPiYmIGxheWVySG9zdCkgeyBtX2xheWVySG9zdCA9IFdURjo6bW92
ZShsYXllckhvc3QpOyB9Ci0KLSAgICB2b2lkIHNldEluaXRpYWxWaWRlb0xheWVyRnJhbWUoV2Vi
Q29yZTo6RmxvYXRSZWN0IGZyYW1lKSB7IG1fdmlkZW9MYXllckZyYW1lID0gZnJhbWU7IH0KKyAg
ICBVSVZpZXcgKmxheWVySG9zdFZpZXcoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdFZpZXcu
Z2V0KCk7IH0KKyAgICB2b2lkIHNldExheWVySG9zdFZpZXcoUmV0YWluUHRyPFVJVmlldz4mJiBs
YXllckhvc3RWaWV3KSB7IG1fbGF5ZXJIb3N0VmlldyA9IFdURjo6bW92ZShsYXllckhvc3RWaWV3
KTsgfQogCiBwcml2YXRlOgogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkK
QEAgLTc4LDkgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZW5kU2Nhbm5pbmco
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9h
dFJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpZGVvTGF5
ZXJGcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVy
R3Jhdml0eShWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmlkZW9HcmF2aXR5
IHZpZGVvTGF5ZXJHcmF2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
bGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKQEAgLTk0LDkgKzkwLDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSogbV9tYW5hZ2VyOwog
ICAgIHVpbnQ2NF90IG1fY29udGV4dElkOwotICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBt
X2xheWVySG9zdDsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aWRlb0xheWVyRnJhbWU7Ci0g
ICAgVmlkZW9HcmF2aXR5IG1fdmlkZW9MYXllckdyYXZpdHkgeyBWaWRlb0dyYXZpdHlSZXNpemUg
fTsKKyAgICBSZXRhaW5QdHI8VUlWaWV3ICo+IG1fbGF5ZXJIb3N0VmlldzsKIH07CiAKIGNsYXNz
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA3M2NjN2MyZmYyYmY1Y2RkMjE3MWM5
NjJhN2MzMzQ1YTUwZDYxNDczLi45ODY5YWI2YTAwNGRkOTk0NzYzODA4NDRhYmNiYjQyNGM2ZTBl
Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMzQsMTAgKzM0LDM1IEBACiAj
aW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
TWVzc2FnZXMuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllckhvc3QuaD4KICNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaW1lUmFuZ2Vz
Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KIAorQGludGVyZmFjZSBXZWJM
YXllckhvc3RWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSB1aW50
MzJfdCBjb250ZXh0SUQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJMYXllckhvc3RWaWV3
CisKKysgKENsYXNzKWxheWVyQ2xhc3MgeworICAgIHJldHVybiBbQ0FMYXllckhvc3QgY2xhc3Nd
OworfQorCistICh1aW50MzJfdCljb250ZXh0SUQgeworICAgIHJldHVybiBbW3NlbGYgbGF5ZXJI
b3N0XSBjb250ZXh0SWRdOworfQorCistICh2b2lkKXNldENvbnRleHRJRDoodWludDMyX3QpY29u
dGV4dElEIHsKKyAgICBbW3NlbGYgbGF5ZXJIb3N0XSBzZXRDb250ZXh0SWQ6Y29udGV4dElEXTsK
K30KKworLSAoQ0FMYXllckhvc3QgKilsYXllckhvc3QgeworICAgIHJldHVybiAoQ0FMYXllckhv
c3QgKilbc2VsZiBsYXllcl07Cit9CisKK0BlbmQKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTM5LDI4ICsxNjQsMTYgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RFeGl0RnVsbHNjcmVlbigpCiAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUoV2ViQ29y
ZTo6RmxvYXRSZWN0IGZyYW1lKQogewotICAgIG1fdmlkZW9MYXllckZyYW1lID0gZnJhbWU7CiAg
ICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5zZXRWaWRlb0xheWVyRnJhbWUo
bV9jb250ZXh0SWQsIGZyYW1lKTsKIH0KIAotV2ViQ29yZTo6RmxvYXRSZWN0IFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6dmlkZW9MYXllckZyYW1lKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV92aWRlb0xheWVyRnJhbWU7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbDo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV92aWRlb0xheWVyR3Jhdml0eSA9
IGdyYXZpdHk7CiAgICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5zZXRWaWRl
b0xheWVyR3Jhdml0eShtX2NvbnRleHRJZCwgZ3Jhdml0eSk7CiB9CiAKLVdlYkNvcmU6OldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0Ojp2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmlkZW9M
YXllckdyYXZpdHk7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojpz
ZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IG9wdGlvbklkKQogewogICAgIGlmIChtX21h
bmFnZXIpCkBAIC0yNDAsOCArMjUzLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmludmFsaWRhdGUoKQogICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9
IHR1cGxlOwogCiAgICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwotICAgICAgICBbbW9k
ZWwtPmxheWVySG9zdCgpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgbW9kZWwtPnNl
dExheWVySG9zdChudWxscHRyKTsKKyAgICAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVt
b3ZlRnJvbVN1cGVydmlld107CisgICAgICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxw
dHIpOwogICAgIH0KIAogICAgIG1fY29udGV4dE1hcC5jbGVhcigpOwpAQCAtMzEwLDE2ICszMjMs
MTcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVl
bldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQsIHUKIAogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRl
cmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElkKTsKIAotICAgIG1vZGVs
LT5zZXRJbml0aWFsVmlkZW9MYXllckZyYW1lKGluaXRpYWxSZWN0KTsKLSAgICBtb2RlbC0+c2V0
TGF5ZXJIb3N0KFdLTWFrZVJlbmRlckxheWVyKHZpZGVvTGF5ZXJJRCkpOworICAgIFJldGFpblB0
cjxXZWJMYXllckhvc3RWaWV3PiB2aWV3ID0gYWRvcHROUyhbW1dlYkxheWVySG9zdFZpZXcgYWxs
b2NdIGluaXRdKTsKKyAgICBbdmlldyBzZXRDb250ZXh0SUQ6dmlkZW9MYXllcklEXTsKKyAgICBt
b2RlbC0+c2V0TGF5ZXJIb3N0Vmlldyh2aWV3LmdldCgpKTsKICAgICBpZiAoaG9zdGluZ0Rldmlj
ZVNjYWxlRmFjdG9yICE9IDEpIHsKICAgICAgICAgLy8gSW52ZXJ0IHRoZSBzY2FsZSB0cmFuc2Zv
cm0gYWRkZWQgaW4gdGhlIFdlYlByb2Nlc3MgdG8gZml4IDxyZGFyOi8vcHJvYmxlbS8xODMxNjU0
Mj4uCiAgICAgICAgIGZsb2F0IGludmVyc2VTY2FsZSA9IDEgLyBob3N0aW5nRGV2aWNlU2NhbGVG
YWN0b3I7Ci0gICAgICAgIFttb2RlbC0+bGF5ZXJIb3N0KCkgc2V0VHJhbnNmb3JtOkNBVHJhbnNm
b3JtM0RNYWtlU2NhbGUoaW52ZXJzZVNjYWxlLCBpbnZlcnNlU2NhbGUsIDEpXTsKKyAgICAgICAg
W1ttb2RlbC0+bGF5ZXJIb3N0VmlldygpIGxheWVyXSBzZXRTdWJsYXllclRyYW5zZm9ybTpDQVRy
YW5zZm9ybTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52ZXJzZVNjYWxlLCAxKV07CiAgICAg
fQogCiAgICAgVUlWaWV3ICpwYXJlbnRWaWV3ID0gZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eT4oKm1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkucmVtb3RlTGF5ZXJUcmVlSG9z
dCgpLnJvb3RMYXllcigpOwotICAgIGludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptb2RlbC0+
bGF5ZXJIb3N0KCksIGluaXRpYWxSZWN0LCBwYXJlbnRWaWV3LCB2aWRlb0Z1bGxzY3JlZW5Nb2Rl
LCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICBpbnRlcmZhY2UtPnNldHVwRnVsbHNjcmVl
bigqbW9kZWwtPmxheWVySG9zdFZpZXcoKSwgaW5pdGlhbFJlY3QsIHBhcmVudFZpZXcsIHZpZGVv
RnVsbHNjcmVlbk1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpOwogfQogCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVzZXRNZWRpYVN0YXRlKHVpbnQ2NF90IGNvbnRl
eHRJZCkKQEAgLTUwMiw4ICs1MTYsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIGF1dG8m
IG1vZGVsID0gZW5zdXJlTW9kZWwoY29udGV4dElkKTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGZs
dXNoXTsKLSAgICBbbW9kZWwubGF5ZXJIb3N0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAg
IG1vZGVsLnNldExheWVySG9zdChudWxscHRyKTsKKyAgICBbbW9kZWwubGF5ZXJIb3N0Vmlldygp
IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIG1vZGVsLnNldExheWVySG9zdFZpZXcobnVsbHB0
cik7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpEaWRDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAog
ICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmlu
ZGV4IDUzNDI0NjkxY2IyZTI5OThlMTNhYzhkZWQ1MGMxYjc0YTg0NTE0MjcuLjgxYzRkYzcwZDNi
MzBkMDQ4NTg2ZjhmYzQ3OGU4MmZlM2VjMzI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAt
MjMyLDkgKzIzMiwxMyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZQogICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CiAgICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwog
CisgICAgRmxvYXRSZWN0IGNsaWVudFJlY3QgPSBjbGllbnRSZWN0Rm9yRWxlbWVudCgmdmlkZW9F
bGVtZW50KTsKKyAgICBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lID0gRmxvYXRSZWN0KDAsIDAs
IGNsaWVudFJlY3Qud2lkdGgoKSwgY2xpZW50UmVjdC5oZWlnaHQoKSk7CisgICAgCiAgICAgaW50
ZXJmYWNlLT5zZXRUYXJnZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7CiAgICAgaW50ZXJmYWNlLT5zZXRG
dWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICBtb2RlbC0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0Vs
ZW1lbnQpOworICAgIG1vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUodmlkZW9MYXllckZyYW1lKTsK
IAogICAgIGlmIChpbnRlcmZhY2UtPmlzQW5pbWF0aW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTQyOCw3ICs0MzIsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1
cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogCiAgICAgW0NBVHJhbnNhY3Rpb24gY29t
bWl0XTsKIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IHN0cm9uZ1RoaXModGhpcyk7
CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1Ro
aXMsIHRoaXMsIGNvbnRleHRJZF0geworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIH0pOwogfQogICAgIAogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257121</attachid>
            <date>2015-07-20 13:22:18 -0700</date>
            <delta_ts>2015-07-20 14:00:42 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-146862-20150720132105.patch</filename>
            <type>text/plain</type>
            <size>63253</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyZjQ5NjFmYWNiYzc2
OWRmYTVhMTBlNTM0ZjYzYjc3NmIzMmZkZC4uZmNjYmVmN2RiMTQ5YTVjMWNhNDJmMTZiYmY0Y2I2
NzVhNTNhYzQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNS0wNy0yMCAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZQbGF5ZXJM
YXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBUaGUg
Q0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXllckhvc3RWaWV3IHRvIGJlIGNvbXBh
dGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAgICAgU29tZSBhbmltYXRpb24gaXMg
aW1wcm92ZWQgaW4gdGhlIGNvbnZlcnNpb24uCisKKyAgICAgICAgV2ViQVZQbGF5ZXJMYXllclZp
ZXcgYW5kIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyBkZXJpdmUgZnJvbSBB
VktpdCBhbmQgVUlLaXQgcmVzcGVjdGl2ZWx5LgorICAgICAgICBCZWNhdXNlIHRoZXNlIGZyYW1l
d29ya3MgYXJlIGxvYWRlZCBhdCBydW50aW1lLCB0aGVzZSBjbGFzc2VzIG11c3QgYmUgZ2VuZXJh
dGUgdXNpbmcgb2JqYy9ydW50aW1lLmggdG8KKyAgICAgICAgcmVnaXN0ZXIgdGhlbSBmcm9tIGMg
ZnVuY3Rpb25zIGF0IHJ1bnRpbWUuIFRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IG9mIHRoZXNlIFVJ
Vmlld3MgaXMgdGhhdCB0aGVpcgorICAgICAgICBiYWNraW5nIGxheWVyIGlzIGEgV2ViQVZQbGF5
ZXJMYXllci4KKworICAgICAgICBXZWJDQUxheWVySG9zdFdyYXBwZXIgYW5kIFdlYkFWVmlkZW9M
YXllciBhcmUgY29tYmluZWQgaW50byBXZWJBVlBsYXllckxheWVyIHRvIHNpbXBsaWZ5IHRoZSBo
aWVyYXJjaHkuCisgICAgICAgIFdlYkFWUGxheWVyTGF5ZXIgaXMgYSBzdGFuZC1pbiBmb3IgYW4g
QVZQbGF5ZXJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcik6IC1yZW1vdmVGcm9tU3VwZXJsYXllciBpcyByZWR1bmRhbnQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KTogc3luY1RleHRUcmFja0JvdW5kcyBvbiBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZSk6CisgICAgICAgIFdlIG5ldmVyIHdhbnQgYW5pbWF0aW9uIGhlcmUsIHNp
bmNlIGFsbCBhbmltYXRpb24gd2lsbCBoYXBwZW4gaW4gVUlWaWV3cy4gCisgICAgICAgIFRoaXMg
aXMganVzdCBmb3IgZ29pbmcgaW50byB0aGUgZmluYWwgc2l6ZSBhZnRlciBhIHRyYW5zZm9ybSBi
YXNlZCBhbmltYXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVl
bik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4pOiBsYXllciAtPiB2aWV3CisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBsYXll
ciAtPiB2aWV3CisgICAgICAgIFVzZSBmZW5jZSBwb3J0IHRvIHN5bmNocm9uaXplIGJldHdlZW4g
dGhlIFVJVGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFkLAorICAgICAgICB0aGUgc2FtZSB3YXkgV2Vi
S2l0MiB1c2VzIGEgZmVuY2UgcG9ydCB0byBzeW5jaHJvbml6ZSBiZXR3ZWVuIHByb2Nlc3Nlcy4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KToKKyAgICAgICAgTm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBjYWNoZSB2aWRl
b0dyYXZpdHkgYXQgdGhpcyBsZXZlbC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKworICAgICAgICAoLVtXZWJBVlBsYXll
ckxheWVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBkZWFsbG9jXSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgcGxheWVyQ29udHJvbGxlcl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHNldEJvdW5kczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJM
YXllciByZXNvbHZlQm91bmRzXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0Vmlk
ZW9HcmF2aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvR3Jhdml0eV0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvUmVjdF0pOgorICAgICAgICAoK1tX
ZWJBVlBsYXllckxheWVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0XSk6Cisg
ICAgICAgIEFkZGVkIGNsYXNzIFdlYkFWUGxheWVyTGF5ZXIsIHJlcGxhY2luZyBXZWJBVlZpZGVv
TGF5ZXIgYW5kIFdlYkNBTGF5ZXJIb3N0V3JhcHBlci4KKworICAgICAgICAoV2ViQVZQaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MpOgorICAgICAgICAoZ2V0V2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOgorICAgICAgICBBZGRlZCBydW50
aW1lIGNsYXNzIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldworCisgICAgICAg
IChXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzKToKKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZp
ZXdfc2V0UGxheWVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192
aWRlb1ZpZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0VmlkZW9WaWV3KToK
KyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KToKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3
X3N0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAg
ICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKToKKyAgICAgICAgQWRk
ZWQgcnVudGltZSBjbGFzcyBXZWJBVlBsYXllckxheWVyVmlldworCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKToKKyAgICAgICAg
RGltZW5zaW9ucyBhcmUgYWxzbyBzdG9yZWQgaW4gV2ViQVZQbGF5ZXJMYXllciBzbyBpdCBjYW4g
bWFrZSBkZWNpc2lvbnMgYWJvdXQKKyAgICAgICAgYW5pbWF0aW5nIHRoZSB2aWRlbyBsYXllci4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFs
UGxheWJhY2spOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVu
dGVyRnVsbHNjcmVlbik6IAorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIFN0cmFpZ2h0Zm9y
d2FyZCBsYXllciB0byB2aWV3IGNvbnZlcnNpb24uCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUpOgorICAgICAgICBT
ZXQgdmlldyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVyYXJjaHkgaW5zdGVhZCBvZiBhc3N1bWlu
ZyBpdCBpcyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJh
bWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGly
ZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAgIGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5n
IGRpZEV4aXRGdWxsc2NyZWVuKCkgdG8gYWxsb3dzIENBVHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRl
LgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxs
c2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJhbWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5
IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGlyZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAg
IGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5nIGRpZFNldHVwRnVsbHNjcmVlbigpIHRvIGFs
bG93cyBDQVRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4KKworICAgICAgICAoLVtXZWJDQUxheWVy
SG9zdFdyYXBwZXIgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDQUxheWVySG9z
dFdyYXBwZXIgc2V0VmlkZW9TdWJsYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ0FM
YXllckhvc3RXcmFwcGVyIHZpZGVvU3VibGF5ZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHNldEJvdW5kczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHJlc29sdmVCb3VuZHNdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xh
c3MgV2ViQ0FMYXllckhvc3RXcmFwcGVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGlu
dG8gV2ViQVZQbGF5ZXJMYXllci4KKworICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9M
YXllcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgaW5pdF0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRWaWRlb1N1YmxheWVy
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0Qm91bmRzOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdyYXZpdHk6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0
eV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgZW50ZXJQSVBNb2RlUmVk
aXJlY3RpbmdWaWRlb1RvTGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9M
YXllciBsZWF2ZVBJUE1vZGVdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xhc3MgV2ViQVZWaWRlb0xh
eWVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGludG8gV2ViQVZQbGF5ZXJMYXllci4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbToKKyAgICAgICAgTm8gbmVlZCB0byBzdG9yZSBmcmFtZSBhbmQgZ3Jhdml0eSBpbiB0
aGUgbW9kZWwuIEl0IGlzIHN0b3JlZCBpbiB0aGUgVUkgd2hlcmUgaXQgaXMgdXNlZC4KKworICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnZpZGVvTGF5ZXJGcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6dmlkZW9MYXllckdyYXZpdHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOiBBZGQgQVZQbGF5ZXJMYXllclZpZXcuCisKIDIwMTUtMDctMDkgIE1h
dHRoZXcgRGFpdGVyICA8bWRhaXRlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50aW5n
IHBsYXRmb3JtLXNwZWNpZmljIHNlY3Rpb24gb2YgZW51bWVyYXRlRGV2aWNlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDI5ZTU1ZWNlYTljODNiMjJlYmI0NDZmOGVkZDQ3YWEzYzRkOTgzYTUuLjNkZjkwYjYzNmVh
YzQwYjlkYzdkOWI3ZDJiMTNlZDJmOGE2NjM0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBA
QAorMjAxNS0wNy0yMCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRvcHQgQVZQbGF5ZXJMYXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBUaGUgQ0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXll
ckhvc3RWaWV3IHRvIGJlIGNvbXBhdGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAg
ICAgdmlkZW9MYXllckZyYW1lIGFuZCB2aWRlb0xheWVyR3Jhdml0eSBubyBsb25nZXIgbmVlZCB0
byBiZSBzdG9yZWQgYmVjYXVzZSB0aGV5IGFyZSBzdG9yZWQKKyAgICAgICAgd2hlcmUgdGhleSBh
cmUgdXNlZCBpbiB0aGUgaW50ZXJmYWNlLiBTb21lIGFuaW1hdGlvbiBpcyBpbXByb3ZlZCBpbiB0
aGUgY29udmVyc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgICgrW1dlYkxheWVySG9zdFZpZXcgbGF5ZXJD
bGFzc10pOiBBZGQgY2xhc3MgV2ViTGF5ZXJIb3N0Vmlldy4KKyAgICAgICAgKC1bV2ViTGF5ZXJI
b3N0VmlldyBjb250ZXh0SURdKToKKyAgICAgICAgKC1bV2ViTGF5ZXJIb3N0VmlldyBzZXRDb250
ZXh0SUQ6XSk6CisgICAgICAgICgtW1dlYkxheWVySG9zdFZpZXcgbGF5ZXJIb3N0XSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6
IGxheWVyIC0+IHZpZXcKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQpOgorICAgICAgICBBcHBseSB0aGUgaG9zdGlu
Z0RldmljZVNjYWxlRmFjdG9yIHRyYW5zZm9ybSB0byAtc3VibGF5ZXJUcmFuc2Zvcm0gaW5zdGVh
ZCBvZiB0bworICAgICAgICAtdHJhbnNmb3JtLiBUaGlzIG1vcmUgZGlyZWN0bHkgaW52ZXJ0cyB0
aGUgdHJhbmZvcm0gV2ViUHJvY2VzcyBhbmQgYWxsb3dzIC10cmFuc2Zvcm0KKyAgICAgICAgdG8g
YmUgdXNlZCBmb3IgYW5pbWF0aW9uIGluIHRoZSBVSVByb2Nlc3MuIFRoaXMgaXMgaW1wb3J0YW50
IGJlY2F1c2UgVUlWaWV3J3MgYWN0aW9ucworICAgICAgICBhbmltYXRlIC10cmFuc2Zvcm0sIGJ1
dCBub3QgLXN1YmxheWVyVHJhc2Zvcm0uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRl
b0xheWVyRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OnZpZGVvTGF5ZXJGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OnZpZGVvTGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6
CisgICAgICAgIFNldCBpbml0aWFsIHZpZGVvIGxheWVyIGZyYW1lIHRvIGZpeCBzdGFydCBwb2lu
dCBvZiBhbmltYXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgYWxsb3dz
IHRoZSBDQVRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGJlZm9yZSBjb250aW51aW5nIHdpdGggdGhl
IGFuaW1hdGlvbi4KKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIGZsYXNoIGR1cmluZyBhbmltYXRp
b24uCisKIDIwMTUtMDctMDkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIFJlcG9ydCB0aGUgZmlyc3QgcGFpbnQgYWZ0ZXIgY29tbWl0dGluZyBhIGxv
YWQgYXMgYSByZW5kZXJpbmcgcHJvZ3Jlc3MgZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDdiYWI1Yzc4YzVmZDkzYTJmMGE1NzZhYzVmOWMwOTU3YTE1OGE4ZGIuLmU5OGRmZDlhZmMx
YWE3ZjQzMzg1YmFkZDA4NmU3ODNhNWI1ZDM0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtMTEyNCw5ICsxMTI0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogICAgIENBQ29udGV4
dCAqbmV3Q29udGV4dCA9IG5pbDsKICAgICAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXll
ciAmJiBtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxz
Y3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKICAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5
ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07CisgICAgICAgIFttX3ZpZGVvTGF5ZXIg
c2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCks
IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKICAgICAgICAgbmV3Q29udGV4dCA9
IFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRdOwogICAgIH0gZWxzZSBpZiAobV92aWRl
b0lubGluZUxheWVyICYmIG1fdmlkZW9MYXllcikgewogICAgICAgICBbbV92aWRlb0xheWVyIHNl
dEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91bmRzXV07CkBAIC0xMTU4LDExICsxMTU3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
dmlkZW9MYXllcikgewotICAgICAgICBbbV92aWRlb0xheWVyIHNldFN0eWxlOm5pbF07IC8vIFRo
aXMgZW5hYmxlcyBhY3Rpb25zLCBpLmUuIGltcGxpY2l0IGFuaW1hdGlvbnMuCi0gICAgICAgIFtD
QVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIGZyYW1lLndpZHRoKCksIGZyYW1lLmhlaWdodCgpKV07Ci0gICAgICAgIFtD
QVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgd2ViX2Rpc2FibGVB
bGxBY3Rpb25zXTsKICAgICB9CiAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwogfQpAQCAtMTE4
Miw4ICsxMTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6CiAgICAgICAgIHZpZGVvR3Jh
dml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOwogICAgIGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgCisgICAgaWYgKFttX3ZpZGVvTGF5ZXIg
dmlkZW9HcmF2aXR5XSA9PSB2aWRlb0dyYXZpdHkpCisgICAgICAgIHJldHVybjsKIAogICAgIFtt
X3ZpZGVvTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OnZpZGVvR3Jhdml0eV07CisgICAgc3luY1RleHRU
cmFja0JvdW5kcygpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGQxOWFmMDFmOWU5
Yzk3MDIzZDk5YzA5MTRkZDljNGYwM2Q1ZjFhYmMuLjYwZDI4YmMyZmQzYzI5MmU0MjZlM2VhOWYx
ZmE2YjhlNzllMGExYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzAs
NiArMzAsOCBAQAogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lmgi
CiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlF1YXJ0ekNvcmVTUEkuaCIKKyNpbXBv
cnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKQEAgLTM3LDYgKzM5LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVu
Lmg+CiAKK1NPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQs
IFVJVmlldykKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8PSA4MDIwMCB8fCAhSEFWRShBVktJVCkKQEAgLTEyOSw5ICsx
MzQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9mcmFtZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZ3Jhdml0eTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJs
ZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC0xMzksMTAgKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKICAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1fbW9kZWw7CiAgICAg
UmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwotICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAgIFJldGFpblB0cjxVSVZp
ZXc+IG1fdmlkZW9GdWxsc2NyZWVuVmlldzsKICAgICBSZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAgIEZsb2F0UmVjdCBtX2ZyYW1lOwotICAg
IFZpZGVvR3Jhdml0eSBtX2dyYXZpdHk7CiB9OwogCiAjcHJhZ21hIG1hcmsgV2ViVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKQEAgLTE1MSw4ICsxNTIsOSBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFT
U0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXNdIHsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobV92
aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVv
RnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CisgICAgV2Vi
VGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0geworICAg
ICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKSk7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJG
dWxsc2NyZWVuKCk7CiAgICAgICAgIH0pOwpAQCAtMTc3LDYgKzE3OSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAg
ICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwobnVsbHB0cik7CiAgICAg
bV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIp
OwogICAgIG1faW50ZXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcg
PSBuaWw7CiAgICAgCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhp
c10gewpAQCAtMTg1LDcgKzE4OCw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9tb2RlbC0+c2V0Vmlk
ZW9FbGVtZW50KG51bGxwdHIpOwogICAgICAgICBtX21vZGVsID0gbnVsbHB0cjsKICAgICAgICAg
bV92aWRlb0VsZW1lbnQgPSBudWxscHRyOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
ID0gbmlsOwogICAgICAgICAKICAgICAgICAgW21fY29udHJvbGxlciBkaWRGaW5pc2hGdWxsc2Ny
ZWVuOnRoaXNdOwogICAgIH0pOwpAQCAtNDUwLDE4ICs0NTIsMjUgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShG
bG9hdFJlY3QgZnJhbWUpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgbV9mcmFt
ZSA9IGZyYW1lOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMs
IGZyYW1lXSB7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0g
W21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CisKKyAgICBtYWNoX3BvcnRfbmFtZV90IGZl
bmNlUG9ydCA9IFtbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF0gY3JlYXRlRmVuY2VQb3J0
XTsKKyAgICAKKyAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIGZyYW1lLCBmZW5j
ZVBvcnQsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJl
Z2luXTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CiAg
ICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9MYXllckZy
YW1lKGZyYW1lKTsKKyAgICAgICAgW1t2aWRlb0Z1bGxzY3JlZW5MYXllciBjb250ZXh0XSBzZXRG
ZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKKyAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgZmVuY2VQb3J0KTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsK
ICAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0
eSB2aWRlb0dyYXZpdHkpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgbV9ncmF2
aXR5ID0gdmlkZW9HcmF2aXR5OwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXMsIHZpZGVvR3Jhdml0eV0gewogICAgICAgICBpZiAobV9tb2RlbCkKQEAgLTUxMCwx
OSArNTE5LDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
dFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgbV9pbnRlcmZhY2UgPSBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCk7CiAgICAgbV9pbnRlcmZh
Y2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMpOwogICAgIG1faW50
ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKKyAgICBtX3ZpZGVvRnVs
bHNjcmVlblZpZXcgPSBhZG9wdE5TKFtbZ2V0VUlWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwog
ICAgIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdS
ZWYsIG1vZGVdIHsKICAgICAgICAgbV9tb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50OjpjcmVhdGUoKTsKICAgICAgICAgbV9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlKHRoaXMpOwogICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0VsZW1lbnQobV92
aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gW0NB
TGF5ZXIgbGF5ZXJdOwogICAgICAgICAKICAgICAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0
dXJlID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJblBpY3R1
cmUoKm1fdmlkZW9FbGVtZW50LmdldCgpKTsKICAgICAgICAgSW50UmVjdCB2aWRlb0VsZW1lbnRD
bGllbnRSZWN0ID0gbV92aWRlb0VsZW1lbnQtPmNsaWVudFJlY3QoKTsKICAgICAgICAgCiAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlz
LCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlXSB7Ci0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVu
KCptX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2
aWV3UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICAgICAgICAg
IG1faW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQo
KSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGlj
dHVyZUluUGljdHVyZSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQuaAppbmRleCA5ZTdkZjZmNzdiMGEzMGY2YmFmZmU0ZjdkNGYwNTVmMjdlMTk0Yzcz
Li4wNGEyZThhOTdhZjE5YjNiNzExMDE4ZTE5ZWQ5OTk0MzM5Yjg1NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaApAQCAtNDUsOCArNDUsOCBAQCBPQkpDX0NMQVNTIFVJVmlld0NvbnRy
b2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93OwogT0JKQ19DTEFTUyBVSVZpZXc7CiBPQkpDX0NM
QVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdlYkFWVmlkZW9MYXllcjsKLU9CSkNfQ0xBU1MgV2Vi
Q0FMYXllckhvc3RXcmFwcGVyOworT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKK09C
SkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllcjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBTdHJp
bmc7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJs
ZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lKSBvdmVycmlkZTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
c2V0dXBGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImLCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVj
dCwgVUlWaWV3ICosIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwg
Ym9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiwgY29uc3QgSW50UmVjdCYgaW5p
dGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZpbmFsUmVjdCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKCk7CkBA
IC0xMzMsOSArMTMzLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVy
Q29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxBVlBsYXllclZp
ZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9sbGVyOwotICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFdlYkFWVmlkZW9MYXllcj4gbV92aWRl
b0xheWVyQ29udGFpbmVyOwotICAgIFJldGFpblB0cjxXZWJDQUxheWVySG9zdFdyYXBwZXI+IG1f
bGF5ZXJIb3N0V3JhcHBlcjsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRyIH07CiAKQEAgLTE0
NCw2ICsxNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+
IG1fdmlld0NvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV9wYXJlbnRWaWV3Owog
ICAgIFJldGFpblB0cjxVSVdpbmRvdz4gbV9wYXJlbnRXaW5kb3c7CisgICAgUmV0YWluUHRyPFdl
YkFWUGxheWVyTGF5ZXJWaWV3PiBtX3BsYXllckxheWVyVmlldzsKICAgICBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBib29sIG1fYWxsb3dzUGljdHVy
ZUluUGljdHVyZVBsYXliYWNrIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA3NGIxYzE5OTUxMWM0OTYzYWRlMTczMjY0M2NmZmNmOTQxNDg2MWNlLi5jYjVkZTRj
ZTA2YjczYTZiOTJhMmFlNmMyNjgyYWEzNGQ1ZWY4MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC0zOSw2ICszOSw4IEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgogI2ltcG9ydCA8VUlLaXQv
VUlLaXQuaD4KKyNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTUwLDExICs1MiwxNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRp
b24pCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3Vu
ZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikK
IAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZpZXdDb250
cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQorU09GVF9MSU5L
X0NMQVNTKEFWS2l0LCBBVlBsYXllckxheWVyVmlldykKK1NPRlRfTElOS19DTEFTUyhBVktpdCwg
QVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KQogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
KFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQpAQCAtNzQsMTMg
KzgxLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogCiBAY2xh
c3MgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNv
bnRyb2xsZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPgotewor
QGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3
Q29udHJvbGxlckRlbGVnYXRlPiB7CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1
cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwogICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKl9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOwogfQogCi0tKHZvaWQp
cmVzZXRTdGF0ZTsKKy0gKHZvaWQpcmVzZXRTdGF0ZTsKIAogQHByb3BlcnR5IChyZXRhaW4pIEFW
UGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5OwogQHByb3BlcnR5IChhc3Np
Z24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBkZWxlZ2F0ZTsKQEAgLTE1MCw3ICsxNTYsOCBA
QCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKLS0odm9pZClyZXNldFN0YXRlIHsKKy0gKHZvaWQpcmVzZXRTdGF0ZQorewog
ICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKICAgICBzZWxmLm1heFRpbWUgPSAwOwogICAg
IHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwpAQCAtMTgxLDcgKzE4OCw4
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogICAgIHNlbGYuY3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKIH0KIAotLSAoQVZQbGF5ZXIq
KSBwbGF5ZXIgeworLSAoQVZQbGF5ZXIgKikgcGxheWVyCit7CiAgICAgcmV0dXJuIG5pbDsKIH0K
IApAQCAtNTY4LDEwMSArNTc2LDIwIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiBAaW1wbGVt
ZW50YXRpb24gV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbgogQGVuZAogCi0KLUBpbnRlcmZhY2Ug
V2ViQ0FMYXllckhvc3RXcmFwcGVyIDogQ0FMYXllcgotQHByb3BlcnR5IChhc3NpZ24pIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkNB
TGF5ZXJIb3N0V3JhcHBlciB7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IF92aWRlb1N1YmxheWVy
OwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQ
ZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVC
b3VuZHMpIG9iamVjdDpuaWxdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClz
ZXRWaWRlb1N1YmxheWVyOihDQUxheWVyKil2aWRlb1N1YmxheWVyCi17Ci0gICAgX3ZpZGVvU3Vi
bGF5ZXIgPSB2aWRlb1N1YmxheWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZpZGVvU3VibGF5
ZXJdOwotfQotCi0tIChDQUxheWVyKil2aWRlb1N1YmxheWVyCi17Ci0gICAgcmV0dXJuIF92aWRl
b1N1YmxheWVyLmdldCgpOwotfQotCi0tICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcwot
ewotICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYuYm91bmRzKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgW3N1cGVyIHNldEJvdW5kczpib3VuZHNdOwotCi0gICAgW192aWRl
b1N1YmxheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoYm91bmRzKSwg
Q0dSZWN0R2V0TWlkWShib3VuZHMpKV07Ci0KLSAgICBpZiAoIXNlbGYubW9kZWwpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEZsb2F0UmVjdCB2aWRlb0ZyYW1lID0gc2VsZi5tb2RlbC0+dmlkZW9M
YXllckZyYW1lKCk7Ci0gICAgRmxvYXRSZWN0IHRhcmdldEZyYW1lOwotICAgIHN3aXRjaCAoc2Vs
Zi5tb2RlbC0+dmlkZW9MYXllckdyYXZpdHkoKSkgewotICAgIGNhc2UgV2ViQ29yZTo6V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZToKLSAgICAgICAgdGFyZ2V0RnJh
bWUgPSBib3VuZHM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDoKLSAgICAgICAgdGFyZ2V0
RnJhbWUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9GcmFtZS5z
aXplKCkuYXNwZWN0UmF0aW8oKSwgYm91bmRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
RmlsbDoKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9B
cm91bmRSZWN0KHZpZGVvRnJhbWUuc2l6ZSgpLmFzcGVjdFJhdGlvKCksIGJvdW5kcyk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybSA9IENBVHJhbnNm
b3JtM0RNYWtlU2NhbGUodGFyZ2V0RnJhbWUud2lkdGgoKSAvIHZpZGVvRnJhbWUud2lkdGgoKSwg
dGFyZ2V0RnJhbWUuaGVpZ2h0KCkgLyB2aWRlb0ZyYW1lLmhlaWdodCgpLCAxKTsKLSAgICBbX3Zp
ZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLQotICAgIFtOU09i
amVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgb2JqZWN0Om5pbF07Ci0gICAgW3NlbGYgcGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91bmRzKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRl
bGF5OltDQVRyYW5zYWN0aW9uIGFuaW1hdGlvbkR1cmF0aW9uXSArIDAuMV07Ci19Ci0KLS0gKHZv
aWQpcmVzb2x2ZUJvdW5kcwotewotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1S
ZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykg
b2JqZWN0Om5pbF07Ci0gICAgaWYgKCFzZWxmLm1vZGVsKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9u
RHVyYXRpb246MF07Ci0KLSAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06
Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICBzZWxmLm1vZGVsLT5zZXRWaWRlb0xheWVyRnJh
bWUoW3NlbGYgYm91bmRzXSk7Ci0gICAgCi0gICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKLX0K
LUBlbmQKLQotQGludGVyZmFjZSBXZWJBVlZpZGVvTGF5ZXIgOiBDQUxheWVyIDxBVlZpZGVvTGF5
ZXI+Ci0rKFdlYkFWVmlkZW9MYXllciAqKXZpZGVvTGF5ZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21p
YykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCBnZXR0ZXIgPSBpc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFkeUZvckRpc3BsYXk7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dSZWN0IHZpZGVvUmVjdDsKLS0gKHZvaWQpc2V0UGxh
eWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29u
dHJvbGxlcjsKLS0gKHZvaWQpc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVy
ICopcGxheWVyQ29udHJvbGxlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIENBTGF5
ZXIqIHZpZGVvU3VibGF5ZXI7CitAaW50ZXJmYWNlIFdlYkFWUGxheWVyTGF5ZXIgOiBDQUxheWVy
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0cmluZyAqdmlkZW9HcmF2aXR5Owor
QHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFk
eUZvckRpc3BsYXk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBBVlBsYXllckNvbnRy
b2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBD
QUxheWVyICp2aWRlb1N1YmxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxh
YmxlKSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKK0Bwcm9wZXJ0eSBDR1Np
emUgdmlkZW9EaW1lbnNpb25zOworQHByb3BlcnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFt
ZTsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkFWVmlkZW9MYXllcgoteworQGltcGxlbWVu
dGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIgewogICAgIFJldGFpblB0cjxXZWJBVlBsYXllckNvbnRy
b2xsZXI+IF9hdlBsYXllckNvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0Nv
bnRyb2xsZXI+IF9hdlBsYXllclZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxDQUxheWVy
PiBfdmlkZW9TdWJsYXllcjsKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5IF92aWRlb0xheWVyR3Jh
dml0eTsKLX0KLQotKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyCi17Ci0gICAgcmV0dXJu
IFtbW1dlYkFWVmlkZW9MYXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gX3ZpZGVvR3Jhdml0eTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQK
QEAgLTY3MCwyNiArNTk3LDMxIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikgewogICAgICAgICBbc2VsZiBzZXRNYXNrc1Rv
Qm91bmRzOllFU107Ci0gICAgICAgIFtzZWxmIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9M
YXllckdyYXZpdHlSZXNpemVBc3BlY3RdOworICAgICAgICBfdmlkZW9HcmF2aXR5ID0gZ2V0QVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsK
IH0KIAorLSAodm9pZClkZWFsbG9jCit7CisgICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVy
Zm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91
bmRzKSBvYmplY3Q6bmlsXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEFWUGxheWVy
Q29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIKK3sKKyAgICByZXR1cm4gKEFWUGxheWVyQ29u
dHJvbGxlciAqKV9hdlBsYXllckNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKIC0gKHZvaWQpc2V0UGxh
eWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcgogewog
ICAgIEFTU0VSVCghcGxheWVyQ29udHJvbGxlciB8fCBbcGxheWVyQ29udHJvbGxlciBpc0tpbmRP
ZkNsYXNzOltXZWJBVlBsYXllckNvbnRyb2xsZXIgY2xhc3NdXSk7CiAgICAgX2F2UGxheWVyQ29u
dHJvbGxlciA9IChXZWJBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOwogfQog
Ci0tICh2b2lkKXNldFBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVy
ICopcGxheWVyVmlld0NvbnRyb2xsZXIKLXsKLSAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlciA9
IHBsYXllclZpZXdDb250cm9sbGVyOwotfQotCiAtICh2b2lkKXNldFZpZGVvU3VibGF5ZXI6KENB
TGF5ZXIgKil2aWRlb1N1YmxheWVyCiB7CiAgICAgX3ZpZGVvU3VibGF5ZXIgPSB2aWRlb1N1Ymxh
eWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZpZGVvU3VibGF5ZXJdOwogfQogCiAtIChDQUxh
eWVyKil2aWRlb1N1YmxheWVyCkBAIC02OTksMjcgKzYzMSw3OSBAQCBzdGF0aWMgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4
aXRGdWxsUwogCiAtICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcwogeworICAgIGlmIChD
R1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYuYm91bmRzKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAogICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91bmRzXTsKKyAgICAKKyAgICBpZiAoW192aWRl
b1N1YmxheWVyIHN1cGVybGF5ZXJdICE9IHNlbGYpCisgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChbX3ZpZGVvU3VibGF5ZXIgc3VwZXJsYXllcl0gPT0gc2VsZikgewotICAgICAgICBbX3ZpZGVv
U3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBD
R1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKLSAgICAgICAgW192aWRlb1N1YmxheWVyIHNldEJvdW5k
czpib3VuZHNdOwotICAgIH0KKyAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2lu
dE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBDR1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKKyAg
ICAKKyAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRmxvYXRSZWN0IHNvdXJjZVZpZGVvRnJhbWU7CisgICAgRmxvYXRSZWN0IHRh
cmdldFZpZGVvRnJhbWU7CisgICAgZmxvYXQgdmlkZW9Bc3BlY3RSYXRpbyA9IHNlbGYudmlkZW9E
aW1lbnNpb25zLndpZHRoIC8gc2VsZi52aWRlb0RpbWVuc2lvbnMuaGVpZ2h0OworICAgIAorICAg
IGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSgpIGlzRXF1YWxUb1N0cmluZzpzZWxm
LnZpZGVvR3Jhdml0eV0pIHsKKyAgICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNlbGYubW9kZWxW
aWRlb0xheWVyRnJhbWU7CisgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsK
KyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkgaXNF
cXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgeworICAgICAgICBzb3VyY2VWaWRlb0Zy
YW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0
aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1l
ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8s
IHNlbGYuYm91bmRzKTsKKyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKKyAg
ICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3Vu
ZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CisgICAg
ICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIHNvdXJjZVZp
ZGVvRnJhbWUud2lkdGgoKSwgc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7CisgICAgICAgIFtf
YXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9k
ZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RS
ZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5k
cyk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgVUlW
aWV3ICp2aWV3ID0gW192aWRlb1N1YmxheWVyIGRlbGVnYXRlXTsKKyAgICBDR0FmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSh0YXJnZXRWaWRlb0Zy
YW1lLndpZHRoKCkgLyBzb3VyY2VWaWRlb0ZyYW1lLndpZHRoKCksIHRhcmdldFZpZGVvRnJhbWUu
aGVpZ2h0KCkgLyBzb3VyY2VWaWRlb0ZyYW1lLmhlaWdodCgpKTsKKyAgICBbdmlldyBzZXRUcmFu
c2Zvcm06dHJhbnNmb3JtXTsKKyAgICAKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJm
b3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3Vu
ZHMpIG9iamVjdDpuaWxdOworICAgIAorICAgIGlmICghQ0dBZmZpbmVUcmFuc2Zvcm1FcXVhbFRv
VHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIHRyYW5zZm9ybSkpCisgICAgICAg
IFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgd2l0aE9iamVj
dDpuaWwgYWZ0ZXJEZWxheTpbQ0FUcmFuc2FjdGlvbiBhbmltYXRpb25EdXJhdGlvbl0gKyAwLjFd
OworfQorCistICh2b2lkKXJlc29sdmVCb3VuZHMKK3sKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJl
dmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJl
c29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOworICAgIGlmICghW19hdlBsYXllckNvbnRyb2xsZXIg
ZGVsZWdhdGVdKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKFtfdmlkZW9TdWJsYXll
ciBzdXBlcmxheWVyXSAhPSBzZWxmKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgW0NBVHJh
bnNhY3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0aW9u
OjBdOworICAgIAorICAgIFsoVUlWaWV3ICopW192aWRlb1N1YmxheWVyIGRlbGVnYXRlXSBzZXRU
cmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV07CisgICAgc2VsZi5tb2RlbFZpZGVv
TGF5ZXJGcmFtZSA9IFtzZWxmIGJvdW5kc107CisgICAgW19hdlBsYXllckNvbnRyb2xsZXIgZGVs
ZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7Cisg
ICAgCisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIAotLSAodm9pZClzZXRWaWRlb0xh
eWVyR3Jhdml0eTooQVZWaWRlb0xheWVyR3Jhdml0eSl2aWRlb0xheWVyR3Jhdml0eQorLSAodm9p
ZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0gICAgX3ZpZGVv
TGF5ZXJHcmF2aXR5ID0gdmlkZW9MYXllckdyYXZpdHk7CisgICAgX3ZpZGVvR3Jhdml0eSA9IHZp
ZGVvR3Jhdml0eTsKICAgICAKICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRl
XSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBpZiAodmlkZW9MYXllckdyYXZpdHkg
PT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSkKKyAgICBpZiAodmlkZW9HcmF2aXR5ID09IGdl
dEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKSkKICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemU7Ci0gICAgaWYgKHZp
ZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3QpCisgICAg
aWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkp
CiAgICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6Vmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGVsc2UgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09
IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgIGVsc2UgaWYgKHZpZGVv
R3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpKQogICAg
ICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTcyNywyNCArNzExLDE2MiBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwogICAg
IFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckdyYXZpdHkoZ3Jh
dml0eSk7CiB9CiAKLS0gKEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdyYXZpdHkKKy0g
KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0gICAgcmV0dXJuIF92aWRlb0xheWVyR3Jhdml0
eTsKKyAgICByZXR1cm4gX3ZpZGVvR3Jhdml0eS5nZXQoKTsKIH0KIAotLSAodm9pZCllbnRlclBJ
UE1vZGVSZWRpcmVjdGluZ1ZpZGVvVG9MYXllcjooQ0FMYXllciAqKWxheWVyCistIChDR1JlY3Qp
dmlkZW9SZWN0CiB7Ci0gICAgW192aWRlb1N1YmxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsK
LSAgICBbbGF5ZXIgYWRkU3VibGF5ZXI6X3ZpZGVvU3VibGF5ZXIuZ2V0KCldOworICAgIGZsb2F0
IHZpZGVvQXNwZWN0UmF0aW8gPSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlk
ZW9EaW1lbnNpb25zLmhlaWdodDsKKyAgICAKKyAgICBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3QoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAg
ICAgICByZXR1cm4gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNw
ZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlS
ZXNpemVBc3BlY3RGaWxsKCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKKyAg
ICAgICAgcmV0dXJuIHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9B
c3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOworCisgICAgcmV0dXJuIHNlbGYuYm91bmRzOworfQor
CisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0Cit7CisgICAg
cmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAInZpZGVvRGltZW5zaW9ucyIsIEAidmlkZW9H
cmF2aXR5IiwgbmlsXTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYkFWUGljdHVyZUluUGlj
dHVyZVBsYXllckxheWVyVmlldyA6IEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldwor
QGVuZAorCitzdGF0aWMgQ0FMYXllciogV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3X2xheWVyQ2xhc3MoaWQsIFNFTCkKK3sKKyAgICByZXR1cm4gW1dlYkFWUGxheWVyTGF5ZXIg
Y2xhc3NdOwogfQogCi0tICh2b2lkKWxlYXZlUElQTW9kZQorc3RhdGljIENsYXNzIGdldFdlYkFW
UGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld0NsYXNzKCkKIHsKLSAgICBbX3ZpZGVvU3Vi
bGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOl92aWRl
b1N1YmxheWVyLmdldCgpXTsKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0
QVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSwgIldlYkFWUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyIsIDApOworICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQ
YWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xhc3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xh
c3MoIldlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIpOworICAgICAgICBjbGFz
c19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0b3IobGF5ZXJDbGFzcyksIChJTVApV2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MsICJAQDoiKTsKKyAgICB9
KTsKKyAgICAKKyAgICByZXR1cm4gdGhlQ2xhc3M7CiB9CisKK0BpbnRlcmZhY2UgV2ViQVZQbGF5
ZXJMYXllclZpZXcgOiBBVlBsYXllckxheWVyVmlldworQHByb3BlcnR5IChyZXRhaW4pIFVJVmll
dyogdmlkZW9WaWV3OwogQGVuZAogCitzdGF0aWMgQ0FMYXllciogV2ViQVZQbGF5ZXJMYXllclZp
ZXdfbGF5ZXJDbGFzcyhpZCwgU0VMKQoreworICAgIHJldHVybiBbV2ViQVZQbGF5ZXJMYXllciBj
bGFzc107Cit9CisKK3N0YXRpYyBBVlBsYXllckNvbnRyb2xsZXIqIFdlYkFWUGxheWVyTGF5ZXJW
aWV3X3BsYXllckNvbnRyb2xsZXIoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVy
VmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBs
YXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJd
OworICAgIHJldHVybiBbd2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXTsKK30KKwor
c3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlcihpZCBh
U2VsZiwgU0VMLCBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIpCit7CisgICAg
QVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGxh
eWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJM
YXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIFt3ZWJBVlBsYXllckxheWVyIHNldFBsYXllckNv
bnRyb2xsZXI6IHBsYXllckNvbnRyb2xsZXJdOworfQorCitzdGF0aWMgVUlWaWV3KiBXZWJBVlBs
YXllckxheWVyVmlld192aWRlb1ZpZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxh
eWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJB
VlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5
ZXJdOworICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1
YmxheWVyXTsKKyAgICBpZiAoIXZpZGVvTGF5ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
QVNTRVJUKFtbdmlkZW9MYXllciBkZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpnZXRVSVZpZXdDbGFz
cygpXSk7CisgICAgcmV0dXJuIChVSVZpZXcgKilbdmlkZW9MYXllciBkZWxlZ2F0ZV07Cit9CisK
K3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFZpZGVvVmlldyhpZCBhU2VsZiwg
U0VMLCBVSVZpZXcgKnZpZGVvVmlldykKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVy
TGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgV2ViQVZQbGF5ZXJMYXllciAqd2ViQVZQbGF5ZXJMYXll
ciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07Cisg
ICAgW3dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9TdWJsYXllcjpbdmlkZW9WaWV3IGxheWVyXV07
Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVv
VG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7CisgICAg
V2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIEFWUGlj
dHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXllclZpZXcg
cGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisKKyAgICBXZWJBVlBsYXllckxheWVy
ICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5
ZXJMYXllcl07CisgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQ
bGF5ZXJMYXllciAqKVtwaXBWaWV3IHBsYXllckxheWVyXTsKKyAgICBbcGxheWVyTGF5ZXIgc2V0
VmlkZW9HcmF2aXR5OmdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKV07CisgICAg
W3BpcFBsYXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6cGxheWVyTGF5ZXIudmlkZW9TdWJsYXll
cl07CisgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpwbGF5ZXJMYXllci52
aWRlb0RpbWVuc2lvbnNdOworICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6cGxh
eWVyTGF5ZXIudmlkZW9HcmF2aXR5XTsKKyAgICBbcGlwUGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRl
b0xheWVyRnJhbWU6cGxheWVyTGF5ZXIubW9kZWxWaWRlb0xheWVyRnJhbWVdOworICAgIFtwaXBQ
bGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOnBsYXllckxheWVyLnBsYXllckNvbnRyb2xs
ZXJdOworICAgIFtwaXBWaWV3IGFkZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107
Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0b3BSb3V0aW5nVmlkZW9U
b1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBX
ZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXll
ckxheWVyVmlldyBhZGRTdWJ2aWV3OnBsYXllckxheWVyVmlldy52aWRlb1ZpZXddOworfQorCitz
dGF0aWMgQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpXZWJBVlBsYXllckxheWVy
Vmlld19waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7Cisg
ICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdl
YkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXll
clZpZXcgdmFsdWVGb3JLZXk6QCJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyJdOwor
ICAgIGlmICghcGlwVmlldykgeworICAgICAgICBwaXBWaWV3ID0gW1tnZXRXZWJBVlBpY3R1cmVJ
blBpY3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm9dOworICAgICAgICBbcGxheWVyTGF5ZXJWaWV3IHNldFZhbHVlOnBpcFZpZXcgZm9yS2V5
OkAiX3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXciXTsKKyAgICB9CisgICAgcmV0dXJu
IHBpcFZpZXc7Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X2RlYWxsb2Mo
aWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJW
aWV3ID0gYVNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldz4gcGlwVmlldyA9IGFkb3B0TlMoW3BsYXllckxheWVyVmlldyB2YWx1ZUZvcktleTpA
Il9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Il0pOworICAgIFtwbGF5ZXJMYXllclZp
ZXcgc2V0VmFsdWU6bmlsIGZvcktleTpAIl9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
Il07CisgICAgb2JqY19zdXBlciBzdXBlckNsYXNzIHsgcGxheWVyTGF5ZXJWaWV3LCBnZXRBVlBs
YXllckxheWVyVmlld0NsYXNzKCkgfTsKKyAgICBhdXRvIHN1cGVyX2RlYWxsb2MgPSByZWludGVy
cHJldF9jYXN0PHZvaWQoKikob2JqY19zdXBlciosIFNFTCk+KG9iamNfbXNnU2VuZFN1cGVyKTsK
KyAgICBzdXBlcl9kZWFsbG9jKCZzdXBlckNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYykpOworfQor
CisjcHJhZ21hIG1hcmsgLSBNZXRob2RzCisKK3N0YXRpYyBDbGFzcyBnZXRXZWJBVlBsYXllckxh
eWVyVmlld0NsYXNzKCkKK3sKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0
QVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZpZXciLCAwKTsKKyAg
ICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYyksIChJTVAp
V2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYywgInZAOiIpOworICAgICAgICBjbGFzc19hZGRN
ZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiksIChJTVApV2Vi
QVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsKKyAgICAgICAg
Y2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IocGxheWVyQ29udHJvbGxlciksIChJ
TVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlciwgIkBAOiIpOworICAgICAg
ICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRWaWRlb1ZpZXc6KSwgKElN
UClXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1ZpZXcsICJ2QDpAIik7CisgICAgICAgIGNs
YXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHZpZGVvVmlldyksIChJTVApV2ViQVZQ
bGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3LCAiQEA6Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhv
ZCh0aGVDbGFzcywgQHNlbGVjdG9yKHN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zdGFydFJvdXRpbmdW
aWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywgInZAOiIpOworICAgICAgICBj
bGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzdG9wUm91dGluZ1ZpZGVvVG9QaWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19z
dG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3LCAidkA6Iik7
CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJ
blBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJAQDoiKTsKKyAgICAgICAgCisgICAgICAgIGNsYXNz
X2FkZEl2YXIodGhlQ2xhc3MsICJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIsIHNp
emVvZihXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKiksIGxvZzIoc2l6ZW9m
KFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKSksICJAIik7CisgICAgICAg
IAorICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xh
c3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xhc3MoIldlYkFWUGxheWVyTGF5ZXJWaWV3Iik7
CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZChtZXRhQ2xhc3MsIEBzZWxlY3RvcihsYXllckNsYXNz
KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzLCAiQEA6Iik7CisgICAgfSk7
CisgICAgcmV0dXJuIHRoZUNsYXNzOworfQorCiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogICAgIDogbV9wbGF5ZXJD
b250cm9sbGVyKGFkb3B0TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkK
IHsKQEAgLTgxOSw2ICs5NDEsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdAogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBo
YXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKKyAgICBXZWJBVlBsYXllckxh
eWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3
IHBsYXllckxheWVyXTsKKworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6Q0dT
aXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRIYXNF
bmFibGVkVmlkZW86aGFzVmlkZW9dOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q29udGVu
dERpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiB9CkBAIC04ODMsMTQgKzEw
MDgsMTQgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJu
YWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmEKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4
dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZSA9IGxvY2FsaXplZERldmlj
ZU5hbWU7CiAgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVy
bmFsUGxheWJhY2tUeXBlOwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0Fj
dGl2ZSA9IGVuYWJsZWQ7Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKSBzZXRIaWRk
ZW46ZW5hYmxlZF07CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjplbmFibGVkXTsK
IH0KIAogQGludGVyZmFjZSBVSVdpbmRvdyAoKQotLShCT09MKV9pc0hvc3RlZEluQW5vdGhlclBy
b2Nlc3M7CistIChCT09MKV9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3M7CiBAZW5kCiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0Zm9y
bUxheWVyJiB2aWRlb0xheWVyLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwg
VUlWaWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spCit2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2
aWRlb1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxSZWN0LCBVSVZpZXcqIHBh
cmVudFZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
LCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaykKIHsKICAgICBBU1NFUlQobW9k
ZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAg
ICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1
cEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7CkBAIC04OTksNyArMTAyNCw2IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0Zm9ybUxheWVy
JiB2aWRlb0xheWVyCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNh
Y3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBtX3ZpZGVvTGF5ZXIgPSAmdmlkZW9M
YXllcjsKICAgICBtX21vZGUgPSBtb2RlOwogICAgIG1fcGFyZW50VmlldyA9IHBhcmVudFZpZXc7
CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBwYXJlbnRWaWV3LndpbmRvdzsKQEAgLTkxMyw1MSArMTAz
Nyw0NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxz
Y3JlZW4oUGxhdGZvcm1MYXllciYgdmlkZW9MYXllcgogICAgICAgICBbbV93aW5kb3cgbWFrZUtl
eUFuZFZpc2libGVdOwogICAgIH0KIAotICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVy
bGF5ZXJdOworICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdlYkFWUGxheWVy
TGF5ZXJWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFttX3BsYXllckxheWVyVmlldyBz
ZXRIaWRkZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsK
KyAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xh
c3MoKSBjbGVhckNvbG9yXV07CisgICAgCisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldFZpZGVv
VmlldzomdmlkZW9WaWV3XTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgYWRkU3Vidmlldzomdmlk
ZW9WaWV3XTsKIAotICAgIG1fbGF5ZXJIb3N0V3JhcHBlciA9IGFkb3B0TlMoW1tXZWJDQUxheWVy
SG9zdFdyYXBwZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbbV9sYXllckhvc3RXcmFwcGVyIHNldE1v
ZGVsOm1fdmlkZW9GdWxsc2NyZWVuTW9kZWxdOwotICAgIFttX2xheWVySG9zdFdyYXBwZXIgc2V0
VmlkZW9TdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOworICAgIFdlYkFWUGxheWVyTGF5ZXIg
KnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxh
eWVyTGF5ZXJdOwogCi0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFWVmlkZW9MYXll
ciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhpZGRlbjpbbV9w
bGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAgIFttX3ZpZGVv
TGF5ZXJDb250YWluZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBwZXIuZ2V0KCld
OworICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdodCgpKV07CisgICAgW3Bs
YXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250cm9sbGVyIGNvbnRlbnRE
aW1lbnNpb25zXV07CiAKLSAgICBDR1NpemUgdmlkZW9TaXplID0gW21fcGxheWVyQ29udHJvbGxl
ciBjb250ZW50RGltZW5zaW9uc107Ci0gICAgQ0dSZWN0IHZpZGVvUmVjdCA9IENHUmVjdE1ha2Uo
MCwgMCwgdmlkZW9TaXplLndpZHRoLCB2aWRlb1NpemUuaGVpZ2h0KTsKLSAgICBbbV92aWRlb0xh
eWVyQ29udGFpbmVyIHNldFZpZGVvUmVjdDp2aWRlb1JlY3RdOwotICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0xh
eWVyRnJhbWUodmlkZW9SZWN0KTsKLQotICAgIC8vIFRoaXMgbWV0aG9kIGhhcyBiZWVuIGRlcHJl
Y2F0ZWQgc28gaWdub3JlIHRoZSB3YXJuaW5nIHVudGlsIHdlIHBvcnQgb3VyIGNvZGUgdG8gdGhl
IG5ldyBBUEkuCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlcklu
c3RhbmNlKCkgaW5pdFdpdGhWaWRlb0xheWVyOm1fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKV0p
OwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIG1fcGxheWVyVmlld0NvbnRyb2xs
ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRX
aXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAKICAgICBbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwogICAgIFtt
X3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJv
bGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKICAgICBbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s6bV9hbGxv
d3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwogCi0gICAgW21fdmlkZW9MYXllckNvbnRhaW5l
ciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpXTsK
LQogICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdDb250cm9sbGVy
IGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CiAg
ICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKLSAgICAgICAgW3BhcmVudFZpZXcud2luZG93
IGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOworICAgICAgICBbcGFy
ZW50VmlldyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKIAotICAg
IFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW3BhcmVudFZpZXcgY29udmVy
dFJlY3Q6aW5pdGlhbFJlY3QgdG9WaWV3Om5pbF07CisgICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10uZnJhbWUgPSBbcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbml0aWFsUmVjdCB0b1Zp
ZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKIAogICAgIFtbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JD
bGFzcygpIGNsZWFyQ29sb3JdXTsKKyAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10g
c2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0b21NYXJn
aW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CisKICAgICBbW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOwogICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07CiAKICAgICBbQ0FUcmFuc2Fj
dGlvbiBjb21taXRdOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAg
ICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2NyZWVuKCk7Cisg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRo
aXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJv
bmdUaGlzLCB0aGlzXSB7CisgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikK
KyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3Jl
ZW4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZW50ZXJGdWxsc2NyZWVuKCkKQEAgLTk2OCw3ICsxMDg3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBtX2V4aXRSZXF1
ZXN0ZWQgPSBmYWxzZTsKICAgICBtX2VudGVyUmVxdWVzdGVkID0gdHJ1ZTsKIAotICAgIFttX3Zp
ZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xvckNsYXNzKCkg
YmxhY2tDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3Jv
dW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNrQ29sb3JdXTsKICAgICBpZiAobW9kZSgp
ID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBp
Y3R1cmUpCiAgICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIGVsc2UgaWYgKG1v
ZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCkKQEAgLTEwMTIsMTMgKzExMzEsMTIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmkKICAgICAK
ICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
eGl0RnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKQot
ICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZp
ZXcgY29udmVydFJlY3Q6ZmluYWxSZWN0IHRvVmlldzpuaWxdOwotICAgIGVsc2UKLSAgICAgICAg
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBmaW5hbFJlY3Q7CisgICAgCisg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNv
bnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10u
c3VwZXJ2aWV3XTsKIAotICAgIGlmIChbbV92aWRlb0xheWVyQ29udGFpbmVyIHZpZGVvTGF5ZXJH
cmF2aXR5XSAhPSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQotICAgICAgICBbbV92
aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9MYXllckdyYXZp
dHlSZXNpemVBc3BlY3RdOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdl
YkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIGlm
IChbcGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSAhPSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0KCkpCisgICAgICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6Z2V0QVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwogCiAgICAgaWYgKGlzTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSkgewpAQCAt
MTAzNywyMiArMTE1NSwyNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaQogCiAgICAgICAgICAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOwotICAgICAgICAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBz
ZXRCYWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXSBDR0NvbG9y
XV07CisgICAgICAgICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltn
ZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBj
bGVhckNvbG9yXV07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAg
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICAgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAgICAgICAgICAg
ICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7Cisg
ICAgICAgICAgICB9KTsKICAgICAgICAgfV07CiAgICAgfTsKIH0KIAogQGludGVyZmFjZSBVSUFw
cGxpY2F0aW9uICgpCi0tKHZvaWQpX3NldFN0YXR1c0Jhck9yaWVudGF0aW9uOihVSUludGVyZmFj
ZU9yaWVudGF0aW9uKW87CistICh2b2lkKV9zZXRTdGF0dXNCYXJPcmllbnRhdGlvbjooVUlJbnRl
cmZhY2VPcmllbnRhdGlvbilvOwogQGVuZAogCiBAaW50ZXJmYWNlIFVJV2luZG93ICgpCi0tKFVJ
SW50ZXJmYWNlT3JpZW50YXRpb24paW50ZXJmYWNlT3JpZW50YXRpb247CistIChVSUludGVyZmFj
ZU9yaWVudGF0aW9uKWludGVyZmFjZU9yaWVudGF0aW9uOwogQGVuZAogCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCkBAIC0xMDgwLDE2
ICsxMjAwLDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFu
dXBGdWxsc2NyZWVuKCkKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikKICAgICAgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVyXTsKICAgICAK
LSAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbV92aWRlb0xh
eWVyQ29udGFpbmVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29u
dGFpbmVyIHNldFBsYXllclZpZXdDb250cm9sbGVyOm5pbF07CisgICAgW21fcGxheWVyTGF5ZXJW
aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBy
ZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAgIFttX2xheWVySG9zdFdyYXBwZXIgc2V0TW9kZWw6
bnVsbHB0cl07Ci0KLSAgICBtX2xheWVySG9zdFdyYXBwZXIgPSBuaWw7Ci0gICAgbV92aWRlb0xh
eWVyID0gbmlsOwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKKyAgICBtX3BsYXll
ckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOwogICAg
IG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwpA
QCAtMTEzNSw3ICsxMjQ5LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAgICBMT0coRnVs
bHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0
dXJuVG9JbmxpbmUoJXApIC0gdmlzaWJsZSglcykiLCB0aGlzLCBib29sU3RyaW5nKHZpc2libGUp
KTsKICAgICBpZiAobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjaykgewogICAgICAgICAKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNv
bnZlcnRSZWN0OmlubGluZVJlY3QgdG9WaWV3Om5pbF07CisgICAgICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVS
ZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCiAg
ICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEY6Om1vdmUobV9w
cmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7CiAgICAgICAgIGNhbGxiYWNrKHZpc2libGUpOwpAQCAt
MTIwNiw3ICsxMzIwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgbV9leGl0Q29tcGxldGVkID0gdHJ1ZTsK
IAotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlD
b2xvckNsYXNzKCkgY2xlYXJDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmll
dyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRV
SUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAKICAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5o
CmluZGV4IDcyOTE0ZGJmMjMxNTFjNGFlYzBhNmNmZmFlYTE1NzgyOGZmY2YxOWEuLjNjNTVhYTNi
MWMzNzk1NWZhMmZmMGRkZjVlYjgxMTljNzBhM2QyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC00OCwxMCAr
NDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCB2aWRlb0xheWVyRnJhbWUoKSBjb25zdCA9IDA7CiAgICAgZW51bSBWaWRlb0dyYXZpdHkg
eyBWaWRlb0dyYXZpdHlSZXNpemUsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0RmlsbCB9OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jh
dml0eShWaWRlb0dyYXZpdHkpID0gMDsKLSAgICB2aXJ0dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xh
eWVyR3Jhdml0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRp
YU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCA2OWM4ZjAx
YjhjM2YyZGU2YmIyMGU1Mjg5NmI0MjA0Zjc2MWRkNDY5Li4xYWEzY2U1YmJjOTA4Y2NkYTQ0YTNk
MjJiNDQyYTIwMmE3NmJlMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApA
QCAtNzIsOSArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdy
YXZpdHkoVmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90
IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VsZWN0
TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggOWM4OTVhYmYyM2NmZjQyMjAwZjYzNjhlNzZlZThmN2E0
MjE1NjEwZS4uYjg1MmU5ZmUwODYyMjg5NjQ4NmU3NzRiM2VhMDQ4NjRlNTNlNjI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMjU0LDExICsyNTQsNiBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJhbWUo
RmxvYXRSZWN0IHJlY3QpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShyZWN0KTsKIH0KIAotRmxvYXRSZWN0IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Ojp2aWRlb0xheWVyRnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ZpZGVv
RnJhbWU7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkg
Z3Jhdml0eSkKIHsKICAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvR3Jhdml0eSA9
IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7CkBAIC0yNzQsMjEgKzI2OSw2
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlCiAgICAgbV92aWRlb0VsZW1lbnQtPnNldFZpZGVv
RnVsbHNjcmVlbkdyYXZpdHkodmlkZW9HcmF2aXR5KTsKIH0KIAotV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWw6OlZpZGVvR3Jhdml0eSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdAotewotICAgIHN3aXRjaCAobV92aWRlb0VsZW1lbnQt
PnZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlZpZGVv
R3Jhdml0eVJlc2l6ZToKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6ZTsKLSAgICBj
YXNlIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q6Ci0gICAgICAgIHJldHVy
biBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6VmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0RmlsbDoKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGw7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFZpZGVvR3Jhdml0eVJlc2l6ZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBzZWxlY3RlZEF1
ZGlvSW5kZXgpCiB7CiAgICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKaW5kZXgg
N2NiYjA3YjY2M2RkZjEzNDE0MTdlZmJmZDU0Y2IwMzAzZmE2NGRlYi4uMWE0NWEzNzlhYjIzMTRl
MzA0MDZkNDI0MTg2Y2VlYTM5MDdiOGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NvY29hL0FWS2l0U1BJLmgKQEAgLTM0LDkgKzM0LDEyIEBACiAjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKIAogI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1Xb2JqYy1wcm9wZXJ0eS1uby1hdHRyaWJ1dGUiCisjaW1wb3J0IDxBVktpdC9BVlBsYXll
ckxheWVyVmlldy5oPgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2ltcG9ydCA8QVZL
aXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVktpdC9BVlBs
YXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHkuaD4KLSNpbXBvcnQgPEFWS2l0L0FWVmlkZW9M
YXllci5oPgogCiAjZWxzZQogCkBAIC01OCwxNyArNjEsMTcgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKIEBwcm9w
ZXJ0eSAoTlNfTk9OQVRPTUlDX0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNvbnRyb2xsZXJT
dGF0dXMgc3RhdHVzOwogQGVuZAogCi1AcHJvdG9jb2wgQVZWaWRlb0xheWVyCi10eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBBVlZpZGVvTGF5ZXJHcmF2aXR5KSB7Ci0gICAgQVZWaWRlb0xheWVy
R3Jhdml0eUludmFsaWQgPSAwLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3Qg
PSAxLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsID0gMiwKLSAgICBB
VlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplID0gMywKLX07Ci0tICh2b2lkKXNldFBsYXllckNvbnRy
b2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBDR1JlY3QgdmlkZW9SZWN0OwotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBnZXR0ZXI9aXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5
OworQGNsYXNzIEFWUGxheWVyTGF5ZXI7CisKK0BpbnRlcmZhY2UgQVZQbGF5ZXJMYXllclZpZXcg
OiBVSVZpZXcKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQVZQbGF5ZXJMYXllciAq
cGxheWVyTGF5ZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyAqcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldzsK
Ky0gKHZvaWQpc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZp
ZXc7CistICh2b2lkKXN0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXll
clZpZXc7CitAZW5kCisKK0BpbnRlcmZhY2UgQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWUGxheWVyTGF5
ZXIgKnBsYXllckxheWVyOwogQGVuZAogCiBAcHJvdG9jb2wgQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ckRlbGVnYXRlIDxOU09iamVjdD4KQEAgLTg1LDE1ICs4OCwxNSBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb24pIHsK
IEBlbmQKIAogQGludGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9sbGVyIChEZXRhaWxzKQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoVmlkZW9MYXllcjooQ0FMYXllciA8QVZWaWRlb0xheWVyPiAq
KXZpZGVvTGF5ZXI7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6KEFW
UGxheWVyTGF5ZXJWaWV3ICopcGxheWVyTGF5ZXJWaWV3OwogLSAodm9pZCllbnRlckZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAKIC0gKEJPT0wp
aXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CiAtICh2b2lkKXN0YXJ0UGljdHVyZUluUGljdHVy
ZTsKIC0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7Ci0tICh2b2lkKXNldEFsbG93c1BpY3R1
cmVJblBpY3R1cmVQbGF5YmFjazooQk9PTClhbGxvdzsKIAorQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHN0cm9uZykgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWspIGlkIDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+
IGRlbGVnYXRlOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMDhiZjNiY2U0
M2JlZDFiNzkxNDQ5NzRkMGQ4ODJjMTQ3ZGZkYmY1Ni4uZmEzMWVlZDQ0ZTMwNmM0MzVmOGY4MTE0
OTM3YTk0MzU3MGVlNDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC01MywxMCAr
NTMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1fbWFuYWdlciA9IG51
bGxwdHI7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVySG9zdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXJIb3N0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRMYXllckhvc3QoUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+JiYgbGF5ZXJIb3N0KSB7IG1fbGF5ZXJIb3N0ID0gV1RGOjptb3ZlKGxheWVy
SG9zdCk7IH0KLQotICAgIHZvaWQgc2V0SW5pdGlhbFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpG
bG9hdFJlY3QgZnJhbWUpIHsgbV92aWRlb0xheWVyRnJhbWUgPSBmcmFtZTsgfQorICAgIFVJVmll
dyAqbGF5ZXJIb3N0VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0Vmlldy5nZXQoKTsg
fQorICAgIHZvaWQgc2V0TGF5ZXJIb3N0VmlldyhSZXRhaW5QdHI8VUlWaWV3PiYmIGxheWVySG9z
dFZpZXcpIHsgbV9sYXllckhvc3RWaWV3ID0gV1RGOjptb3ZlKGxheWVySG9zdFZpZXcpOyB9CiAK
IHByaXZhdGU6CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQpAQCAtNzgs
OSArNzYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5
KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWaWRlb0dyYXZpdHkgdmlkZW9M
YXllckdyYXZpdHkoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVk
aW9NZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwpAQCAtOTQsOSArOTAsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KiBtX21hbmFnZXI7CiAgICAgdWlu
dDY0X3QgbV9jb250ZXh0SWQ7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fbGF5ZXJI
b3N0OwotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3ZpZGVvTGF5ZXJGcmFtZTsKLSAgICBWaWRl
b0dyYXZpdHkgbV92aWRlb0xheWVyR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSB9OworICAg
IFJldGFpblB0cjxVSVZpZXcgKj4gbV9sYXllckhvc3RWaWV3OwogfTsKIAogY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDczY2M3YzJmZjJiZjVjZGQyMTcxYzk2MmE3YzMz
NDVhNTBkNjE0NzMuLjQ3YWRiM2M3YzgyODliZTZjYzFjNGFiYTNlYjc5NDRkMzA3YmQ1ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zNCwxMCArMzQsMzUgQEAKICNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVySG9zdC5oPgogI2ltcG9ydCA8UXVhcnR6
Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KICNp
bXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCitAaW50ZXJmYWNlIFdlYkxheWVySG9z
dFZpZXcgOiBVSVZpZXcKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIHVpbnQzMl90IGNv
bnRleHRJRDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkxheWVySG9zdFZpZXcKKworKyAo
Q2xhc3MpbGF5ZXJDbGFzcyB7CisgICAgcmV0dXJuIFtDQUxheWVySG9zdCBjbGFzc107Cit9CisK
Ky0gKHVpbnQzMl90KWNvbnRleHRJRCB7CisgICAgcmV0dXJuIFtbc2VsZiBsYXllckhvc3RdIGNv
bnRleHRJZF07Cit9CisKKy0gKHZvaWQpc2V0Q29udGV4dElEOih1aW50MzJfdCljb250ZXh0SUQg
eworICAgIFtbc2VsZiBsYXllckhvc3RdIHNldENvbnRleHRJZDpjb250ZXh0SURdOworfQorCist
IChDQUxheWVySG9zdCAqKWxheWVySG9zdCB7CisgICAgcmV0dXJuIChDQUxheWVySG9zdCAqKVtz
ZWxmIGxheWVyXTsKK30KKworQGVuZAorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xMzksMjggKzE2NCwxNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkKIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9h
dFJlY3QgZnJhbWUpCiB7Ci0gICAgbV92aWRlb0xheWVyRnJhbWUgPSBmcmFtZTsKICAgICBpZiAo
bV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnNldFZpZGVvTGF5ZXJGcmFtZShtX2NvbnRl
eHRJZCwgZnJhbWUpOwogfQogCi1XZWJDb3JlOjpGbG9hdFJlY3QgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0Ojp2aWRlb0xheWVyRnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3Zp
ZGVvTGF5ZXJGcmFtZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6
OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpW
aWRlb0dyYXZpdHkgZ3Jhdml0eSkKIHsKLSAgICBtX3ZpZGVvTGF5ZXJHcmF2aXR5ID0gZ3Jhdml0
eTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnNldFZpZGVvTGF5ZXJH
cmF2aXR5KG1fY29udGV4dElkLCBncmF2aXR5KTsKIH0KIAotV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6
OnZpZGVvTGF5ZXJHcmF2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92aWRlb0xheWVyR3Jh
dml0eTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3Qgb3B0aW9uSWQpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikK
QEAgLTI0MCw4ICsyNTMsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
aW52YWxpZGF0ZSgpCiAgICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7
CiAKICAgICAgICAgaW50ZXJmYWNlLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIFttb2RlbC0+bGF5
ZXJIb3N0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAgICBtb2RlbC0+c2V0TGF5ZXJI
b3N0KG51bGxwdHIpOworICAgICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKKyAgICAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7CiAg
ICAgfQogCiAgICAgbV9jb250ZXh0TWFwLmNsZWFyKCk7CkBAIC0zMTAsMTYgKzMyMywxNyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElE
KHVpbnQ2NF90IGNvbnRleHRJZCwgdQogCiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkg
PSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCi0gICAgbW9kZWwtPnNldElu
aXRpYWxWaWRlb0xheWVyRnJhbWUoaW5pdGlhbFJlY3QpOwotICAgIG1vZGVsLT5zZXRMYXllckhv
c3QoV0tNYWtlUmVuZGVyTGF5ZXIodmlkZW9MYXllcklEKSk7CisgICAgUmV0YWluUHRyPFdlYkxh
eWVySG9zdFZpZXc+IHZpZXcgPSBhZG9wdE5TKFtbV2ViTGF5ZXJIb3N0VmlldyBhbGxvY10gaW5p
dF0pOworICAgIFt2aWV3IHNldENvbnRleHRJRDp2aWRlb0xheWVySURdOworICAgIG1vZGVsLT5z
ZXRMYXllckhvc3RWaWV3KHZpZXcpOwogICAgIGlmIChob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3Ig
IT0gMSkgewogICAgICAgICAvLyBJbnZlcnQgdGhlIHNjYWxlIHRyYW5zZm9ybSBhZGRlZCBpbiB0
aGUgV2ViUHJvY2VzcyB0byBmaXggPHJkYXI6Ly9wcm9ibGVtLzE4MzE2NTQyPi4KICAgICAgICAg
ZmxvYXQgaW52ZXJzZVNjYWxlID0gMSAvIGhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvcjsKLSAgICAg
ICAgW21vZGVsLT5sYXllckhvc3QoKSBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2Fs
ZShpbnZlcnNlU2NhbGUsIGludmVyc2VTY2FsZSwgMSldOworICAgICAgICBbW21vZGVsLT5sYXll
ckhvc3RWaWV3KCkgbGF5ZXJdIHNldFN1YmxheWVyVHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtl
U2NhbGUoaW52ZXJzZVNjYWxlLCBpbnZlcnNlU2NhbGUsIDEpXTsKICAgICB9CiAKICAgICBVSVZp
ZXcgKnBhcmVudFZpZXcgPSBkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
PigqbV9wYWdlLT5kcmF3aW5nQXJlYSgpKS5yZW1vdGVMYXllclRyZWVIb3N0KCkucm9vdExheWVy
KCk7Ci0gICAgaW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1vZGVsLT5sYXllckhvc3QoKSwg
aW5pdGlhbFJlY3QsIHBhcmVudFZpZXcsIHZpZGVvRnVsbHNjcmVlbk1vZGUsIGFsbG93c1BpY3R1
cmVJblBpY3R1cmUpOworICAgIGludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptb2RlbC0+bGF5
ZXJIb3N0VmlldygpLCBpbml0aWFsUmVjdCwgcGFyZW50VmlldywgdmlkZW9GdWxsc2NyZWVuTW9k
ZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKQpAQCAtNTAy
LDggKzUxNiw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVh
bnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgYXV0byYgbW9kZWwgPSBlbnN1
cmVNb2RlbChjb250ZXh0SWQpOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwotICAgIFtt
b2RlbC5sYXllckhvc3QoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgbW9kZWwuc2V0TGF5
ZXJIb3N0KG51bGxwdHIpOworICAgIFttb2RlbC5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1
cGVydmlld107CisgICAgbW9kZWwuc2V0TGF5ZXJIb3N0VmlldyhudWxscHRyKTsKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBG
dWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCiAgICAgbV9jb250ZXh0
TWFwLnJlbW92ZShjb250ZXh0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNTM0MjQ2OTFj
YjJlMjk5OGUxM2FjOGRlZDUwYzFiNzRhODQ1MTQyNy4uODFjNGRjNzBkM2IzMGQwNDg1ODZmOGZj
NDc4ZTgyZmUzZWMzMjkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMzIsOSArMjMyLDEz
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJm
YWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKKyAgICBGbG9hdFJl
Y3QgY2xpZW50UmVjdCA9IGNsaWVudFJlY3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpOworICAg
IEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoMCwgMCwgY2xpZW50UmVjdC53
aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdodCgpKTsKKyAgICAKICAgICBpbnRlcmZhY2UtPnNldFRh
cmdldElzRnVsbHNjcmVlbih0cnVlKTsKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2Rl
KG1vZGUpOwogICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxlbWVudCk7CisgICAg
bW9kZWwtPnNldFZpZGVvTGF5ZXJGcmFtZSh2aWRlb0xheWVyRnJhbWUpOwogCiAgICAgaWYgKGlu
dGVyZmFjZS0+aXNBbmltYXRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDI4LDcgKzQzMiwx
MCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVu
dGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBSZWZQdHI8
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY29u
dGV4dElkXSB7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgfSk7CiB9CiAgICAgCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257125</attachid>
            <date>2015-07-20 14:00:44 -0700</date>
            <delta_ts>2015-07-20 14:35:15 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-146862-20150720135931.patch</filename>
            <type>text/plain</type>
            <size>63253</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyZjQ5NjFmYWNiYzc2
OWRmYTVhMTBlNTM0ZjYzYjc3NmIzMmZkZC4uZmNjYmVmN2RiMTQ5YTVjMWNhNDJmMTZiYmY0Y2I2
NzVhNTNhYzQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNS0wNy0yMCAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZQbGF5ZXJM
YXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBUaGUg
Q0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXllckhvc3RWaWV3IHRvIGJlIGNvbXBh
dGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAgICAgU29tZSBhbmltYXRpb24gaXMg
aW1wcm92ZWQgaW4gdGhlIGNvbnZlcnNpb24uCisKKyAgICAgICAgV2ViQVZQbGF5ZXJMYXllclZp
ZXcgYW5kIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyBkZXJpdmUgZnJvbSBB
VktpdCBhbmQgVUlLaXQgcmVzcGVjdGl2ZWx5LgorICAgICAgICBCZWNhdXNlIHRoZXNlIGZyYW1l
d29ya3MgYXJlIGxvYWRlZCBhdCBydW50aW1lLCB0aGVzZSBjbGFzc2VzIG11c3QgYmUgZ2VuZXJh
dGUgdXNpbmcgb2JqYy9ydW50aW1lLmggdG8KKyAgICAgICAgcmVnaXN0ZXIgdGhlbSBmcm9tIGMg
ZnVuY3Rpb25zIGF0IHJ1bnRpbWUuIFRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IG9mIHRoZXNlIFVJ
Vmlld3MgaXMgdGhhdCB0aGVpcgorICAgICAgICBiYWNraW5nIGxheWVyIGlzIGEgV2ViQVZQbGF5
ZXJMYXllci4KKworICAgICAgICBXZWJDQUxheWVySG9zdFdyYXBwZXIgYW5kIFdlYkFWVmlkZW9M
YXllciBhcmUgY29tYmluZWQgaW50byBXZWJBVlBsYXllckxheWVyIHRvIHNpbXBsaWZ5IHRoZSBo
aWVyYXJjaHkuCisgICAgICAgIFdlYkFWUGxheWVyTGF5ZXIgaXMgYSBzdGFuZC1pbiBmb3IgYW4g
QVZQbGF5ZXJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcik6IC1yZW1vdmVGcm9tU3VwZXJsYXllciBpcyByZWR1bmRhbnQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KTogc3luY1RleHRUcmFja0JvdW5kcyBvbiBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZSk6CisgICAgICAgIFdlIG5ldmVyIHdhbnQgYW5pbWF0aW9uIGhlcmUsIHNp
bmNlIGFsbCBhbmltYXRpb24gd2lsbCBoYXBwZW4gaW4gVUlWaWV3cy4gCisgICAgICAgIFRoaXMg
aXMganVzdCBmb3IgZ29pbmcgaW50byB0aGUgZmluYWwgc2l6ZSBhZnRlciBhIHRyYW5zZm9ybSBi
YXNlZCBhbmltYXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVl
bik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4pOiBsYXllciAtPiB2aWV3CisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBsYXll
ciAtPiB2aWV3CisgICAgICAgIFVzZSBmZW5jZSBwb3J0IHRvIHN5bmNocm9uaXplIGJldHdlZW4g
dGhlIFVJVGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFkLAorICAgICAgICB0aGUgc2FtZSB3YXkgV2Vi
S2l0MiB1c2VzIGEgZmVuY2UgcG9ydCB0byBzeW5jaHJvbml6ZSBiZXR3ZWVuIHByb2Nlc3Nlcy4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KToKKyAgICAgICAgTm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBjYWNoZSB2aWRl
b0dyYXZpdHkgYXQgdGhpcyBsZXZlbC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKworICAgICAgICAoLVtXZWJBVlBsYXll
ckxheWVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBkZWFsbG9jXSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgcGxheWVyQ29udHJvbGxlcl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHNldEJvdW5kczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJM
YXllciByZXNvbHZlQm91bmRzXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0Vmlk
ZW9HcmF2aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvR3Jhdml0eV0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvUmVjdF0pOgorICAgICAgICAoK1tX
ZWJBVlBsYXllckxheWVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0XSk6Cisg
ICAgICAgIEFkZGVkIGNsYXNzIFdlYkFWUGxheWVyTGF5ZXIsIHJlcGxhY2luZyBXZWJBVlZpZGVv
TGF5ZXIgYW5kIFdlYkNBTGF5ZXJIb3N0V3JhcHBlci4KKworICAgICAgICAoV2ViQVZQaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MpOgorICAgICAgICAoZ2V0V2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOgorICAgICAgICBBZGRlZCBydW50
aW1lIGNsYXNzIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldworCisgICAgICAg
IChXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzKToKKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZp
ZXdfc2V0UGxheWVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192
aWRlb1ZpZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0VmlkZW9WaWV3KToK
KyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KToKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3
X3N0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAg
ICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKToKKyAgICAgICAgQWRk
ZWQgcnVudGltZSBjbGFzcyBXZWJBVlBsYXllckxheWVyVmlldworCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKToKKyAgICAgICAg
RGltZW5zaW9ucyBhcmUgYWxzbyBzdG9yZWQgaW4gV2ViQVZQbGF5ZXJMYXllciBzbyBpdCBjYW4g
bWFrZSBkZWNpc2lvbnMgYWJvdXQKKyAgICAgICAgYW5pbWF0aW5nIHRoZSB2aWRlbyBsYXllci4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFs
UGxheWJhY2spOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVu
dGVyRnVsbHNjcmVlbik6IAorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIFN0cmFpZ2h0Zm9y
d2FyZCBsYXllciB0byB2aWV3IGNvbnZlcnNpb24uCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUpOgorICAgICAgICBT
ZXQgdmlldyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVyYXJjaHkgaW5zdGVhZCBvZiBhc3N1bWlu
ZyBpdCBpcyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJh
bWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGly
ZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAgIGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5n
IGRpZEV4aXRGdWxsc2NyZWVuKCkgdG8gYWxsb3dzIENBVHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRl
LgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxs
c2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJhbWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5
IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGlyZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAg
IGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5nIGRpZFNldHVwRnVsbHNjcmVlbigpIHRvIGFs
bG93cyBDQVRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4KKworICAgICAgICAoLVtXZWJDQUxheWVy
SG9zdFdyYXBwZXIgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDQUxheWVySG9z
dFdyYXBwZXIgc2V0VmlkZW9TdWJsYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ0FM
YXllckhvc3RXcmFwcGVyIHZpZGVvU3VibGF5ZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHNldEJvdW5kczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHJlc29sdmVCb3VuZHNdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xh
c3MgV2ViQ0FMYXllckhvc3RXcmFwcGVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGlu
dG8gV2ViQVZQbGF5ZXJMYXllci4KKworICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9M
YXllcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgaW5pdF0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRWaWRlb1N1YmxheWVy
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0Qm91bmRzOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdyYXZpdHk6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0
eV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgZW50ZXJQSVBNb2RlUmVk
aXJlY3RpbmdWaWRlb1RvTGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9M
YXllciBsZWF2ZVBJUE1vZGVdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xhc3MgV2ViQVZWaWRlb0xh
eWVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGludG8gV2ViQVZQbGF5ZXJMYXllci4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbToKKyAgICAgICAgTm8gbmVlZCB0byBzdG9yZSBmcmFtZSBhbmQgZ3Jhdml0eSBpbiB0
aGUgbW9kZWwuIEl0IGlzIHN0b3JlZCBpbiB0aGUgVUkgd2hlcmUgaXQgaXMgdXNlZC4KKworICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnZpZGVvTGF5ZXJGcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6dmlkZW9MYXllckdyYXZpdHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOiBBZGQgQVZQbGF5ZXJMYXllclZpZXcuCisKIDIwMTUtMDctMDkgIE1h
dHRoZXcgRGFpdGVyICA8bWRhaXRlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50aW5n
IHBsYXRmb3JtLXNwZWNpZmljIHNlY3Rpb24gb2YgZW51bWVyYXRlRGV2aWNlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDI5ZTU1ZWNlYTljODNiMjJlYmI0NDZmOGVkZDQ3YWEzYzRkOTgzYTUuLjNkZjkwYjYzNmVh
YzQwYjlkYzdkOWI3ZDJiMTNlZDJmOGE2NjM0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBA
QAorMjAxNS0wNy0yMCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRvcHQgQVZQbGF5ZXJMYXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBUaGUgQ0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXll
ckhvc3RWaWV3IHRvIGJlIGNvbXBhdGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAg
ICAgdmlkZW9MYXllckZyYW1lIGFuZCB2aWRlb0xheWVyR3Jhdml0eSBubyBsb25nZXIgbmVlZCB0
byBiZSBzdG9yZWQgYmVjYXVzZSB0aGV5IGFyZSBzdG9yZWQKKyAgICAgICAgd2hlcmUgdGhleSBh
cmUgdXNlZCBpbiB0aGUgaW50ZXJmYWNlLiBTb21lIGFuaW1hdGlvbiBpcyBpbXByb3ZlZCBpbiB0
aGUgY29udmVyc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgICgrW1dlYkxheWVySG9zdFZpZXcgbGF5ZXJD
bGFzc10pOiBBZGQgY2xhc3MgV2ViTGF5ZXJIb3N0Vmlldy4KKyAgICAgICAgKC1bV2ViTGF5ZXJI
b3N0VmlldyBjb250ZXh0SURdKToKKyAgICAgICAgKC1bV2ViTGF5ZXJIb3N0VmlldyBzZXRDb250
ZXh0SUQ6XSk6CisgICAgICAgICgtW1dlYkxheWVySG9zdFZpZXcgbGF5ZXJIb3N0XSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6
IGxheWVyIC0+IHZpZXcKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQpOgorICAgICAgICBBcHBseSB0aGUgaG9zdGlu
Z0RldmljZVNjYWxlRmFjdG9yIHRyYW5zZm9ybSB0byAtc3VibGF5ZXJUcmFuc2Zvcm0gaW5zdGVh
ZCBvZiB0bworICAgICAgICAtdHJhbnNmb3JtLiBUaGlzIG1vcmUgZGlyZWN0bHkgaW52ZXJ0cyB0
aGUgdHJhbmZvcm0gV2ViUHJvY2VzcyBhbmQgYWxsb3dzIC10cmFuc2Zvcm0KKyAgICAgICAgdG8g
YmUgdXNlZCBmb3IgYW5pbWF0aW9uIGluIHRoZSBVSVByb2Nlc3MuIFRoaXMgaXMgaW1wb3J0YW50
IGJlY2F1c2UgVUlWaWV3J3MgYWN0aW9ucworICAgICAgICBhbmltYXRlIC10cmFuc2Zvcm0sIGJ1
dCBub3QgLXN1YmxheWVyVHJhc2Zvcm0uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRl
b0xheWVyRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OnZpZGVvTGF5ZXJGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OnZpZGVvTGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6
CisgICAgICAgIFNldCBpbml0aWFsIHZpZGVvIGxheWVyIGZyYW1lIHRvIGZpeCBzdGFydCBwb2lu
dCBvZiBhbmltYXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgYWxsb3dz
IHRoZSBDQVRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGJlZm9yZSBjb250aW51aW5nIHdpdGggdGhl
IGFuaW1hdGlvbi4KKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIGZsYXNoIGR1cmluZyBhbmltYXRp
b24uCisKIDIwMTUtMDctMDkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIFJlcG9ydCB0aGUgZmlyc3QgcGFpbnQgYWZ0ZXIgY29tbWl0dGluZyBhIGxv
YWQgYXMgYSByZW5kZXJpbmcgcHJvZ3Jlc3MgZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDdiYWI1Yzc4YzVmZDkzYTJmMGE1NzZhYzVmOWMwOTU3YTE1OGE4ZGIuLmU5OGRmZDlhZmMx
YWE3ZjQzMzg1YmFkZDA4NmU3ODNhNWI1ZDM0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtMTEyNCw5ICsxMTI0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogICAgIENBQ29udGV4
dCAqbmV3Q29udGV4dCA9IG5pbDsKICAgICAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXll
ciAmJiBtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxz
Y3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKICAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5
ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07CisgICAgICAgIFttX3ZpZGVvTGF5ZXIg
c2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCks
IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKICAgICAgICAgbmV3Q29udGV4dCA9
IFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRdOwogICAgIH0gZWxzZSBpZiAobV92aWRl
b0lubGluZUxheWVyICYmIG1fdmlkZW9MYXllcikgewogICAgICAgICBbbV92aWRlb0xheWVyIHNl
dEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91bmRzXV07CkBAIC0xMTU4LDExICsxMTU3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
dmlkZW9MYXllcikgewotICAgICAgICBbbV92aWRlb0xheWVyIHNldFN0eWxlOm5pbF07IC8vIFRo
aXMgZW5hYmxlcyBhY3Rpb25zLCBpLmUuIGltcGxpY2l0IGFuaW1hdGlvbnMuCi0gICAgICAgIFtD
QVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIGZyYW1lLndpZHRoKCksIGZyYW1lLmhlaWdodCgpKV07Ci0gICAgICAgIFtD
QVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgd2ViX2Rpc2FibGVB
bGxBY3Rpb25zXTsKICAgICB9CiAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwogfQpAQCAtMTE4
Miw4ICsxMTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6CiAgICAgICAgIHZpZGVvR3Jh
dml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOwogICAgIGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgCisgICAgaWYgKFttX3ZpZGVvTGF5ZXIg
dmlkZW9HcmF2aXR5XSA9PSB2aWRlb0dyYXZpdHkpCisgICAgICAgIHJldHVybjsKIAogICAgIFtt
X3ZpZGVvTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OnZpZGVvR3Jhdml0eV07CisgICAgc3luY1RleHRU
cmFja0JvdW5kcygpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGQxOWFmMDFmOWU5
Yzk3MDIzZDk5YzA5MTRkZDljNGYwM2Q1ZjFhYmMuLjYwZDI4YmMyZmQzYzI5MmU0MjZlM2VhOWYx
ZmE2YjhlNzllMGExYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzAs
NiArMzAsOCBAQAogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lmgi
CiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlF1YXJ0ekNvcmVTUEkuaCIKKyNpbXBv
cnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKQEAgLTM3LDYgKzM5LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVu
Lmg+CiAKK1NPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQs
IFVJVmlldykKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8PSA4MDIwMCB8fCAhSEFWRShBVktJVCkKQEAgLTEyOSw5ICsx
MzQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9mcmFtZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZ3Jhdml0eTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJs
ZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC0xMzksMTAgKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKICAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1fbW9kZWw7CiAgICAg
UmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwotICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAgIFJldGFpblB0cjxVSVZp
ZXc+IG1fdmlkZW9GdWxsc2NyZWVuVmlldzsKICAgICBSZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAgIEZsb2F0UmVjdCBtX2ZyYW1lOwotICAg
IFZpZGVvR3Jhdml0eSBtX2dyYXZpdHk7CiB9OwogCiAjcHJhZ21hIG1hcmsgV2ViVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKQEAgLTE1MSw4ICsxNTIsOSBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFT
U0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXNdIHsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobV92
aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVv
RnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CisgICAgV2Vi
VGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0geworICAg
ICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKSk7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJG
dWxsc2NyZWVuKCk7CiAgICAgICAgIH0pOwpAQCAtMTc3LDYgKzE3OSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAg
ICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwobnVsbHB0cik7CiAgICAg
bV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIp
OwogICAgIG1faW50ZXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcg
PSBuaWw7CiAgICAgCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhp
c10gewpAQCAtMTg1LDcgKzE4OCw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9tb2RlbC0+c2V0Vmlk
ZW9FbGVtZW50KG51bGxwdHIpOwogICAgICAgICBtX21vZGVsID0gbnVsbHB0cjsKICAgICAgICAg
bV92aWRlb0VsZW1lbnQgPSBudWxscHRyOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
ID0gbmlsOwogICAgICAgICAKICAgICAgICAgW21fY29udHJvbGxlciBkaWRGaW5pc2hGdWxsc2Ny
ZWVuOnRoaXNdOwogICAgIH0pOwpAQCAtNDUwLDE4ICs0NTIsMjUgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShG
bG9hdFJlY3QgZnJhbWUpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgbV9mcmFt
ZSA9IGZyYW1lOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMs
IGZyYW1lXSB7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0g
W21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CisKKyAgICBtYWNoX3BvcnRfbmFtZV90IGZl
bmNlUG9ydCA9IFtbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF0gY3JlYXRlRmVuY2VQb3J0
XTsKKyAgICAKKyAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIGZyYW1lLCBmZW5j
ZVBvcnQsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJl
Z2luXTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CiAg
ICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9MYXllckZy
YW1lKGZyYW1lKTsKKyAgICAgICAgW1t2aWRlb0Z1bGxzY3JlZW5MYXllciBjb250ZXh0XSBzZXRG
ZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKKyAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgZmVuY2VQb3J0KTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsK
ICAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0
eSB2aWRlb0dyYXZpdHkpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgbV9ncmF2
aXR5ID0gdmlkZW9HcmF2aXR5OwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXMsIHZpZGVvR3Jhdml0eV0gewogICAgICAgICBpZiAobV9tb2RlbCkKQEAgLTUxMCwx
OSArNTE5LDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
dFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgbV9pbnRlcmZhY2UgPSBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCk7CiAgICAgbV9pbnRlcmZh
Y2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMpOwogICAgIG1faW50
ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKKyAgICBtX3ZpZGVvRnVs
bHNjcmVlblZpZXcgPSBhZG9wdE5TKFtbZ2V0VUlWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwog
ICAgIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdS
ZWYsIG1vZGVdIHsKICAgICAgICAgbV9tb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50OjpjcmVhdGUoKTsKICAgICAgICAgbV9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlKHRoaXMpOwogICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0VsZW1lbnQobV92
aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gW0NB
TGF5ZXIgbGF5ZXJdOwogICAgICAgICAKICAgICAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0
dXJlID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJblBpY3R1
cmUoKm1fdmlkZW9FbGVtZW50LmdldCgpKTsKICAgICAgICAgSW50UmVjdCB2aWRlb0VsZW1lbnRD
bGllbnRSZWN0ID0gbV92aWRlb0VsZW1lbnQtPmNsaWVudFJlY3QoKTsKICAgICAgICAgCiAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlz
LCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlXSB7Ci0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVu
KCptX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2
aWV3UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICAgICAgICAg
IG1faW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQo
KSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGlj
dHVyZUluUGljdHVyZSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQuaAppbmRleCA5ZTdkZjZmNzdiMGEzMGY2YmFmZmU0ZjdkNGYwNTVmMjdlMTk0Yzcz
Li4wNGEyZThhOTdhZjE5YjNiNzExMDE4ZTE5ZWQ5OTk0MzM5Yjg1NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaApAQCAtNDUsOCArNDUsOCBAQCBPQkpDX0NMQVNTIFVJVmlld0NvbnRy
b2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93OwogT0JKQ19DTEFTUyBVSVZpZXc7CiBPQkpDX0NM
QVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdlYkFWVmlkZW9MYXllcjsKLU9CSkNfQ0xBU1MgV2Vi
Q0FMYXllckhvc3RXcmFwcGVyOworT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKK09C
SkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllcjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBTdHJp
bmc7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJs
ZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lKSBvdmVycmlkZTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
c2V0dXBGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImLCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVj
dCwgVUlWaWV3ICosIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwg
Ym9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiwgY29uc3QgSW50UmVjdCYgaW5p
dGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZpbmFsUmVjdCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKCk7CkBA
IC0xMzMsOSArMTMzLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVy
Q29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxBVlBsYXllclZp
ZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9sbGVyOwotICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFdlYkFWVmlkZW9MYXllcj4gbV92aWRl
b0xheWVyQ29udGFpbmVyOwotICAgIFJldGFpblB0cjxXZWJDQUxheWVySG9zdFdyYXBwZXI+IG1f
bGF5ZXJIb3N0V3JhcHBlcjsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRyIH07CiAKQEAgLTE0
NCw2ICsxNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+
IG1fdmlld0NvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV9wYXJlbnRWaWV3Owog
ICAgIFJldGFpblB0cjxVSVdpbmRvdz4gbV9wYXJlbnRXaW5kb3c7CisgICAgUmV0YWluUHRyPFdl
YkFWUGxheWVyTGF5ZXJWaWV3PiBtX3BsYXllckxheWVyVmlldzsKICAgICBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBib29sIG1fYWxsb3dzUGljdHVy
ZUluUGljdHVyZVBsYXliYWNrIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA3NGIxYzE5OTUxMWM0OTYzYWRlMTczMjY0M2NmZmNmOTQxNDg2MWNlLi5jYjVkZTRj
ZTA2YjczYTZiOTJhMmFlNmMyNjgyYWEzNGQ1ZWY4MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC0zOSw2ICszOSw4IEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgogI2ltcG9ydCA8VUlLaXQv
VUlLaXQuaD4KKyNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTUwLDExICs1MiwxNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRp
b24pCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3Vu
ZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikK
IAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZpZXdDb250
cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQorU09GVF9MSU5L
X0NMQVNTKEFWS2l0LCBBVlBsYXllckxheWVyVmlldykKK1NPRlRfTElOS19DTEFTUyhBVktpdCwg
QVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KQogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
KFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQpAQCAtNzQsMTMg
KzgxLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogCiBAY2xh
c3MgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNv
bnRyb2xsZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPgotewor
QGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3
Q29udHJvbGxlckRlbGVnYXRlPiB7CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1
cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwogICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKl9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOwogfQogCi0tKHZvaWQp
cmVzZXRTdGF0ZTsKKy0gKHZvaWQpcmVzZXRTdGF0ZTsKIAogQHByb3BlcnR5IChyZXRhaW4pIEFW
UGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5OwogQHByb3BlcnR5IChhc3Np
Z24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBkZWxlZ2F0ZTsKQEAgLTE1MCw3ICsxNTYsOCBA
QCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKLS0odm9pZClyZXNldFN0YXRlIHsKKy0gKHZvaWQpcmVzZXRTdGF0ZQorewog
ICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKICAgICBzZWxmLm1heFRpbWUgPSAwOwogICAg
IHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwpAQCAtMTgxLDcgKzE4OCw4
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogICAgIHNlbGYuY3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKIH0KIAotLSAoQVZQbGF5ZXIq
KSBwbGF5ZXIgeworLSAoQVZQbGF5ZXIgKikgcGxheWVyCit7CiAgICAgcmV0dXJuIG5pbDsKIH0K
IApAQCAtNTY4LDEwMSArNTc2LDIwIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiBAaW1wbGVt
ZW50YXRpb24gV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbgogQGVuZAogCi0KLUBpbnRlcmZhY2Ug
V2ViQ0FMYXllckhvc3RXcmFwcGVyIDogQ0FMYXllcgotQHByb3BlcnR5IChhc3NpZ24pIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkNB
TGF5ZXJIb3N0V3JhcHBlciB7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IF92aWRlb1N1YmxheWVy
OwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQ
ZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVC
b3VuZHMpIG9iamVjdDpuaWxdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClz
ZXRWaWRlb1N1YmxheWVyOihDQUxheWVyKil2aWRlb1N1YmxheWVyCi17Ci0gICAgX3ZpZGVvU3Vi
bGF5ZXIgPSB2aWRlb1N1YmxheWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZpZGVvU3VibGF5
ZXJdOwotfQotCi0tIChDQUxheWVyKil2aWRlb1N1YmxheWVyCi17Ci0gICAgcmV0dXJuIF92aWRl
b1N1YmxheWVyLmdldCgpOwotfQotCi0tICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcwot
ewotICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYuYm91bmRzKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgW3N1cGVyIHNldEJvdW5kczpib3VuZHNdOwotCi0gICAgW192aWRl
b1N1YmxheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoYm91bmRzKSwg
Q0dSZWN0R2V0TWlkWShib3VuZHMpKV07Ci0KLSAgICBpZiAoIXNlbGYubW9kZWwpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEZsb2F0UmVjdCB2aWRlb0ZyYW1lID0gc2VsZi5tb2RlbC0+dmlkZW9M
YXllckZyYW1lKCk7Ci0gICAgRmxvYXRSZWN0IHRhcmdldEZyYW1lOwotICAgIHN3aXRjaCAoc2Vs
Zi5tb2RlbC0+dmlkZW9MYXllckdyYXZpdHkoKSkgewotICAgIGNhc2UgV2ViQ29yZTo6V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZToKLSAgICAgICAgdGFyZ2V0RnJh
bWUgPSBib3VuZHM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDoKLSAgICAgICAgdGFyZ2V0
RnJhbWUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9GcmFtZS5z
aXplKCkuYXNwZWN0UmF0aW8oKSwgYm91bmRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
RmlsbDoKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9B
cm91bmRSZWN0KHZpZGVvRnJhbWUuc2l6ZSgpLmFzcGVjdFJhdGlvKCksIGJvdW5kcyk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybSA9IENBVHJhbnNm
b3JtM0RNYWtlU2NhbGUodGFyZ2V0RnJhbWUud2lkdGgoKSAvIHZpZGVvRnJhbWUud2lkdGgoKSwg
dGFyZ2V0RnJhbWUuaGVpZ2h0KCkgLyB2aWRlb0ZyYW1lLmhlaWdodCgpLCAxKTsKLSAgICBbX3Zp
ZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLQotICAgIFtOU09i
amVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgb2JqZWN0Om5pbF07Ci0gICAgW3NlbGYgcGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91bmRzKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRl
bGF5OltDQVRyYW5zYWN0aW9uIGFuaW1hdGlvbkR1cmF0aW9uXSArIDAuMV07Ci19Ci0KLS0gKHZv
aWQpcmVzb2x2ZUJvdW5kcwotewotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1S
ZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykg
b2JqZWN0Om5pbF07Ci0gICAgaWYgKCFzZWxmLm1vZGVsKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9u
RHVyYXRpb246MF07Ci0KLSAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06
Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICBzZWxmLm1vZGVsLT5zZXRWaWRlb0xheWVyRnJh
bWUoW3NlbGYgYm91bmRzXSk7Ci0gICAgCi0gICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKLX0K
LUBlbmQKLQotQGludGVyZmFjZSBXZWJBVlZpZGVvTGF5ZXIgOiBDQUxheWVyIDxBVlZpZGVvTGF5
ZXI+Ci0rKFdlYkFWVmlkZW9MYXllciAqKXZpZGVvTGF5ZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21p
YykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCBnZXR0ZXIgPSBpc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFkeUZvckRpc3BsYXk7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dSZWN0IHZpZGVvUmVjdDsKLS0gKHZvaWQpc2V0UGxh
eWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29u
dHJvbGxlcjsKLS0gKHZvaWQpc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVy
ICopcGxheWVyQ29udHJvbGxlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIENBTGF5
ZXIqIHZpZGVvU3VibGF5ZXI7CitAaW50ZXJmYWNlIFdlYkFWUGxheWVyTGF5ZXIgOiBDQUxheWVy
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0cmluZyAqdmlkZW9HcmF2aXR5Owor
QHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFk
eUZvckRpc3BsYXk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBBVlBsYXllckNvbnRy
b2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBD
QUxheWVyICp2aWRlb1N1YmxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxh
YmxlKSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKK0Bwcm9wZXJ0eSBDR1Np
emUgdmlkZW9EaW1lbnNpb25zOworQHByb3BlcnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFt
ZTsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkFWVmlkZW9MYXllcgoteworQGltcGxlbWVu
dGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIgewogICAgIFJldGFpblB0cjxXZWJBVlBsYXllckNvbnRy
b2xsZXI+IF9hdlBsYXllckNvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0Nv
bnRyb2xsZXI+IF9hdlBsYXllclZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxDQUxheWVy
PiBfdmlkZW9TdWJsYXllcjsKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5IF92aWRlb0xheWVyR3Jh
dml0eTsKLX0KLQotKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyCi17Ci0gICAgcmV0dXJu
IFtbW1dlYkFWVmlkZW9MYXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gX3ZpZGVvR3Jhdml0eTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQK
QEAgLTY3MCwyNiArNTk3LDMxIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikgewogICAgICAgICBbc2VsZiBzZXRNYXNrc1Rv
Qm91bmRzOllFU107Ci0gICAgICAgIFtzZWxmIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9M
YXllckdyYXZpdHlSZXNpemVBc3BlY3RdOworICAgICAgICBfdmlkZW9HcmF2aXR5ID0gZ2V0QVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsK
IH0KIAorLSAodm9pZClkZWFsbG9jCit7CisgICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVy
Zm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91
bmRzKSBvYmplY3Q6bmlsXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEFWUGxheWVy
Q29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIKK3sKKyAgICByZXR1cm4gKEFWUGxheWVyQ29u
dHJvbGxlciAqKV9hdlBsYXllckNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKIC0gKHZvaWQpc2V0UGxh
eWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcgogewog
ICAgIEFTU0VSVCghcGxheWVyQ29udHJvbGxlciB8fCBbcGxheWVyQ29udHJvbGxlciBpc0tpbmRP
ZkNsYXNzOltXZWJBVlBsYXllckNvbnRyb2xsZXIgY2xhc3NdXSk7CiAgICAgX2F2UGxheWVyQ29u
dHJvbGxlciA9IChXZWJBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOwogfQog
Ci0tICh2b2lkKXNldFBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVy
ICopcGxheWVyVmlld0NvbnRyb2xsZXIKLXsKLSAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlciA9
IHBsYXllclZpZXdDb250cm9sbGVyOwotfQotCiAtICh2b2lkKXNldFZpZGVvU3VibGF5ZXI6KENB
TGF5ZXIgKil2aWRlb1N1YmxheWVyCiB7CiAgICAgX3ZpZGVvU3VibGF5ZXIgPSB2aWRlb1N1Ymxh
eWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZpZGVvU3VibGF5ZXJdOwogfQogCiAtIChDQUxh
eWVyKil2aWRlb1N1YmxheWVyCkBAIC02OTksMjcgKzYzMSw3OSBAQCBzdGF0aWMgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4
aXRGdWxsUwogCiAtICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcwogeworICAgIGlmIChD
R1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYuYm91bmRzKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAogICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91bmRzXTsKKyAgICAKKyAgICBpZiAoW192aWRl
b1N1YmxheWVyIHN1cGVybGF5ZXJdICE9IHNlbGYpCisgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChbX3ZpZGVvU3VibGF5ZXIgc3VwZXJsYXllcl0gPT0gc2VsZikgewotICAgICAgICBbX3ZpZGVv
U3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBD
R1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKLSAgICAgICAgW192aWRlb1N1YmxheWVyIHNldEJvdW5k
czpib3VuZHNdOwotICAgIH0KKyAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2lu
dE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBDR1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKKyAg
ICAKKyAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRmxvYXRSZWN0IHNvdXJjZVZpZGVvRnJhbWU7CisgICAgRmxvYXRSZWN0IHRh
cmdldFZpZGVvRnJhbWU7CisgICAgZmxvYXQgdmlkZW9Bc3BlY3RSYXRpbyA9IHNlbGYudmlkZW9E
aW1lbnNpb25zLndpZHRoIC8gc2VsZi52aWRlb0RpbWVuc2lvbnMuaGVpZ2h0OworICAgIAorICAg
IGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSgpIGlzRXF1YWxUb1N0cmluZzpzZWxm
LnZpZGVvR3Jhdml0eV0pIHsKKyAgICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNlbGYubW9kZWxW
aWRlb0xheWVyRnJhbWU7CisgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsK
KyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkgaXNF
cXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgeworICAgICAgICBzb3VyY2VWaWRlb0Zy
YW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0
aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1l
ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8s
IHNlbGYuYm91bmRzKTsKKyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKKyAg
ICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3Vu
ZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CisgICAg
ICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIHNvdXJjZVZp
ZGVvRnJhbWUud2lkdGgoKSwgc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7CisgICAgICAgIFtf
YXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9k
ZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RS
ZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5k
cyk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgVUlW
aWV3ICp2aWV3ID0gW192aWRlb1N1YmxheWVyIGRlbGVnYXRlXTsKKyAgICBDR0FmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSh0YXJnZXRWaWRlb0Zy
YW1lLndpZHRoKCkgLyBzb3VyY2VWaWRlb0ZyYW1lLndpZHRoKCksIHRhcmdldFZpZGVvRnJhbWUu
aGVpZ2h0KCkgLyBzb3VyY2VWaWRlb0ZyYW1lLmhlaWdodCgpKTsKKyAgICBbdmlldyBzZXRUcmFu
c2Zvcm06dHJhbnNmb3JtXTsKKyAgICAKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJm
b3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3Vu
ZHMpIG9iamVjdDpuaWxdOworICAgIAorICAgIGlmICghQ0dBZmZpbmVUcmFuc2Zvcm1FcXVhbFRv
VHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIHRyYW5zZm9ybSkpCisgICAgICAg
IFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgd2l0aE9iamVj
dDpuaWwgYWZ0ZXJEZWxheTpbQ0FUcmFuc2FjdGlvbiBhbmltYXRpb25EdXJhdGlvbl0gKyAwLjFd
OworfQorCistICh2b2lkKXJlc29sdmVCb3VuZHMKK3sKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJl
dmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJl
c29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOworICAgIGlmICghW19hdlBsYXllckNvbnRyb2xsZXIg
ZGVsZWdhdGVdKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKFtfdmlkZW9TdWJsYXll
ciBzdXBlcmxheWVyXSAhPSBzZWxmKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgW0NBVHJh
bnNhY3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0aW9u
OjBdOworICAgIAorICAgIFsoVUlWaWV3ICopW192aWRlb1N1YmxheWVyIGRlbGVnYXRlXSBzZXRU
cmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV07CisgICAgc2VsZi5tb2RlbFZpZGVv
TGF5ZXJGcmFtZSA9IFtzZWxmIGJvdW5kc107CisgICAgW19hdlBsYXllckNvbnRyb2xsZXIgZGVs
ZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7Cisg
ICAgCisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIAotLSAodm9pZClzZXRWaWRlb0xh
eWVyR3Jhdml0eTooQVZWaWRlb0xheWVyR3Jhdml0eSl2aWRlb0xheWVyR3Jhdml0eQorLSAodm9p
ZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0gICAgX3ZpZGVv
TGF5ZXJHcmF2aXR5ID0gdmlkZW9MYXllckdyYXZpdHk7CisgICAgX3ZpZGVvR3Jhdml0eSA9IHZp
ZGVvR3Jhdml0eTsKICAgICAKICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRl
XSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBpZiAodmlkZW9MYXllckdyYXZpdHkg
PT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSkKKyAgICBpZiAodmlkZW9HcmF2aXR5ID09IGdl
dEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKSkKICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemU7Ci0gICAgaWYgKHZp
ZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3QpCisgICAg
aWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkp
CiAgICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6Vmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGVsc2UgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09
IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgIGVsc2UgaWYgKHZpZGVv
R3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpKQogICAg
ICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTcyNywyNCArNzExLDE2MiBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwogICAg
IFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckdyYXZpdHkoZ3Jh
dml0eSk7CiB9CiAKLS0gKEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdyYXZpdHkKKy0g
KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0gICAgcmV0dXJuIF92aWRlb0xheWVyR3Jhdml0
eTsKKyAgICByZXR1cm4gX3ZpZGVvR3Jhdml0eS5nZXQoKTsKIH0KIAotLSAodm9pZCllbnRlclBJ
UE1vZGVSZWRpcmVjdGluZ1ZpZGVvVG9MYXllcjooQ0FMYXllciAqKWxheWVyCistIChDR1JlY3Qp
dmlkZW9SZWN0CiB7Ci0gICAgW192aWRlb1N1YmxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsK
LSAgICBbbGF5ZXIgYWRkU3VibGF5ZXI6X3ZpZGVvU3VibGF5ZXIuZ2V0KCldOworICAgIGZsb2F0
IHZpZGVvQXNwZWN0UmF0aW8gPSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlk
ZW9EaW1lbnNpb25zLmhlaWdodDsKKyAgICAKKyAgICBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3QoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAg
ICAgICByZXR1cm4gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNw
ZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlS
ZXNpemVBc3BlY3RGaWxsKCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKKyAg
ICAgICAgcmV0dXJuIHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9B
c3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOworCisgICAgcmV0dXJuIHNlbGYuYm91bmRzOworfQor
CisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0Cit7CisgICAg
cmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAInZpZGVvRGltZW5zaW9ucyIsIEAidmlkZW9H
cmF2aXR5IiwgbmlsXTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYkFWUGljdHVyZUluUGlj
dHVyZVBsYXllckxheWVyVmlldyA6IEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldwor
QGVuZAorCitzdGF0aWMgQ0FMYXllciogV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3X2xheWVyQ2xhc3MoaWQsIFNFTCkKK3sKKyAgICByZXR1cm4gW1dlYkFWUGxheWVyTGF5ZXIg
Y2xhc3NdOwogfQogCi0tICh2b2lkKWxlYXZlUElQTW9kZQorc3RhdGljIENsYXNzIGdldFdlYkFW
UGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld0NsYXNzKCkKIHsKLSAgICBbX3ZpZGVvU3Vi
bGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOl92aWRl
b1N1YmxheWVyLmdldCgpXTsKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0
QVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSwgIldlYkFWUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyIsIDApOworICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQ
YWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xhc3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xh
c3MoIldlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIpOworICAgICAgICBjbGFz
c19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0b3IobGF5ZXJDbGFzcyksIChJTVApV2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MsICJAQDoiKTsKKyAgICB9
KTsKKyAgICAKKyAgICByZXR1cm4gdGhlQ2xhc3M7CiB9CisKK0BpbnRlcmZhY2UgV2ViQVZQbGF5
ZXJMYXllclZpZXcgOiBBVlBsYXllckxheWVyVmlldworQHByb3BlcnR5IChyZXRhaW4pIFVJVmll
dyogdmlkZW9WaWV3OwogQGVuZAogCitzdGF0aWMgQ0FMYXllciogV2ViQVZQbGF5ZXJMYXllclZp
ZXdfbGF5ZXJDbGFzcyhpZCwgU0VMKQoreworICAgIHJldHVybiBbV2ViQVZQbGF5ZXJMYXllciBj
bGFzc107Cit9CisKK3N0YXRpYyBBVlBsYXllckNvbnRyb2xsZXIqIFdlYkFWUGxheWVyTGF5ZXJW
aWV3X3BsYXllckNvbnRyb2xsZXIoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVy
VmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBs
YXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJd
OworICAgIHJldHVybiBbd2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXTsKK30KKwor
c3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlcihpZCBh
U2VsZiwgU0VMLCBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIpCit7CisgICAg
QVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGxh
eWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJM
YXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIFt3ZWJBVlBsYXllckxheWVyIHNldFBsYXllckNv
bnRyb2xsZXI6IHBsYXllckNvbnRyb2xsZXJdOworfQorCitzdGF0aWMgVUlWaWV3KiBXZWJBVlBs
YXllckxheWVyVmlld192aWRlb1ZpZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxh
eWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJB
VlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5
ZXJdOworICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1
YmxheWVyXTsKKyAgICBpZiAoIXZpZGVvTGF5ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
QVNTRVJUKFtbdmlkZW9MYXllciBkZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpnZXRVSVZpZXdDbGFz
cygpXSk7CisgICAgcmV0dXJuIChVSVZpZXcgKilbdmlkZW9MYXllciBkZWxlZ2F0ZV07Cit9CisK
K3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFZpZGVvVmlldyhpZCBhU2VsZiwg
U0VMLCBVSVZpZXcgKnZpZGVvVmlldykKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVy
TGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgV2ViQVZQbGF5ZXJMYXllciAqd2ViQVZQbGF5ZXJMYXll
ciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07Cisg
ICAgW3dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9TdWJsYXllcjpbdmlkZW9WaWV3IGxheWVyXV07
Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVv
VG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7CisgICAg
V2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIEFWUGlj
dHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXllclZpZXcg
cGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisKKyAgICBXZWJBVlBsYXllckxheWVy
ICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5
ZXJMYXllcl07CisgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQ
bGF5ZXJMYXllciAqKVtwaXBWaWV3IHBsYXllckxheWVyXTsKKyAgICBbcGxheWVyTGF5ZXIgc2V0
VmlkZW9HcmF2aXR5OmdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKV07CisgICAg
W3BpcFBsYXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6cGxheWVyTGF5ZXIudmlkZW9TdWJsYXll
cl07CisgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpwbGF5ZXJMYXllci52
aWRlb0RpbWVuc2lvbnNdOworICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6cGxh
eWVyTGF5ZXIudmlkZW9HcmF2aXR5XTsKKyAgICBbcGlwUGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRl
b0xheWVyRnJhbWU6cGxheWVyTGF5ZXIubW9kZWxWaWRlb0xheWVyRnJhbWVdOworICAgIFtwaXBQ
bGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOnBsYXllckxheWVyLnBsYXllckNvbnRyb2xs
ZXJdOworICAgIFtwaXBWaWV3IGFkZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107
Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0b3BSb3V0aW5nVmlkZW9U
b1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBX
ZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXll
ckxheWVyVmlldyBhZGRTdWJ2aWV3OnBsYXllckxheWVyVmlldy52aWRlb1ZpZXddOworfQorCitz
dGF0aWMgQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpXZWJBVlBsYXllckxheWVy
Vmlld19waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7Cisg
ICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdl
YkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXll
clZpZXcgdmFsdWVGb3JLZXk6QCJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyJdOwor
ICAgIGlmICghcGlwVmlldykgeworICAgICAgICBwaXBWaWV3ID0gW1tnZXRXZWJBVlBpY3R1cmVJ
blBpY3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm9dOworICAgICAgICBbcGxheWVyTGF5ZXJWaWV3IHNldFZhbHVlOnBpcFZpZXcgZm9yS2V5
OkAiX3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXciXTsKKyAgICB9CisgICAgcmV0dXJu
IHBpcFZpZXc7Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X2RlYWxsb2Mo
aWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJW
aWV3ID0gYVNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldz4gcGlwVmlldyA9IGFkb3B0TlMoW3BsYXllckxheWVyVmlldyB2YWx1ZUZvcktleTpA
Il9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Il0pOworICAgIFtwbGF5ZXJMYXllclZp
ZXcgc2V0VmFsdWU6bmlsIGZvcktleTpAIl9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
Il07CisgICAgb2JqY19zdXBlciBzdXBlckNsYXNzIHsgcGxheWVyTGF5ZXJWaWV3LCBnZXRBVlBs
YXllckxheWVyVmlld0NsYXNzKCkgfTsKKyAgICBhdXRvIHN1cGVyX2RlYWxsb2MgPSByZWludGVy
cHJldF9jYXN0PHZvaWQoKikob2JqY19zdXBlciosIFNFTCk+KG9iamNfbXNnU2VuZFN1cGVyKTsK
KyAgICBzdXBlcl9kZWFsbG9jKCZzdXBlckNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYykpOworfQor
CisjcHJhZ21hIG1hcmsgLSBNZXRob2RzCisKK3N0YXRpYyBDbGFzcyBnZXRXZWJBVlBsYXllckxh
eWVyVmlld0NsYXNzKCkKK3sKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0
QVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZpZXciLCAwKTsKKyAg
ICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYyksIChJTVAp
V2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYywgInZAOiIpOworICAgICAgICBjbGFzc19hZGRN
ZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiksIChJTVApV2Vi
QVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsKKyAgICAgICAg
Y2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IocGxheWVyQ29udHJvbGxlciksIChJ
TVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlciwgIkBAOiIpOworICAgICAg
ICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRWaWRlb1ZpZXc6KSwgKElN
UClXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1ZpZXcsICJ2QDpAIik7CisgICAgICAgIGNs
YXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHZpZGVvVmlldyksIChJTVApV2ViQVZQ
bGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3LCAiQEA6Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhv
ZCh0aGVDbGFzcywgQHNlbGVjdG9yKHN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zdGFydFJvdXRpbmdW
aWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywgInZAOiIpOworICAgICAgICBj
bGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzdG9wUm91dGluZ1ZpZGVvVG9QaWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19z
dG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3LCAidkA6Iik7
CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJ
blBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJAQDoiKTsKKyAgICAgICAgCisgICAgICAgIGNsYXNz
X2FkZEl2YXIodGhlQ2xhc3MsICJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIsIHNp
emVvZihXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKiksIGxvZzIoc2l6ZW9m
KFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKSksICJAIik7CisgICAgICAg
IAorICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xh
c3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xhc3MoIldlYkFWUGxheWVyTGF5ZXJWaWV3Iik7
CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZChtZXRhQ2xhc3MsIEBzZWxlY3RvcihsYXllckNsYXNz
KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzLCAiQEA6Iik7CisgICAgfSk7
CisgICAgcmV0dXJuIHRoZUNsYXNzOworfQorCiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogICAgIDogbV9wbGF5ZXJD
b250cm9sbGVyKGFkb3B0TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkK
IHsKQEAgLTgxOSw2ICs5NDEsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdAogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBo
YXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKKyAgICBXZWJBVlBsYXllckxh
eWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3
IHBsYXllckxheWVyXTsKKworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6Q0dT
aXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRIYXNF
bmFibGVkVmlkZW86aGFzVmlkZW9dOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q29udGVu
dERpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiB9CkBAIC04ODMsMTQgKzEw
MDgsMTQgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJu
YWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmEKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4
dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZSA9IGxvY2FsaXplZERldmlj
ZU5hbWU7CiAgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVy
bmFsUGxheWJhY2tUeXBlOwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0Fj
dGl2ZSA9IGVuYWJsZWQ7Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKSBzZXRIaWRk
ZW46ZW5hYmxlZF07CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjplbmFibGVkXTsK
IH0KIAogQGludGVyZmFjZSBVSVdpbmRvdyAoKQotLShCT09MKV9pc0hvc3RlZEluQW5vdGhlclBy
b2Nlc3M7CistIChCT09MKV9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3M7CiBAZW5kCiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0Zm9y
bUxheWVyJiB2aWRlb0xheWVyLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwg
VUlWaWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spCit2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2
aWRlb1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxSZWN0LCBVSVZpZXcqIHBh
cmVudFZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
LCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaykKIHsKICAgICBBU1NFUlQobW9k
ZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAg
ICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1
cEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7CkBAIC04OTksNyArMTAyNCw2IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0Zm9ybUxheWVy
JiB2aWRlb0xheWVyCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNh
Y3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBtX3ZpZGVvTGF5ZXIgPSAmdmlkZW9M
YXllcjsKICAgICBtX21vZGUgPSBtb2RlOwogICAgIG1fcGFyZW50VmlldyA9IHBhcmVudFZpZXc7
CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBwYXJlbnRWaWV3LndpbmRvdzsKQEAgLTkxMyw1MSArMTAz
Nyw0NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxz
Y3JlZW4oUGxhdGZvcm1MYXllciYgdmlkZW9MYXllcgogICAgICAgICBbbV93aW5kb3cgbWFrZUtl
eUFuZFZpc2libGVdOwogICAgIH0KIAotICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVy
bGF5ZXJdOworICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdlYkFWUGxheWVy
TGF5ZXJWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFttX3BsYXllckxheWVyVmlldyBz
ZXRIaWRkZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsK
KyAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xh
c3MoKSBjbGVhckNvbG9yXV07CisgICAgCisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldFZpZGVv
VmlldzomdmlkZW9WaWV3XTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgYWRkU3Vidmlldzomdmlk
ZW9WaWV3XTsKIAotICAgIG1fbGF5ZXJIb3N0V3JhcHBlciA9IGFkb3B0TlMoW1tXZWJDQUxheWVy
SG9zdFdyYXBwZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbbV9sYXllckhvc3RXcmFwcGVyIHNldE1v
ZGVsOm1fdmlkZW9GdWxsc2NyZWVuTW9kZWxdOwotICAgIFttX2xheWVySG9zdFdyYXBwZXIgc2V0
VmlkZW9TdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOworICAgIFdlYkFWUGxheWVyTGF5ZXIg
KnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxh
eWVyTGF5ZXJdOwogCi0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFWVmlkZW9MYXll
ciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhpZGRlbjpbbV9w
bGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAgIFttX3ZpZGVv
TGF5ZXJDb250YWluZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBwZXIuZ2V0KCld
OworICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdodCgpKV07CisgICAgW3Bs
YXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250cm9sbGVyIGNvbnRlbnRE
aW1lbnNpb25zXV07CiAKLSAgICBDR1NpemUgdmlkZW9TaXplID0gW21fcGxheWVyQ29udHJvbGxl
ciBjb250ZW50RGltZW5zaW9uc107Ci0gICAgQ0dSZWN0IHZpZGVvUmVjdCA9IENHUmVjdE1ha2Uo
MCwgMCwgdmlkZW9TaXplLndpZHRoLCB2aWRlb1NpemUuaGVpZ2h0KTsKLSAgICBbbV92aWRlb0xh
eWVyQ29udGFpbmVyIHNldFZpZGVvUmVjdDp2aWRlb1JlY3RdOwotICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0xh
eWVyRnJhbWUodmlkZW9SZWN0KTsKLQotICAgIC8vIFRoaXMgbWV0aG9kIGhhcyBiZWVuIGRlcHJl
Y2F0ZWQgc28gaWdub3JlIHRoZSB3YXJuaW5nIHVudGlsIHdlIHBvcnQgb3VyIGNvZGUgdG8gdGhl
IG5ldyBBUEkuCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlcklu
c3RhbmNlKCkgaW5pdFdpdGhWaWRlb0xheWVyOm1fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKV0p
OwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIG1fcGxheWVyVmlld0NvbnRyb2xs
ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRX
aXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAKICAgICBbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwogICAgIFtt
X3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJv
bGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKICAgICBbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s6bV9hbGxv
d3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwogCi0gICAgW21fdmlkZW9MYXllckNvbnRhaW5l
ciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpXTsK
LQogICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdDb250cm9sbGVy
IGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CiAg
ICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKLSAgICAgICAgW3BhcmVudFZpZXcud2luZG93
IGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOworICAgICAgICBbcGFy
ZW50VmlldyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKIAotICAg
IFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW3BhcmVudFZpZXcgY29udmVy
dFJlY3Q6aW5pdGlhbFJlY3QgdG9WaWV3Om5pbF07CisgICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10uZnJhbWUgPSBbcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbml0aWFsUmVjdCB0b1Zp
ZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKIAogICAgIFtbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JD
bGFzcygpIGNsZWFyQ29sb3JdXTsKKyAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10g
c2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0b21NYXJn
aW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CisKICAgICBbW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOwogICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07CiAKICAgICBbQ0FUcmFuc2Fj
dGlvbiBjb21taXRdOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAg
ICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2NyZWVuKCk7Cisg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRo
aXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJv
bmdUaGlzLCB0aGlzXSB7CisgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikK
KyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3Jl
ZW4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZW50ZXJGdWxsc2NyZWVuKCkKQEAgLTk2OCw3ICsxMDg3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBtX2V4aXRSZXF1
ZXN0ZWQgPSBmYWxzZTsKICAgICBtX2VudGVyUmVxdWVzdGVkID0gdHJ1ZTsKIAotICAgIFttX3Zp
ZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xvckNsYXNzKCkg
YmxhY2tDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3Jv
dW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNrQ29sb3JdXTsKICAgICBpZiAobW9kZSgp
ID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBp
Y3R1cmUpCiAgICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIGVsc2UgaWYgKG1v
ZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCkKQEAgLTEwMTIsMTMgKzExMzEsMTIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmkKICAgICAK
ICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
eGl0RnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKQot
ICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZp
ZXcgY29udmVydFJlY3Q6ZmluYWxSZWN0IHRvVmlldzpuaWxdOwotICAgIGVsc2UKLSAgICAgICAg
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBmaW5hbFJlY3Q7CisgICAgCisg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNv
bnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10u
c3VwZXJ2aWV3XTsKIAotICAgIGlmIChbbV92aWRlb0xheWVyQ29udGFpbmVyIHZpZGVvTGF5ZXJH
cmF2aXR5XSAhPSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQotICAgICAgICBbbV92
aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9MYXllckdyYXZp
dHlSZXNpemVBc3BlY3RdOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdl
YkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIGlm
IChbcGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSAhPSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0KCkpCisgICAgICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6Z2V0QVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwogCiAgICAgaWYgKGlzTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSkgewpAQCAt
MTAzNywyMiArMTE1NSwyNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaQogCiAgICAgICAgICAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOwotICAgICAgICAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBz
ZXRCYWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXSBDR0NvbG9y
XV07CisgICAgICAgICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltn
ZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBj
bGVhckNvbG9yXV07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAg
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICAgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAgICAgICAgICAg
ICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7Cisg
ICAgICAgICAgICB9KTsKICAgICAgICAgfV07CiAgICAgfTsKIH0KIAogQGludGVyZmFjZSBVSUFw
cGxpY2F0aW9uICgpCi0tKHZvaWQpX3NldFN0YXR1c0Jhck9yaWVudGF0aW9uOihVSUludGVyZmFj
ZU9yaWVudGF0aW9uKW87CistICh2b2lkKV9zZXRTdGF0dXNCYXJPcmllbnRhdGlvbjooVUlJbnRl
cmZhY2VPcmllbnRhdGlvbilvOwogQGVuZAogCiBAaW50ZXJmYWNlIFVJV2luZG93ICgpCi0tKFVJ
SW50ZXJmYWNlT3JpZW50YXRpb24paW50ZXJmYWNlT3JpZW50YXRpb247CistIChVSUludGVyZmFj
ZU9yaWVudGF0aW9uKWludGVyZmFjZU9yaWVudGF0aW9uOwogQGVuZAogCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCkBAIC0xMDgwLDE2
ICsxMjAwLDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFu
dXBGdWxsc2NyZWVuKCkKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikKICAgICAgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVyXTsKICAgICAK
LSAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbV92aWRlb0xh
eWVyQ29udGFpbmVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29u
dGFpbmVyIHNldFBsYXllclZpZXdDb250cm9sbGVyOm5pbF07CisgICAgW21fcGxheWVyTGF5ZXJW
aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBy
ZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAgIFttX2xheWVySG9zdFdyYXBwZXIgc2V0TW9kZWw6
bnVsbHB0cl07Ci0KLSAgICBtX2xheWVySG9zdFdyYXBwZXIgPSBuaWw7Ci0gICAgbV92aWRlb0xh
eWVyID0gbmlsOwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKKyAgICBtX3BsYXll
ckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOwogICAg
IG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwpA
QCAtMTEzNSw3ICsxMjQ5LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAgICBMT0coRnVs
bHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0
dXJuVG9JbmxpbmUoJXApIC0gdmlzaWJsZSglcykiLCB0aGlzLCBib29sU3RyaW5nKHZpc2libGUp
KTsKICAgICBpZiAobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjaykgewogICAgICAgICAKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNv
bnZlcnRSZWN0OmlubGluZVJlY3QgdG9WaWV3Om5pbF07CisgICAgICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVS
ZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCiAg
ICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEY6Om1vdmUobV9w
cmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7CiAgICAgICAgIGNhbGxiYWNrKHZpc2libGUpOwpAQCAt
MTIwNiw3ICsxMzIwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgbV9leGl0Q29tcGxldGVkID0gdHJ1ZTsK
IAotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlD
b2xvckNsYXNzKCkgY2xlYXJDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmll
dyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRV
SUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAKICAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5o
CmluZGV4IDcyOTE0ZGJmMjMxNTFjNGFlYzBhNmNmZmFlYTE1NzgyOGZmY2YxOWEuLjNjNTVhYTNi
MWMzNzk1NWZhMmZmMGRkZjVlYjgxMTljNzBhM2QyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC00OCwxMCAr
NDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCB2aWRlb0xheWVyRnJhbWUoKSBjb25zdCA9IDA7CiAgICAgZW51bSBWaWRlb0dyYXZpdHkg
eyBWaWRlb0dyYXZpdHlSZXNpemUsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0RmlsbCB9OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jh
dml0eShWaWRlb0dyYXZpdHkpID0gMDsKLSAgICB2aXJ0dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xh
eWVyR3Jhdml0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRp
YU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCA2OWM4ZjAx
YjhjM2YyZGU2YmIyMGU1Mjg5NmI0MjA0Zjc2MWRkNDY5Li4xYWEzY2U1YmJjOTA4Y2NkYTQ0YTNk
MjJiNDQyYTIwMmE3NmJlMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApA
QCAtNzIsOSArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdy
YXZpdHkoVmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90
IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VsZWN0
TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggOWM4OTVhYmYyM2NmZjQyMjAwZjYzNjhlNzZlZThmN2E0
MjE1NjEwZS4uYjg1MmU5ZmUwODYyMjg5NjQ4NmU3NzRiM2VhMDQ4NjRlNTNlNjI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMjU0LDExICsyNTQsNiBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJhbWUo
RmxvYXRSZWN0IHJlY3QpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShyZWN0KTsKIH0KIAotRmxvYXRSZWN0IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Ojp2aWRlb0xheWVyRnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ZpZGVv
RnJhbWU7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkg
Z3Jhdml0eSkKIHsKICAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvR3Jhdml0eSA9
IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7CkBAIC0yNzQsMjEgKzI2OSw2
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlCiAgICAgbV92aWRlb0VsZW1lbnQtPnNldFZpZGVv
RnVsbHNjcmVlbkdyYXZpdHkodmlkZW9HcmF2aXR5KTsKIH0KIAotV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWw6OlZpZGVvR3Jhdml0eSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdAotewotICAgIHN3aXRjaCAobV92aWRlb0VsZW1lbnQt
PnZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlZpZGVv
R3Jhdml0eVJlc2l6ZToKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6ZTsKLSAgICBj
YXNlIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q6Ci0gICAgICAgIHJldHVy
biBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6VmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0RmlsbDoKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGw7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFZpZGVvR3Jhdml0eVJlc2l6ZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBzZWxlY3RlZEF1
ZGlvSW5kZXgpCiB7CiAgICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKaW5kZXgg
N2NiYjA3YjY2M2RkZjEzNDE0MTdlZmJmZDU0Y2IwMzAzZmE2NGRlYi4uY2M3MTg5Yzc0NGUwOWVj
MGFkMDMzYjVhZjc1OTRlMGRkNjFkNzdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NvY29hL0FWS2l0U1BJLmgKQEAgLTM0LDkgKzM0LDEyIEBACiAjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKIAogI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1Xb2JqYy1wcm9wZXJ0eS1uby1hdHRyaWJ1dGUiCisjaW1wb3J0IDxBVktpdC9BVlBsYXll
ckxheWVyVmlldy5oPgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2ltcG9ydCA8QVZL
aXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVktpdC9BVlBs
YXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHkuaD4KLSNpbXBvcnQgPEFWS2l0L0FWVmlkZW9M
YXllci5oPgogCiAjZWxzZQogCkBAIC01OCwxNyArNjEsMTcgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKIEBwcm9w
ZXJ0eSAoTlNfTk9OQVRPTUlDX0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNvbnRyb2xsZXJT
dGF0dXMgc3RhdHVzOwogQGVuZAogCi1AcHJvdG9jb2wgQVZWaWRlb0xheWVyCi10eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBBVlZpZGVvTGF5ZXJHcmF2aXR5KSB7Ci0gICAgQVZWaWRlb0xheWVy
R3Jhdml0eUludmFsaWQgPSAwLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3Qg
PSAxLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsID0gMiwKLSAgICBB
VlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplID0gMywKLX07Ci0tICh2b2lkKXNldFBsYXllckNvbnRy
b2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBDR1JlY3QgdmlkZW9SZWN0OwotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBnZXR0ZXI9aXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5
OworQGNsYXNzIEFWUGxheWVyTGF5ZXI7CisKK0BpbnRlcmZhY2UgQVZQaWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyOworQGVuZAorCitAaW50ZXJmYWNlIEFWUGxheWVy
TGF5ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWUGxh
eWVyTGF5ZXIgKnBsYXllckxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBB
VlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpY3R1cmVJblBpY3R1cmVQbGF5ZXJM
YXllclZpZXc7CistICh2b2lkKXN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3OworLSAodm9pZClzdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3OwogQGVuZAogCiBAcHJvdG9jb2wgQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ckRlbGVnYXRlIDxOU09iamVjdD4KQEAgLTg1LDE1ICs4OCwxNSBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb24pIHsK
IEBlbmQKIAogQGludGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9sbGVyIChEZXRhaWxzKQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoVmlkZW9MYXllcjooQ0FMYXllciA8QVZWaWRlb0xheWVyPiAq
KXZpZGVvTGF5ZXI7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6KEFW
UGxheWVyTGF5ZXJWaWV3ICopcGxheWVyTGF5ZXJWaWV3OwogLSAodm9pZCllbnRlckZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAKIC0gKEJPT0wp
aXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CiAtICh2b2lkKXN0YXJ0UGljdHVyZUluUGljdHVy
ZTsKIC0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7Ci0tICh2b2lkKXNldEFsbG93c1BpY3R1
cmVJblBpY3R1cmVQbGF5YmFjazooQk9PTClhbGxvdzsKIAorQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHN0cm9uZykgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWspIGlkIDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+
IGRlbGVnYXRlOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMDhiZjNiY2U0
M2JlZDFiNzkxNDQ5NzRkMGQ4ODJjMTQ3ZGZkYmY1Ni4uZmEzMWVlZDQ0ZTMwNmM0MzVmOGY4MTE0
OTM3YTk0MzU3MGVlNDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC01MywxMCAr
NTMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1fbWFuYWdlciA9IG51
bGxwdHI7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVySG9zdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXJIb3N0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRMYXllckhvc3QoUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+JiYgbGF5ZXJIb3N0KSB7IG1fbGF5ZXJIb3N0ID0gV1RGOjptb3ZlKGxheWVy
SG9zdCk7IH0KLQotICAgIHZvaWQgc2V0SW5pdGlhbFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpG
bG9hdFJlY3QgZnJhbWUpIHsgbV92aWRlb0xheWVyRnJhbWUgPSBmcmFtZTsgfQorICAgIFVJVmll
dyAqbGF5ZXJIb3N0VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0Vmlldy5nZXQoKTsg
fQorICAgIHZvaWQgc2V0TGF5ZXJIb3N0VmlldyhSZXRhaW5QdHI8VUlWaWV3PiYmIGxheWVySG9z
dFZpZXcpIHsgbV9sYXllckhvc3RWaWV3ID0gV1RGOjptb3ZlKGxheWVySG9zdFZpZXcpOyB9CiAK
IHByaXZhdGU6CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQpAQCAtNzgs
OSArNzYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5
KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWaWRlb0dyYXZpdHkgdmlkZW9M
YXllckdyYXZpdHkoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVk
aW9NZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwpAQCAtOTQsOSArOTAsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KiBtX21hbmFnZXI7CiAgICAgdWlu
dDY0X3QgbV9jb250ZXh0SWQ7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fbGF5ZXJI
b3N0OwotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3ZpZGVvTGF5ZXJGcmFtZTsKLSAgICBWaWRl
b0dyYXZpdHkgbV92aWRlb0xheWVyR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSB9OworICAg
IFJldGFpblB0cjxVSVZpZXcgKj4gbV9sYXllckhvc3RWaWV3OwogfTsKIAogY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDczY2M3YzJmZjJiZjVjZGQyMTcxYzk2MmE3YzMz
NDVhNTBkNjE0NzMuLjQ3YWRiM2M3YzgyODliZTZjYzFjNGFiYTNlYjc5NDRkMzA3YmQ1ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zNCwxMCArMzQsMzUgQEAKICNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVySG9zdC5oPgogI2ltcG9ydCA8UXVhcnR6
Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KICNp
bXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCitAaW50ZXJmYWNlIFdlYkxheWVySG9z
dFZpZXcgOiBVSVZpZXcKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIHVpbnQzMl90IGNv
bnRleHRJRDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkxheWVySG9zdFZpZXcKKworKyAo
Q2xhc3MpbGF5ZXJDbGFzcyB7CisgICAgcmV0dXJuIFtDQUxheWVySG9zdCBjbGFzc107Cit9CisK
Ky0gKHVpbnQzMl90KWNvbnRleHRJRCB7CisgICAgcmV0dXJuIFtbc2VsZiBsYXllckhvc3RdIGNv
bnRleHRJZF07Cit9CisKKy0gKHZvaWQpc2V0Q29udGV4dElEOih1aW50MzJfdCljb250ZXh0SUQg
eworICAgIFtbc2VsZiBsYXllckhvc3RdIHNldENvbnRleHRJZDpjb250ZXh0SURdOworfQorCist
IChDQUxheWVySG9zdCAqKWxheWVySG9zdCB7CisgICAgcmV0dXJuIChDQUxheWVySG9zdCAqKVtz
ZWxmIGxheWVyXTsKK30KKworQGVuZAorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xMzksMjggKzE2NCwxNiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkKIAogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9h
dFJlY3QgZnJhbWUpCiB7Ci0gICAgbV92aWRlb0xheWVyRnJhbWUgPSBmcmFtZTsKICAgICBpZiAo
bV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnNldFZpZGVvTGF5ZXJGcmFtZShtX2NvbnRl
eHRJZCwgZnJhbWUpOwogfQogCi1XZWJDb3JlOjpGbG9hdFJlY3QgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0Ojp2aWRlb0xheWVyRnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3Zp
ZGVvTGF5ZXJGcmFtZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6
OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpW
aWRlb0dyYXZpdHkgZ3Jhdml0eSkKIHsKLSAgICBtX3ZpZGVvTGF5ZXJHcmF2aXR5ID0gZ3Jhdml0
eTsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPnNldFZpZGVvTGF5ZXJH
cmF2aXR5KG1fY29udGV4dElkLCBncmF2aXR5KTsKIH0KIAotV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6
OnZpZGVvTGF5ZXJHcmF2aXR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92aWRlb0xheWVyR3Jh
dml0eTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3Qgb3B0aW9uSWQpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikK
QEAgLTI0MCw4ICsyNTMsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
aW52YWxpZGF0ZSgpCiAgICAgICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gdHVwbGU7
CiAKICAgICAgICAgaW50ZXJmYWNlLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIFttb2RlbC0+bGF5
ZXJIb3N0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAgICBtb2RlbC0+c2V0TGF5ZXJI
b3N0KG51bGxwdHIpOworICAgICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKKyAgICAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7CiAg
ICAgfQogCiAgICAgbV9jb250ZXh0TWFwLmNsZWFyKCk7CkBAIC0zMTAsMTYgKzMyMywxNyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElE
KHVpbnQ2NF90IGNvbnRleHRJZCwgdQogCiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkg
PSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCi0gICAgbW9kZWwtPnNldElu
aXRpYWxWaWRlb0xheWVyRnJhbWUoaW5pdGlhbFJlY3QpOwotICAgIG1vZGVsLT5zZXRMYXllckhv
c3QoV0tNYWtlUmVuZGVyTGF5ZXIodmlkZW9MYXllcklEKSk7CisgICAgUmV0YWluUHRyPFdlYkxh
eWVySG9zdFZpZXc+IHZpZXcgPSBhZG9wdE5TKFtbV2ViTGF5ZXJIb3N0VmlldyBhbGxvY10gaW5p
dF0pOworICAgIFt2aWV3IHNldENvbnRleHRJRDp2aWRlb0xheWVySURdOworICAgIG1vZGVsLT5z
ZXRMYXllckhvc3RWaWV3KHZpZXcpOwogICAgIGlmIChob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3Ig
IT0gMSkgewogICAgICAgICAvLyBJbnZlcnQgdGhlIHNjYWxlIHRyYW5zZm9ybSBhZGRlZCBpbiB0
aGUgV2ViUHJvY2VzcyB0byBmaXggPHJkYXI6Ly9wcm9ibGVtLzE4MzE2NTQyPi4KICAgICAgICAg
ZmxvYXQgaW52ZXJzZVNjYWxlID0gMSAvIGhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvcjsKLSAgICAg
ICAgW21vZGVsLT5sYXllckhvc3QoKSBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2Fs
ZShpbnZlcnNlU2NhbGUsIGludmVyc2VTY2FsZSwgMSldOworICAgICAgICBbW21vZGVsLT5sYXll
ckhvc3RWaWV3KCkgbGF5ZXJdIHNldFN1YmxheWVyVHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RNYWtl
U2NhbGUoaW52ZXJzZVNjYWxlLCBpbnZlcnNlU2NhbGUsIDEpXTsKICAgICB9CiAKICAgICBVSVZp
ZXcgKnBhcmVudFZpZXcgPSBkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
PigqbV9wYWdlLT5kcmF3aW5nQXJlYSgpKS5yZW1vdGVMYXllclRyZWVIb3N0KCkucm9vdExheWVy
KCk7Ci0gICAgaW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1vZGVsLT5sYXllckhvc3QoKSwg
aW5pdGlhbFJlY3QsIHBhcmVudFZpZXcsIHZpZGVvRnVsbHNjcmVlbk1vZGUsIGFsbG93c1BpY3R1
cmVJblBpY3R1cmUpOworICAgIGludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptb2RlbC0+bGF5
ZXJIb3N0VmlldygpLCBpbml0aWFsUmVjdCwgcGFyZW50VmlldywgdmlkZW9GdWxsc2NyZWVuTW9k
ZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKQpAQCAtNTAy
LDggKzUxNiw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVh
bnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgYXV0byYgbW9kZWwgPSBlbnN1
cmVNb2RlbChjb250ZXh0SWQpOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwotICAgIFtt
b2RlbC5sYXllckhvc3QoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgbW9kZWwuc2V0TGF5
ZXJIb3N0KG51bGxwdHIpOworICAgIFttb2RlbC5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1
cGVydmlld107CisgICAgbW9kZWwuc2V0TGF5ZXJIb3N0VmlldyhudWxscHRyKTsKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBG
dWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCiAgICAgbV9jb250ZXh0
TWFwLnJlbW92ZShjb250ZXh0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNTM0MjQ2OTFj
YjJlMjk5OGUxM2FjOGRlZDUwYzFiNzRhODQ1MTQyNy4uODFjNGRjNzBkM2IzMGQwNDg1ODZmOGZj
NDc4ZTgyZmUzZWMzMjkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMzIsOSArMjMyLDEz
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJm
YWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKKyAgICBGbG9hdFJl
Y3QgY2xpZW50UmVjdCA9IGNsaWVudFJlY3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpOworICAg
IEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoMCwgMCwgY2xpZW50UmVjdC53
aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdodCgpKTsKKyAgICAKICAgICBpbnRlcmZhY2UtPnNldFRh
cmdldElzRnVsbHNjcmVlbih0cnVlKTsKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2Rl
KG1vZGUpOwogICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxlbWVudCk7CisgICAg
bW9kZWwtPnNldFZpZGVvTGF5ZXJGcmFtZSh2aWRlb0xheWVyRnJhbWUpOwogCiAgICAgaWYgKGlu
dGVyZmFjZS0+aXNBbmltYXRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDI4LDcgKzQzMiwx
MCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVu
dGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBSZWZQdHI8
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY29u
dGV4dElkXSB7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgfSk7CiB9CiAgICAgCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257127</attachid>
            <date>2015-07-20 14:35:17 -0700</date>
            <delta_ts>2015-07-20 15:22:57 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-146862-20150720143404.patch</filename>
            <type>text/plain</type>
            <size>64068</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyZjQ5NjFmYWNiYzc2
OWRmYTVhMTBlNTM0ZjYzYjc3NmIzMmZkZC4uZmNjYmVmN2RiMTQ5YTVjMWNhNDJmMTZiYmY0Y2I2
NzVhNTNhYzQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNS0wNy0yMCAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZQbGF5ZXJM
YXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBUaGUg
Q0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXllckhvc3RWaWV3IHRvIGJlIGNvbXBh
dGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAgICAgU29tZSBhbmltYXRpb24gaXMg
aW1wcm92ZWQgaW4gdGhlIGNvbnZlcnNpb24uCisKKyAgICAgICAgV2ViQVZQbGF5ZXJMYXllclZp
ZXcgYW5kIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyBkZXJpdmUgZnJvbSBB
VktpdCBhbmQgVUlLaXQgcmVzcGVjdGl2ZWx5LgorICAgICAgICBCZWNhdXNlIHRoZXNlIGZyYW1l
d29ya3MgYXJlIGxvYWRlZCBhdCBydW50aW1lLCB0aGVzZSBjbGFzc2VzIG11c3QgYmUgZ2VuZXJh
dGUgdXNpbmcgb2JqYy9ydW50aW1lLmggdG8KKyAgICAgICAgcmVnaXN0ZXIgdGhlbSBmcm9tIGMg
ZnVuY3Rpb25zIGF0IHJ1bnRpbWUuIFRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IG9mIHRoZXNlIFVJ
Vmlld3MgaXMgdGhhdCB0aGVpcgorICAgICAgICBiYWNraW5nIGxheWVyIGlzIGEgV2ViQVZQbGF5
ZXJMYXllci4KKworICAgICAgICBXZWJDQUxheWVySG9zdFdyYXBwZXIgYW5kIFdlYkFWVmlkZW9M
YXllciBhcmUgY29tYmluZWQgaW50byBXZWJBVlBsYXllckxheWVyIHRvIHNpbXBsaWZ5IHRoZSBo
aWVyYXJjaHkuCisgICAgICAgIFdlYkFWUGxheWVyTGF5ZXIgaXMgYSBzdGFuZC1pbiBmb3IgYW4g
QVZQbGF5ZXJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcik6IC1yZW1vdmVGcm9tU3VwZXJsYXllciBpcyByZWR1bmRhbnQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KTogc3luY1RleHRUcmFja0JvdW5kcyBvbiBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZSk6CisgICAgICAgIFdlIG5ldmVyIHdhbnQgYW5pbWF0aW9uIGhlcmUsIHNp
bmNlIGFsbCBhbmltYXRpb24gd2lsbCBoYXBwZW4gaW4gVUlWaWV3cy4gCisgICAgICAgIFRoaXMg
aXMganVzdCBmb3IgZ29pbmcgaW50byB0aGUgZmluYWwgc2l6ZSBhZnRlciBhIHRyYW5zZm9ybSBi
YXNlZCBhbmltYXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVl
bik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4pOiBsYXllciAtPiB2aWV3CisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBsYXll
ciAtPiB2aWV3CisgICAgICAgIFVzZSBmZW5jZSBwb3J0IHRvIHN5bmNocm9uaXplIGJldHdlZW4g
dGhlIFVJVGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFkLAorICAgICAgICB0aGUgc2FtZSB3YXkgV2Vi
S2l0MiB1c2VzIGEgZmVuY2UgcG9ydCB0byBzeW5jaHJvbml6ZSBiZXR3ZWVuIHByb2Nlc3Nlcy4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KToKKyAgICAgICAgTm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBjYWNoZSB2aWRl
b0dyYXZpdHkgYXQgdGhpcyBsZXZlbC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKworICAgICAgICAoLVtXZWJBVlBsYXll
ckxheWVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBkZWFsbG9jXSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgcGxheWVyQ29udHJvbGxlcl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHNldEJvdW5kczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJM
YXllciByZXNvbHZlQm91bmRzXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0Vmlk
ZW9HcmF2aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvR3Jhdml0eV0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvUmVjdF0pOgorICAgICAgICAoK1tX
ZWJBVlBsYXllckxheWVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0XSk6Cisg
ICAgICAgIEFkZGVkIGNsYXNzIFdlYkFWUGxheWVyTGF5ZXIsIHJlcGxhY2luZyBXZWJBVlZpZGVv
TGF5ZXIgYW5kIFdlYkNBTGF5ZXJIb3N0V3JhcHBlci4KKworICAgICAgICAoV2ViQVZQaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MpOgorICAgICAgICAoZ2V0V2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOgorICAgICAgICBBZGRlZCBydW50
aW1lIGNsYXNzIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldworCisgICAgICAg
IChXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzKToKKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZp
ZXdfc2V0UGxheWVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192
aWRlb1ZpZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0VmlkZW9WaWV3KToK
KyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KToKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3
X3N0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAg
ICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKToKKyAgICAgICAgQWRk
ZWQgcnVudGltZSBjbGFzcyBXZWJBVlBsYXllckxheWVyVmlldworCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKToKKyAgICAgICAg
RGltZW5zaW9ucyBhcmUgYWxzbyBzdG9yZWQgaW4gV2ViQVZQbGF5ZXJMYXllciBzbyBpdCBjYW4g
bWFrZSBkZWNpc2lvbnMgYWJvdXQKKyAgICAgICAgYW5pbWF0aW5nIHRoZSB2aWRlbyBsYXllci4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFs
UGxheWJhY2spOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVu
dGVyRnVsbHNjcmVlbik6IAorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIFN0cmFpZ2h0Zm9y
d2FyZCBsYXllciB0byB2aWV3IGNvbnZlcnNpb24uCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUpOgorICAgICAgICBT
ZXQgdmlldyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVyYXJjaHkgaW5zdGVhZCBvZiBhc3N1bWlu
ZyBpdCBpcyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJh
bWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGly
ZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAgIGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5n
IGRpZEV4aXRGdWxsc2NyZWVuKCkgdG8gYWxsb3dzIENBVHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRl
LgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxs
c2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJhbWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5
IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGlyZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAg
IGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5nIGRpZFNldHVwRnVsbHNjcmVlbigpIHRvIGFs
bG93cyBDQVRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4KKworICAgICAgICAoLVtXZWJDQUxheWVy
SG9zdFdyYXBwZXIgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDQUxheWVySG9z
dFdyYXBwZXIgc2V0VmlkZW9TdWJsYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ0FM
YXllckhvc3RXcmFwcGVyIHZpZGVvU3VibGF5ZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHNldEJvdW5kczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHJlc29sdmVCb3VuZHNdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xh
c3MgV2ViQ0FMYXllckhvc3RXcmFwcGVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGlu
dG8gV2ViQVZQbGF5ZXJMYXllci4KKworICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9M
YXllcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgaW5pdF0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRWaWRlb1N1YmxheWVy
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0Qm91bmRzOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdyYXZpdHk6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0
eV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgZW50ZXJQSVBNb2RlUmVk
aXJlY3RpbmdWaWRlb1RvTGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9M
YXllciBsZWF2ZVBJUE1vZGVdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xhc3MgV2ViQVZWaWRlb0xh
eWVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGludG8gV2ViQVZQbGF5ZXJMYXllci4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbToKKyAgICAgICAgTm8gbmVlZCB0byBzdG9yZSBmcmFtZSBhbmQgZ3Jhdml0eSBpbiB0
aGUgbW9kZWwuIEl0IGlzIHN0b3JlZCBpbiB0aGUgVUkgd2hlcmUgaXQgaXMgdXNlZC4KKworICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnZpZGVvTGF5ZXJGcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6dmlkZW9MYXllckdyYXZpdHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOiBBZGQgQVZQbGF5ZXJMYXllclZpZXcuCisKIDIwMTUtMDctMDkgIE1h
dHRoZXcgRGFpdGVyICA8bWRhaXRlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50aW5n
IHBsYXRmb3JtLXNwZWNpZmljIHNlY3Rpb24gb2YgZW51bWVyYXRlRGV2aWNlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDI5ZTU1ZWNlYTljODNiMjJlYmI0NDZmOGVkZDQ3YWEzYzRkOTgzYTUuLjNkZjkwYjYzNmVh
YzQwYjlkYzdkOWI3ZDJiMTNlZDJmOGE2NjM0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBA
QAorMjAxNS0wNy0yMCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRvcHQgQVZQbGF5ZXJMYXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBUaGUgQ0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXll
ckhvc3RWaWV3IHRvIGJlIGNvbXBhdGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAg
ICAgdmlkZW9MYXllckZyYW1lIGFuZCB2aWRlb0xheWVyR3Jhdml0eSBubyBsb25nZXIgbmVlZCB0
byBiZSBzdG9yZWQgYmVjYXVzZSB0aGV5IGFyZSBzdG9yZWQKKyAgICAgICAgd2hlcmUgdGhleSBh
cmUgdXNlZCBpbiB0aGUgaW50ZXJmYWNlLiBTb21lIGFuaW1hdGlvbiBpcyBpbXByb3ZlZCBpbiB0
aGUgY29udmVyc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgICgrW1dlYkxheWVySG9zdFZpZXcgbGF5ZXJD
bGFzc10pOiBBZGQgY2xhc3MgV2ViTGF5ZXJIb3N0Vmlldy4KKyAgICAgICAgKC1bV2ViTGF5ZXJI
b3N0VmlldyBjb250ZXh0SURdKToKKyAgICAgICAgKC1bV2ViTGF5ZXJIb3N0VmlldyBzZXRDb250
ZXh0SUQ6XSk6CisgICAgICAgICgtW1dlYkxheWVySG9zdFZpZXcgbGF5ZXJIb3N0XSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6
IGxheWVyIC0+IHZpZXcKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQpOgorICAgICAgICBBcHBseSB0aGUgaG9zdGlu
Z0RldmljZVNjYWxlRmFjdG9yIHRyYW5zZm9ybSB0byAtc3VibGF5ZXJUcmFuc2Zvcm0gaW5zdGVh
ZCBvZiB0bworICAgICAgICAtdHJhbnNmb3JtLiBUaGlzIG1vcmUgZGlyZWN0bHkgaW52ZXJ0cyB0
aGUgdHJhbmZvcm0gV2ViUHJvY2VzcyBhbmQgYWxsb3dzIC10cmFuc2Zvcm0KKyAgICAgICAgdG8g
YmUgdXNlZCBmb3IgYW5pbWF0aW9uIGluIHRoZSBVSVByb2Nlc3MuIFRoaXMgaXMgaW1wb3J0YW50
IGJlY2F1c2UgVUlWaWV3J3MgYWN0aW9ucworICAgICAgICBhbmltYXRlIC10cmFuc2Zvcm0sIGJ1
dCBub3QgLXN1YmxheWVyVHJhc2Zvcm0uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRl
b0xheWVyRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OnZpZGVvTGF5ZXJGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OnZpZGVvTGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6
CisgICAgICAgIFNldCBpbml0aWFsIHZpZGVvIGxheWVyIGZyYW1lIHRvIGZpeCBzdGFydCBwb2lu
dCBvZiBhbmltYXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgYWxsb3dz
IHRoZSBDQVRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGJlZm9yZSBjb250aW51aW5nIHdpdGggdGhl
IGFuaW1hdGlvbi4KKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIGZsYXNoIGR1cmluZyBhbmltYXRp
b24uCisKIDIwMTUtMDctMDkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIFJlcG9ydCB0aGUgZmlyc3QgcGFpbnQgYWZ0ZXIgY29tbWl0dGluZyBhIGxv
YWQgYXMgYSByZW5kZXJpbmcgcHJvZ3Jlc3MgZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDdiYWI1Yzc4YzVmZDkzYTJmMGE1NzZhYzVmOWMwOTU3YTE1OGE4ZGIuLmU5OGRmZDlhZmMx
YWE3ZjQzMzg1YmFkZDA4NmU3ODNhNWI1ZDM0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtMTEyNCw5ICsxMTI0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogICAgIENBQ29udGV4
dCAqbmV3Q29udGV4dCA9IG5pbDsKICAgICAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXll
ciAmJiBtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxz
Y3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAgICAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKICAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5
ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07CisgICAgICAgIFttX3ZpZGVvTGF5ZXIg
c2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCks
IG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKICAgICAgICAgbmV3Q29udGV4dCA9
IFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRdOwogICAgIH0gZWxzZSBpZiAobV92aWRl
b0lubGluZUxheWVyICYmIG1fdmlkZW9MYXllcikgewogICAgICAgICBbbV92aWRlb0xheWVyIHNl
dEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91bmRzXV07CkBAIC0xMTU4LDExICsxMTU3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
dmlkZW9MYXllcikgewotICAgICAgICBbbV92aWRlb0xheWVyIHNldFN0eWxlOm5pbF07IC8vIFRo
aXMgZW5hYmxlcyBhY3Rpb25zLCBpLmUuIGltcGxpY2l0IGFuaW1hdGlvbnMuCi0gICAgICAgIFtD
QVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICAgICAgW21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIGZyYW1lLndpZHRoKCksIGZyYW1lLmhlaWdodCgpKV07Ci0gICAgICAgIFtD
QVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgd2ViX2Rpc2FibGVB
bGxBY3Rpb25zXTsKICAgICB9CiAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwogfQpAQCAtMTE4
Miw4ICsxMTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6CiAgICAgICAgIHZpZGVvR3Jh
dml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOwogICAgIGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgCisgICAgaWYgKFttX3ZpZGVvTGF5ZXIg
dmlkZW9HcmF2aXR5XSA9PSB2aWRlb0dyYXZpdHkpCisgICAgICAgIHJldHVybjsKIAogICAgIFtt
X3ZpZGVvTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OnZpZGVvR3Jhdml0eV07CisgICAgc3luY1RleHRU
cmFja0JvdW5kcygpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGQxOWFmMDFmOWU5
Yzk3MDIzZDk5YzA5MTRkZDljNGYwM2Q1ZjFhYmMuLjYwZDI4YmMyZmQzYzI5MmU0MjZlM2VhOWYx
ZmE2YjhlNzllMGExYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzAs
NiArMzAsOCBAQAogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lmgi
CiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlF1YXJ0ekNvcmVTUEkuaCIKKyNpbXBv
cnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKQEAgLTM3LDYgKzM5LDkgQEAKICNpbXBvcnQgPFdlYkNv
cmUvSFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVu
Lmg+CiAKK1NPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQs
IFVJVmlldykKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8PSA4MDIwMCB8fCAhSEFWRShBVktJVCkKQEAgLTEyOSw5ICsx
MzQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9mcmFtZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZ3Jhdml0eTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJs
ZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC0xMzksMTAgKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFjZTsKICAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1fbW9kZWw7CiAgICAg
UmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwotICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAgIFJldGFpblB0cjxVSVZp
ZXc+IG1fdmlkZW9GdWxsc2NyZWVuVmlldzsKICAgICBSZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAgIEZsb2F0UmVjdCBtX2ZyYW1lOwotICAg
IFZpZGVvR3Jhdml0eSBtX2dyYXZpdHk7CiB9OwogCiAjcHJhZ21hIG1hcmsgV2ViVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKQEAgLTE1MSw4ICsxNTIsOSBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFT
U0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXNdIHsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobV92
aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVv
RnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CisgICAgV2Vi
VGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0geworICAg
ICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXll
ci5nZXQoKSk7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJG
dWxsc2NyZWVuKCk7CiAgICAgICAgIH0pOwpAQCAtMTc3LDYgKzE3OSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAg
ICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwobnVsbHB0cik7CiAgICAg
bV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIp
OwogICAgIG1faW50ZXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcg
PSBuaWw7CiAgICAgCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhp
c10gewpAQCAtMTg1LDcgKzE4OCw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9tb2RlbC0+c2V0Vmlk
ZW9FbGVtZW50KG51bGxwdHIpOwogICAgICAgICBtX21vZGVsID0gbnVsbHB0cjsKICAgICAgICAg
bV92aWRlb0VsZW1lbnQgPSBudWxscHRyOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
ID0gbmlsOwogICAgICAgICAKICAgICAgICAgW21fY29udHJvbGxlciBkaWRGaW5pc2hGdWxsc2Ny
ZWVuOnRoaXNdOwogICAgIH0pOwpAQCAtNDUwLDE4ICs0NTIsMjUgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVuKCkKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShG
bG9hdFJlY3QgZnJhbWUpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgbV9mcmFt
ZSA9IGZyYW1lOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMs
IGZyYW1lXSB7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0g
W21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CisKKyAgICBtYWNoX3BvcnRfbmFtZV90IGZl
bmNlUG9ydCA9IFtbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF0gY3JlYXRlRmVuY2VQb3J0
XTsKKyAgICAKKyAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIGZyYW1lLCBmZW5j
ZVBvcnQsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJl
Z2luXTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CiAg
ICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9MYXllckZy
YW1lKGZyYW1lKTsKKyAgICAgICAgW1t2aWRlb0Z1bGxzY3JlZW5MYXllciBjb250ZXh0XSBzZXRG
ZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKKyAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgZmVuY2VQb3J0KTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsK
ICAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6
c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0
eSB2aWRlb0dyYXZpdHkpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgbV9ncmF2
aXR5ID0gdmlkZW9HcmF2aXR5OwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXMsIHZpZGVvR3Jhdml0eV0gewogICAgICAgICBpZiAobV9tb2RlbCkKQEAgLTUxMCwx
OSArNTE5LDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
dFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgbV9pbnRlcmZhY2UgPSBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCk7CiAgICAgbV9pbnRlcmZh
Y2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMpOwogICAgIG1faW50
ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKKyAgICBtX3ZpZGVvRnVs
bHNjcmVlblZpZXcgPSBhZG9wdE5TKFtbZ2V0VUlWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwog
ICAgIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdS
ZWYsIG1vZGVdIHsKICAgICAgICAgbV9tb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50OjpjcmVhdGUoKTsKICAgICAgICAgbV9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlKHRoaXMpOwogICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0VsZW1lbnQobV92
aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gW0NB
TGF5ZXIgbGF5ZXJdOwogICAgICAgICAKICAgICAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0
dXJlID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJblBpY3R1
cmUoKm1fdmlkZW9FbGVtZW50LmdldCgpKTsKICAgICAgICAgSW50UmVjdCB2aWRlb0VsZW1lbnRD
bGllbnRSZWN0ID0gbV92aWRlb0VsZW1lbnQtPmNsaWVudFJlY3QoKTsKICAgICAgICAgCiAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlz
LCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlXSB7Ci0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVu
KCptX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2
aWV3UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICAgICAgICAg
IG1faW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQo
KSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGlj
dHVyZUluUGljdHVyZSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQuaAppbmRleCA5ZTdkZjZmNzdiMGEzMGY2YmFmZmU0ZjdkNGYwNTVmMjdlMTk0Yzcz
Li4wNGEyZThhOTdhZjE5YjNiNzExMDE4ZTE5ZWQ5OTk0MzM5Yjg1NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaApAQCAtNDUsOCArNDUsOCBAQCBPQkpDX0NMQVNTIFVJVmlld0NvbnRy
b2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93OwogT0JKQ19DTEFTUyBVSVZpZXc7CiBPQkpDX0NM
QVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdlYkFWVmlkZW9MYXllcjsKLU9CSkNfQ0xBU1MgV2Vi
Q0FMYXllckhvc3RXcmFwcGVyOworT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKK09C
SkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllcjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBTdHJp
bmc7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJs
ZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lKSBvdmVycmlkZTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
c2V0dXBGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImLCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVj
dCwgVUlWaWV3ICosIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwg
Ym9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiwgY29uc3QgSW50UmVjdCYgaW5p
dGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZpbmFsUmVjdCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKCk7CkBA
IC0xMzMsOSArMTMzLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVy
Q29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxBVlBsYXllclZp
ZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9sbGVyOwotICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFdlYkFWVmlkZW9MYXllcj4gbV92aWRl
b0xheWVyQ29udGFpbmVyOwotICAgIFJldGFpblB0cjxXZWJDQUxheWVySG9zdFdyYXBwZXI+IG1f
bGF5ZXJIb3N0V3JhcHBlcjsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRyIH07CiAKQEAgLTE0
NCw2ICsxNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+
IG1fdmlld0NvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV9wYXJlbnRWaWV3Owog
ICAgIFJldGFpblB0cjxVSVdpbmRvdz4gbV9wYXJlbnRXaW5kb3c7CisgICAgUmV0YWluUHRyPFdl
YkFWUGxheWVyTGF5ZXJWaWV3PiBtX3BsYXllckxheWVyVmlldzsKICAgICBIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBib29sIG1fYWxsb3dzUGljdHVy
ZUluUGljdHVyZVBsYXliYWNrIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA3NGIxYzE5OTUxMWM0OTYzYWRlMTczMjY0M2NmZmNmOTQxNDg2MWNlLi5jYjVkZTRj
ZTA2YjczYTZiOTJhMmFlNmMyNjgyYWEzNGQ1ZWY4MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC0zOSw2ICszOSw4IEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgogI2ltcG9ydCA8VUlLaXQv
VUlLaXQuaD4KKyNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTUwLDExICs1MiwxNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRp
b24pCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3Vu
ZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikK
IAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQ
bGF5ZXJDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllclZpZXdDb250
cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQorU09GVF9MSU5L
X0NMQVNTKEFWS2l0LCBBVlBsYXllckxheWVyVmlldykKK1NPRlRfTElOS19DTEFTUyhBVktpdCwg
QVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KQogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
KFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQpAQCAtNzQsMTMg
KzgxLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogCiBAY2xh
c3MgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAotQGludGVyZmFjZSBXZWJBVlBsYXllckNv
bnRyb2xsZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPgotewor
QGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3
Q29udHJvbGxlckRlbGVnYXRlPiB7CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1
cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwogICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25P
cHRpb24gKl9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOwogfQogCi0tKHZvaWQp
cmVzZXRTdGF0ZTsKKy0gKHZvaWQpcmVzZXRTdGF0ZTsKIAogQHByb3BlcnR5IChyZXRhaW4pIEFW
UGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5OwogQHByb3BlcnR5IChhc3Np
Z24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBkZWxlZ2F0ZTsKQEAgLTE1MCw3ICsxNTYsOCBA
QCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKLS0odm9pZClyZXNldFN0YXRlIHsKKy0gKHZvaWQpcmVzZXRTdGF0ZQorewog
ICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKICAgICBzZWxmLm1heFRpbWUgPSAwOwogICAg
IHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwpAQCAtMTgxLDcgKzE4OCw4
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogICAgIHNlbGYuY3Vy
cmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKIH0KIAotLSAoQVZQbGF5ZXIq
KSBwbGF5ZXIgeworLSAoQVZQbGF5ZXIgKikgcGxheWVyCit7CiAgICAgcmV0dXJuIG5pbDsKIH0K
IApAQCAtNTY4LDEwMSArNTc2LDIwIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiBAaW1wbGVt
ZW50YXRpb24gV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbgogQGVuZAogCi0KLUBpbnRlcmZhY2Ug
V2ViQ0FMYXllckhvc3RXcmFwcGVyIDogQ0FMYXllcgotQHByb3BlcnR5IChhc3NpZ24pIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbDsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkNB
TGF5ZXJIb3N0V3JhcHBlciB7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IF92aWRlb1N1YmxheWVy
OwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQ
ZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVC
b3VuZHMpIG9iamVjdDpuaWxdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClz
ZXRWaWRlb1N1YmxheWVyOihDQUxheWVyKil2aWRlb1N1YmxheWVyCi17Ci0gICAgX3ZpZGVvU3Vi
bGF5ZXIgPSB2aWRlb1N1YmxheWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZpZGVvU3VibGF5
ZXJdOwotfQotCi0tIChDQUxheWVyKil2aWRlb1N1YmxheWVyCi17Ci0gICAgcmV0dXJuIF92aWRl
b1N1YmxheWVyLmdldCgpOwotfQotCi0tICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcwot
ewotICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYuYm91bmRzKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgW3N1cGVyIHNldEJvdW5kczpib3VuZHNdOwotCi0gICAgW192aWRl
b1N1YmxheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoYm91bmRzKSwg
Q0dSZWN0R2V0TWlkWShib3VuZHMpKV07Ci0KLSAgICBpZiAoIXNlbGYubW9kZWwpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEZsb2F0UmVjdCB2aWRlb0ZyYW1lID0gc2VsZi5tb2RlbC0+dmlkZW9M
YXllckZyYW1lKCk7Ci0gICAgRmxvYXRSZWN0IHRhcmdldEZyYW1lOwotICAgIHN3aXRjaCAoc2Vs
Zi5tb2RlbC0+dmlkZW9MYXllckdyYXZpdHkoKSkgewotICAgIGNhc2UgV2ViQ29yZTo6V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZToKLSAgICAgICAgdGFyZ2V0RnJh
bWUgPSBib3VuZHM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDoKLSAgICAgICAgdGFyZ2V0
RnJhbWUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9GcmFtZS5z
aXplKCkuYXNwZWN0UmF0aW8oKSwgYm91bmRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
RmlsbDoKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9B
cm91bmRSZWN0KHZpZGVvRnJhbWUuc2l6ZSgpLmFzcGVjdFJhdGlvKCksIGJvdW5kcyk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybSA9IENBVHJhbnNm
b3JtM0RNYWtlU2NhbGUodGFyZ2V0RnJhbWUud2lkdGgoKSAvIHZpZGVvRnJhbWUud2lkdGgoKSwg
dGFyZ2V0RnJhbWUuaGVpZ2h0KCkgLyB2aWRlb0ZyYW1lLmhlaWdodCgpLCAxKTsKLSAgICBbX3Zp
ZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLQotICAgIFtOU09i
amVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgb2JqZWN0Om5pbF07Ci0gICAgW3NlbGYgcGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91bmRzKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRl
bGF5OltDQVRyYW5zYWN0aW9uIGFuaW1hdGlvbkR1cmF0aW9uXSArIDAuMV07Ci19Ci0KLS0gKHZv
aWQpcmVzb2x2ZUJvdW5kcwotewotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1S
ZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykg
b2JqZWN0Om5pbF07Ci0gICAgaWYgKCFzZWxmLm1vZGVsKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9u
RHVyYXRpb246MF07Ci0KLSAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06
Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICBzZWxmLm1vZGVsLT5zZXRWaWRlb0xheWVyRnJh
bWUoW3NlbGYgYm91bmRzXSk7Ci0gICAgCi0gICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKLX0K
LUBlbmQKLQotQGludGVyZmFjZSBXZWJBVlZpZGVvTGF5ZXIgOiBDQUxheWVyIDxBVlZpZGVvTGF5
ZXI+Ci0rKFdlYkFWVmlkZW9MYXllciAqKXZpZGVvTGF5ZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21p
YykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCBnZXR0ZXIgPSBpc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFkeUZvckRpc3BsYXk7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dSZWN0IHZpZGVvUmVjdDsKLS0gKHZvaWQpc2V0UGxh
eWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29u
dHJvbGxlcjsKLS0gKHZvaWQpc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVy
ICopcGxheWVyQ29udHJvbGxlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIENBTGF5
ZXIqIHZpZGVvU3VibGF5ZXI7CitAaW50ZXJmYWNlIFdlYkFWUGxheWVyTGF5ZXIgOiBDQUxheWVy
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0cmluZyAqdmlkZW9HcmF2aXR5Owor
QHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFk
eUZvckRpc3BsYXk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBBVlBsYXllckNvbnRy
b2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBD
QUxheWVyICp2aWRlb1N1YmxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxh
YmxlKSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKK0Bwcm9wZXJ0eSBDR1Np
emUgdmlkZW9EaW1lbnNpb25zOworQHByb3BlcnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFt
ZTsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkFWVmlkZW9MYXllcgoteworQGltcGxlbWVu
dGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIgewogICAgIFJldGFpblB0cjxXZWJBVlBsYXllckNvbnRy
b2xsZXI+IF9hdlBsYXllckNvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0Nv
bnRyb2xsZXI+IF9hdlBsYXllclZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxDQUxheWVy
PiBfdmlkZW9TdWJsYXllcjsKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5IF92aWRlb0xheWVyR3Jh
dml0eTsKLX0KLQotKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyCi17Ci0gICAgcmV0dXJu
IFtbW1dlYkFWVmlkZW9MYXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gX3ZpZGVvR3Jhdml0eTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQK
QEAgLTY3MCwyNiArNTk3LDMxIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikgewogICAgICAgICBbc2VsZiBzZXRNYXNrc1Rv
Qm91bmRzOllFU107Ci0gICAgICAgIFtzZWxmIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9M
YXllckdyYXZpdHlSZXNpemVBc3BlY3RdOworICAgICAgICBfdmlkZW9HcmF2aXR5ID0gZ2V0QVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsK
IH0KIAorLSAodm9pZClkZWFsbG9jCit7CisgICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVy
Zm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91
bmRzKSBvYmplY3Q6bmlsXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEFWUGxheWVy
Q29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIKK3sKKyAgICByZXR1cm4gKEFWUGxheWVyQ29u
dHJvbGxlciAqKV9hdlBsYXllckNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKIC0gKHZvaWQpc2V0UGxh
eWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcgogewog
ICAgIEFTU0VSVCghcGxheWVyQ29udHJvbGxlciB8fCBbcGxheWVyQ29udHJvbGxlciBpc0tpbmRP
ZkNsYXNzOltXZWJBVlBsYXllckNvbnRyb2xsZXIgY2xhc3NdXSk7CiAgICAgX2F2UGxheWVyQ29u
dHJvbGxlciA9IChXZWJBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9sbGVyOwogfQog
Ci0tICh2b2lkKXNldFBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVy
ICopcGxheWVyVmlld0NvbnRyb2xsZXIKLXsKLSAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlciA9
IHBsYXllclZpZXdDb250cm9sbGVyOwotfQotCiAtICh2b2lkKXNldFZpZGVvU3VibGF5ZXI6KENB
TGF5ZXIgKil2aWRlb1N1YmxheWVyCiB7CiAgICAgX3ZpZGVvU3VibGF5ZXIgPSB2aWRlb1N1Ymxh
eWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZpZGVvU3VibGF5ZXJdOwogfQogCiAtIChDQUxh
eWVyKil2aWRlb1N1YmxheWVyCkBAIC02OTksMjcgKzYzMSw3OSBAQCBzdGF0aWMgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4
aXRGdWxsUwogCiAtICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcwogeworICAgIGlmIChD
R1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYuYm91bmRzKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAogICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91bmRzXTsKKyAgICAKKyAgICBpZiAoW192aWRl
b1N1YmxheWVyIHN1cGVybGF5ZXJdICE9IHNlbGYpCisgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChbX3ZpZGVvU3VibGF5ZXIgc3VwZXJsYXllcl0gPT0gc2VsZikgewotICAgICAgICBbX3ZpZGVv
U3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBD
R1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKLSAgICAgICAgW192aWRlb1N1YmxheWVyIHNldEJvdW5k
czpib3VuZHNdOwotICAgIH0KKyAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2lu
dE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBDR1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKKyAg
ICAKKyAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRmxvYXRSZWN0IHNvdXJjZVZpZGVvRnJhbWU7CisgICAgRmxvYXRSZWN0IHRh
cmdldFZpZGVvRnJhbWU7CisgICAgZmxvYXQgdmlkZW9Bc3BlY3RSYXRpbyA9IHNlbGYudmlkZW9E
aW1lbnNpb25zLndpZHRoIC8gc2VsZi52aWRlb0RpbWVuc2lvbnMuaGVpZ2h0OworICAgIAorICAg
IGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSgpIGlzRXF1YWxUb1N0cmluZzpzZWxm
LnZpZGVvR3Jhdml0eV0pIHsKKyAgICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNlbGYubW9kZWxW
aWRlb0xheWVyRnJhbWU7CisgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsK
KyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkgaXNF
cXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgeworICAgICAgICBzb3VyY2VWaWRlb0Zy
YW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0
aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1l
ID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8s
IHNlbGYuYm91bmRzKTsKKyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKKyAg
ICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3Vu
ZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CisgICAg
ICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIHNvdXJjZVZp
ZGVvRnJhbWUud2lkdGgoKSwgc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7CisgICAgICAgIFtf
YXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9k
ZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RS
ZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5k
cyk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgVUlW
aWV3ICp2aWV3ID0gW192aWRlb1N1YmxheWVyIGRlbGVnYXRlXTsKKyAgICBDR0FmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSh0YXJnZXRWaWRlb0Zy
YW1lLndpZHRoKCkgLyBzb3VyY2VWaWRlb0ZyYW1lLndpZHRoKCksIHRhcmdldFZpZGVvRnJhbWUu
aGVpZ2h0KCkgLyBzb3VyY2VWaWRlb0ZyYW1lLmhlaWdodCgpKTsKKyAgICBbdmlldyBzZXRUcmFu
c2Zvcm06dHJhbnNmb3JtXTsKKyAgICAKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJm
b3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3Vu
ZHMpIG9iamVjdDpuaWxdOworICAgIAorICAgIGlmICghQ0dBZmZpbmVUcmFuc2Zvcm1FcXVhbFRv
VHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIHRyYW5zZm9ybSkpCisgICAgICAg
IFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgd2l0aE9iamVj
dDpuaWwgYWZ0ZXJEZWxheTpbQ0FUcmFuc2FjdGlvbiBhbmltYXRpb25EdXJhdGlvbl0gKyAwLjFd
OworfQorCistICh2b2lkKXJlc29sdmVCb3VuZHMKK3sKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJl
dmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJl
c29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOworICAgIGlmICghW19hdlBsYXllckNvbnRyb2xsZXIg
ZGVsZWdhdGVdKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKFtfdmlkZW9TdWJsYXll
ciBzdXBlcmxheWVyXSAhPSBzZWxmKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgW0NBVHJh
bnNhY3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0aW9u
OjBdOworICAgIAorICAgIFsoVUlWaWV3ICopW192aWRlb1N1YmxheWVyIGRlbGVnYXRlXSBzZXRU
cmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV07CisgICAgc2VsZi5tb2RlbFZpZGVv
TGF5ZXJGcmFtZSA9IFtzZWxmIGJvdW5kc107CisgICAgW19hdlBsYXllckNvbnRyb2xsZXIgZGVs
ZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7Cisg
ICAgCisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIAotLSAodm9pZClzZXRWaWRlb0xh
eWVyR3Jhdml0eTooQVZWaWRlb0xheWVyR3Jhdml0eSl2aWRlb0xheWVyR3Jhdml0eQorLSAodm9p
ZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0gICAgX3ZpZGVv
TGF5ZXJHcmF2aXR5ID0gdmlkZW9MYXllckdyYXZpdHk7CisgICAgX3ZpZGVvR3Jhdml0eSA9IHZp
ZGVvR3Jhdml0eTsKICAgICAKICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRl
XSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBpZiAodmlkZW9MYXllckdyYXZpdHkg
PT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSkKKyAgICBpZiAodmlkZW9HcmF2aXR5ID09IGdl
dEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKSkKICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemU7Ci0gICAgaWYgKHZp
ZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3QpCisgICAg
aWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkp
CiAgICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6Vmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGVsc2UgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09
IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgIGVsc2UgaWYgKHZpZGVv
R3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpKQogICAg
ICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTcyNywyNCArNzExLDE2MiBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwogICAg
IFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckdyYXZpdHkoZ3Jh
dml0eSk7CiB9CiAKLS0gKEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdyYXZpdHkKKy0g
KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0gICAgcmV0dXJuIF92aWRlb0xheWVyR3Jhdml0
eTsKKyAgICByZXR1cm4gX3ZpZGVvR3Jhdml0eS5nZXQoKTsKIH0KIAotLSAodm9pZCllbnRlclBJ
UE1vZGVSZWRpcmVjdGluZ1ZpZGVvVG9MYXllcjooQ0FMYXllciAqKWxheWVyCistIChDR1JlY3Qp
dmlkZW9SZWN0CiB7Ci0gICAgW192aWRlb1N1YmxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsK
LSAgICBbbGF5ZXIgYWRkU3VibGF5ZXI6X3ZpZGVvU3VibGF5ZXIuZ2V0KCldOworICAgIGZsb2F0
IHZpZGVvQXNwZWN0UmF0aW8gPSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlk
ZW9EaW1lbnNpb25zLmhlaWdodDsKKyAgICAKKyAgICBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3QoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAg
ICAgICByZXR1cm4gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNw
ZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlS
ZXNpemVBc3BlY3RGaWxsKCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKKyAg
ICAgICAgcmV0dXJuIHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9B
c3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOworCisgICAgcmV0dXJuIHNlbGYuYm91bmRzOworfQor
CisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0Cit7CisgICAg
cmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAInZpZGVvRGltZW5zaW9ucyIsIEAidmlkZW9H
cmF2aXR5IiwgbmlsXTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYkFWUGljdHVyZUluUGlj
dHVyZVBsYXllckxheWVyVmlldyA6IEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldwor
QGVuZAorCitzdGF0aWMgQ0FMYXllciogV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3X2xheWVyQ2xhc3MoaWQsIFNFTCkKK3sKKyAgICByZXR1cm4gW1dlYkFWUGxheWVyTGF5ZXIg
Y2xhc3NdOwogfQogCi0tICh2b2lkKWxlYXZlUElQTW9kZQorc3RhdGljIENsYXNzIGdldFdlYkFW
UGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld0NsYXNzKCkKIHsKLSAgICBbX3ZpZGVvU3Vi
bGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOl92aWRl
b1N1YmxheWVyLmdldCgpXTsKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0
QVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSwgIldlYkFWUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyIsIDApOworICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQ
YWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xhc3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xh
c3MoIldlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIpOworICAgICAgICBjbGFz
c19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0b3IobGF5ZXJDbGFzcyksIChJTVApV2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MsICJAQDoiKTsKKyAgICB9
KTsKKyAgICAKKyAgICByZXR1cm4gdGhlQ2xhc3M7CiB9CisKK0BpbnRlcmZhY2UgV2ViQVZQbGF5
ZXJMYXllclZpZXcgOiBBVlBsYXllckxheWVyVmlldworQHByb3BlcnR5IChyZXRhaW4pIFVJVmll
dyogdmlkZW9WaWV3OwogQGVuZAogCitzdGF0aWMgQ0FMYXllciogV2ViQVZQbGF5ZXJMYXllclZp
ZXdfbGF5ZXJDbGFzcyhpZCwgU0VMKQoreworICAgIHJldHVybiBbV2ViQVZQbGF5ZXJMYXllciBj
bGFzc107Cit9CisKK3N0YXRpYyBBVlBsYXllckNvbnRyb2xsZXIqIFdlYkFWUGxheWVyTGF5ZXJW
aWV3X3BsYXllckNvbnRyb2xsZXIoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVy
VmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBs
YXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJd
OworICAgIHJldHVybiBbd2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVyXTsKK30KKwor
c3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlcihpZCBh
U2VsZiwgU0VMLCBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIpCit7CisgICAg
QVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGxh
eWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJM
YXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIFt3ZWJBVlBsYXllckxheWVyIHNldFBsYXllckNv
bnRyb2xsZXI6IHBsYXllckNvbnRyb2xsZXJdOworfQorCitzdGF0aWMgVUlWaWV3KiBXZWJBVlBs
YXllckxheWVyVmlld192aWRlb1ZpZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxh
eWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJB
VlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5
ZXJdOworICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1
YmxheWVyXTsKKyAgICBpZiAoIXZpZGVvTGF5ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
QVNTRVJUKFtbdmlkZW9MYXllciBkZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpnZXRVSVZpZXdDbGFz
cygpXSk7CisgICAgcmV0dXJuIChVSVZpZXcgKilbdmlkZW9MYXllciBkZWxlZ2F0ZV07Cit9CisK
K3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFZpZGVvVmlldyhpZCBhU2VsZiwg
U0VMLCBVSVZpZXcgKnZpZGVvVmlldykKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVy
TGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgV2ViQVZQbGF5ZXJMYXllciAqd2ViQVZQbGF5ZXJMYXll
ciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07Cisg
ICAgW3dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9TdWJsYXllcjpbdmlkZW9WaWV3IGxheWVyXV07
Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVv
VG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7CisgICAg
V2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIEFWUGlj
dHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXllclZpZXcg
cGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisKKyAgICBXZWJBVlBsYXllckxheWVy
ICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5
ZXJMYXllcl07CisgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQ
bGF5ZXJMYXllciAqKVtwaXBWaWV3IHBsYXllckxheWVyXTsKKyAgICBbcGxheWVyTGF5ZXIgc2V0
VmlkZW9HcmF2aXR5OmdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKV07CisgICAg
W3BpcFBsYXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6cGxheWVyTGF5ZXIudmlkZW9TdWJsYXll
cl07CisgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpwbGF5ZXJMYXllci52
aWRlb0RpbWVuc2lvbnNdOworICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6cGxh
eWVyTGF5ZXIudmlkZW9HcmF2aXR5XTsKKyAgICBbcGlwUGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRl
b0xheWVyRnJhbWU6cGxheWVyTGF5ZXIubW9kZWxWaWRlb0xheWVyRnJhbWVdOworICAgIFtwaXBQ
bGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOnBsYXllckxheWVyLnBsYXllckNvbnRyb2xs
ZXJdOworICAgIFtwaXBWaWV3IGFkZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107
Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0b3BSb3V0aW5nVmlkZW9U
b1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBX
ZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXll
ckxheWVyVmlldyBhZGRTdWJ2aWV3OnBsYXllckxheWVyVmlldy52aWRlb1ZpZXddOworfQorCitz
dGF0aWMgQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpXZWJBVlBsYXllckxheWVy
Vmlld19waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7Cisg
ICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAgIFdl
YkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXll
clZpZXcgdmFsdWVGb3JLZXk6QCJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyJdOwor
ICAgIGlmICghcGlwVmlldykgeworICAgICAgICBwaXBWaWV3ID0gW1tnZXRXZWJBVlBpY3R1cmVJ
blBpY3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm9dOworICAgICAgICBbcGxheWVyTGF5ZXJWaWV3IHNldFZhbHVlOnBpcFZpZXcgZm9yS2V5
OkAiX3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXciXTsKKyAgICB9CisgICAgcmV0dXJu
IHBpcFZpZXc7Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X2RlYWxsb2Mo
aWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJW
aWV3ID0gYVNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldz4gcGlwVmlldyA9IGFkb3B0TlMoW3BsYXllckxheWVyVmlldyB2YWx1ZUZvcktleTpA
Il9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Il0pOworICAgIFtwbGF5ZXJMYXllclZp
ZXcgc2V0VmFsdWU6bmlsIGZvcktleTpAIl9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
Il07CisgICAgb2JqY19zdXBlciBzdXBlckNsYXNzIHsgcGxheWVyTGF5ZXJWaWV3LCBnZXRBVlBs
YXllckxheWVyVmlld0NsYXNzKCkgfTsKKyAgICBhdXRvIHN1cGVyX2RlYWxsb2MgPSByZWludGVy
cHJldF9jYXN0PHZvaWQoKikob2JqY19zdXBlciosIFNFTCk+KG9iamNfbXNnU2VuZFN1cGVyKTsK
KyAgICBzdXBlcl9kZWFsbG9jKCZzdXBlckNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYykpOworfQor
CisjcHJhZ21hIG1hcmsgLSBNZXRob2RzCisKK3N0YXRpYyBDbGFzcyBnZXRXZWJBVlBsYXllckxh
eWVyVmlld0NsYXNzKCkKK3sKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0
QVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZpZXciLCAwKTsKKyAg
ICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYyksIChJTVAp
V2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYywgInZAOiIpOworICAgICAgICBjbGFzc19hZGRN
ZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiksIChJTVApV2Vi
QVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsKKyAgICAgICAg
Y2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IocGxheWVyQ29udHJvbGxlciksIChJ
TVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlciwgIkBAOiIpOworICAgICAg
ICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRWaWRlb1ZpZXc6KSwgKElN
UClXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1ZpZXcsICJ2QDpAIik7CisgICAgICAgIGNs
YXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHZpZGVvVmlldyksIChJTVApV2ViQVZQ
bGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3LCAiQEA6Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhv
ZCh0aGVDbGFzcywgQHNlbGVjdG9yKHN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zdGFydFJvdXRpbmdW
aWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywgInZAOiIpOworICAgICAgICBj
bGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzdG9wUm91dGluZ1ZpZGVvVG9QaWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19z
dG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3LCAidkA6Iik7
CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJ
blBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJAQDoiKTsKKyAgICAgICAgCisgICAgICAgIGNsYXNz
X2FkZEl2YXIodGhlQ2xhc3MsICJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIsIHNp
emVvZihXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKiksIGxvZzIoc2l6ZW9m
KFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKSksICJAIik7CisgICAgICAg
IAorICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xh
c3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xhc3MoIldlYkFWUGxheWVyTGF5ZXJWaWV3Iik7
CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZChtZXRhQ2xhc3MsIEBzZWxlY3RvcihsYXllckNsYXNz
KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzLCAiQEA6Iik7CisgICAgfSk7
CisgICAgcmV0dXJuIHRoZUNsYXNzOworfQorCiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogICAgIDogbV9wbGF5ZXJD
b250cm9sbGVyKGFkb3B0TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkK
IHsKQEAgLTgxOSw2ICs5NDEsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdAogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBo
YXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKKyAgICBXZWJBVlBsYXllckxh
eWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3
IHBsYXllckxheWVyXTsKKworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6Q0dT
aXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRIYXNF
bmFibGVkVmlkZW86aGFzVmlkZW9dOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q29udGVu
dERpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiB9CkBAIC04ODMsMTQgKzEw
MDgsMTQgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJu
YWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmEKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4
dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZSA9IGxvY2FsaXplZERldmlj
ZU5hbWU7CiAgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVy
bmFsUGxheWJhY2tUeXBlOwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0Fj
dGl2ZSA9IGVuYWJsZWQ7Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKSBzZXRIaWRk
ZW46ZW5hYmxlZF07CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjplbmFibGVkXTsK
IH0KIAogQGludGVyZmFjZSBVSVdpbmRvdyAoKQotLShCT09MKV9pc0hvc3RlZEluQW5vdGhlclBy
b2Nlc3M7CistIChCT09MKV9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3M7CiBAZW5kCiAKLXZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0Zm9y
bUxheWVyJiB2aWRlb0xheWVyLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwg
VUlWaWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spCit2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2
aWRlb1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxSZWN0LCBVSVZpZXcqIHBh
cmVudFZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
LCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaykKIHsKICAgICBBU1NFUlQobW9k
ZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAg
ICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1
cEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7CkBAIC04OTksNyArMTAyNCw2IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0Zm9ybUxheWVy
JiB2aWRlb0xheWVyCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNh
Y3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBtX3ZpZGVvTGF5ZXIgPSAmdmlkZW9M
YXllcjsKICAgICBtX21vZGUgPSBtb2RlOwogICAgIG1fcGFyZW50VmlldyA9IHBhcmVudFZpZXc7
CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBwYXJlbnRWaWV3LndpbmRvdzsKQEAgLTkxMyw1MSArMTAz
Nyw0NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxz
Y3JlZW4oUGxhdGZvcm1MYXllciYgdmlkZW9MYXllcgogICAgICAgICBbbV93aW5kb3cgbWFrZUtl
eUFuZFZpc2libGVdOwogICAgIH0KIAotICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVy
bGF5ZXJdOworICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdlYkFWUGxheWVy
TGF5ZXJWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFttX3BsYXllckxheWVyVmlldyBz
ZXRIaWRkZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsK
KyAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xh
c3MoKSBjbGVhckNvbG9yXV07CisgICAgCisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldFZpZGVv
VmlldzomdmlkZW9WaWV3XTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgYWRkU3Vidmlldzomdmlk
ZW9WaWV3XTsKIAotICAgIG1fbGF5ZXJIb3N0V3JhcHBlciA9IGFkb3B0TlMoW1tXZWJDQUxheWVy
SG9zdFdyYXBwZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbbV9sYXllckhvc3RXcmFwcGVyIHNldE1v
ZGVsOm1fdmlkZW9GdWxsc2NyZWVuTW9kZWxdOwotICAgIFttX2xheWVySG9zdFdyYXBwZXIgc2V0
VmlkZW9TdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOworICAgIFdlYkFWUGxheWVyTGF5ZXIg
KnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxh
eWVyTGF5ZXJdOwogCi0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFWVmlkZW9MYXll
ciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhpZGRlbjpbbV9w
bGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAgIFttX3ZpZGVv
TGF5ZXJDb250YWluZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBwZXIuZ2V0KCld
OworICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdodCgpKV07CisgICAgW3Bs
YXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250cm9sbGVyIGNvbnRlbnRE
aW1lbnNpb25zXV07CiAKLSAgICBDR1NpemUgdmlkZW9TaXplID0gW21fcGxheWVyQ29udHJvbGxl
ciBjb250ZW50RGltZW5zaW9uc107Ci0gICAgQ0dSZWN0IHZpZGVvUmVjdCA9IENHUmVjdE1ha2Uo
MCwgMCwgdmlkZW9TaXplLndpZHRoLCB2aWRlb1NpemUuaGVpZ2h0KTsKLSAgICBbbV92aWRlb0xh
eWVyQ29udGFpbmVyIHNldFZpZGVvUmVjdDp2aWRlb1JlY3RdOwotICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0xh
eWVyRnJhbWUodmlkZW9SZWN0KTsKLQotICAgIC8vIFRoaXMgbWV0aG9kIGhhcyBiZWVuIGRlcHJl
Y2F0ZWQgc28gaWdub3JlIHRoZSB3YXJuaW5nIHVudGlsIHdlIHBvcnQgb3VyIGNvZGUgdG8gdGhl
IG5ldyBBUEkuCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlcklu
c3RhbmNlKCkgaW5pdFdpdGhWaWRlb0xheWVyOm1fdmlkZW9MYXllckNvbnRhaW5lci5nZXQoKV0p
OwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIG1fcGxheWVyVmlld0NvbnRyb2xs
ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRX
aXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAKICAgICBbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwogICAgIFtt
X3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJv
bGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKICAgICBbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s6bV9hbGxv
d3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwogCi0gICAgW21fdmlkZW9MYXllckNvbnRhaW5l
ciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpXTsK
LQogICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdDb250cm9sbGVy
IGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CiAg
ICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKLSAgICAgICAgW3BhcmVudFZpZXcud2luZG93
IGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOworICAgICAgICBbcGFy
ZW50VmlldyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKIAotICAg
IFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW3BhcmVudFZpZXcgY29udmVy
dFJlY3Q6aW5pdGlhbFJlY3QgdG9WaWV3Om5pbF07CisgICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10uZnJhbWUgPSBbcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbml0aWFsUmVjdCB0b1Zp
ZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKIAogICAgIFtbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JD
bGFzcygpIGNsZWFyQ29sb3JdXTsKKyAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10g
c2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0b21NYXJn
aW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CisKICAgICBbW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOwogICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07CiAKICAgICBbQ0FUcmFuc2Fj
dGlvbiBjb21taXRdOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAg
ICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2NyZWVuKCk7Cisg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRo
aXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJv
bmdUaGlzLCB0aGlzXSB7CisgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikK
KyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3Jl
ZW4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZW50ZXJGdWxsc2NyZWVuKCkKQEAgLTk2OCw3ICsxMDg3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBtX2V4aXRSZXF1
ZXN0ZWQgPSBmYWxzZTsKICAgICBtX2VudGVyUmVxdWVzdGVkID0gdHJ1ZTsKIAotICAgIFttX3Zp
ZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xvckNsYXNzKCkg
YmxhY2tDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3Jv
dW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNrQ29sb3JdXTsKICAgICBpZiAobW9kZSgp
ID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBp
Y3R1cmUpCiAgICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIGVsc2UgaWYgKG1v
ZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCkKQEAgLTEwMTIsMTMgKzExMzEsMTIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmkKICAgICAK
ICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
eGl0RnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKQot
ICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZp
ZXcgY29udmVydFJlY3Q6ZmluYWxSZWN0IHRvVmlldzpuaWxdOwotICAgIGVsc2UKLSAgICAgICAg
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBmaW5hbFJlY3Q7CisgICAgCisg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNv
bnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10u
c3VwZXJ2aWV3XTsKIAotICAgIGlmIChbbV92aWRlb0xheWVyQ29udGFpbmVyIHZpZGVvTGF5ZXJH
cmF2aXR5XSAhPSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQotICAgICAgICBbbV92
aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9MYXllckdyYXZp
dHlSZXNpemVBc3BlY3RdOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdl
YkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIGlm
IChbcGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSAhPSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0KCkpCisgICAgICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6Z2V0QVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwogCiAgICAgaWYgKGlzTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSkgewpAQCAt
MTAzNywyMiArMTE1NSwyNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaQogCiAgICAgICAgICAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOwotICAgICAgICAgICAgW21fdmlkZW9MYXllckNvbnRhaW5lciBz
ZXRCYWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXSBDR0NvbG9y
XV07CisgICAgICAgICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltn
ZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBj
bGVhckNvbG9yXV07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAg
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICAgICAg
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAgICAgICAgICAg
ICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7Cisg
ICAgICAgICAgICB9KTsKICAgICAgICAgfV07CiAgICAgfTsKIH0KIAogQGludGVyZmFjZSBVSUFw
cGxpY2F0aW9uICgpCi0tKHZvaWQpX3NldFN0YXR1c0Jhck9yaWVudGF0aW9uOihVSUludGVyZmFj
ZU9yaWVudGF0aW9uKW87CistICh2b2lkKV9zZXRTdGF0dXNCYXJPcmllbnRhdGlvbjooVUlJbnRl
cmZhY2VPcmllbnRhdGlvbilvOwogQGVuZAogCiBAaW50ZXJmYWNlIFVJV2luZG93ICgpCi0tKFVJ
SW50ZXJmYWNlT3JpZW50YXRpb24paW50ZXJmYWNlT3JpZW50YXRpb247CistIChVSUludGVyZmFj
ZU9yaWVudGF0aW9uKWludGVyZmFjZU9yaWVudGF0aW9uOwogQGVuZAogCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCkBAIC0xMDgwLDE2
ICsxMjAwLDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFu
dXBGdWxsc2NyZWVuKCkKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikKICAgICAgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVyXTsKICAgICAK
LSAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbV92aWRlb0xh
eWVyQ29udGFpbmVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29u
dGFpbmVyIHNldFBsYXllclZpZXdDb250cm9sbGVyOm5pbF07CisgICAgW21fcGxheWVyTGF5ZXJW
aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBy
ZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAgIFttX2xheWVySG9zdFdyYXBwZXIgc2V0TW9kZWw6
bnVsbHB0cl07Ci0KLSAgICBtX2xheWVySG9zdFdyYXBwZXIgPSBuaWw7Ci0gICAgbV92aWRlb0xh
eWVyID0gbmlsOwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKKyAgICBtX3BsYXll
ckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gbmlsOwogICAg
IG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOwpA
QCAtMTEzNSw3ICsxMjQ5LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAgICBMT0coRnVs
bHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0
dXJuVG9JbmxpbmUoJXApIC0gdmlzaWJsZSglcykiLCB0aGlzLCBib29sU3RyaW5nKHZpc2libGUp
KTsKICAgICBpZiAobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjaykgewogICAgICAgICAKLSAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNv
bnZlcnRSZWN0OmlubGluZVJlY3QgdG9WaWV3Om5pbF07CisgICAgICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVS
ZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCiAg
ICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEY6Om1vdmUobV9w
cmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7CiAgICAgICAgIGNhbGxiYWNrKHZpc2libGUpOwpAQCAt
MTIwNiw3ICsxMzIwLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgbV9leGl0Q29tcGxldGVkID0gdHJ1ZTsK
IAotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlD
b2xvckNsYXNzKCkgY2xlYXJDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmll
dyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKICAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRV
SUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAKICAgICBjbGVhck1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5o
CmluZGV4IDcyOTE0ZGJmMjMxNTFjNGFlYzBhNmNmZmFlYTE1NzgyOGZmY2YxOWEuLjNjNTVhYTNi
MWMzNzk1NWZhMmZmMGRkZjVlYjgxMTljNzBhM2QyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC00OCwxMCAr
NDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCB2aWRlb0xheWVyRnJhbWUoKSBjb25zdCA9IDA7CiAgICAgZW51bSBWaWRlb0dyYXZpdHkg
eyBWaWRlb0dyYXZpdHlSZXNpemUsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0RmlsbCB9OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyR3Jh
dml0eShWaWRlb0dyYXZpdHkpID0gMDsKLSAgICB2aXJ0dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xh
eWVyR3Jhdml0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRp
YU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCA2OWM4ZjAx
YjhjM2YyZGU2YmIyMGU1Mjg5NmI0MjA0Zjc2MWRkNDY5Li4xYWEzY2U1YmJjOTA4Y2NkYTQ0YTNk
MjJiNDQyYTIwMmE3NmJlMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApA
QCAtNzIsOSArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdy
YXZpdHkoVmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90
IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VsZWN0
TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggOWM4OTVhYmYyM2NmZjQyMjAwZjYzNjhlNzZlZThmN2E0
MjE1NjEwZS4uYjg1MmU5ZmUwODYyMjg5NjQ4NmU3NzRiM2VhMDQ4NjRlNTNlNjI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMjU0LDExICsyNTQsNiBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJhbWUo
RmxvYXRSZWN0IHJlY3QpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShyZWN0KTsKIH0KIAotRmxvYXRSZWN0IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Ojp2aWRlb0xheWVyRnJhbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ZpZGVv
RnJhbWU7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHkg
Z3Jhdml0eSkKIHsKICAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvR3Jhdml0eSA9
IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7CkBAIC0yNzQsMjEgKzI2OSw2
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlCiAgICAgbV92aWRlb0VsZW1lbnQtPnNldFZpZGVv
RnVsbHNjcmVlbkdyYXZpdHkodmlkZW9HcmF2aXR5KTsKIH0KIAotV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWw6OlZpZGVvR3Jhdml0eSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdAotewotICAgIHN3aXRjaCAobV92aWRlb0VsZW1lbnQt
PnZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5ZXI6OlZpZGVv
R3Jhdml0eVJlc2l6ZToKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6ZTsKLSAgICBj
YXNlIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q6Ci0gICAgICAgIHJldHVy
biBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0gICAgY2FzZSBNZWRpYVBsYXllcjo6VmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0RmlsbDoKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGw7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFZpZGVvR3Jhdml0eVJlc2l6ZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBzZWxlY3RlZEF1
ZGlvSW5kZXgpCiB7CiAgICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNrID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKaW5kZXgg
N2NiYjA3YjY2M2RkZjEzNDE0MTdlZmJmZDU0Y2IwMzAzZmE2NGRlYi4uY2M3MTg5Yzc0NGUwOWVj
MGFkMDMzYjVhZjc1OTRlMGRkNjFkNzdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NvY29hL0FWS2l0U1BJLmgKQEAgLTM0LDkgKzM0LDEyIEBACiAjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKIAogI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVyLmg+CisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1Xb2JqYy1wcm9wZXJ0eS1uby1hdHRyaWJ1dGUiCisjaW1wb3J0IDxBVktpdC9BVlBsYXll
ckxheWVyVmlldy5oPgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2ltcG9ydCA8QVZL
aXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVktpdC9BVlBs
YXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHkuaD4KLSNpbXBvcnQgPEFWS2l0L0FWVmlkZW9M
YXllci5oPgogCiAjZWxzZQogCkBAIC01OCwxNyArNjEsMTcgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUpIHsKIEBwcm9w
ZXJ0eSAoTlNfTk9OQVRPTUlDX0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNvbnRyb2xsZXJT
dGF0dXMgc3RhdHVzOwogQGVuZAogCi1AcHJvdG9jb2wgQVZWaWRlb0xheWVyCi10eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBBVlZpZGVvTGF5ZXJHcmF2aXR5KSB7Ci0gICAgQVZWaWRlb0xheWVy
R3Jhdml0eUludmFsaWQgPSAwLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3Qg
PSAxLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsID0gMiwKLSAgICBB
VlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplID0gMywKLX07Ci0tICh2b2lkKXNldFBsYXllckNvbnRy
b2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBDR1JlY3QgdmlkZW9SZWN0OwotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBnZXR0ZXI9aXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlGb3JEaXNwbGF5
OworQGNsYXNzIEFWUGxheWVyTGF5ZXI7CisKK0BpbnRlcmZhY2UgQVZQaWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyOworQGVuZAorCitAaW50ZXJmYWNlIEFWUGxheWVy
TGF5ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWUGxh
eWVyTGF5ZXIgKnBsYXllckxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBB
VlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpY3R1cmVJblBpY3R1cmVQbGF5ZXJM
YXllclZpZXc7CistICh2b2lkKXN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3OworLSAodm9pZClzdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3OwogQGVuZAogCiBAcHJvdG9jb2wgQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ckRlbGVnYXRlIDxOU09iamVjdD4KQEAgLTg1LDE1ICs4OCwxNSBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb24pIHsK
IEBlbmQKIAogQGludGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9sbGVyIChEZXRhaWxzKQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoVmlkZW9MYXllcjooQ0FMYXllciA8QVZWaWRlb0xheWVyPiAq
KXZpZGVvTGF5ZXI7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6KEFW
UGxheWVyTGF5ZXJWaWV3ICopcGxheWVyTGF5ZXJWaWV3OwogLSAodm9pZCllbnRlckZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAKIC0gKEJPT0wp
aXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CiAtICh2b2lkKXN0YXJ0UGljdHVyZUluUGljdHVy
ZTsKIC0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7Ci0tICh2b2lkKXNldEFsbG93c1BpY3R1
cmVJblBpY3R1cmVQbGF5YmFjazooQk9PTClhbGxvdzsKIAorQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHN0cm9uZykgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWspIGlkIDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+
IGRlbGVnYXRlOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2NvY29hL1F1YXJ0ekNvcmVTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2Nv
YS9RdWFydHpDb3JlU1BJLmgKaW5kZXggNjcxYjUwZWFkNzcwNTA1OGZlMGE2YjE2NmFkODFhNjYz
OThlYzVlYS4uMWVjNzAxMzkyMDMwMDQyZmFlY2I4ZDc4NTBkZmIzYmM2MzYyMDhjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQVJlbmRlclNlcnZlci5oPgog
CiAjaWZkZWYgX19PQkpDX18KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllckhvc3QuaD4KICNp
bXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllclByaXZhdGUuaD4KIAogLy8gRklYTUU6IEFzIGEgd29y
a2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzE4OTg1MTUyPiwgd2UgY29uZGl0aW9uYWxseSBl
bmNsb3NlIHRoZSBmb2xsb3dpbmcKQEAgLTEyNSw2ICsxMjYsMTIgQEAgdHlwZWRlZiBlbnVtIHsK
ICsgKHZvaWQpYWRkQ29tbWl0SGFuZGxlcjoodm9pZCheKSh2b2lkKSlibG9jayBmb3JQaGFzZToo
Q0FUcmFuc2FjdGlvblBoYXNlKXBoYXNlOwogQGVuZAogI2VuZGlmCisKK0BpbnRlcmZhY2UgQ0FM
YXllckhvc3QgOiBDQUxheWVyCitAcHJvcGVydHkgdWludDMyX3QgY29udGV4dElkOworQHByb3Bl
cnR5IEJPT0wgaW5oZXJpdHNTZWN1cml0eTsKK0BlbmQKKwogI2VuZGlmIC8vIF9fT0JKQ19fCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMDhiZjNiY2U0M2JlZDFiNzkx
NDQ5NzRkMGQ4ODJjMTQ3ZGZkYmY1Ni4uZmEzMWVlZDQ0ZTMwNmM0MzVmOGY4MTE0OTM3YTk0MzU3
MGVlNDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC01MywxMCArNTMsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1fbWFuYWdlciA9IG51bGxwdHI7IH0K
IAotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVySG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJI
b3N0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRMYXllckhvc3QoUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+JiYgbGF5ZXJIb3N0KSB7IG1fbGF5ZXJIb3N0ID0gV1RGOjptb3ZlKGxheWVySG9zdCk7IH0K
LQotICAgIHZvaWQgc2V0SW5pdGlhbFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3Qg
ZnJhbWUpIHsgbV92aWRlb0xheWVyRnJhbWUgPSBmcmFtZTsgfQorICAgIFVJVmlldyAqbGF5ZXJI
b3N0VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0Vmlldy5nZXQoKTsgfQorICAgIHZv
aWQgc2V0TGF5ZXJIb3N0VmlldyhSZXRhaW5QdHI8VUlWaWV3PiYmIGxheWVySG9zdFZpZXcpIHsg
bV9sYXllckhvc3RWaWV3ID0gV1RGOjptb3ZlKGxheWVySG9zdFZpZXcpOyB9CiAKIHByaXZhdGU6
CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQpAQCAtNzgsOSArNzYsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvR3Jh
dml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWaWRlb0dyYXZpdHkgdmlkZW9MYXllckdyYXZp
dHkoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9w
dGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3Jl
ZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUpIG92ZXJyaWRlOwpAQCAtOTQsOSArOTAsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KiBtX21hbmFnZXI7CiAgICAgdWludDY0X3QgbV9j
b250ZXh0SWQ7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fbGF5ZXJIb3N0OwotICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBtX3ZpZGVvTGF5ZXJGcmFtZTsKLSAgICBWaWRlb0dyYXZpdHkg
bV92aWRlb0xheWVyR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSB9OworICAgIFJldGFpblB0
cjxVSVZpZXcgKj4gbV9sYXllckhvc3RWaWV3OwogfTsKIAogY2xhc3MgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCmluZGV4IDczY2M3YzJmZjJiZjVjZGQyMTcxYzk2MmE3YzMzNDVhNTBkNjE0
NzMuLjBkNTIzODQzZjZkNWRmYTJkOGI5YTE5MjQ3MjIzMWMwNjZjOTY4MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zNSw5ICszNSwzNCBAQAogI2ltcG9ydCAiV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9u
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGltZVJhbmdlcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAKK0BpbnRl
cmZhY2UgV2ViTGF5ZXJIb3N0VmlldyA6IFVJVmlldworQHByb3BlcnR5IChub25hdG9taWMsIGFz
c2lnbikgdWludDMyX3QgY29udGV4dElEOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViTGF5
ZXJIb3N0VmlldworCisrIChDbGFzcylsYXllckNsYXNzIHsKKyAgICByZXR1cm4gW0NBTGF5ZXJI
b3N0IGNsYXNzXTsKK30KKworLSAodWludDMyX3QpY29udGV4dElEIHsKKyAgICByZXR1cm4gW1tz
ZWxmIGxheWVySG9zdF0gY29udGV4dElkXTsKK30KKworLSAodm9pZClzZXRDb250ZXh0SUQ6KHVp
bnQzMl90KWNvbnRleHRJRCB7CisgICAgW1tzZWxmIGxheWVySG9zdF0gc2V0Q29udGV4dElkOmNv
bnRleHRJRF07Cit9CisKKy0gKENBTGF5ZXJIb3N0ICopbGF5ZXJIb3N0IHsKKyAgICByZXR1cm4g
KENBTGF5ZXJIb3N0ICopW3NlbGYgbGF5ZXJdOworfQorCitAZW5kCisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzOSwyOCArMTY0LDE2IEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RXhpdEZ1bGxzY3JlZW4o
KQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckZy
YW1lKFdlYkNvcmU6OkZsb2F0UmVjdCBmcmFtZSkKIHsKLSAgICBtX3ZpZGVvTGF5ZXJGcmFtZSA9
IGZyYW1lOwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFuYWdlci0+c2V0VmlkZW9M
YXllckZyYW1lKG1fY29udGV4dElkLCBmcmFtZSk7CiB9CiAKLVdlYkNvcmU6OkZsb2F0UmVjdCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnZpZGVvTGF5ZXJGcmFtZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fdmlkZW9MYXllckZyYW1lOwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViQ29yZTo6V2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogewotICAgIG1fdmlkZW9MYXll
ckdyYXZpdHkgPSBncmF2aXR5OwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFuYWdl
ci0+c2V0VmlkZW9MYXllckdyYXZpdHkobV9jb250ZXh0SWQsIGdyYXZpdHkpOwogfQogCi1XZWJD
b3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5IFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdAotewotICAgIHJldHVy
biBtX3ZpZGVvTGF5ZXJHcmF2aXR5OwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25JZCkKIHsKICAg
ICBpZiAobV9tYW5hZ2VyKQpAQCAtMjQwLDggKzI1Myw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKICAgICAgICAgc3RkOjp0aWUobW9kZWwsIGlu
dGVyZmFjZSkgPSB0dXBsZTsKIAogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKLSAg
ICAgICAgW21vZGVsLT5sYXllckhvc3QoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgICAg
IG1vZGVsLT5zZXRMYXllckhvc3QobnVsbHB0cik7CisgICAgICAgIFttb2RlbC0+bGF5ZXJIb3N0
VmlldygpIHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICBtb2RlbC0+c2V0TGF5ZXJIb3N0
VmlldyhudWxscHRyKTsKICAgICB9CiAKICAgICBtX2NvbnRleHRNYXAuY2xlYXIoKTsKQEAgLTMx
MCwxNiArMzIzLDE3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1
cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1CiAKICAgICBzdGQ6OnRpZSht
b2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAK
LSAgICBtb2RlbC0+c2V0SW5pdGlhbFZpZGVvTGF5ZXJGcmFtZShpbml0aWFsUmVjdCk7Ci0gICAg
bW9kZWwtPnNldExheWVySG9zdChXS01ha2VSZW5kZXJMYXllcih2aWRlb0xheWVySUQpKTsKKyAg
ICBSZXRhaW5QdHI8V2ViTGF5ZXJIb3N0Vmlldz4gdmlldyA9IGFkb3B0TlMoW1tXZWJMYXllckhv
c3RWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgW3ZpZXcgc2V0Q29udGV4dElEOnZpZGVvTGF5ZXJJ
RF07CisgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcodmlldyk7CiAgICAgaWYgKGhvc3RpbmdE
ZXZpY2VTY2FsZUZhY3RvciAhPSAxKSB7CiAgICAgICAgIC8vIEludmVydCB0aGUgc2NhbGUgdHJh
bnNmb3JtIGFkZGVkIGluIHRoZSBXZWJQcm9jZXNzIHRvIGZpeCA8cmRhcjovL3Byb2JsZW0vMTgz
MTY1NDI+LgogICAgICAgICBmbG9hdCBpbnZlcnNlU2NhbGUgPSAxIC8gaG9zdGluZ0RldmljZVNj
YWxlRmFjdG9yOwotICAgICAgICBbbW9kZWwtPmxheWVySG9zdCgpIHNldFRyYW5zZm9ybTpDQVRy
YW5zZm9ybTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52ZXJzZVNjYWxlLCAxKV07CisgICAg
ICAgIFtbbW9kZWwtPmxheWVySG9zdFZpZXcoKSBsYXllcl0gc2V0U3VibGF5ZXJUcmFuc2Zvcm06
Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShpbnZlcnNlU2NhbGUsIGludmVyc2VTY2FsZSwgMSldOwog
ICAgIH0KIAogICAgIFVJVmlldyAqcGFyZW50VmlldyA9IGRvd25jYXN0PFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk+KCptX3BhZ2UtPmRyYXdpbmdBcmVhKCkpLnJlbW90ZUxheWVyVHJl
ZUhvc3QoKS5yb290TGF5ZXIoKTsKLSAgICBpbnRlcmZhY2UtPnNldHVwRnVsbHNjcmVlbigqbW9k
ZWwtPmxheWVySG9zdCgpLCBpbml0aWFsUmVjdCwgcGFyZW50VmlldywgdmlkZW9GdWxsc2NyZWVu
TW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CisgICAgaW50ZXJmYWNlLT5zZXR1cEZ1bGxz
Y3JlZW4oKm1vZGVsLT5sYXllckhvc3RWaWV3KCksIGluaXRpYWxSZWN0LCBwYXJlbnRWaWV3LCB2
aWRlb0Z1bGxzY3JlZW5Nb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKIH0KIAogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBj
b250ZXh0SWQpCkBAIC01MDIsOCArNTE2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBh
dXRvJiBtb2RlbCA9IGVuc3VyZU1vZGVsKGNvbnRleHRJZCk7CiAKICAgICBbQ0FUcmFuc2FjdGlv
biBmbHVzaF07Ci0gICAgW21vZGVsLmxheWVySG9zdCgpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsK
LSAgICBtb2RlbC5zZXRMYXllckhvc3QobnVsbHB0cik7CisgICAgW21vZGVsLmxheWVySG9zdFZp
ZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBtb2RlbC5zZXRMYXllckhvc3RWaWV3KG51
bGxwdHIpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CiAKICAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bQppbmRleCA1MzQyNDY5MWNiMmUyOTk4ZTEzYWM4ZGVkNTBjMWI3NGE4NDUxNDI3Li44MWM0ZGM3
MGQzYjMwZDA0ODU4NmY4ZmM0NzhlODJmZTNlYzMyOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
QEAgLTIzMiw5ICsyMzIsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRl
clZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGUKICAgICBSZWZQdHI8
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwogICAgIHN0ZDo6
dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElk
KTsKIAorICAgIEZsb2F0UmVjdCBjbGllbnRSZWN0ID0gY2xpZW50UmVjdEZvckVsZW1lbnQoJnZp
ZGVvRWxlbWVudCk7CisgICAgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSA9IEZsb2F0UmVjdCgw
LCAwLCBjbGllbnRSZWN0LndpZHRoKCksIGNsaWVudFJlY3QuaGVpZ2h0KCkpOworICAgIAogICAg
IGludGVyZmFjZS0+c2V0VGFyZ2V0SXNGdWxsc2NyZWVuKHRydWUpOwogICAgIGludGVyZmFjZS0+
c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiAgICAgbW9kZWwtPnNldFZpZGVvRWxlbWVudCgmdmlk
ZW9FbGVtZW50KTsKKyAgICBtb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKHZpZGVvTGF5ZXJGcmFt
ZSk7CiAKICAgICBpZiAoaW50ZXJmYWNlLT5pc0FuaW1hdGluZygpKQogICAgICAgICByZXR1cm47
CkBAIC00MjgsNyArNDMyLDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
U2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIFtDQVRyYW5zYWN0aW9u
IGNvbW1pdF07CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBzdHJvbmdUaGlzKHRo
aXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJv
bmdUaGlzLCB0aGlzLCBjb250ZXh0SWRdIHsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICB9KTsKIH0KICAgICAKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257131</attachid>
            <date>2015-07-20 15:22:59 -0700</date>
            <delta_ts>2015-07-20 15:34:42 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-146862-20150720152146.patch</filename>
            <type>text/plain</type>
            <size>64020</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRlYjgzYzEyNmI0MzA3
NTQ4MTZjNWI0Y2Y1NjVjYzRkNmNmMzllOS4uMjdjMzdkNDNjOGE5M2M5ODk4OGJhZTI4NDY3ZmNi
ZDYwODUxYjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNS0wNy0yMCAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZQbGF5ZXJM
YXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBUaGUg
Q0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXllckhvc3RWaWV3IHRvIGJlIGNvbXBh
dGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAgICAgU29tZSBhbmltYXRpb24gaXMg
aW1wcm92ZWQgaW4gdGhlIGNvbnZlcnNpb24uCisKKyAgICAgICAgV2ViQVZQbGF5ZXJMYXllclZp
ZXcgYW5kIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyBkZXJpdmUgZnJvbSBB
VktpdCBhbmQgVUlLaXQgcmVzcGVjdGl2ZWx5LgorICAgICAgICBCZWNhdXNlIHRoZXNlIGZyYW1l
d29ya3MgYXJlIGxvYWRlZCBhdCBydW50aW1lLCB0aGVzZSBjbGFzc2VzIG11c3QgYmUgZ2VuZXJh
dGUgdXNpbmcgb2JqYy9ydW50aW1lLmggdG8KKyAgICAgICAgcmVnaXN0ZXIgdGhlbSBmcm9tIGMg
ZnVuY3Rpb25zIGF0IHJ1bnRpbWUuIFRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IG9mIHRoZXNlIFVJ
Vmlld3MgaXMgdGhhdCB0aGVpcgorICAgICAgICBiYWNraW5nIGxheWVyIGlzIGEgV2ViQVZQbGF5
ZXJMYXllci4KKworICAgICAgICBXZWJDQUxheWVySG9zdFdyYXBwZXIgYW5kIFdlYkFWVmlkZW9M
YXllciBhcmUgY29tYmluZWQgaW50byBXZWJBVlBsYXllckxheWVyIHRvIHNpbXBsaWZ5IHRoZSBo
aWVyYXJjaHkuCisgICAgICAgIFdlYkFWUGxheWVyTGF5ZXIgaXMgYSBzdGFuZC1pbiBmb3IgYW4g
QVZQbGF5ZXJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcik6IC1yZW1vdmVGcm9tU3VwZXJsYXllciBpcyByZWR1bmRhbnQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KTogc3luY1RleHRUcmFja0JvdW5kcyBvbiBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZSk6CisgICAgICAgIFdlIG5ldmVyIHdhbnQgYW5pbWF0aW9uIGhlcmUsIHNp
bmNlIGFsbCBhbmltYXRpb24gd2lsbCBoYXBwZW4gaW4gVUlWaWV3cy4gCisgICAgICAgIFRoaXMg
aXMganVzdCBmb3IgZ29pbmcgaW50byB0aGUgZmluYWwgc2l6ZSBhZnRlciBhIHRyYW5zZm9ybSBi
YXNlZCBhbmltYXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVl
bik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4pOiBsYXllciAtPiB2aWV3CisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBsYXll
ciAtPiB2aWV3CisgICAgICAgIFVzZSBmZW5jZSBwb3J0IHRvIHN5bmNocm9uaXplIGJldHdlZW4g
dGhlIFVJVGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFkLAorICAgICAgICB0aGUgc2FtZSB3YXkgV2Vi
S2l0MiB1c2VzIGEgZmVuY2UgcG9ydCB0byBzeW5jaHJvbml6ZSBiZXR3ZWVuIHByb2Nlc3Nlcy4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KToKKyAgICAgICAgTm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBjYWNoZSB2aWRl
b0dyYXZpdHkgYXQgdGhpcyBsZXZlbC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKworICAgICAgICAoLVtXZWJBVlBsYXll
ckxheWVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBkZWFsbG9jXSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgcGxheWVyQ29udHJvbGxlcl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHNldEJvdW5kczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJM
YXllciByZXNvbHZlQm91bmRzXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0Vmlk
ZW9HcmF2aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvR3Jhdml0eV0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvUmVjdF0pOgorICAgICAgICAoK1tX
ZWJBVlBsYXllckxheWVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0XSk6Cisg
ICAgICAgIEFkZGVkIGNsYXNzIFdlYkFWUGxheWVyTGF5ZXIsIHJlcGxhY2luZyBXZWJBVlZpZGVv
TGF5ZXIgYW5kIFdlYkNBTGF5ZXJIb3N0V3JhcHBlci4KKworICAgICAgICAoV2ViQVZQaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MpOgorICAgICAgICAoZ2V0V2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOgorICAgICAgICBBZGRlZCBydW50
aW1lIGNsYXNzIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldworCisgICAgICAg
IChXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzKToKKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZp
ZXdfc2V0UGxheWVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192
aWRlb1ZpZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0VmlkZW9WaWV3KToK
KyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KToKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3
X3N0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAg
ICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKToKKyAgICAgICAgQWRk
ZWQgcnVudGltZSBjbGFzcyBXZWJBVlBsYXllckxheWVyVmlldworCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKToKKyAgICAgICAg
RGltZW5zaW9ucyBhcmUgYWxzbyBzdG9yZWQgaW4gV2ViQVZQbGF5ZXJMYXllciBzbyBpdCBjYW4g
bWFrZSBkZWNpc2lvbnMgYWJvdXQKKyAgICAgICAgYW5pbWF0aW5nIHRoZSB2aWRlbyBsYXllci4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFs
UGxheWJhY2spOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVu
dGVyRnVsbHNjcmVlbik6IAorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIFN0cmFpZ2h0Zm9y
d2FyZCBsYXllciB0byB2aWV3IGNvbnZlcnNpb24uCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUpOgorICAgICAgICBT
ZXQgdmlldyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVyYXJjaHkgaW5zdGVhZCBvZiBhc3N1bWlu
ZyBpdCBpcyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJh
bWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGly
ZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAgIGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5n
IGRpZEV4aXRGdWxsc2NyZWVuKCkgdG8gYWxsb3dzIENBVHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRl
LgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxs
c2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJhbWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5
IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGlyZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAg
IGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5nIGRpZFNldHVwRnVsbHNjcmVlbigpIHRvIGFs
bG93cyBDQVRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4KKworICAgICAgICAoLVtXZWJDQUxheWVy
SG9zdFdyYXBwZXIgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDQUxheWVySG9z
dFdyYXBwZXIgc2V0VmlkZW9TdWJsYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ0FM
YXllckhvc3RXcmFwcGVyIHZpZGVvU3VibGF5ZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHNldEJvdW5kczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHJlc29sdmVCb3VuZHNdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xh
c3MgV2ViQ0FMYXllckhvc3RXcmFwcGVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGlu
dG8gV2ViQVZQbGF5ZXJMYXllci4KKworICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9M
YXllcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgaW5pdF0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRWaWRlb1N1YmxheWVy
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0Qm91bmRzOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdyYXZpdHk6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0
eV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgZW50ZXJQSVBNb2RlUmVk
aXJlY3RpbmdWaWRlb1RvTGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9M
YXllciBsZWF2ZVBJUE1vZGVdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xhc3MgV2ViQVZWaWRlb0xh
eWVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGludG8gV2ViQVZQbGF5ZXJMYXllci4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbToKKyAgICAgICAgTm8gbmVlZCB0byBzdG9yZSBmcmFtZSBhbmQgZ3Jhdml0eSBpbiB0
aGUgbW9kZWwuIEl0IGlzIHN0b3JlZCBpbiB0aGUgVUkgd2hlcmUgaXQgaXMgdXNlZC4KKworICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnZpZGVvTGF5ZXJGcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6dmlkZW9MYXllckdyYXZpdHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOiBBZGQgQVZQbGF5ZXJMYXllclZpZXcuCisKIDIwMTUtMDctMTcgIE1h
dHQgUmFqY2EgIDxtcmFqY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhIFNlc3Npb246IEFk
ZCBzdXBwb3J0IGZvciAnQ29udGVudCcgaW50ZXJydXB0aW9uIHR5cGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NDgzZWRiZDQzYmVhMGNmOTk5MWVlYjY2MWY1MGY2NThjYjIxMTkzYS4uMGU2NDAxZGFiMTZjNTA3
NTU4NWNmNjRjZGQ3N2VjNjUwYjFjMmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisy
MDE1LTA3LTIwICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBBVlBsYXllckxheWVyVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2ODYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgIFRoZSBDQUxheWVySG9zdCBpcyByZXBsYWNlZCB3aXRoIFdlYkxheWVySG9z
dFZpZXcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIFVJVmlldyBhbmltYXRpb25zLgorICAgICAgICB2
aWRlb0xheWVyRnJhbWUgYW5kIHZpZGVvTGF5ZXJHcmF2aXR5IG5vIGxvbmdlciBuZWVkIHRvIGJl
IHN0b3JlZCBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZAorICAgICAgICB3aGVyZSB0aGV5IGFyZSB1
c2VkIGluIHRoZSBpbnRlcmZhY2UuIFNvbWUgYW5pbWF0aW9uIGlzIGltcHJvdmVkIGluIHRoZSBj
b252ZXJzaW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKCtbV2ViTGF5ZXJIb3N0VmlldyBsYXllckNsYXNz
XSk6IEFkZCBjbGFzcyBXZWJMYXllckhvc3RWaWV3LgorICAgICAgICAoLVtXZWJMYXllckhvc3RW
aWV3IGNvbnRleHRJRF0pOgorICAgICAgICAoLVtXZWJMYXllckhvc3RWaWV3IHNldENvbnRleHRJ
RDpdKToKKyAgICAgICAgKC1bV2ViTGF5ZXJIb3N0VmlldyBsYXllckhvc3RdKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKTogbGF5
ZXIgLT4gdmlldworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnNldHVwRnVsbHNjcmVlbldpdGhJRCk6CisgICAgICAgIEFwcGx5IHRoZSBob3N0aW5nRGV2
aWNlU2NhbGVGYWN0b3IgdHJhbnNmb3JtIHRvIC1zdWJsYXllclRyYW5zZm9ybSBpbnN0ZWFkIG9m
IHRvCisgICAgICAgIC10cmFuc2Zvcm0uIFRoaXMgbW9yZSBkaXJlY3RseSBpbnZlcnRzIHRoZSB0
cmFuZm9ybSBXZWJQcm9jZXNzIGFuZCBhbGxvd3MgLXRyYW5zZm9ybQorICAgICAgICB0byBiZSB1
c2VkIGZvciBhbmltYXRpb24gaW4gdGhlIFVJUHJvY2Vzcy4gVGhpcyBpcyBpbXBvcnRhbnQgYmVj
YXVzZSBVSVZpZXcncyBhY3Rpb25zCisgICAgICAgIGFuaW1hdGUgLXRyYW5zZm9ybSwgYnV0IG5v
dCAtc3VibGF5ZXJUcmFzZm9ybS4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKTogbGF5ZXIgLT4gdmlldworICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnNldFZpZGVvTGF5
ZXJGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6dmlkZW9MYXllckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
dmlkZW9MYXllckdyYXZpdHkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAg
ICAgICAgU2V0IGluaXRpYWwgdmlkZW8gbGF5ZXIgZnJhbWUgdG8gZml4IHN0YXJ0IHBvaW50IG9m
IGFuaW1hdGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICBkaXNwYXRjaF9hc3luYyBhbGxvd3MgdGhl
IENBVHJhbnNhY3Rpb24gdG8gY29tcGxldGUgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCB0aGUgYW5p
bWF0aW9uLgorICAgICAgICBUaGlzIHByZXZlbnRzIGEgZmxhc2ggZHVyaW5nIGFuaW1hdGlvbi4K
KwogMjAxNS0wNy0xOCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVkdWNlIFBhc3NSZWZQdHIgaW4gV2ViS2l0MiAtIDMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCmluZGV4IDdiYWI1Yzc4YzVmZDkzYTJmMGE1NzZhYzVmOWMwOTU3YTE1OGE4ZGIuLmU5
OGRmZDlhZmMxYWE3ZjQzMzg1YmFkZDA4NmU3ODNhNWI1ZDM0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQpAQCAtMTEyNCw5ICsxMTI0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogICAg
IENBQ29udGV4dCAqbmV3Q29udGV4dCA9IG5pbDsKICAgICAKICAgICBpZiAobV92aWRlb0Z1bGxz
Y3JlZW5MYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAgW21fdmlkZW9MYXllciBzZXRG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUud2lkdGgoKSwgbV92
aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAgICAgICBbbV92aWRlb0xheWVyIHJl
bW92ZUZyb21TdXBlcmxheWVyXTsKICAgICAgICAgW21fdmlkZW9GdWxsc2NyZWVuTGF5ZXIgaW5z
ZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6MF07CisgICAgICAgIFttX3Zp
ZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1l
LndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0KCkpXTsKICAgICAgICAgbmV3
Q29udGV4dCA9IFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRleHRdOwogICAgIH0gZWxzZSBp
ZiAobV92aWRlb0lubGluZUxheWVyICYmIG1fdmlkZW9MYXllcikgewogICAgICAgICBbbV92aWRl
b0xheWVyIHNldEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91bmRzXV07CkBAIC0xMTU4LDEx
ICsxMTU3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRW
aWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1fdmlkZW9MYXllcikgewotICAgICAgICBbbV92aWRlb0xheWVyIHNldFN0eWxlOm5p
bF07IC8vIFRoaXMgZW5hYmxlcyBhY3Rpb25zLCBpLmUuIGltcGxpY2l0IGFuaW1hdGlvbnMuCi0g
ICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICAgICAgW21fdmlkZW9MYXllciBzZXRG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIGZyYW1lLndpZHRoKCksIGZyYW1lLmhlaWdodCgpKV07Ci0g
ICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0gICAgICAgIFttX3ZpZGVvTGF5ZXIgd2Vi
X2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICB9CiAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwog
fQpAQCAtMTE4Miw4ICsxMTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6CiAgICAgICAg
IHZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOwogICAg
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgCisgICAgaWYgKFttX3Zp
ZGVvTGF5ZXIgdmlkZW9HcmF2aXR5XSA9PSB2aWRlb0dyYXZpdHkpCisgICAgICAgIHJldHVybjsK
IAogICAgIFttX3ZpZGVvTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OnZpZGVvR3Jhdml0eV07CisgICAg
c3luY1RleHRUcmFja0JvdW5kcygpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXI6OlZpZGVvRnVs
bHNjcmVlbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IGQx
OWFmMDFmOWU5Yzk3MDIzZDk5YzA5MTRkZDljNGYwM2Q1ZjFhYmMuLjYwZDI4YmMyZmQzYzI5MmU0
MjZlM2VhOWYxZmE2YjhlNzllMGExYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQpAQCAtMzAsNiArMzAsOCBAQAogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0LmgiCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlF1YXJ0ekNvcmVTUEku
aCIKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1w
b3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKQEAgLTM3LDYgKzM5LDkgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
VGhyZWFkUnVuLmg+CiAKK1NPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xB
U1MoVUlLaXQsIFVJVmlldykKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSA4MDIwMCB8fCAhSEFWRShBVktJVCkKQEAg
LTEyOSw5ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9mcmFtZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVy
R3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZ3Jhdml0eTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vs
ZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC0xMzksMTAgKzE0Miw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBtX2ludGVyZmFj
ZTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1fbW9k
ZWw7CiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVtZW50OwotICAgIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOworICAgIFJldGFp
blB0cjxVSVZpZXc+IG1fdmlkZW9GdWxsc2NyZWVuVmlldzsKICAgICBSZXRhaW5QdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwotICAgIEZsb2F0UmVjdCBtX2Zy
YW1lOwotICAgIFZpZGVvR3Jhdml0eSBtX2dyYXZpdHk7CiB9OwogCiAjcHJhZ21hIG1hcmsgV2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKQEAgLTE1MSw4ICsxNTIsOSBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQog
ewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4o
W3N0cm9uZ1RoaXMsIHRoaXNdIHsKLSAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIobV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7CisgICAgUmV0YWluUHRyPENBTGF5
ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07
CisgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXll
cl0geworICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxz
Y3JlZW5MYXllci5nZXQoKSk7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFj
ZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIH0pOwpAQCAtMTc3LDYgKzE3OSw3IEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2Ny
ZWVuKCkKICAgICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwobnVsbHB0
cik7CiAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KG51bGxwdHIpOwogICAgIG1faW50ZXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX3ZpZGVvRnVsbHNj
cmVlblZpZXcgPSBuaWw7CiAgICAgCiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbc3Ryb25n
VGhpcywgdGhpc10gewpAQCAtMTg1LDcgKzE4OCw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9tb2Rl
bC0+c2V0VmlkZW9FbGVtZW50KG51bGxwdHIpOwogICAgICAgICBtX21vZGVsID0gbnVsbHB0cjsK
ICAgICAgICAgbV92aWRlb0VsZW1lbnQgPSBudWxscHRyOwotICAgICAgICBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyID0gbmlsOwogICAgICAgICAKICAgICAgICAgW21fY29udHJvbGxlciBkaWRGaW5p
c2hGdWxsc2NyZWVuOnRoaXNdOwogICAgIH0pOwpAQCAtNDUwLDE4ICs0NTIsMjUgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEV4aXRGdWxsc2NyZWVu
KCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5
ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0g
ICAgbV9mcmFtZSA9IGZyYW1lOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXMsIGZyYW1lXSB7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVl
bkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CisKKyAgICBtYWNoX3BvcnRf
bmFtZV90IGZlbmNlUG9ydCA9IFtbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgY29udGV4dF0gY3JlYXRl
RmVuY2VQb3J0XTsKKyAgICAKKyAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIGZy
YW1lLCBmZW5jZVBvcnQsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7CisgICAgICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRp
b246MF07CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9tb2RlbC0+c2V0Vmlk
ZW9MYXllckZyYW1lKGZyYW1lKTsKKyAgICAgICAgW1t2aWRlb0Z1bGxzY3JlZW5MYXllciBjb250
ZXh0XSBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKKyAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2Nh
dGUobWFjaF90YXNrX3NlbGYoKSwgZmVuY2VQb3J0KTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24g
Y29tbWl0XTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZp
ZGVvR3Jhdml0eSB2aWRlb0dyYXZpdHkpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0g
ICAgbV9ncmF2aXR5ID0gdmlkZW9HcmF2aXR5OwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4o
W3N0cm9uZ1RoaXMsIHRoaXMsIHZpZGVvR3Jhdml0eV0gewogICAgICAgICBpZiAobV9tb2RlbCkK
QEAgLTUxMCwxOSArNTE5LDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgbV9pbnRl
cmZhY2UgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCk7CiAgICAg
bV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMpOwog
ICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKKyAgICBt
X3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBhZG9wdE5TKFtbZ2V0VUlWaWV3Q2xhc3MoKSBhbGxvY10g
aW5pdF0pOwogICAgIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRo
aXMsIHZpZXdSZWYsIG1vZGVdIHsKICAgICAgICAgbV9tb2RlbCA9IFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKICAgICAgICAgbV9tb2RlbC0+c2V0V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlKHRoaXMpOwogICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Vs
ZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwogICAgICAgICAKICAgICAgICAgYm9vbCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1
cmVJblBpY3R1cmUoKm1fdmlkZW9FbGVtZW50LmdldCgpKTsKICAgICAgICAgSW50UmVjdCB2aWRl
b0VsZW1lbnRDbGllbnRSZWN0ID0gbV92aWRlb0VsZW1lbnQtPmNsaWVudFJlY3QoKTsKICAgICAg
ICAgCiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtz
dHJvbmdUaGlzLCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3UmVmLCBtb2RlLCBh
bGxvd3NQaWN0dXJlSW5QaWN0dXJlXSB7Ci0gICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0dXBG
dWxsc2NyZWVuKCptX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpLCB2aWRlb0VsZW1lbnRDbGll
bnRSZWN0LCB2aWV3UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKKyAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1fdmlkZW9GdWxsc2NyZWVu
Vmlldy5nZXQoKSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwg
YWxsb3dzUGljdHVyZUluUGljdHVyZSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCA2ZmVmZGMwYTAxOGY3ZDdlZjY5ZDA5OWUwZTRlNDBj
MDk4YjczNDI0Li5kMzM3ZDUyNjEzMDAwMmM3YWFkZWVhNjIzMDk0Zjk4Y2RkOGY0NDk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtNDUsOCArNDUsOCBAQCBPQkpDX0NMQVNTIFVJ
Vmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93OwogT0JKQ19DTEFTUyBVSVZpZXc7
CiBPQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdlYkFWVmlkZW9MYXllcjsKLU9CSkNf
Q0xBU1MgV2ViQ0FMYXllckhvc3RXcmFwcGVyOworT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVy
VmlldzsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllcjsKIAogbmFtZXNwYWNlIFdURiB7CiBj
bGFzcyBTdHJpbmc7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlk
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0RXh0ZXJuYWxQbGF5YmFjayhi
b29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0cmluZyBsb2Nh
bGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgc2V0dXBGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXImLCBjb25zdCBJbnRSZWN0JiBp
bml0aWFsUmVjdCwgVUlWaWV3ICosIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spOworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiwgY29uc3QgSW50
UmVjdCYgaW5pdGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZp
bmFsUmVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsZWFudXBGdWxsc2Ny
ZWVuKCk7CkBAIC0xMzMsOSArMTMzLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgUmV0YWluUHRyPFdl
YkFWUGxheWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVyOwogICAgIFJldGFpblB0cjxB
VlBsYXllclZpZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9sbGVyOwotICAgIFJldGFp
blB0cjxDQUxheWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWluUHRyPFdlYkFWVmlkZW9MYXll
cj4gbV92aWRlb0xheWVyQ29udGFpbmVyOwotICAgIFJldGFpblB0cjxXZWJDQUxheWVySG9zdFdy
YXBwZXI+IG1fbGF5ZXJIb3N0V3JhcHBlcjsKICAgICBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCog
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAgICBXZWJWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRyIH07
CiAKQEAgLTE0NCw2ICsxNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmV0YWluUHRyPFVJVmlld0Nv
bnRyb2xsZXI+IG1fdmlld0NvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV9wYXJl
bnRWaWV3OwogICAgIFJldGFpblB0cjxVSVdpbmRvdz4gbV9wYXJlbnRXaW5kb3c7CisgICAgUmV0
YWluUHRyPFdlYkFWUGxheWVyTGF5ZXJWaWV3PiBtX3BsYXllckxheWVyVmlldzsKICAgICBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbV9tb2RlIHsgSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjazsKICAgICBib29sIG1fYWxs
b3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbQppbmRleCAzZGJlYTU3MWQzNTUxYWNhYWMzYzEwYjc1YTZkZGE5ZjI3OTk4NGRh
Li5lNmZhMjVkMDY0MDBkM2VjNzNjNDVlNWQ4OTlhMWY3NGE1MGE0MDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC0zOSw2ICszOSw4IEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgogI2ltcG9y
dCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgorI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTUwLDExICs1
MiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhB
VkZvdW5kYXRpb24pCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVy
KQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJl
c2l6ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5
ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RB
TlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNT
dHJpbmcgKikKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKIFNPRlRfTElOS19DTEFTUyhB
VktpdCwgQVZQbGF5ZXJDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXll
clZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlZhbHVlVGltaW5nKQor
U09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckxheWVyVmlldykKK1NPRlRfTElOS19DTEFT
UyhBVktpdCwgQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KQogCiBTT0ZUX0xJTktf
RlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQpA
QCAtNzQsMTMgKzgxLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFs
KQogCiBAY2xhc3MgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAotQGludGVyZmFjZSBXZWJB
VlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVn
YXRlPgoteworQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCA8QVZQ
bGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiB7CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbiAqX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwogICAgIFdlYkFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKl9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOwogfQog
Ci0tKHZvaWQpcmVzZXRTdGF0ZTsKKy0gKHZvaWQpcmVzZXRTdGF0ZTsKIAogQHByb3BlcnR5IChy
ZXRhaW4pIEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlclByb3h5OwogQHByb3Bl
cnR5IChhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBkZWxlZ2F0ZTsKQEAgLTE1MCw3
ICsxNTYsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKLS0odm9pZClyZXNldFN0YXRlIHsKKy0gKHZvaWQpcmVzZXRT
dGF0ZQorewogICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsKICAgICBzZWxmLm1heFRpbWUg
PSAwOwogICAgIHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5kVGltZXMgPSAwOwpAQCAtMTgx
LDcgKzE4OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQogICAg
IHNlbGYuY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbiA9IG5pbDsKIH0KIAotLSAo
QVZQbGF5ZXIqKSBwbGF5ZXIgeworLSAoQVZQbGF5ZXIgKikgcGxheWVyCit7CiAgICAgcmV0dXJu
IG5pbDsKIH0KIApAQCAtNTY4LDEwMSArNTc2LDIwIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxT
CiBAaW1wbGVtZW50YXRpb24gV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbgogQGVuZAogCi0KLUBp
bnRlcmZhY2UgV2ViQ0FMYXllckhvc3RXcmFwcGVyIDogQ0FMYXllcgotQHByb3BlcnR5IChhc3Np
Z24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbDsKLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIFdlYkNBTGF5ZXJIb3N0V3JhcHBlciB7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IF92aWRl
b1N1YmxheWVyOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbTlNPYmplY3QgY2FuY2Vs
UHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQot
LSAodm9pZClzZXRWaWRlb1N1YmxheWVyOihDQUxheWVyKil2aWRlb1N1YmxheWVyCi17Ci0gICAg
X3ZpZGVvU3VibGF5ZXIgPSB2aWRlb1N1YmxheWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZp
ZGVvU3VibGF5ZXJdOwotfQotCi0tIChDQUxheWVyKil2aWRlb1N1YmxheWVyCi17Ci0gICAgcmV0
dXJuIF92aWRlb1N1YmxheWVyLmdldCgpOwotfQotCi0tICh2b2lkKXNldEJvdW5kczooQ0dSZWN0
KWJvdW5kcwotewotICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYuYm91bmRz
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW3N1cGVyIHNldEJvdW5kczpib3VuZHNdOwotCi0g
ICAgW192aWRlb1N1YmxheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgo
Ym91bmRzKSwgQ0dSZWN0R2V0TWlkWShib3VuZHMpKV07Ci0KLSAgICBpZiAoIXNlbGYubW9kZWwp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0UmVjdCB2aWRlb0ZyYW1lID0gc2VsZi5tb2Rl
bC0+dmlkZW9MYXllckZyYW1lKCk7Ci0gICAgRmxvYXRSZWN0IHRhcmdldEZyYW1lOwotICAgIHN3
aXRjaCAoc2VsZi5tb2RlbC0+dmlkZW9MYXllckdyYXZpdHkoKSkgewotICAgIGNhc2UgV2ViQ29y
ZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZToKLSAgICAgICAg
dGFyZ2V0RnJhbWUgPSBib3VuZHM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDoKLSAgICAg
ICAgdGFyZ2V0RnJhbWUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qodmlk
ZW9GcmFtZS5zaXplKCkuYXNwZWN0UmF0aW8oKSwgYm91bmRzKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbDoKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNw
ZWN0UmF0aW9Bcm91bmRSZWN0KHZpZGVvRnJhbWUuc2l6ZSgpLmFzcGVjdFJhdGlvKCksIGJvdW5k
cyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RNYWtlU2NhbGUodGFyZ2V0RnJhbWUud2lkdGgoKSAvIHZpZGVvRnJhbWUu
d2lkdGgoKSwgdGFyZ2V0RnJhbWUuaGVpZ2h0KCkgLyB2aWRlb0ZyYW1lLmhlaWdodCgpLCAxKTsK
LSAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLQot
ICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgb2JqZWN0Om5pbF07Ci0gICAgW3Nl
bGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91bmRzKSB3aXRoT2JqZWN0Om5p
bCBhZnRlckRlbGF5OltDQVRyYW5zYWN0aW9uIGFuaW1hdGlvbkR1cmF0aW9uXSArIDAuMV07Ci19
Ci0KLS0gKHZvaWQpcmVzb2x2ZUJvdW5kcwotewotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91
c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2
ZUJvdW5kcykgb2JqZWN0Om5pbF07Ci0gICAgaWYgKCFzZWxmLm1vZGVsKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0
QW5pbWF0aW9uRHVyYXRpb246MF07Ci0KLSAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJU
cmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICBzZWxmLm1vZGVsLT5zZXRWaWRl
b0xheWVyRnJhbWUoW3NlbGYgYm91bmRzXSk7Ci0gICAgCi0gICAgW0NBVHJhbnNhY3Rpb24gY29t
bWl0XTsKLX0KLUBlbmQKLQotQGludGVyZmFjZSBXZWJBVlZpZGVvTGF5ZXIgOiBDQUxheWVyIDxB
VlZpZGVvTGF5ZXI+Ci0rKFdlYkFWVmlkZW9MYXllciAqKXZpZGVvTGF5ZXI7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXIgPSBpc1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFkeUZv
ckRpc3BsYXk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dSZWN0IHZpZGVvUmVjdDsKLS0gKHZv
aWQpc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5
ZXJWaWV3Q29udHJvbGxlcjsKLS0gKHZvaWQpc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJD
b250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRh
aW4pIENBTGF5ZXIqIHZpZGVvU3VibGF5ZXI7CitAaW50ZXJmYWNlIFdlYkFWUGxheWVyTGF5ZXIg
OiBDQUxheWVyCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0cmluZyAqdmlkZW9H
cmF2aXR5OworQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc1JlYWR5Rm9yRGlzcGxheSkg
Qk9PTCByZWFkeUZvckRpc3BsYXk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBBVlBs
YXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmV0YWluKSBDQUxheWVyICp2aWRlb1N1YmxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHksIG51bGxhYmxlKSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKK0Bwcm9w
ZXJ0eSBDR1NpemUgdmlkZW9EaW1lbnNpb25zOworQHByb3BlcnR5IENHUmVjdCBtb2RlbFZpZGVv
TGF5ZXJGcmFtZTsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkFWVmlkZW9MYXllcgotewor
QGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIgewogICAgIFJldGFpblB0cjxXZWJBVlBs
YXllckNvbnRyb2xsZXI+IF9hdlBsYXllckNvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPEFWUGxh
eWVyVmlld0NvbnRyb2xsZXI+IF9hdlBsYXllclZpZXdDb250cm9sbGVyOwogICAgIFJldGFpblB0
cjxDQUxheWVyPiBfdmlkZW9TdWJsYXllcjsKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5IF92aWRl
b0xheWVyR3Jhdml0eTsKLX0KLQotKyhXZWJBVlZpZGVvTGF5ZXIgKil2aWRlb0xheWVyCi17Ci0g
ICAgcmV0dXJuIFtbW1dlYkFWVmlkZW9MYXllciBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3ZpZGVvR3Jhdml0eTsKIH0KIAogLSAoaW5zdGFuY2V0
eXBlKWluaXQKQEAgLTY3MCwyNiArNTk3LDMxIEBAIHN0YXRpYyBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTCiAg
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikgewogICAgICAgICBbc2VsZiBz
ZXRNYXNrc1RvQm91bmRzOllFU107Ci0gICAgICAgIFtzZWxmIHNldFZpZGVvTGF5ZXJHcmF2aXR5
OkFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RdOworICAgICAgICBfdmlkZW9HcmF2aXR5
ID0gZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpOwogICAgIH0KICAgICByZXR1
cm4gc2VsZjsKIH0KIAorLSAodm9pZClkZWFsbG9jCit7CisgICAgW05TT2JqZWN0IGNhbmNlbFBy
ZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihy
ZXNvbHZlQm91bmRzKSBvYmplY3Q6bmlsXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0g
KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIKK3sKKyAgICByZXR1cm4gKEFW
UGxheWVyQ29udHJvbGxlciAqKV9hdlBsYXllckNvbnRyb2xsZXIuZ2V0KCk7Cit9CisKIC0gKHZv
aWQpc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJv
bGxlcgogewogICAgIEFTU0VSVCghcGxheWVyQ29udHJvbGxlciB8fCBbcGxheWVyQ29udHJvbGxl
ciBpc0tpbmRPZkNsYXNzOltXZWJBVlBsYXllckNvbnRyb2xsZXIgY2xhc3NdXSk7CiAgICAgX2F2
UGxheWVyQ29udHJvbGxlciA9IChXZWJBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250cm9s
bGVyOwogfQogCi0tICh2b2lkKXNldFBsYXllclZpZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdD
b250cm9sbGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIKLXsKLSAgICBfYXZQbGF5ZXJWaWV3Q29u
dHJvbGxlciA9IHBsYXllclZpZXdDb250cm9sbGVyOwotfQotCiAtICh2b2lkKXNldFZpZGVvU3Vi
bGF5ZXI6KENBTGF5ZXIgKil2aWRlb1N1YmxheWVyCiB7CiAgICAgX3ZpZGVvU3VibGF5ZXIgPSB2
aWRlb1N1YmxheWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZpZGVvU3VibGF5ZXJdOwogfQog
CiAtIChDQUxheWVyKil2aWRlb1N1YmxheWVyCkBAIC02OTksMjcgKzYzMSw3OSBAQCBzdGF0aWMg
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNv
bnZlcnRUb0V4aXRGdWxsUwogCiAtICh2b2lkKXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcwogewor
ICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYuYm91bmRzKSkKKyAgICAgICAg
cmV0dXJuOworICAgIAogICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91bmRzXTsKKyAgICAKKyAgICBp
ZiAoW192aWRlb1N1YmxheWVyIHN1cGVybGF5ZXJdICE9IHNlbGYpCisgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChbX3ZpZGVvU3VibGF5ZXIgc3VwZXJsYXllcl0gPT0gc2VsZikgewotICAgICAg
ICBbX3ZpZGVvU3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChi
b3VuZHMpLCBDR1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKLSAgICAgICAgW192aWRlb1N1YmxheWVy
IHNldEJvdW5kczpib3VuZHNdOwotICAgIH0KKyAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0UG9zaXRp
b246Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBDR1JlY3RHZXRNaWRZKGJvdW5k
cykpXTsKKyAgICAKKyAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0IHNvdXJjZVZpZGVvRnJhbWU7CisgICAgRmxv
YXRSZWN0IHRhcmdldFZpZGVvRnJhbWU7CisgICAgZmxvYXQgdmlkZW9Bc3BlY3RSYXRpbyA9IHNl
bGYudmlkZW9EaW1lbnNpb25zLndpZHRoIC8gc2VsZi52aWRlb0RpbWVuc2lvbnMuaGVpZ2h0Owor
ICAgIAorICAgIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSgpIGlzRXF1YWxUb1N0
cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKKyAgICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNl
bGYubW9kZWxWaWRlb0xheWVyRnJhbWU7CisgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzZWxm
LmJvdW5kczsKKyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0KCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgeworICAgICAgICBzb3Vy
Y2VWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVv
QXNwZWN0UmF0aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0YXJnZXRW
aWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNw
ZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0
eV0pIHsKKyAgICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RS
YXRpb0Fyb3VuZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFt
ZSk7CisgICAgICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAs
IHNvdXJjZVZpZGVvRnJhbWUud2lkdGgoKSwgc291cmNlVmlkZW9GcmFtZS5oZWlnaHQoKSk7Cisg
ICAgICAgIFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckZyYW1l
KHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0g
c21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBz
ZWxmLmJvdW5kcyk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
CisgICAgVUlWaWV3ICp2aWV3ID0gW192aWRlb1N1YmxheWVyIGRlbGVnYXRlXTsKKyAgICBDR0Fm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSh0YXJn
ZXRWaWRlb0ZyYW1lLndpZHRoKCkgLyBzb3VyY2VWaWRlb0ZyYW1lLndpZHRoKCksIHRhcmdldFZp
ZGVvRnJhbWUuaGVpZ2h0KCkgLyBzb3VyY2VWaWRlb0ZyYW1lLmhlaWdodCgpKTsKKyAgICBbdmll
dyBzZXRUcmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICAKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJl
dmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJl
c29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOworICAgIAorICAgIGlmICghQ0dBZmZpbmVUcmFuc2Zv
cm1FcXVhbFRvVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIHRyYW5zZm9ybSkp
CisgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykg
d2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpbQ0FUcmFuc2FjdGlvbiBhbmltYXRpb25EdXJhdGlv
bl0gKyAwLjFdOworfQorCistICh2b2lkKXJlc29sdmVCb3VuZHMKK3sKKyAgICBbTlNPYmplY3Qg
Y2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOworICAgIGlmICghW19hdlBsYXllckNv
bnRyb2xsZXIgZGVsZWdhdGVdKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKFtfdmlk
ZW9TdWJsYXllciBzdXBlcmxheWVyXSAhPSBzZWxmKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldEFuaW1hdGlv
bkR1cmF0aW9uOjBdOworICAgIAorICAgIFsoVUlWaWV3ICopW192aWRlb1N1YmxheWVyIGRlbGVn
YXRlXSBzZXRUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eV07CisgICAgc2VsZi5t
b2RlbFZpZGVvTGF5ZXJGcmFtZSA9IFtzZWxmIGJvdW5kc107CisgICAgW19hdlBsYXllckNvbnRy
b2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJG
cmFtZSk7CisgICAgCisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIAotLSAodm9pZClz
ZXRWaWRlb0xheWVyR3Jhdml0eTooQVZWaWRlb0xheWVyR3Jhdml0eSl2aWRlb0xheWVyR3Jhdml0
eQorLSAodm9pZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0g
ICAgX3ZpZGVvTGF5ZXJHcmF2aXR5ID0gdmlkZW9MYXllckdyYXZpdHk7CisgICAgX3ZpZGVvR3Jh
dml0eSA9IHZpZGVvR3Jhdml0eTsKICAgICAKICAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9sbGVy
IGRlbGVnYXRlXSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBpZiAodmlkZW9MYXll
ckdyYXZpdHkgPT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSkKKyAgICBpZiAodmlkZW9HcmF2
aXR5ID09IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKSkKICAgICAgICAgZ3Jhdml0eSA9
IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemU7Ci0g
ICAgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3Bl
Y3QpCisgICAgaWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0KCkpCiAgICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGVsc2UgaWYgKHZpZGVvTGF5ZXJH
cmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsKQorICAgIGVsc2Ug
aWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0Rmls
bCgpKQogICAgICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6
OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTcyNywyNCArNzExLDE2MiBAQCBzdGF0aWMgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRG
dWxsUwogICAgIFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+c2V0VmlkZW9MYXllckdy
YXZpdHkoZ3Jhdml0eSk7CiB9CiAKLS0gKEFWVmlkZW9MYXllckdyYXZpdHkpdmlkZW9MYXllckdy
YXZpdHkKKy0gKE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0gICAgcmV0dXJuIF92aWRlb0xh
eWVyR3Jhdml0eTsKKyAgICByZXR1cm4gX3ZpZGVvR3Jhdml0eS5nZXQoKTsKIH0KIAotLSAodm9p
ZCllbnRlclBJUE1vZGVSZWRpcmVjdGluZ1ZpZGVvVG9MYXllcjooQ0FMYXllciAqKWxheWVyCist
IChDR1JlY3QpdmlkZW9SZWN0CiB7Ci0gICAgW192aWRlb1N1YmxheWVyIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKLSAgICBbbGF5ZXIgYWRkU3VibGF5ZXI6X3ZpZGVvU3VibGF5ZXIuZ2V0KCldOwor
ICAgIGZsb2F0IHZpZGVvQXNwZWN0UmF0aW8gPSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAv
IHNlbGYudmlkZW9EaW1lbnNpb25zLmhlaWdodDsKKyAgICAKKyAgICBpZiAoW2dldEFWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZp
dHldKQorICAgICAgICByZXR1cm4gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0
KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICBpZiAoW2dldEFWTGF5ZXJWaWRl
b0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2
aXR5XSkKKyAgICAgICAgcmV0dXJuIHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJl
Y3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOworCisgICAgcmV0dXJuIHNlbGYuYm91
bmRzOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0
Cit7CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpAInZpZGVvRGltZW5zaW9ucyIs
IEAidmlkZW9HcmF2aXR5IiwgbmlsXTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdlYkFWUGlj
dHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyA6IEFWUGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldworQGVuZAorCitzdGF0aWMgQ0FMYXllciogV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MoaWQsIFNFTCkKK3sKKyAgICByZXR1cm4gW1dlYkFWUGxh
eWVyTGF5ZXIgY2xhc3NdOwogfQogCi0tICh2b2lkKWxlYXZlUElQTW9kZQorc3RhdGljIENsYXNz
IGdldFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld0NsYXNzKCkKIHsKLSAgICBb
X3ZpZGVvU3VibGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgIFtzZWxmIGFkZFN1Ymxh
eWVyOl92aWRlb1N1YmxheWVyLmdldCgpXTsKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBu
aWw7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hf
b25jZSgmb25jZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFz
c1BhaXIoZ2V0QVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSwgIldlYkFW
UGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIsIDApOworICAgICAgICBvYmpjX3JlZ2lz
dGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xhc3MgbWV0YUNsYXNzID0gb2JqY19n
ZXRNZXRhQ2xhc3MoIldlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIpOworICAg
ICAgICBjbGFzc19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0b3IobGF5ZXJDbGFzcyksIChJ
TVApV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MsICJAQDoi
KTsKKyAgICB9KTsKKyAgICAKKyAgICByZXR1cm4gdGhlQ2xhc3M7CiB9CisKK0BpbnRlcmZhY2Ug
V2ViQVZQbGF5ZXJMYXllclZpZXcgOiBBVlBsYXllckxheWVyVmlldworQHByb3BlcnR5IChyZXRh
aW4pIFVJVmlldyogdmlkZW9WaWV3OwogQGVuZAogCitzdGF0aWMgQ0FMYXllciogV2ViQVZQbGF5
ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyhpZCwgU0VMKQoreworICAgIHJldHVybiBbV2ViQVZQbGF5
ZXJMYXllciBjbGFzc107Cit9CisKK3N0YXRpYyBBVlBsYXllckNvbnRyb2xsZXIqIFdlYkFWUGxh
eWVyTGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBBVlBs
YXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxheWVy
ICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIgcGxh
eWVyTGF5ZXJdOworICAgIHJldHVybiBbd2ViQVZQbGF5ZXJMYXllciBwbGF5ZXJDb250cm9sbGVy
XTsKK30KKworc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJv
bGxlcihpZCBhU2VsZiwgU0VMLCBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXIp
Cit7CisgICAgQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworICAg
IFdlYkFWUGxheWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAq
KVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIFt3ZWJBVlBsYXllckxheWVyIHNl
dFBsYXllckNvbnRyb2xsZXI6IHBsYXllckNvbnRyb2xsZXJdOworfQorCitzdGF0aWMgVUlWaWV3
KiBXZWJBVlBsYXllckxheWVyVmlld192aWRlb1ZpZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBB
VlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxh
eWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIg
cGxheWVyTGF5ZXJdOworICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXll
ciB2aWRlb1N1YmxheWVyXTsKKyAgICBpZiAoIXZpZGVvTGF5ZXIpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgQVNTRVJUKFtbdmlkZW9MYXllciBkZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpnZXRV
SVZpZXdDbGFzcygpXSk7CisgICAgcmV0dXJuIChVSVZpZXcgKilbdmlkZW9MYXllciBkZWxlZ2F0
ZV07Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFZpZGVvVmlldyhp
ZCBhU2VsZiwgU0VMLCBVSVZpZXcgKnZpZGVvVmlldykKK3sKKyAgICBBVlBsYXllckxheWVyVmll
dyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgV2ViQVZQbGF5ZXJMYXllciAqd2ViQVZQ
bGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJM
YXllcl07CisgICAgW3dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9TdWJsYXllcjpbdmlkZW9WaWV3
IGxheWVyXV07Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91
dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwp
Cit7CisgICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOwor
ICAgIEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IFtwbGF5ZXJM
YXllclZpZXcgcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisKKyAgICBXZWJBVlBs
YXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVy
VmlldyBwbGF5ZXJMYXllcl07CisgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIg
PSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3IHBsYXllckxheWVyXTsKKyAgICBbcGxheWVy
TGF5ZXIgc2V0VmlkZW9HcmF2aXR5OmdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Qo
KV07CisgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6cGxheWVyTGF5ZXIudmlk
ZW9TdWJsYXllcl07CisgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpwbGF5
ZXJMYXllci52aWRlb0RpbWVuc2lvbnNdOworICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb0dy
YXZpdHk6cGxheWVyTGF5ZXIudmlkZW9HcmF2aXR5XTsKKyAgICBbcGlwUGxheWVyTGF5ZXIgc2V0
TW9kZWxWaWRlb0xheWVyRnJhbWU6cGxheWVyTGF5ZXIubW9kZWxWaWRlb0xheWVyRnJhbWVdOwor
ICAgIFtwaXBQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOnBsYXllckxheWVyLnBsYXll
ckNvbnRyb2xsZXJdOworICAgIFtwaXBWaWV3IGFkZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZp
ZGVvVmlld107Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0b3BSb3V0
aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcoaWQgYVNlbGYsIFNFTCkK
K3sKKyAgICBXZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7Cisg
ICAgW3BsYXllckxheWVyVmlldyBhZGRTdWJ2aWV3OnBsYXllckxheWVyVmlldy52aWRlb1ZpZXdd
OworfQorCitzdGF0aWMgQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpXZWJBVlBs
YXllckxheWVyVmlld19waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBT
RUwpCit7CisgICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxm
OworICAgIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IFtw
bGF5ZXJMYXllclZpZXcgdmFsdWVGb3JLZXk6QCJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVy
VmlldyJdOworICAgIGlmICghcGlwVmlldykgeworICAgICAgICBwaXBWaWV3ID0gW1tnZXRXZWJB
VlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcygpIGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdFplcm9dOworICAgICAgICBbcGxheWVyTGF5ZXJWaWV3IHNldFZhbHVlOnBpcFZp
ZXcgZm9yS2V5OkAiX3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXciXTsKKyAgICB9Cisg
ICAgcmV0dXJuIHBpcFZpZXc7Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3
X2RlYWxsb2MoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJBVlBsYXllckxheWVyVmlldyAqcGxh
eWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgUmV0YWluUHRyPFdlYkFWUGljdHVyZUluUGljdHVy
ZVBsYXllckxheWVyVmlldz4gcGlwVmlldyA9IGFkb3B0TlMoW3BsYXllckxheWVyVmlldyB2YWx1
ZUZvcktleTpAIl9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Il0pOworICAgIFtwbGF5
ZXJMYXllclZpZXcgc2V0VmFsdWU6bmlsIGZvcktleTpAIl9waWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3Il07CisgICAgb2JqY19zdXBlciBzdXBlckNsYXNzIHsgcGxheWVyTGF5ZXJWaWV3
LCBnZXRBVlBsYXllckxheWVyVmlld0NsYXNzKCkgfTsKKyAgICBhdXRvIHN1cGVyX2RlYWxsb2Mg
PSByZWludGVycHJldF9jYXN0PHZvaWQoKikob2JqY19zdXBlciosIFNFTCk+KG9iamNfbXNnU2Vu
ZFN1cGVyKTsKKyAgICBzdXBlcl9kZWFsbG9jKCZzdXBlckNsYXNzLCBAc2VsZWN0b3IoZGVhbGxv
YykpOworfQorCisjcHJhZ21hIG1hcmsgLSBNZXRob2RzCisKK3N0YXRpYyBDbGFzcyBnZXRXZWJB
VlBsYXllckxheWVyVmlld0NsYXNzKCkKK3sKKyAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBu
aWw7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hf
b25jZSgmb25jZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFz
c1BhaXIoZ2V0QVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZpZXci
LCAwKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZGVhbGxv
YyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYywgInZAOiIpOworICAgICAgICBj
bGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiks
IChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsK
KyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IocGxheWVyQ29udHJv
bGxlciksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlciwgIkBAOiIp
OworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRWaWRlb1Zp
ZXc6KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1ZpZXcsICJ2QDpAIik7Cisg
ICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHZpZGVvVmlldyksIChJ
TVApV2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3LCAiQEA6Iik7CisgICAgICAgIGNsYXNz
X2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zdGFy
dFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywgInZAOiIpOwor
ICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzdG9wUm91dGluZ1Zp
ZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxh
eWVyVmlld19zdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
LCAidkA6Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHBp
Y3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3
X3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJAQDoiKTsKKyAgICAgICAgCisgICAg
ICAgIGNsYXNzX2FkZEl2YXIodGhlQ2xhc3MsICJfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVy
VmlldyIsIHNpemVvZihXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKiksIGxv
ZzIoc2l6ZW9mKFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKSksICJAIik7
CisgICAgICAgIAorICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAg
ICAgICAgQ2xhc3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xhc3MoIldlYkFWUGxheWVyTGF5
ZXJWaWV3Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZChtZXRhQ2xhc3MsIEBzZWxlY3Rvcihs
YXllckNsYXNzKSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzLCAiQEA6Iik7
CisgICAgfSk7CisgICAgcmV0dXJuIHRoZUNsYXNzOworfQorCiBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogICAgIDog
bV9wbGF5ZXJDb250cm9sbGVyKGFkb3B0TlMoW1tXZWJBVlBsYXllckNvbnRyb2xsZXIgYWxsb2Nd
IGluaXRdKSkKIHsKQEAgLTgyNiw2ICs5NDgsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdAog
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0RpbWVuc2lv
bnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKKyAgICBXZWJB
VlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxheWVy
TGF5ZXJWaWV3IHBsYXllckxheWVyXTsKKworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVu
c2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiAgICAgW21fcGxheWVyQ29udHJvbGxl
ciBzZXRIYXNFbmFibGVkVmlkZW86aGFzVmlkZW9dOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIg
c2V0Q29udGVudERpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiB9CkBAIC04
OTAsMTQgKzEwMTUsMTQgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmEKICAgICBwbGF5ZXJDb250
cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9jYWxpemVkTmFtZSA9IGxvY2Fs
aXplZERldmljZU5hbWU7CiAgICAgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrVHlw
ZSA9IGV4dGVybmFsUGxheWJhY2tUeXBlOwogICAgIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQ
bGF5YmFja0FjdGl2ZSA9IGVuYWJsZWQ7Ci0gICAgW21fdmlkZW9MYXllckNvbnRhaW5lci5nZXQo
KSBzZXRIaWRkZW46ZW5hYmxlZF07CisgICAgW21fcGxheWVyTGF5ZXJWaWV3IHNldEhpZGRlbjpl
bmFibGVkXTsKIH0KIAogQGludGVyZmFjZSBVSVdpbmRvdyAoKQotLShCT09MKV9pc0hvc3RlZElu
QW5vdGhlclByb2Nlc3M7CistIChCT09MKV9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3M7CiBAZW5k
CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVl
bihQbGF0Zm9ybUxheWVyJiB2aWRlb0xheWVyLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0
aWFsUmVjdCwgVUlWaWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2sp
Cit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4o
VUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxSZWN0LCBV
SVZpZXcqIHBhcmVudFZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaykKIHsKICAgICBB
U1NFUlQobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXR1cEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7CkBAIC05MDYsNyArMTAzMSw2IEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0
Zm9ybUxheWVyJiB2aWRlb0xheWVyCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAg
W0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBtX3ZpZGVvTGF5ZXIg
PSAmdmlkZW9MYXllcjsKICAgICBtX21vZGUgPSBtb2RlOwogICAgIG1fcGFyZW50VmlldyA9IHBh
cmVudFZpZXc7CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBwYXJlbnRWaWV3LndpbmRvdzsKQEAgLTky
MCw1MSArMTA0NCw0NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXR1cEZ1bGxzY3JlZW4oUGxhdGZvcm1MYXllciYgdmlkZW9MYXllcgogICAgICAgICBbbV93aW5k
b3cgbWFrZUtleUFuZFZpc2libGVdOwogICAgIH0KIAotICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOworICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdl
YkFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFttX3BsYXllckxh
eWVyVmlldyBzZXRIaWRkZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tB
Y3RpdmVdXTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRV
SUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CisgICAgCisgICAgW21fcGxheWVyTGF5ZXJWaWV3
IHNldFZpZGVvVmlldzomdmlkZW9WaWV3XTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgYWRkU3Vi
dmlldzomdmlkZW9WaWV3XTsKIAotICAgIG1fbGF5ZXJIb3N0V3JhcHBlciA9IGFkb3B0TlMoW1tX
ZWJDQUxheWVySG9zdFdyYXBwZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbbV9sYXllckhvc3RXcmFw
cGVyIHNldE1vZGVsOm1fdmlkZW9GdWxsc2NyZWVuTW9kZWxdOwotICAgIFttX2xheWVySG9zdFdy
YXBwZXIgc2V0VmlkZW9TdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOworICAgIFdlYkFWUGxh
eWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXll
clZpZXcgcGxheWVyTGF5ZXJdOwogCi0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFW
VmlkZW9MYXllciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhp
ZGRlbjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAg
IFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBw
ZXIuZ2V0KCldOworICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdodCgpKV07
CisgICAgW3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250cm9sbGVy
IGNvbnRlbnREaW1lbnNpb25zXV07CiAKLSAgICBDR1NpemUgdmlkZW9TaXplID0gW21fcGxheWVy
Q29udHJvbGxlciBjb250ZW50RGltZW5zaW9uc107Ci0gICAgQ0dSZWN0IHZpZGVvUmVjdCA9IENH
UmVjdE1ha2UoMCwgMCwgdmlkZW9TaXplLndpZHRoLCB2aWRlb1NpemUuaGVpZ2h0KTsKLSAgICBb
bV92aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvUmVjdDp2aWRlb1JlY3RdOwotICAgIGlmICht
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5z
ZXRWaWRlb0xheWVyRnJhbWUodmlkZW9SZWN0KTsKLQotICAgIC8vIFRoaXMgbWV0aG9kIGhhcyBi
ZWVuIGRlcHJlY2F0ZWQgc28gaWdub3JlIHRoZSB3YXJuaW5nIHVudGlsIHdlIHBvcnQgb3VyIGNv
ZGUgdG8gdGhlIG5ldyBBUEkuCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0g
ICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhWaWRlb0xheWVyOm1fdmlkZW9MYXllckNvbnRhaW5l
ci5nZXQoKV0pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIG1fcGxheWVyVmll
d0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5j
ZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAK
ICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9d
OwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxh
eWVyQ29udHJvbGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJh
Y2s6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwogCi0gICAgW21fdmlkZW9MYXll
ckNvbnRhaW5lciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVy
LmdldCgpXTsKLQogICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdD
b250cm9sbGVyIGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5n
ZXQoKV07CiAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3Bs
YXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKLSAgICAgICAgW3BhcmVudFZp
ZXcud2luZG93IGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOworICAg
ICAgICBbcGFyZW50VmlldyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXdd
XTsKIAotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW3BhcmVudFZp
ZXcgY29udmVydFJlY3Q6aW5pdGlhbFJlY3QgdG9WaWV3Om5pbF07CisgICAgW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbml0aWFs
UmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKIAog
ICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dl
dFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKKyAgICBbW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10gc2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVC
b3R0b21NYXJnaW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CisK
ICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOwogICAg
IFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07CiAKICAgICBb
Q0FUcmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2Ny
ZWVuKCk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJv
bmdUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7CisgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcikKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1
cEZ1bGxzY3JlZW4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKQEAgLTk3NSw3ICsxMDk0LDcgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBt
X2V4aXRSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBtX2VudGVyUmVxdWVzdGVkID0gdHJ1ZTsKIAot
ICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xv
ckNsYXNzKCkgYmxhY2tDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmlldyBz
ZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNrQ29sb3JdXTsKICAgICBp
ZiAobW9kZSgpID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBp
Y3R1cmVJblBpY3R1cmUpCiAgICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIGVs
c2UgaWYgKG1vZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZCkKQEAgLTEwMTksMTMgKzExMzgsMTIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZmkKICAgICAKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpleGl0RnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIGlmIChtX3ZpZXdDb250
cm9sbGVyKQotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFtt
X3BhcmVudFZpZXcgY29udmVydFJlY3Q6ZmluYWxSZWN0IHRvVmlldzpuaWxdOwotICAgIGVsc2UK
LSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBmaW5hbFJlY3Q7
CisgICAgCisgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJl
bnRWaWV3IGNvbnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10uc3VwZXJ2aWV3XTsKIAotICAgIGlmIChbbV92aWRlb0xheWVyQ29udGFpbmVyIHZp
ZGVvTGF5ZXJHcmF2aXR5XSAhPSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQotICAg
ICAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9M
YXllckdyYXZpdHlSZXNpemVBc3BlY3RdOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxh
eWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJd
OworICAgIGlmIChbcGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSAhPSBnZXRBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0KCkpCisgICAgICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZp
dHk6Z2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwogCiAgICAgaWYgKGlzTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJl
KSkgewpAQCAtMTA0NCwyMiArMTE2MiwyNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaQogCiAg
ICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgICAgICAgICBbQ0FUcmFuc2Fj
dGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotICAgICAgICAgICAgW21fdmlkZW9MYXllckNv
bnRhaW5lciBzZXRCYWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9y
XSBDR0NvbG9yXV07CisgICAgICAgICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3Vu
ZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9y
Q2xhc3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OwogCi0gICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAg
ICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7
CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBe
eworICAgICAgICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAg
ICAgICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2Ny
ZWVuKCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfV07CiAgICAgfTsKIH0KIAogQGludGVy
ZmFjZSBVSUFwcGxpY2F0aW9uICgpCi0tKHZvaWQpX3NldFN0YXR1c0Jhck9yaWVudGF0aW9uOihV
SUludGVyZmFjZU9yaWVudGF0aW9uKW87CistICh2b2lkKV9zZXRTdGF0dXNCYXJPcmllbnRhdGlv
bjooVUlJbnRlcmZhY2VPcmllbnRhdGlvbilvOwogQGVuZAogCiBAaW50ZXJmYWNlIFVJV2luZG93
ICgpCi0tKFVJSW50ZXJmYWNlT3JpZW50YXRpb24paW50ZXJmYWNlT3JpZW50YXRpb247CistIChV
SUludGVyZmFjZU9yaWVudGF0aW9uKWludGVyZmFjZU9yaWVudGF0aW9uOwogQGVuZAogCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCkBA
IC0xMDg3LDE2ICsxMjA3LDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmNsZWFudXBGdWxsc2NyZWVuKCkKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikKICAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVy
XTsKICAgICAKLSAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBb
bV92aWRlb0xheWVyQ29udGFpbmVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbV92aWRl
b0xheWVyQ29udGFpbmVyIHNldFBsYXllclZpZXdDb250cm9sbGVyOm5pbF07CisgICAgW21fcGxh
eWVyTGF5ZXJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIFtbbV92aWV3Q29udHJvbGxl
ciB2aWV3XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAgIFttX2xheWVySG9zdFdyYXBwZXIg
c2V0TW9kZWw6bnVsbHB0cl07Ci0KLSAgICBtX2xheWVySG9zdFdyYXBwZXIgPSBuaWw7Ci0gICAg
bV92aWRlb0xheWVyID0gbmlsOwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKKyAg
ICBtX3BsYXllckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0g
bmlsOwogICAgIG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVy
ID0gbmlsOwpAQCAtMTE0Miw3ICsxMjU2LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAg
ICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVw
YXJlZFRvUmV0dXJuVG9JbmxpbmUoJXApIC0gdmlzaWJsZSglcykiLCB0aGlzLCBib29sU3RyaW5n
KHZpc2libGUpKTsKICAgICBpZiAobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjaykgewogICAgICAg
ICAKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJl
bnRWaWV3IGNvbnZlcnRSZWN0OmlubGluZVJlY3QgdG9WaWV3Om5pbF07CisgICAgICAgIFttX3Bs
YXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVj
dDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZp
ZXddOwogCiAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEY6
Om1vdmUobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7CiAgICAgICAgIGNhbGxiYWNrKHZpc2li
bGUpOwpAQCAtMTIxMyw3ICsxMzI3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgbV9leGl0Q29tcGxldGVk
ID0gdHJ1ZTsKIAotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9y
OltbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXll
ckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29s
b3JdXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENv
bG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAKICAgICBjbGVhck1vZGUoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC5oCmluZGV4IDcyOTE0ZGJmMjMxNTFjNGFlYzBhNmNmZmFlYTE1NzgyOGZmY2YxOWEu
LjNjNTVhYTNiMWMzNzk1NWZhMmZmMGRkZjVlYjgxMTljNzBhM2QyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBA
IC00OCwxMCArNDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2aXJ0
dWFsIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUoKSBjb25zdCA9IDA7CiAgICAgZW51bSBWaWRl
b0dyYXZpdHkgeyBWaWRlb0dyYXZpdHlSZXNpemUsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwg
VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCB9OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0xheWVyR3Jhdml0eShWaWRlb0dyYXZpdHkpID0gMDsKLSAgICB2aXJ0dWFsIFZpZGVvR3Jhdml0
eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0
QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRl
eCA2OWM4ZjAxYjhjM2YyZGU2YmIyMGU1Mjg5NmI0MjA0Zjc2MWRkNDY5Li4xYWEzY2U1YmJjOTA4
Y2NkYTQ0YTNkMjJiNDQyYTIwMmE3NmJlMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQuaApAQCAtNzIsOSArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlk
ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUo
KSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Vmlk
ZW9MYXllckdyYXZpdHkoVmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggOWM4OTVhYmYyM2NmZjQyMjAwZjYzNjhl
NzZlZThmN2E0MjE1NjEwZS4uYjg1MmU5ZmUwODYyMjg5NjQ4NmU3NzRiM2VhMDQ4NjRlNTNlNjI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMjU0LDExICsyNTQs
NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xh
eWVyRnJhbWUoRmxvYXRSZWN0IHJlY3QpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZShyZWN0KTsKIH0KIAotRmxvYXRSZWN0IFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Ojp2aWRlb0xheWVyRnJhbWUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3ZpZGVvRnJhbWU7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRl
b0dyYXZpdHkgZ3Jhdml0eSkKIHsKICAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVv
R3Jhdml0eSA9IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7CkBAIC0yNzQs
MjEgKzI2OSw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlCiAgICAgbV92aWRlb0VsZW1lbnQt
PnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkodmlkZW9HcmF2aXR5KTsKIH0KIAotV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdAotewotICAgIHN3aXRjaCAobV92aWRl
b0VsZW1lbnQtPnZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZToKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6
ZTsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q6Ci0gICAg
ICAgIHJldHVybiBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0gICAgY2FzZSBNZWRpYVBsYXll
cjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDoKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGw7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6ZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBz
ZWxlY3RlZEF1ZGlvSW5kZXgpCiB7CiAgICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNr
ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2Nv
YS9BVktpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJ
LmgKaW5kZXggN2NiYjA3YjY2M2RkZjEzNDE0MTdlZmJmZDU0Y2IwMzAzZmE2NGRlYi4uY2M3MTg5
Yzc0NGUwOWVjMGFkMDMzYjVhZjc1OTRlMGRkNjFkNzdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKQEAgLTM0LDkgKzM0LDEyIEBACiAjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKIAogI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVy
Lmg+CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1Xb2JqYy1wcm9wZXJ0eS1uby1hdHRyaWJ1dGUiCisjaW1wb3J0IDxBVktp
dC9BVlBsYXllckxheWVyVmlldy5oPgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2lt
cG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxB
VktpdC9BVlBsYXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHkuaD4KLSNpbXBvcnQgPEFWS2l0
L0FWVmlkZW9MYXllci5oPgogCiAjZWxzZQogCkBAIC01OCwxNyArNjEsMTcgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUp
IHsKIEBwcm9wZXJ0eSAoTlNfTk9OQVRPTUlDX0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNv
bnRyb2xsZXJTdGF0dXMgc3RhdHVzOwogQGVuZAogCi1AcHJvdG9jb2wgQVZWaWRlb0xheWVyCi10
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlZpZGVvTGF5ZXJHcmF2aXR5KSB7Ci0gICAgQVZW
aWRlb0xheWVyR3Jhdml0eUludmFsaWQgPSAwLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNp
emVBc3BlY3QgPSAxLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsID0g
MiwKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplID0gMywKLX07Ci0tICh2b2lkKXNldFBs
YXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0
eTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR1JlY3QgdmlkZW9SZWN0OwotQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlG
b3JEaXNwbGF5OworQGNsYXNzIEFWUGxheWVyTGF5ZXI7CisKK0BpbnRlcmZhY2UgQVZQaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyOworQGVuZAorCitAaW50ZXJmYWNl
IEFWUGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpY3R1cmVJblBpY3R1
cmVQbGF5ZXJMYXllclZpZXc7CistICh2b2lkKXN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3OworLSAodm9pZClzdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3OwogQGVuZAogCiBAcHJvdG9jb2wgQVZQbGF5ZXJWaWV3
Q29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KQEAgLTg1LDE1ICs4OCwxNSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5S
ZWFzb24pIHsKIEBlbmQKIAogQGludGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9sbGVyIChEZXRh
aWxzKQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlkZW9MYXllcjooQ0FMYXllciA8QVZWaWRl
b0xheWVyPiAqKXZpZGVvTGF5ZXI7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQbGF5ZXJMYXll
clZpZXc6KEFWUGxheWVyTGF5ZXJWaWV3ICopcGxheWVyTGF5ZXJWaWV3OwogLSAodm9pZCllbnRl
ckZ1bGxTY3JlZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClleGl0RnVsbFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAK
IC0gKEJPT0wpaXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CiAtICh2b2lkKXN0YXJ0UGljdHVy
ZUluUGljdHVyZTsKIC0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7Ci0tICh2b2lkKXNldEFs
bG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazooQk9PTClhbGxvdzsKIAorQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOwogQHByb3BlcnR5
IChub25hdG9taWMsIHN0cm9uZykgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVy
OwogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxBVlBsYXllclZpZXdDb250cm9sbGVy
RGVsZWdhdGU+IGRlbGVnYXRlOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKaW5kZXggN2Q5OGQ0M2IwODI5NmRmMjdiZDlhNzg5
ZGU3NjEyOTkzMWEwMzhkOS4uZWY0MDgwM2I1YjcwNzFjM2I5NjljZDYzY2NmZTE1YzQ5NjhlZjk5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNv
cmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29y
ZVNQSS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQVJlbmRlclNl
cnZlci5oPgogCiAjaWZkZWYgX19PQkpDX18KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllckhv
c3QuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllclByaXZhdGUuaD4KIAogLy8gRklYTUU6
IEFzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzE4OTg1MTUyPiwgd2UgY29uZGl0
aW9uYWxseSBlbmNsb3NlIHRoZSBmb2xsb3dpbmcKQEAgLTEzNCw2ICsxMzUsMTIgQEAgdHlwZWRl
ZiBlbnVtIHsKICsgKHZvaWQpYWRkQ29tbWl0SGFuZGxlcjoodm9pZCheKSh2b2lkKSlibG9jayBm
b3JQaGFzZTooQ0FUcmFuc2FjdGlvblBoYXNlKXBoYXNlOwogQGVuZAogI2VuZGlmCisKK0BpbnRl
cmZhY2UgQ0FMYXllckhvc3QgOiBDQUxheWVyCitAcHJvcGVydHkgdWludDMyX3QgY29udGV4dElk
OworQHByb3BlcnR5IEJPT0wgaW5oZXJpdHNTZWN1cml0eTsKK0BlbmQKKwogI2VuZGlmIC8vIF9f
T0JKQ19fCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMDhiZjNiY2U0
M2JlZDFiNzkxNDQ5NzRkMGQ4ODJjMTQ3ZGZkYmY1Ni4uZmEzMWVlZDQ0ZTMwNmM0MzVmOGY4MTE0
OTM3YTk0MzU3MGVlNDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC01MywxMCAr
NTMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1fbWFuYWdlciA9IG51
bGxwdHI7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVySG9zdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXJIb3N0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRMYXllckhvc3QoUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+JiYgbGF5ZXJIb3N0KSB7IG1fbGF5ZXJIb3N0ID0gV1RGOjptb3ZlKGxheWVy
SG9zdCk7IH0KLQotICAgIHZvaWQgc2V0SW5pdGlhbFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpG
bG9hdFJlY3QgZnJhbWUpIHsgbV92aWRlb0xheWVyRnJhbWUgPSBmcmFtZTsgfQorICAgIFVJVmll
dyAqbGF5ZXJIb3N0VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0Vmlldy5nZXQoKTsg
fQorICAgIHZvaWQgc2V0TGF5ZXJIb3N0VmlldyhSZXRhaW5QdHI8VUlWaWV3PiYmIGxheWVySG9z
dFZpZXcpIHsgbV9sYXllckhvc3RWaWV3ID0gV1RGOjptb3ZlKGxheWVySG9zdFZpZXcpOyB9CiAK
IHByaXZhdGU6CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQpAQCAtNzgs
OSArNzYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5
KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWaWRlb0dyYXZpdHkgdmlkZW9M
YXllckdyYXZpdHkoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVk
aW9NZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwpAQCAtOTQsOSArOTAsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KiBtX21hbmFnZXI7CiAgICAgdWlu
dDY0X3QgbV9jb250ZXh0SWQ7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fbGF5ZXJI
b3N0OwotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3ZpZGVvTGF5ZXJGcmFtZTsKLSAgICBWaWRl
b0dyYXZpdHkgbV92aWRlb0xheWVyR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSB9OworICAg
IFJldGFpblB0cjxVSVZpZXcgKj4gbV9sYXllckhvc3RWaWV3OwogfTsKIAogY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDczY2M3YzJmZjJiZjVjZGQyMTcxYzk2MmE3YzMz
NDVhNTBkNjE0NzMuLjBkNTIzODQzZjZkNWRmYTJkOGI5YTE5MjQ3MjIzMWMwNjZjOTY4MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zNSw5ICszNSwzNCBAQAogI2ltcG9ydCAi
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3Jl
QW5pbWF0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGltZVJhbmdlcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CiAKK0BpbnRlcmZhY2UgV2ViTGF5ZXJIb3N0VmlldyA6IFVJVmlldworQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgdWludDMyX3QgY29udGV4dElEOworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gV2ViTGF5ZXJIb3N0VmlldworCisrIChDbGFzcylsYXllckNsYXNzIHsKKyAgICByZXR1cm4g
W0NBTGF5ZXJIb3N0IGNsYXNzXTsKK30KKworLSAodWludDMyX3QpY29udGV4dElEIHsKKyAgICBy
ZXR1cm4gW1tzZWxmIGxheWVySG9zdF0gY29udGV4dElkXTsKK30KKworLSAodm9pZClzZXRDb250
ZXh0SUQ6KHVpbnQzMl90KWNvbnRleHRJRCB7CisgICAgW1tzZWxmIGxheWVySG9zdF0gc2V0Q29u
dGV4dElkOmNvbnRleHRJRF07Cit9CisKKy0gKENBTGF5ZXJIb3N0ICopbGF5ZXJIb3N0IHsKKyAg
ICByZXR1cm4gKENBTGF5ZXJIb3N0ICopW3NlbGYgbGF5ZXJdOworfQorCitAZW5kCisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzOSwyOCArMTY0
LDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RXhpdEZ1
bGxzY3JlZW4oKQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0Vmlk
ZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCBmcmFtZSkKIHsKLSAgICBtX3ZpZGVvTGF5
ZXJGcmFtZSA9IGZyYW1lOwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFuYWdlci0+
c2V0VmlkZW9MYXllckZyYW1lKG1fY29udGV4dElkLCBmcmFtZSk7CiB9CiAKLVdlYkNvcmU6OkZs
b2F0UmVjdCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnZpZGVvTGF5ZXJGcmFtZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmlkZW9MYXllckZyYW1lOwotfQotCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViQ29yZTo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogewotICAgIG1f
dmlkZW9MYXllckdyYXZpdHkgPSBncmF2aXR5OwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAg
IG1fbWFuYWdlci0+c2V0VmlkZW9MYXllckdyYXZpdHkobV9jb250ZXh0SWQsIGdyYXZpdHkpOwog
fQogCi1XZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5IFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3ZpZGVvTGF5ZXJHcmF2aXR5OwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25J
ZCkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQpAQCAtMjQwLDggKzI1Myw4IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKICAgICAgICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKIAogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRh
dGUoKTsKLSAgICAgICAgW21vZGVsLT5sYXllckhvc3QoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07
Ci0gICAgICAgIG1vZGVsLT5zZXRMYXllckhvc3QobnVsbHB0cik7CisgICAgICAgIFttb2RlbC0+
bGF5ZXJIb3N0VmlldygpIHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICBtb2RlbC0+c2V0
TGF5ZXJIb3N0VmlldyhudWxscHRyKTsKICAgICB9CiAKICAgICBtX2NvbnRleHRNYXAuY2xlYXIo
KTsKQEAgLTMxMCwxNiArMzIzLDE3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1CiAKICAgICBz
dGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRl
eHRJZCk7CiAKLSAgICBtb2RlbC0+c2V0SW5pdGlhbFZpZGVvTGF5ZXJGcmFtZShpbml0aWFsUmVj
dCk7Ci0gICAgbW9kZWwtPnNldExheWVySG9zdChXS01ha2VSZW5kZXJMYXllcih2aWRlb0xheWVy
SUQpKTsKKyAgICBSZXRhaW5QdHI8V2ViTGF5ZXJIb3N0Vmlldz4gdmlldyA9IGFkb3B0TlMoW1tX
ZWJMYXllckhvc3RWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgW3ZpZXcgc2V0Q29udGV4dElEOnZp
ZGVvTGF5ZXJJRF07CisgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcodmlldyk7CiAgICAgaWYg
KGhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvciAhPSAxKSB7CiAgICAgICAgIC8vIEludmVydCB0aGUg
c2NhbGUgdHJhbnNmb3JtIGFkZGVkIGluIHRoZSBXZWJQcm9jZXNzIHRvIGZpeCA8cmRhcjovL3By
b2JsZW0vMTgzMTY1NDI+LgogICAgICAgICBmbG9hdCBpbnZlcnNlU2NhbGUgPSAxIC8gaG9zdGlu
Z0RldmljZVNjYWxlRmFjdG9yOwotICAgICAgICBbbW9kZWwtPmxheWVySG9zdCgpIHNldFRyYW5z
Zm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52ZXJzZVNjYWxlLCAx
KV07CisgICAgICAgIFtbbW9kZWwtPmxheWVySG9zdFZpZXcoKSBsYXllcl0gc2V0U3VibGF5ZXJU
cmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShpbnZlcnNlU2NhbGUsIGludmVyc2VTY2Fs
ZSwgMSldOwogICAgIH0KIAogICAgIFVJVmlldyAqcGFyZW50VmlldyA9IGRvd25jYXN0PFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX3BhZ2UtPmRyYXdpbmdBcmVhKCkpLnJlbW90
ZUxheWVyVHJlZUhvc3QoKS5yb290TGF5ZXIoKTsKLSAgICBpbnRlcmZhY2UtPnNldHVwRnVsbHNj
cmVlbigqbW9kZWwtPmxheWVySG9zdCgpLCBpbml0aWFsUmVjdCwgcGFyZW50VmlldywgdmlkZW9G
dWxsc2NyZWVuTW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CisgICAgaW50ZXJmYWNlLT5z
ZXR1cEZ1bGxzY3JlZW4oKm1vZGVsLT5sYXllckhvc3RWaWV3KCksIGluaXRpYWxSZWN0LCBwYXJl
bnRWaWV3LCB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlc2V0TWVkaWFTdGF0ZSh1
aW50NjRfdCBjb250ZXh0SWQpCkBAIC01MDIsOCArNTE2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKICAgICBhdXRvJiBtb2RlbCA9IGVuc3VyZU1vZGVsKGNvbnRleHRJZCk7CiAKICAgICBbQ0FU
cmFuc2FjdGlvbiBmbHVzaF07Ci0gICAgW21vZGVsLmxheWVySG9zdCgpIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKLSAgICBtb2RlbC5zZXRMYXllckhvc3QobnVsbHB0cik7CisgICAgW21vZGVsLmxh
eWVySG9zdFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBtb2RlbC5zZXRMYXllckhv
c3RWaWV3KG51bGxwdHIpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiAKICAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQppbmRleCA1MzQyNDY5MWNiMmUyOTk4ZTEzYWM4ZGVkNTBjMWI3NGE4NDUxNDI3
Li44MWM0ZGM3MGQzYjMwZDA0ODU4NmY4ZmM0NzhlODJmZTNlYzMyOTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KQEAgLTIzMiw5ICsyMzIsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGUKICAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwog
ICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKIAorICAgIEZsb2F0UmVjdCBjbGllbnRSZWN0ID0gY2xpZW50UmVjdEZvckVs
ZW1lbnQoJnZpZGVvRWxlbWVudCk7CisgICAgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSA9IEZs
b2F0UmVjdCgwLCAwLCBjbGllbnRSZWN0LndpZHRoKCksIGNsaWVudFJlY3QuaGVpZ2h0KCkpOwor
ICAgIAogICAgIGludGVyZmFjZS0+c2V0VGFyZ2V0SXNGdWxsc2NyZWVuKHRydWUpOwogICAgIGlu
dGVyZmFjZS0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiAgICAgbW9kZWwtPnNldFZpZGVvRWxl
bWVudCgmdmlkZW9FbGVtZW50KTsKKyAgICBtb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKHZpZGVv
TGF5ZXJGcmFtZSk7CiAKICAgICBpZiAoaW50ZXJmYWNlLT5pc0FuaW1hdGluZygpKQogICAgICAg
ICByZXR1cm47CkBAIC00MjgsNyArNDMyLDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIFtDQVRy
YW5zYWN0aW9uIGNvbW1pdF07CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBzdHJv
bmdUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWRdIHsKKyAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICB9KTsKIH0KICAgICAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257134</attachid>
            <date>2015-07-20 15:34:46 -0700</date>
            <delta_ts>2015-07-20 16:29:08 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-146862-20150720153332.patch</filename>
            <type>text/plain</type>
            <size>64191</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ2ZWVkMWExNzE1ZDY5
NjI0YTkyZTJjYzVhOTQ2NWU1M2Q5ZDY1Ny4uNzFkOTNlMTA2YjZkZmZjMzM2MTA4NjVjOGIxMzc5
ZjEzMTk3NzA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNS0wNy0yMCAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZQbGF5ZXJM
YXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBUaGUg
Q0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXllckhvc3RWaWV3IHRvIGJlIGNvbXBh
dGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAgICAgU29tZSBhbmltYXRpb24gaXMg
aW1wcm92ZWQgaW4gdGhlIGNvbnZlcnNpb24uCisKKyAgICAgICAgV2ViQVZQbGF5ZXJMYXllclZp
ZXcgYW5kIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyBkZXJpdmUgZnJvbSBB
VktpdCBhbmQgVUlLaXQgcmVzcGVjdGl2ZWx5LgorICAgICAgICBCZWNhdXNlIHRoZXNlIGZyYW1l
d29ya3MgYXJlIGxvYWRlZCBhdCBydW50aW1lLCB0aGVzZSBjbGFzc2VzIG11c3QgYmUgZ2VuZXJh
dGUgdXNpbmcgb2JqYy9ydW50aW1lLmggdG8KKyAgICAgICAgcmVnaXN0ZXIgdGhlbSBmcm9tIGMg
ZnVuY3Rpb25zIGF0IHJ1bnRpbWUuIFRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IG9mIHRoZXNlIFVJ
Vmlld3MgaXMgdGhhdCB0aGVpcgorICAgICAgICBiYWNraW5nIGxheWVyIGlzIGEgV2ViQVZQbGF5
ZXJMYXllci4KKworICAgICAgICBXZWJDQUxheWVySG9zdFdyYXBwZXIgYW5kIFdlYkFWVmlkZW9M
YXllciBhcmUgY29tYmluZWQgaW50byBXZWJBVlBsYXllckxheWVyIHRvIHNpbXBsaWZ5IHRoZSBo
aWVyYXJjaHkuCisgICAgICAgIFdlYkFWUGxheWVyTGF5ZXIgaXMgYSBzdGFuZC1pbiBmb3IgYW4g
QVZQbGF5ZXJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcik6IC1yZW1vdmVGcm9tU3VwZXJsYXllciBpcyByZWR1bmRhbnQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5HcmF2aXR5KTogc3luY1RleHRUcmFja0JvdW5kcyBvbiBjaGFuZ2UuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZSk6CisgICAgICAgIFdlIG5ldmVyIHdhbnQgYW5pbWF0aW9uIGhlcmUsIHNp
bmNlIGFsbCBhbmltYXRpb24gd2lsbCBoYXBwZW4gaW4gVUlWaWV3cy4gCisgICAgICAgIFRoaXMg
aXMganVzdCBmb3IgZ29pbmcgaW50byB0aGUgZmluYWwgc2l6ZSBhZnRlciBhIHRyYW5zZm9ybSBi
YXNlZCBhbmltYXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAg
KFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVl
bik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4pOiBsYXllciAtPiB2aWV3CisKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUpOiBsYXll
ciAtPiB2aWV3CisgICAgICAgIFVzZSBmZW5jZSBwb3J0IHRvIHN5bmNocm9uaXplIGJldHdlZW4g
dGhlIFVJVGhyZWFkIGFuZCB0aGUgV2ViVGhyZWFkLAorICAgICAgICB0aGUgc2FtZSB3YXkgV2Vi
S2l0MiB1c2VzIGEgZmVuY2UgcG9ydCB0byBzeW5jaHJvbml6ZSBiZXR3ZWVuIHByb2Nlc3Nlcy4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KToKKyAgICAgICAgTm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBjYWNoZSB2aWRl
b0dyYXZpdHkgYXQgdGhpcyBsZXZlbC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKworICAgICAgICAoLVtXZWJBVlBsYXll
ckxheWVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBkZWFsbG9jXSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgcGxheWVyQ29udHJvbGxlcl0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllckxheWVyIHNldEJvdW5kczpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJM
YXllciByZXNvbHZlQm91bmRzXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIgc2V0Vmlk
ZW9HcmF2aXR5Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvR3Jhdml0eV0p
OgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIHZpZGVvUmVjdF0pOgorICAgICAgICAoK1tX
ZWJBVlBsYXllckxheWVyIGtleVBhdGhzRm9yVmFsdWVzQWZmZWN0aW5nVmlkZW9SZWN0XSk6Cisg
ICAgICAgIEFkZGVkIGNsYXNzIFdlYkFWUGxheWVyTGF5ZXIsIHJlcGxhY2luZyBXZWJBVlZpZGVv
TGF5ZXIgYW5kIFdlYkNBTGF5ZXJIb3N0V3JhcHBlci4KKworICAgICAgICAoV2ViQVZQaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MpOgorICAgICAgICAoZ2V0V2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Q2xhc3MpOgorICAgICAgICBBZGRlZCBydW50
aW1lIGNsYXNzIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldworCisgICAgICAg
IChXZWJBVlBsYXllckxheWVyVmlld19sYXllckNsYXNzKToKKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZp
ZXdfc2V0UGxheWVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192
aWRlb1ZpZXcpOgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0VmlkZW9WaWV3KToK
KyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KToKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3
X3N0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAg
ICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyk6CisgICAgICAgIChnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKToKKyAgICAgICAgQWRk
ZWQgcnVudGltZSBjbGFzcyBXZWJBVlBsYXllckxheWVyVmlldworCisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9EaW1lbnNpb25zKToKKyAgICAgICAg
RGltZW5zaW9ucyBhcmUgYWxzbyBzdG9yZWQgaW4gV2ViQVZQbGF5ZXJMYXllciBzbyBpdCBjYW4g
bWFrZSBkZWNpc2lvbnMgYWJvdXQKKyAgICAgICAgYW5pbWF0aW5nIHRoZSB2aWRlbyBsYXllci4K
KworICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldEV4dGVybmFs
UGxheWJhY2spOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVu
dGVyRnVsbHNjcmVlbik6IAorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmRpZFN0b3BQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIFN0cmFpZ2h0Zm9y
d2FyZCBsYXllciB0byB2aWV3IGNvbnZlcnNpb24uCisKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUpOgorICAgICAgICBT
ZXQgdmlldyBmcmFtZSB1c2luZyB0aGUgdmlldyBoaWVyYXJjaHkgaW5zdGVhZCBvZiBhc3N1bWlu
ZyBpdCBpcyBkaXJlY3RseSBpbiBhIHdpbmRvdy4KKworICAgICAgICAoV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJh
bWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGly
ZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAgIGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5n
IGRpZEV4aXRGdWxsc2NyZWVuKCkgdG8gYWxsb3dzIENBVHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRl
LgorCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0dXBGdWxs
c2NyZWVuKToKKyAgICAgICAgU2V0IHZpZXcgZnJhbWUgdXNpbmcgdGhlIHZpZXcgaGllcmFyY2h5
IGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgZGlyZWN0bHkgaW4gYSB3aW5kb3cuCisgICAgICAg
IGRpc3BhdGNoX2FzeW5jIGJlZm9yZSBjYWxsaW5nIGRpZFNldHVwRnVsbHNjcmVlbigpIHRvIGFs
bG93cyBDQVRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4KKworICAgICAgICAoLVtXZWJDQUxheWVy
SG9zdFdyYXBwZXIgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDQUxheWVySG9z
dFdyYXBwZXIgc2V0VmlkZW9TdWJsYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ0FM
YXllckhvc3RXcmFwcGVyIHZpZGVvU3VibGF5ZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHNldEJvdW5kczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
Q0FMYXllckhvc3RXcmFwcGVyIHJlc29sdmVCb3VuZHNdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xh
c3MgV2ViQ0FMYXllckhvc3RXcmFwcGVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGlu
dG8gV2ViQVZQbGF5ZXJMYXllci4KKworICAgICAgICAoK1tXZWJBVlZpZGVvTGF5ZXIgdmlkZW9M
YXllcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgaW5pdF0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciBzZXRWaWRlb1N1YmxheWVy
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0Qm91bmRzOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgc2V0VmlkZW9MYXllckdyYXZpdHk6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9MYXllciB2aWRlb0xheWVyR3Jhdml0
eV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBVlZpZGVvTGF5ZXIgZW50ZXJQSVBNb2RlUmVk
aXJlY3RpbmdWaWRlb1RvTGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFWVmlkZW9M
YXllciBsZWF2ZVBJUE1vZGVdKTogRGVsZXRlZC4KKyAgICAgICAgQ2xhc3MgV2ViQVZWaWRlb0xh
eWVyIGRlbGV0ZWQuIEZ1bmN0aW9uYWxpdHkgcm9sbGVkIGludG8gV2ViQVZQbGF5ZXJMYXllci4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbToKKyAgICAgICAgTm8gbmVlZCB0byBzdG9yZSBmcmFtZSBhbmQgZ3Jhdml0eSBpbiB0
aGUgbW9kZWwuIEl0IGlzIHN0b3JlZCBpbiB0aGUgVUkgd2hlcmUgaXQgaXMgdXNlZC4KKworICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnZpZGVvTGF5ZXJGcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6dmlkZW9MYXllckdyYXZpdHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOiBBZGQgQVZQbGF5ZXJMYXllclZpZXcuCisKIDIwMTUtMDctMjAgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV2lu
XSBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTg3MDIyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI3ZTU4
MTM4ODg2OTZmMWUyNmFkODdlNWYwNTY2NDYwY2IyODIzMzUuLmFjYzQwNGQ4ZDdkZTJmZThlNzU4
NThiMWExOGNmZWU0OWU5MTk5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0w
Ny0yMCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQg
QVZQbGF5ZXJMYXllclZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0Njg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKwor
ICAgICAgICBUaGUgQ0FMYXllckhvc3QgaXMgcmVwbGFjZWQgd2l0aCBXZWJMYXllckhvc3RWaWV3
IHRvIGJlIGNvbXBhdGlibGUgd2l0aCBVSVZpZXcgYW5pbWF0aW9ucy4KKyAgICAgICAgdmlkZW9M
YXllckZyYW1lIGFuZCB2aWRlb0xheWVyR3Jhdml0eSBubyBsb25nZXIgbmVlZCB0byBiZSBzdG9y
ZWQgYmVjYXVzZSB0aGV5IGFyZSBzdG9yZWQKKyAgICAgICAgd2hlcmUgdGhleSBhcmUgdXNlZCBp
biB0aGUgaW50ZXJmYWNlLiBTb21lIGFuaW1hdGlvbiBpcyBpbXByb3ZlZCBpbiB0aGUgY29udmVy
c2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW06CisgICAgICAgICgrW1dlYkxheWVySG9zdFZpZXcgbGF5ZXJDbGFzc10pOiBB
ZGQgY2xhc3MgV2ViTGF5ZXJIb3N0Vmlldy4KKyAgICAgICAgKC1bV2ViTGF5ZXJIb3N0VmlldyBj
b250ZXh0SURdKToKKyAgICAgICAgKC1bV2ViTGF5ZXJIb3N0VmlldyBzZXRDb250ZXh0SUQ6XSk6
CisgICAgICAgICgtW1dlYkxheWVySG9zdFZpZXcgbGF5ZXJIb3N0XSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6IGxheWVyIC0+
IHZpZXcKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpz
ZXR1cEZ1bGxzY3JlZW5XaXRoSUQpOgorICAgICAgICBBcHBseSB0aGUgaG9zdGluZ0RldmljZVNj
YWxlRmFjdG9yIHRyYW5zZm9ybSB0byAtc3VibGF5ZXJUcmFuc2Zvcm0gaW5zdGVhZCBvZiB0bwor
ICAgICAgICAtdHJhbnNmb3JtLiBUaGlzIG1vcmUgZGlyZWN0bHkgaW52ZXJ0cyB0aGUgdHJhbmZv
cm0gV2ViUHJvY2VzcyBhbmQgYWxsb3dzIC10cmFuc2Zvcm0KKyAgICAgICAgdG8gYmUgdXNlZCBm
b3IgYW5pbWF0aW9uIGluIHRoZSBVSVByb2Nlc3MuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ug
VUlWaWV3J3MgYWN0aW9ucworICAgICAgICBhbmltYXRlIC10cmFuc2Zvcm0sIGJ1dCBub3QgLXN1
YmxheWVyVHJhc2Zvcm0uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6IGxheWVyIC0+IHZpZXcKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENv
bnRleHQ6OnZpZGVvTGF5ZXJGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnZpZGVv
TGF5ZXJHcmF2aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAg
IFNldCBpbml0aWFsIHZpZGVvIGxheWVyIGZyYW1lIHRvIGZpeCBzdGFydCBwb2ludCBvZiBhbmlt
YXRpb24uCisKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
U2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMgYWxsb3dzIHRoZSBDQVRy
YW5zYWN0aW9uIHRvIGNvbXBsZXRlIGJlZm9yZSBjb250aW51aW5nIHdpdGggdGhlIGFuaW1hdGlv
bi4KKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIGZsYXNoIGR1cmluZyBhbmltYXRpb24uCisKIDIw
MTUtMDctMjAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTZWNjb21wXSBTaG91bGQgYmUgZWFzaWVyIHRvIGRlYnVnIGJsb2NrZWQgc3lzY2Fs
bHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDdiYWI1Yzc4YzVmZDkzYTJmMGE1NzZhYzVm
OWMwOTU3YTE1OGE4ZGIuLmU5OGRmZDlhZmMxYWE3ZjQzMzg1YmFkZDA4NmU3ODNhNWI1ZDM0ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTEyNCw5ICsxMTI0LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKgogICAgIENBQ29udGV4dCAqbmV3Q29udGV4dCA9IG5pbDsKICAgICAKICAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciAmJiBtX3ZpZGVvTGF5ZXIpIHsKLSAgICAgICAg
W21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1fdmlkZW9GdWxsc2NyZWVu
RnJhbWUud2lkdGgoKSwgbV92aWRlb0Z1bGxzY3JlZW5GcmFtZS5oZWlnaHQoKSldOwotICAgICAg
ICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKICAgICAgICAgW21fdmlkZW9G
dWxsc2NyZWVuTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bV92aWRlb0xheWVyLmdldCgpIGF0SW5kZXg6
MF07CisgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBtX3Zp
ZGVvRnVsbHNjcmVlbkZyYW1lLndpZHRoKCksIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUuaGVpZ2h0
KCkpXTsKICAgICAgICAgbmV3Q29udGV4dCA9IFttX3ZpZGVvRnVsbHNjcmVlbkxheWVyIGNvbnRl
eHRdOwogICAgIH0gZWxzZSBpZiAobV92aWRlb0lubGluZUxheWVyICYmIG1fdmlkZW9MYXllcikg
ewogICAgICAgICBbbV92aWRlb0xheWVyIHNldEZyYW1lOlttX3ZpZGVvSW5saW5lTGF5ZXIgYm91
bmRzXV07CkBAIC0xMTU4LDExICsxMTU3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fdmlkZW9MYXllcikgewotICAgICAgICBbbV92aWRl
b0xheWVyIHNldFN0eWxlOm5pbF07IC8vIFRoaXMgZW5hYmxlcyBhY3Rpb25zLCBpLmUuIGltcGxp
Y2l0IGFuaW1hdGlvbnMuCi0gICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICAgICAg
W21fdmlkZW9MYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIGZyYW1lLndpZHRoKCksIGZy
YW1lLmhlaWdodCgpKV07Ci0gICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0gICAgICAg
IFttX3ZpZGVvTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICB9CiAgICAgc3luY1Rl
eHRUcmFja0JvdW5kcygpOwogfQpAQCAtMTE4Miw4ICsxMTc3LDEyIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6CiAgICAgICAgIHZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNp
emVBc3BlY3RGaWxsOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgCisgICAgaWYgKFttX3ZpZGVvTGF5ZXIgdmlkZW9HcmF2aXR5XSA9PSB2aWRlb0dyYXZpdHkp
CisgICAgICAgIHJldHVybjsKIAogICAgIFttX3ZpZGVvTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OnZp
ZGVvR3Jhdml0eV07CisgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVk
aWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tCmluZGV4IGQxOWFmMDFmOWU5Yzk3MDIzZDk5YzA5MTRkZDljNGYwM2Q1ZjFhYmMu
LjYwZDI4YmMyZmQzYzI5MmU0MjZlM2VhOWYxZmE2YjhlNzllMGExYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMzAsNiArMzAsOCBAQAogI2ltcG9ydCAiV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0LmgiCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBv
cnQgIlF1YXJ0ekNvcmVTUEkuaCIKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJU
aW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5o
IgogI2ltcG9ydCAiV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKQEAgLTM3
LDYgKzM5LDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAKK1NPRlRfTElOS19GUkFNRVdPUksoVUlL
aXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJVmlldykKKwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKICNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSA4MDIwMCB8
fCAhSEFWRShBVktJVCkKQEAgLTEyOSw5ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhp
dEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZy
YW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgdmlkZW9MYXll
ckZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9H
cmF2aXR5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jh
dml0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZ3Jhdml0eTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC0xMzksMTAg
KzE0Miw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0PiBtX2ludGVyZmFjZTsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ+IG1fbW9kZWw7CiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlk
ZW9FbGVtZW50OwotICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyOworICAgIFJldGFpblB0cjxVSVZpZXc+IG1fdmlkZW9GdWxsc2NyZWVuVmlldzsKICAg
ICBSZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwot
ICAgIEZsb2F0UmVjdCBtX2ZyYW1lOwotICAgIFZpZGVvR3Jhdml0eSBtX2dyYXZpdHk7CiB9Owog
CiAjcHJhZ21hIG1hcmsgV2ViVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKQEAgLTE1MSw4
ICsxNTIsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRT
ZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsK
LSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXNdIHsKLSAgICAgICAgbV9tb2RlbC0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7Cisg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxs
c2NyZWVuVmlldyBsYXllcl07CisgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2
aWRlb0Z1bGxzY3JlZW5MYXllcl0geworICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7CiAgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAg
ICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIH0pOwpAQCAt
MTc3LDYgKzE3OSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAgICBtX2ludGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWwobnVsbHB0cik7CiAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKG51bGxwdHIpOwogICAgIG1faW50ZXJmYWNlID0gbnVsbHB0cjsK
KyAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBuaWw7CiAgICAgCiAgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwogICAgIFdl
YlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpc10gewpAQCAtMTg1LDcgKzE4OCw2IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVu
KCkKICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9FbGVtZW50KG51bGxwdHIpOwogICAgICAgICBt
X21vZGVsID0gbnVsbHB0cjsKICAgICAgICAgbV92aWRlb0VsZW1lbnQgPSBudWxscHRyOwotICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gbmlsOwogICAgICAgICAKICAgICAgICAgW21f
Y29udHJvbGxlciBkaWRGaW5pc2hGdWxsc2NyZWVuOnRoaXNdOwogICAgIH0pOwpAQCAtNDUwLDE4
ICs0NTIsMjUgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVx
dWVzdEV4aXRGdWxsc2NyZWVuKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUpCiB7CiAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7Ci0gICAgbV9mcmFtZSA9IGZyYW1lOwogICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJU
aHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIGZyYW1lXSB7CisgICAgUmV0YWluUHRyPENBTGF5
ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07
CisKKyAgICBtYWNoX3BvcnRfbmFtZV90IGZlbmNlUG9ydCA9IFtbdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgY29udGV4dF0gY3JlYXRlRmVuY2VQb3J0XTsKKyAgICAKKyAgICBXZWJUaHJlYWRSdW4oW3N0
cm9uZ1RoaXMsIHRoaXMsIGZyYW1lLCBmZW5jZVBvcnQsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7
CisgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24g
c2V0QW5pbWF0aW9uRHVyYXRpb246MF07CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAg
ICAgbV9tb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKGZyYW1lKTsKKyAgICAgICAgW1t2aWRlb0Z1
bGxzY3JlZW5MYXllciBjb250ZXh0XSBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKKyAgICAgICAg
bWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgZmVuY2VQb3J0KTsKKyAgICAg
ICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSB2aWRlb0dyYXZpdHkpCiB7CiAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7Ci0gICAgbV9ncmF2aXR5ID0gdmlkZW9HcmF2aXR5OwogICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsK
ICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZGVvR3Jhdml0eV0gewogICAg
ICAgICBpZiAobV9tb2RlbCkKQEAgLTUxMCwxOSArNTE5LDE5IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50
JiB2aWRlCiAgICAgbV9pbnRlcmZhY2UgPSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6Y3JlYXRlKCk7CiAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyKHRoaXMpOwogICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbCh0aGlzKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBhZG9wdE5TKFtbZ2V0VUlW
aWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwogICAgIAogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRS
dW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdSZWYsIG1vZGVdIHsKICAgICAgICAgbV9tb2RlbCA9
IFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpjcmVhdGUoKTsKICAgICAgICAg
bV9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKHRoaXMpOwogICAgICAgICBt
X21vZGVsLT5zZXRWaWRlb0VsZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwogICAgICAgICAKICAgICAg
ICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlID0gbV92aWRlb0VsZW1lbnQtPm1lZGlhU2Vz
c2lvbigpLmFsbG93c1BpY3R1cmVJblBpY3R1cmUoKm1fdmlkZW9FbGVtZW50LmdldCgpKTsKICAg
ICAgICAgSW50UmVjdCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0ID0gbV92aWRlb0VsZW1lbnQtPmNs
aWVudFJlY3QoKTsKICAgICAgICAgCiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0
LCB2aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlXSB7Ci0gICAgICAgICAgICBt
X2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgp
LCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlKTsKKyAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4o
Km1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQoKSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmll
d1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAppbmRleCA2ZmVmZGMwYTAxOGY3
ZDdlZjY5ZDA5OWUwZTRlNDBjMDk4YjczNDI0Li5kMzM3ZDUyNjEzMDAwMmM3YWFkZWVhNjIzMDk0
Zjk4Y2RkOGY0NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtNDUsOCArNDUs
OCBAQCBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93Owog
T0JKQ19DTEFTUyBVSVZpZXc7CiBPQkpDX0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdlYkFW
VmlkZW9MYXllcjsKLU9CSkNfQ0xBU1MgV2ViQ0FMYXllckhvc3RXcmFwcGVyOworT0JKQ19DTEFT
UyBXZWJBVlBsYXllckxheWVyVmlldzsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJMYXllcjsKIAog
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBTdHJpbmc7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0
RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBl
LCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKICAgICAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0dXBGdWxsc2NyZWVuKFBsYXRmb3JtTGF5ZXIm
LCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwgVUlWaWV3ICosIEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxh
eWJhY2spOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXR1cEZ1bGxzY3JlZW4o
VUlWaWV3JiwgY29uc3QgSW50UmVjdCYgaW5pdGlhbFJlY3QsIFVJVmlldyAqLCBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUluUGlj
dHVyZVBsYXliYWNrKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxs
c2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVu
KGNvbnN0IEludFJlY3QmIGZpbmFsUmVjdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGNsZWFudXBGdWxsc2NyZWVuKCk7CkBAIC0xMzMsOSArMTMzLDYgQEAgcHJvdGVjdGVkOgog
CiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyQ29udHJvbGxlcj4gbV9wbGF5ZXJDb250cm9sbGVy
OwogICAgIFJldGFpblB0cjxBVlBsYXllclZpZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250
cm9sbGVyOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3ZpZGVvTGF5ZXI7Ci0gICAgUmV0YWlu
UHRyPFdlYkFWVmlkZW9MYXllcj4gbV92aWRlb0xheWVyQ29udGFpbmVyOwotICAgIFJldGFpblB0
cjxXZWJDQUxheWVySG9zdFdyYXBwZXI+IG1fbGF5ZXJIb3N0V3JhcHBlcjsKICAgICBXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbCogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKICAg
ICBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIgeyBudWxscHRyIH07CiAKQEAgLTE0NCw2ICsxNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
UmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+IG1fdmlld0NvbnRyb2xsZXI7CiAgICAgUmV0YWlu
UHRyPFVJVmlldz4gbV9wYXJlbnRWaWV3OwogICAgIFJldGFpblB0cjxVSVdpbmRvdz4gbV9wYXJl
bnRXaW5kb3c7CisgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyTGF5ZXJWaWV3PiBtX3BsYXllckxh
eWVyVmlldzsKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bV9tb2RlIHsgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9
OwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gbV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFj
azsKICAgICBib29sIG1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCBhNjI4YTBlZWZkOThkZWMyMDBiZTY5
ZjM1YTQ5MzVhZTlhYWJhZTkxLi4yNzQ3OGRlNjZmYzhlNDQxMmU2YjcyNjYyOTY1M2U5MDA0YzI2
OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC0zOSw2ICszOSw4IEBACiAj
aW1wb3J0ICJXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWVGltZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPG9iamMvbWVzc2Fn
ZS5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTUwLDExICs1MiwxNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU09G
VF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0
aW9uLCBBVlBsYXllckxheWVyKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QsIE5TU3RyaW5nICop
CitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkK
IFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQbGF5ZXJDb250cm9sbGVyKQogU09GVF9MSU5LX0NM
QVNTKEFWS2l0LCBBVlBsYXllclZpZXdDb250cm9sbGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0
LCBBVlZhbHVlVGltaW5nKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlBsYXllckxheWVyVmll
dykKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3KQogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LX0NMQVNTKFVJS2l0
LCBVSUFwcGxpY2F0aW9uKQpAQCAtNzQsMTMgKzgxLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBi
b29sU3RyaW5nKGJvb2wgdmFsKQogCiBAY2xhc3MgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
IAotQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xsZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJW
aWV3Q29udHJvbGxlckRlbGVnYXRlPgoteworQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRyb2xs
ZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiB7CiAgICAgV2Vi
QVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
OwogICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKl9jdXJyZW50TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOwogfQogCi0tKHZvaWQpcmVzZXRTdGF0ZTsKKy0gKHZvaWQpcmVzZXRTdGF0
ZTsKIAogQHByb3BlcnR5IChyZXRhaW4pIEFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJv
bGxlclByb3h5OwogQHByb3BlcnR5IChhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBk
ZWxlZ2F0ZTsKQEAgLTE1MCw3ICsxNTYsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmlu
Zyhib29sIHZhbCkKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0odm9pZClyZXNldFN0YXRl
IHsKKy0gKHZvaWQpcmVzZXRTdGF0ZQorewogICAgIHNlbGYuY29udGVudER1cmF0aW9uID0gMDsK
ICAgICBzZWxmLm1heFRpbWUgPSAwOwogICAgIHNlbGYuY29udGVudER1cmF0aW9uV2l0aGluRW5k
VGltZXMgPSAwOwpAQCAtMTgxLDcgKzE4OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3Ry
aW5nKGJvb2wgdmFsKQogICAgIHNlbGYuY3VycmVudExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
biA9IG5pbDsKIH0KIAotLSAoQVZQbGF5ZXIqKSBwbGF5ZXIgeworLSAoQVZQbGF5ZXIgKikgcGxh
eWVyCit7CiAgICAgcmV0dXJuIG5pbDsKIH0KIApAQCAtNTY4LDEwMSArNTc2LDIwIEBAIHN0YXRp
YyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24g
Y29udmVydFRvRXhpdEZ1bGxTCiBAaW1wbGVtZW50YXRpb24gV2ViQVZNZWRpYVNlbGVjdGlvbk9w
dGlvbgogQGVuZAogCi0KLUBpbnRlcmZhY2UgV2ViQ0FMYXllckhvc3RXcmFwcGVyIDogQ0FMYXll
cgotQHByb3BlcnR5IChhc3NpZ24pIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbDsKLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkNBTGF5ZXJIb3N0V3JhcHBlciB7Ci0gICAgUmV0YWlu
UHRyPENBTGF5ZXI+IF92aWRlb1N1YmxheWVyOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAg
ICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOwotICAgIFtzdXBl
ciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClzZXRWaWRlb1N1YmxheWVyOihDQUxheWVyKil2aWRl
b1N1YmxheWVyCi17Ci0gICAgX3ZpZGVvU3VibGF5ZXIgPSB2aWRlb1N1YmxheWVyOwotICAgIFtz
ZWxmIGFkZFN1YmxheWVyOnZpZGVvU3VibGF5ZXJdOwotfQotCi0tIChDQUxheWVyKil2aWRlb1N1
YmxheWVyCi17Ci0gICAgcmV0dXJuIF92aWRlb1N1YmxheWVyLmdldCgpOwotfQotCi0tICh2b2lk
KXNldEJvdW5kczooQ0dSZWN0KWJvdW5kcwotewotICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChi
b3VuZHMsIHNlbGYuYm91bmRzKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW3N1cGVyIHNldEJv
dW5kczpib3VuZHNdOwotCi0gICAgW192aWRlb1N1YmxheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRN
YWtlKENHUmVjdEdldE1pZFgoYm91bmRzKSwgQ0dSZWN0R2V0TWlkWShib3VuZHMpKV07Ci0KLSAg
ICBpZiAoIXNlbGYubW9kZWwpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0UmVjdCB2aWRl
b0ZyYW1lID0gc2VsZi5tb2RlbC0+dmlkZW9MYXllckZyYW1lKCk7Ci0gICAgRmxvYXRSZWN0IHRh
cmdldEZyYW1lOwotICAgIHN3aXRjaCAoc2VsZi5tb2RlbC0+dmlkZW9MYXllckdyYXZpdHkoKSkg
ewotICAgIGNhc2UgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0
eVJlc2l6ZToKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBib3VuZHM7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgV2ViQ29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdDoKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RS
YXRpb0luc2lkZVJlY3QodmlkZW9GcmFtZS5zaXplKCkuYXNwZWN0UmF0aW8oKSwgYm91bmRzKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDoKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBz
bWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0KHZpZGVvRnJhbWUuc2l6ZSgpLmFz
cGVjdFJhdGlvKCksIGJvdW5kcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBDQVRyYW5z
Zm9ybTNEIHRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlU2NhbGUodGFyZ2V0RnJhbWUud2lk
dGgoKSAvIHZpZGVvRnJhbWUud2lkdGgoKSwgdGFyZ2V0RnJhbWUuaGVpZ2h0KCkgLyB2aWRlb0Zy
YW1lLmhlaWdodCgpLCAxKTsKLSAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zv
cm06dHJhbnNmb3JtXTsKLQotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1
ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgb2Jq
ZWN0Om5pbF07Ci0gICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91
bmRzKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OltDQVRyYW5zYWN0aW9uIGFuaW1hdGlvbkR1
cmF0aW9uXSArIDAuMV07Ci19Ci0KLS0gKHZvaWQpcmVzb2x2ZUJvdW5kcwotewotICAgIFtOU09i
amVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IocmVzb2x2ZUJvdW5kcykgb2JqZWN0Om5pbF07Ci0gICAgaWYgKCFzZWxmLm1v
ZGVsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAg
W0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07Ci0KLSAgICBbX3ZpZGVvU3Vi
bGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICBz
ZWxmLm1vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUoW3NlbGYgYm91bmRzXSk7Ci0gICAgCi0gICAg
W0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKLX0KLUBlbmQKLQotQGludGVyZmFjZSBXZWJBVlZpZGVv
TGF5ZXIgOiBDQUxheWVyIDxBVlZpZGVvTGF5ZXI+Ci0rKFdlYkFWVmlkZW9MYXllciAqKXZpZGVv
TGF5ZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xh
eWVyR3Jhdml0eTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXIgPSBpc1JlYWR5Rm9yRGlz
cGxheSkgQk9PTCByZWFkeUZvckRpc3BsYXk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dSZWN0
IHZpZGVvUmVjdDsKLS0gKHZvaWQpc2V0UGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmll
d0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlcjsKLS0gKHZvaWQpc2V0UGxheWVyQ29u
dHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcjsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZXRhaW4pIENBTGF5ZXIqIHZpZGVvU3VibGF5ZXI7CitAaW50ZXJmYWNl
IFdlYkFWUGxheWVyTGF5ZXIgOiBDQUxheWVyCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWlu
KSBOU1N0cmluZyAqdmlkZW9HcmF2aXR5OworQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1p
c1JlYWR5Rm9yRGlzcGxheSkgQk9PTCByZWFkeUZvckRpc3BsYXk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmV0YWluKSBBVlBsYXllckNvbnRyb2xsZXIgKnBsYXllckNvbnRyb2xsZXI7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBDQUxheWVyICp2aWRlb1N1YmxheWVyOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVy
QXR0cmlidXRlczsKK0Bwcm9wZXJ0eSBDR1NpemUgdmlkZW9EaW1lbnNpb25zOworQHByb3BlcnR5
IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFtZTsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdl
YkFWVmlkZW9MYXllcgoteworQGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIgewogICAg
IFJldGFpblB0cjxXZWJBVlBsYXllckNvbnRyb2xsZXI+IF9hdlBsYXllckNvbnRyb2xsZXI7Ci0g
ICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xsZXI+IF9hdlBsYXllclZpZXdDb250cm9s
bGVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBfdmlkZW9TdWJsYXllcjsKLSAgICBBVlZpZGVv
TGF5ZXJHcmF2aXR5IF92aWRlb0xheWVyR3Jhdml0eTsKLX0KLQotKyhXZWJBVlZpZGVvTGF5ZXIg
Kil2aWRlb0xheWVyCi17Ci0gICAgcmV0dXJuIFtbW1dlYkFWVmlkZW9MYXllciBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX3ZpZGVvR3Jhdml0eTsK
IH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAgLTY3MCwyNiArNTk3LDMxIEBAIHN0YXRpYyBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29u
dmVydFRvRXhpdEZ1bGxTCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikg
ewogICAgICAgICBbc2VsZiBzZXRNYXNrc1RvQm91bmRzOllFU107Ci0gICAgICAgIFtzZWxmIHNl
dFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RdOworICAg
ICAgICBfdmlkZW9HcmF2aXR5ID0gZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgp
OwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAodm9pZClkZWFsbG9jCit7CisgICAg
W05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihyZXNvbHZlQm91bmRzKSBvYmplY3Q6bmlsXTsKKyAgICBbc3VwZXIg
ZGVhbGxvY107Cit9CisKKy0gKEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIK
K3sKKyAgICByZXR1cm4gKEFWUGxheWVyQ29udHJvbGxlciAqKV9hdlBsYXllckNvbnRyb2xsZXIu
Z2V0KCk7Cit9CisKIC0gKHZvaWQpc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJDb250cm9s
bGVyICopcGxheWVyQ29udHJvbGxlcgogewogICAgIEFTU0VSVCghcGxheWVyQ29udHJvbGxlciB8
fCBbcGxheWVyQ29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltXZWJBVlBsYXllckNvbnRyb2xsZXIg
Y2xhc3NdXSk7CiAgICAgX2F2UGxheWVyQ29udHJvbGxlciA9IChXZWJBVlBsYXllckNvbnRyb2xs
ZXIgKilwbGF5ZXJDb250cm9sbGVyOwogfQogCi0tICh2b2lkKXNldFBsYXllclZpZXdDb250cm9s
bGVyOihBVlBsYXllclZpZXdDb250cm9sbGVyICopcGxheWVyVmlld0NvbnRyb2xsZXIKLXsKLSAg
ICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlciA9IHBsYXllclZpZXdDb250cm9sbGVyOwotfQotCiAt
ICh2b2lkKXNldFZpZGVvU3VibGF5ZXI6KENBTGF5ZXIgKil2aWRlb1N1YmxheWVyCiB7CiAgICAg
X3ZpZGVvU3VibGF5ZXIgPSB2aWRlb1N1YmxheWVyOwotICAgIFtzZWxmIGFkZFN1YmxheWVyOnZp
ZGVvU3VibGF5ZXJdOwogfQogCiAtIChDQUxheWVyKil2aWRlb1N1YmxheWVyCkBAIC02OTksMjcg
KzYzMSw3OSBAQCBzdGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRG
dWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsUwogCiAtICh2b2lkKXNldEJvdW5kczoo
Q0dSZWN0KWJvdW5kcwogeworICAgIGlmIChDR1JlY3RFcXVhbFRvUmVjdChib3VuZHMsIHNlbGYu
Ym91bmRzKSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIFtzdXBlciBzZXRCb3VuZHM6Ym91
bmRzXTsKKyAgICAKKyAgICBpZiAoW192aWRlb1N1YmxheWVyIHN1cGVybGF5ZXJdICE9IHNlbGYp
CisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChbX3ZpZGVvU3VibGF5ZXIgc3VwZXJsYXllcl0g
PT0gc2VsZikgewotICAgICAgICBbX3ZpZGVvU3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1h
a2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBDR1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKLSAgICAg
ICAgW192aWRlb1N1YmxheWVyIHNldEJvdW5kczpib3VuZHNdOwotICAgIH0KKyAgICBbX3ZpZGVv
U3VibGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChib3VuZHMpLCBD
R1JlY3RHZXRNaWRZKGJvdW5kcykpXTsKKyAgICAKKyAgICBpZiAoIVtfYXZQbGF5ZXJDb250cm9s
bGVyIGRlbGVnYXRlXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0IHNvdXJjZVZp
ZGVvRnJhbWU7CisgICAgRmxvYXRSZWN0IHRhcmdldFZpZGVvRnJhbWU7CisgICAgZmxvYXQgdmlk
ZW9Bc3BlY3RSYXRpbyA9IHNlbGYudmlkZW9EaW1lbnNpb25zLndpZHRoIC8gc2VsZi52aWRlb0Rp
bWVuc2lvbnMuaGVpZ2h0OworICAgIAorICAgIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJl
c2l6ZSgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKKyAgICAgICAgc291
cmNlVmlkZW9GcmFtZSA9IHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWU7CisgICAgICAgIHRhcmdl
dFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsKKyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5
XSkgeworICAgICAgICBzb3VyY2VWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0
aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUp
OworICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9J
bnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICB9IGVsc2UgaWYg
KFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpIGlzRXF1YWxUb1N0cmlu
ZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsKKyAgICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNtYWxs
ZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5t
b2RlbFZpZGVvTGF5ZXJGcmFtZSk7CisgICAgICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUg
PSBDR1JlY3RNYWtlKDAsIDAsIHNvdXJjZVZpZGVvRnJhbWUud2lkdGgoKSwgc291cmNlVmlkZW9G
cmFtZS5oZWlnaHQoKSk7CisgICAgICAgIFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXS0+
c2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICB0
YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2
aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworCisgICAgVUlWaWV3ICp2aWV3ID0gW192aWRlb1N1YmxheWVyIGRl
bGVnYXRlXTsKKyAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybU1ha2VTY2FsZSh0YXJnZXRWaWRlb0ZyYW1lLndpZHRoKCkgLyBzb3VyY2VWaWRlb0ZyYW1l
LndpZHRoKCksIHRhcmdldFZpZGVvRnJhbWUuaGVpZ2h0KCkgLyBzb3VyY2VWaWRlb0ZyYW1lLmhl
aWdodCgpKTsKKyAgICBbdmlldyBzZXRUcmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICAKKyAgICBb
TlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOworICAgIAorICAgIGlm
ICghQ0dBZmZpbmVUcmFuc2Zvcm1FcXVhbFRvVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtSWRl
bnRpdHksIHRyYW5zZm9ybSkpCisgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0
b3IocmVzb2x2ZUJvdW5kcykgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpbQ0FUcmFuc2FjdGlv
biBhbmltYXRpb25EdXJhdGlvbl0gKyAwLjFdOworfQorCistICh2b2lkKXJlc29sdmVCb3VuZHMK
K3sKKyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHJlc29sdmVCb3VuZHMpIG9iamVjdDpuaWxdOworICAg
IGlmICghW19hdlBsYXllckNvbnRyb2xsZXIgZGVsZWdhdGVdKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgaWYgKFtfdmlkZW9TdWJsYXllciBzdXBlcmxheWVyXSAhPSBzZWxmKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5z
YWN0aW9uIHNldEFuaW1hdGlvbkR1cmF0aW9uOjBdOworICAgIAorICAgIFsoVUlWaWV3ICopW192
aWRlb1N1YmxheWVyIGRlbGVnYXRlXSBzZXRUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1JZGVu
dGl0eV07CisgICAgc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSA9IFtzZWxmIGJvdW5kc107Cisg
ICAgW19hdlBsYXllckNvbnRyb2xsZXIgZGVsZWdhdGVdLT5zZXRWaWRlb0xheWVyRnJhbWUoc2Vs
Zi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CisgICAgCisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0
XTsKIH0KIAotLSAodm9pZClzZXRWaWRlb0xheWVyR3Jhdml0eTooQVZWaWRlb0xheWVyR3Jhdml0
eSl2aWRlb0xheWVyR3Jhdml0eQorLSAodm9pZClzZXRWaWRlb0dyYXZpdHk6KE5TU3RyaW5nICop
dmlkZW9HcmF2aXR5CiB7Ci0gICAgX3ZpZGVvTGF5ZXJHcmF2aXR5ID0gdmlkZW9MYXllckdyYXZp
dHk7CisgICAgX3ZpZGVvR3Jhdml0eSA9IHZpZGVvR3Jhdml0eTsKICAgICAKICAgICBpZiAoIVtf
YXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRlXSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2Vi
Q29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5ID0gV2Vi
Q29yZTo6V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsK
LSAgICBpZiAodmlkZW9MYXllckdyYXZpdHkgPT0gQVZWaWRlb0xheWVyR3Jhdml0eVJlc2l6ZSkK
KyAgICBpZiAodmlkZW9HcmF2aXR5ID09IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKSkK
ICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6OldlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRl
b0dyYXZpdHlSZXNpemU7Ci0gICAgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXll
ckdyYXZpdHlSZXNpemVBc3BlY3QpCisgICAgaWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVy
VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkpCiAgICAgICAgIGdyYXZpdHkgPSBXZWJDb3JlOjpX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OwotICAgIGVs
c2UgaWYgKHZpZGVvTGF5ZXJHcmF2aXR5ID09IEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3Bl
Y3RGaWxsKQorICAgIGVsc2UgaWYgKHZpZGVvR3Jhdml0eSA9PSBnZXRBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0RmlsbCgpKQogICAgICAgICBncmF2aXR5ID0gV2ViQ29yZTo6V2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAgZWxz
ZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTcyNywyNCArNzExLDE2MiBAQCBz
dGF0aWMgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVh
c29uIGNvbnZlcnRUb0V4aXRGdWxsUwogICAgIFtfYXZQbGF5ZXJDb250cm9sbGVyIGRlbGVnYXRl
XS0+c2V0VmlkZW9MYXllckdyYXZpdHkoZ3Jhdml0eSk7CiB9CiAKLS0gKEFWVmlkZW9MYXllckdy
YXZpdHkpdmlkZW9MYXllckdyYXZpdHkKKy0gKE5TU3RyaW5nICopdmlkZW9HcmF2aXR5CiB7Ci0g
ICAgcmV0dXJuIF92aWRlb0xheWVyR3Jhdml0eTsKKyAgICByZXR1cm4gX3ZpZGVvR3Jhdml0eS5n
ZXQoKTsKIH0KIAotLSAodm9pZCllbnRlclBJUE1vZGVSZWRpcmVjdGluZ1ZpZGVvVG9MYXllcjoo
Q0FMYXllciAqKWxheWVyCistIChDR1JlY3QpdmlkZW9SZWN0CiB7Ci0gICAgW192aWRlb1N1Ymxh
eWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbGF5ZXIgYWRkU3VibGF5ZXI6X3ZpZGVv
U3VibGF5ZXIuZ2V0KCldOworICAgIGZsb2F0IHZpZGVvQXNwZWN0UmF0aW8gPSBzZWxmLnZpZGVv
RGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlkZW9EaW1lbnNpb25zLmhlaWdodDsKKyAgICAKKyAg
ICBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKSBpc0VxdWFsVG9TdHJp
bmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAgICAgICByZXR1cm4gbGFyZ2VzdFJlY3RXaXRoQXNw
ZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICBp
ZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKCkgaXNFcXVhbFRvU3Ry
aW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKKyAgICAgICAgcmV0dXJuIHNtYWxsZXN0UmVjdFdpdGhB
c3BlY3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOworCisg
ICAgcmV0dXJuIHNlbGYuYm91bmRzOworfQorCisrIChOU1NldCAqKWtleVBhdGhzRm9yVmFsdWVz
QWZmZWN0aW5nVmlkZW9SZWN0Cit7CisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpA
InZpZGVvRGltZW5zaW9ucyIsIEAidmlkZW9HcmF2aXR5IiwgbmlsXTsKK30KKworQGVuZAorCitA
aW50ZXJmYWNlIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyA6IEFWUGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlldworQGVuZAorCitzdGF0aWMgQ0FMYXllciogV2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MoaWQsIFNFTCkKK3sKKyAg
ICByZXR1cm4gW1dlYkFWUGxheWVyTGF5ZXIgY2xhc3NdOwogfQogCi0tICh2b2lkKWxlYXZlUElQ
TW9kZQorc3RhdGljIENsYXNzIGdldFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
d0NsYXNzKCkKIHsKLSAgICBbX3ZpZGVvU3VibGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwot
ICAgIFtzZWxmIGFkZFN1YmxheWVyOl92aWRlb1N1YmxheWVyLmdldCgpXTsKKyAgICBzdGF0aWMg
Q2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9
IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0QVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3Q2xhc3MoKSwgIldlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIsIDApOwor
ICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQYWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xhc3Mg
bWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xhc3MoIldlYkFWUGljdHVyZUluUGljdHVyZVBsYXll
ckxheWVyVmlldyIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0
b3IobGF5ZXJDbGFzcyksIChJTVApV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
X2xheWVyQ2xhc3MsICJAQDoiKTsKKyAgICB9KTsKKyAgICAKKyAgICByZXR1cm4gdGhlQ2xhc3M7
CiB9CisKK0BpbnRlcmZhY2UgV2ViQVZQbGF5ZXJMYXllclZpZXcgOiBBVlBsYXllckxheWVyVmll
dworQHByb3BlcnR5IChyZXRhaW4pIFVJVmlldyogdmlkZW9WaWV3OwogQGVuZAogCitzdGF0aWMg
Q0FMYXllciogV2ViQVZQbGF5ZXJMYXllclZpZXdfbGF5ZXJDbGFzcyhpZCwgU0VMKQoreworICAg
IHJldHVybiBbV2ViQVZQbGF5ZXJMYXllciBjbGFzc107Cit9CisKK3N0YXRpYyBBVlBsYXllckNv
bnRyb2xsZXIqIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXllckNvbnRyb2xsZXIoaWQgYVNlbGYs
IFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKKyAg
ICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIg
KilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJdOworICAgIHJldHVybiBbd2ViQVZQbGF5ZXJMYXll
ciBwbGF5ZXJDb250cm9sbGVyXTsKK30KKworc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZp
ZXdfc2V0UGxheWVyQ29udHJvbGxlcihpZCBhU2VsZiwgU0VMLCBBVlBsYXllckNvbnRyb2xsZXIg
KnBsYXllckNvbnRyb2xsZXIpCit7CisgICAgQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVy
VmlldyA9IGFTZWxmOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAo
V2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIFt3
ZWJBVlBsYXllckxheWVyIHNldFBsYXllckNvbnRyb2xsZXI6IHBsYXllckNvbnRyb2xsZXJdOwor
fQorCitzdGF0aWMgVUlWaWV3KiBXZWJBVlBsYXllckxheWVyVmlld192aWRlb1ZpZXcoaWQgYVNl
bGYsIFNFTCkKK3sKKyAgICBBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsK
KyAgICBXZWJBVlBsYXllckxheWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5
ZXIgKilbcGxheWVyTGF5ZXIgcGxheWVyTGF5ZXJdOworICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIg
PSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1YmxheWVyXTsKKyAgICBpZiAoIXZpZGVvTGF5ZXIp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgQVNTRVJUKFtbdmlkZW9MYXllciBkZWxlZ2F0ZV0g
aXNLaW5kT2ZDbGFzczpnZXRVSVZpZXdDbGFzcygpXSk7CisgICAgcmV0dXJuIChVSVZpZXcgKilb
dmlkZW9MYXllciBkZWxlZ2F0ZV07Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJW
aWV3X3NldFZpZGVvVmlldyhpZCBhU2VsZiwgU0VMLCBVSVZpZXcgKnZpZGVvVmlldykKK3sKKyAg
ICBBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgV2ViQVZQ
bGF5ZXJMYXllciAqd2ViQVZQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BsYXll
ckxheWVyVmlldyBwbGF5ZXJMYXllcl07CisgICAgW3dlYkFWUGxheWVyTGF5ZXIgc2V0VmlkZW9T
dWJsYXllcjpbdmlkZW9WaWV3IGxheWVyXV07Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3KGlkIGFTZWxmLCBTRUwpCit7CisgICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxh
eWVyVmlldyA9IGFTZWxmOworICAgIEFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAq
cGlwVmlldyA9IFtwbGF5ZXJMYXllclZpZXcgcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
d107CisKKyAgICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxh
eWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CisgICAgV2ViQVZQbGF5ZXJMYXll
ciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3IHBsYXllckxh
eWVyXTsKKyAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OmdldEFWTGF5ZXJWaWRlb0dy
YXZpdHlSZXNpemVBc3BlY3QoKV07CisgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvU3VibGF5
ZXI6cGxheWVyTGF5ZXIudmlkZW9TdWJsYXllcl07CisgICAgW3BpcFBsYXllckxheWVyIHNldFZp
ZGVvRGltZW5zaW9uczpwbGF5ZXJMYXllci52aWRlb0RpbWVuc2lvbnNdOworICAgIFtwaXBQbGF5
ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6cGxheWVyTGF5ZXIudmlkZW9HcmF2aXR5XTsKKyAgICBb
cGlwUGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6cGxheWVyTGF5ZXIubW9kZWxW
aWRlb0xheWVyRnJhbWVdOworICAgIFtwaXBQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVy
OnBsYXllckxheWVyLnBsYXllckNvbnRyb2xsZXJdOworICAgIFtwaXBWaWV3IGFkZFN1YnZpZXc6
cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107Cit9CisKK3N0YXRpYyB2b2lkIFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3N0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZp
ZXcoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5
ZXJWaWV3ID0gYVNlbGY7CisgICAgW3BsYXllckxheWVyVmlldyBhZGRTdWJ2aWV3OnBsYXllckxh
eWVyVmlldy52aWRlb1ZpZXddOworfQorCitzdGF0aWMgQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3ICpXZWJBVlBsYXllckxheWVyVmlld19waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCit7CisgICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXll
ckxheWVyVmlldyA9IGFTZWxmOworICAgIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVy
VmlldyAqcGlwVmlldyA9IFtwbGF5ZXJMYXllclZpZXcgdmFsdWVGb3JLZXk6QCJfcGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyJdOworICAgIGlmICghcGlwVmlldykgeworICAgICAgICBw
aXBWaWV3ID0gW1tnZXRXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdDbGFzcygp
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dOworICAgICAgICBbcGxheWVyTGF5ZXJW
aWV3IHNldFZhbHVlOnBpcFZpZXcgZm9yS2V5OkAiX3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXll
clZpZXciXTsKKyAgICB9CisgICAgcmV0dXJuIHBpcFZpZXc7Cit9CisKK3N0YXRpYyB2b2lkIFdl
YkFWUGxheWVyTGF5ZXJWaWV3X2RlYWxsb2MoaWQgYVNlbGYsIFNFTCkKK3sKKyAgICBXZWJBVlBs
YXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7CisgICAgUmV0YWluUHRyPFdl
YkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldz4gcGlwVmlldyA9IGFkb3B0TlMoW3Bs
YXllckxheWVyVmlldyB2YWx1ZUZvcktleTpAIl9waWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3Il0pOworICAgIFtwbGF5ZXJMYXllclZpZXcgc2V0VmFsdWU6bmlsIGZvcktleTpAIl9waWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3Il07CisgICAgb2JqY19zdXBlciBzdXBlckNsYXNz
IHsgcGxheWVyTGF5ZXJWaWV3LCBnZXRBVlBsYXllckxheWVyVmlld0NsYXNzKCkgfTsKKyAgICBh
dXRvIHN1cGVyX2RlYWxsb2MgPSByZWludGVycHJldF9jYXN0PHZvaWQoKikob2JqY19zdXBlcios
IFNFTCk+KG9iamNfbXNnU2VuZFN1cGVyKTsKKyAgICBzdXBlcl9kZWFsbG9jKCZzdXBlckNsYXNz
LCBAc2VsZWN0b3IoZGVhbGxvYykpOworfQorCisjcHJhZ21hIG1hcmsgLSBNZXRob2RzCisKK3N0
YXRpYyBDbGFzcyBnZXRXZWJBVlBsYXllckxheWVyVmlld0NsYXNzKCkKK3sKKyAgICBzdGF0aWMg
Q2xhc3MgdGhlQ2xhc3MgPSBuaWw7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICB0aGVDbGFzcyA9
IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoZ2V0QVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2Vi
QVZQbGF5ZXJMYXllclZpZXciLCAwKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNz
LCBAc2VsZWN0b3IoZGVhbGxvYyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYywg
InZAOiIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRQ
bGF5ZXJDb250cm9sbGVyOiksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29u
dHJvbGxlciwgInZAOkAiKTsKKyAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2Vs
ZWN0b3IocGxheWVyQ29udHJvbGxlciksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVy
Q29udHJvbGxlciwgIkBAOiIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBz
ZWxlY3RvcihzZXRWaWRlb1ZpZXc6KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRl
b1ZpZXcsICJ2QDpAIik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVj
dG9yKHZpZGVvVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3LCAiQEA6
Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHN0YXJ0Um91
dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBs
YXllckxheWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldywgInZAOiIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxl
Y3RvcihzdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KSwg
KElNUClXZWJBVlBsYXllckxheWVyVmlld19zdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0
dXJlUGxheWVyTGF5ZXJWaWV3LCAidkA6Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVD
bGFzcywgQHNlbGVjdG9yKHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpLCAoSU1QKVdl
YkFWUGxheWVyTGF5ZXJWaWV3X3BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJAQDoi
KTsKKyAgICAgICAgCisgICAgICAgIGNsYXNzX2FkZEl2YXIodGhlQ2xhc3MsICJfcGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyIsIHNpemVvZihXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5
ZXJMYXllclZpZXcgKiksIGxvZzIoc2l6ZW9mKFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlldyAqKSksICJAIik7CisgICAgICAgIAorICAgICAgICBvYmpjX3JlZ2lzdGVyQ2xhc3NQ
YWlyKHRoZUNsYXNzKTsKKyAgICAgICAgQ2xhc3MgbWV0YUNsYXNzID0gb2JqY19nZXRNZXRhQ2xh
c3MoIldlYkFWUGxheWVyTGF5ZXJWaWV3Iik7CisgICAgICAgIGNsYXNzX2FkZE1ldGhvZChtZXRh
Q2xhc3MsIEBzZWxlY3RvcihsYXllckNsYXNzKSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19s
YXllckNsYXNzLCAiQEA6Iik7CisgICAgfSk7CisgICAgcmV0dXJuIHRoZUNsYXNzOworfQorCiBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQoKQogICAgIDogbV9wbGF5ZXJDb250cm9sbGVyKGFkb3B0TlMoW1tXZWJBVlBsYXll
ckNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKSkKIHsKQEAgLTgyNiw2ICs5NDgsOSBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBm
bG9hdCBwbGF5YmFja1JhdAogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCkKIHsKKyAgICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXll
ckxheWVyICopW21fcGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKKworICAgIFtwbGF5ZXJM
YXllciBzZXRWaWRlb0RpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CiAgICAg
W21fcGxheWVyQ29udHJvbGxlciBzZXRIYXNFbmFibGVkVmlkZW86aGFzVmlkZW9dOwogICAgIFtt
X3BsYXllckNvbnRyb2xsZXIgc2V0Q29udGVudERpbWVuc2lvbnM6Q0dTaXplTWFrZSh3aWR0aCwg
aGVpZ2h0KV07CiB9CkBAIC04OTAsMTggKzEwMTUsMTggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVy
bmEKICAgICBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBaXJQbGF5RGV2aWNlTG9j
YWxpemVkTmFtZSA9IGxvY2FsaXplZERldmljZU5hbWU7CiAgICAgcGxheWVyQ29udHJvbGxlci5l
eHRlcm5hbFBsYXliYWNrVHlwZSA9IGV4dGVybmFsUGxheWJhY2tUeXBlOwogICAgIHBsYXllckNv
bnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSA9IGVuYWJsZWQ7Ci0gICAgW21fdmlkZW9M
YXllckNvbnRhaW5lci5nZXQoKSBzZXRIaWRkZW46ZW5hYmxlZF07CisgICAgW21fcGxheWVyTGF5
ZXJWaWV3IHNldEhpZGRlbjplbmFibGVkXTsKIH0KIAogQGludGVyZmFjZSBVSVdpbmRvdyAoKQot
LShCT09MKV9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3M7CistIChCT09MKV9pc0hvc3RlZEluQW5v
dGhlclByb2Nlc3M7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlWaWV3Q29udHJvbGxlciAoKQogQHBy
b3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgc2V0dGVyPV9zZXRJZ25vcmVBcHBTdXBwb3J0ZWRP
cmllbnRhdGlvbnM6KSBCT09MIF9pZ25vcmVBcHBTdXBwb3J0ZWRPcmllbnRhdGlvbnM7CiBAZW5k
CiAKLXZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVl
bihQbGF0Zm9ybUxheWVyJiB2aWRlb0xheWVyLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0
aWFsUmVjdCwgVUlWaWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2sp
Cit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4o
VUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxSZWN0LCBV
SVZpZXcqIHBhcmVudFZpZXcsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaykKIHsKICAgICBB
U1NFUlQobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzZXR1cEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7CkBAIC05MTAsNyArMTAzNSw2IEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihQbGF0
Zm9ybUxheWVyJiB2aWRlb0xheWVyCiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAg
W0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBtX3ZpZGVvTGF5ZXIg
PSAmdmlkZW9MYXllcjsKICAgICBtX21vZGUgPSBtb2RlOwogICAgIG1fcGFyZW50VmlldyA9IHBh
cmVudFZpZXc7CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBwYXJlbnRWaWV3LndpbmRvdzsKQEAgLTky
NSw1MSArMTA0OSw0NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXR1cEZ1bGxzY3JlZW4oUGxhdGZvcm1MYXllciYgdmlkZW9MYXllcgogICAgICAgICBbbV93aW5k
b3cgbWFrZUtleUFuZFZpc2libGVdOwogICAgIH0KIAotICAgIFttX3ZpZGVvTGF5ZXIgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOworICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbW2dldFdl
YkFWUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFttX3BsYXllckxh
eWVyVmlldyBzZXRIaWRkZW46W21fcGxheWVyQ29udHJvbGxlciBpc0V4dGVybmFsUGxheWJhY2tB
Y3RpdmVdXTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltnZXRV
SUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CisgICAgCisgICAgW21fcGxheWVyTGF5ZXJWaWV3
IHNldFZpZGVvVmlldzomdmlkZW9WaWV3XTsKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgYWRkU3Vi
dmlldzomdmlkZW9WaWV3XTsKIAotICAgIG1fbGF5ZXJIb3N0V3JhcHBlciA9IGFkb3B0TlMoW1tX
ZWJDQUxheWVySG9zdFdyYXBwZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbbV9sYXllckhvc3RXcmFw
cGVyIHNldE1vZGVsOm1fdmlkZW9GdWxsc2NyZWVuTW9kZWxdOwotICAgIFttX2xheWVySG9zdFdy
YXBwZXIgc2V0VmlkZW9TdWJsYXllcjptX3ZpZGVvTGF5ZXIuZ2V0KCldOworICAgIFdlYkFWUGxh
eWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXll
clZpZXcgcGxheWVyTGF5ZXJdOwogCi0gICAgbV92aWRlb0xheWVyQ29udGFpbmVyID0gW1dlYkFW
VmlkZW9MYXllciB2aWRlb0xheWVyXTsKLSAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldEhp
ZGRlbjpbbV9wbGF5ZXJDb250cm9sbGVyIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV1dOwotICAg
IFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9TdWJsYXllcjptX2xheWVySG9zdFdyYXBw
ZXIuZ2V0KCldOworICAgIFtwbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIGluaXRpYWxSZWN0LndpZHRoKCksIGluaXRpYWxSZWN0LmhlaWdodCgpKV07
CisgICAgW3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbbV9wbGF5ZXJDb250cm9sbGVy
IGNvbnRlbnREaW1lbnNpb25zXV07CiAKLSAgICBDR1NpemUgdmlkZW9TaXplID0gW21fcGxheWVy
Q29udHJvbGxlciBjb250ZW50RGltZW5zaW9uc107Ci0gICAgQ0dSZWN0IHZpZGVvUmVjdCA9IENH
UmVjdE1ha2UoMCwgMCwgdmlkZW9TaXplLndpZHRoLCB2aWRlb1NpemUuaGVpZ2h0KTsKLSAgICBb
bV92aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvUmVjdDp2aWRlb1JlY3RdOwotICAgIGlmICht
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5z
ZXRWaWRlb0xheWVyRnJhbWUodmlkZW9SZWN0KTsKLQotICAgIC8vIFRoaXMgbWV0aG9kIGhhcyBi
ZWVuIGRlcHJlY2F0ZWQgc28gaWdub3JlIHRoZSB3YXJuaW5nIHVudGlsIHdlIHBvcnQgb3VyIGNv
ZGUgdG8gdGhlIG5ldyBBUEkuCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0g
ICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhWaWRlb0xheWVyOm1fdmlkZW9MYXllckNvbnRhaW5l
ci5nZXQoKV0pOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorICAgIG1fcGxheWVyVmll
d0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5j
ZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CiAK
ICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9d
OwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxh
eWVyQ29udHJvbGxlciAqKW1fcGxheWVyQ29udHJvbGxlci5nZXQoKV07CiAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJDb250cm9sbGVyLmdldCgpXTsKICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJh
Y2s6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwogCi0gICAgW21fdmlkZW9MYXll
ckNvbnRhaW5lciBzZXRQbGF5ZXJWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVy
LmdldCgpXTsKLQogICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7CiAgICAgICAgIFttX3ZpZXdD
b250cm9sbGVyIGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5n
ZXQoKV07CiAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3Bs
YXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKLSAgICAgICAgW3BhcmVudFZp
ZXcud2luZG93IGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOworICAg
ICAgICBbcGFyZW50VmlldyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXdd
XTsKIAotICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW3BhcmVudFZp
ZXcgY29udmVydFJlY3Q6aW5pdGlhbFJlY3QgdG9WaWV3Om5pbF07CisgICAgW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbml0aWFs
UmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKIAog
ICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dl
dFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdXTsKKyAgICBbW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10gc2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVC
b3R0b21NYXJnaW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CisK
ICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOwogICAg
IFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07CiAKICAgICBb
Q0FUcmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2Ny
ZWVuKCk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJv
bmdUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7CisgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcikKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1
cEZ1bGxzY3JlZW4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKQEAgLTk4MCw3ICsxMDk5LDcgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBt
X2V4aXRSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBtX2VudGVyUmVxdWVzdGVkID0gdHJ1ZTsKIAot
ICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9yOltbZ2V0VUlDb2xv
ckNsYXNzKCkgYmxhY2tDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXllckxheWVyVmlldyBz
ZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNrQ29sb3JdXTsKICAgICBp
ZiAobW9kZSgpID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBp
Y3R1cmVJblBpY3R1cmUpCiAgICAgICAgIGVudGVyUGljdHVyZUluUGljdHVyZSgpOwogICAgIGVs
c2UgaWYgKG1vZGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZCkKQEAgLTEwMjQsMTMgKzExNDMsMTIgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZmkKICAgICAKICAgICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpleGl0RnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwotICAgIGlmIChtX3ZpZXdDb250
cm9sbGVyKQotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFtt
X3BhcmVudFZpZXcgY29udmVydFJlY3Q6ZmluYWxSZWN0IHRvVmlldzpuaWxdOwotICAgIGVsc2UK
LSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBmaW5hbFJlY3Q7
CisgICAgCisgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJl
bnRWaWV3IGNvbnZlcnRSZWN0OmZpbmFsUmVjdCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld10uc3VwZXJ2aWV3XTsKIAotICAgIGlmIChbbV92aWRlb0xheWVyQ29udGFpbmVyIHZp
ZGVvTGF5ZXJHcmF2aXR5XSAhPSBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplQXNwZWN0KQotICAg
ICAgICBbbV92aWRlb0xheWVyQ29udGFpbmVyIHNldFZpZGVvTGF5ZXJHcmF2aXR5OkFWVmlkZW9M
YXllckdyYXZpdHlSZXNpemVBc3BlY3RdOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxh
eWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJd
OworICAgIGlmIChbcGxheWVyTGF5ZXIgdmlkZW9HcmF2aXR5XSAhPSBnZXRBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0KCkpCisgICAgICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZp
dHk6Z2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwogCiAgICAgaWYgKGlzTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJl
KSkgewpAQCAtMTA0OSwyMiArMTE2NywyNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaQogCiAg
ICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgICAgICAgICBbQ0FUcmFuc2Fj
dGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotICAgICAgICAgICAgW21fdmlkZW9MYXllckNv
bnRhaW5lciBzZXRCYWNrZ3JvdW5kQ29sb3I6W1tnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9y
XSBDR0NvbG9yXV07CisgICAgICAgICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3Vu
ZENvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOltnZXRVSUNvbG9y
Q2xhc3MoKSBjbGVhckNvbG9yXV07CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OwogCi0gICAgICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAg
ICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7
CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBe
eworICAgICAgICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAg
ICAgICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2Ny
ZWVuKCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfV07CiAgICAgfTsKIH0KIAogQGludGVy
ZmFjZSBVSUFwcGxpY2F0aW9uICgpCi0tKHZvaWQpX3NldFN0YXR1c0Jhck9yaWVudGF0aW9uOihV
SUludGVyZmFjZU9yaWVudGF0aW9uKW87CistICh2b2lkKV9zZXRTdGF0dXNCYXJPcmllbnRhdGlv
bjooVUlJbnRlcmZhY2VPcmllbnRhdGlvbilvOwogQGVuZAogCiBAaW50ZXJmYWNlIFVJV2luZG93
ICgpCi0tKFVJSW50ZXJmYWNlT3JpZW50YXRpb24paW50ZXJmYWNlT3JpZW50YXRpb247CistIChV
SUludGVyZmFjZU9yaWVudGF0aW9uKWludGVyZmFjZU9yaWVudGF0aW9uOwogQGVuZAogCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCkBA
IC0xMDkyLDE2ICsxMjEyLDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmNsZWFudXBGdWxsc2NyZWVuKCkKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikKICAgICAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVy
XTsKICAgICAKLSAgICBbbV92aWRlb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBb
bV92aWRlb0xheWVyQ29udGFpbmVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICBbbV92aWRl
b0xheWVyQ29udGFpbmVyIHNldFBsYXllclZpZXdDb250cm9sbGVyOm5pbF07CisgICAgW21fcGxh
eWVyTGF5ZXJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIFtbbV92aWV3Q29udHJvbGxl
ciB2aWV3XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAgIFttX2xheWVySG9zdFdyYXBwZXIg
c2V0TW9kZWw6bnVsbHB0cl07Ci0KLSAgICBtX2xheWVySG9zdFdyYXBwZXIgPSBuaWw7Ci0gICAg
bV92aWRlb0xheWVyID0gbmlsOwotICAgIG1fdmlkZW9MYXllckNvbnRhaW5lciA9IG5pbDsKKyAg
ICBtX3BsYXllckxheWVyVmlldyA9IG5pbDsKICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0g
bmlsOwogICAgIG1fcGxheWVyQ29udHJvbGxlciA9IG5pbDsKICAgICBtX3ZpZXdDb250cm9sbGVy
ID0gbmlsOwpAQCAtMTE0Nyw3ICsxMjYxLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wgdmlzaWJsZSwgY28KICAg
ICBMT0coRnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVw
YXJlZFRvUmV0dXJuVG9JbmxpbmUoJXApIC0gdmlzaWJsZSglcykiLCB0aGlzLCBib29sU3RyaW5n
KHZpc2libGUpKTsKICAgICBpZiAobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjaykgewogICAgICAg
ICAKLSAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJl
bnRWaWV3IGNvbnZlcnRSZWN0OmlubGluZVJlY3QgdG9WaWV3Om5pbF07CisgICAgICAgIFttX3Bs
YXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVj
dDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZp
ZXddOwogCiAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEY6
Om1vdmUobV9wcmVwYXJlVG9JbmxpbmVDYWxsYmFjayk7CiAgICAgICAgIGNhbGxiYWNrKHZpc2li
bGUpOwpAQCAtMTIxOCw3ICsxMzMyLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgbV9leGl0Q29tcGxldGVk
ID0gdHJ1ZTsKIAotICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0QmFja2dyb3VuZENvbG9y
OltbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJDb2xvcl0gQ0dDb2xvcl1dOworICAgIFttX3BsYXll
ckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29s
b3JdXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENv
bG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjbGVhckNvbG9yXV07CiAKICAgICBjbGVhck1vZGUoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC5oCmluZGV4IDcyOTE0ZGJmMjMxNTFjNGFlYzBhNmNmZmFlYTE1NzgyOGZmY2YxOWEu
LjNjNTVhYTNiMWMzNzk1NWZhMmZmMGRkZjVlYjgxMTljNzBhM2QyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBA
IC00OCwxMCArNDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpID0gMDsKLSAgICB2aXJ0
dWFsIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUoKSBjb25zdCA9IDA7CiAgICAgZW51bSBWaWRl
b0dyYXZpdHkgeyBWaWRlb0dyYXZpdHlSZXNpemUsIFZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwg
VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCB9OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRl
b0xheWVyR3Jhdml0eShWaWRlb0dyYXZpdHkpID0gMDsKLSAgICB2aXJ0dWFsIFZpZGVvR3Jhdml0
eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0
QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBpbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRl
eCA2OWM4ZjAxYjhjM2YyZGU2YmIyMGU1Mjg5NmI0MjA0Zjc2MWRkNDY5Li4xYWEzY2U1YmJjOTA4
Y2NkYTQ0YTNkMjJiNDQyYTIwMmE3NmJlMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQuaApAQCAtNzIsOSArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHJlcXVlc3RFeGl0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlk
ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUo
KSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Vmlk
ZW9MYXllckdyYXZpdHkoVmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIFZpZGVvR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0eSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggOWM4OTVhYmYyM2NmZjQyMjAwZjYzNjhl
NzZlZThmN2E0MjE1NjEwZS4uYjg1MmU5ZmUwODYyMjg5NjQ4NmU3NzRiM2VhMDQ4NjRlNTNlNjI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMjU0LDExICsyNTQs
NiBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xh
eWVyRnJhbWUoRmxvYXRSZWN0IHJlY3QpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRl
b0Z1bGxzY3JlZW5GcmFtZShyZWN0KTsKIH0KIAotRmxvYXRSZWN0IFdlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Ojp2aWRlb0xheWVyRnJhbWUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3ZpZGVvRnJhbWU7Ci19Ci0KIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRl
b0dyYXZpdHkgZ3Jhdml0eSkKIHsKICAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVv
R3Jhdml0eSA9IE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7CkBAIC0yNzQs
MjEgKzI2OSw2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlCiAgICAgbV92aWRlb0VsZW1lbnQt
PnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkodmlkZW9HcmF2aXR5KTsKIH0KIAotV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdAotewotICAgIHN3aXRjaCAobV92aWRl
b0VsZW1lbnQtPnZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoKSkgewotICAgIGNhc2UgTWVkaWFQbGF5
ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZToKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6
ZTsKLSAgICBjYXNlIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q6Ci0gICAg
ICAgIHJldHVybiBWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3Q7Ci0gICAgY2FzZSBNZWRpYVBsYXll
cjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDoKLSAgICAgICAgcmV0dXJuIFZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGw7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFZpZGVvR3Jhdml0eVJlc2l6ZTsKLX0KLQogdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBz
ZWxlY3RlZEF1ZGlvSW5kZXgpCiB7CiAgICAgQXVkaW9UcmFjayogc2VsZWN0ZWRBdWRpb1RyYWNr
ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2Nv
YS9BVktpdFNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJ
LmgKaW5kZXggN2NiYjA3YjY2M2RkZjEzNDE0MTdlZmJmZDU0Y2IwMzAzZmE2NGRlYi4uY2M3MTg5
Yzc0NGUwOWVjMGFkMDMzYjVhZjc1OTRlMGRkNjFkNzdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKQEAgLTM0LDkgKzM0LDEyIEBACiAjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKIAogI2ltcG9ydCA8QVZLaXQvQVZQbGF5ZXJDb250cm9sbGVy
Lmg+CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1Xb2JqYy1wcm9wZXJ0eS1uby1hdHRyaWJ1dGUiCisjaW1wb3J0IDxBVktp
dC9BVlBsYXllckxheWVyVmlldy5oPgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2lt
cG9ydCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxB
VktpdC9BVlBsYXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHkuaD4KLSNpbXBvcnQgPEFWS2l0
L0FWVmlkZW9MYXllci5oPgogCiAjZWxzZQogCkBAIC01OCwxNyArNjEsMTcgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgQVZQbGF5ZXJDb250cm9sbGVyRXh0ZXJuYWxQbGF5YmFja1R5cGUp
IHsKIEBwcm9wZXJ0eSAoTlNfTk9OQVRPTUlDX0lPU09OTFksIHJlYWRvbmx5KSBBVlBsYXllckNv
bnRyb2xsZXJTdGF0dXMgc3RhdHVzOwogQGVuZAogCi1AcHJvdG9jb2wgQVZWaWRlb0xheWVyCi10
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlZpZGVvTGF5ZXJHcmF2aXR5KSB7Ci0gICAgQVZW
aWRlb0xheWVyR3Jhdml0eUludmFsaWQgPSAwLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNp
emVBc3BlY3QgPSAxLAotICAgIEFWVmlkZW9MYXllckdyYXZpdHlSZXNpemVBc3BlY3RGaWxsID0g
MiwKLSAgICBBVlZpZGVvTGF5ZXJHcmF2aXR5UmVzaXplID0gMywKLX07Ci0tICh2b2lkKXNldFBs
YXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXI7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYykgQVZWaWRlb0xheWVyR3Jhdml0eSB2aWRlb0xheWVyR3Jhdml0
eTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR1JlY3QgdmlkZW9SZWN0OwotQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNSZWFkeUZvckRpc3BsYXkpIEJPT0wgcmVhZHlG
b3JEaXNwbGF5OworQGNsYXNzIEFWUGxheWVyTGF5ZXI7CisKK0BpbnRlcmZhY2UgQVZQaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyOworQGVuZAorCitAaW50ZXJmYWNl
IEFWUGxheWVyTGF5ZXJWaWV3IDogVUlWaWV3CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpY3R1cmVJblBpY3R1
cmVQbGF5ZXJMYXllclZpZXc7CistICh2b2lkKXN0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3OworLSAodm9pZClzdG9wUm91dGluZ1ZpZGVvVG9QaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3OwogQGVuZAogCiBAcHJvdG9jb2wgQVZQbGF5ZXJWaWV3
Q29udHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KQEAgLTg1LDE1ICs4OCwxNSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5S
ZWFzb24pIHsKIEBlbmQKIAogQGludGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9sbGVyIChEZXRh
aWxzKQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlkZW9MYXllcjooQ0FMYXllciA8QVZWaWRl
b0xheWVyPiAqKXZpZGVvTGF5ZXI7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQbGF5ZXJMYXll
clZpZXc6KEFWUGxheWVyTGF5ZXJWaWV3ICopcGxheWVyTGF5ZXJWaWV3OwogLSAodm9pZCllbnRl
ckZ1bGxTY3JlZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClleGl0RnVsbFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAK
IC0gKEJPT0wpaXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CiAtICh2b2lkKXN0YXJ0UGljdHVy
ZUluUGljdHVyZTsKIC0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7Ci0tICh2b2lkKXNldEFs
bG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazooQk9PTClhbGxvdzsKIAorQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOwogQHByb3BlcnR5
IChub25hdG9taWMsIHN0cm9uZykgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVy
OwogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxBVlBsYXllclZpZXdDb250cm9sbGVy
RGVsZWdhdGU+IGRlbGVnYXRlOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKaW5kZXggN2Q5OGQ0M2IwODI5NmRmMjdiZDlhNzg5
ZGU3NjEyOTkzMWEwMzhkOS4uZWY0MDgwM2I1YjcwNzFjM2I5NjljZDYzY2NmZTE1YzQ5NjhlZjk5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNv
cmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29y
ZVNQSS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQVJlbmRlclNl
cnZlci5oPgogCiAjaWZkZWYgX19PQkpDX18KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllckhv
c3QuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllclByaXZhdGUuaD4KIAogLy8gRklYTUU6
IEFzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzE4OTg1MTUyPiwgd2UgY29uZGl0
aW9uYWxseSBlbmNsb3NlIHRoZSBmb2xsb3dpbmcKQEAgLTEzNCw2ICsxMzUsMTIgQEAgdHlwZWRl
ZiBlbnVtIHsKICsgKHZvaWQpYWRkQ29tbWl0SGFuZGxlcjoodm9pZCheKSh2b2lkKSlibG9jayBm
b3JQaGFzZTooQ0FUcmFuc2FjdGlvblBoYXNlKXBoYXNlOwogQGVuZAogI2VuZGlmCisKK0BpbnRl
cmZhY2UgQ0FMYXllckhvc3QgOiBDQUxheWVyCitAcHJvcGVydHkgdWludDMyX3QgY29udGV4dElk
OworQHByb3BlcnR5IEJPT0wgaW5oZXJpdHNTZWN1cml0eTsKK0BlbmQKKwogI2VuZGlmIC8vIF9f
T0JKQ19fCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMDhiZjNiY2U0
M2JlZDFiNzkxNDQ5NzRkMGQ4ODJjMTQ3ZGZkYmY1Ni4uZmEzMWVlZDQ0ZTMwNmM0MzVmOGY4MTE0
OTM3YTk0MzU3MGVlNDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC01MywxMCAr
NTMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKSB7IG1fbWFuYWdlciA9IG51
bGxwdHI7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVySG9zdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXJIb3N0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRMYXllckhvc3QoUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+JiYgbGF5ZXJIb3N0KSB7IG1fbGF5ZXJIb3N0ID0gV1RGOjptb3ZlKGxheWVy
SG9zdCk7IH0KLQotICAgIHZvaWQgc2V0SW5pdGlhbFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpG
bG9hdFJlY3QgZnJhbWUpIHsgbV92aWRlb0xheWVyRnJhbWUgPSBmcmFtZTsgfQorICAgIFVJVmll
dyAqbGF5ZXJIb3N0VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0Vmlldy5nZXQoKTsg
fQorICAgIHZvaWQgc2V0TGF5ZXJIb3N0VmlldyhSZXRhaW5QdHI8VUlWaWV3PiYmIGxheWVySG9z
dFZpZXcpIHsgbV9sYXllckhvc3RWaWV3ID0gV1RGOjptb3ZlKGxheWVySG9zdFZpZXcpOyB9CiAK
IHByaXZhdGU6CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQpAQCAtNzgs
OSArNzYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RXhpdEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5
KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWaWRlb0dyYXZpdHkgdmlkZW9M
YXllckdyYXZpdHkoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXVk
aW9NZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwpAQCAtOTQsOSArOTAsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KiBtX21hbmFnZXI7CiAgICAgdWlu
dDY0X3QgbV9jb250ZXh0SWQ7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fbGF5ZXJI
b3N0OwotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3ZpZGVvTGF5ZXJGcmFtZTsKLSAgICBWaWRl
b0dyYXZpdHkgbV92aWRlb0xheWVyR3Jhdml0eSB7IFZpZGVvR3Jhdml0eVJlc2l6ZSB9OworICAg
IFJldGFpblB0cjxVSVZpZXcgKj4gbV9sYXllckhvc3RWaWV3OwogfTsKIAogY2xhc3MgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5PiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDczY2M3YzJmZjJiZjVjZGQyMTcxYzk2MmE3YzMz
NDVhNTBkNjE0NzMuLjBkNTIzODQzZjZkNWRmYTJkOGI5YTE5MjQ3MjIzMWMwNjZjOTY4MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zNSw5ICszNSwzNCBAQAogI2ltcG9ydCAi
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3Jl
QW5pbWF0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVGltZVJhbmdlcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CiAKK0BpbnRlcmZhY2UgV2ViTGF5ZXJIb3N0VmlldyA6IFVJVmlldworQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgdWludDMyX3QgY29udGV4dElEOworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gV2ViTGF5ZXJIb3N0VmlldworCisrIChDbGFzcylsYXllckNsYXNzIHsKKyAgICByZXR1cm4g
W0NBTGF5ZXJIb3N0IGNsYXNzXTsKK30KKworLSAodWludDMyX3QpY29udGV4dElEIHsKKyAgICBy
ZXR1cm4gW1tzZWxmIGxheWVySG9zdF0gY29udGV4dElkXTsKK30KKworLSAodm9pZClzZXRDb250
ZXh0SUQ6KHVpbnQzMl90KWNvbnRleHRJRCB7CisgICAgW1tzZWxmIGxheWVySG9zdF0gc2V0Q29u
dGV4dElkOmNvbnRleHRJRF07Cit9CisKKy0gKENBTGF5ZXJIb3N0ICopbGF5ZXJIb3N0IHsKKyAg
ICByZXR1cm4gKENBTGF5ZXJIb3N0ICopW3NlbGYgbGF5ZXJdOworfQorCitAZW5kCisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzOSwyOCArMTY0
LDE2IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RXhpdEZ1
bGxzY3JlZW4oKQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0Vmlk
ZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCBmcmFtZSkKIHsKLSAgICBtX3ZpZGVvTGF5
ZXJGcmFtZSA9IGZyYW1lOwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFuYWdlci0+
c2V0VmlkZW9MYXllckZyYW1lKG1fY29udGV4dElkLCBmcmFtZSk7CiB9CiAKLVdlYkNvcmU6OkZs
b2F0UmVjdCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnZpZGVvTGF5ZXJGcmFtZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmlkZW9MYXllckZyYW1lOwotfQotCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViQ29yZTo6
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogewotICAgIG1f
dmlkZW9MYXllckdyYXZpdHkgPSBncmF2aXR5OwogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAg
IG1fbWFuYWdlci0+c2V0VmlkZW9MYXllckdyYXZpdHkobV9jb250ZXh0SWQsIGdyYXZpdHkpOwog
fQogCi1XZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5IFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6dmlkZW9MYXllckdyYXZpdHkoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3ZpZGVvTGF5ZXJHcmF2aXR5OwotfQotCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBvcHRpb25J
ZCkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQpAQCAtMjQwLDggKzI1Myw4IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKICAgICAgICAgc3RkOjp0aWUo
bW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKIAogICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRh
dGUoKTsKLSAgICAgICAgW21vZGVsLT5sYXllckhvc3QoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07
Ci0gICAgICAgIG1vZGVsLT5zZXRMYXllckhvc3QobnVsbHB0cik7CisgICAgICAgIFttb2RlbC0+
bGF5ZXJIb3N0VmlldygpIHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICBtb2RlbC0+c2V0
TGF5ZXJIb3N0VmlldyhudWxscHRyKTsKICAgICB9CiAKICAgICBtX2NvbnRleHRNYXAuY2xlYXIo
KTsKQEAgLTMxMCwxNiArMzIzLDE3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1CiAKICAgICBz
dGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRl
eHRJZCk7CiAKLSAgICBtb2RlbC0+c2V0SW5pdGlhbFZpZGVvTGF5ZXJGcmFtZShpbml0aWFsUmVj
dCk7Ci0gICAgbW9kZWwtPnNldExheWVySG9zdChXS01ha2VSZW5kZXJMYXllcih2aWRlb0xheWVy
SUQpKTsKKyAgICBSZXRhaW5QdHI8V2ViTGF5ZXJIb3N0Vmlldz4gdmlldyA9IGFkb3B0TlMoW1tX
ZWJMYXllckhvc3RWaWV3IGFsbG9jXSBpbml0XSk7CisgICAgW3ZpZXcgc2V0Q29udGV4dElEOnZp
ZGVvTGF5ZXJJRF07CisgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcodmlldyk7CiAgICAgaWYg
KGhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvciAhPSAxKSB7CiAgICAgICAgIC8vIEludmVydCB0aGUg
c2NhbGUgdHJhbnNmb3JtIGFkZGVkIGluIHRoZSBXZWJQcm9jZXNzIHRvIGZpeCA8cmRhcjovL3By
b2JsZW0vMTgzMTY1NDI+LgogICAgICAgICBmbG9hdCBpbnZlcnNlU2NhbGUgPSAxIC8gaG9zdGlu
Z0RldmljZVNjYWxlRmFjdG9yOwotICAgICAgICBbbW9kZWwtPmxheWVySG9zdCgpIHNldFRyYW5z
Zm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKGludmVyc2VTY2FsZSwgaW52ZXJzZVNjYWxlLCAx
KV07CisgICAgICAgIFtbbW9kZWwtPmxheWVySG9zdFZpZXcoKSBsYXllcl0gc2V0U3VibGF5ZXJU
cmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShpbnZlcnNlU2NhbGUsIGludmVyc2VTY2Fs
ZSwgMSldOwogICAgIH0KIAogICAgIFVJVmlldyAqcGFyZW50VmlldyA9IGRvd25jYXN0PFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX3BhZ2UtPmRyYXdpbmdBcmVhKCkpLnJlbW90
ZUxheWVyVHJlZUhvc3QoKS5yb290TGF5ZXIoKTsKLSAgICBpbnRlcmZhY2UtPnNldHVwRnVsbHNj
cmVlbigqbW9kZWwtPmxheWVySG9zdCgpLCBpbml0aWFsUmVjdCwgcGFyZW50VmlldywgdmlkZW9G
dWxsc2NyZWVuTW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CisgICAgaW50ZXJmYWNlLT5z
ZXR1cEZ1bGxzY3JlZW4oKm1vZGVsLT5sYXllckhvc3RWaWV3KCksIGluaXRpYWxSZWN0LCBwYXJl
bnRWaWV3LCB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKTsKIH0K
IAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlc2V0TWVkaWFTdGF0ZSh1
aW50NjRfdCBjb250ZXh0SWQpCkBAIC01MDIsOCArNTE2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKICAgICBhdXRvJiBtb2RlbCA9IGVuc3VyZU1vZGVsKGNvbnRleHRJZCk7CiAKICAgICBbQ0FU
cmFuc2FjdGlvbiBmbHVzaF07Ci0gICAgW21vZGVsLmxheWVySG9zdCgpIHJlbW92ZUZyb21TdXBl
cmxheWVyXTsKLSAgICBtb2RlbC5zZXRMYXllckhvc3QobnVsbHB0cik7CisgICAgW21vZGVsLmxh
eWVySG9zdFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBtb2RlbC5zZXRMYXllckhv
c3RWaWV3KG51bGxwdHIpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiAKICAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQppbmRleCA1MzQyNDY5MWNiMmUyOTk4ZTEzYWM4ZGVkNTBjMWI3NGE4NDUxNDI3
Li44MWM0ZGM3MGQzYjMwZDA0ODU4NmY4ZmM0NzhlODJmZTNlYzMyOTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KQEAgLTIzMiw5ICsyMzIsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGUKICAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJmYWNlOwog
ICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKTsKIAorICAgIEZsb2F0UmVjdCBjbGllbnRSZWN0ID0gY2xpZW50UmVjdEZvckVs
ZW1lbnQoJnZpZGVvRWxlbWVudCk7CisgICAgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSA9IEZs
b2F0UmVjdCgwLCAwLCBjbGllbnRSZWN0LndpZHRoKCksIGNsaWVudFJlY3QuaGVpZ2h0KCkpOwor
ICAgIAogICAgIGludGVyZmFjZS0+c2V0VGFyZ2V0SXNGdWxsc2NyZWVuKHRydWUpOwogICAgIGlu
dGVyZmFjZS0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CiAgICAgbW9kZWwtPnNldFZpZGVvRWxl
bWVudCgmdmlkZW9FbGVtZW50KTsKKyAgICBtb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKHZpZGVv
TGF5ZXJGcmFtZSk7CiAKICAgICBpZiAoaW50ZXJmYWNlLT5pc0FuaW1hdGluZygpKQogICAgICAg
ICByZXR1cm47CkBAIC00MjgsNyArNDMyLDEwIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIFtDQVRy
YW5zYWN0aW9uIGNvbW1pdF07CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBzdHJv
bmdUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjb250ZXh0SWRdIHsKKyAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICB9KTsKIH0KICAgICAKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>