<?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>170693</bug_id>
          
          <creation_ts>2017-04-10 14:10:12 -0700</creation_ts>
          <short_desc>Adopt AVKit name change from AVFunctionBar* to AVTouchBar*</short_desc>
          <delta_ts>2022-07-19 13:14:29 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=242915</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1296146</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-10 14:10:12 -0700</bug_when>
    <thetext>Adopt AVKit name change from AVFunctionBar* to AVTouchBar*

rdar://problem/31230018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296153</commentid>
    <comment_count>1</comment_count>
      <attachid>306741</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-10 14:24:53 -0700</bug_when>
    <thetext>Created attachment 306741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296154</commentid>
    <comment_count>2</comment_count>
      <attachid>306741</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-04-10 14:35:53 -0700</bug_when>
    <thetext>Comment on attachment 306741
Patch

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

&gt; Source/WebCore/platform/spi/cocoa/AVKitSPI.h:161
&gt; +typedef AVTouchBarMediaSelectionOption WKAVTouchBarMediaSelectionOption;

Though I think it was my suggestion to do the WK-, now I wonder if it would be better to just typedef to the new names on the old OS, and use the new names everywhere? We know they won&apos;t magically appear in the old SDK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296217</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-10 16:58:18 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #2)
&gt; Comment on attachment 306741 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=306741&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/spi/cocoa/AVKitSPI.h:161
&gt; &gt; +typedef AVTouchBarMediaSelectionOption WKAVTouchBarMediaSelectionOption;
&gt; 
&gt; Though I think it was my suggestion to do the WK-, now I wonder if it would
&gt; be better to just typedef to the new names on the old OS, and use the new
&gt; names everywhere? We know they won&apos;t magically appear in the old SDK.

Oh yeah, that&apos;s a pretty good idea. I&apos;m going to attach a new patch that doesn&apos;t do that yet just to see if I can get the bots green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296218</commentid>
    <comment_count>4</comment_count>
      <attachid>306758</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-10 16:58:38 -0700</bug_when>
    <thetext>Created attachment 306758
Patch to try to fix bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296284</commentid>
    <comment_count>5</comment_count>
      <attachid>306776</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-10 22:08:18 -0700</bug_when>
    <thetext>Created attachment 306776
Another try for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296475</commentid>
    <comment_count>6</comment_count>
      <attachid>306831</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-11 10:35:05 -0700</bug_when>
    <thetext>Created attachment 306831
Green bots patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296557</commentid>
    <comment_count>7</comment_count>
      <attachid>306854</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-11 14:45:39 -0700</bug_when>
    <thetext>Created attachment 306854
iOS bots patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296577</commentid>
    <comment_count>8</comment_count>
      <attachid>306867</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-11 15:35:21 -0700</bug_when>
    <thetext>Created attachment 306867
Another bots patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296601</commentid>
    <comment_count>9</comment_count>
      <attachid>306867</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-11 16:46:38 -0700</bug_when>
    <thetext>Comment on attachment 306867
Another bots patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:5008
&gt; +- (id)_mediaPlaybackControlsView

Can these be something a bit more specific, like NSView?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296640</commentid>
    <comment_count>10</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-11 21:25:08 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #9)
&gt; Comment on attachment 306867 [details]
&gt; Another bots patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=306867&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:5008
&gt; &gt; +- (id)_mediaPlaybackControlsView
&gt; 
&gt; Can these be something a bit more specific, like NSView?

Yeah, the id is not great. I think this can be fixed if I adopt Tim&apos;s suggestion of only typedef&apos;ing on the old OS, and using the name from the new OS. That way there is only one name to forward declare, which is what we used to do.

Patch forthcoming!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296645</commentid>
    <comment_count>11</comment_count>
      <attachid>306887</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-11 21:37:12 -0700</bug_when>
    <thetext>Created attachment 306887
Patch to only typedef old OS&apos;s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296790</commentid>
    <comment_count>12</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-12 11:38:47 -0700</bug_when>
    <thetext>Thanks Sam! https://trac.webkit.org/changeset/215274/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296792</commentid>
    <comment_count>13</comment_count>
      <attachid>306887</attachid>
    <who name="">mitz</who>
    <bug_when>2017-04-12 11:47:56 -0700</bug_when>
    <thetext>Comment on attachment 306887
Patch to only typedef old OS&apos;s

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

&gt; Source/WebCore/platform/spi/cocoa/AVKitSPI.h:156
&gt; +#if __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 101300

Shouldn’t this check the SDK version rather than the deployment version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296832</commentid>
    <comment_count>14</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2017-04-12 14:22:14 -0700</bug_when>
    <thetext>Just a few build fixes:

https://trac.webkit.org/changeset/215274/webkit
https://trac.webkit.org/changeset/215275/webkit
https://trac.webkit.org/changeset/215277/webkit
https://trac.webkit.org/changeset/215279/webkit
https://trac.webkit.org/changeset/215281/webkit
https://trac.webkit.org/changeset/215282/webkit
https://trac.webkit.org/changeset/215283/webkit
https://trac.webkit.org/changeset/215284/webkit
https://trac.webkit.org/changeset/215285/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306741</attachid>
            <date>2017-04-10 14:24:53 -0700</date>
            <delta_ts>2017-04-10 16:58:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>28155</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA0LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVktpdCBuYW1lIGNoYW5n
ZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIqCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIzMDAxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSBuZXcgbmFtZXMgb25s
eSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0aGlzIHBhdGNoIHVzZXMgdHlwZWRl
ZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxlLiBTTzoKKworICAgICAgICBBVkZ1bmN0aW9u
QmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJlciwgd2l0aCB0eXBlZGVmIFdLQVZU
b3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciwgCisgICAg
ICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIKKwor
ICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gaXMgbm93IEFWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAKKyAgICAgICAgdHlwZWRlZiBXS0FWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFuZCB0aGUgcHJvdG9jb2wgQVZGdW5j
dGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBpcyBub3cgCisgICAgICAgIEFWVG91
Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcsIHdpdGggdGhlICNkZWZpbmUgCisgICAg
ICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZworCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlv
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25dKToKKyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0Q3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEN1
cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAg
KG1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisKKyAgICAgICAgSGVyZSBpcyB3aGVyZSB0aGUgdHlw
ZWRlZnMgYW5kICNkZWZpbmUgYXJlIGRlY2xhcmVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOgorCiAyMDE3LTA0LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcmFwIGxlZ2FjeSBNZWRpYVN0cmVhbSBBUEkgaW4gcnVudGlt
ZSBmbGFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDE3ICszOSwxNyBAQCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCiBX
RUJDT1JFX0VYUE9SVAotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5T
T2JqZWN0IDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiB7CitAaW50
ZXJmYWNlIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgPFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4gewogICAgIE5TVGltZUludGVydmFsIF9jb250
ZW50RHVyYXRpb247CiAgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CiAgICAg
TlNUaW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVr
YWJsZVRpbWVSYW5nZXM7CiAgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOwogICAgIEJPT0wgX2hh
c0VuYWJsZWRWaWRlbzsKLSAgICBSZXRhaW5QdHI8TlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKj4+IF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJy
ZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFJldGFpblB0cjxO
U0FycmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2xlZ2libGVGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0FycmF5PFdLQVZUb3VjaEJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICo+PiBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsK
KyAgICBSZXRhaW5QdHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50
QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0Fy
cmF5PFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZUZ1bmN0aW9u
QmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gX2N1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjsKICAgICBmbG9hdCBfcmF0ZTsKICAgICBCT09MIF9jYW5Ub2dnbGVQbGF5YmFjazsK
IApAQCAtNjksMTAgKzY5LDEwIEBAIEBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgOiAKIAogQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7CiAKLS0gKEFWRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb247Ci0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlv
bjsKLS0gKEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxl
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLS0gKHZvaWQpc2V0Q3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVkZ1bmN0aW9uQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKilvcHRpb247CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CistICh2b2lk
KXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KFdLQVZUb3Vj
aEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uOworLSAoV0tBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb247CistICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb247CiAtICh2
b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7
CiAtICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0
ZWRJbmRleDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0JKHJldmlzaW9uIDIxNTE4NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTEgQEAKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdudWxsYWJp
bGl0eS1jb21wbGV0ZW5lc3MiCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitTT0ZUX0xJTktfQ0xBU1NfT1BU
SU9OQUwoQVZLaXQsIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyNlbHNlCiBTT0ZU
X0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbikKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MAogCiBAaW1wbGVtZW50YXRpb24gV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIKIApAQCAtMTIx
LDIyICsxMjUsMjIgQEAgLSAodm9pZCllbmRGdW5jdGlvbkJhclNjcnViYmluZwogICAgIF93ZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPmVuZFNjcnViYmluZygpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWF1ZGlvRnVuY3Rpb25C
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMKKy0gKE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKj4gKilhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zCiB7
CiAgICAgcmV0dXJuIF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgp
OwogfQogCi0tICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6
KE5TQXJyYXk8QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9PcHRp
b25zCistICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5T
QXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMK
IHsKICAgICBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvT3B0
aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorLSAoV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uCiB7CiAgICAgcmV0dXJuIF9jdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
KWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KKy0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCiB7CiAgICAgaWYgKGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTE1MSwyMiArMTU1LDIyIEBAIC0gKHZvaWQpc2V0Q3Vy
cmVudEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVMKICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucworLSAoTlNBcnJheTxXS0FWVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
cwogewogICAgIHJldHVybiBfbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
LmdldCgpOwogfQogCi0tICh2b2lkKXNldExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uczooTlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucworLSAodm9pZClzZXRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbnM6KE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucwogewogICAgIF9sZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uICopY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgogewogICAgIHJldHVybiBfY3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNl
dEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uCist
ICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjoo
V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24KIHsKICAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50
TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTE4NSw3ICsxODksMTEgQEAgc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVk
aWFTZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUo
KV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKLSAgICAgICAgaWYgKFJldGFp
blB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0
TlMoW2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0
V2l0aFRpdGxlOm5hbWVdKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorICAgICAgICBpZiAoUmV0YWluUHRyPFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpuYW1lIHR5cGU6QVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uVHlwZVJlZ3VsYXJdKSkKKyNlbHNlCisgICAgICAgIGlmIChSZXRhaW5Q
dHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0TlMo
W2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0
aFRpdGxlOm5hbWVdKSkKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAogICAgICAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5n
ZXQoKV07CiAgICAgfQogICAgIHJldHVybiB3ZWJPcHRpb25zOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgJKHJldmlzaW9uIDIxNTE4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsMTQgKzE1MywzOSBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK09CSkNfQ0xBU1Mg
QVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK09CSkNfQ0xBU1MgQVZUb3VjaEJh
clNjcnViYmVyOworT0JKQ19DTEFTUyBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisK
K3R5cGVkZWYgQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uOwordHlwZWRlZiBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3Zp
ZGVyIFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZUb3Vj
aEJhclNjcnViYmVyIFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250
cm9sbGluZworI2Vsc2UKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlcjsKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworT0JKQ19DTEFTUyBB
VkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK3R5cGVkZWYgQVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwor
dHlwZWRlZiBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZGdW5jdGlvbkJhclNjcnViYmVy
IFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxpbmcgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZwor
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwCisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVyLmg+CisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyU2NydWJiZXIuaD4KKyNlbHNl
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyLmg+
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyU2NydWJiZXIuaD4KKyNlbmRpZiAvLyBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogI2Vsc2UKIAogTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIAotQHByb3RvY29sIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxpbmcgPE5TT2JqZWN0PgorQHByb3RvY29sIFdLQVZUb3VjaEJhclBsYXliYWNrQ29u
dHJvbHNDb250cm9sbGluZyA8TlNPYmplY3Q+CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJ
bnRlcnZhbCBjb250ZW50RHVyYXRpb247CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBudWxsYWJsZSkg
QVZWYWx1ZVRpbWluZyAqdGltaW5nOwogQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzU2Vl
a2luZykgQk9PTCBzZWVraW5nOwpAQCAtMTcwLDE2ICsxOTUsMTUgQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzRW5hYmxlZFZpZGVvOwogQGVu
ZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgOiBO
U1Jlc3BvbmRlcgorQGludGVyZmFjZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgOiBOU1Jlc3BvbmRlcgogQHByb3BlcnR5IChzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkg
TlNUb3VjaEJhciAqdG91Y2hCYXI7Ci1AcHJvcGVydHkgKGFzc2lnbiwgbnVsbGFibGUpIGlkPEFW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyOworQHByb3BlcnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOwog
QGVuZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJTY3J1YmJlciA6IE5TVmlldwotQHByb3Bl
cnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0Nv
bnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjsKK0BpbnRlcmZhY2UgV0tBVlRv
dWNoQmFyU2NydWJiZXIgOiBOU1ZpZXcKK0Bwcm9wZXJ0eSAoYXNzaWduLCBudWxsYWJsZSkgaWQ8
V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxlcjsKIEBlbmQKIAotQGNsYXNzIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKIEBjbGFzcyBBVlRodW1ibmFpbDsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNy0wNC0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJv
bSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBw
bHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAor
ICAgICAgICB3aGVyZXZlciBwb3NzaWJsZS4gU086CisKKyAgICAgICAgQVZGdW5jdGlvbkJhclNj
cnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIsIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hC
YXJTY3J1YmJlcgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgaXMgbm93IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIsIAorICAgICAgICB3
aXRoIHR5cGVkZWYgV0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyCisKKyAgICAg
ICAgQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24sIHdpdGggCisgICAgICAgIHR5cGVkZWYgV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFWRnVuY3Rpb25C
YXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBBVlRvdWNoQmFy
UGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nLCB3aXRoIHRoZSAjZGVmaW5lIAorICAgICAgICBX
S0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKworICAgICAgICBTUEkg
aGVhZGVycyBjYW5ub3QgdXNlIHRoZSB0eXBlZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKworICAgICAgICBVc2UgdGhlIHR5cGVkZWZzIGVsc2V3
aGVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlld10pOgorICAgICAgICAoLVtXS1ZpZXcgX2FkZE1lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisKKyAg
ICAgICAgU29mdCBsaW5rcyBhbmQgYWxsb2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMu
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNoQmFyKToKKwogMjAxNy0wNC0xMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVttYWNP
U10gQmxvY2sgYWNjZXNzIHRvIEFwcGxlIEV2ZW50cyBiZWZvcmUgbGF1bmNoLgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSwxMSBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJT
dHlsZS5oPgogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
K0BjbGFzcyBBVlRvdWNoQmFyU2NydWJiZXI7CisjZWxzZQogQGNsYXNzIEFWRnVuY3Rpb25CYXJT
Y3J1YmJlcjsKKyNlbmRpZgogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKIApAQCAtMTM1
LDggKzEzOSwxMyBAQAogLSAodm9pZClfZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZTooTlNFdmVudCAqKWV2ZW50OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBz
ZXR0ZXI9X3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFy
U2NydWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworLSAodm9pZClfYWRkTWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnViYmVyICopbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldzsKKyNlbHNlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWRnVu
Y3Rpb25CYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAtICh2b2lkKV9h
ZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwCiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3OwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMDUsNyAr
NTAwNSw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmkKICNlbmRp
ZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldworLSAoV0tBVlRvdWNoQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dwogewogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHJldHVybiBfaW1wbC0+Y2xpZW50V2FudHNN
ZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgPyBfaW1wbC0+bWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldygpIDogbmlsOwpAQCAtNTAxNSw3ICs1MDE1LDcgQEAgLSAoQVZGdW5jdGlvbkJhclNjcnVi
YmVyICopX21lZGlhUGxheWJhYwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBmb3Igc3ViY2xhc3Nl
cyB0byBvdmVycmlkZS4KLS0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFW
RnVuY3Rpb25CYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKKy0gKHZvaWQp
X2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KFdLQVZUb3VjaEJhclNjcnViYmVyICopbWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldwogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24g
MjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDExIEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUEKIAogI2VuZGlmCiAKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorQGNsYXNzIEFWVG91Y2hCYXJTY3J1YmJlcjsK
KyNlbHNlCiBAY2xhc3MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworI2VuZGlmIC8vIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiBAY2xhc3MgV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGU7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3Vs
dDsKQEAgLTIyMyw4ICsyMjcsMTMgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1t
ZWRpYXRlQQogCiAvLyBGSVhNRTogVGhpcyBTUEkgc2hvdWxkIGJlY29tZSBhIHBhcnQgb2YgdGhl
IFdLVUlEZWxlZ2F0ZS4gcmRhcjovL3Byb2JsZW0vMjY1NjE1MzcKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkd3JpdGUsIHNldHRlcj1fc2V0V2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3
OikgQk9PTCBfd2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpKTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFyU2Ny
dWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFW
VG91Y2hCYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworI2Vsc2UKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQVZGdW5jdGlvbkJhclNjcnViYmVyICpfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAtICh2b2lkKV9hZGRNZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKyNl
bmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogLSAodm9p
ZClfcmVtb3ZlTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAKIC0gKHZvaWQpX3ByZXBhcmVGb3JNb3ZlVG9XaW5kb3c6KE5TV2lu
ZG93ICopdGFyZ2V0V2luZG93IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcyLDcgKzE1NzIsNyBAQCAtICh2
b2lkKV9zZXRXYW50c01lZGlhUGxheWJhY2tDb250cm9sc1ZpCiAjZW5kaWYKIH0KIAotLSAoQVZG
dW5jdGlvbkJhclNjcnViYmVyICopX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKKy0gKFdLQVZU
b3VjaEJhclNjcnViYmVyICopX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKIHsKICNpZiBIQVZF
KFRPVUNIX0JBUikKICAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5jbGllbnRXYW50c01lZGlhUGxh
eWJhY2tDb250cm9sc1ZpZXcoKSA/IF9kYXRhLT5faW1wbC0+bWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldygpIDogbmlsOwpAQCAtMTU4Miw3ICsxNTgyLDcgQEAgLSAoQVZGdW5jdGlvbkJhclNjcnVi
YmVyICopX21lZGlhUGxheWJhYwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBmb3Igc3ViY2xhc3Nl
cyB0byBvdmVycmlkZS4KLS0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFW
RnVuY3Rpb25CYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKKy0gKHZvaWQp
X2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KFdLQVZUb3VjaEJhclNjcnViYmVyICopbWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldwogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXS0xheW91dE1vZGUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0FWS2l0U1BJLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9y
V2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
Lmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KQEAgLTU1LDggKzU2LDYgQEAgT0JKQ19DTEFTUyBX
S1dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlcjsKIE9CSkNfQ0xBU1MgX1dLVGh1bWJuYWlsVmlldzsK
IAogI2lmIEhBVkUoVE9VQ0hfQkFSKQotT0JKQ19DTEFTUyBBVkZ1bmN0aW9uQmFyUGxheWJhY2tD
b250cm9sc1Byb3ZpZGVyOwotT0JKQ19DTEFTUyBBVkZ1bmN0aW9uQmFyU2NydWJiZXI7CiBPQkpD
X0NMQVNTIE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1MgTlNDdXN0b21U
b3VjaEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TVG91Y2hCYXI7CkBAIC01MTYsNyArNTE1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdXBkYXRlVG91Y2hCYXIoKTsKICAgICBOU1RvdWNoQmFyICpjdXJy
ZW50VG91Y2hCYXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUb3VjaEJhci5nZXQoKTsgfQog
ICAgIE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbSAqY2FuZGlkYXRlTGlzdFRvdWNoQmFySXRl
bSgpIGNvbnN0OwotICAgIEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqbWVkaWFQbGF5YmFja0NvbnRy
b2xzVmlldygpIGNvbnN0OworICAgIFdLQVZUb3VjaEJhclNjcnViYmVyICptZWRpYVBsYXliYWNr
Q29udHJvbHNWaWV3KCkgY29uc3Q7CiAgICAgTlNUb3VjaEJhciAqdGV4dFRvdWNoQmFyKCkgY29u
c3Q7CiAgICAgdm9pZCBkaXNtaXNzVGV4dFRvdWNoQmFyUG9wb3Zlckl0ZW1XaXRoSWRlbnRpZmll
cihOU1N0cmluZyAqKTsKIApAQCAtNTU0LDggKzU1Myw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWlu
UHRyPE5TQ3VzdG9tVG91Y2hCYXJJdGVtPiBtX2V4aXRGdWxsU2NyZWVuQnV0dG9uOwogCiAjaWYg
RU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQotICAgIFJldGFpblB0cjxBVkZ1
bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyPiBtX21lZGlhVG91Y2hCYXJQcm92aWRl
cjsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclNjcnViYmVyPiBtX21lZGlhUGxheWJhY2tD
b250cm9sc1ZpZXc7CisgICAgUmV0YWluUHRyPFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlcj4gbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXI7CisgICAgUmV0YWluUHRyPFdLQVZUb3Vj
aEJhclNjcnViYmVyPiBtX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogI2VuZGlmIC8vIEhBVkUoVE9VQ0hf
QkFSKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAKICNpbXBv
cnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1RodW1i
bmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8SElUb29sYm94L0NhcmJvbkV2ZW50c0NvcmUu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQVhPYmpl
Y3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NvbG9yTWFjLmg+CkBAIC0xMDIsOCArMTAxLDEzIEBACiAKICNpZiBIQVZFKFRPVUNI
X0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogU09GVF9MSU5L
X0ZSQU1FV09SSyhBVktpdCkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyU2NydWJiZXIpCisj
ZWxzZQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyU2NydWJiZXIp
CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKIAog
c3RhdGljIE5TU3RyaW5nICogY29uc3QgV0tNZWRpYUV4aXRGdWxsU2NyZWVuSXRlbSA9IEAiV0tN
ZWRpYUV4aXRGdWxsU2NyZWVuSXRlbSI7CiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpICYmIEVO
QUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKQEAgLTkwMiw3ICs5MDYsNyBAQCBO
U0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0gKldlYlZpZXdJbXBsCiAgICAgcmV0dXJuIGlzUmlj
aGx5RWRpdGFibGUoKSA/IG1fcmljaFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtLmdldCgp
IDogbV9wbGFpblRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtLmdldCgpOwogfQogCi1BVkZ1
bmN0aW9uQmFyU2NydWJiZXIgKldlYlZpZXdJbXBsOjptZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3
KCkgY29uc3QKK1dLQVZUb3VjaEJhclNjcnViYmVyICpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldygpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9M
U19NQU5BR0VSKQogICAgIGlmIChtX3BhZ2UtPmhhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5h
Z2VyKCkpCkBAIC0xMTI1LDExICsxMTI5LDIxIEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVRl
eHRUb3VjaEJhcigpCiB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNoQmFyKCkKIHsK
ICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBpZiAoIW1fbWVkaWFUb3VjaEJhclByb3ZpZGVyKQor
ICAgIGlmICghbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIpIHsKKyNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorICAgICAgICBtX21lZGlhVG91Y2hCYXJQcm92aWRl
ciA9IGFkb3B0TlMoW2FsbG9jQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlckluc3Rh
bmNlKCkgaW5pdF0pOworI2Vsc2UKICAgICAgICAgbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIgPSBh
ZG9wdE5TKFthbGxvY0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXJJbnN0YW5j
ZSgpIGluaXRdKTsKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorICAgIH0KIAotICAgIGlmICghbV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KQor
ICAgIGlmICghbV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KSB7CisjaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICAgICAgbV9tZWRpYVBsYXliYWNrQ29u
dHJvbHNWaWV3ID0gYWRvcHROUyhbYWxsb2NBVlRvdWNoQmFyU2NydWJiZXJJbnN0YW5jZSgpIGlu
aXRdKTsKKyNlbHNlCiAgICAgICAgIG1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyA9IGFkb3B0
TlMoW2FsbG9jQVZGdW5jdGlvbkJhclNjcnViYmVySW5zdGFuY2UoKSBpbml0XSk7CisjZW5kaWYg
Ly8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICB9CiAKICAg
ICBpZiAoIW1fcGxheWJhY2tDb250cm9sc01hbmFnZXIpCiAgICAgICAgIG1fcGxheWJhY2tDb250
cm9sc01hbmFnZXIgPSBhZG9wdE5TKFtbV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgYWxsb2Nd
IGluaXRdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisy
MDE3LTA0LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9w
dCBBVktpdCBuYW1lIGNoYW5nZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIqCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMKKyAg
ICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIzMDAx
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNl
IHRoZSBuZXcgbmFtZXMgb25seSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0aGlz
IHBhdGNoIHVzZXMgdHlwZWRlZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxlLiBTTzoKKwor
ICAgICAgICBBVkZ1bmN0aW9uQmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJlciwg
d2l0aCB0eXBlZGVmIFdLQVZUb3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZGdW5jdGlvbkJh
clBsYXliYWNrQ29udHJvbHNQcm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXliYWNrQ29udHJv
bHNQcm92aWRlciwgCisgICAgICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQbGF5YmFja0Nv
bnRyb2xzUHJvdmlkZXIKKworICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gaXMgbm93IEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAKKyAgICAgICAg
dHlwZWRlZiBXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFuZCB0
aGUgcHJvdG9jb2wgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBpcyBu
b3cgCisgICAgICAgIEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcsIHdpdGgg
dGhlICNkZWZpbmUgCisgICAgICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250
cm9sbGluZworCisgICAgICAgIFNvZnQgbGlua3MgYW5kIGFsbG9jYXRpb25zIGNhbm5vdCB1c2Ug
dGhlIHR5cGVkZWZzLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVmlldyB1cGRhdGVNZWRpYVRvdWNoQmFyXSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
RGF0YS5oOgorCiAyMDE3LTA0LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCBUaW1lcjo6c3RhcnRPbmVTaG90KCkgb3ZlcmxvYWQgdGFraW5nIGEgZG91
YmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMTUx
ODQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMzNiw4ICszMzYsMTMgQEAgU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzRW5kSW1h
Z2VDb250ZQogCiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09O
VFJPTFNfTUFOQUdFUikKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCisjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK1NPRlRfTElOS19DTEFTUyhBVktpdCwg
QVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKK1NPRlRfTElOS19DTEFTUyhBVktp
dCwgQVZUb3VjaEJhclNjcnViYmVyKQorI2Vsc2UKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZG
dW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKIFNPRlRfTElOS19DTEFTUyhBVktp
dCwgQVZGdW5jdGlvbkJhclNjcnViYmVyKQorI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwCiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpICYmIEVOQUJM
RShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAg
LTk3OTAsMTQgKzk3OTUsMTkgQEAgLSAodm9pZCl1cGRhdGVUZXh0VG91Y2hCYXIKIC0gKHZvaWQp
dXBkYXRlTWVkaWFUb3VjaEJhcgogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNf
TUFOQUdFUikgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIGlmICghX3By
aXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlcikKKyAgICBpZiAoIV9wcml2YXRlLT5tZWRpYVRv
dWNoQmFyUHJvdmlkZXIpIHsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorICAgICAgICBfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyID0gYWRvcHRO
UyhbYWxsb2NBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFuY2UoKSBpbml0
XSk7CisjZWxzZQogICAgICAgICBfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyID0gYWRv
cHROUyhbYWxsb2NBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFuY2Uo
KSBpbml0XSk7CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDAKKyAgICB9CiAKICAgICBpZiAoIVtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVy
IHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyXSkgewogICAgICAgICBBU1NFUlQoX3ByaXZhdGUt
PnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSk7CiAgICAgICAgIFdlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyICptYW5hZ2VyID0gX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxh
eUJhY2tDb250cm9sc01hbmFnZXIoKTsKLSAgICAgICAgW19wcml2YXRlLT5tZWRpYVRvdWNoQmFy
UHJvdmlkZXIgc2V0UGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXI6KGlkIDxBVkZ1bmN0aW9uQmFy
UGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiltYW5hZ2VyXTsKLSAgICAgICAgW19wcml2YXRl
LT5tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVy
OihpZCA8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4pbWFuYWdlcl07
CisgICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyIHNldFBsYXliYWNrQ29u
dHJvbHNDb250cm9sbGVyOihpZCA8V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xs
aW5nPiltYW5hZ2VyXTsKKyAgICAgICAgW19wcml2YXRlLT5tZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3IHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOihpZCA8V0tBVlRvdWNoQmFyUGxheWJh
Y2tDb250cm9sc0NvbnRyb2xsaW5nPiltYW5hZ2VyXTsKICAgICB9CiAjZW5kaWYKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHJldmlzaW9uIDIxNTE4NCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1w
b3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9BVktpdFNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9MYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg+CkBAIC0xMDYsOCArMTA3LDYgQEAgY2xhc3Mg
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKICNpZiBIQVZFKFRPVUNIX0JBUikKIEBj
bGFzcyBXZWJUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcjsKLUBjbGFzcyBBVkZ1bmN0aW9uQmFy
UGxheWJhY2tDb250cm9sc1Byb3ZpZGVyOwotQGNsYXNzIEFWRnVuY3Rpb25CYXJTY3J1YmJlcjsK
ICNlbmRpZgogCiBjbGFzcyBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlciA6IHB1YmxpYyBXZWJD
b3JlOjpMYXllckZsdXNoU2NoZWR1bGVyIHsKQEAgLTE5Miw4ICsxOTEsOCBAQCBAaW50ZXJmYWNl
IFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3QgewogICAgIFJldGFpblB0cjxOU0NhbmRpZGF0ZUxp
c3RUb3VjaEJhckl0ZW0+IF9yaWNoVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07CiAgICAg
UmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbT4gX3BsYWluVGV4dENhbmRpZGF0
ZUxpc3RUb3VjaEJhckl0ZW07CiAgICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFy
SXRlbT4gX3Bhc3N3b3JkVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07Ci0gICAgUmV0YWlu
UHRyPEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI+IG1lZGlhVG91Y2hCYXJQ
cm92aWRlcjsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclNjcnViYmVyPiBtZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3OworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRy
b2xzUHJvdmlkZXI+IG1lZGlhVG91Y2hCYXJQcm92aWRlcjsKKyAgICBSZXRhaW5QdHI8V0tBVlRv
dWNoQmFyU2NydWJiZXI+IG1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAKICAgICBCT09MIF9j
YW5DcmVhdGVUb3VjaEJhcnM7CiAgICAgQk9PTCBfaXNVcGRhdGluZ1RleHRUb3VjaEJhcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306758</attachid>
            <date>2017-04-10 16:58:38 -0700</date>
            <delta_ts>2017-04-10 22:08:18 -0700</delta_ts>
            <desc>Patch to try to fix bots</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>28352</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA0LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVktpdCBuYW1lIGNoYW5n
ZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIqCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIzMDAxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSBuZXcgbmFtZXMgb25s
eSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0aGlzIHBhdGNoIHVzZXMgdHlwZWRl
ZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxlLiBTTzoKKworICAgICAgICBBVkZ1bmN0aW9u
QmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJlciwgd2l0aCB0eXBlZGVmIFdLQVZU
b3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciwgCisgICAg
ICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIKKwor
ICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gaXMgbm93IEFWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAKKyAgICAgICAgdHlwZWRlZiBXS0FWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFuZCB0aGUgcHJvdG9jb2wgQVZGdW5j
dGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBpcyBub3cgCisgICAgICAgIEFWVG91
Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcsIHdpdGggdGhlICNkZWZpbmUgCisgICAg
ICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZworCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlv
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25dKToKKyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0Q3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEN1
cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAg
KG1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisKKyAgICAgICAgSGVyZSBpcyB3aGVyZSB0aGUgdHlw
ZWRlZnMgYW5kICNkZWZpbmUgYXJlIGRlY2xhcmVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOgorCiAyMDE3LTA0LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcmFwIGxlZ2FjeSBNZWRpYVN0cmVhbSBBUEkgaW4gcnVudGlt
ZSBmbGFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDE3ICszOSwxNyBAQCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCiBX
RUJDT1JFX0VYUE9SVAotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5T
T2JqZWN0IDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiB7CitAaW50
ZXJmYWNlIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgPFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4gewogICAgIE5TVGltZUludGVydmFsIF9jb250
ZW50RHVyYXRpb247CiAgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CiAgICAg
TlNUaW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVr
YWJsZVRpbWVSYW5nZXM7CiAgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOwogICAgIEJPT0wgX2hh
c0VuYWJsZWRWaWRlbzsKLSAgICBSZXRhaW5QdHI8TlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKj4+IF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJy
ZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFJldGFpblB0cjxO
U0FycmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2xlZ2libGVGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0FycmF5PFdLQVZUb3VjaEJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICo+PiBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsK
KyAgICBSZXRhaW5QdHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50
QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0Fy
cmF5PFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZUZ1bmN0aW9u
QmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gX2N1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjsKICAgICBmbG9hdCBfcmF0ZTsKICAgICBCT09MIF9jYW5Ub2dnbGVQbGF5YmFjazsK
IApAQCAtNjksMTAgKzY5LDEwIEBAIEBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgOiAKIAogQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7CiAKLS0gKEFWRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb247Ci0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlv
bjsKLS0gKEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxl
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLS0gKHZvaWQpc2V0Q3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVkZ1bmN0aW9uQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKilvcHRpb247CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CistICh2b2lk
KXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KFdLQVZUb3Vj
aEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uOworLSAoV0tBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb247CistICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb247CiAtICh2
b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7
CiAtICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0
ZWRJbmRleDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0JKHJldmlzaW9uIDIxNTE4NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTEgQEAKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdudWxsYWJp
bGl0eS1jb21wbGV0ZW5lc3MiCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitTT0ZUX0xJTktfQ0xBU1NfT1BU
SU9OQUwoQVZLaXQsIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyNlbHNlCiBTT0ZU
X0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbikKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MAogCiBAaW1wbGVtZW50YXRpb24gV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIKIApAQCAtMTIx
LDIyICsxMjUsMjIgQEAgLSAodm9pZCllbmRGdW5jdGlvbkJhclNjcnViYmluZwogICAgIF93ZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPmVuZFNjcnViYmluZygpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWF1ZGlvRnVuY3Rpb25C
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMKKy0gKE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKj4gKilhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zCiB7
CiAgICAgcmV0dXJuIF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgp
OwogfQogCi0tICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6
KE5TQXJyYXk8QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9PcHRp
b25zCistICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5T
QXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMK
IHsKICAgICBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvT3B0
aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorLSAoV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uCiB7CiAgICAgcmV0dXJuIF9jdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
KWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KKy0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCiB7CiAgICAgaWYgKGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTE1MSwyMiArMTU1LDIyIEBAIC0gKHZvaWQpc2V0Q3Vy
cmVudEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVMKICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucworLSAoTlNBcnJheTxXS0FWVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
cwogewogICAgIHJldHVybiBfbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
LmdldCgpOwogfQogCi0tICh2b2lkKXNldExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uczooTlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucworLSAodm9pZClzZXRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbnM6KE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucwogewogICAgIF9sZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uICopY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgogewogICAgIHJldHVybiBfY3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNl
dEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uCist
ICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjoo
V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24KIHsKICAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50
TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTE4NSw3ICsxODksMTEgQEAgc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVk
aWFTZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUo
KV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKLSAgICAgICAgaWYgKFJldGFp
blB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0
TlMoW2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0
V2l0aFRpdGxlOm5hbWVdKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorICAgICAgICBpZiAoUmV0YWluUHRyPFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpuYW1lIHR5cGU6QVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uVHlwZVJlZ3VsYXJdKSkKKyNlbHNlCisgICAgICAgIGlmIChSZXRhaW5Q
dHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0TlMo
W2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0
aFRpdGxlOm5hbWVdKSkKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAogICAgICAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5n
ZXQoKV07CiAgICAgfQogICAgIHJldHVybiB3ZWJPcHRpb25zOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgJKHJldmlzaW9uIDIxNTE4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsMTQgKzE1MywzOSBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK09CSkNfQ0xBU1Mg
QVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK09CSkNfQ0xBU1MgQVZUb3VjaEJh
clNjcnViYmVyOworT0JKQ19DTEFTUyBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisK
K3R5cGVkZWYgQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uOwordHlwZWRlZiBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3Zp
ZGVyIFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZUb3Vj
aEJhclNjcnViYmVyIFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250
cm9sbGluZworI2Vsc2UKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlcjsKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworT0JKQ19DTEFTUyBB
VkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK3R5cGVkZWYgQVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwor
dHlwZWRlZiBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZGdW5jdGlvbkJhclNjcnViYmVy
IFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxpbmcgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZwor
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwCisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVyLmg+CisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyU2NydWJiZXIuaD4KKyNlbHNl
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyLmg+
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyU2NydWJiZXIuaD4KKyNlbmRpZiAvLyBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogI2Vsc2UKIAogTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIAotQHByb3RvY29sIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxpbmcgPE5TT2JqZWN0PgorQHByb3RvY29sIFdLQVZUb3VjaEJhclBsYXliYWNrQ29u
dHJvbHNDb250cm9sbGluZyA8TlNPYmplY3Q+CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJ
bnRlcnZhbCBjb250ZW50RHVyYXRpb247CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBudWxsYWJsZSkg
QVZWYWx1ZVRpbWluZyAqdGltaW5nOwogQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzU2Vl
a2luZykgQk9PTCBzZWVraW5nOwpAQCAtMTcwLDE2ICsxOTUsMTUgQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzRW5hYmxlZFZpZGVvOwogQGVu
ZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgOiBO
U1Jlc3BvbmRlcgorQGludGVyZmFjZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgOiBOU1Jlc3BvbmRlcgogQHByb3BlcnR5IChzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkg
TlNUb3VjaEJhciAqdG91Y2hCYXI7Ci1AcHJvcGVydHkgKGFzc2lnbiwgbnVsbGFibGUpIGlkPEFW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyOworQHByb3BlcnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOwog
QGVuZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJTY3J1YmJlciA6IE5TVmlldwotQHByb3Bl
cnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0Nv
bnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjsKK0BpbnRlcmZhY2UgV0tBVlRv
dWNoQmFyU2NydWJiZXIgOiBOU1ZpZXcKK0Bwcm9wZXJ0eSAoYXNzaWduLCBudWxsYWJsZSkgaWQ8
V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxlcjsKIEBlbmQKIAotQGNsYXNzIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKIEBjbGFzcyBBVlRodW1ibmFpbDsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNy0wNC0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJv
bSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBw
bHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAor
ICAgICAgICB3aGVyZXZlciBwb3NzaWJsZS4gU086CisKKyAgICAgICAgQVZGdW5jdGlvbkJhclNj
cnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIsIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hC
YXJTY3J1YmJlcgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgaXMgbm93IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIsIAorICAgICAgICB3
aXRoIHR5cGVkZWYgV0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyCisKKyAgICAg
ICAgQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24sIHdpdGggCisgICAgICAgIHR5cGVkZWYgV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFWRnVuY3Rpb25C
YXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBBVlRvdWNoQmFy
UGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nLCB3aXRoIHRoZSAjZGVmaW5lIAorICAgICAgICBX
S0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKworICAgICAgICBTUEkg
aGVhZGVycyBjYW5ub3QgdXNlIHRoZSB0eXBlZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKworICAgICAgICBVc2UgdGhlIHR5cGVkZWZzIGVsc2V3
aGVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlld10pOgorICAgICAgICAoLVtXS1ZpZXcgX2FkZE1lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisKKyAg
ICAgICAgU29mdCBsaW5rcyBhbmQgYWxsb2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMu
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNoQmFyKToKKwogMjAxNy0wNC0xMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVttYWNP
U10gQmxvY2sgYWNjZXNzIHRvIEFwcGxlIEV2ZW50cyBiZWZvcmUgbGF1bmNoLgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSwxMSBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJT
dHlsZS5oPgogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
K0BjbGFzcyBBVlRvdWNoQmFyU2NydWJiZXI7CisjZWxzZQogQGNsYXNzIEFWRnVuY3Rpb25CYXJT
Y3J1YmJlcjsKKyNlbmRpZgogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKIApAQCAtMTM1
LDggKzEzOSwxMyBAQAogLSAodm9pZClfZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZTooTlNFdmVudCAqKWV2ZW50OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBz
ZXR0ZXI9X3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFy
U2NydWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworLSAodm9pZClfYWRkTWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnViYmVyICopbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldzsKKyNlbHNlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWRnVu
Y3Rpb25CYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAtICh2b2lkKV9h
ZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwCiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3OwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMDUsNyAr
NTAwNSw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmkKICNlbmRp
ZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldworLSAoV0tBVlRvdWNoQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dwogewogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHJldHVybiBfaW1wbC0+Y2xpZW50V2FudHNN
ZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgPyBfaW1wbC0+bWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldygpIDogbmlsOwpAQCAtNTAxNSw3ICs1MDE1LDcgQEAgLSAoQVZGdW5jdGlvbkJhclNjcnVi
YmVyICopX21lZGlhUGxheWJhYwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBmb3Igc3ViY2xhc3Nl
cyB0byBvdmVycmlkZS4KLS0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFW
RnVuY3Rpb25CYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKKy0gKHZvaWQp
X2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KFdLQVZUb3VjaEJhclNjcnViYmVyICopbWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldwogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24g
MjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDExIEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUEKIAogI2VuZGlmCiAKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorQGNsYXNzIEFWVG91Y2hCYXJTY3J1YmJlcjsK
KyNlbHNlCiBAY2xhc3MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworI2VuZGlmIC8vIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiBAY2xhc3MgV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGU7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3Vs
dDsKQEAgLTIyMyw4ICsyMjcsMTMgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1t
ZWRpYXRlQQogCiAvLyBGSVhNRTogVGhpcyBTUEkgc2hvdWxkIGJlY29tZSBhIHBhcnQgb2YgdGhl
IFdLVUlEZWxlZ2F0ZS4gcmRhcjovL3Byb2JsZW0vMjY1NjE1MzcKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkd3JpdGUsIHNldHRlcj1fc2V0V2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3
OikgQk9PTCBfd2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpKTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFyU2Ny
dWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFW
VG91Y2hCYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworI2Vsc2UKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQVZGdW5jdGlvbkJhclNjcnViYmVyICpfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAtICh2b2lkKV9hZGRNZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKyNl
bmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogLSAodm9p
ZClfcmVtb3ZlTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAKIC0gKHZvaWQpX3ByZXBhcmVGb3JNb3ZlVG9XaW5kb3c6KE5TV2lu
ZG93ICopdGFyZ2V0V2luZG93IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKICNpbXBvcnQgIl9X
S0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FWS2l0U1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
QEAgLTE1NzIsNyArMTU3Myw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRy
b2xzVmkKICNlbmRpZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldworLSAoV0tBVlRvdWNoQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldwogewogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHJldHVybiBfZGF0YS0+
X2ltcGwtPmNsaWVudFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpID8gX2RhdGEtPl9p
bXBsLT5tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgOiBuaWw7CkBAIC0xNTgyLDcgKzE1ODMs
NyBAQCAtIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFjCiB9CiAKIC8vIFRo
aXMgbWV0aG9kIGlzIGZvciBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlLgotLSAodm9pZClfYWRkTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldzooQVZGdW5jdGlvbkJhclNjcnViYmVyICopbWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldworLSAodm9pZClfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzoo
V0tBVlRvdWNoQmFyU2NydWJiZXIgKiltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CiB7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCShy
ZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldLTGF5
b3V0TW9kZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIl9XS092ZXJs
YXlTY3JvbGxiYXJTdHlsZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3JXaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgpAQCAt
NTUsOCArNTYsNiBAQCBPQkpDX0NMQVNTIFdLV2luZG93VmlzaWJpbGl0eU9ic2VydmVyOwogT0JK
Q19DTEFTUyBfV0tUaHVtYm5haWxWaWV3OwogCiAjaWYgSEFWRShUT1VDSF9CQVIpCi1PQkpDX0NM
QVNTIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI7Ci1PQkpDX0NMQVNTIEFW
RnVuY3Rpb25CYXJTY3J1YmJlcjsKIE9CSkNfQ0xBU1MgTlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJ
dGVtOwogT0JKQ19DTEFTUyBOU0N1c3RvbVRvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1MgTlNUb3Vj
aEJhcjsKQEAgLTUxNiw3ICs1MTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVUb3VjaEJh
cigpOwogICAgIE5TVG91Y2hCYXIgKmN1cnJlbnRUb3VjaEJhcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFRvdWNoQmFyLmdldCgpOyB9CiAgICAgTlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVt
ICpjYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtKCkgY29uc3Q7Ci0gICAgQVZGdW5jdGlvbkJhclNj
cnViYmVyICptZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgY29uc3Q7CisgICAgV0tBVlRvdWNo
QmFyU2NydWJiZXIgKm1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25zdDsKICAgICBOU1Rv
dWNoQmFyICp0ZXh0VG91Y2hCYXIoKSBjb25zdDsKICAgICB2b2lkIGRpc21pc3NUZXh0VG91Y2hC
YXJQb3BvdmVySXRlbVdpdGhJZGVudGlmaWVyKE5TU3RyaW5nICopOwogCkBAIC01NTQsOCArNTUz
LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNDdXN0b21Ub3VjaEJhckl0ZW0+IG1fZXhp
dEZ1bGxTY3JlZW5CdXR0b247CiAKICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01B
TkFHRVIpCi0gICAgUmV0YWluUHRyPEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXI+IG1fbWVkaWFUb3VjaEJhclByb3ZpZGVyOwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFy
U2NydWJiZXI+IG1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKyAgICBSZXRhaW5QdHI8V0tB
VlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyPiBtX21lZGlhVG91Y2hCYXJQcm92aWRl
cjsKKyAgICBSZXRhaW5QdHI8V0tBVlRvdWNoQmFyU2NydWJiZXI+IG1fbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldzsKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFH
RVIpCiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDIxNTE4NCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjcsNyArNjcsNiBAQAogI2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRl
cm5hbC5oIgogI2ltcG9ydCAiX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxI
SVRvb2xib3gvQ2FyYm9uRXZlbnRzQ29yZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9BVktpdFNQSS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Fj
dGl2aXR5U3RhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KQEAgLTEwMiw4ICsx
MDEsMTMgQEAKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NP
TlRST0xTX01BTkFHRVIpCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQs
IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZL
aXQsIEFWVG91Y2hCYXJTY3J1YmJlcikKKyNlbHNlCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZL
aXQsIEFWRnVuY3Rpb25CYXJTY3J1YmJlcikKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMAogCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXS01lZGlh
RXhpdEZ1bGxTY3JlZW5JdGVtID0gQCJXS01lZGlhRXhpdEZ1bGxTY3JlZW5JdGVtIjsKICNlbmRp
ZiAvLyBIQVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5B
R0VSKQpAQCAtOTAyLDcgKzkwNiw3IEBAIE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbSAqV2Vi
Vmlld0ltcGwKICAgICByZXR1cm4gaXNSaWNobHlFZGl0YWJsZSgpID8gbV9yaWNoVGV4dENhbmRp
ZGF0ZUxpc3RUb3VjaEJhckl0ZW0uZ2V0KCkgOiBtX3BsYWluVGV4dENhbmRpZGF0ZUxpc3RUb3Vj
aEJhckl0ZW0uZ2V0KCk7CiB9CiAKLUFWRnVuY3Rpb25CYXJTY3J1YmJlciAqV2ViVmlld0ltcGw6
Om1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25zdAorV0tBVlRvdWNoQmFyU2NydWJiZXIg
KldlYlZpZXdJbXBsOjptZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgaWYgKG1fcGFnZS0+aGFz
QWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKSkKQEAgLTExMjUsMTEgKzExMjksMjEgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVGV4dFRvdWNoQmFyKCkKIHZvaWQgV2ViVmlld0ltcGw6
OnVwZGF0ZU1lZGlhVG91Y2hCYXIoKQogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJP
TFNfTUFOQUdFUikgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIGlmICgh
bV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIpCisgICAgaWYgKCFtX21lZGlhVG91Y2hCYXJQcm92aWRl
cikgeworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisgICAg
ICAgIG1fbWVkaWFUb3VjaEJhclByb3ZpZGVyID0gYWRvcHROUyhbYWxsb2NBVlRvdWNoQmFyUGxh
eWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFuY2UoKSBpbml0XSk7CisjZWxzZQogICAgICAgICBt
X21lZGlhVG91Y2hCYXJQcm92aWRlciA9IGFkb3B0TlMoW2FsbG9jQVZGdW5jdGlvbkJhclBsYXli
YWNrQ29udHJvbHNQcm92aWRlckluc3RhbmNlKCkgaW5pdF0pOworI2VuZGlmIC8vIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisgICAgfQogCi0gICAgaWYgKCFtX21l
ZGlhUGxheWJhY2tDb250cm9sc1ZpZXcpCisgICAgaWYgKCFtX21lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXcpIHsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAor
ICAgICAgICBtX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgPSBhZG9wdE5TKFthbGxvY0FWVG91
Y2hCYXJTY3J1YmJlckluc3RhbmNlKCkgaW5pdF0pOworI2Vsc2UKICAgICAgICAgbV9tZWRpYVBs
YXliYWNrQ29udHJvbHNWaWV3ID0gYWRvcHROUyhbYWxsb2NBVkZ1bmN0aW9uQmFyU2NydWJiZXJJ
bnN0YW5jZSgpIGluaXRdKTsKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMAorICAgIH0KIAogICAgIGlmICghbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdl
cikKICAgICAgICAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlciA9IGFkb3B0TlMoW1tXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlciBhbGxvY10gaW5pdF0pOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjE1MjAwKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTctMDQtMTAgIEJldGggRGFraW4gIDxiZGFraW5A
YXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IEFWS2l0IG5hbWUgY2hhbmdlIGZyb20gQVZGdW5j
dGlvbkJhciogdG8gQVZUb3VjaEJhcioKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MDY5MworICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzMxMjMwMDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2luY2UgdGhlIG5ldyBuYW1lcyBvbmx5IGFwcGx5IHRvIHNv
bWUgdmVyc2lvbnMgb2YgbWFjT1MsIHRoaXMgcGF0Y2ggdXNlcyB0eXBlZGVmcyAKKyAgICAgICAg
d2hlcmV2ZXIgcG9zc2libGUuIFNPOgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJTY3J1YmJlciBp
cyBub3cgQVZUb3VjaEJhclNjcnViYmVyLCB3aXRoIHR5cGVkZWYgV0tBVlRvdWNoQmFyU2NydWJi
ZXIKKworICAgICAgICBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIGlzIG5v
dyBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyLCAKKyAgICAgICAgd2l0aCB0eXBl
ZGVmIFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcgorCisgICAgICAgIEFWRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiBpcyBub3cgQVZUb3VjaEJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uLCB3aXRoIAorICAgICAgICB0eXBlZGVmIFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uCisKKyAgICAgICAgQW5kIHRoZSBwcm90b2NvbCBBVkZ1bmN0aW9uQmFyUGxheWJh
Y2tDb250cm9sc0NvbnRyb2xsaW5nIGlzIG5vdyAKKyAgICAgICAgQVZUb3VjaEJhclBsYXliYWNr
Q29udHJvbHNDb250cm9sbGluZywgd2l0aCB0aGUgI2RlZmluZSAKKyAgICAgICAgV0tBVkZ1bmN0
aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nCisKKyAgICAgICAgU29mdCBsaW5rcyBh
bmQgYWxsb2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMuCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHVwZGF0ZU1lZGlhVG91Y2hCYXJdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMTctMDQtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFRpbWVyOjpzdGFydE9uZVNo
b3QoKSBvdmVybG9hZCB0YWtpbmcgYSBkb3VibGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM2LDggKzMzNiwxMyBAQCBTT0ZUX0xJ
TksoVUlLaXQsIFVJR3JhcGhpY3NFbmRJbWFnZUNvbnRlCiAKICNpZiBIQVZFKFRPVUNIX0JBUikg
JiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogU09GVF9MSU5LX0ZSQU1F
V09SSyhBVktpdCkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MAorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3Zp
ZGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyU2NydWJiZXIpCisjZWxzZQog
U09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3Zp
ZGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyU2NydWJiZXIpCisjZW5k
aWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKICNlbmRpZiAv
LyBIQVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VS
KQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtOTc5MCwxNCArOTc5NSwxOSBAQCAtICh2b2lkKXVw
ZGF0ZVRleHRUb3VjaEJhcgogLSAodm9pZCl1cGRhdGVNZWRpYVRvdWNoQmFyCiB7CiAjaWYgRU5B
QkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCi0gICAgaWYgKCFfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyKQor
ICAgIGlmICghX3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlcikgeworI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisgICAgICAgIF9wcml2YXRlLT5tZWRp
YVRvdWNoQmFyUHJvdmlkZXIgPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hCYXJQbGF5YmFja0NvbnRy
b2xzUHJvdmlkZXJJbnN0YW5jZSgpIGluaXRdKTsKKyNlbHNlCiAgICAgICAgIF9wcml2YXRlLT5t
ZWRpYVRvdWNoQmFyUHJvdmlkZXIgPSBhZG9wdE5TKFthbGxvY0FWRnVuY3Rpb25CYXJQbGF5YmFj
a0NvbnRyb2xzUHJvdmlkZXJJbnN0YW5jZSgpIGluaXRdKTsKKyNlbmRpZiAvLyBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorICAgIH0KIAogICAgIGlmICghW19wcml2
YXRlLT5tZWRpYVRvdWNoQmFyUHJvdmlkZXIgcGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXJdKSB7
CiAgICAgICAgIEFTU0VSVChfcHJpdmF0ZS0+cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKTsKICAg
ICAgICAgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgKm1hbmFnZXIgPSBfcHJpdmF0ZS0+cGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpOwotICAgICAg
ICBbX3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlciBzZXRQbGF5YmFja0NvbnRyb2xzQ29u
dHJvbGxlcjooaWQgPEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+KW1h
bmFnZXJdOwotICAgICAgICBbX3ByaXZhdGUtPm1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgc2V0
UGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXI6KGlkIDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250
cm9sc0NvbnRyb2xsaW5nPiltYW5hZ2VyXTsKKyAgICAgICAgW19wcml2YXRlLT5tZWRpYVRvdWNo
QmFyUHJvdmlkZXIgc2V0UGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXI6KGlkIDxXS0FWVG91Y2hC
YXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+KW1hbmFnZXJdOworICAgICAgICBbX3ByaXZh
dGUtPm1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgc2V0UGxheWJhY2tDb250cm9sc0NvbnRyb2xs
ZXI6KGlkIDxXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+KW1hbmFnZXJd
OwogICAgIH0KICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQg
IldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25D
YWNoaW5nLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FWS2l0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2No
ZWR1bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaD4K
QEAgLTEwNiw4ICsxMDcsNiBAQCBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsK
IAogI2lmIEhBVkUoVE9VQ0hfQkFSKQogQGNsYXNzIFdlYlRleHRUb3VjaEJhckl0ZW1Db250cm9s
bGVyOwotQGNsYXNzIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI7Ci1AY2xh
c3MgQVZGdW5jdGlvbkJhclNjcnViYmVyOwogI2VuZGlmCiAKIGNsYXNzIFdlYlZpZXdMYXllckZs
dXNoU2NoZWR1bGVyIDogcHVibGljIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVsZXIgewpAQCAt
MTkyLDggKzE5MSw4IEBAIEBpbnRlcmZhY2UgV2ViVmlld1ByaXZhdGUgOiBOU09iamVjdCB7CiAg
ICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbT4gX3JpY2hUZXh0Q2FuZGlk
YXRlTGlzdFRvdWNoQmFySXRlbTsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0VG91Y2hC
YXJJdGVtPiBfcGxhaW5UZXh0Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKICAgICBSZXRhaW5Q
dHI8TlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtPiBfcGFzc3dvcmRUZXh0Q2FuZGlkYXRlTGlz
dFRvdWNoQmFySXRlbTsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJv
bHNQcm92aWRlcj4gbWVkaWFUb3VjaEJhclByb3ZpZGVyOwotICAgIFJldGFpblB0cjxBVkZ1bmN0
aW9uQmFyU2NydWJiZXI+IG1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CisgICAgUmV0YWluUHRy
PFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcj4gbWVkaWFUb3VjaEJhclByb3Zp
ZGVyOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJTY3J1YmJlcj4gbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldzsKIAogICAgIEJPT0wgX2NhbkNyZWF0ZVRvdWNoQmFyczsKICAgICBCT09MIF9p
c1VwZGF0aW5nVGV4dFRvdWNoQmFyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306776</attachid>
            <date>2017-04-10 22:08:18 -0700</date>
            <delta_ts>2017-04-11 10:35:05 -0700</delta_ts>
            <desc>Another try for bots</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>28312</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA0LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVktpdCBuYW1lIGNoYW5n
ZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIqCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIzMDAxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSBuZXcgbmFtZXMgb25s
eSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0aGlzIHBhdGNoIHVzZXMgdHlwZWRl
ZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxlLiBTTzoKKworICAgICAgICBBVkZ1bmN0aW9u
QmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJlciwgd2l0aCB0eXBlZGVmIFdLQVZU
b3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciwgCisgICAg
ICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIKKwor
ICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gaXMgbm93IEFWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAKKyAgICAgICAgdHlwZWRlZiBXS0FWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFuZCB0aGUgcHJvdG9jb2wgQVZGdW5j
dGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBpcyBub3cgCisgICAgICAgIEFWVG91
Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcsIHdpdGggdGhlICNkZWZpbmUgCisgICAg
ICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZworCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlv
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25dKToKKyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0Q3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEN1
cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAg
KG1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisKKyAgICAgICAgSGVyZSBpcyB3aGVyZSB0aGUgdHlw
ZWRlZnMgYW5kICNkZWZpbmUgYXJlIGRlY2xhcmVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOgorCiAyMDE3LTA0LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcmFwIGxlZ2FjeSBNZWRpYVN0cmVhbSBBUEkgaW4gcnVudGlt
ZSBmbGFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDE3ICszOSwxNyBAQCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCiBX
RUJDT1JFX0VYUE9SVAotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5T
T2JqZWN0IDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiB7CitAaW50
ZXJmYWNlIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgPFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4gewogICAgIE5TVGltZUludGVydmFsIF9jb250
ZW50RHVyYXRpb247CiAgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CiAgICAg
TlNUaW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVr
YWJsZVRpbWVSYW5nZXM7CiAgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOwogICAgIEJPT0wgX2hh
c0VuYWJsZWRWaWRlbzsKLSAgICBSZXRhaW5QdHI8TlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKj4+IF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJy
ZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFJldGFpblB0cjxO
U0FycmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2xlZ2libGVGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0FycmF5PFdLQVZUb3VjaEJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICo+PiBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsK
KyAgICBSZXRhaW5QdHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50
QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0Fy
cmF5PFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZUZ1bmN0aW9u
QmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gX2N1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjsKICAgICBmbG9hdCBfcmF0ZTsKICAgICBCT09MIF9jYW5Ub2dnbGVQbGF5YmFjazsK
IApAQCAtNjksMTAgKzY5LDEwIEBAIEBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgOiAKIAogQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7CiAKLS0gKEFWRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb247Ci0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlv
bjsKLS0gKEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxl
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLS0gKHZvaWQpc2V0Q3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVkZ1bmN0aW9uQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKilvcHRpb247CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CistICh2b2lk
KXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KFdLQVZUb3Vj
aEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uOworLSAoV0tBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb247CistICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb247CiAtICh2
b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7
CiAtICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0
ZWRJbmRleDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0JKHJldmlzaW9uIDIxNTE4NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTEgQEAKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdudWxsYWJp
bGl0eS1jb21wbGV0ZW5lc3MiCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitTT0ZUX0xJTktfQ0xBU1NfT1BU
SU9OQUwoQVZLaXQsIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyNlbHNlCiBTT0ZU
X0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbikKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MAogCiBAaW1wbGVtZW50YXRpb24gV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIKIApAQCAtMTIx
LDIyICsxMjUsMjIgQEAgLSAodm9pZCllbmRGdW5jdGlvbkJhclNjcnViYmluZwogICAgIF93ZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPmVuZFNjcnViYmluZygpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWF1ZGlvRnVuY3Rpb25C
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMKKy0gKE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKj4gKilhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zCiB7
CiAgICAgcmV0dXJuIF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgp
OwogfQogCi0tICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6
KE5TQXJyYXk8QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9PcHRp
b25zCistICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5T
QXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMK
IHsKICAgICBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvT3B0
aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorLSAoV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uCiB7CiAgICAgcmV0dXJuIF9jdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
KWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KKy0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCiB7CiAgICAgaWYgKGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTE1MSwyMiArMTU1LDIyIEBAIC0gKHZvaWQpc2V0Q3Vy
cmVudEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVMKICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucworLSAoTlNBcnJheTxXS0FWVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
cwogewogICAgIHJldHVybiBfbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
LmdldCgpOwogfQogCi0tICh2b2lkKXNldExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uczooTlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucworLSAodm9pZClzZXRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbnM6KE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucwogewogICAgIF9sZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uICopY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgogewogICAgIHJldHVybiBfY3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNl
dEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uCist
ICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjoo
V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24KIHsKICAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50
TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTE4NSw3ICsxODksMTEgQEAgc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVk
aWFTZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUo
KV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKLSAgICAgICAgaWYgKFJldGFp
blB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0
TlMoW2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0
V2l0aFRpdGxlOm5hbWVdKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorICAgICAgICBpZiAoUmV0YWluUHRyPFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpuYW1lIHR5cGU6QVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uVHlwZVJlZ3VsYXJdKSkKKyNlbHNlCisgICAgICAgIGlmIChSZXRhaW5Q
dHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0TlMo
W2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0
aFRpdGxlOm5hbWVdKSkKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAogICAgICAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5n
ZXQoKV07CiAgICAgfQogICAgIHJldHVybiB3ZWJPcHRpb25zOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgJKHJldmlzaW9uIDIxNTE4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsMTQgKzE1MywzOSBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK09CSkNfQ0xBU1Mg
QVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK09CSkNfQ0xBU1MgQVZUb3VjaEJh
clNjcnViYmVyOworT0JKQ19DTEFTUyBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisK
K3R5cGVkZWYgQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uOwordHlwZWRlZiBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3Zp
ZGVyIFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZUb3Vj
aEJhclNjcnViYmVyIFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250
cm9sbGluZworI2Vsc2UKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlcjsKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworT0JKQ19DTEFTUyBB
VkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK3R5cGVkZWYgQVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwor
dHlwZWRlZiBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZGdW5jdGlvbkJhclNjcnViYmVy
IFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxpbmcgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZwor
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwCisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVyLmg+CisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyU2NydWJiZXIuaD4KKyNlbHNl
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyLmg+
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyU2NydWJiZXIuaD4KKyNlbmRpZiAvLyBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogI2Vsc2UKIAogTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIAotQHByb3RvY29sIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxpbmcgPE5TT2JqZWN0PgorQHByb3RvY29sIFdLQVZUb3VjaEJhclBsYXliYWNrQ29u
dHJvbHNDb250cm9sbGluZyA8TlNPYmplY3Q+CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJ
bnRlcnZhbCBjb250ZW50RHVyYXRpb247CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBudWxsYWJsZSkg
QVZWYWx1ZVRpbWluZyAqdGltaW5nOwogQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzU2Vl
a2luZykgQk9PTCBzZWVraW5nOwpAQCAtMTcwLDE2ICsxOTUsMTUgQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzRW5hYmxlZFZpZGVvOwogQGVu
ZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgOiBO
U1Jlc3BvbmRlcgorQGludGVyZmFjZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgOiBOU1Jlc3BvbmRlcgogQHByb3BlcnR5IChzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkg
TlNUb3VjaEJhciAqdG91Y2hCYXI7Ci1AcHJvcGVydHkgKGFzc2lnbiwgbnVsbGFibGUpIGlkPEFW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyOworQHByb3BlcnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOwog
QGVuZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJTY3J1YmJlciA6IE5TVmlldwotQHByb3Bl
cnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0Nv
bnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjsKK0BpbnRlcmZhY2UgV0tBVlRv
dWNoQmFyU2NydWJiZXIgOiBOU1ZpZXcKK0Bwcm9wZXJ0eSAoYXNzaWduLCBudWxsYWJsZSkgaWQ8
V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxlcjsKIEBlbmQKIAotQGNsYXNzIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKIEBjbGFzcyBBVlRodW1ibmFpbDsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNy0wNC0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJv
bSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBw
bHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAor
ICAgICAgICB3aGVyZXZlciBwb3NzaWJsZS4gU086CisKKyAgICAgICAgQVZGdW5jdGlvbkJhclNj
cnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIsIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hC
YXJTY3J1YmJlcgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgaXMgbm93IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIsIAorICAgICAgICB3
aXRoIHR5cGVkZWYgV0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyCisKKyAgICAg
ICAgQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24sIHdpdGggCisgICAgICAgIHR5cGVkZWYgV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFWRnVuY3Rpb25C
YXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBBVlRvdWNoQmFy
UGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nLCB3aXRoIHRoZSAjZGVmaW5lIAorICAgICAgICBX
S0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKworICAgICAgICBTUEkg
aGVhZGVycyBjYW5ub3QgdXNlIHRoZSB0eXBlZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKworICAgICAgICBVc2UgdGhlIHR5cGVkZWZzIGVsc2V3
aGVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlld10pOgorICAgICAgICAoLVtXS1ZpZXcgX2FkZE1lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisKKyAg
ICAgICAgU29mdCBsaW5rcyBhbmQgYWxsb2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMu
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNoQmFyKToKKwogMjAxNy0wNC0xMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVttYWNP
U10gQmxvY2sgYWNjZXNzIHRvIEFwcGxlIEV2ZW50cyBiZWZvcmUgbGF1bmNoLgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSwxMSBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJT
dHlsZS5oPgogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
K0BjbGFzcyBBVlRvdWNoQmFyU2NydWJiZXI7CisjZWxzZQogQGNsYXNzIEFWRnVuY3Rpb25CYXJT
Y3J1YmJlcjsKKyNlbmRpZgogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKIApAQCAtMTM1
LDggKzEzOSwxMyBAQAogLSAodm9pZClfZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZTooTlNFdmVudCAqKWV2ZW50OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBz
ZXR0ZXI9X3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFy
U2NydWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworLSAodm9pZClfYWRkTWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnViYmVyICopbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldzsKKyNlbHNlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWRnVu
Y3Rpb25CYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAtICh2b2lkKV9h
ZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwCiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3OwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMDUsNyAr
NTAwNSw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmkKICNlbmRp
ZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldworLSAoV0tBVlRvdWNoQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dwogewogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHJldHVybiBfaW1wbC0+Y2xpZW50V2FudHNN
ZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgPyBfaW1wbC0+bWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldygpIDogbmlsOwpAQCAtNTAxNSw3ICs1MDE1LDcgQEAgLSAoQVZGdW5jdGlvbkJhclNjcnVi
YmVyICopX21lZGlhUGxheWJhYwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBmb3Igc3ViY2xhc3Nl
cyB0byBvdmVycmlkZS4KLS0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFW
RnVuY3Rpb25CYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKKy0gKHZvaWQp
X2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KFdLQVZUb3VjaEJhclNjcnViYmVyICopbWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldwogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24g
MjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDExIEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUEKIAogI2VuZGlmCiAKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorQGNsYXNzIEFWVG91Y2hCYXJTY3J1YmJlcjsK
KyNlbHNlCiBAY2xhc3MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworI2VuZGlmIC8vIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiBAY2xhc3MgV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGU7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3Vs
dDsKQEAgLTIyMyw4ICsyMjcsMTMgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1t
ZWRpYXRlQQogCiAvLyBGSVhNRTogVGhpcyBTUEkgc2hvdWxkIGJlY29tZSBhIHBhcnQgb2YgdGhl
IFdLVUlEZWxlZ2F0ZS4gcmRhcjovL3Byb2JsZW0vMjY1NjE1MzcKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkd3JpdGUsIHNldHRlcj1fc2V0V2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3
OikgQk9PTCBfd2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpKTsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFyU2Ny
dWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFW
VG91Y2hCYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworI2Vsc2UKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQVZGdW5jdGlvbkJhclNjcnViYmVyICpfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAtICh2b2lkKV9hZGRNZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKyNl
bmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogLSAodm9p
ZClfcmVtb3ZlTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAKIC0gKHZvaWQpX3ByZXBhcmVGb3JNb3ZlVG9XaW5kb3c6KE5TV2lu
ZG93ICopdGFyZ2V0V2luZG93IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKICNpbXBvcnQgIl9X
S0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FWS2l0U1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
QEAgLTE1NzIsNyArMTU3Myw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRy
b2xzVmkKICNlbmRpZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldworLSAoaWQpX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKIHsKICNp
ZiBIQVZFKFRPVUNIX0JBUikKICAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5jbGllbnRXYW50c01l
ZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSA/IF9kYXRhLT5faW1wbC0+bWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldygpIDogbmlsOwpAQCAtMTU4Miw3ICsxNTgzLDcgQEAgLSAoQVZGdW5jdGlvbkJh
clNjcnViYmVyICopX21lZGlhUGxheWJhYwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBmb3Igc3Vi
Y2xhc3NlcyB0byBvdmVycmlkZS4KLS0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1Zp
ZXc6KEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKKy0g
KHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KGlkKW1lZGlhUGxheWJhY2tDb250
cm9sc1ZpZXcKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiV0tMYXlvdXRNb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAj
aW5jbHVkZSAiX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9B
VktpdFNQSS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CkBAIC01NSw4ICs1Niw2IEBAIE9CSkNfQ0xBU1MgV0tXaW5kb3dWaXNpYmls
aXR5T2JzZXJ2ZXI7CiBPQkpDX0NMQVNTIF9XS1RodW1ibmFpbFZpZXc7CiAKICNpZiBIQVZFKFRP
VUNIX0JBUikKLU9CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRl
cjsKLU9CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclNjcnViYmVyOwogT0JKQ19DTEFTUyBOU0NhbmRp
ZGF0ZUxpc3RUb3VjaEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TQ3VzdG9tVG91Y2hCYXJJdGVtOwog
T0JKQ19DTEFTUyBOU1RvdWNoQmFyOwpAQCAtNTE2LDcgKzUxNSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVwZGF0ZVRvdWNoQmFyKCk7CiAgICAgTlNUb3VjaEJhciAqY3VycmVudFRvdWNoQmFyKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50VG91Y2hCYXIuZ2V0KCk7IH0KICAgICBOU0NhbmRpZGF0
ZUxpc3RUb3VjaEJhckl0ZW0gKmNhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0oKSBjb25zdDsKLSAg
ICBBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKm1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25z
dDsKKyAgICBXS0FWVG91Y2hCYXJTY3J1YmJlciAqbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygp
IGNvbnN0OwogICAgIE5TVG91Y2hCYXIgKnRleHRUb3VjaEJhcigpIGNvbnN0OwogICAgIHZvaWQg
ZGlzbWlzc1RleHRUb3VjaEJhclBvcG92ZXJJdGVtV2l0aElkZW50aWZpZXIoTlNTdHJpbmcgKik7
CiAKQEAgLTU1NCw4ICs1NTMsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0N1c3RvbVRv
dWNoQmFySXRlbT4gbV9leGl0RnVsbFNjcmVlbkJ1dHRvbjsKIAogI2lmIEVOQUJMRShXRUJfUExB
WUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclBsYXli
YWNrQ29udHJvbHNQcm92aWRlcj4gbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXI7Ci0gICAgUmV0YWlu
UHRyPEFWRnVuY3Rpb25CYXJTY3J1YmJlcj4gbV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3Owor
ICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI+IG1fbWVk
aWFUb3VjaEJhclByb3ZpZGVyOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJTY3J1YmJlcj4g
bV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OwogI2VuZGlmIC8vIEVOQUJMRShXRUJfUExBWUJB
Q0tfQ09OVFJPTFNfTUFOQUdFUikKICNlbmRpZiAvLyBIQVZFKFRPVUNIX0JBUikKIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNp
b24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw2IEBACiAjaW1wb3J0ICJfV0tSZW1vdGVP
YmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tUaHVtYm5haWxWaWV3SW50ZXJu
YWwuaCIKICNpbXBvcnQgPEhJVG9vbGJveC9DYXJib25FdmVudHNDb3JlLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0FWS2l0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1h
Yy5oPgpAQCAtMTAyLDggKzEwMSwxMyBAQAogCiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJM
RShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIFNPRlRfTElOS19GUkFNRVdPUksoQVZL
aXQpCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK1NPRlRf
TElOS19DTEFTUyhBVktpdCwgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKK1NP
RlRfTElOS19DTEFTUyhBVktpdCwgQVZUb3VjaEJhclNjcnViYmVyKQorI2Vsc2UKIFNPRlRfTElO
S19DTEFTUyhBVktpdCwgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKIFNP
RlRfTElOS19DTEFTUyhBVktpdCwgQVZGdW5jdGlvbkJhclNjcnViYmVyKQorI2VuZGlmIC8vIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiAKIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IFdLTWVkaWFFeGl0RnVsbFNjcmVlbkl0ZW0gPSBAIldLTWVkaWFFeGl0RnVsbFNj
cmVlbkl0ZW0iOwogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlC
QUNLX0NPTlRST0xTX01BTkFHRVIpCkBAIC05MDIsNyArOTA2LDcgQEAgTlNDYW5kaWRhdGVMaXN0
VG91Y2hCYXJJdGVtICpXZWJWaWV3SW1wbAogICAgIHJldHVybiBpc1JpY2hseUVkaXRhYmxlKCkg
PyBtX3JpY2hUZXh0Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbS5nZXQoKSA6IG1fcGxhaW5UZXh0
Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbS5nZXQoKTsKIH0KIAotQVZGdW5jdGlvbkJhclNjcnVi
YmVyICpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpIGNvbnN0CitXS0FW
VG91Y2hCYXJTY3J1YmJlciAqV2ViVmlld0ltcGw6Om1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXco
KSBjb25zdAogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAg
ICBpZiAobV9wYWdlLT5oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcigpKQpAQCAtMTEy
NSwxMSArMTEyOSwyMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVUZXh0VG91Y2hCYXIoKQog
dm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlTWVkaWFUb3VjaEJhcigpCiB7CiAjaWYgRU5BQkxFKFdF
Ql9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCi0gICAgaWYgKCFtX21lZGlhVG91Y2hCYXJQcm92aWRlcikKKyAgICBpZiAoIW1fbWVk
aWFUb3VjaEJhclByb3ZpZGVyKSB7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDAKKyAgICAgICAgbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIgPSBhZG9wdE5TKFth
bGxvY0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXJJbnN0YW5jZSgpIGluaXRdKTsK
KyNlbHNlCiAgICAgICAgIG1fbWVkaWFUb3VjaEJhclByb3ZpZGVyID0gYWRvcHROUyhbYWxsb2NB
VkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFuY2UoKSBpbml0XSk7Cisj
ZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICB9
CiAKLSAgICBpZiAoIW1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldykKKyAgICBpZiAoIW1fbWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldykgeworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwCisgICAgICAgIG1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyA9IGFk
b3B0TlMoW2FsbG9jQVZUb3VjaEJhclNjcnViYmVySW5zdGFuY2UoKSBpbml0XSk7CisjZWxzZQog
ICAgICAgICBtX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgPSBhZG9wdE5TKFthbGxvY0FWRnVu
Y3Rpb25CYXJTY3J1YmJlckluc3RhbmNlKCkgaW5pdF0pOworI2VuZGlmIC8vIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisgICAgfQogCiAgICAgaWYgKCFtX3BsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKQogICAgICAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyID0g
YWRvcHROUyhbW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGFsbG9jXSBpbml0XSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyMDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wNC0xMCAgQmV0
aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBj
aGFuZ2UgZnJvbSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29y
cmVzcG9uZGluZy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVz
IG9ubHkgYXBwbHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5
cGVkZWZzIAorICAgICAgICB3aGVyZXZlciBwb3NzaWJsZS4gU086CisKKyAgICAgICAgQVZGdW5j
dGlvbkJhclNjcnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIsIHdpdGggdHlwZWRlZiBX
S0FWVG91Y2hCYXJTY3J1YmJlcgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRy
b2xzUHJvdmlkZXIgaXMgbm93IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIsIAor
ICAgICAgICB3aXRoIHR5cGVkZWYgV0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVy
CisKKyAgICAgICAgQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRv
dWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24sIHdpdGggCisgICAgICAgIHR5cGVkZWYgV0tBVlRv
dWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBB
VlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nLCB3aXRoIHRoZSAjZGVmaW5lIAor
ICAgICAgICBXS0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKworICAg
ICAgICBTb2Z0IGxpbmtzIGFuZCBhbGxvY2F0aW9ucyBjYW5ub3QgdXNlIHRoZSB0eXBlZGVmcy4K
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgdXBkYXRl
TWVkaWFUb3VjaEJhcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKwogMjAx
Ny0wNC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Ag
VGltZXI6OnN0YXJ0T25lU2hvdCgpIG92ZXJsb2FkIHRha2luZyBhIGRvdWJsZQpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsOCAr
MzM2LDEzIEBAIFNPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0VuZEltYWdlQ29udGUKIAogI2lm
IEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIp
CiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVG91Y2hCYXJQbGF5
YmFja0NvbnRyb2xzUHJvdmlkZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVG91Y2hCYXJT
Y3J1YmJlcikKKyNlbHNlCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWRnVuY3Rpb25CYXJQbGF5
YmFja0NvbnRyb2xzUHJvdmlkZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWRnVuY3Rpb25C
YXJTY3J1YmJlcikKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNL
X0NPTlRST0xTX01BTkFHRVIpCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC05NzkwLDE0ICs5Nzk1
LDE5IEBAIC0gKHZvaWQpdXBkYXRlVGV4dFRvdWNoQmFyCiAtICh2b2lkKXVwZGF0ZU1lZGlhVG91
Y2hCYXIKIHsKICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBpZiAoIV9wcml2YXRlLT5tZWRpYVRv
dWNoQmFyUHJvdmlkZXIpCisgICAgaWYgKCFfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVy
KSB7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICAg
ICAgX3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlciA9IGFkb3B0TlMoW2FsbG9jQVZUb3Vj
aEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlckluc3RhbmNlKCkgaW5pdF0pOworI2Vsc2UKICAg
ICAgICAgX3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlciA9IGFkb3B0TlMoW2FsbG9jQVZG
dW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlckluc3RhbmNlKCkgaW5pdF0pOworI2Vu
ZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisgICAgfQog
CiAgICAgaWYgKCFbX3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlciBwbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxlcl0pIHsKICAgICAgICAgQVNTRVJUKF9wcml2YXRlLT5wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UpOwogICAgICAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciAqbWFuYWdl
ciA9IF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXlCYWNrQ29udHJvbHNN
YW5hZ2VyKCk7Ci0gICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyIHNldFBs
YXliYWNrQ29udHJvbHNDb250cm9sbGVyOihpZCA8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJv
bHNDb250cm9sbGluZz4pbWFuYWdlcl07Ci0gICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldyBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjooaWQgPEFWRnVuY3Rp
b25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+KW1hbmFnZXJdOworICAgICAgICBbX3By
aXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlciBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxl
cjooaWQgPFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4pbWFuYWdlcl07
CisgICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBzZXRQbGF5YmFj
a0NvbnRyb2xzQ29udHJvbGxlcjooaWQgPFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250
cm9sbGluZz4pbWFuYWdlcl07CiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQVZLaXRTUEkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xheWVyRmx1c2hTY2hlZHVsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNj
aGVkdWxlckNsaWVudC5oPgpAQCAtMTA2LDggKzEwNyw2IEBAIGNsYXNzIFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyOwogCiAjaWYgSEFWRShUT1VDSF9CQVIpCiBAY2xhc3MgV2ViVGV4dFRv
dWNoQmFySXRlbUNvbnRyb2xsZXI7Ci1AY2xhc3MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJv
bHNQcm92aWRlcjsKLUBjbGFzcyBBVkZ1bmN0aW9uQmFyU2NydWJiZXI7CiAjZW5kaWYKIAogY2xh
c3MgV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIgOiBwdWJsaWMgV2ViQ29yZTo6TGF5ZXJGbHVz
aFNjaGVkdWxlciB7CkBAIC0xOTIsOCArMTkxLDggQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0
ZSA6IE5TT2JqZWN0IHsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVt
PiBfcmljaFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtOwogICAgIFJldGFpblB0cjxOU0Nh
bmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IF9wbGFpblRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJ
dGVtOwogICAgIFJldGFpblB0cjxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IF9wYXNzd29y
ZFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtOwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9u
QmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyPiBtZWRpYVRvdWNoQmFyUHJvdmlkZXI7Ci0gICAg
UmV0YWluUHRyPEFWRnVuY3Rpb25CYXJTY3J1YmJlcj4gbWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dzsKKyAgICBSZXRhaW5QdHI8V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyPiBt
ZWRpYVRvdWNoQmFyUHJvdmlkZXI7CisgICAgUmV0YWluUHRyPFdLQVZUb3VjaEJhclNjcnViYmVy
PiBtZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OwogCiAgICAgQk9PTCBfY2FuQ3JlYXRlVG91Y2hC
YXJzOwogICAgIEJPT0wgX2lzVXBkYXRpbmdUZXh0VG91Y2hCYXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306831</attachid>
            <date>2017-04-11 10:35:05 -0700</date>
            <delta_ts>2017-04-11 14:45:39 -0700</delta_ts>
            <desc>Green bots patch?</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>28272</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA0LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVktpdCBuYW1lIGNoYW5n
ZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIqCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIzMDAxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSBuZXcgbmFtZXMgb25s
eSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0aGlzIHBhdGNoIHVzZXMgdHlwZWRl
ZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxlLiBTTzoKKworICAgICAgICBBVkZ1bmN0aW9u
QmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJlciwgd2l0aCB0eXBlZGVmIFdLQVZU
b3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciwgCisgICAg
ICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIKKwor
ICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gaXMgbm93IEFWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAKKyAgICAgICAgdHlwZWRlZiBXS0FWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFuZCB0aGUgcHJvdG9jb2wgQVZGdW5j
dGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBpcyBub3cgCisgICAgICAgIEFWVG91
Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcsIHdpdGggdGhlICNkZWZpbmUgCisgICAg
ICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZworCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlv
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25dKToKKyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0Q3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEN1
cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAg
KG1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisKKyAgICAgICAgSGVyZSBpcyB3aGVyZSB0aGUgdHlw
ZWRlZnMgYW5kICNkZWZpbmUgYXJlIGRlY2xhcmVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOgorCiAyMDE3LTA0LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcmFwIGxlZ2FjeSBNZWRpYVN0cmVhbSBBUEkgaW4gcnVudGlt
ZSBmbGFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDE3ICszOSwxNyBAQCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCiBX
RUJDT1JFX0VYUE9SVAotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5T
T2JqZWN0IDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiB7CitAaW50
ZXJmYWNlIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgPFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4gewogICAgIE5TVGltZUludGVydmFsIF9jb250
ZW50RHVyYXRpb247CiAgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CiAgICAg
TlNUaW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVr
YWJsZVRpbWVSYW5nZXM7CiAgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOwogICAgIEJPT0wgX2hh
c0VuYWJsZWRWaWRlbzsKLSAgICBSZXRhaW5QdHI8TlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKj4+IF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJy
ZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFJldGFpblB0cjxO
U0FycmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2xlZ2libGVGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0FycmF5PFdLQVZUb3VjaEJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICo+PiBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsK
KyAgICBSZXRhaW5QdHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50
QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0Fy
cmF5PFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZUZ1bmN0aW9u
QmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gX2N1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjsKICAgICBmbG9hdCBfcmF0ZTsKICAgICBCT09MIF9jYW5Ub2dnbGVQbGF5YmFjazsK
IApAQCAtNjksMTAgKzY5LDEwIEBAIEBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgOiAKIAogQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7CiAKLS0gKEFWRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb247Ci0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlv
bjsKLS0gKEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxl
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLS0gKHZvaWQpc2V0Q3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVkZ1bmN0aW9uQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKilvcHRpb247CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CistICh2b2lk
KXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KFdLQVZUb3Vj
aEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uOworLSAoV0tBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb247CistICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb247CiAtICh2
b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7
CiAtICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0
ZWRJbmRleDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0JKHJldmlzaW9uIDIxNTE4NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTEgQEAKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdudWxsYWJp
bGl0eS1jb21wbGV0ZW5lc3MiCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitTT0ZUX0xJTktfQ0xBU1NfT1BU
SU9OQUwoQVZLaXQsIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyNlbHNlCiBTT0ZU
X0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbikKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MAogCiBAaW1wbGVtZW50YXRpb24gV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIKIApAQCAtMTIx
LDIyICsxMjUsMjIgQEAgLSAodm9pZCllbmRGdW5jdGlvbkJhclNjcnViYmluZwogICAgIF93ZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPmVuZFNjcnViYmluZygpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWF1ZGlvRnVuY3Rpb25C
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMKKy0gKE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKj4gKilhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zCiB7
CiAgICAgcmV0dXJuIF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgp
OwogfQogCi0tICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6
KE5TQXJyYXk8QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9PcHRp
b25zCistICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5T
QXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMK
IHsKICAgICBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvT3B0
aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorLSAoV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uCiB7CiAgICAgcmV0dXJuIF9jdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
KWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KKy0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCiB7CiAgICAgaWYgKGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTE1MSwyMiArMTU1LDIyIEBAIC0gKHZvaWQpc2V0Q3Vy
cmVudEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVMKICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucworLSAoTlNBcnJheTxXS0FWVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
cwogewogICAgIHJldHVybiBfbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
LmdldCgpOwogfQogCi0tICh2b2lkKXNldExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uczooTlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucworLSAodm9pZClzZXRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbnM6KE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucwogewogICAgIF9sZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uICopY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgogewogICAgIHJldHVybiBfY3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNl
dEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uCist
ICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjoo
V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24KIHsKICAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50
TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTE4NSw3ICsxODksMTEgQEAgc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVk
aWFTZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUo
KV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKLSAgICAgICAgaWYgKFJldGFp
blB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0
TlMoW2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0
V2l0aFRpdGxlOm5hbWVdKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorICAgICAgICBpZiAoUmV0YWluUHRyPFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpuYW1lIHR5cGU6QVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uVHlwZVJlZ3VsYXJdKSkKKyNlbHNlCisgICAgICAgIGlmIChSZXRhaW5Q
dHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0TlMo
W2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0
aFRpdGxlOm5hbWVdKSkKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAogICAgICAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5n
ZXQoKV07CiAgICAgfQogICAgIHJldHVybiB3ZWJPcHRpb25zOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgJKHJldmlzaW9uIDIxNTE4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsMTQgKzE1MywzOSBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK09CSkNfQ0xBU1Mg
QVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK09CSkNfQ0xBU1MgQVZUb3VjaEJh
clNjcnViYmVyOworT0JKQ19DTEFTUyBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisK
K3R5cGVkZWYgQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uOwordHlwZWRlZiBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3Zp
ZGVyIFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZUb3Vj
aEJhclNjcnViYmVyIFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250
cm9sbGluZworI2Vsc2UKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlcjsKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworT0JKQ19DTEFTUyBB
VkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK3R5cGVkZWYgQVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwor
dHlwZWRlZiBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZGdW5jdGlvbkJhclNjcnViYmVy
IFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxpbmcgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZwor
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwCisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVyLmg+CisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyU2NydWJiZXIuaD4KKyNlbHNl
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyLmg+
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyU2NydWJiZXIuaD4KKyNlbmRpZiAvLyBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogI2Vsc2UKIAogTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIAotQHByb3RvY29sIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxpbmcgPE5TT2JqZWN0PgorQHByb3RvY29sIFdLQVZUb3VjaEJhclBsYXliYWNrQ29u
dHJvbHNDb250cm9sbGluZyA8TlNPYmplY3Q+CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJ
bnRlcnZhbCBjb250ZW50RHVyYXRpb247CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBudWxsYWJsZSkg
QVZWYWx1ZVRpbWluZyAqdGltaW5nOwogQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzU2Vl
a2luZykgQk9PTCBzZWVraW5nOwpAQCAtMTcwLDE2ICsxOTUsMTUgQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzRW5hYmxlZFZpZGVvOwogQGVu
ZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgOiBO
U1Jlc3BvbmRlcgorQGludGVyZmFjZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgOiBOU1Jlc3BvbmRlcgogQHByb3BlcnR5IChzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkg
TlNUb3VjaEJhciAqdG91Y2hCYXI7Ci1AcHJvcGVydHkgKGFzc2lnbiwgbnVsbGFibGUpIGlkPEFW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyOworQHByb3BlcnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOwog
QGVuZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJTY3J1YmJlciA6IE5TVmlldwotQHByb3Bl
cnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0Nv
bnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjsKK0BpbnRlcmZhY2UgV0tBVlRv
dWNoQmFyU2NydWJiZXIgOiBOU1ZpZXcKK0Bwcm9wZXJ0eSAoYXNzaWduLCBudWxsYWJsZSkgaWQ8
V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxlcjsKIEBlbmQKIAotQGNsYXNzIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKIEBjbGFzcyBBVlRodW1ibmFpbDsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNy0wNC0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJv
bSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBw
bHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAor
ICAgICAgICB3aGVyZXZlciBwb3NzaWJsZS4gU086CisKKyAgICAgICAgQVZGdW5jdGlvbkJhclNj
cnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIsIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hC
YXJTY3J1YmJlcgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgaXMgbm93IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIsIAorICAgICAgICB3
aXRoIHR5cGVkZWYgV0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyCisKKyAgICAg
ICAgQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24sIHdpdGggCisgICAgICAgIHR5cGVkZWYgV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFWRnVuY3Rpb25C
YXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBBVlRvdWNoQmFy
UGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nLCB3aXRoIHRoZSAjZGVmaW5lIAorICAgICAgICBX
S0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKworICAgICAgICBTUEkg
aGVhZGVycyBjYW5ub3QgdXNlIHRoZSB0eXBlZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKworICAgICAgICBVc2UgdGhlIHR5cGVkZWZzIGVsc2V3
aGVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlld10pOgorICAgICAgICAoLVtXS1ZpZXcgX2FkZE1lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisKKyAg
ICAgICAgU29mdCBsaW5rcyBhbmQgYWxsb2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMu
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNoQmFyKToKKwogMjAxNy0wNC0xMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVttYWNP
U10gQmxvY2sgYWNjZXNzIHRvIEFwcGxlIEV2ZW50cyBiZWZvcmUgbGF1bmNoLgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSwxMSBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJT
dHlsZS5oPgogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
K0BjbGFzcyBBVlRvdWNoQmFyU2NydWJiZXI7CisjZWxzZQogQGNsYXNzIEFWRnVuY3Rpb25CYXJT
Y3J1YmJlcjsKKyNlbmRpZgogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKIApAQCAtMTM1
LDggKzEzOSwxMyBAQAogLSAodm9pZClfZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZTooTlNFdmVudCAqKWV2ZW50OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBz
ZXR0ZXI9X3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFy
U2NydWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworLSAodm9pZClfYWRkTWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnViYmVyICopbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldzsKKyNlbHNlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWRnVu
Y3Rpb25CYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAtICh2b2lkKV9h
ZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwCiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3OwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMDUsNyAr
NTAwNSw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmkKICNlbmRp
ZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldworLSAoaWQpX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKIHsKICNpZiBIQVZFKFRPVUNI
X0JBUikKICAgICByZXR1cm4gX2ltcGwtPmNsaWVudFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldygpID8gX2ltcGwtPm1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSA6IG5pbDsKQEAgLTUw
MTUsNyArNTAxNSw3IEBAIC0gKEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqKV9tZWRpYVBsYXliYWMK
IH0KIAogLy8gVGhpcyBtZXRob2QgaXMgZm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCi0tICh2
b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIg
KiltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CistICh2b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29u
dHJvbHNWaWV3OihpZCltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsMTEg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQQogCiAjZW5kaWYKIAor
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitAY2xhc3MgQVZU
b3VjaEJhclNjcnViYmVyOworI2Vsc2UKIEBjbGFzcyBBVkZ1bmN0aW9uQmFyU2NydWJiZXI7Cisj
ZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKIEBjbGFz
cyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKIEBjbGFz
cyBfV0tIaXRUZXN0UmVzdWx0OwpAQCAtMjIzLDggKzIyNywxMyBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBCiAKIC8vIEZJWE1FOiBUaGlzIFNQSSBzaG91bGQgYmVj
b21lIGEgcGFydCBvZiB0aGUgV0tVSURlbGVnYXRlLiByZGFyOi8vcHJvYmxlbS8yNjU2MTUzNwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgc2V0dGVyPV9zZXRXYW50c01lZGlhUGxh
eWJhY2tDb250cm9sc1ZpZXc6KSBCT09MIF93YW50c01lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEFWVG91Y2hCYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworLSAodm9pZClfYWRkTWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnViYmVyICopbWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CisjZWxzZQogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKl9tZWRpYVBs
YXliYWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsK
IC0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFWRnVuY3Rpb25CYXJTY3J1
YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSkpOworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwCiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIAogLSAodm9pZClfcHJlcGFyZUZvck1v
dmVUb1dpbmRvdzooTlNXaW5kb3cgKil0YXJnZXRXaW5kb3cgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW1w
bC5oIgogI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwpAQCAtMTU3Miw3ICsxNTczLDcgQEAgLSAodm9pZClfc2V0V2FudHNN
ZWRpYVBsYXliYWNrQ29udHJvbHNWaQogI2VuZGlmCiB9CiAKLS0gKEFWRnVuY3Rpb25CYXJTY3J1
YmJlciAqKV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CistIChpZClfbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldwogewogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHJldHVybiBfZGF0YS0+X2lt
cGwtPmNsaWVudFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpID8gX2RhdGEtPl9pbXBs
LT5tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgOiBuaWw7CkBAIC0xNTgyLDcgKzE1ODMsNyBA
QCAtIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFjCiB9CiAKIC8vIFRoaXMg
bWV0aG9kIGlzIGZvciBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlLgotLSAodm9pZClfYWRkTWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldzooQVZGdW5jdGlvbkJhclNjcnViYmVyICopbWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldworLSAodm9pZClfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzooaWQp
bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldwogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXS0xheW91dE1vZGUuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0FWS2l0U1BJLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNh
dG9yV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KQEAgLTU1LDggKzU2LDYgQEAgT0JKQ19DTEFT
UyBXS1dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlcjsKIE9CSkNfQ0xBU1MgX1dLVGh1bWJuYWlsVmll
dzsKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKQotT0JKQ19DTEFTUyBBVkZ1bmN0aW9uQmFyUGxheWJh
Y2tDb250cm9sc1Byb3ZpZGVyOwotT0JKQ19DTEFTUyBBVkZ1bmN0aW9uQmFyU2NydWJiZXI7CiBP
QkpDX0NMQVNTIE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1MgTlNDdXN0
b21Ub3VjaEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TVG91Y2hCYXI7CkBAIC01MTYsNyArNTE1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVG91Y2hCYXIoKTsKICAgICBOU1RvdWNoQmFyICpj
dXJyZW50VG91Y2hCYXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUb3VjaEJhci5nZXQoKTsg
fQogICAgIE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbSAqY2FuZGlkYXRlTGlzdFRvdWNoQmFy
SXRlbSgpIGNvbnN0OwotICAgIEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldygpIGNvbnN0OworICAgIFdLQVZUb3VjaEJhclNjcnViYmVyICptZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3KCkgY29uc3Q7CiAgICAgTlNUb3VjaEJhciAqdGV4dFRvdWNoQmFyKCkg
Y29uc3Q7CiAgICAgdm9pZCBkaXNtaXNzVGV4dFRvdWNoQmFyUG9wb3Zlckl0ZW1XaXRoSWRlbnRp
ZmllcihOU1N0cmluZyAqKTsKIApAQCAtNTU0LDggKzU1Myw4IEBAIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPE5TQ3VzdG9tVG91Y2hCYXJJdGVtPiBtX2V4aXRGdWxsU2NyZWVuQnV0dG9uOwogCiAj
aWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQotICAgIFJldGFpblB0cjxB
VkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyPiBtX21lZGlhVG91Y2hCYXJQcm92
aWRlcjsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclNjcnViYmVyPiBtX21lZGlhUGxheWJh
Y2tDb250cm9sc1ZpZXc7CisgICAgUmV0YWluUHRyPFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJv
bHNQcm92aWRlcj4gbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXI7CisgICAgUmV0YWluUHRyPFdLQVZU
b3VjaEJhclNjcnViYmVyPiBtX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogI2VuZGlmIC8vIEhBVkUoVE9V
Q0hfQkFSKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAKICNp
bXBvcnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Ro
dW1ibmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8SElUb29sYm94L0NhcmJvbkV2ZW50c0Nv
cmUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQVhP
YmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yTWFjLmg+CkBAIC0xMDIsOCArMTAxLDEzIEBACiAKICNpZiBIQVZFKFRP
VUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogU09GVF9M
SU5LX0ZSQU1FV09SSyhBVktpdCkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyUGxheWJhY2tDb250
cm9sc1Byb3ZpZGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyU2NydWJiZXIp
CisjZWxzZQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250
cm9sc1Byb3ZpZGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyU2NydWJi
ZXIpCisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
IAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV0tNZWRpYUV4aXRGdWxsU2NyZWVuSXRlbSA9IEAi
V0tNZWRpYUV4aXRGdWxsU2NyZWVuSXRlbSI7CiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpICYm
IEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKQEAgLTkwMiw3ICs5MDYsNyBA
QCBOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0gKldlYlZpZXdJbXBsCiAgICAgcmV0dXJuIGlz
UmljaGx5RWRpdGFibGUoKSA/IG1fcmljaFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtLmdl
dCgpIDogbV9wbGFpblRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtLmdldCgpOwogfQogCi1B
VkZ1bmN0aW9uQmFyU2NydWJiZXIgKldlYlZpZXdJbXBsOjptZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3KCkgY29uc3QKK1dLQVZUb3VjaEJhclNjcnViYmVyICpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldygpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05U
Uk9MU19NQU5BR0VSKQogICAgIGlmIChtX3BhZ2UtPmhhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNN
YW5hZ2VyKCkpCkBAIC0xMTI1LDExICsxMTI5LDIxIEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0
ZVRleHRUb3VjaEJhcigpCiB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNoQmFyKCkK
IHsKICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBpZiAoIW1fbWVkaWFUb3VjaEJhclByb3ZpZGVy
KQorICAgIGlmICghbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIpIHsKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorICAgICAgICBtX21lZGlhVG91Y2hCYXJQcm92
aWRlciA9IGFkb3B0TlMoW2FsbG9jQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcklu
c3RhbmNlKCkgaW5pdF0pOworI2Vsc2UKICAgICAgICAgbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIg
PSBhZG9wdE5TKFthbGxvY0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXJJbnN0
YW5jZSgpIGluaXRdKTsKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAorICAgIH0KIAotICAgIGlmICghbV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3
KQorICAgIGlmICghbV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KSB7CisjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICAgICAgbV9tZWRpYVBsYXliYWNr
Q29udHJvbHNWaWV3ID0gYWRvcHROUyhbYWxsb2NBVlRvdWNoQmFyU2NydWJiZXJJbnN0YW5jZSgp
IGluaXRdKTsKKyNlbHNlCiAgICAgICAgIG1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyA9IGFk
b3B0TlMoW2FsbG9jQVZGdW5jdGlvbkJhclNjcnViYmVySW5zdGFuY2UoKSBpbml0XSk7CisjZW5k
aWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICB9CiAK
ICAgICBpZiAoIW1fcGxheWJhY2tDb250cm9sc01hbmFnZXIpCiAgICAgICAgIG1fcGxheWJhY2tD
b250cm9sc01hbmFnZXIgPSBhZG9wdE5TKFtbV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgYWxs
b2NdIGluaXRdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE3LTA0LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBBVktpdCBuYW1lIGNoYW5nZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIq
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMK
KyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIz
MDAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNp
bmNlIHRoZSBuZXcgbmFtZXMgb25seSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0
aGlzIHBhdGNoIHVzZXMgdHlwZWRlZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxlLiBTTzoK
KworICAgICAgICBBVkZ1bmN0aW9uQmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJl
ciwgd2l0aCB0eXBlZGVmIFdLQVZUb3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZGdW5jdGlv
bkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXliYWNrQ29u
dHJvbHNQcm92aWRlciwgCisgICAgICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQbGF5YmFj
a0NvbnRyb2xzUHJvdmlkZXIKKworICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb24gaXMgbm93IEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAKKyAgICAg
ICAgdHlwZWRlZiBXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFu
ZCB0aGUgcHJvdG9jb2wgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBp
cyBub3cgCisgICAgICAgIEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcsIHdp
dGggdGhlICNkZWZpbmUgCisgICAgICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHND
b250cm9sbGluZworCisgICAgICAgIFNvZnQgbGlua3MgYW5kIGFsbG9jYXRpb25zIGNhbm5vdCB1
c2UgdGhlIHR5cGVkZWZzLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVmlldyB1cGRhdGVNZWRpYVRvdWNoQmFyXSk6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3RGF0YS5oOgorCiAyMDE3LTA0LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRHJvcCBUaW1lcjo6c3RhcnRPbmVTaG90KCkgb3ZlcmxvYWQgdGFraW5nIGEg
ZG91YmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAy
MTUxODQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMzNiw4ICszMzYsMTMgQEAgU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzRW5k
SW1hZ2VDb250ZQogCiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tf
Q09OVFJPTFNfTUFOQUdFUikKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCisjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK1NPRlRfTElOS19DTEFTUyhBVktp
dCwgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKK1NPRlRfTElOS19DTEFTUyhB
VktpdCwgQVZUb3VjaEJhclNjcnViYmVyKQorI2Vsc2UKIFNPRlRfTElOS19DTEFTUyhBVktpdCwg
QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKIFNPRlRfTElOS19DTEFTUyhB
VktpdCwgQVZGdW5jdGlvbkJhclNjcnViYmVyKQorI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpICYmIEVO
QUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIAogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTk3OTAsMTQgKzk3OTUsMTkgQEAgLSAodm9pZCl1cGRhdGVUZXh0VG91Y2hCYXIKIC0gKHZv
aWQpdXBkYXRlTWVkaWFUb3VjaEJhcgogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJP
TFNfTUFOQUdFUikgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIGlmICgh
X3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlcikKKyAgICBpZiAoIV9wcml2YXRlLT5tZWRp
YVRvdWNoQmFyUHJvdmlkZXIpIHsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAorICAgICAgICBfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyID0gYWRv
cHROUyhbYWxsb2NBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFuY2UoKSBp
bml0XSk7CisjZWxzZQogICAgICAgICBfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyID0g
YWRvcHROUyhbYWxsb2NBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFu
Y2UoKSBpbml0XSk7CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEzMDAKKyAgICB9CiAKICAgICBpZiAoIVtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3Zp
ZGVyIHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyXSkgewogICAgICAgICBBU1NFUlQoX3ByaXZh
dGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSk7CiAgICAgICAgIFdlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyICptYW5hZ2VyID0gX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+
cGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLSAgICAgICAgW19wcml2YXRlLT5tZWRpYVRvdWNo
QmFyUHJvdmlkZXIgc2V0UGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXI6KGlkIDxBVkZ1bmN0aW9u
QmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiltYW5hZ2VyXTsKLSAgICAgICAgW19wcml2
YXRlLT5tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHNldFBsYXliYWNrQ29udHJvbHNDb250cm9s
bGVyOihpZCA8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4pbWFuYWdl
cl07CisgICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyIHNldFBsYXliYWNr
Q29udHJvbHNDb250cm9sbGVyOihpZCA8V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRy
b2xsaW5nPiltYW5hZ2VyXTsKKyAgICAgICAgW19wcml2YXRlLT5tZWRpYVBsYXliYWNrQ29udHJv
bHNWaWV3IHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOihpZCA8V0tBVlRvdWNoQmFyUGxh
eWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiltYW5hZ2VyXTsKICAgICB9CiAjZW5kaWYKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHJldmlzaW9uIDIxNTE4
NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9BVktpdFNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9MYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg+CkBAIC0xMDYsOCArMTA3LDYgQEAgY2xh
c3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKICNpZiBIQVZFKFRPVUNIX0JBUikK
IEBjbGFzcyBXZWJUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcjsKLUBjbGFzcyBBVkZ1bmN0aW9u
QmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyOwotQGNsYXNzIEFWRnVuY3Rpb25CYXJTY3J1YmJl
cjsKICNlbmRpZgogCiBjbGFzcyBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlciA6IHB1YmxpYyBX
ZWJDb3JlOjpMYXllckZsdXNoU2NoZWR1bGVyIHsKQEAgLTE5Miw4ICsxOTEsOCBAQCBAaW50ZXJm
YWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3QgewogICAgIFJldGFpblB0cjxOU0NhbmRpZGF0
ZUxpc3RUb3VjaEJhckl0ZW0+IF9yaWNoVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07CiAg
ICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbT4gX3BsYWluVGV4dENhbmRp
ZGF0ZUxpc3RUb3VjaEJhckl0ZW07CiAgICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNo
QmFySXRlbT4gX3Bhc3N3b3JkVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07Ci0gICAgUmV0
YWluUHRyPEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI+IG1lZGlhVG91Y2hC
YXJQcm92aWRlcjsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclNjcnViYmVyPiBtZWRpYVBs
YXliYWNrQ29udHJvbHNWaWV3OworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJQbGF5YmFja0Nv
bnRyb2xzUHJvdmlkZXI+IG1lZGlhVG91Y2hCYXJQcm92aWRlcjsKKyAgICBSZXRhaW5QdHI8V0tB
VlRvdWNoQmFyU2NydWJiZXI+IG1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAKICAgICBCT09M
IF9jYW5DcmVhdGVUb3VjaEJhcnM7CiAgICAgQk9PTCBfaXNVcGRhdGluZ1RleHRUb3VjaEJhcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306854</attachid>
            <date>2017-04-11 14:45:39 -0700</date>
            <delta_ts>2017-04-11 15:35:21 -0700</delta_ts>
            <desc>iOS bots patch</desc>
            <filename>for-review-5.txt</filename>
            <type>text/plain</type>
            <size>28129</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA0LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVktpdCBuYW1lIGNoYW5n
ZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIqCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIzMDAxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSBuZXcgbmFtZXMgb25s
eSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0aGlzIHBhdGNoIHVzZXMgdHlwZWRl
ZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxlLiBTTzoKKworICAgICAgICBBVkZ1bmN0aW9u
QmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJlciwgd2l0aCB0eXBlZGVmIFdLQVZU
b3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciwgCisgICAg
ICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIKKwor
ICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gaXMgbm93IEFWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAKKyAgICAgICAgdHlwZWRlZiBXS0FWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFuZCB0aGUgcHJvdG9jb2wgQVZGdW5j
dGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBpcyBub3cgCisgICAgICAgIEFWVG91
Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcsIHdpdGggdGhlICNkZWZpbmUgCisgICAg
ICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZworCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlv
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25dKToKKyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0Q3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEN1
cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAg
KG1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisKKyAgICAgICAgSGVyZSBpcyB3aGVyZSB0aGUgdHlw
ZWRlZnMgYW5kICNkZWZpbmUgYXJlIGRlY2xhcmVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOgorCiAyMDE3LTA0LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcmFwIGxlZ2FjeSBNZWRpYVN0cmVhbSBBUEkgaW4gcnVudGlt
ZSBmbGFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDE3ICszOSwxNyBAQCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCiBX
RUJDT1JFX0VYUE9SVAotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5T
T2JqZWN0IDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiB7CitAaW50
ZXJmYWNlIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgPFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4gewogICAgIE5TVGltZUludGVydmFsIF9jb250
ZW50RHVyYXRpb247CiAgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CiAgICAg
TlNUaW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVr
YWJsZVRpbWVSYW5nZXM7CiAgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOwogICAgIEJPT0wgX2hh
c0VuYWJsZWRWaWRlbzsKLSAgICBSZXRhaW5QdHI8TlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKj4+IF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJy
ZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFJldGFpblB0cjxO
U0FycmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2xlZ2libGVGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0FycmF5PFdLQVZUb3VjaEJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICo+PiBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsK
KyAgICBSZXRhaW5QdHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50
QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0Fy
cmF5PFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZUZ1bmN0aW9u
QmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gX2N1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjsKICAgICBmbG9hdCBfcmF0ZTsKICAgICBCT09MIF9jYW5Ub2dnbGVQbGF5YmFjazsK
IApAQCAtNjksMTAgKzY5LDEwIEBAIEBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgOiAKIAogQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7CiAKLS0gKEFWRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb247Ci0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlv
bjsKLS0gKEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxl
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLS0gKHZvaWQpc2V0Q3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVkZ1bmN0aW9uQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKilvcHRpb247CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CistICh2b2lk
KXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KFdLQVZUb3Vj
aEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uOworLSAoV0tBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb247CistICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb247CiAtICh2
b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7
CiAtICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0
ZWRJbmRleDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0JKHJldmlzaW9uIDIxNTE4NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTEgQEAKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdudWxsYWJp
bGl0eS1jb21wbGV0ZW5lc3MiCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitTT0ZUX0xJTktfQ0xBU1NfT1BU
SU9OQUwoQVZLaXQsIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyNlbHNlCiBTT0ZU
X0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbikKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MAogCiBAaW1wbGVtZW50YXRpb24gV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIKIApAQCAtMTIx
LDIyICsxMjUsMjIgQEAgLSAodm9pZCllbmRGdW5jdGlvbkJhclNjcnViYmluZwogICAgIF93ZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPmVuZFNjcnViYmluZygpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWF1ZGlvRnVuY3Rpb25C
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMKKy0gKE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKj4gKilhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zCiB7
CiAgICAgcmV0dXJuIF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgp
OwogfQogCi0tICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6
KE5TQXJyYXk8QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9PcHRp
b25zCistICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5T
QXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMK
IHsKICAgICBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvT3B0
aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorLSAoV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uCiB7CiAgICAgcmV0dXJuIF9jdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
KWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KKy0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCiB7CiAgICAgaWYgKGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTE1MSwyMiArMTU1LDIyIEBAIC0gKHZvaWQpc2V0Q3Vy
cmVudEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVMKICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucworLSAoTlNBcnJheTxXS0FWVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
cwogewogICAgIHJldHVybiBfbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
LmdldCgpOwogfQogCi0tICh2b2lkKXNldExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uczooTlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucworLSAodm9pZClzZXRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbnM6KE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucwogewogICAgIF9sZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uICopY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgogewogICAgIHJldHVybiBfY3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNl
dEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uCist
ICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjoo
V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24KIHsKICAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50
TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTE4NSw3ICsxODksMTEgQEAgc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVk
aWFTZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUo
KV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKLSAgICAgICAgaWYgKFJldGFp
blB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0
TlMoW2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0
V2l0aFRpdGxlOm5hbWVdKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorICAgICAgICBpZiAoUmV0YWluUHRyPFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpuYW1lIHR5cGU6QVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uVHlwZVJlZ3VsYXJdKSkKKyNlbHNlCisgICAgICAgIGlmIChSZXRhaW5Q
dHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0TlMo
W2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0
aFRpdGxlOm5hbWVdKSkKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAogICAgICAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5n
ZXQoKV07CiAgICAgfQogICAgIHJldHVybiB3ZWJPcHRpb25zOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgJKHJldmlzaW9uIDIxNTE4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsMTQgKzE1MywzOSBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK09CSkNfQ0xBU1Mg
QVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK09CSkNfQ0xBU1MgQVZUb3VjaEJh
clNjcnViYmVyOworT0JKQ19DTEFTUyBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisK
K3R5cGVkZWYgQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uOwordHlwZWRlZiBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3Zp
ZGVyIFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZUb3Vj
aEJhclNjcnViYmVyIFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250
cm9sbGluZworI2Vsc2UKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlcjsKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworT0JKQ19DTEFTUyBB
VkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK3R5cGVkZWYgQVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwor
dHlwZWRlZiBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZGdW5jdGlvbkJhclNjcnViYmVy
IFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxpbmcgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZwor
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwCisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVyLmg+CisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyU2NydWJiZXIuaD4KKyNlbHNl
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyLmg+
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyU2NydWJiZXIuaD4KKyNlbmRpZiAvLyBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogI2Vsc2UKIAogTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIAotQHByb3RvY29sIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxpbmcgPE5TT2JqZWN0PgorQHByb3RvY29sIFdLQVZUb3VjaEJhclBsYXliYWNrQ29u
dHJvbHNDb250cm9sbGluZyA8TlNPYmplY3Q+CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJ
bnRlcnZhbCBjb250ZW50RHVyYXRpb247CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBudWxsYWJsZSkg
QVZWYWx1ZVRpbWluZyAqdGltaW5nOwogQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzU2Vl
a2luZykgQk9PTCBzZWVraW5nOwpAQCAtMTcwLDE2ICsxOTUsMTUgQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzRW5hYmxlZFZpZGVvOwogQGVu
ZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgOiBO
U1Jlc3BvbmRlcgorQGludGVyZmFjZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgOiBOU1Jlc3BvbmRlcgogQHByb3BlcnR5IChzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkg
TlNUb3VjaEJhciAqdG91Y2hCYXI7Ci1AcHJvcGVydHkgKGFzc2lnbiwgbnVsbGFibGUpIGlkPEFW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyOworQHByb3BlcnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOwog
QGVuZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJTY3J1YmJlciA6IE5TVmlldwotQHByb3Bl
cnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0Nv
bnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjsKK0BpbnRlcmZhY2UgV0tBVlRv
dWNoQmFyU2NydWJiZXIgOiBOU1ZpZXcKK0Bwcm9wZXJ0eSAoYXNzaWduLCBudWxsYWJsZSkgaWQ8
V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxlcjsKIEBlbmQKIAotQGNsYXNzIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKIEBjbGFzcyBBVlRodW1ibmFpbDsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNy0wNC0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJv
bSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBw
bHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAor
ICAgICAgICB3aGVyZXZlciBwb3NzaWJsZS4gU086CisKKyAgICAgICAgQVZGdW5jdGlvbkJhclNj
cnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIsIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hC
YXJTY3J1YmJlcgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgaXMgbm93IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIsIAorICAgICAgICB3
aXRoIHR5cGVkZWYgV0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyCisKKyAgICAg
ICAgQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24sIHdpdGggCisgICAgICAgIHR5cGVkZWYgV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFWRnVuY3Rpb25C
YXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBBVlRvdWNoQmFy
UGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nLCB3aXRoIHRoZSAjZGVmaW5lIAorICAgICAgICBX
S0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKworICAgICAgICBTUEkg
aGVhZGVycyBjYW5ub3QgdXNlIHRoZSB0eXBlZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKworICAgICAgICBVc2UgdGhlIHR5cGVkZWZzIGVsc2V3
aGVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlld10pOgorICAgICAgICAoLVtXS1ZpZXcgX2FkZE1lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisKKyAg
ICAgICAgU29mdCBsaW5rcyBhbmQgYWxsb2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMu
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNoQmFyKToKKwogMjAxNy0wNC0xMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVttYWNP
U10gQmxvY2sgYWNjZXNzIHRvIEFwcGxlIEV2ZW50cyBiZWZvcmUgbGF1bmNoLgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSwxMSBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJT
dHlsZS5oPgogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
K0BjbGFzcyBBVlRvdWNoQmFyU2NydWJiZXI7CisjZWxzZQogQGNsYXNzIEFWRnVuY3Rpb25CYXJT
Y3J1YmJlcjsKKyNlbmRpZgogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKIApAQCAtMTM1
LDggKzEzOSwxMyBAQAogLSAodm9pZClfZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZTooTlNFdmVudCAqKWV2ZW50OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBz
ZXR0ZXI9X3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFy
U2NydWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworLSAodm9pZClfYWRkTWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnViYmVyICopbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldzsKKyNlbHNlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWRnVu
Y3Rpb25CYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAtICh2b2lkKV9h
ZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwCiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3OwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMDUsNyAr
NTAwNSw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmkKICNlbmRp
ZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldworLSAoaWQpX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKIHsKICNpZiBIQVZFKFRPVUNI
X0JBUikKICAgICByZXR1cm4gX2ltcGwtPmNsaWVudFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldygpID8gX2ltcGwtPm1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSA6IG5pbDsKQEAgLTUw
MTUsNyArNTAxNSw3IEBAIC0gKEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqKV9tZWRpYVBsYXliYWMK
IH0KIAogLy8gVGhpcyBtZXRob2QgaXMgZm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCi0tICh2
b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIg
KiltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CistICh2b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29u
dHJvbHNWaWV3OihpZCltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsMTEg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQQogCiAjZW5kaWYKIAor
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitAY2xhc3MgQVZU
b3VjaEJhclNjcnViYmVyOworI2Vsc2UKIEBjbGFzcyBBVkZ1bmN0aW9uQmFyU2NydWJiZXI7Cisj
ZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKIEBjbGFz
cyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKIEBjbGFz
cyBfV0tIaXRUZXN0UmVzdWx0OwpAQCAtMjIzLDggKzIyNyw4IEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIF9XS0ltbWVkaWF0ZUEKIAogLy8gRklYTUU6IFRoaXMgU1BJIHNob3VsZCBiZWNv
bWUgYSBwYXJ0IG9mIHRoZSBXS1VJRGVsZWdhdGUuIHJkYXI6Ly9wcm9ibGVtLzI2NTYxNTM3CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBzZXR0ZXI9X3NldFdhbnRzTWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwotLSAodm9pZClfYWRk
TWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzooQVZGdW5jdGlvbkJhclNjcnViYmVyICopbWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGlkIF9tZWRpYVBsYXliYWNrQ29udHJv
bHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX2Fk
ZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KGlkKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClfcmVtb3ZlTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSk7CiAKIC0gKHZvaWQpX3ByZXBhcmVGb3JNb3ZlVG9XaW5kb3c6KE5TV2luZG93ICopdGFyZ2V0
V2luZG93IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2
aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNz
UG9vbC5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKICNpbXBvcnQgIl9XS0xpbmtJY29uUGFy
YW1ldGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FWS2l0U1BJLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTE1NzIsNyAr
MTU3Myw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmkKICNlbmRp
ZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldworLSAoaWQpX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKIHsKICNpZiBIQVZFKFRPVUNI
X0JBUikKICAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5jbGllbnRXYW50c01lZGlhUGxheWJhY2tD
b250cm9sc1ZpZXcoKSA/IF9kYXRhLT5faW1wbC0+bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygp
IDogbmlsOwpAQCAtMTU4Miw3ICsxNTgzLDcgQEAgLSAoQVZGdW5jdGlvbkJhclNjcnViYmVyICop
X21lZGlhUGxheWJhYwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBmb3Igc3ViY2xhc3NlcyB0byBv
dmVycmlkZS4KLS0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFWRnVuY3Rp
b25CYXJTY3J1YmJlciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKKy0gKHZvaWQpX2FkZE1l
ZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KGlkKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKIHsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgJKHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
V0tMYXlvdXRNb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiX1dL
T3ZlcmxheVNjcm9sbGJhclN0eWxlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BVktpdFNQSS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CkBAIC01NSw4ICs1Niw2IEBAIE9CSkNfQ0xBU1MgV0tXaW5kb3dWaXNpYmlsaXR5T2JzZXJ2ZXI7
CiBPQkpDX0NMQVNTIF9XS1RodW1ibmFpbFZpZXc7CiAKICNpZiBIQVZFKFRPVUNIX0JBUikKLU9C
SkNfQ0xBU1MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKLU9CSkNfQ0xB
U1MgQVZGdW5jdGlvbkJhclNjcnViYmVyOwogT0JKQ19DTEFTUyBOU0NhbmRpZGF0ZUxpc3RUb3Vj
aEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TQ3VzdG9tVG91Y2hCYXJJdGVtOwogT0JKQ19DTEFTUyBO
U1RvdWNoQmFyOwpAQCAtNTE2LDcgKzUxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRv
dWNoQmFyKCk7CiAgICAgTlNUb3VjaEJhciAqY3VycmVudFRvdWNoQmFyKCkgY29uc3QgeyByZXR1
cm4gbV9jdXJyZW50VG91Y2hCYXIuZ2V0KCk7IH0KICAgICBOU0NhbmRpZGF0ZUxpc3RUb3VjaEJh
ckl0ZW0gKmNhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0oKSBjb25zdDsKLSAgICBBVkZ1bmN0aW9u
QmFyU2NydWJiZXIgKm1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25zdDsKKyAgICBXS0FW
VG91Y2hCYXJTY3J1YmJlciAqbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpIGNvbnN0OwogICAg
IE5TVG91Y2hCYXIgKnRleHRUb3VjaEJhcigpIGNvbnN0OwogICAgIHZvaWQgZGlzbWlzc1RleHRU
b3VjaEJhclBvcG92ZXJJdGVtV2l0aElkZW50aWZpZXIoTlNTdHJpbmcgKik7CiAKQEAgLTU1NCw4
ICs1NTMsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0N1c3RvbVRvdWNoQmFySXRlbT4g
bV9leGl0RnVsbFNjcmVlbkJ1dHRvbjsKIAogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJP
TFNfTUFOQUdFUikKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlcj4gbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXI7Ci0gICAgUmV0YWluUHRyPEFWRnVuY3Rp
b25CYXJTY3J1YmJlcj4gbV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworICAgIFJldGFpblB0
cjxXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI+IG1fbWVkaWFUb3VjaEJhclBy
b3ZpZGVyOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJTY3J1YmJlcj4gbV9tZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3OwogI2VuZGlmIC8vIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNf
TUFOQUdFUikKICNlbmRpZiAvLyBIQVZFKFRPVUNIX0JBUikKIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjE1MTg0KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw3ICs2Nyw2IEBACiAjaW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCIKICNpbXBv
cnQgPEhJVG9vbGJveC9DYXJib25FdmVudHNDb3JlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0FWS2l0
U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQWN0aXZpdHlTdGF0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgpAQCAtMTAy
LDggKzEwMSwxMyBAQAogCiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJB
Q0tfQ09OVFJPTFNfTUFOQUdFUikKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCisjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK1NPRlRfTElOS19DTEFTUyhB
VktpdCwgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKK1NPRlRfTElOS19DTEFT
UyhBVktpdCwgQVZUb3VjaEJhclNjcnViYmVyKQorI2Vsc2UKIFNPRlRfTElOS19DTEFTUyhBVktp
dCwgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKIFNPRlRfTElOS19DTEFT
UyhBVktpdCwgQVZGdW5jdGlvbkJhclNjcnViYmVyKQorI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdL
TWVkaWFFeGl0RnVsbFNjcmVlbkl0ZW0gPSBAIldLTWVkaWFFeGl0RnVsbFNjcmVlbkl0ZW0iOwog
I2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xT
X01BTkFHRVIpCkBAIC05MDIsNyArOTA2LDcgQEAgTlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVt
ICpXZWJWaWV3SW1wbAogICAgIHJldHVybiBpc1JpY2hseUVkaXRhYmxlKCkgPyBtX3JpY2hUZXh0
Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbS5nZXQoKSA6IG1fcGxhaW5UZXh0Q2FuZGlkYXRlTGlz
dFRvdWNoQmFySXRlbS5nZXQoKTsKIH0KIAotQVZGdW5jdGlvbkJhclNjcnViYmVyICpXZWJWaWV3
SW1wbDo6bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpIGNvbnN0CitXS0FWVG91Y2hCYXJTY3J1
YmJlciAqV2ViVmlld0ltcGw6Om1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25zdAogewog
I2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBpZiAobV9wYWdl
LT5oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcigpKQpAQCAtMTEyNSwxMSArMTEyOSwy
MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVUZXh0VG91Y2hCYXIoKQogdm9pZCBXZWJWaWV3
SW1wbDo6dXBkYXRlTWVkaWFUb3VjaEJhcigpCiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19D
T05UUk9MU19NQU5BR0VSKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAg
aWYgKCFtX21lZGlhVG91Y2hCYXJQcm92aWRlcikKKyAgICBpZiAoIW1fbWVkaWFUb3VjaEJhclBy
b3ZpZGVyKSB7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
KyAgICAgICAgbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIgPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hC
YXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXJJbnN0YW5jZSgpIGluaXRdKTsKKyNlbHNlCiAgICAg
ICAgIG1fbWVkaWFUb3VjaEJhclByb3ZpZGVyID0gYWRvcHROUyhbYWxsb2NBVkZ1bmN0aW9uQmFy
UGxheWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFuY2UoKSBpbml0XSk7CisjZW5kaWYgLy8gX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICB9CiAKLSAgICBpZiAo
IW1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldykKKyAgICBpZiAoIW1fbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldykgeworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MzAwCisgICAgICAgIG1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyA9IGFkb3B0TlMoW2FsbG9j
QVZUb3VjaEJhclNjcnViYmVySW5zdGFuY2UoKSBpbml0XSk7CisjZWxzZQogICAgICAgICBtX21l
ZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgPSBhZG9wdE5TKFthbGxvY0FWRnVuY3Rpb25CYXJTY3J1
YmJlckluc3RhbmNlKCkgaW5pdF0pOworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwCisgICAgfQogCiAgICAgaWYgKCFtX3BsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKQogICAgICAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyID0gYWRvcHROUyhbW1dl
YlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGFsbG9jXSBpbml0XSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMTUyMDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wNC0xMCAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJvbSBB
VkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0K
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBwbHkg
dG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAorICAg
ICAgICB3aGVyZXZlciBwb3NzaWJsZS4gU086CisKKyAgICAgICAgQVZGdW5jdGlvbkJhclNjcnVi
YmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIsIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJT
Y3J1YmJlcgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIg
aXMgbm93IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIsIAorICAgICAgICB3aXRo
IHR5cGVkZWYgV0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyCisKKyAgICAgICAg
QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24sIHdpdGggCisgICAgICAgIHR5cGVkZWYgV0tBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFWRnVuY3Rpb25CYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBBVlRvdWNoQmFyUGxh
eWJhY2tDb250cm9sc0NvbnRyb2xsaW5nLCB3aXRoIHRoZSAjZGVmaW5lIAorICAgICAgICBXS0FW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKworICAgICAgICBTb2Z0IGxp
bmtzIGFuZCBhbGxvY2F0aW9ucyBjYW5ub3QgdXNlIHRoZSB0eXBlZGVmcy4KKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgdXBkYXRlTWVkaWFUb3VjaEJh
cl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKwogMjAxNy0wNC0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgVGltZXI6OnN0YXJ0
T25lU2hvdCgpIG92ZXJsb2FkIHRha2luZyBhIGRvdWJsZQpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsOCArMzM2LDEzIEBAIFNP
RlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0VuZEltYWdlQ29udGUKIAogI2lmIEhBVkUoVE9VQ0hf
QkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiBTT0ZUX0xJTktf
RlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMzAwCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xz
UHJvdmlkZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWVG91Y2hCYXJTY3J1YmJlcikKKyNl
bHNlCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xz
UHJvdmlkZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWRnVuY3Rpb25CYXJTY3J1YmJlcikK
KyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogI2Vu
ZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01B
TkFHRVIpCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC05NzkwLDE0ICs5Nzk1LDE5IEBAIC0gKHZv
aWQpdXBkYXRlVGV4dFRvdWNoQmFyCiAtICh2b2lkKXVwZGF0ZU1lZGlhVG91Y2hCYXIKIHsKICNp
ZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkKLSAgICBpZiAoIV9wcml2YXRlLT5tZWRpYVRvdWNoQmFyUHJvdmlk
ZXIpCisgICAgaWYgKCFfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyKSB7CisjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICAgICAgX3ByaXZhdGUt
Pm1lZGlhVG91Y2hCYXJQcm92aWRlciA9IGFkb3B0TlMoW2FsbG9jQVZUb3VjaEJhclBsYXliYWNr
Q29udHJvbHNQcm92aWRlckluc3RhbmNlKCkgaW5pdF0pOworI2Vsc2UKICAgICAgICAgX3ByaXZh
dGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlciA9IGFkb3B0TlMoW2FsbG9jQVZGdW5jdGlvbkJhclBs
YXliYWNrQ29udHJvbHNQcm92aWRlckluc3RhbmNlKCkgaW5pdF0pOworI2VuZGlmIC8vIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisgICAgfQogCiAgICAgaWYgKCFb
X3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlciBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxl
cl0pIHsKICAgICAgICAgQVNTRVJUKF9wcml2YXRlLT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
OwogICAgICAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciAqbWFuYWdlciA9IF9wcml2YXRl
LT5wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0g
ICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyIHNldFBsYXliYWNrQ29udHJv
bHNDb250cm9sbGVyOihpZCA8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGlu
Zz4pbWFuYWdlcl07Ci0gICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dyBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjooaWQgPEFWRnVuY3Rpb25CYXJQbGF5YmFj
a0NvbnRyb2xzQ29udHJvbGxpbmc+KW1hbmFnZXJdOworICAgICAgICBbX3ByaXZhdGUtPm1lZGlh
VG91Y2hCYXJQcm92aWRlciBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjooaWQgPFdLQVZU
b3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4pbWFuYWdlcl07CisgICAgICAgIFtf
cHJpdmF0ZS0+bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBzZXRQbGF5YmFja0NvbnRyb2xzQ29u
dHJvbGxlcjooaWQgPFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4pbWFu
YWdlcl07CiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lt
cG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRGVsZWdhdGVJbXBsZW1lbnRh
dGlvbkNhY2hpbmcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1
c2hTY2hlZHVsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVu
dC5oPgpAQCAtMTA2LDggKzEwNyw2IEBAIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyOwogCiAjaWYgSEFWRShUT1VDSF9CQVIpCiBAY2xhc3MgV2ViVGV4dFRvdWNoQmFySXRlbUNv
bnRyb2xsZXI7Ci1AY2xhc3MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsK
LUBjbGFzcyBBVkZ1bmN0aW9uQmFyU2NydWJiZXI7CiAjZW5kaWYKIAogY2xhc3MgV2ViVmlld0xh
eWVyRmx1c2hTY2hlZHVsZXIgOiBwdWJsaWMgV2ViQ29yZTo6TGF5ZXJGbHVzaFNjaGVkdWxlciB7
CkBAIC0xOTIsOCArMTkxLDggQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0
IHsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtPiBfcmljaFRleHRD
YW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtOwogICAgIFJldGFpblB0cjxOU0NhbmRpZGF0ZUxpc3RU
b3VjaEJhckl0ZW0+IF9wbGFpblRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtOwogICAgIFJl
dGFpblB0cjxOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IF9wYXNzd29yZFRleHRDYW5kaWRh
dGVMaXN0VG91Y2hCYXJJdGVtOwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyUGxheWJhY2tD
b250cm9sc1Byb3ZpZGVyPiBtZWRpYVRvdWNoQmFyUHJvdmlkZXI7Ci0gICAgUmV0YWluUHRyPEFW
RnVuY3Rpb25CYXJTY3J1YmJlcj4gbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKyAgICBSZXRh
aW5QdHI8V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyPiBtZWRpYVRvdWNoQmFy
UHJvdmlkZXI7CisgICAgUmV0YWluUHRyPFdLQVZUb3VjaEJhclNjcnViYmVyPiBtZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3OwogCiAgICAgQk9PTCBfY2FuQ3JlYXRlVG91Y2hCYXJzOwogICAgIEJP
T0wgX2lzVXBkYXRpbmdUZXh0VG91Y2hCYXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306867</attachid>
            <date>2017-04-11 15:35:21 -0700</date>
            <delta_ts>2017-04-11 21:37:12 -0700</delta_ts>
            <desc>Another bots patch</desc>
            <filename>for-review-6.txt</filename>
            <type>text/plain</type>
            <size>27993</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA0LTEwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVktpdCBuYW1lIGNoYW5n
ZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIqCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIzMDAxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSBuZXcgbmFtZXMgb25s
eSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0aGlzIHBhdGNoIHVzZXMgdHlwZWRl
ZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxlLiBTTzoKKworICAgICAgICBBVkZ1bmN0aW9u
QmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJlciwgd2l0aCB0eXBlZGVmIFdLQVZU
b3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciwgCisgICAg
ICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIKKwor
ICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gaXMgbm93IEFWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAKKyAgICAgICAgdHlwZWRlZiBXS0FWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFuZCB0aGUgcHJvdG9jb2wgQVZGdW5j
dGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBpcyBub3cgCisgICAgICAgIEFWVG91
Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcsIHdpdGggdGhlICNkZWZpbmUgCisgICAg
ICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZworCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEF1ZGlv
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6XSk6CisgICAgICAgICgtW1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyIGN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25dKToKKyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0Q3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIgbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczpdKToKKyAgICAgICAgKC1bV2ViUGxh
eWJhY2tDb250cm9sc01hbmFnZXIgY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldEN1
cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpdKToKKyAgICAgICAg
KG1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisKKyAgICAgICAgSGVyZSBpcyB3aGVyZSB0aGUgdHlw
ZWRlZnMgYW5kICNkZWZpbmUgYXJlIGRlY2xhcmVkLgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9BVktpdFNQSS5oOgorCiAyMDE3LTA0LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcmFwIGxlZ2FjeSBNZWRpYVN0cmVhbSBBUEkgaW4gcnVudGlt
ZSBmbGFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDE3ICszOSwxNyBAQCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCiBX
RUJDT1JFX0VYUE9SVAotQGludGVyZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5T
T2JqZWN0IDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiB7CitAaW50
ZXJmYWNlIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIDogTlNPYmplY3QgPFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4gewogICAgIE5TVGltZUludGVydmFsIF9jb250
ZW50RHVyYXRpb247CiAgICAgUmV0YWluUHRyPEFWVmFsdWVUaW1pbmc+IF90aW1pbmc7CiAgICAg
TlNUaW1lSW50ZXJ2YWwgX3NlZWtUb1RpbWU7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zZWVr
YWJsZVRpbWVSYW5nZXM7CiAgICAgQk9PTCBfaGFzRW5hYmxlZEF1ZGlvOwogICAgIEJPT0wgX2hh
c0VuYWJsZWRWaWRlbzsKLSAgICBSZXRhaW5QdHI8TlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKj4+IF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJy
ZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFJldGFpblB0cjxO
U0FycmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPj4gX2xlZ2libGVGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0FycmF5PFdLQVZUb3VjaEJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICo+PiBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsK
KyAgICBSZXRhaW5QdHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50
QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOworICAgIFJldGFpblB0cjxOU0Fy
cmF5PFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZUZ1bmN0aW9u
QmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zOworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gX2N1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjsKICAgICBmbG9hdCBfcmF0ZTsKICAgICBCT09MIF9jYW5Ub2dnbGVQbGF5YmFjazsK
IApAQCAtNjksMTAgKzY5LDEwIEBAIEBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgOiAKIAogQHByb3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7CiAKLS0gKEFWRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb247Ci0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlv
bjsKLS0gKEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxl
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKLS0gKHZvaWQpc2V0Q3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVkZ1bmN0aW9uQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKilvcHRpb247CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CistICh2b2lk
KXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KFdLQVZUb3Vj
aEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uOworLSAoV0tBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb247CistICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb247CiAtICh2
b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7
CiAtICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0
ZWRJbmRleDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0JKHJldmlzaW9uIDIxNTE4NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTEgQEAKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdudWxsYWJp
bGl0eS1jb21wbGV0ZW5lc3MiCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQorI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCitTT0ZUX0xJTktfQ0xBU1NfT1BU
SU9OQUwoQVZLaXQsIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbikKKyNlbHNlCiBTT0ZU
X0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbikKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMw
MAogCiBAaW1wbGVtZW50YXRpb24gV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIKIApAQCAtMTIx
LDIyICsxMjUsMjIgQEAgLSAodm9pZCllbmRGdW5jdGlvbkJhclNjcnViYmluZwogICAgIF93ZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPmVuZFNjcnViYmluZygpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWF1ZGlvRnVuY3Rpb25C
YXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMKKy0gKE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gKj4gKilhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zCiB7
CiAgICAgcmV0dXJuIF9hdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgp
OwogfQogCi0tICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6
KE5TQXJyYXk8QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopYXVkaW9PcHRp
b25zCistICh2b2lkKXNldEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5T
QXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMK
IHsKICAgICBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvT3B0
aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorLSAoV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uCiB7CiAgICAgcmV0dXJuIF9jdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAq
KWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb24KKy0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooV0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uCiB7CiAgICAgaWYgKGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb24gPT0gX2N1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTE1MSwyMiArMTU1LDIyIEBAIC0gKHZvaWQpc2V0Q3Vy
cmVudEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVMKICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9u
KGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwogfQogCi0tIChOU0Fy
cmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucworLSAoTlNBcnJheTxXS0FWVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
cwogewogICAgIHJldHVybiBfbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25z
LmdldCgpOwogfQogCi0tICh2b2lkKXNldExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uczooTlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucworLSAodm9pZClzZXRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbnM6KE5TQXJyYXk8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKils
ZWdpYmxlT3B0aW9ucwogewogICAgIF9sZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbnMgPSBsZWdpYmxlT3B0aW9uczsKIH0KIAotLSAoQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uICopY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
CistIChXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgogewogICAgIHJldHVybiBfY3VycmVudExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpOwogfQogCi0tICh2b2lkKXNl
dEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uCist
ICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjoo
V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb24KIHsKICAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uID09IF9jdXJyZW50
TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTE4NSw3ICsxODksMTEgQEAgc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVk
aWFTZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUo
KV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKLSAgICAgICAgaWYgKFJldGFp
blB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0
TlMoW2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0
V2l0aFRpdGxlOm5hbWVdKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorICAgICAgICBpZiAoUmV0YWluUHRyPFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpuYW1lIHR5cGU6QVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uVHlwZVJlZ3VsYXJdKSkKKyNlbHNlCisgICAgICAgIGlmIChSZXRhaW5Q
dHI8V0tBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0TlMo
W2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0
aFRpdGxlOm5hbWVdKSkKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTMwMAogICAgICAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5n
ZXQoKV07CiAgICAgfQogICAgIHJldHVybiB3ZWJPcHRpb25zOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgJKHJldmlzaW9uIDIxNTE4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTMsMTQgKzE1MywzOSBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogCisj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK09CSkNfQ0xBU1Mg
QVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK09CSkNfQ0xBU1MgQVZUb3VjaEJh
clNjcnViYmVyOworT0JKQ19DTEFTUyBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisK
K3R5cGVkZWYgQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uOwordHlwZWRlZiBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3Zp
ZGVyIFdLQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZUb3Vj
aEJhclNjcnViYmVyIFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250
cm9sbGluZworI2Vsc2UKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQ
cm92aWRlcjsKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJhclNjcnViYmVyOworT0JKQ19DTEFTUyBB
VkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CisKK3R5cGVkZWYgQVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uIFdLQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwor
dHlwZWRlZiBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIFdLQVZUb3VjaEJh
clBsYXliYWNrQ29udHJvbHNQcm92aWRlcjsKK3R5cGVkZWYgQVZGdW5jdGlvbkJhclNjcnViYmVy
IFdLQVZUb3VjaEJhclNjcnViYmVyOworI2RlZmluZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxpbmcgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZwor
I2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCisKICNp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMzAwCisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVyLmg+CisjaW1wb3J0IDxBVktpdC9BVlRvdWNoQmFyU2NydWJiZXIuaD4KKyNlbHNl
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyLmg+
CiAjaW1wb3J0IDxBVktpdC9BVkZ1bmN0aW9uQmFyU2NydWJiZXIuaD4KKyNlbmRpZiAvLyBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogI2Vsc2UKIAogTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIAotQHByb3RvY29sIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxpbmcgPE5TT2JqZWN0PgorQHByb3RvY29sIFdLQVZUb3VjaEJhclBsYXliYWNrQ29u
dHJvbHNDb250cm9sbGluZyA8TlNPYmplY3Q+CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJ
bnRlcnZhbCBjb250ZW50RHVyYXRpb247CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBudWxsYWJsZSkg
QVZWYWx1ZVRpbWluZyAqdGltaW5nOwogQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzU2Vl
a2luZykgQk9PTCBzZWVraW5nOwpAQCAtMTcwLDE2ICsxOTUsMTUgQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzRW5hYmxlZFZpZGVvOwogQGVu
ZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgOiBO
U1Jlc3BvbmRlcgorQGludGVyZmFjZSBXS0FWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgOiBOU1Jlc3BvbmRlcgogQHByb3BlcnR5IChzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkg
TlNUb3VjaEJhciAqdG91Y2hCYXI7Ci1AcHJvcGVydHkgKGFzc2lnbiwgbnVsbGFibGUpIGlkPEFW
RnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyOworQHByb3BlcnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOwog
QGVuZAogCi1AaW50ZXJmYWNlIEFWRnVuY3Rpb25CYXJTY3J1YmJlciA6IE5TVmlldwotQHByb3Bl
cnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0Nv
bnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjsKK0BpbnRlcmZhY2UgV0tBVlRv
dWNoQmFyU2NydWJiZXIgOiBOU1ZpZXcKK0Bwcm9wZXJ0eSAoYXNzaWduLCBudWxsYWJsZSkgaWQ8
V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xz
Q29udHJvbGxlcjsKIEBlbmQKIAotQGNsYXNzIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbjsKIEBjbGFzcyBBVlRodW1ibmFpbDsKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNy0wNC0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJv
bSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBw
bHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAor
ICAgICAgICB3aGVyZXZlciBwb3NzaWJsZS4gU086CisKKyAgICAgICAgQVZGdW5jdGlvbkJhclNj
cnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIsIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hC
YXJTY3J1YmJlcgorCisgICAgICAgIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXIgaXMgbm93IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIsIAorICAgICAgICB3
aXRoIHR5cGVkZWYgV0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyCisKKyAgICAg
ICAgQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24sIHdpdGggCisgICAgICAgIHR5cGVkZWYgV0tBVlRvdWNoQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFWRnVuY3Rpb25C
YXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBBVlRvdWNoQmFy
UGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nLCB3aXRoIHRoZSAjZGVmaW5lIAorICAgICAgICBX
S0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKworICAgICAgICBTUEkg
aGVhZGVycyBjYW5ub3QgdXNlIHRoZSB0eXBlZGVmcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKworICAgICAgICBVc2UgdGhlIHR5cGVkZWZzIGVsc2V3
aGVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlld10pOgorICAgICAgICAoLVtXS1ZpZXcgX2FkZE1lZGlhUGxheWJhY2tDb250cm9s
c1ZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisKKyAg
ICAgICAgU29mdCBsaW5rcyBhbmQgYWxsb2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMu
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNoQmFyKToKKwogMjAxNy0wNC0xMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVttYWNP
U10gQmxvY2sgYWNjZXNzIHRvIEFwcGxlIEV2ZW50cyBiZWZvcmUgbGF1bmNoLgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSwxMSBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJT
dHlsZS5oPgogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
K0BjbGFzcyBBVlRvdWNoQmFyU2NydWJiZXI7CisjZWxzZQogQGNsYXNzIEFWRnVuY3Rpb25CYXJT
Y3J1YmJlcjsKKyNlbmRpZgogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKIApAQCAtMTM1
LDggKzEzOSwxMyBAQAogLSAodm9pZClfZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZTooTlNFdmVudCAqKWV2ZW50OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBz
ZXR0ZXI9X3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTMwMAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBBVlRvdWNoQmFy
U2NydWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworLSAodm9pZClfYWRkTWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnViYmVyICopbWVkaWFQbGF5YmFja0Nv
bnRyb2xzVmlldzsKKyNlbHNlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWRnVu
Y3Rpb25CYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAtICh2b2lkKV9h
ZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3OworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMzAwCiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3OwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMDUsNyAr
NTAwNSw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmkKICNlbmRp
ZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldworLSAoaWQpX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcKIHsKICNpZiBIQVZFKFRPVUNI
X0JBUikKICAgICByZXR1cm4gX2ltcGwtPmNsaWVudFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldygpID8gX2ltcGwtPm1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSA6IG5pbDsKQEAgLTUw
MTUsNyArNTAxNSw3IEBAIC0gKEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqKV9tZWRpYVBsYXliYWMK
IH0KIAogLy8gVGhpcyBtZXRob2QgaXMgZm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCi0tICh2
b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIg
KiltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CistICh2b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29u
dHJvbHNWaWV3OihpZCltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNiBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBCiAKICNlbmRpZgogCi1A
Y2xhc3MgQVZGdW5jdGlvbkJhclNjcnViYmVyOwogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7CkBA
IC0yMjMsOCArMjIyLDggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRl
QQogCiAvLyBGSVhNRTogVGhpcyBTUEkgc2hvdWxkIGJlY29tZSBhIHBhcnQgb2YgdGhlIFdLVUlE
ZWxlZ2F0ZS4gcmRhcjovL3Byb2JsZW0vMjY1NjE1MzcKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkd3JpdGUsIHNldHRlcj1fc2V0V2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OikgQk9P
TCBfd2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQVZGdW5jdGlv
bkJhclNjcnViYmVyICpfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSk7Ci0tICh2b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29udHJvbHNW
aWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgaWQgX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSkpOworLSAodm9pZClfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldzooaWQpbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSk7CiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIAogLSAodm9pZClfcHJlcGFy
ZUZvck1vdmVUb1dpbmRvdzooTlNXaW5kb3cgKil0YXJnZXRXaW5kb3cgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXZWJW
aWV3SW1wbC5oIgogI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTU3Miw3ICsxNTczLDcgQEAgLSAodm9pZClfc2V0
V2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaQogI2VuZGlmCiB9CiAKLS0gKEFWRnVuY3Rpb25C
YXJTY3J1YmJlciAqKV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CistIChpZClfbWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldwogewogI2lmIEhBVkUoVE9VQ0hfQkFSKQogICAgIHJldHVybiBfZGF0
YS0+X2ltcGwtPmNsaWVudFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpID8gX2RhdGEt
Pl9pbXBsLT5tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgOiBuaWw7CkBAIC0xNTgyLDcgKzE1
ODMsNyBAQCAtIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5YmFjCiB9CiAKIC8v
IFRoaXMgbWV0aG9kIGlzIGZvciBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlLgotLSAodm9pZClfYWRk
TWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzooQVZGdW5jdGlvbkJhclNjcnViYmVyICopbWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldworLSAodm9pZClfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dzooaWQpbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldwogewogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjE1MTg0KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXS0xheW91dE1vZGUuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FWS2l0U1BJLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
SW5kaWNhdG9yV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KQEAgLTU1LDggKzU2LDYgQEAgT0JK
Q19DTEFTUyBXS1dpbmRvd1Zpc2liaWxpdHlPYnNlcnZlcjsKIE9CSkNfQ0xBU1MgX1dLVGh1bWJu
YWlsVmlldzsKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKQotT0JKQ19DTEFTUyBBVkZ1bmN0aW9uQmFy
UGxheWJhY2tDb250cm9sc1Byb3ZpZGVyOwotT0JKQ19DTEFTUyBBVkZ1bmN0aW9uQmFyU2NydWJi
ZXI7CiBPQkpDX0NMQVNTIE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1Mg
TlNDdXN0b21Ub3VjaEJhckl0ZW07CiBPQkpDX0NMQVNTIE5TVG91Y2hCYXI7CkBAIC01MTYsNyAr
NTE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVG91Y2hCYXIoKTsKICAgICBOU1RvdWNo
QmFyICpjdXJyZW50VG91Y2hCYXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUb3VjaEJhci5n
ZXQoKTsgfQogICAgIE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbSAqY2FuZGlkYXRlTGlzdFRv
dWNoQmFySXRlbSgpIGNvbnN0OwotICAgIEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqbWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldygpIGNvbnN0OworICAgIFdLQVZUb3VjaEJhclNjcnViYmVyICptZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3KCkgY29uc3Q7CiAgICAgTlNUb3VjaEJhciAqdGV4dFRvdWNo
QmFyKCkgY29uc3Q7CiAgICAgdm9pZCBkaXNtaXNzVGV4dFRvdWNoQmFyUG9wb3Zlckl0ZW1XaXRo
SWRlbnRpZmllcihOU1N0cmluZyAqKTsKIApAQCAtNTU0LDggKzU1Myw4IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPE5TQ3VzdG9tVG91Y2hCYXJJdGVtPiBtX2V4aXRGdWxsU2NyZWVuQnV0dG9u
OwogCiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQotICAgIFJldGFp
blB0cjxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyPiBtX21lZGlhVG91Y2hC
YXJQcm92aWRlcjsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclNjcnViYmVyPiBtX21lZGlh
UGxheWJhY2tDb250cm9sc1ZpZXc7CisgICAgUmV0YWluUHRyPFdLQVZUb3VjaEJhclBsYXliYWNr
Q29udHJvbHNQcm92aWRlcj4gbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXI7CisgICAgUmV0YWluUHRy
PFdLQVZUb3VjaEJhclNjcnViYmVyPiBtX21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAjZW5k
aWYgLy8gRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogI2VuZGlmIC8vIEhB
VkUoVE9VQ0hfQkFSKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDYg
QEAKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8SElUb29sYm94L0NhcmJvbkV2
ZW50c0NvcmUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CkBAIC0xMDIsOCArMTAxLDEzIEBACiAKICNpZiBI
QVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQog
U09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMAorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyUGxheWJh
Y2tDb250cm9sc1Byb3ZpZGVyKQorU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyU2Ny
dWJiZXIpCisjZWxzZQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyUGxheWJh
Y2tDb250cm9sc1Byb3ZpZGVyKQogU09GVF9MSU5LX0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFy
U2NydWJiZXIpCisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDAKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV0tNZWRpYUV4aXRGdWxsU2NyZWVuSXRl
bSA9IEAiV0tNZWRpYUV4aXRGdWxsU2NyZWVuSXRlbSI7CiAjZW5kaWYgLy8gSEFWRShUT1VDSF9C
QVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKQEAgLTkwMiw3ICs5
MDYsNyBAQCBOU0NhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0gKldlYlZpZXdJbXBsCiAgICAgcmV0
dXJuIGlzUmljaGx5RWRpdGFibGUoKSA/IG1fcmljaFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJ
dGVtLmdldCgpIDogbV9wbGFpblRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtLmdldCgpOwog
fQogCi1BVkZ1bmN0aW9uQmFyU2NydWJiZXIgKldlYlZpZXdJbXBsOjptZWRpYVBsYXliYWNrQ29u
dHJvbHNWaWV3KCkgY29uc3QKK1dLQVZUb3VjaEJhclNjcnViYmVyICpXZWJWaWV3SW1wbDo6bWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldygpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFD
S19DT05UUk9MU19NQU5BR0VSKQogICAgIGlmIChtX3BhZ2UtPmhhc0FjdGl2ZVZpZGVvRm9yQ29u
dHJvbHNNYW5hZ2VyKCkpCkBAIC0xMTI1LDExICsxMTI5LDIxIEBAIHZvaWQgV2ViVmlld0ltcGw6
OnVwZGF0ZVRleHRUb3VjaEJhcigpCiB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVNZWRpYVRvdWNo
QmFyKCkKIHsKICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBpZiAoIW1fbWVkaWFUb3VjaEJhclBy
b3ZpZGVyKQorICAgIGlmICghbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIpIHsKKyNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorICAgICAgICBtX21lZGlhVG91Y2hC
YXJQcm92aWRlciA9IGFkb3B0TlMoW2FsbG9jQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92
aWRlckluc3RhbmNlKCkgaW5pdF0pOworI2Vsc2UKICAgICAgICAgbV9tZWRpYVRvdWNoQmFyUHJv
dmlkZXIgPSBhZG9wdE5TKFthbGxvY0FWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlk
ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMAorICAgIH0KIAotICAgIGlmICghbV9tZWRpYVBsYXliYWNrQ29udHJv
bHNWaWV3KQorICAgIGlmICghbV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KSB7CisjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICAgICAgbV9tZWRpYVBs
YXliYWNrQ29udHJvbHNWaWV3ID0gYWRvcHROUyhbYWxsb2NBVlRvdWNoQmFyU2NydWJiZXJJbnN0
YW5jZSgpIGluaXRdKTsKKyNlbHNlCiAgICAgICAgIG1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmll
dyA9IGFkb3B0TlMoW2FsbG9jQVZGdW5jdGlvbkJhclNjcnViYmVySW5zdGFuY2UoKSBpbml0XSk7
CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAg
ICB9CiAKICAgICBpZiAoIW1fcGxheWJhY2tDb250cm9sc01hbmFnZXIpCiAgICAgICAgIG1fcGxh
eWJhY2tDb250cm9sc01hbmFnZXIgPSBhZG9wdE5TKFtbV2ViUGxheWJhY2tDb250cm9sc01hbmFn
ZXIgYWxsb2NdIGluaXRdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTIwMCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDMyIEBACisyMDE3LTA0LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZG9wdCBBVktpdCBuYW1lIGNoYW5nZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91
Y2hCYXIqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzA2OTMKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxl
bS8zMTIzMDAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNpbmNlIHRoZSBuZXcgbmFtZXMgb25seSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1h
Y09TLCB0aGlzIHBhdGNoIHVzZXMgdHlwZWRlZnMgCisgICAgICAgIHdoZXJldmVyIHBvc3NpYmxl
LiBTTzoKKworICAgICAgICBBVkZ1bmN0aW9uQmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJT
Y3J1YmJlciwgd2l0aCB0eXBlZGVmIFdLQVZUb3VjaEJhclNjcnViYmVyCisKKyAgICAgICAgQVZG
dW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciBpcyBub3cgQVZUb3VjaEJhclBsYXli
YWNrQ29udHJvbHNQcm92aWRlciwgCisgICAgICAgIHdpdGggdHlwZWRlZiBXS0FWVG91Y2hCYXJQ
bGF5YmFja0NvbnRyb2xzUHJvdmlkZXIKKworICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb24gaXMgbm93IEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiwgd2l0aCAK
KyAgICAgICAgdHlwZWRlZiBXS0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAg
ICAgIEFuZCB0aGUgcHJvdG9jb2wgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9s
bGluZyBpcyBub3cgCisgICAgICAgIEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxp
bmcsIHdpdGggdGhlICNkZWZpbmUgCisgICAgICAgIFdLQVZGdW5jdGlvbkJhclBsYXliYWNrQ29u
dHJvbHNDb250cm9sbGluZworCisgICAgICAgIFNvZnQgbGlua3MgYW5kIGFsbG9jYXRpb25zIGNh
bm5vdCB1c2UgdGhlIHR5cGVkZWZzLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyB1cGRhdGVNZWRpYVRvdWNoQmFyXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3RGF0YS5oOgorCiAyMDE3LTA0LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRHJvcCBUaW1lcjo6c3RhcnRPbmVTaG90KCkgb3ZlcmxvYWQgdGFr
aW5nIGEgZG91YmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZp
c2lvbiAyMTUxODQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMzNiw4ICszMzYsMTMgQEAgU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBo
aWNzRW5kSW1hZ2VDb250ZQogCiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExB
WUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIFNPRlRfTElOS19GUkFNRVdPUksoQVZLaXQpCisjaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK1NPRlRfTElOS19DTEFT
UyhBVktpdCwgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKK1NPRlRfTElOS19D
TEFTUyhBVktpdCwgQVZUb3VjaEJhclNjcnViYmVyKQorI2Vsc2UKIFNPRlRfTElOS19DTEFTUyhB
VktpdCwgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlcikKIFNPRlRfTElOS19D
TEFTUyhBVktpdCwgQVZGdW5jdGlvbkJhclNjcnViYmVyKQorI2VuZGlmIC8vIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIp
ICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIAogI2lmIFBMQVRGT1JN
KE1BQykKQEAgLTk3OTAsMTQgKzk3OTUsMTkgQEAgLSAodm9pZCl1cGRhdGVUZXh0VG91Y2hCYXIK
IC0gKHZvaWQpdXBkYXRlTWVkaWFUb3VjaEJhcgogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tf
Q09OVFJPTFNfTUFOQUdFUikgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAg
IGlmICghX3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlcikKKyAgICBpZiAoIV9wcml2YXRl
LT5tZWRpYVRvdWNoQmFyUHJvdmlkZXIpIHsKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMAorICAgICAgICBfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVy
ID0gYWRvcHROUyhbYWxsb2NBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFu
Y2UoKSBpbml0XSk7CisjZWxzZQogICAgICAgICBfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3Zp
ZGVyID0gYWRvcHROUyhbYWxsb2NBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVy
SW5zdGFuY2UoKSBpbml0XSk7CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEzMDAKKyAgICB9CiAKICAgICBpZiAoIVtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJh
clByb3ZpZGVyIHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyXSkgewogICAgICAgICBBU1NFUlQo
X3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSk7CiAgICAgICAgIFdlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyICptYW5hZ2VyID0gX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZS0+cGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLSAgICAgICAgW19wcml2YXRlLT5tZWRp
YVRvdWNoQmFyUHJvdmlkZXIgc2V0UGxheWJhY2tDb250cm9sc0NvbnRyb2xsZXI6KGlkIDxBVkZ1
bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiltYW5hZ2VyXTsKLSAgICAgICAg
W19wcml2YXRlLT5tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHNldFBsYXliYWNrQ29udHJvbHND
b250cm9sbGVyOihpZCA8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4p
bWFuYWdlcl07CisgICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyIHNldFBs
YXliYWNrQ29udHJvbHNDb250cm9sbGVyOihpZCA8V0tBVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c0NvbnRyb2xsaW5nPiltYW5hZ2VyXTsKKyAgICAgICAgW19wcml2YXRlLT5tZWRpYVBsYXliYWNr
Q29udHJvbHNWaWV3IHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOihpZCA8V0tBVlRvdWNo
QmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiltYW5hZ2VyXTsKICAgICB9CiAjZW5kaWYK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHJldmlzaW9u
IDIxNTE4NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgorI2ltcG9y
dCA8V2ViQ29yZS9BVktpdFNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRD
bGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg+CkBAIC0xMDYsOCArMTA3LDYg
QEAgY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKICNpZiBIQVZFKFRPVUNI
X0JBUikKIEBjbGFzcyBXZWJUZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlcjsKLUBjbGFzcyBBVkZ1
bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyOwotQGNsYXNzIEFWRnVuY3Rpb25CYXJT
Y3J1YmJlcjsKICNlbmRpZgogCiBjbGFzcyBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlciA6IHB1
YmxpYyBXZWJDb3JlOjpMYXllckZsdXNoU2NoZWR1bGVyIHsKQEAgLTE5Miw4ICsxOTEsOCBAQCBA
aW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3QgewogICAgIFJldGFpblB0cjxOU0Nh
bmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW0+IF9yaWNoVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0
ZW07CiAgICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbT4gX3BsYWluVGV4
dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07CiAgICAgUmV0YWluUHRyPE5TQ2FuZGlkYXRlTGlz
dFRvdWNoQmFySXRlbT4gX3Bhc3N3b3JkVGV4dENhbmRpZGF0ZUxpc3RUb3VjaEJhckl0ZW07Ci0g
ICAgUmV0YWluUHRyPEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI+IG1lZGlh
VG91Y2hCYXJQcm92aWRlcjsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclNjcnViYmVyPiBt
ZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworICAgIFJldGFpblB0cjxXS0FWVG91Y2hCYXJQbGF5
YmFja0NvbnRyb2xzUHJvdmlkZXI+IG1lZGlhVG91Y2hCYXJQcm92aWRlcjsKKyAgICBSZXRhaW5Q
dHI8V0tBVlRvdWNoQmFyU2NydWJiZXI+IG1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAKICAg
ICBCT09MIF9jYW5DcmVhdGVUb3VjaEJhcnM7CiAgICAgQk9PTCBfaXNVcGRhdGluZ1RleHRUb3Vj
aEJhcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306887</attachid>
            <date>2017-04-11 21:37:12 -0700</date>
            <delta_ts>2017-04-12 06:00:32 -0700</delta_ts>
            <desc>Patch to only typedef old OS&apos;s</desc>
            <filename>for-review-7.txt</filename>
            <type>text/plain</type>
            <size>26746</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTA0LTExICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBBVktpdCBuYW1lIGNoYW5n
ZSBmcm9tIEFWRnVuY3Rpb25CYXIqIHRvIEFWVG91Y2hCYXIqCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTMKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICByZGFyOi8vcHJvYmxlbS8zMTIzMDAxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoZSBuZXcgbmFtZXMgb25s
eSBhcHBseSB0byBzb21lIHZlcnNpb25zIG9mIG1hY09TLCB0aGlzIHBhdGNoIHVzZXMgdHlwZWRl
ZnMgCisgICAgICAgIGZvciB0aGUgb2xkZXIgT1PigJlzLiBTTzoKKworICAgICAgICBBVkZ1bmN0
aW9uQmFyU2NydWJiZXIgaXMgbm93IEFWVG91Y2hCYXJTY3J1YmJlcgorCisgICAgICAgIEFWRnVu
Y3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgaXMgbm93IEFWVG91Y2hCYXJQbGF5YmFj
a0NvbnRyb2xzUHJvdmlkZXIKKworICAgICAgICBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb24gaXMgbm93IEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorCisgICAgICAgIEFu
ZCB0aGUgcHJvdG9jb2wgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBp
cyBub3cgCisgICAgICAgIEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcKKwor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5tbToKKyAgICAg
ICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgYXVkaW9GdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBz
ZXRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zOl0pOgorICAgICAgICAoLVtX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBjdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uXSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNl
dEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246XSk6CisgICAgICAg
ICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGxlZ2libGVGdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc10pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBz
ZXRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6XSk6CisgICAgICAgICgt
W1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRp
YVNlbGVjdGlvbk9wdGlvbl0pOgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
ciBzZXRDdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246XSk6Cisg
ICAgICAgIChtZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorCisgICAgICAgIEhlcmUgaXMgd2hlcmUg
dGhlIHR5cGVkZWZzIGFuZCAjZGVmaW5lIGFyZSBkZWNsYXJlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9zcGkvY29jb2EvQVZLaXRTUEkuaDoKKwogMjAxNy0wNC0xMSAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIEFsbG93
IG1vZGVybi1tZWRpYS1jb250cm9scyB0byBiZSBwcm92aWRlZCB0aHJvdWdoIFdlYktpdEFkZGl0
aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmgJKHJldmlzaW9uIDIxNTI1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwxNyArMzksMTcgQEAgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOwogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIAogV0VC
Q09SRV9FWFBPUlQKLUBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgOiBOU09i
amVjdCA8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4geworQGludGVy
ZmFjZSBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciA6IE5TT2JqZWN0IDxBVlRvdWNoQmFyUGxh
eWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiB7CiAgICAgTlNUaW1lSW50ZXJ2YWwgX2NvbnRlbnRE
dXJhdGlvbjsKICAgICBSZXRhaW5QdHI8QVZWYWx1ZVRpbWluZz4gX3RpbWluZzsKICAgICBOU1Rp
bWVJbnRlcnZhbCBfc2Vla1RvVGltZTsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3NlZWthYmxl
VGltZVJhbmdlczsKICAgICBCT09MIF9oYXNFbmFibGVkQXVkaW87CiAgICAgQk9PTCBfaGFzRW5h
YmxlZFZpZGVvOwotICAgIFJldGFpblB0cjxOU0FycmF5PEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqPj4gX2F1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM7Ci0g
ICAgUmV0YWluUHRyPEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbj4gX2N1cnJlbnRB
dWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247Ci0gICAgUmV0YWluUHRyPE5TQXJy
YXk8QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICo+PiBfbGVnaWJsZUZ1bmN0aW9u
QmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zOwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24+IF9jdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rp
b25PcHRpb247CisgICAgUmV0YWluUHRyPE5TQXJyYXk8QVZUb3VjaEJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uICo+PiBfYXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczsKKyAgICBS
ZXRhaW5QdHI8QVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uPiBfY3VycmVudEF1ZGlvRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxBVlRv
dWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKj4+IF9sZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbnM7CisgICAgUmV0YWluUHRyPEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbj4gX2N1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKICAg
ICBmbG9hdCBfcmF0ZTsKICAgICBCT09MIF9jYW5Ub2dnbGVQbGF5YmFjazsKIApAQCAtNjksMTAg
KzY5LDEwIEBAIEBpbnRlcmZhY2UgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgOiAKIAogQHBy
b3BlcnR5IChub25hdG9taWMpIGZsb2F0IHJhdGU7CiAKLS0gKEFWRnVuY3Rpb25CYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b247Ci0tICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b246KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKW9wdGlvbjsKLS0gKEFWRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbjsKLS0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24g
KilvcHRpb247CistIChBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKiljdXJyZW50QXVk
aW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOworLSAodm9pZClzZXRDdXJyZW50QXVk
aW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVlRvdWNoQmFyTWVkaWFTZWxlY3Rp
b25PcHRpb24gKilvcHRpb247CistIChBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilj
dXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CistICh2b2lkKXNl
dEN1cnJlbnRMZWdpYmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZUb3VjaEJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uOwogLSAodm9pZClzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uczooY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpb3B0aW9ucyB3aXRoU2Vs
ZWN0ZWRJbmRleDooTlNVSW50ZWdlcilzZWxlY3RlZEluZGV4OwogLSAodm9pZClzZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JilvcHRpb25z
IHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7CiBAZW5kCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMTUyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDExIEBACiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbnVsbGFiaWxpdHktY29tcGxldGVuZXNzIgog
U09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTMwMAorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWS2l0LCBBVlRvdWNo
QmFyTWVkaWFTZWxlY3Rpb25PcHRpb24pCisjZWxzZQogU09GVF9MSU5LX0NMQVNTX09QVElPTkFM
KEFWS2l0LCBBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24pCisjZW5kaWYgLy8gX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKIAogQGltcGxlbWVudGF0aW9u
IFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyCiAKQEAgLTEyMSwyMiArMTI1LDIyIEBAIC0gKHZv
aWQpZW5kRnVuY3Rpb25CYXJTY3J1YmJpbmcKICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT5lbmRTY3J1YmJpbmcoKTsKIH0KIAotLSAoTlNBcnJheTxBVkZ1bmN0aW9uQmFyTWVk
aWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b25zCistIChOU0FycmF5PEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWF1ZGlv
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMKIHsKICAgICByZXR1cm4gX2F1ZGlvRnVu
Y3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMuZ2V0KCk7CiB9CiAKLS0gKHZvaWQpc2V0QXVk
aW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczooTlNBcnJheTxBVkZ1bmN0aW9uQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMKKy0gKHZvaWQpc2V0QXVkaW9G
dW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczooTlNBcnJheTxBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKj4gKilhdWRpb09wdGlvbnMKIHsKICAgICBfYXVkaW9GdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvT3B0aW9uczsKIH0KIAotLSAoQVZGdW5jdGlv
bkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbgorLSAoQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVu
dEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgogewogICAgIHJldHVybiBfY3Vy
cmVudEF1ZGlvRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbi5nZXQoKTsKIH0KIAotLSAo
dm9pZClzZXRDdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVkZ1
bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
CistICh2b2lkKXNldEN1cnJlbnRBdWRpb0Z1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246
KEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b24KIHsKICAgICBpZiAoYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiA9PSBfY3VycmVudEF1ZGlv
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTUx
LDIyICsxNTUsMjIgQEAgLSAodm9pZClzZXRDdXJyZW50QXVkaW9GdW5jdGlvbkJhck1lZGlhUwog
ICAgIF93ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPndlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsKCktPnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4
IDogVUlOVDY0X01BWCk7CiB9CiAKLS0gKE5TQXJyYXk8QVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0
aW9uT3B0aW9uICo+ICopbGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zCist
IChOU0FycmF5PEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucwogewogICAgIHJldHVybiBfbGVnaWJsZUZ1bmN0
aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zLmdldCgpOwogfQogCi0tICh2b2lkKXNldExlZ2li
bGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczooTlNBcnJheTxBVkZ1bmN0aW9uQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb24gKj4gKilsZWdpYmxlT3B0aW9ucworLSAodm9pZClzZXRMZWdp
YmxlRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KE5TQXJyYXk8QVZUb3VjaEJhck1l
ZGlhU2VsZWN0aW9uT3B0aW9uICo+ICopbGVnaWJsZU9wdGlvbnMKIHsKICAgICBfbGVnaWJsZUZ1
bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25zID0gbGVnaWJsZU9wdGlvbnM7CiB9CiAKLS0g
KEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbiAqKWN1cnJlbnRMZWdpYmxlRnVuY3Rp
b25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbgorLSAoQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0
aW9uICopY3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uCiB7CiAg
ICAgcmV0dXJuIF9jdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24u
Z2V0KCk7CiB9CiAKLS0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVGdW5jdGlvbkJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOihBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb24KKy0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKils
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb24KIHsKICAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uID09IF9jdXJyZW50TGVnaWJsZUZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24pCiAgICAgICAgIHJldHVybjsKQEAgLTE4NSw3ICsxODksMTEgQEAgc3RhdGljIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gbWVkaWFTZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMp
IHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24+IHdlYk9wdGlvbiA9IGFkb3B0TlMoW2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0aFRpdGxlOm5hbWVdKSkKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorICAgICAgICBpZiAoUmV0YWluUHRyPEFWVG91
Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbj4gd2ViT3B0aW9uID0gYWRvcHROUyhbYWxsb2NBVlRv
dWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25JbnN0YW5jZSgpIGluaXRXaXRoVGl0bGU6bmFtZSB0
eXBlOkFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGVSZWd1bGFyXSkpCisjZWxzZQor
ICAgICAgICBpZiAoUmV0YWluUHRyPEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbj4gd2Vi
T3B0aW9uID0gYWRvcHROUyhbYWxsb2NBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25J
bnN0YW5jZSgpIGluaXRXaXRoVGl0bGU6bmFtZV0pKQorI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiAgICAgICAgICAgICBbd2ViT3B0aW9ucyBhZGRP
YmplY3Q6d2ViT3B0aW9uLmdldCgpXTsKICAgICB9CiAgICAgcmV0dXJuIHdlYk9wdGlvbnM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQVZLaXRTUEkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQVZLaXRTUEkuaAkocmV2
aXNpb24gMjE1MjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0
U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxNCArMTUzLDMwIEBAIE5TX0FTU1VNRV9OT05O
VUxMX0VORAogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRS
T0xTX01BTkFHRVIpCiAKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAx
MzAwCitPQkpDX0NMQVNTIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI7CitP
QkpDX0NMQVNTIEFWRnVuY3Rpb25CYXJTY3J1YmJlcjsKK09CSkNfQ0xBU1MgQVZGdW5jdGlvbkJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uOworCit0eXBlZGVmIEFWRnVuY3Rpb25CYXJNZWRpYVNlbGVj
dGlvbk9wdGlvbiBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247Cit0eXBlZGVmIEFWRnVu
Y3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgQVZUb3VjaEJhclBsYXliYWNrQ29udHJv
bHNQcm92aWRlcjsKK3R5cGVkZWYgQVZGdW5jdGlvbkJhclNjcnViYmVyIEFWVG91Y2hCYXJTY3J1
YmJlcjsKKyNkZWZpbmUgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZyBBVkZ1
bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nCisjZW5kaWYgLy8gX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMAorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorI2lt
cG9ydCA8QVZLaXQvQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlci5oPgorI2ltcG9y
dCA8QVZLaXQvQVZUb3VjaEJhclNjcnViYmVyLmg+CisjZWxzZQogI2ltcG9ydCA8QVZLaXQvQVZG
dW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlci5oPgogI2ltcG9ydCA8QVZLaXQvQVZG
dW5jdGlvbkJhclNjcnViYmVyLmg+CisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDAKICNlbHNlCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKLUBw
cm90b2NvbCBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nIDxOU09iamVj
dD4KK0Bwcm90b2NvbCBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nIDxOU09i
amVjdD4KIEBwcm9wZXJ0eSAocmVhZG9ubHkpIE5TVGltZUludGVydmFsIGNvbnRlbnREdXJhdGlv
bjsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG51bGxhYmxlKSBBVlZhbHVlVGltaW5nICp0aW1pbmc7
CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNTZWVraW5nKSBCT09MIHNlZWtpbmc7CkBA
IC0xNzAsMTYgKzE4NiwxNSBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQHByb3BlcnR5IChy
ZWFkb25seSkgQk9PTCBoYXNFbmFibGVkVmlkZW87CiBAZW5kCiAKLUBpbnRlcmZhY2UgQVZGdW5j
dGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRlciA6IE5TUmVzcG9uZGVyCitAaW50ZXJmYWNl
IEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXIgOiBOU1Jlc3BvbmRlcgogQHByb3Bl
cnR5IChzdHJvbmcsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNUb3VjaEJhciAqdG91Y2hCYXI7Ci1A
cHJvcGVydHkgKGFzc2lnbiwgbnVsbGFibGUpIGlkPEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRy
b2xzQ29udHJvbGxpbmc+IHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOworQHByb3BlcnR5IChh
c3NpZ24sIG51bGxhYmxlKSBpZDxBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5n
PiBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjsKIEBlbmQKIAotQGludGVyZmFjZSBBVkZ1bmN0
aW9uQmFyU2NydWJiZXIgOiBOU1ZpZXcKLUBwcm9wZXJ0eSAoYXNzaWduLCBudWxsYWJsZSkgaWQ8
QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNDb250cm9sbGluZz4gcGxheWJhY2tDb250cm9s
c0NvbnRyb2xsZXI7CitAaW50ZXJmYWNlIEFWVG91Y2hCYXJTY3J1YmJlciA6IE5TVmlldworQHBy
b3BlcnR5IChhc3NpZ24sIG51bGxhYmxlKSBpZDxBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0Nv
bnRyb2xsaW5nPiBwbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjsKIEBlbmQKIAotQGNsYXNzIEFW
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIEBjbGFzcyBBVlRodW1ibmFpbDsKIAog
TlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTUyNTUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBA
QAorMjAxNy0wNC0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJvbSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFy
KgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkz
CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEy
MzAwMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBwbHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywg
dGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAorICAgICAgICBmb3IgdGhlIG9sZGVyIE9T4oCZcy4g
U086CisKKyAgICAgICAgQVZGdW5jdGlvbkJhclNjcnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2Ny
dWJiZXIKKworICAgICAgICBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIGlz
IG5vdyBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyCisKKyAgICAgICAgQVZGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uIGlzIG5vdyBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rp
b25PcHRpb24KKworICAgICAgICBBbmQgdGhlIHByb3RvY29sIEFWRnVuY3Rpb25CYXJQbGF5YmFj
a0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93IAorICAgICAgICBBVlRvdWNoQmFyUGxheWJhY2tD
b250cm9sc0NvbnRyb2xsaW5nCisKKyAgICAgICAgVXNlIHRoZSBuZXcgbmFtZS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9tZWRpYVBs
YXliYWNrQ29udHJvbHNWaWV3XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYWRkTWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06Cisg
ICAgICAgICgtW1dLVmlldyBfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlld10pOgorICAgICAgICAo
LVtXS1ZpZXcgX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisKKyAgICAgICAgU29mdCBsaW5rcyBhbmQgYWxs
b2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMuCisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bWVkaWFQ
bGF5YmFja0NvbnRyb2xzVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRh
dGVNZWRpYVRvdWNoQmFyKToKKwogMjAxNy0wNC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vZGVybml6ZSBhbmQgY2xlYW4gdXAgY29k
ZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Zp
ZXdQcml2YXRlLmgJKHJldmlzaW9uIDIxNTI1NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLT3Zlcmxh
eVNjcm9sbGJhclN0eWxlLmg+CiAKLUBjbGFzcyBBVkZ1bmN0aW9uQmFyU2NydWJiZXI7CitAY2xh
c3MgQVZUb3VjaEJhclNjcnViYmVyOwogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKIApA
QCAtMTM1LDggKzEzNSw4IEBACiAtICh2b2lkKV9nZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlX
ZWJDb3JlOihOU0V2ZW50ICopZXZlbnQ7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3Jp
dGUsIHNldHRlcj1fc2V0V2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OikgQk9PTCBfd2Fu
dHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKl9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3Owot
LSAodm9pZClfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzooQVZGdW5jdGlvbkJhclNjcnVi
YmVyICopbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQVZUb3VjaEJhclNjcnViYmVyICpfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzsK
Ky0gKHZvaWQpX2FkZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEFWVG91Y2hCYXJTY3J1YmJl
ciAqKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3OwogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MjU1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTUwMDUsNyArNTAwNSw3IEBAIC0gKHZvaWQpX3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRy
b2xzVmkKICNlbmRpZgogfQogCi0tIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldworLSAoQVZUb3VjaEJhclNjcnViYmVyICopX21lZGlhUGxheWJhY2tD
b250cm9sc1ZpZXcKIHsKICNpZiBIQVZFKFRPVUNIX0JBUikKICAgICByZXR1cm4gX2ltcGwtPmNs
aWVudFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpID8gX2ltcGwtPm1lZGlhUGxheWJh
Y2tDb250cm9sc1ZpZXcoKSA6IG5pbDsKQEAgLTUwMTUsNyArNTAxNSw3IEBAIC0gKEFWRnVuY3Rp
b25CYXJTY3J1YmJlciAqKV9tZWRpYVBsYXliYWMKIH0KIAogLy8gVGhpcyBtZXRob2QgaXMgZm9y
IHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCi0tICh2b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29udHJv
bHNWaWV3OihBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKiltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3
CistICh2b2lkKV9hZGRNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OihBVlRvdWNoQmFyU2NydWJi
ZXIgKiltZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShy
ZXZpc2lvbiAyMTUyNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBCiAKICNlbmRpZgogCi1AY2xhc3MgQVZG
dW5jdGlvbkJhclNjcnViYmVyOworQGNsYXNzIEFWVG91Y2hCYXJTY3J1YmJlcjsKIEBjbGFzcyBX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKIEBjbGFzcyBf
V0tIaXRUZXN0UmVzdWx0OwpAQCAtMjIzLDggKzIyMyw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIF9XS0ltbWVkaWF0ZUEKIAogLy8gRklYTUU6IFRoaXMgU1BJIHNob3VsZCBiZWNvbWUg
YSBwYXJ0IG9mIHRoZSBXS1VJRGVsZWdhdGUuIHJkYXI6Ly9wcm9ibGVtLzI2NTYxNTM3CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBzZXR0ZXI9X3NldFdhbnRzTWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqX21lZGlhUGxheWJhY2tDb250cm9sc1Zp
ZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwotLSAodm9pZClfYWRkTWVk
aWFQbGF5YmFja0NvbnRyb2xzVmlldzooQVZGdW5jdGlvbkJhclNjcnViYmVyICopbWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWVG91Y2hCYXJTY3J1YmJlciAqX21lZGlh
UGxheWJhY2tDb250cm9sc1ZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkp
OworLSAodm9pZClfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnVi
YmVyICopbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSk7CiAtICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIAogLSAodm9pZClfcHJlcGFyZUZv
ck1vdmVUb1dpbmRvdzooTlNXaW5kb3cgKil0YXJnZXRXaW5kb3cgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAyMTUyNTUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXZWJWaWV3
SW1wbC5oIgogI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvQVZLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTU3Miw3ICsxNTczLDcgQEAgLSAodm9pZClfc2V0V2Fu
dHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaQogI2VuZGlmCiB9CiAKLS0gKEFWRnVuY3Rpb25CYXJT
Y3J1YmJlciAqKV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3CistIChBVlRvdWNoQmFyU2NydWJi
ZXIgKilfbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldwogewogI2lmIEhBVkUoVE9VQ0hfQkFSKQog
ICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmNsaWVudFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xz
VmlldygpID8gX2RhdGEtPl9pbXBsLT5tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgOiBuaWw7
CkBAIC0xNTgyLDcgKzE1ODMsNyBAQCAtIChBVkZ1bmN0aW9uQmFyU2NydWJiZXIgKilfbWVkaWFQ
bGF5YmFjCiB9CiAKIC8vIFRoaXMgbWV0aG9kIGlzIGZvciBzdWJjbGFzc2VzIHRvIG92ZXJyaWRl
LgotLSAodm9pZClfYWRkTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzooQVZGdW5jdGlvbkJhclNj
cnViYmVyICopbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldworLSAodm9pZClfYWRkTWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldzooQVZUb3VjaEJhclNjcnViYmVyICopbWVkaWFQbGF5YmFja0NvbnRy
b2xzVmlldwogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjE1MjU1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJXS0xheW91dE1vZGUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlICJfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FW
S2l0U1BJLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2luZG93Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KQEAgLTU1LDggKzU2LDYgQEAgT0JKQ19DTEFTUyBXS1dpbmRvd1Zpc2liaWxp
dHlPYnNlcnZlcjsKIE9CSkNfQ0xBU1MgX1dLVGh1bWJuYWlsVmlldzsKIAogI2lmIEhBVkUoVE9V
Q0hfQkFSKQotT0JKQ19DTEFTUyBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVy
OwotT0JKQ19DTEFTUyBBVkZ1bmN0aW9uQmFyU2NydWJiZXI7CiBPQkpDX0NMQVNTIE5TQ2FuZGlk
YXRlTGlzdFRvdWNoQmFySXRlbTsKIE9CSkNfQ0xBU1MgTlNDdXN0b21Ub3VjaEJhckl0ZW07CiBP
QkpDX0NMQVNTIE5TVG91Y2hCYXI7CkBAIC01MTYsNyArNTE1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgdXBkYXRlVG91Y2hCYXIoKTsKICAgICBOU1RvdWNoQmFyICpjdXJyZW50VG91Y2hCYXIoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRUb3VjaEJhci5nZXQoKTsgfQogICAgIE5TQ2FuZGlkYXRl
TGlzdFRvdWNoQmFySXRlbSAqY2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbSgpIGNvbnN0OwotICAg
IEFWRnVuY3Rpb25CYXJTY3J1YmJlciAqbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpIGNvbnN0
OworICAgIEFWVG91Y2hCYXJTY3J1YmJlciAqbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldygpIGNv
bnN0OwogICAgIE5TVG91Y2hCYXIgKnRleHRUb3VjaEJhcigpIGNvbnN0OwogICAgIHZvaWQgZGlz
bWlzc1RleHRUb3VjaEJhclBvcG92ZXJJdGVtV2l0aElkZW50aWZpZXIoTlNTdHJpbmcgKik7CiAK
QEAgLTU1NCw4ICs1NTMsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU0N1c3RvbVRvdWNo
QmFySXRlbT4gbV9leGl0RnVsbFNjcmVlbkJ1dHRvbjsKIAogI2lmIEVOQUJMRShXRUJfUExBWUJB
Q0tfQ09OVFJPTFNfTUFOQUdFUikKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclBsYXliYWNr
Q29udHJvbHNQcm92aWRlcj4gbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXI7Ci0gICAgUmV0YWluUHRy
PEFWRnVuY3Rpb25CYXJTY3J1YmJlcj4gbV9tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworICAg
IFJldGFpblB0cjxBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyPiBtX21lZGlhVG91
Y2hCYXJQcm92aWRlcjsKKyAgICBSZXRhaW5QdHI8QVZUb3VjaEJhclNjcnViYmVyPiBtX21lZGlh
UGxheWJhY2tDb250cm9sc1ZpZXc7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9QTEFZQkFDS19DT05U
Uk9MU19NQU5BR0VSKQogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMTUy
NTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCA8SElUb29sYm94L0NhcmJvbkV2ZW50c0NvcmUuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
QVZLaXRTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CkBA
IC0xMDIsOCArMTAxLDEzIEBACiAKICNpZiBIQVZFKFRPVUNIX0JBUikgJiYgRU5BQkxFKFdFQl9Q
TEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkKKyNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorU09GVF9MSU5LX0NM
QVNTKEFWS2l0LCBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyKQorU09GVF9MSU5L
X0NMQVNTKEFWS2l0LCBBVlRvdWNoQmFyU2NydWJiZXIpCisjZWxzZQogU09GVF9MSU5LX0NMQVNT
KEFWS2l0LCBBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyKQogU09GVF9MSU5L
X0NMQVNTKEFWS2l0LCBBVkZ1bmN0aW9uQmFyU2NydWJiZXIpCisjZW5kaWYgLy8gX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKIAogc3RhdGljIE5TU3RyaW5nICogY29u
c3QgV0tNZWRpYUV4aXRGdWxsU2NyZWVuSXRlbSA9IEAiV0tNZWRpYUV4aXRGdWxsU2NyZWVuSXRl
bSI7CiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09O
VFJPTFNfTUFOQUdFUikKQEAgLTkwMiw3ICs5MDYsNyBAQCBOU0NhbmRpZGF0ZUxpc3RUb3VjaEJh
ckl0ZW0gKldlYlZpZXdJbXBsCiAgICAgcmV0dXJuIGlzUmljaGx5RWRpdGFibGUoKSA/IG1fcmlj
aFRleHRDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtLmdldCgpIDogbV9wbGFpblRleHRDYW5kaWRh
dGVMaXN0VG91Y2hCYXJJdGVtLmdldCgpOwogfQogCi1BVkZ1bmN0aW9uQmFyU2NydWJiZXIgKldl
YlZpZXdJbXBsOjptZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3KCkgY29uc3QKK0FWVG91Y2hCYXJT
Y3J1YmJlciAqV2ViVmlld0ltcGw6Om1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcoKSBjb25zdAog
ewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBpZiAobV9w
YWdlLT5oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcigpKQpAQCAtMTEyNSwxMSArMTEy
OSwyMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVUZXh0VG91Y2hCYXIoKQogdm9pZCBXZWJW
aWV3SW1wbDo6dXBkYXRlTWVkaWFUb3VjaEJhcigpCiB7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFD
S19DT05UUk9MU19NQU5BR0VSKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0g
ICAgaWYgKCFtX21lZGlhVG91Y2hCYXJQcm92aWRlcikKKyAgICBpZiAoIW1fbWVkaWFUb3VjaEJh
clByb3ZpZGVyKSB7CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEz
MDAKKyAgICAgICAgbV9tZWRpYVRvdWNoQmFyUHJvdmlkZXIgPSBhZG9wdE5TKFthbGxvY0FWVG91
Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXJJbnN0YW5jZSgpIGluaXRdKTsKKyNlbHNlCiAg
ICAgICAgIG1fbWVkaWFUb3VjaEJhclByb3ZpZGVyID0gYWRvcHROUyhbYWxsb2NBVkZ1bmN0aW9u
QmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVySW5zdGFuY2UoKSBpbml0XSk7CisjZW5kaWYgLy8g
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICB9CiAKLSAgICBp
ZiAoIW1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldykKKyAgICBpZiAoIW1fbWVkaWFQbGF5YmFj
a0NvbnRyb2xzVmlldykgeworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMzAwCisgICAgICAgIG1fbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyA9IGFkb3B0TlMoW2Fs
bG9jQVZUb3VjaEJhclNjcnViYmVySW5zdGFuY2UoKSBpbml0XSk7CisjZWxzZQogICAgICAgICBt
X21lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcgPSBhZG9wdE5TKFthbGxvY0FWRnVuY3Rpb25CYXJT
Y3J1YmJlckluc3RhbmNlKCkgaW5pdF0pOworI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMzAwCisgICAgfQogCiAgICAgaWYgKCFtX3BsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKQogICAgICAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyID0gYWRvcHROUyhb
W1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIGFsbG9jXSBpbml0XSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTUyNTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wNC0xMSAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQVZLaXQgbmFtZSBjaGFuZ2UgZnJv
bSBBVkZ1bmN0aW9uQmFyKiB0byBBVlRvdWNoQmFyKgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkzCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzEyMzAwMTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB0aGUgbmV3IG5hbWVzIG9ubHkgYXBw
bHkgdG8gc29tZSB2ZXJzaW9ucyBvZiBtYWNPUywgdGhpcyBwYXRjaCB1c2VzIHR5cGVkZWZzIAor
ICAgICAgICBmb3IgdGhlIG9sZGVyIE9T4oCZcy4gU086CisKKyAgICAgICAgQVZGdW5jdGlvbkJh
clNjcnViYmVyIGlzIG5vdyBBVlRvdWNoQmFyU2NydWJiZXIKKworICAgICAgICBBVkZ1bmN0aW9u
QmFyUGxheWJhY2tDb250cm9sc1Byb3ZpZGVyIGlzIG5vdyBBVlRvdWNoQmFyUGxheWJhY2tDb250
cm9sc1Byb3ZpZGVyCisKKyAgICAgICAgQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
IGlzIG5vdyBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24KKworICAgICAgICBBbmQgdGhl
IHByb3RvY29sIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmcgaXMgbm93
IAorICAgICAgICBBVlRvdWNoQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nCisKKyAgICAg
ICAgU29mdCBsaW5rcyBhbmQgYWxsb2NhdGlvbnMgY2Fubm90IHVzZSB0aGUgdHlwZWRlZnMuCisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHVwZGF0ZU1l
ZGlhVG91Y2hCYXJdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMTct
MDQtMTEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUg
b3V0ZGF0ZWQgV3JpdGFibGVTdHJlYW0gQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCShyZXZpc2lvbiAyMTUyNTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNiw4ICszMzYsMTMgQEAgU09GVF9MSU5L
KFVJS2l0LCBVSUdyYXBoaWNzRW5kSW1hZ2VDb250ZQogCiAjaWYgSEFWRShUT1VDSF9CQVIpICYm
IEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIFNPRlRfTElOS19GUkFNRVdP
UksoQVZLaXQpCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAK
K1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZUb3VjaEJhclBsYXliYWNrQ29udHJvbHNQcm92aWRl
cikKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZUb3VjaEJhclNjcnViYmVyKQorI2Vsc2UKIFNP
RlRfTElOS19DTEFTUyhBVktpdCwgQVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92aWRl
cikKIFNPRlRfTElOS19DTEFTUyhBVktpdCwgQVZGdW5jdGlvbkJhclNjcnViYmVyKQorI2VuZGlm
IC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiAjZW5kaWYgLy8g
SEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikK
IAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTk3OTQsMTQgKzk3OTksMTkgQEAgLSAodm9pZCl1cGRh
dGVUZXh0VG91Y2hCYXIKIC0gKHZvaWQpdXBkYXRlTWVkaWFUb3VjaEJhcgogewogI2lmIEVOQUJM
RShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKQotICAgIGlmICghX3ByaXZhdGUtPm1lZGlhVG91Y2hCYXJQcm92aWRlcikKKyAg
ICBpZiAoIV9wcml2YXRlLT5tZWRpYVRvdWNoQmFyUHJvdmlkZXIpIHsKKyNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorICAgICAgICBfcHJpdmF0ZS0+bWVkaWFU
b3VjaEJhclByb3ZpZGVyID0gYWRvcHROUyhbYWxsb2NBVlRvdWNoQmFyUGxheWJhY2tDb250cm9s
c1Byb3ZpZGVySW5zdGFuY2UoKSBpbml0XSk7CisjZWxzZQogICAgICAgICBfcHJpdmF0ZS0+bWVk
aWFUb3VjaEJhclByb3ZpZGVyID0gYWRvcHROUyhbYWxsb2NBVkZ1bmN0aW9uQmFyUGxheWJhY2tD
b250cm9sc1Byb3ZpZGVySW5zdGFuY2UoKSBpbml0XSk7CisjZW5kaWYgLy8gX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKKyAgICB9CiAKICAgICBpZiAoIVtfcHJpdmF0
ZS0+bWVkaWFUb3VjaEJhclByb3ZpZGVyIHBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyXSkgewog
ICAgICAgICBBU1NFUlQoX3ByaXZhdGUtPnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSk7CiAgICAg
ICAgIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyICptYW5hZ2VyID0gX3ByaXZhdGUtPnBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS0+cGxheUJhY2tDb250cm9sc01hbmFnZXIoKTsKLSAgICAgICAg
W19wcml2YXRlLT5tZWRpYVRvdWNoQmFyUHJvdmlkZXIgc2V0UGxheWJhY2tDb250cm9sc0NvbnRy
b2xsZXI6KGlkIDxBVkZ1bmN0aW9uQmFyUGxheWJhY2tDb250cm9sc0NvbnRyb2xsaW5nPiltYW5h
Z2VyXTsKLSAgICAgICAgW19wcml2YXRlLT5tZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3IHNldFBs
YXliYWNrQ29udHJvbHNDb250cm9sbGVyOihpZCA8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJv
bHNDb250cm9sbGluZz4pbWFuYWdlcl07CisgICAgICAgIFtfcHJpdmF0ZS0+bWVkaWFUb3VjaEJh
clByb3ZpZGVyIHNldFBsYXliYWNrQ29udHJvbHNDb250cm9sbGVyOihpZCA8QVZUb3VjaEJhclBs
YXliYWNrQ29udHJvbHNDb250cm9sbGluZz4pbWFuYWdlcl07CisgICAgICAgIFtfcHJpdmF0ZS0+
bWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldyBzZXRQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxlcjoo
aWQgPEFWVG91Y2hCYXJQbGF5YmFja0NvbnRyb2xzQ29udHJvbGxpbmc+KW1hbmFnZXJdOwogICAg
IH0KICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
aAkocmV2aXNpb24gMjE1MjU1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIldlYlR5
cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5n
LmgiCisjaW1wb3J0IDxXZWJDb3JlL0FWS2l0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVy
bmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaD4KQEAgLTEw
Niw4ICsxMDcsNiBAQCBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lm
IEhBVkUoVE9VQ0hfQkFSKQogQGNsYXNzIFdlYlRleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyOwot
QGNsYXNzIEFWRnVuY3Rpb25CYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI7Ci1AY2xhc3MgQVZG
dW5jdGlvbkJhclNjcnViYmVyOwogI2VuZGlmCiAKIGNsYXNzIFdlYlZpZXdMYXllckZsdXNoU2No
ZWR1bGVyIDogcHVibGljIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVsZXIgewpAQCAtMTkyLDgg
KzE5MSw4IEBAIEBpbnRlcmZhY2UgV2ViVmlld1ByaXZhdGUgOiBOU09iamVjdCB7CiAgICAgUmV0
YWluUHRyPE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbT4gX3JpY2hUZXh0Q2FuZGlkYXRlTGlz
dFRvdWNoQmFySXRlbTsKICAgICBSZXRhaW5QdHI8TlNDYW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVt
PiBfcGxhaW5UZXh0Q2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbTsKICAgICBSZXRhaW5QdHI8TlND
YW5kaWRhdGVMaXN0VG91Y2hCYXJJdGVtPiBfcGFzc3dvcmRUZXh0Q2FuZGlkYXRlTGlzdFRvdWNo
QmFySXRlbTsKLSAgICBSZXRhaW5QdHI8QVZGdW5jdGlvbkJhclBsYXliYWNrQ29udHJvbHNQcm92
aWRlcj4gbWVkaWFUb3VjaEJhclByb3ZpZGVyOwotICAgIFJldGFpblB0cjxBVkZ1bmN0aW9uQmFy
U2NydWJiZXI+IG1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CisgICAgUmV0YWluUHRyPEFWVG91
Y2hCYXJQbGF5YmFja0NvbnRyb2xzUHJvdmlkZXI+IG1lZGlhVG91Y2hCYXJQcm92aWRlcjsKKyAg
ICBSZXRhaW5QdHI8QVZUb3VjaEJhclNjcnViYmVyPiBtZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3
OwogCiAgICAgQk9PTCBfY2FuQ3JlYXRlVG91Y2hCYXJzOwogICAgIEJPT0wgX2lzVXBkYXRpbmdU
ZXh0VG91Y2hCYXI7Cg==
</data>
<flag name="review"
          id="328208"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>