<?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>129600</bug_id>
          
          <creation_ts>2014-03-02 23:13:27 -0800</creation_ts>
          <short_desc>[WebKit2][iOS] PDF</short_desc>
          <delta_ts>2014-03-07 22:38:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>129809</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986274</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-02 23:13:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/15260216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986275</commentid>
    <comment_count>1</comment_count>
      <attachid>225633</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-02 23:16:41 -0800</bug_when>
    <thetext>Created attachment 225633
preliminary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986277</commentid>
    <comment_count>2</comment_count>
      <attachid>225634</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-02 23:36:52 -0800</bug_when>
    <thetext>Created attachment 225634
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986278</commentid>
    <comment_count>3</comment_count>
      <attachid>225635</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-02 23:38:00 -0800</bug_when>
    <thetext>Created attachment 225635
still preliminary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987323</commentid>
    <comment_count>4</comment_count>
      <attachid>225635</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-05 11:35:55 -0800</bug_when>
    <thetext>Comment on attachment 225635
still preliminary

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

&gt; Source/WebKit2/Configurations/WebKit2.xcconfig:33
&gt; +FRAMEWORK_AND_LIBRARY_LDFLAGS_iphonesimulator = -lobjc -framework CFNetwork -framework CoreFoundation -framework CoreGraphics -framework CoreText -framework Foundation -framework GraphicsServices -framework ImageIO -framework UIKit -framework WebKit -lMobileGestalt -lassertion_extension -framework CorePDF;

alphabetize

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationManager.h:46
&gt; +

another header

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationManager.h:47
&gt; +- (instancetype)initWithFrame:(CGRect)frame;

nope

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationManager.h:49
&gt; +- (void)setData:(CFDataRef)data;

web_setCustomRepresentationData or setWebCustomRepresentationData or something like that (and Dan says it should be NSData instead)

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationManager.h:52
&gt; +- (void)setContentInset:(UIEdgeInsets)insets;

don&apos;t need this if we re-use the scrollview

&gt; Source/WebKit2/UIProcess/Cocoa/CustomRepresentationManager.h:62
&gt; +struct CustomRepresentation {
&gt; +    Class representationClass;
&gt; +    String mimeType;
&gt; +};

move into the class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987609</commentid>
    <comment_count>5</comment_count>
      <attachid>225964</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-06 01:03:23 -0800</bug_when>
    <thetext>Created attachment 225964
patch

I just noticed that we need to save and restore a few more scrollview properties (minimum and maximum magnification at least) in the case where you are navigating back to a page that&apos;s in the page cache (but we can just do it always, I think); I&apos;ll fix that up tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987768</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-06 11:08:08 -0800</bug_when>
    <thetext>Splitting this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988095</commentid>
    <comment_count>7</comment_count>
      <attachid>226106</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-07 03:01:27 -0800</bug_when>
    <thetext>Created attachment 226106
split patch

This now depends on https://bugs.webkit.org/show_bug.cgi?id=129809 so it won&apos;t apply yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988399</commentid>
    <comment_count>8</comment_count>
      <attachid>226106</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-07 15:56:48 -0800</bug_when>
    <thetext>Comment on attachment 226106
split patch

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

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:46
&gt; +@interface WKPDFView () {
&gt; +    RetainPtr&lt;UIPDFDocument&gt; _pdfDocument;
&gt; +    Vector&lt;UIPDFPageView*&gt; _pageViews;
&gt; +    CGSize _minimumSize;
&gt; +    UIScrollView *_scrollView;
&gt; +}
&gt; +@end

Just move these to the @implementation section instead.

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:55
&gt; +    [self setBackgroundColor:[UIColor grayColor]];

self.backgroundColor =

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:79
&gt; +        [[pageView contentLayer] setContentsScale:self.window.screen.scale];

pageView.contentLayer.contentsScale =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988510</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-07 22:38:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/165327</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225633</attachid>
            <date>2014-03-02 23:16:41 -0800</date>
            <delta_ts>2014-03-02 23:36:52 -0800</delta_ts>
            <desc>preliminary</desc>
            <filename>pdf.diff</filename>
            <type>text/plain</type>
            <size>57678</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCmluZGV4
IDRlYTgyZDMuLmEzZWJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRp
b25zL1dlYktpdDIueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMv
V2ViS2l0Mi54Y2NvbmZpZwpAQCAtMzAsNyArMzAsNyBAQCBJTlNUQUxMX1BBVEhfQUNUVUFMID0g
JChXRUJLSVQyX0ZSQU1FV09SS1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChO
T1JNQUxfV0VCS0lUMl9GUkFNRVdPUktTX0RJUik7CiAKIEZSQU1FV09SS19BTkRfTElCUkFSWV9M
REZMQUdTID0gJChGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHU18kKFBMQVRGT1JNX05BTUUp
KTsKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1sb2Jq
YyAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdv
cmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9u
IC1mcmFtZXdvcmsgR3JhcGhpY3NTZXJ2aWNlcyAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29y
ayBVSUtpdCAtZnJhbWV3b3JrIFdlYktpdCAtbE1vYmlsZUdlc3RhbHQgLWxhc3NlcnRpb25fZXh0
ZW5zaW9uOworRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0g
LWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZy
YW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5k
YXRpb24gLWZyYW1ld29yayBHcmFwaGljc1NlcnZpY2VzIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJh
bWV3b3JrIFVJS2l0IC1mcmFtZXdvcmsgV2ViS2l0IC1sTW9iaWxlR2VzdGFsdCAtbGFzc2VydGlv
bl9leHRlbnNpb24gLWZyYW1ld29yayBDb3JlUERGOwogRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xE
RkxBR1NfaXBob25lb3MgPSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTX2lwaG9uZXNp
bXVsYXRvcikgLWZyYW1ld29yayBJT1N1cmZhY2U7CiBGUkFNRVdPUktfQU5EX0xJQlJBUllfTERG
TEFHU19tYWNvc3ggPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1ld29yayBD
YXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJhbWV3b3Jr
IElPS2l0IC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgSU9TdXJmYWNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDNj
YzM5MmMuLmYxZGFlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAog
CisjaW1wb3J0ICJDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIuaCIKICNpbXBvcnQgIk5hdmln
YXRpb25TdGF0ZS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKICNp
bXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmgiCkBAIC01Myw5ICs1NCwxMSBAQAogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQg
IldLTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAi
V0tQREZWaWV3LmgiCiAjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIKICNpbXBvcnQgPFVJS2l0L1VJ
UGVyaXBoZXJhbEhvc3RfUHJpdmF0ZS5oPgogCkBAIC03Niw2ICs3OSw4IEBACiAgICAgUmV0YWlu
UHRyPFdLUmVtb3RlT2JqZWN0UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdpc3RyeTsKICAgICBf
V0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50
czsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkN1c3RvbVJlcHJlc2VudGF0aW9uTWFu
YWdlcj4gX2N1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcjsKKwogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBSZXRhaW5QdHI8V0tTY3JvbGxWaWV3PiBfc2Nyb2xsVmlldzsKICAgICBSZXRhaW5QdHI8
V0tDb250ZW50Vmlldz4gX2NvbnRlbnRWaWV3OwpAQCAtMTM3LDYgKzE0Miw4IEBACiAKICAgICB3
ZWJQYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyID0gW19jb25maWd1cmF0aW9u
IHZpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExpbmtQcm92aWRlci5nZXQoKTsKIAorICAg
IF9jdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
Q3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyPihzZWxmKTsKKwogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBfc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tXS1Njcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Ym91bmRzXSk7CiAgICAgW19zY3JvbGxWaWV3IHNldEludGVybmFsRGVsZWdhdGU6c2Vs
Zl07CkBAIC0xNTcsNiArMTY0LDEyIEBACiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3Rvcihfa2V5Ym9hcmREaWRDaGFuZ2VGcmFtZTopIG5hbWU6VUlLZXlib2Fy
ZERpZENoYW5nZUZyYW1lTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tleWJvYXJkV2lsbFNob3c6KSBuYW1l
OlVJS2V5Ym9hcmRXaWxsU2hvd05vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVy
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9rZXlib2FyZFdpbGxIaWRlOikg
bmFtZTpVSUtleWJvYXJkV2lsbEhpZGVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisKKyAgICBX
ZWJLaXQ6OkN1c3RvbVJlcHJlc2VudGF0aW9uIHdrUERGVmlld0N1c3RvbVJlcHJlc2VudGF0aW9u
OworICAgIHdrUERGVmlld0N1c3RvbVJlcHJlc2VudGF0aW9uLnJlcHJlc2VudGF0aW9uQ2xhc3Mg
PSBbV0tQREZWaWV3IGNsYXNzXTsKKworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCkpCisgICAg
ICAgIF9jdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXItPnJlZ2lzdGVyQ3VzdG9tUmVwcmVzZW50
YXRpb25Gb3JNSU1FVHlwZSh3a1BERlZpZXdDdXN0b21SZXByZXNlbnRhdGlvbiwgbWltZVR5cGUp
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0zMTUsNiArMzI4LDM0IEBACiAgICAg
cmV0dXJuIFtfY29udGVudFZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl07CiB9CiAKKy0g
KHZvaWQpX2luc3RhbGxDdXN0b21SZXByZXNlbnRhdGlvblZpZXc6KFVJVmlldyA8V0tDdXN0b21S
ZXByZXNlbnRhdGlvbj4gKil2aWV3Cit7CisgICAgW3NlbGYgYWRkU3Vidmlldzp2aWV3XTsKKyAg
ICBbX3Njcm9sbFZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisKKyAgICBbdmlldyBzZXRGcmFt
ZTpbc2VsZiBib3VuZHNdXTsKKyAgICBbdmlldyBzZXRDb250ZW50SW5zZXQ6W19zY3JvbGxWaWV3
IGNvbnRlbnRJbnNldF1dOworfQorCistICh2b2lkKV9kaWRVbmluc3RhbGxDdXN0b21SZXByZXNl
bnRhdGlvblZpZXcKK3sKKyAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9zY3JvbGxWaWV3LmdldCgpXTsK
K30KKworLSAodm9pZClfc2V0UGFnZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uOihCT09MKXBhZ2VI
YXNDdXN0b21SZXByZXNlbnRhdGlvbiBsb2FkZWRNSU1FVHlwZTooY29uc3QgV1RGOjpTdHJpbmcm
KW1pbWVUeXBlCit7CisgICAgaWYgKHBhZ2VIYXNDdXN0b21SZXByZXNlbnRhdGlvbikKKyAgICAg
ICAgX2N1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci0+aW5zdGFudGlhdGVDdXN0b21SZXByZXNl
bnRhdGlvbihtaW1lVHlwZSk7CisgICAgZWxzZQorICAgICAgICBfY3VzdG9tUmVwcmVzZW50YXRp
b25NYW5hZ2VyLT5jbGVhckN1c3RvbVJlcHJlc2VudGF0aW9uKCk7Cit9CisKKy0gKHZvaWQpX2Rp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6KGNvbnN0IFN0cmluZyYpc3VnZ2VzdGVkRmlsZW5hbWUgZGF0YVJlZmVyZW5jZTooY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJilkYXRhUmVmZXJlbmNlCit7CisgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGFSZWZlcmVu
Y2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSkpOworICAgIF9jdXN0b21SZXByZXNlbnRh
dGlvbk1hbmFnZXItPnNldERhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihkYXRhLmdldCgpKTsK
K30KKwogLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZQogewogICAgIF9pc1dhaXRp
bmdGb3JOZXdMYXllclRyZWVBZnRlckRpZENvbW1pdExvYWQgPSBZRVM7CkBAIC01MjgsNiArNTY5
LDExIEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQo
V2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2ZmCiAgICAgW19zY3JvbGxWaWV3IHNldEZyYW1l
OmJvdW5kc107CiAgICAgW19jb250ZW50VmlldyBzZXRNaW5pbXVtU2l6ZTpib3VuZHMuc2l6ZV07
CiAgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNXaXRoU3RhYmxlU3RhdGU6WUVT
XTsKKworICAgIGlmIChVSVZpZXcgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+ICpjdXN0b21SZXBy
ZXNlbnRhdGlvblZpZXcgPSBfY3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLT52aWV3KCkpIHsK
KyAgICAgICAgW2N1c3RvbVJlcHJlc2VudGF0aW9uVmlldyBzZXRGcmFtZTpbc2VsZiBib3VuZHNd
XTsKKyAgICAgICAgW2N1c3RvbVJlcHJlc2VudGF0aW9uVmlldyBzZXRDb250ZW50SW5zZXQ6W19z
Y3JvbGxWaWV3IGNvbnRlbnRJbnNldF1dOworICAgIH0KIH0KIAogLSAodm9pZClfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0c1dpdGhTdGFibGVTdGF0ZTooQk9PTClpc1N0YXRlU3RhYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmgKaW5kZXggOWY0YmYyNy4uMWRkMDFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMzAsOSArMzAs
MTIgQEAKICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKKyNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKICNpbXBvcnQg
PFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfUHJpdmF0
ZS5oPgorCitAcHJvdG9jb2wgV0tDdXN0b21SZXByZXNlbnRhdGlvbjsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oSU9TKQpAQCAtNTMsNiArNTYsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAgICAg
UmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBfcGFnZTsKIH0KIAorLSAodm9pZClfc2V0UGFn
ZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uOihCT09MKXBhZ2VIYXNDdXN0b21SZXByZXNlbnRhdGlv
biBsb2FkZWRNSU1FVHlwZTooY29uc3QgV1RGOjpTdHJpbmcmKW1pbWVUeXBlOworLSAodm9pZClf
ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTooY29uc3QgV1RGOjpTdHJpbmcmKXN1Z2dlc3RlZEZpbGVuYW1lIGRhdGFSZWZlcmVu
Y2U6KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpZGF0YVJlZmVyZW5jZTsKKwogI2lmIFBMQVRG
T1JNKElPUykKIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU7CiAtICh2b2lkKV9k
aWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24mKWxheWVyVHJlZVRyYW5zYWN0aW9uOwpAQCAtNjEsNiArNjcsOSBAQCBjbGFzcyBXZWJQYWdl
UHJveHk7CiAKIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRS
ZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6
KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4
aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooZmxv
YXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KFdl
YkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luOworCistICh2b2lkKV9pbnN0YWxsQ3VzdG9tUmVwcmVz
ZW50YXRpb25WaWV3OihVSVZpZXcgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+ICopdmlldzsKKy0g
KHZvaWQpX2RpZFVuaW5zdGFsbEN1c3RvbVJlcHJlc2VudGF0aW9uVmlldzsKICNlbmRpZgogQGVu
ZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUmVw
cmVzZW50YXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3Vz
dG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uM2RlZTMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIuaApAQCAtMCwwICsxLDkzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXJfaAorI2RlZmlu
ZSBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXJfaAorCisjaW1wb3J0IDxXZWJLaXQyL1dLRm91
bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIFBMQVRGT1JNKElPUykKKwor
I2ltcG9ydCA8b2JqYy9vYmpjLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8
d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitPQkpD
X0NMQVNTIFdLV2ViVmlldzsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIEFQSS4KK0Bwcm90
b2NvbCBXS0N1c3RvbVJlcHJlc2VudGF0aW9uIDxOU09iamVjdD4KKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZTsKKworLSAodm9pZClzZXREYXRhOihDRkRhdGFS
ZWYpZGF0YTsKKworI2lmIFBMQVRGT1JNKElPUykKKy0gKHZvaWQpc2V0Q29udGVudEluc2V0OihV
SUVkZ2VJbnNldHMpaW5zZXRzOworI2VuZGlmCisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0cnVjdCBDdXN0b21SZXByZXNlbnRhdGlvbiB7CisgICAgQ2xhc3MgcmVwcmVzZW50YXRp
b25DbGFzczsKKyAgICBTdHJpbmcgbWltZVR5cGU7Cit9OworCitjbGFzcyBDdXN0b21SZXByZXNl
bnRhdGlvbk1hbmFnZXIgeworcHVibGljOgorICAgIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdl
cihXS1dlYlZpZXcgKndlYlZpZXcpOworICAgIH5DdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIo
KTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCByZWdpc3RlcmluZyBhIGN1c3Rv
bSByZXByZXNlbnRhdGlvbiBmb3IgYSBzY2hlbWUgdG9vLgorICAgIHZvaWQgcmVnaXN0ZXJDdXN0
b21SZXByZXNlbnRhdGlvbkZvck1JTUVUeXBlKEN1c3RvbVJlcHJlc2VudGF0aW9uLCBTdHJpbmcg
bWltZVR5cGUpOworICAgIENsYXNzIGNsYXNzRm9yUmVwcmVzZW50YXRpb24oU3RyaW5nIG1pbWVU
eXBlKTsKKworICAgIFVJVmlldyA8V0tDdXN0b21SZXByZXNlbnRhdGlvbj4gKnZpZXcoKSB7IHJl
dHVybiBtX2N1cnJlbnRWaWV3LmdldCgpOyB9CisKKyAgICB2b2lkIGluc3RhbnRpYXRlQ3VzdG9t
UmVwcmVzZW50YXRpb24oU3RyaW5nIGxvYWRlZE1pbWVUeXBlKTsKKyAgICB2b2lkIGNsZWFyQ3Vz
dG9tUmVwcmVzZW50YXRpb24oKTsKKyAgICB2b2lkIHNldERhdGFGb3JDdXN0b21SZXByZXNlbnRh
dGlvbihDRkRhdGFSZWYpOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxVSVZpZXcgPFdLQ3Vz
dG9tUmVwcmVzZW50YXRpb24+PiBtX2N1cnJlbnRWaWV3OworCisgICAgSGFzaE1hcDxTdHJpbmcs
IEN1c3RvbVJlcHJlc2VudGF0aW9uLCBDYXNlRm9sZGluZ0hhc2g+IG1fY3VzdG9tUmVwcmVzZW50
YXRpb25zRm9yTUlNRVR5cGVzOworCisgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFn
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3RvbVJl
cHJlc2VudGF0aW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9D
dXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNGNhMWM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIubW0KQEAgLTAsMCArMSw5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ3VzdG9tUmVwcmVz
ZW50YXRpb25NYW5hZ2VyLmgiCisKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAi
V0tXZWJWaWV3SW50ZXJuYWwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0N1c3RvbVJlcHJl
c2VudGF0aW9uTWFuYWdlcjo6Q3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyKFdLV2ViVmlldyAq
d2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCitDdXN0b21SZXByZXNl
bnRhdGlvbk1hbmFnZXI6On5DdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIoKQoreworfQorCit2
b2lkIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcjo6cmVnaXN0ZXJDdXN0b21SZXByZXNlbnRh
dGlvbkZvck1JTUVUeXBlKEN1c3RvbVJlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uLCBTdHJp
bmcgbWltZVR5cGUpCit7CisgICAgaWYgKG1fY3VzdG9tUmVwcmVzZW50YXRpb25zRm9yTUlNRVR5
cGVzLmNvbnRhaW5zKG1pbWVUeXBlKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBy
ZWdpc3RlciB0d28gY3VzdG9tIHJlcHJlc2VudGF0aW9ucyBmb3IgdGhlIHNhbWUgTUlNRSB0eXBl
LlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXByZXNlbnRhdGlvbi5taW1l
VHlwZSA9IG1pbWVUeXBlOworCisgICAgbV9jdXN0b21SZXByZXNlbnRhdGlvbnNGb3JNSU1FVHlw
ZXMuYWRkKG1pbWVUeXBlLCByZXByZXNlbnRhdGlvbik7CisKKyAgICBtX3dlYlZpZXctPl9wYWdl
LT5hZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbihtaW1lVHlwZSk7Cit9CisKK0Ns
YXNzIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcjo6Y2xhc3NGb3JSZXByZXNlbnRhdGlvbihT
dHJpbmcgbWltZVR5cGUpCit7CisgICAgZm9yIChhdXRvJiByZXByZXNlbnRhdGlvbiA6IG1fY3Vz
dG9tUmVwcmVzZW50YXRpb25zRm9yTUlNRVR5cGVzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChy
ZXByZXNlbnRhdGlvbi5taW1lVHlwZSA9PSBtaW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXByZXNlbnRhdGlvbi5yZXByZXNlbnRhdGlvbkNsYXNzOworICAgIH0KKworICAgIHJldHVybiBu
aWw7Cit9CisKK3ZvaWQgQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyOjppbnN0YW50aWF0ZUN1
c3RvbVJlcHJlc2VudGF0aW9uKFN0cmluZyBsb2FkZWRNaW1lVHlwZSkKK3sKKyAgICBpZiAobV9j
dXJyZW50VmlldykKKyAgICAgICAgW21fY3VycmVudFZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107
CisKKyAgICBDbGFzcyBjdXN0b21SZXByZXNlbnRhdGlvbkNsYXNzID0gY2xhc3NGb3JSZXByZXNl
bnRhdGlvbihsb2FkZWRNaW1lVHlwZSk7CisgICAgbV9jdXJyZW50VmlldyA9IGFkb3B0TlMoW1tj
dXN0b21SZXByZXNlbnRhdGlvbkNsYXNzIGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9d
KTsKKworICAgIFttX3dlYlZpZXcgX2luc3RhbGxDdXN0b21SZXByZXNlbnRhdGlvblZpZXc6bV9j
dXJyZW50Vmlldy5nZXQoKV07Cit9CisKK3ZvaWQgQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2Vy
OjpjbGVhckN1c3RvbVJlcHJlc2VudGF0aW9uKCkKK3sKKyAgICBbbV9jdXJyZW50VmlldyByZW1v
dmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBtX2N1cnJlbnRWaWV3ID0gbmlsOworCisgICAgW21fd2Vi
VmlldyBfZGlkVW5pbnN0YWxsQ3VzdG9tUmVwcmVzZW50YXRpb25WaWV3XTsKK30KKwordm9pZCBD
dXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXI6OnNldERhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlv
bihDRkRhdGFSZWYgZGF0YSkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50Vmlldyk7CisgICAgW21f
Y3VycmVudFZpZXcgc2V0RGF0YTpkYXRhXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBiOTRkOTBhLi4xNjhjZTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3Rv
bVJlcHJlc2VudGF0aW9uKSA9IDA7CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAg
ICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKSA9IDA7CkBAIC0yNTYsNiArMjU2LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICB2aXJ0dWFsIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSA9IDA7CiAjZW5kaWYKKworICAgIC8vIEN1c3Rv
bSByZXByZXNlbnRhdGlvbnMuCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRh
Rm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDEyOGRl
ZTIuLjNiMGYyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0zMTAsNiArMzEwLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fc3Bl
bGxEb2N1bWVudFRhZygwKQogICAgICwgbV9oYXNTcGVsbERvY3VtZW50VGFnKGZhbHNlKQogICAg
ICwgbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQoMCkKKyAgICAsIG1fbWFp
bkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2RlbGVnYXRlc1Nj
cm9sbGluZyhmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhcihm
YWxzZSkKICAgICAsIG1fbWFpbkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIoZmFsc2UpCkBAIC0y
MjM1LDcgKzIyMzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2Fs
bGJhY2tzKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgSVBDOjpNZXNzYWdlRGVjb2RlciYg
ZGVjb2RlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24sIHVpbnQzMl90IG9wYXF1ZUZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxBUEk6Ok9iamVj
dD4gdXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVj
b2Rlcih1c2VyRGF0YSwgcHJvY2VzcygpKTsKQEAgLTIyNDksNyArMjI1MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklECiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAg
ICAgbV9wYWdlTG9hZFN0YXRlLmRpZENvbW1pdExvYWQodHJhbnNhY3Rpb24pOwotICAgICAgICBt
X3BhZ2VDbGllbnQuZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSgpOworICAgICAgICBtX3BhZ2VD
bGllbnQuZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21S
ZXByZXNlbnRhdGlvbik7CiAgICAgfQogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTIyNjQsNiArMjI2
NSwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiAgICAgZnJhbWUtPmRpZENvbW1pdExv
YWQobWltZVR5cGUsIGNlcnRpZmljYXRlSW5mbyk7CiAKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpIHsKKyAgICAgICAgbV9tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiA9IGZy
YW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247CisKKyAgICAgICAgaWYgKG1fbWFpbkZyYW1lSGFz
Q3VzdG9tUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgIC8vIEFsd2F5cyBhc3N1bWUgdGhh
dCB0aGUgbWFpbiBmcmFtZSBpcyBwaW5uZWQgaGVyZSwgc2luY2UgdGhlIGN1c3RvbSByZXByZXNl
bnRhdGlvbiB2aWV3IHdpbGwgaGFuZGxlCisgICAgICAgICAgICAvLyBhbnkgd2hlZWwgZXZlbnRz
IGFuZCBkaXNwYXRjaCB0aGVtIHRvIHRoZSBXS1ZpZXcgd2hlbiBuZWNlc3NhcnkuCisgICAgICAg
ICAgICBtX21haW5GcmFtZUlzUGlubmVkVG9MZWZ0U2lkZSA9IHRydWU7CisgICAgICAgICAgICBt
X21haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGUgPSB0cnVlOworICAgICAgICAgICAgbV9tYWlu
RnJhbWVJc1Bpbm5lZFRvVG9wU2lkZSA9IHRydWU7CisgICAgICAgICAgICBtX21haW5GcmFtZUlz
UGlubmVkVG9Cb3R0b21TaWRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3BhZ2VDbGll
bnQuZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21SZXBy
ZXNlbnRhdGlvbik7CisgICAgfQorCiAgICAgLy8gRXZlbiBpZiBXZWJQYWdlIGhhcyB0aGUgZGVm
YXVsdCBwYWdlU2NhbGVGYWN0b3IgKGFuZCB0aGVyZWZvcmUgZG9lc24ndCByZXNldCBpdCksCiAg
ICAgLy8gV2ViUGFnZVByb3h5J3MgY2FjaGUgb2YgdGhlIHZhbHVlIGNhbiBnZXQgb3V0IG9mIHN5
bmMgKGUuZy4gaW4gdGhlIGNhc2Ugd2hlcmUgYQogICAgIC8vIHBsdWdpbiBpcyBoYW5kbGluZyBw
YWdlIHNjYWxpbmcgaXRzZWxmKSBzbyB3ZSBzaG91bGQgcmVzZXQgaXQgdG8gdGhlIGRlZmF1bHQK
QEAgLTQyMzYsNiArNDI1MSwxMSBAQCBib29sIFdlYlBhZ2VQcm94eTo6d2lsbEhhbmRsZUhvcml6
b250YWxTY3JvbGxFdmVudHMoKSBjb25zdAogICAgIHJldHVybiAhbV9jYW5TaG9ydENpcmN1aXRI
b3Jpem9udGFsV2hlZWxFdmVudHM7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hM
b2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sKKyAg
ICBtX3BhZ2VDbGllbnQuZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlv
bihzdWdnZXN0ZWRGaWxlbmFtZSwgZGF0YVJlZmVyZW5jZSk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
b3h5OjpiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKIHsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShp
dGVtSUQpLCBtX3BhZ2VJRCk7CkBAIC00NTQwLDQgKzQ1NjAsOSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlIHNjYWxlKQogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VGh1bWJuYWlsU2NhbGUoc2NhbGUpLCBtX3BhZ2VJRCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjphZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb24obWltZVR5cGUp
LCBtX3BhZ2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQxZTFkMTguLmI0ZjUyOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ1MSw2ICs0NTEsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBjb25zdDsKICAgICBib29sIGlzUHJvY2Vz
c1N1cHByZXNzaWJsZSgpIGNvbnN0OwogCisgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIHZvaWQgZXhlY3V0
ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpOwogICAgIHZvaWQgdmFsaWRh
dGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIFBhc3NSZWZQdHI8VmFsaWRhdGVD
b21tYW5kQ2FsbGJhY2s+KTsKICNpZiBQTEFURk9STShJT1MpCkBAIC05NDAsNyArOTQyLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotICAgIHZvaWQgZGlkQ29t
bWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbVJlcHJlc2Vu
dGF0aW9uLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKQEAgLTExNDgs
NiArMTE1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
KyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7
CiAgICAgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdp
bkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93
SGFzRm9jdXMpOwogICAgIHZvaWQgc2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2
NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB1aW50NjRfdCBjb21wbGV4VGV4
dElucHV0U3RhdGUpOwogI2VuZGlmCkBAIC0xMzg2LDYgKzEzODksOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNTcGVsbERvY3VtZW50VGFnOwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ0xlYXJu
T3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50OwogCisgICAgYm9vbCBtX21haW5GcmFtZUhhc0N1c3Rv
bVJlcHJlc2VudGF0aW9uOworCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBXZWJDb3Jl
OjpEcmFnU2Vzc2lvbiBtX2N1cnJlbnREcmFnU2Vzc2lvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTQ1MmI3
NS4uNGRhYmU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0xMjEsNyArMTIxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHVybCwgU3RyaW5nIHVucmVhY2hhYmxl
VVJMLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBW
YXJpYWRpYwogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHVy
bCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFy
aWFkaWMKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRp
YwotICAgIERpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCisgICAgRGlkQ29tbWl0TG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1p
bWVUeXBlLCBib29sIGhhc0N1c3RvbVJlcHJlc2VudGF0aW9uLCB1aW50MzJfdCBsb2FkVHlwZSwg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKICAgICBEaWRGYWls
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKICAgICBEaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCkBAIC0xMzcsNiArMTM3
LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIEZyYW1lRGlkQmVjb21lRnJh
bWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKIAorICAgICMgQ3VzdG9tIHJlcHJl
c2VudGF0aW9ucworICAgIERpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRp
b24oU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKwog
ICAgICMgRm9ybXMgbWVzc2FnZXMKICAgICBXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4gdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OkluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggZDliNGRk
NC4uYWU3ZDQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaApAQCAtMzIsNyArMzIsOCBAQAogI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eS5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1AY2xhc3MgV0tDb250
ZW50VmlldzsKK09CSkNfQ0xBU1MgV0tDb250ZW50VmlldzsKK09CSkNfQ0xBU1MgV0tXZWJWaWV3
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKQEAgLTQyLDcgKzQzLDcgQEAgY2xhc3MgUGFn
ZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudAogI2VuZGlmCiAgICAgewogcHVibGljOgot
ICAgIGV4cGxpY2l0IFBhZ2VDbGllbnRJbXBsKFdLQ29udGVudFZpZXcgKik7CisgICAgZXhwbGlj
aXQgUGFnZUNsaWVudEltcGwoV0tDb250ZW50VmlldyAqLCBXS1dlYlZpZXcgKndlYlZpZXcpOwog
ICAgIHZpcnR1YWwgflBhZ2VDbGllbnRJbXBsKCk7CiAgICAgCiBwcml2YXRlOgpAQCAtNjMsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgV2ViU2VjdXJp
dHlPcmlnaW4mLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpIG92ZXJyaWRlOwpAQCAtMTI5LDcgKzEzMCwx
MCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZmluYWxGcmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRlOworCiAgICAg
V0tDb250ZW50VmlldyAqbV9jb250ZW50VmlldzsKKyAgICBXS1dlYlZpZXcgKm1fd2ViVmlldzsK
IH07CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggZjllODAxMy4uNGM1MWZiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbXBvcnQgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbXBvcnQg
IkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRW
aWV3LmgiCkBAIC00MCw2ICs0MSw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVu
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCisjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgorCiBAaW50ZXJmYWNlIFVJVmlldyAoSVBJKQogLSAoVUlTY3JvbGxWaWV3
ICopX3Njcm9sbGVyOwogQGVuZApAQCAtNDgsOCArNTEsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbChXS0NvbnRlbnRWaWV3ICp2aWV3KQotICAgIDogbV9jb250ZW50Vmlldyh2aWV3KQorUGFn
ZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdLQ29udGVudFZpZXcgKmNvbnRlbnRWaWV3LCBX
S1dlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX2NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQorICAg
ICwgbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiB9CiAKQEAgLTE0NSw4ICsxNDksOSBAQCBib29sIFBh
Z2VDbGllbnRJbXBsOjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KFdlYkZyYW1lUHJveHkmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUGFnZUNsaWVudElt
cGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlk
Q29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1
c3RvbVJlcHJlc2VudGF0aW9uKQogeworICAgIFttX3dlYlZpZXcgX3NldFBhZ2VIYXNDdXN0b21S
ZXByZXNlbnRhdGlvbjp1c2VDdXN0b21SZXByZXNlbnRhdGlvbiBsb2FkZWRNSU1FVHlwZTptaW1l
VHlwZV07CiAgICAgW21fY29udGVudFZpZXcgX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWVdOwog
fQogCkBAIC00MDAsNiArNDA1LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmJlZ2FuRXhpdEZ1
bGxTY3JlZW4oY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKQogCiAjZW5kaWYgLy8gRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hMb2Fk
aW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3sKKyAgICBb
bV93ZWJWaWV3IF9kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lIGRhdGFSZWZlcmVuY2U6ZGF0YVJl
ZmVyZW5jZV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CmluZGV4IDNmMmY1ZDAuLmIxYTkyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTc1LDcgKzc1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAogICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHNlbGYpOworICAgIF9wYWdlQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CiAKICAgICBf
cGFnZSA9IGNvbnRleHQuY3JlYXRlV2ViUGFnZSgqX3BhZ2VDbGllbnQsIHN0ZDo6bW92ZSh3ZWJQ
YWdlQ29uZmlndXJhdGlvbikpOwogICAgIF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODIxMGU1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIkN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdl
ci5oIgorI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBXS1BERlZpZXcgOiBVSVZp
ZXcgPFVJU2Nyb2xsVmlld0RlbGVnYXRlLCBXS0N1c3RvbVJlcHJlc2VudGF0aW9uPgorCitAZW5k
CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tQREZWaWV3Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMzYyMjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmll
dy5tbQpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiV0tQREZWaWV3LmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgPENvcmVQREYvVUlQREZEb2N1bWVudC5oPgorI2ltcG9y
dCA8Q29yZVBERi9VSVBERlBhZ2VWaWV3Lmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorCitA
aW50ZXJmYWNlIFdLUERGVmlldyAoKSB7CisgICAgUmV0YWluUHRyPFVJUERGRG9jdW1lbnQ+IF9w
ZGZEb2N1bWVudDsKKyAgICBSZXRhaW5QdHI8VUlTY3JvbGxWaWV3PiBfc2Nyb2xsVmlldzsKKyAg
ICBSZXRhaW5QdHI8VUlWaWV3PiBfZG9jdW1lbnRWaWV3OworICAgIFZlY3RvcjxVSVBERlBhZ2VW
aWV3Kj4gX3BhZ2VWaWV3czsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUERGVmlldwor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICBfc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tVSVNjcm9sbFZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6ZnJhbWVdKTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0TWluaW11bVpvb21TY2Fs
ZToxXTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTo1XTsKKyAgICBbX3Nj
cm9sbFZpZXcgc2V0RGVsZWdhdGU6c2VsZl07CisKKyAgICBfZG9jdW1lbnRWaWV3ID0gYWRvcHRO
UyhbW1VJVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbX3Njcm9sbFZpZXcgYm91bmRzXV0pOwor
ICAgIFtfc2Nyb2xsVmlldyBhZGRTdWJ2aWV3Ol9kb2N1bWVudFZpZXcuZ2V0KCldOworCisgICAg
W3NlbGYgYWRkU3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07CisKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZClzZXRGcmFtZTooQ0dSZWN0KWZyYW1lCit7CisgICAgW3N1cGVyIHNldEZy
YW1lOmZyYW1lXTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0RnJhbWU6ZnJhbWVdOworCisgICAgW3Nl
bGYgbGF5b3V0Vmlld3NdOworfQorCistICh2b2lkKXNldENvbnRlbnRJbnNldDooVUlFZGdlSW5z
ZXRzKWNvbnRlbnRJbnNldAoreworICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50SW5zZXQ6Y29u
dGVudEluc2V0XTsKK30KKworLSAodm9pZClzZXREYXRhOihDRkRhdGFSZWYpZGF0YQoreworICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlcj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSkpOworICAgIFJldGFpblB0cjxDR1BERkRvY3Vt
ZW50UmVmPiBjZ1BERkRvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFBy
b3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOworICAgIF9wZGZEb2N1bWVudCA9IGFkb3B0TlMo
W1tVSVBERkRvY3VtZW50IGFsbG9jXSBpbml0V2l0aENHUERGRG9jdW1lbnQ6Y2dQREZEb2N1bWVu
dC5nZXQoKV0pOworCisgICAgZm9yIChOU1VJbnRlZ2VyIHBhZ2UgPSAwOyBwYWdlIDwgW19wZGZE
b2N1bWVudCBudW1iZXJPZlBhZ2VzXTsgKytwYWdlKSB7CisgICAgICAgIFVJUERGUGFnZSAqcGRm
UGFnZSA9IFtfcGRmRG9jdW1lbnQgcGFnZUF0SW5kZXg6cGFnZV07CisKKyAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBjcmVhdGUgYW5kIGRlc3Ryb3kgdmlld3MgaW5zdGVhZCBvZiBkZXBlbmRp
bmcgb24gdGlsaW5nLgorICAgICAgICBSZXRhaW5QdHI8VUlQREZQYWdlVmlldz4gcGFnZVZpZXcg
PSBhZG9wdE5TKFtbVUlQREZQYWdlVmlldyBhbGxvY10gaW5pdFdpdGhQYWdlOnBkZlBhZ2UgdGls
ZWRDb250ZW50OllFU10pOworICAgICAgICBbX2RvY3VtZW50VmlldyBhZGRTdWJ2aWV3OnBhZ2VW
aWV3LmdldCgpXTsKKyAgICAgICAgX3BhZ2VWaWV3cy5hcHBlbmQocGFnZVZpZXcuZ2V0KCkpOwor
CisgICAgICAgIFtbcGFnZVZpZXcgY29udGVudExheWVyXSBzZXRDb250ZW50c1NjYWxlOnNlbGYu
d2luZG93LnNjcmVlbi5zY2FsZV07CisgICAgfQorCisgICAgW3NlbGYgbGF5b3V0Vmlld3NdOwor
fQorCistICh2b2lkKWxheW91dFZpZXdzCit7CisgICAgQ0dSZWN0IHBhZ2VGcmFtZSA9IFtzZWxm
IGJvdW5kc107CisKKyAgICBmb3IgKGF1dG8mIHBhZ2VWaWV3IDogX3BhZ2VWaWV3cykgeworICAg
ICAgICBDR1NpemUgcGFnZVNpemUgPSBbcGFnZVZpZXcucGFnZSBzaXplXTsKKworICAgICAgICBw
YWdlRnJhbWUuc2l6ZS5oZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQgLyBwYWdlU2l6ZS53aWR0aCAq
IHBhZ2VGcmFtZS5zaXplLndpZHRoOworICAgICAgICBbcGFnZVZpZXcgc2V0RnJhbWU6cGFnZUZy
YW1lXTsKKworICAgICAgICBwYWdlRnJhbWUub3JpZ2luLnkgKz0gcGFnZUZyYW1lLnNpemUuaGVp
Z2h0OworICAgIH0KKworICAgIFtfZG9jdW1lbnRWaWV3LmdldCgpIHNldEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgcGFnZUZyYW1lLnNpemUud2lkdGgsIHBhZ2VGcmFtZS5vcmlnaW4ueSldOworICAg
IFtfc2Nyb2xsVmlldyBzZXRDb250ZW50U2l6ZTpbX2RvY3VtZW50VmlldyBmcmFtZV0uc2l6ZV07
Cit9CisKKyNwcmFnbWEgbWFyayBVSVNjcm9sbFZpZXdEZWxlZ2F0ZSBtZXRob2RzCisKKy0gKFVJ
VmlldyAqKXZpZXdGb3Jab29taW5nSW5TY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxW
aWV3Cit7CisgICAgcmV0dXJuIF9kb2N1bWVudFZpZXcuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2Ny
b2xsVmlld0RpZEVuZFpvb21pbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZpZXc6
KFVJVmlldyAqKXZpZXcgYXRTY2FsZTooQ0dGbG9hdClzY2FsZQoreworfQorCitAZW5kCisKKyNl
bmRpZiAvKiBQTEFURk9STShJT1MpICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggNzIxYWY1Ni4uYjdhNjJiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtNzksNyArNzksOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25zdCBTdHJpbmcm
IG5ld1Rvb2xUaXApOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1l
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21SZXByZXNlbnRhdGlvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25z
dCBXZWJDb3JlOjpDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50
aWxNb3VzZU1vdmVzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFBy
b3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCAzODc5YmU2Li45
MzJhYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwubW0KQEAgLTI4NSw3ICsyODUsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dG9vbFRpcENo
YW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25zdCBTdHJpbmcmIG5ld1QKICAgICBb
bV93a1ZpZXcgX3Rvb2xUaXBDaGFuZ2VkRnJvbTpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKG9s
ZFRvb2xUaXApIHRvOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcobmV3VG9vbFRpcCldOwogfQog
Ci12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCkKK3ZvaWQg
UGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCB1c2VDdXN0b21SZXByZXNlbnRhdGlvbikKK3sKK30KKwordm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMjlkYTM1Li5lY2QzZWY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDcs
NiArNTA3LDggQEAKIAkJMkRBMDQ5QjQxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXll
clJlbW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oICovOyB9
OwogCQkyREEwNDlCNzE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTA0OUI1
MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwICovOyB9OwogCQky
REEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEwNDlCNjE4MENDRDBB
MDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi87IH07CisJCTJEQTFFNEZFMThD
MDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTFFNEZDMThDMDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcu
aCAqLzsgfTsKKwkJMkRBMUU0RkYxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTFFNEZEMThDMDJC
NkEwMERCQzkyOSAvKiBXS1BERlZpZXcubW0gKi87IH07CiAJCTJEQTk0NDk1MTg4NEUzQjUwMEVE
ODZEQiAvKiBXS1ZpZXdJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREE5NDQ4NjE4ODRFM0I1MDBFRDg2REIgLyogV0tWaWV3SU9TLm1tICovOyB9
OwogCQkyREE5NDQ5RTE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0
NDk3MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICovOyB9
OwogCQkyREE5NDQ5RjE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDk4
MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tICovOyB9OwpAQCAt
NTI2LDYgKzUyOCw4IEBACiAJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRBQ0U2NEQxOEFEQkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFs
LmggKi87IH07CiAJCTJEQUYwNkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREFGMDZENDE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5oICovOyB9OwogCQkyREFGMDZENzE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEQUYwNkQ1MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyLm1tICovOyB9OworCQkyREM2RDlDMzE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9t
UmVwcmVzZW50YXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50
YXRpb25NYW5hZ2VyLmggKi87IH07CisJCTJEQzZEOUM0MThDNDRBNjEwMDQzQkFENCAvKiBDdXN0
b21SZXByZXNlbnRhdGlvbk1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREM2RDlDMjE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVz
ZW50YXRpb25NYW5hZ2VyLm1tICovOyB9OwogCQkyRERFMEFGQTE4Mjk4Q0M5MDBGOTdFQUEgLyog
UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMEFGODE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi87IH07CiAJCTJEREUwQUZCMTgyOThDQzkwMEY5
N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEg
LyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovOyB9OwogCQkyREU2OTQzRDE4
QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0yMjYwLDYgKzIyNjQsOCBAQAogCQkyREEwNDlC
MjE4MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREEwNDlCNTE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
QTA0OUI2MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllckNBUmVtb3RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQTFFNEZDMThDMDJCNkEwMERCQzkyOSAvKiBXS1BE
RlZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQREZWaWV3Lmg7IHBh
dGggPSBpb3MvV0tQREZWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQTFF
NEZEMThDMDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXS1BERlZpZXcubW07IHBhdGggPSBpb3MvV0tQREZWaWV3Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ4NjE4ODRFM0I1MDBFRDg2REIg
LyogV0tWaWV3SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
V0tWaWV3SU9TLm1tOyBwYXRoID0gaW9zL1dLVmlld0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRBOTQ0OTcxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYktleWJvYXJk
RXZlbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tOyBwYXRoID0gaW9zL05hdGl2ZVdlYktleWJvYXJkRXZl
bnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NDk4MTg4NEU0RjAw
MEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbTsgcGF0aCA9IGlv
cy9OYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjI4MCwxMCArMjI4NiwxMiBAQAogCQkyREFGMDZENDE4QkQxQTQ3MDA4MUNFQjEgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmg7IHBhdGggPSBpb3MvU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREFG
MDZENTE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIubW07IHBhdGggPSBpb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBRjA2RDgxOEJEMjNCQTAwODFDRUIx
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgcGF0aCA9IGlvcy9TbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbVJlcHJlc2VudGF0
aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREM2RDlDMjE4QzQ0
QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2Vy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5MDBGOTdF
QUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREU2OTQzQzE4QkQyQTY4
MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJN
ZXNzYWdlcy5oOyBwYXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU2
OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5
NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tOyBwYXRoID0gaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlm
aWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8q
IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDEzMSw2ICs0MTM5LDggQEAKIAkJMUFCQzNERjIxODk5RTQxNTAwNEYwNjI2IC8q
IENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQky
REM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLmgg
Ki8sCisJCQkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9u
TWFuYWdlci5tbSAqLywKIAkJCQkwRjBDMzY1OTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJSZXBy
ZXNlbnRhdGlvbi5oICovLAogCQkJCTFBNDIyRjhEMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5
Q2xpZW50LmggKi8sCiAJCQkJMUE0MjJGOEMxOEIyOUM2NDAwRDhDRDk2IC8qIEhpc3RvcnlDbGll
bnQubW0gKi8sCkBAIC00MzMyLDYgKzQzNDIsOCBAQAogCQkJCTBGQ0I0RTM3MThCQkUwNDQwMDBG
Q0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5tbSAqLywKIAkJCQkwRjBDMzY1NzE4QzA1MUJBMDBG
NjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLywKIAkJCQkwRjBDMzY1QjE4QzA1
Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSAqLywK
KwkJCQkyREExRTRGQzE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3LmggKi8sCisJCQkJMkRB
MUU0RkQxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5tbSAqLywKIAkJCQkyREE5NDRBOTE4
ODRFOUJBMDBFRDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gKi8sCiAJCQkJMkRGOTU5MzQxOEE0
MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLywKIAkJCQkyREFG
MDZENDE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oICov
LApAQCAtNjczOSw2ICs2NzUxLDcgQEAKIAkJCQkzRjg3QjlDMDE1ODk0MEQ4MDA5MEZGNjIgLyog
V2ViQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MjkwMTQ3MzEyQkUwMDZD
NjgxQSAvKiBXZWJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU1NDE4QkJF
MDQ0MDAwRkNGQzkgLyogV0tTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkyREM2RDlD
MzE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MjE0NzMx
MkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUExRkVDMUQxNjI3QjQ1NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC02Nzg3LDYgKzY4MDAsNyBAQAogCQkJCUJDMDMyRDdCMTBGNDM3OEQwMDU4
QzE1QSAvKiBXZWJEcmFnQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwRUY5RjEyMzMy
NjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNjREMzYxODk3ODFDNDAwNEIyRkVCIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMkRBMUU0RkUxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMwMzJEN0QxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkVkaXRvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODQwNTUz
MThCODZFRDYwMDIyQzM4QiAvKiBWaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTc5NDksNiArNzk2Myw3IEBACiAJCQkJMzdEMEI1QzgxODQ1MjMyNzAwRjZD
RTdEIC8qIFdLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcubSBpbiBTb3VyY2VzICovLAogCQkJCUNE
NUM2NkEwMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NTQyMkNCMTgwNjUwMDIwMDQ2RjZBOCAvKiBX
ZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyREExRTRGRjE4QzAy
QjZBMDBEQkM5MjkgLyogV0tQREZWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBOEM2QTgx
MUUzQkE1RjAwODEyRkI3IC8qIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkNCNEU2NzE4QkJFM0Q5MDAwRkNGQzkgLyogV0tQcmludGluZ1Zp
ZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUFCMDM3QzE4NUY5OUQ4MDBFREY1MDEgLyogQVBJ
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgwMTAsNiArODAyNSw3IEBACiAJCQkJNTFDQkJB
MEYxNjUyMTlCNjAwNUJFOEZEIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxODI5REE1MTYzN0M3MEMwMDA5NTNENiAvKiBOZXR3b3JrUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkMwNjkwMTYzOTBF
NjkwMEFCQjkxMSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMkRDNkQ5QzQxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0
aW9uTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhG
RSAvKiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUEy
RUM1NTE0ODk5ODJFMDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2MUUxNDhGRjgyQzAwQkEyQTM5IC8qIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZWNjNzcxZS4uNjgwN2FiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKICAgICA6IG1fZnJhbWUoMCkKICAgICAs
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3KGZhbHNlKQogICAgICwgbV9kaWRDb21wbGV0
ZVBhZ2VUcmFuc2l0aW9uQWxyZWFkeShmYWxzZSkKKyAgICAsIG1fZnJhbWVIYXNDdXN0b21SZXBy
ZXNlbnRhdGlvbihmYWxzZSkKICAgICAsIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZShmYWxzZSkK
IHsKIH0KQEAgLTEwOSw2ICsxMTAsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJh
bWVMb2FkZXJEZXN0cm95ZWQoKQogICAgIG1fZnJhbWUtPmRlcmVmKCk7CiB9CiAKK2Jvb2wgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6Omhhc0hUTUxWaWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1f
ZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbjsKK30KKwogYm9vbCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6aGFzV2ViVmlldygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKTsK
QEAgLTQ0NSw4ICs0NTEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENvbW1pdExvYWQoKQogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAKLSAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZSht
X2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVu
dExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2Fk
ZXIoKS5sb2FkVHlwZSgpLCBDZXJ0aWZpY2F0ZUluZm8oZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KSksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwot
CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2Fk
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQo
KSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9t
UmVwcmVzZW50YXRpb24sIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgp
LCBDZXJ0aWZpY2F0ZUluZm8oZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKSksIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogICAgIHdlYlBhZ2UtPmRp
ZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKQEAgLTg1Miw2ICs4NTcsMTAgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CisgICAgLy8gSWYgd2UncmUgbG9h
ZGluZyBhIGN1c3RvbSByZXByZXNlbnRhdGlvbiwgd2UgZG9uJ3Qgd2FudCB0byBoYW5kIG9mZiB0
aGUgZGF0YSB0byBXZWJDb3JlLgorICAgIGlmIChtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRp
b24pCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9wbHVnaW5WaWV3KQogICAgICAgICBs
b2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKIApAQCAtODc4LDIyICs4ODcsMzMgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXQKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKCFtX3BsdWdp
blZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHdlIGp1c3QgcmVjZWl2ZWQgYW4g
ZW1wdHkgcmVzcG9uc2Ugd2l0aG91dCBhbnkgZGF0YSwgd2Ugd29uJ3QgaGF2ZSBzZW50IGEgcmVz
cG9uc2UgdG8gdGhlIHBsdWctaW4gdmlldy4KLSAgICAvLyBNYWtlIHN1cmUgdG8gZG8gdGhpcyBi
ZWZvcmUgY2FsbGluZyBtYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZy4KLSAgICBpZiAoIW1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3KSB7Ci0gICAgICAgIG1fcGx1Z2luVmlldy0+bWFudWFs
TG9hZERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPnJlc3BvbnNlKCkpOworICAgIGlmICghbV9w
bHVnaW5WaWV3KSB7CisgICAgICAgIGlmIChtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24p
IHsKKyAgICAgICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAg
ICAgICAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IC8vIFByb3RlY3QgYWdhaW5zdCB0aGUgYWJvdmUgY2FsbCBudWxsaW5nIG91dCB0aGUgcGx1Zy1p
biAoYnkgdHJ5aW5nIHRvIGNhbmNlbCB0aGUgbG9hZCBmb3IgZXhhbXBsZSkuCi0gICAgICAgIGlm
ICghbV9wbHVnaW5WaWV3KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgUmVmUHRy
PFJlc291cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7CisgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+ZGF0YSgpIDogMCksIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihsb2Fk
ZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOworICAg
ICAgICB9CiAgICAgfQogCi0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkRmluaXNoTG9h
ZGluZygpOwotICAgIG1fcGx1Z2luVmlldyA9IDA7Ci0gICAgbV9oYXNTZW50UmVzcG9uc2VUb1Bs
dWdpblZpZXcgPSBmYWxzZTsKKyAgICBpZiAobV9wbHVnaW5WaWV3KSB7CisgICAgICAgIC8vIElm
IHdlIGp1c3QgcmVjZWl2ZWQgYW4gZW1wdHkgcmVzcG9uc2Ugd2l0aG91dCBhbnkgZGF0YSwgd2Ug
d29uJ3QgaGF2ZSBzZW50IGEgcmVzcG9uc2UgdG8gdGhlIHBsdWctaW4gdmlldy4KKyAgICAgICAg
Ly8gTWFrZSBzdXJlIHRvIGRvIHRoaXMgYmVmb3JlIGNhbGxpbmcgbWFudWFsTG9hZERpZEZpbmlz
aExvYWRpbmcuCisgICAgICAgIGlmICghbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcpIHsK
KyAgICAgICAgICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShs
b2FkZXItPnJlc3BvbnNlKCkpOworCisgICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgdGhl
IGFib3ZlIGNhbGwgbnVsbGluZyBvdXQgdGhlIHBsdWctaW4gKGJ5IHRyeWluZyB0byBjYW5jZWwg
dGhlIGxvYWQgZm9yIGV4YW1wbGUpLgorICAgICAgICAgICAgaWYgKCFtX3BsdWdpblZpZXcpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9wbHVnaW5WaWV3
LT5tYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZygpOworICAgICAgICBtX3BsdWdpblZpZXcgPSAw
OworICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IGZhbHNlOworICAgIH0K
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCkBA
IC0xMTY2LDYgKzExODYsMTIgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRm
b3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUq
KQogeworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgYm9vbCBp
c01haW5GcmFtZSA9IHdlYlBhZ2UtPm1haW5XZWJGcmFtZSgpID09IG1fZnJhbWU7CisKKyAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOworICAgIG1fZnJhbWVIYXNDdXN0
b21SZXByZXNlbnRhdGlvbiA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnNob3VsZFVzZUN1c3Rv
bVJlcHJlc2VudGF0aW9uRm9yUmVzcG9uc2UocmVzcG9uc2UpOworICAgIG1fZnJhbWVDYW1lRnJv
bVBhZ2VDYWNoZSA9IHRydWU7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQpAQCAtMTE4NSw2ICsxMjExLDggQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAg
ICAgICAgIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZp
ZXcoKS0+Zml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKICNlbmRpZgogCisgICAgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKKyAgICBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVz
ZW50YXRpb24gPSBpc01haW5GcmFtZSAmJiB3ZWJQYWdlLT5zaG91bGRVc2VDdXN0b21SZXByZXNl
bnRhdGlvbkZvclJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2Fj
aGUgPSBmYWxzZTsKIAogICAgIFNjcm9sbGJhck1vZGUgZGVmYXVsdFNjcm9sbGJhck1vZGUgPSBz
aG91bGRIaWRlU2Nyb2xsYmFycyA/IFNjcm9sbGJhckFsd2F5c09mZiA6IFNjcm9sbGJhckF1dG87
CkBAIC0xMjQ0LDYgKzEyNzIsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRCZWNvbWVGcmFtZXNldChib29sIHZhbHVlKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RnJhbWVEaWRCZWNvbWVGcmFtZVNldChtX2ZyYW1lLT5mcmFtZUlE
KCksIHZhbHVlKSk7CiB9CiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFn
ZSgpIGNvbnN0Cit7CisgICAgLy8gV2UgY2Fubm90IGNhY2hlIGZyYW1lcyB0aGF0IGhhdmUgY3Vz
dG9tIHJlcHJlc2VudGF0aW9ucyBiZWNhdXNlIHRoZXkgYXJlCisgICAgLy8gcmVuZGVyZWQgaW4g
dGhlIFVJUHJvY2Vzcy4KKyAgICByZXR1cm4gIW1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlv
bjsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyICpkb2N1bWVudExvYWRlciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBtX2ZyYW1lLT5jb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoZG9jdW1lbnRM
b2FkZXIsIHJlcXVlc3QsIHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCBiYTFlNDk2Li43OTJjYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC00MSwxMCArNDEsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViRnJhbWUoV2ViRnJhbWUq
IHdlYkZyYW1lKSB7IG1fZnJhbWUgPSB3ZWJGcmFtZTsgfQogICAgIFdlYkZyYW1lKiB3ZWJGcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KIAorICAgIGJvb2wgZnJhbWVIYXNDdXN0b21S
ZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRh
dGlvbjsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNIVE1MVmlldygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpE
b2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpAQCAtMTc1LDkgKzE3Nyw5IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgCisKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7CiAgICAgCkBAIC0y
MzIsNiArMjM0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGx1Z2luVmlldz4gbV9wbHVnaW5W
aWV3OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXc7CiAgICAgYm9vbCBt
X2RpZENvbXBsZXRlUGFnZVRyYW5zaXRpb25BbHJlYWR5OworICAgIGJvb2wgbV9mcmFtZUhhc0N1
c3RvbVJlcHJlc2VudGF0aW9uOwogICAgIGJvb2wgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDI4OTRjZDQuLmI2N2E0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMwNzUsNiArMzA3NSwyMiBAQCB2b2lkIFdlYlBhZ2U6OmNs
ZWFyU2VsZWN0aW9uKCkKIH0KICNlbmRpZgogCitib29sIFdlYlBhZ2U6Om1haW5GcmFtZUhhc0N1
c3RvbVJlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lKCkpIHsKKyAgICAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVy
Q2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkp
OworICAgICAgICBBU1NFUlQod2ViRnJhbWVMb2FkZXJDbGllbnQpOworICAgICAgICByZXR1cm4g
d2ViRnJhbWVMb2FkZXJDbGllbnQtPmZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWRkTUlNRVR5cGVX
aXRoQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBt
X21pbWVUeXBlc1dpdGhDdXN0b21SZXByZXNlbnRhdGlvbnMuYWRkKG1pbWVUeXBlKTsKK30KKwog
dm9pZCBXZWJQYWdlOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCkKIHsKICAg
ICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwpAQCAtMzgxNyw2ICszODMzLDE1
IEBAIGJvb2wgV2ViUGFnZTo6Y2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiAjZW5kaWYKIH0KIAorYm9vbCBXZWJQYWdlOjpzaG91bGRVc2VD
dXN0b21SZXByZXNlbnRhdGlvbkZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIGlmICghbV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25z
LmNvbnRhaW5zKHJlc3BvbnNlLm1pbWVUeXBlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBJZiBhIHBsdWctaW4gZXhpc3RzIHRoYXQgY2xhaW1zIHRvIHN1cHBvcnQgdGhpcyBy
ZXNwb25zZSwgaXQgc2hvdWxkIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBjdXN0b20gcmVwcmVz
ZW50YXRpb24uCisgICAgcmV0dXJuICFjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShyZXNwb25zZSk7
Cit9CisKICNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgRnJhbWUqIHRhcmdldEZyYW1lRm9yRWRp
dGluZyhXZWJQYWdlKiBwYWdlKQogewpAQCAtMzk2Miw2ICszOTg3LDkgQEAgYm9vbCBXZWJQYWdl
OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3QKICAgICBpZiAo
TUlNRVR5cGVSZWdpc3RyeTo6Y2FuU2hvd01JTUVUeXBlKE1JTUVUeXBlKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKKyAgICBpZiAobV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25z
LmNvbnRhaW5zKE1JTUVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBjb25zdCBQ
bHVnaW5EYXRhJiBwbHVnaW5EYXRhID0gbV9wYWdlLT5wbHVnaW5EYXRhKCk7CiAgICAgaWYgKHBs
dWdpbkRhdGEuc3VwcG9ydHNNaW1lVHlwZShNSU1FVHlwZSwgUGx1Z2luRGF0YTo6QWxsUGx1Z2lu
cykgJiYgY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5h
bGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCA5NzY0ZjVjLi5mMjhiYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTYyMiw2ICs2MjIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0
ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIAorICAgIGJvb2wgbWFpbkZyYW1lSGFz
Q3VzdG9tUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1
c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgdm9pZCBt
YWluRnJhbWVEaWRMYXlvdXQoKTsKIAogICAgIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKCkgY29uc3QgeyByZXR1cm4gbV9jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7
IH0KQEAgLTY3Myw2ICs2NzYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgbmF0aXZlV2luZG93
SGFuZGxlKCkgeyByZXR1cm4gbV9uYXRpdmVXaW5kb3dIYW5kbGU7IH0KICNlbmRpZgogCisgICAg
Ym9vbCBzaG91bGRVc2VDdXN0b21SZXByZXNlbnRhdGlvbkZvclJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKTsKIAogICAgIGJvb2wg
YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQ7IH0KQEAgLTExMDEsNiAr
MTEwNSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9y
Q2xpZW50OwogCisgICAgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbV9taW1lVHlw
ZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dy
b3VuZENvbG9yOwogCiAgICAgSGFzaFNldDx1bnNpZ25lZD4gbV9hY3RpdmVSZW5kZXJpbmdTdXBw
cmVzc2lvblRva2VuczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZGRhMGUyMS4uYmY0NzQzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTE3Nyw2ICsxNzcsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBTZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBIaWRlRmlu
ZFVJKCkKICAgICBDb3VudFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgdWludDMyX3QgZmlu
ZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCisgICAgCisgICAgQWRkTUlNRVR5cGVX
aXRoQ3VzdG9tUmVwcmVzZW50YXRpb24oU3RyaW5nIG1pbWVUeXBlKQogCiAgICAgIyBEcmFnIGFu
ZCBkcm9wLgogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225634</attachid>
            <date>2014-03-02 23:36:52 -0800</date>
            <delta_ts>2014-03-02 23:38:00 -0800</delta_ts>
            <desc>patch</desc>
            <filename>pdf.diff</filename>
            <type>text/plain</type>
            <size>57148</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCmluZGV4
IDRlYTgyZDMuLmEzZWJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRp
b25zL1dlYktpdDIueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMv
V2ViS2l0Mi54Y2NvbmZpZwpAQCAtMzAsNyArMzAsNyBAQCBJTlNUQUxMX1BBVEhfQUNUVUFMID0g
JChXRUJLSVQyX0ZSQU1FV09SS1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChO
T1JNQUxfV0VCS0lUMl9GUkFNRVdPUktTX0RJUik7CiAKIEZSQU1FV09SS19BTkRfTElCUkFSWV9M
REZMQUdTID0gJChGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHU18kKFBMQVRGT1JNX05BTUUp
KTsKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1sb2Jq
YyAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdv
cmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9u
IC1mcmFtZXdvcmsgR3JhcGhpY3NTZXJ2aWNlcyAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29y
ayBVSUtpdCAtZnJhbWV3b3JrIFdlYktpdCAtbE1vYmlsZUdlc3RhbHQgLWxhc3NlcnRpb25fZXh0
ZW5zaW9uOworRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0g
LWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZy
YW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5k
YXRpb24gLWZyYW1ld29yayBHcmFwaGljc1NlcnZpY2VzIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJh
bWV3b3JrIFVJS2l0IC1mcmFtZXdvcmsgV2ViS2l0IC1sTW9iaWxlR2VzdGFsdCAtbGFzc2VydGlv
bl9leHRlbnNpb24gLWZyYW1ld29yayBDb3JlUERGOwogRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xE
RkxBR1NfaXBob25lb3MgPSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTX2lwaG9uZXNp
bXVsYXRvcikgLWZyYW1ld29yayBJT1N1cmZhY2U7CiBGUkFNRVdPUktfQU5EX0xJQlJBUllfTERG
TEFHU19tYWNvc3ggPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1ld29yayBD
YXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJhbWV3b3Jr
IElPS2l0IC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgSU9TdXJmYWNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDNj
YzM5MmMuLjllNDFiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC01Myw5ICs1MywxMiBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMu
aCIKKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiQ3VzdG9tUmVwcmVzZW50
YXRpb25NYW5hZ2VyLmgiCisjaW1wb3J0ICJXS1BERlZpZXcuaCIKICNpbXBvcnQgIldLU2Nyb2xs
Vmlldy5oIgogI2ltcG9ydCA8VUlLaXQvVUlQZXJpcGhlcmFsSG9zdF9Qcml2YXRlLmg+CiAKQEAg
LTkwLDYgKzkzLDggQEAKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcj4gX2dlc3R1cmVDb250cm9sbGVyOwogICAgIEJPT0wgX2FsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbkdlc3R1cmVzOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6Q3Vz
dG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyPiBfY3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7
CkBAIC0xNTcsNiArMTYyLDEzIEBACiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3Rvcihfa2V5Ym9hcmREaWRDaGFuZ2VGcmFtZTopIG5hbWU6VUlLZXlib2FyZERp
ZENoYW5nZUZyYW1lTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tleWJvYXJkV2lsbFNob3c6KSBuYW1lOlVJ
S2V5Ym9hcmRXaWxsU2hvd05vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9rZXlib2FyZFdpbGxIaWRlOikgbmFt
ZTpVSUtleWJvYXJkV2lsbEhpZGVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisKKyAgICBfY3Vz
dG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkN1c3Rv
bVJlcHJlc2VudGF0aW9uTWFuYWdlcj4oc2VsZik7CisgICAgV2ViS2l0OjpDdXN0b21SZXByZXNl
bnRhdGlvbiB3a1BERlZpZXdDdXN0b21SZXByZXNlbnRhdGlvbjsKKyAgICB3a1BERlZpZXdDdXN0
b21SZXByZXNlbnRhdGlvbi5yZXByZXNlbnRhdGlvbkNsYXNzID0gW1dLUERGVmlldyBjbGFzc107
CisKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
Z2V0UERGQW5kUG9zdFNjcmlwdE1JTUVUeXBlcygpKQorICAgICAgICBfY3VzdG9tUmVwcmVzZW50
YXRpb25NYW5hZ2VyLT5yZWdpc3RlckN1c3RvbVJlcHJlc2VudGF0aW9uRm9yTUlNRVR5cGUod2tQ
REZWaWV3Q3VzdG9tUmVwcmVzZW50YXRpb24sIG1pbWVUeXBlKTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKQpAQCAtMzE1LDYgKzMyNywzNCBAQAogICAgIHJldHVybiBbX2NvbnRlbnRWaWV3
IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdOwogfQogCistICh2b2lkKV9pbnN0YWxsQ3VzdG9t
UmVwcmVzZW50YXRpb25WaWV3OihVSVZpZXcgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+ICopdmll
dworeworICAgIFtzZWxmIGFkZFN1YnZpZXc6dmlld107CisgICAgW19zY3JvbGxWaWV3IHJlbW92
ZUZyb21TdXBlcnZpZXddOworCisgICAgW3ZpZXcgc2V0RnJhbWU6W3NlbGYgYm91bmRzXV07Cisg
ICAgW3ZpZXcgc2V0Q29udGVudEluc2V0Oltfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdXTsKK30K
KworLSAodm9pZClfZGlkVW5pbnN0YWxsQ3VzdG9tUmVwcmVzZW50YXRpb25WaWV3Cit7CisgICAg
W3NlbGYgYWRkU3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07Cit9CisKKy0gKHZvaWQpX3NldFBh
Z2VIYXNDdXN0b21SZXByZXNlbnRhdGlvbjooQk9PTClwYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRp
b24gbG9hZGVkTUlNRVR5cGU6KGNvbnN0IFdURjo6U3RyaW5nJiltaW1lVHlwZQoreworICAgIGlm
IChwYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24pCisgICAgICAgIF9jdXN0b21SZXByZXNlbnRh
dGlvbk1hbmFnZXItPmluc3RhbnRpYXRlQ3VzdG9tUmVwcmVzZW50YXRpb24obWltZVR5cGUpOwor
ICAgIGVsc2UKKyAgICAgICAgX2N1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci0+Y2xlYXJDdXN0
b21SZXByZXNlbnRhdGlvbigpOworfQorCistICh2b2lkKV9kaWRGaW5pc2hMb2FkaW5nRGF0YUZv
ckN1c3RvbVJlcHJlc2VudGF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihjb25zdCBTdHJpbmcm
KXN1Z2dlc3RlZEZpbGVuYW1lIGRhdGFSZWZlcmVuY2U6KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpZGF0YVJlZmVyZW5jZQoreworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVy
ZW5jZS5zaXplKCkpKTsKKyAgICBfY3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLT5zZXREYXRh
Rm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oZGF0YS5nZXQoKSk7Cit9CisKIC0gKHZvaWQpX2RpZENv
bW1pdExvYWRGb3JNYWluRnJhbWUKIHsKICAgICBfaXNXYWl0aW5nRm9yTmV3TGF5ZXJUcmVlQWZ0
ZXJEaWRDb21taXRMb2FkID0gWUVTOwpAQCAtNTI4LDYgKzU2OCwxMSBAQCBzdGF0aWMgV2ViQ29y
ZTo6RmxvYXRQb2ludCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQg
Y29udGVudE9mZgogICAgIFtfc2Nyb2xsVmlldyBzZXRGcmFtZTpib3VuZHNdOwogICAgIFtfY29u
dGVudFZpZXcgc2V0TWluaW11bVNpemU6Ym91bmRzLnNpemVdOwogICAgIFtzZWxmIF91cGRhdGVW
aXNpYmxlQ29udGVudFJlY3RzV2l0aFN0YWJsZVN0YXRlOllFU107CisKKyAgICBpZiAoVUlWaWV3
IDxXS0N1c3RvbVJlcHJlc2VudGF0aW9uPiAqY3VzdG9tUmVwcmVzZW50YXRpb25WaWV3ID0gX2N1
c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci0+dmlldygpKSB7CisgICAgICAgIFtjdXN0b21SZXBy
ZXNlbnRhdGlvblZpZXcgc2V0RnJhbWU6W3NlbGYgYm91bmRzXV07CisgICAgICAgIFtjdXN0b21S
ZXByZXNlbnRhdGlvblZpZXcgc2V0Q29udGVudEluc2V0Oltfc2Nyb2xsVmlldyBjb250ZW50SW5z
ZXRdXTsKKyAgICB9CiB9CiAKIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNXaXRo
U3RhYmxlU3RhdGU6KEJPT0wpaXNTdGF0ZVN0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDlmNGJmMjcu
LmIxNzNmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbXBvcnQgIldLQ29u
dGVudFZpZXcuaCIKICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxVSUtp
dC9VSVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgorCitAcHJvdG9jb2wgV0tDdXN0b21SZXByZXNlbnRh
dGlvbjsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDcsNiArNDksMTAgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiB9CiAKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgV0tf
V0VCX1ZJRVdfUFJPVE9DT0xTIHsKIAogQHBhY2thZ2UKQEAgLTYxLDYgKzY3LDExIEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIAogLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0
KXRhcmdldFJlY3Qgd2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gZml0RW50
aXJlUmVjdDooQk9PTClmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1T
Y2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3Rh
bmNlOihmbG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2U7CiAtICh2b2lkKV96b29tT3V0V2l0aE9y
aWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW47CisKKy0gKHZvaWQpX3NldFBhZ2VIYXND
dXN0b21SZXByZXNlbnRhdGlvbjooQk9PTClwYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gbG9h
ZGVkTUlNRVR5cGU6KGNvbnN0IFdURjo6U3RyaW5nJiltaW1lVHlwZTsKKy0gKHZvaWQpX2RpZEZp
bmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6KGNvbnN0IFdURjo6U3RyaW5nJilzdWdnZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNlOihj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKWRhdGFSZWZlcmVuY2U7CistICh2b2lkKV9pbnN0YWxs
Q3VzdG9tUmVwcmVzZW50YXRpb25WaWV3OihVSVZpZXcgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+
ICopdmlldzsKKy0gKHZvaWQpX2RpZFVuaW5zdGFsbEN1c3RvbVJlcHJlc2VudGF0aW9uVmlldzsK
ICNlbmRpZgogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYzRjY2I5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIuaApAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFn
ZXJfaAorI2RlZmluZSBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXJfaAorCisjaW1wb3J0IDxX
ZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIFBMQVRG
T1JNKElPUykKKworI2ltcG9ydCA8b2JqYy9vYmpjLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5o
PgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCitPQkpDX0NMQVNTIFdLV2ViVmlldzsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IEFQSS4KK0Bwcm90b2NvbCBXS0N1c3RvbVJlcHJlc2VudGF0aW9uIDxOU09iamVjdD4KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZTsKKworLSAodm9pZClzZXRE
YXRhOihDRkRhdGFSZWYpZGF0YTsKKworI2lmIFBMQVRGT1JNKElPUykKKy0gKHZvaWQpc2V0Q29u
dGVudEluc2V0OihVSUVkZ2VJbnNldHMpaW5zZXRzOworI2VuZGlmCisKK0BlbmQKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3N0cnVjdCBDdXN0b21SZXByZXNlbnRhdGlvbiB7CisgICAgQ2xhc3Mg
cmVwcmVzZW50YXRpb25DbGFzczsKKyAgICBTdHJpbmcgbWltZVR5cGU7Cit9OworCitjbGFzcyBD
dXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIgeworcHVibGljOgorICAgIEN1c3RvbVJlcHJlc2Vu
dGF0aW9uTWFuYWdlcihXS1dlYlZpZXcgKik7CisgICAgfkN1c3RvbVJlcHJlc2VudGF0aW9uTWFu
YWdlcigpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IHJlZ2lzdGVyaW5nIGEg
Y3VzdG9tIHJlcHJlc2VudGF0aW9uIGZvciBhIHNjaGVtZSB0b28uCisgICAgdm9pZCByZWdpc3Rl
ckN1c3RvbVJlcHJlc2VudGF0aW9uRm9yTUlNRVR5cGUoQ3VzdG9tUmVwcmVzZW50YXRpb24sIFN0
cmluZyBtaW1lVHlwZSk7CisgICAgQ2xhc3MgY2xhc3NGb3JSZXByZXNlbnRhdGlvbihTdHJpbmcg
bWltZVR5cGUpOworCisgICAgVUlWaWV3IDxXS0N1c3RvbVJlcHJlc2VudGF0aW9uPiAqdmlldygp
IHsgcmV0dXJuIG1fY3VycmVudFZpZXcuZ2V0KCk7IH0KKworICAgIHZvaWQgaW5zdGFudGlhdGVD
dXN0b21SZXByZXNlbnRhdGlvbihTdHJpbmcgbG9hZGVkTWltZVR5cGUpOworICAgIHZvaWQgY2xl
YXJDdXN0b21SZXByZXNlbnRhdGlvbigpOworICAgIHZvaWQgc2V0RGF0YUZvckN1c3RvbVJlcHJl
c2VudGF0aW9uKENGRGF0YVJlZik7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFVJVmlldyA8
V0tDdXN0b21SZXByZXNlbnRhdGlvbj4+IG1fY3VycmVudFZpZXc7CisKKyAgICBIYXNoTWFwPFN0
cmluZywgQ3VzdG9tUmVwcmVzZW50YXRpb24sIENhc2VGb2xkaW5nSGFzaD4gbV9jdXN0b21SZXBy
ZXNlbnRhdGlvbnNGb3JNSU1FVHlwZXM7CisKKyAgICBXS1dlYlZpZXcgKm1fd2ViVmlldzsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIEN1c3RvbVJlcHJlc2VudGF0aW9u
TWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3Vz
dG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0N1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43OGEyNzNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL0N1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5tbQpAQCAtMCwwICsx
LDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ3VzdG9t
UmVwcmVzZW50YXRpb25NYW5hZ2VyLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaWYgUExB
VEZPUk0oSU9TKQorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldLV2ViVmll
d0ludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitDdXN0b21SZXByZXNlbnRhdGlv
bk1hbmFnZXI6OkN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcihXS1dlYlZpZXcgKndlYlZpZXcp
CisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKworQ3VzdG9tUmVwcmVzZW50YXRpb25N
YW5hZ2VyOjp+Q3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyKCkKK3sKK30KKwordm9pZCBDdXN0
b21SZXByZXNlbnRhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyQ3VzdG9tUmVwcmVzZW50YXRpb25Gb3JN
SU1FVHlwZShDdXN0b21SZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbiwgU3RyaW5nIG1pbWVU
eXBlKQoreworICAgIGlmIChtX2N1c3RvbVJlcHJlc2VudGF0aW9uc0Zvck1JTUVUeXBlcy5jb250
YWlucyhtaW1lVHlwZSkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDYW5ub3QgcmVnaXN0ZXIg
dHdvIGN1c3RvbSByZXByZXNlbnRhdGlvbnMgZm9yIHRoZSBzYW1lIE1JTUUgdHlwZS5cbiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVwcmVzZW50YXRpb24ubWltZVR5cGUgPSBt
aW1lVHlwZTsKKworICAgIG1fY3VzdG9tUmVwcmVzZW50YXRpb25zRm9yTUlNRVR5cGVzLmFkZCht
aW1lVHlwZSwgcmVwcmVzZW50YXRpb24pOworCisgICAgbV93ZWJWaWV3LT5fcGFnZS0+YWRkTUlN
RVR5cGVXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb24obWltZVR5cGUpOworfQorCitDbGFzcyBDdXN0
b21SZXByZXNlbnRhdGlvbk1hbmFnZXI6OmNsYXNzRm9yUmVwcmVzZW50YXRpb24oU3RyaW5nIG1p
bWVUeXBlKQoreworICAgIGZvciAoYXV0byYgcmVwcmVzZW50YXRpb24gOiBtX2N1c3RvbVJlcHJl
c2VudGF0aW9uc0Zvck1JTUVUeXBlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVwcmVzZW50
YXRpb24ubWltZVR5cGUgPT0gbWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gcmVwcmVzZW50
YXRpb24ucmVwcmVzZW50YXRpb25DbGFzczsKKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQor
Cit2b2lkIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcjo6aW5zdGFudGlhdGVDdXN0b21SZXBy
ZXNlbnRhdGlvbihTdHJpbmcgbG9hZGVkTWltZVR5cGUpCit7CisgICAgaWYgKG1fY3VycmVudFZp
ZXcpCisgICAgICAgIFttX2N1cnJlbnRWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworCisgICAg
Q2xhc3MgY3VzdG9tUmVwcmVzZW50YXRpb25DbGFzcyA9IGNsYXNzRm9yUmVwcmVzZW50YXRpb24o
bG9hZGVkTWltZVR5cGUpOworICAgIG1fY3VycmVudFZpZXcgPSBhZG9wdE5TKFtbY3VzdG9tUmVw
cmVzZW50YXRpb25DbGFzcyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7CisKKyAg
ICBbbV93ZWJWaWV3IF9pbnN0YWxsQ3VzdG9tUmVwcmVzZW50YXRpb25WaWV3Om1fY3VycmVudFZp
ZXcuZ2V0KCldOworfQorCit2b2lkIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcjo6Y2xlYXJD
dXN0b21SZXByZXNlbnRhdGlvbigpCit7CisgICAgW21fY3VycmVudFZpZXcgcmVtb3ZlRnJvbVN1
cGVydmlld107CisgICAgbV9jdXJyZW50VmlldyA9IG5pbDsKKworICAgIFttX3dlYlZpZXcgX2Rp
ZFVuaW5zdGFsbEN1c3RvbVJlcHJlc2VudGF0aW9uVmlld107Cit9CisKK3ZvaWQgQ3VzdG9tUmVw
cmVzZW50YXRpb25NYW5hZ2VyOjpzZXREYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oQ0ZEYXRh
UmVmIGRhdGEpCit7CisgICAgQVNTRVJUKG1fY3VycmVudFZpZXcpOworICAgIFttX2N1cnJlbnRW
aWV3IHNldERhdGE6ZGF0YV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGI5NGQ5MGEuLjE2OGNlNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRM
b2FkRm9yTWFpbkZyYW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50
YXRpb24pID0gMDsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZpcnR1YWwg
dm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsK
QEAgLTI1Niw2ICsyNTYsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQog
ICAgIHZpcnR1YWwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgZnVsbFNjcmVlbk1h
bmFnZXJQcm94eUNsaWVudCgpID0gMDsKICNlbmRpZgorCisgICAgLy8gQ3VzdG9tIHJlcHJlc2Vu
dGF0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTI4ZGVlMi4uM2IwZjI5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxMCw2
ICszMTAsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgICwgbV9zcGVsbERvY3VtZW50
VGFnKDApCiAgICAgLCBtX2hhc1NwZWxsRG9jdW1lbnRUYWcoZmFsc2UpCiAgICAgLCBtX3BlbmRp
bmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCgwKQorICAgICwgbV9tYWluRnJhbWVIYXND
dXN0b21SZXByZXNlbnRhdGlvbihmYWxzZSkKICAgICAsIG1fZGVsZWdhdGVzU2Nyb2xsaW5nKGZh
bHNlKQogICAgICwgbV9tYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGZhbHNlKQogICAg
ICwgbV9tYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhcihmYWxzZSkKQEAgLTIyMzUsNyArMjIz
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQog
ICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJh
bWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwg
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIElQQzo6TWVz
c2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0
YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJE
YXRhLCBwcm9jZXNzKCkpOwpAQCAtMjI0OSw3ICsyMjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBtX3BhZ2VM
b2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbik7Ci0gICAgICAgIG1fcGFnZUNsaWVu
dC5kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCk7CisgICAgICAgIG1fcGFnZUNsaWVudC5kaWRD
b21taXRMb2FkRm9yTWFpbkZyYW1lKG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0
aW9uKTsKICAgICB9CiAKICNpZiBVU0UoQVBQS0lUKQpAQCAtMjI2NCw2ICsyMjY1LDIwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklECiAKICAgICBmcmFtZS0+ZGlkQ29tbWl0TG9hZChtaW1lVHlw
ZSwgY2VydGlmaWNhdGVJbmZvKTsKIAorICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewor
ICAgICAgICBtX21haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uID0gZnJhbWVIYXNDdXN0
b21SZXByZXNlbnRhdGlvbjsKKworICAgICAgICBpZiAobV9tYWluRnJhbWVIYXNDdXN0b21SZXBy
ZXNlbnRhdGlvbikgeworICAgICAgICAgICAgLy8gQWx3YXlzIGFzc3VtZSB0aGF0IHRoZSBtYWlu
IGZyYW1lIGlzIHBpbm5lZCBoZXJlLCBzaW5jZSB0aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9uIHZp
ZXcgd2lsbCBoYW5kbGUKKyAgICAgICAgICAgIC8vIGFueSB3aGVlbCBldmVudHMgYW5kIGRpc3Bh
dGNoIHRoZW0gdG8gdGhlIFdLVmlldyB3aGVuIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgIG1fbWFp
bkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1l
SXNQaW5uZWRUb1JpZ2h0U2lkZSA9IHRydWU7CisgICAgICAgICAgICBtX21haW5GcmFtZUlzUGlu
bmVkVG9Ub3BTaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRUb0Jv
dHRvbVNpZGUgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG1fcGFnZUNsaWVudC5kaWRDb21t
aXRMb2FkRm9yTWFpbkZyYW1lKG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9u
KTsKKyAgICB9CisKICAgICAvLyBFdmVuIGlmIFdlYlBhZ2UgaGFzIHRoZSBkZWZhdWx0IHBhZ2VT
Y2FsZUZhY3RvciAoYW5kIHRoZXJlZm9yZSBkb2Vzbid0IHJlc2V0IGl0KSwKICAgICAvLyBXZWJQ
YWdlUHJveHkncyBjYWNoZSBvZiB0aGUgdmFsdWUgY2FuIGdldCBvdXQgb2Ygc3luYyAoZS5nLiBp
biB0aGUgY2FzZSB3aGVyZSBhCiAgICAgLy8gcGx1Z2luIGlzIGhhbmRsaW5nIHBhZ2Ugc2NhbGlu
ZyBpdHNlbGYpIHNvIHdlIHNob3VsZCByZXNldCBpdCB0byB0aGUgZGVmYXVsdApAQCAtNDIzNiw2
ICs0MjUxLDExIEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp3aWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9s
bEV2ZW50cygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2NhblNob3J0Q2lyY3VpdEhvcml6b250YWxX
aGVlbEV2ZW50czsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRpbmdEYXRh
Rm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQoreworICAgIG1fcGFnZUNs
aWVudC5kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBkYXRhUmVmZXJlbmNlKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tG
b3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlEKQogewogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1f
cGFnZUlEKTsKQEAgLTQ1NDAsNCArNDU2MCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUaHVt
Ym5haWxTY2FsZShkb3VibGUgc2NhbGUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRUaHVtYm5haWxTY2FsZShzY2FsZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbihtaW1lVHlwZSksIG1fcGFnZUlE
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggZDFlMWQxOC4uYjRmNTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDUxLDYgKzQ1MSw4IEBAIHB1YmxpYzoKICAgICBib29s
IGlzVmlld1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNQcm9jZXNzU3VwcHJlc3Np
YmxlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQo
Y29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgUGFzc1JlZlB0cjxWYWxpZGF0ZUNvbW1hbmRDYWxs
YmFjaz4pOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTk0MCw3ICs5NDIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHVucmVhY2hhYmxlVVJMLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIElQQzo6TWVzc2FnZURl
Y29kZXImKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBkaWRDb21taXRM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24sIHVp
bnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtMTE0OCw2ICsxMTUwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lk
IHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0X3QgcGx1Z2luQ29tcGxleFRl
eHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNBbmRXaW5kb3dIYXNGb2N1cyk7
CiAgICAgdm9pZCBzZXRQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3QgcGx1Z2lu
Q29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIHVpbnQ2NF90IGNvbXBsZXhUZXh0SW5wdXRTdGF0
ZSk7CiAjZW5kaWYKQEAgLTEzODYsNiArMTM4OSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hh
c1NwZWxsRG9jdW1lbnRUYWc7CiAgICAgdW5zaWduZWQgbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdv
cmRNZXNzYWdlQ291bnQ7CiAKKyAgICBib29sIG1fbWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50
YXRpb247CisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFdlYkNvcmU6OkRyYWdTZXNz
aW9uIG1fY3VycmVudERyYWdTZXNzaW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxNDUyYjc1Li40ZGFiZTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTEyMSw3ICsxMjEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAg
ICAgRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBXZWJLaXQ6
OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAg
IERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlk
Q29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgU3RyaW5nIG1pbWVUeXBlLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvIGNlcnRpZmljYXRlSW5mbywgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKKyAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJv
b2wgaGFzQ3VzdG9tUmVwcmVzZW50YXRpb24sIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZhaWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVy
IHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIg
dXNlckRhdGEpIFZhcmlhZGljCiAgICAgRGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKQEAgLTEzNyw2ICsxMzcsOSBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgRnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50
NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQogCisgICAgIyBDdXN0b20gcmVwcmVzZW50YXRpb25z
CisgICAgRGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihTdHJpbmcg
c3VnZ2VzdGVkRmlsZW5hbWUsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorCiAgICAgIyBGb3Jt
cyBtZXNzYWdlcwogICAgIFdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHNvdXJjZUZyYW1lSUQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0Rmll
bGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBkOWI0ZGQ0Li40MmMxNGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLUBjbGFzcyBXS0NvbnRlbnRWaWV3Owor
T0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBXS1dlYlZpZXc7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgIApAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBQYWdlQ2xpZW50SW1w
bCA6IHB1YmxpYyBQYWdlQ2xpZW50CiAjZW5kaWYKICAgICB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUGFnZUNsaWVudEltcGwoV0tDb250ZW50VmlldyAqKTsKKyAgICBleHBsaWNpdCBQYWdlQ2xp
ZW50SW1wbChXS0NvbnRlbnRWaWV3ICosIFdLV2ViVmlldyAqKTsKICAgICB2aXJ0dWFsIH5QYWdl
Q2xpZW50SW1wbCgpOwogICAgIAogcHJpdmF0ZToKQEAgLTYzLDcgKzY0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIFdlYlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVz
ZUN1c3RvbVJlcHJlc2VudGF0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vy
c29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKQEAgLTEyOSw3ICsxMzAsMTAgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIG92ZXJy
aWRlOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZTsKKwogICAgIFdLQ29udGVudFZpZXcgKm1f
Y29udGVudFZpZXc7CisgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCmluZGV4IGY5ZTgwMTMuLjRjNTFmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgUExBVEZPUk0oSU9TKQogCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1w
b3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbi5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgpAQCAtNDAsNiAr
NDEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KIAorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKwog
QGludGVyZmFjZSBVSVZpZXcgKElQSSkKIC0gKFVJU2Nyb2xsVmlldyAqKV9zY3JvbGxlcjsKIEBl
bmQKQEAgLTQ4LDggKzUxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1QYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tDb250ZW50Vmll
dyAqdmlldykKLSAgICA6IG1fY29udGVudFZpZXcodmlldykKK1BhZ2VDbGllbnRJbXBsOjpQYWdl
Q2xpZW50SW1wbChXS0NvbnRlbnRWaWV3ICpjb250ZW50VmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3
KQorICAgIDogbV9jb250ZW50Vmlldyhjb250ZW50VmlldykKKyAgICAsIG1fd2ViVmlldyh3ZWJW
aWV3KQogewogfQogCkBAIC0xNDUsOCArMTQ5LDkgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5Jgog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lKCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWlu
RnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21SZXByZXNlbnRhdGlv
bikKIHsKKyAgICBbbV93ZWJWaWV3IF9zZXRQYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb246dXNl
Q3VzdG9tUmVwcmVzZW50YXRpb24gbG9hZGVkTUlNRVR5cGU6bWltZVR5cGVdOwogICAgIFttX2Nv
bnRlbnRWaWV3IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIH0KIApAQCAtNDAwLDYgKzQw
NSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IElu
dFJlY3QmLCBjb25zdCBJbnRSZWN0JikKIAogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit7CisgICAgW21fd2ViVmlldyBfZGlkRmlu
aXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZTpzdWdnZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNlOmRhdGFSZWZlcmVuY2VdOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAzZjJmNWQwLi5i
MWE5MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCkBAIC03NSw3ICs3NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICAgICBJbml0
aWFsaXplV2ViS2l0MigpOwogCi0gICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VDbGllbnRJbXBsPihzZWxmKTsKKyAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwogCiAgICAgX3BhZ2UgPSBjb250ZXh0LmNy
ZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBzdGQ6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24p
KTsKICAgICBfcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgy
MTBlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
UERGVmlldy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9T
KQorCisjaW1wb3J0ICJDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIuaCIKKyNpbXBvcnQgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgV0tQREZWaWV3IDogVUlWaWV3IDxVSVNjcm9sbFZpZXdE
ZWxlZ2F0ZSwgV0tDdXN0b21SZXByZXNlbnRhdGlvbj4KKworQGVuZAorCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BE
RlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTM2MjI4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTAsMCArMSwx
MjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLUERGVmll
dy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisj
aW1wb3J0IDxDb3JlUERGL1VJUERGRG9jdW1lbnQuaD4KKyNpbXBvcnQgPENvcmVQREYvVUlQREZQ
YWdlVmlldy5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKworQGludGVyZmFjZSBXS1BERlZp
ZXcgKCkgeworICAgIFJldGFpblB0cjxVSVBERkRvY3VtZW50PiBfcGRmRG9jdW1lbnQ7CisgICAg
UmV0YWluUHRyPFVJU2Nyb2xsVmlldz4gX3Njcm9sbFZpZXc7CisgICAgUmV0YWluUHRyPFVJVmll
dz4gX2RvY3VtZW50VmlldzsKKyAgICBWZWN0b3I8VUlQREZQYWdlVmlldyo+IF9wYWdlVmlld3M7
Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1BERlZpZXcKKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhGcmFtZTpmcmFtZV0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3Njcm9s
bFZpZXcgPSBhZG9wdE5TKFtbVUlTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1l
XSk7CisgICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6MV07CisgICAgW19zY3Jv
bGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6NV07CisgICAgW19zY3JvbGxWaWV3IHNldERlbGVn
YXRlOnNlbGZdOworCisgICAgX2RvY3VtZW50VmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6W19zY3JvbGxWaWV3IGJvdW5kc11dKTsKKyAgICBbX3Njcm9sbFZpZXcg
YWRkU3VidmlldzpfZG9jdW1lbnRWaWV3LmdldCgpXTsKKworICAgIFtzZWxmIGFkZFN1YnZpZXc6
X3Njcm9sbFZpZXcuZ2V0KCldOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0
RnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIFtzdXBlciBzZXRGcmFtZTpmcmFtZV07CisgICAg
W19zY3JvbGxWaWV3IHNldEZyYW1lOmZyYW1lXTsKKworICAgIFtzZWxmIGxheW91dFZpZXdzXTsK
K30KKworLSAodm9pZClzZXRDb250ZW50SW5zZXQ6KFVJRWRnZUluc2V0cyljb250ZW50SW5zZXQK
K3sKKyAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudEluc2V0OmNvbnRlbnRJbnNldF07Cit9CisK
Ky0gKHZvaWQpc2V0RGF0YTooQ0ZEYXRhUmVmKWRhdGEKK3sKKyAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXI+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
Q0ZEYXRhKGRhdGEpKTsKKyAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gY2dQREZEb2N1
bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlk
ZXIuZ2V0KCkpKTsKKyAgICBfcGRmRG9jdW1lbnQgPSBhZG9wdE5TKFtbVUlQREZEb2N1bWVudCBh
bGxvY10gaW5pdFdpdGhDR1BERkRvY3VtZW50OmNnUERGRG9jdW1lbnQuZ2V0KCldKTsKKworICAg
IGZvciAoTlNVSW50ZWdlciBwYWdlID0gMDsgcGFnZSA8IFtfcGRmRG9jdW1lbnQgbnVtYmVyT2ZQ
YWdlc107ICsrcGFnZSkgeworICAgICAgICBVSVBERlBhZ2UgKnBkZlBhZ2UgPSBbX3BkZkRvY3Vt
ZW50IHBhZ2VBdEluZGV4OnBhZ2VdOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY3Jl
YXRlIGFuZCBkZXN0cm95IHZpZXdzIGluc3RlYWQgb2YgZGVwZW5kaW5nIG9uIHRpbGluZy4KKyAg
ICAgICAgUmV0YWluUHRyPFVJUERGUGFnZVZpZXc+IHBhZ2VWaWV3ID0gYWRvcHROUyhbW1VJUERG
UGFnZVZpZXcgYWxsb2NdIGluaXRXaXRoUGFnZTpwZGZQYWdlIHRpbGVkQ29udGVudDpZRVNdKTsK
KyAgICAgICAgW19kb2N1bWVudFZpZXcgYWRkU3VidmlldzpwYWdlVmlldy5nZXQoKV07CisgICAg
ICAgIF9wYWdlVmlld3MuYXBwZW5kKHBhZ2VWaWV3LmdldCgpKTsKKworICAgICAgICBbW3BhZ2VW
aWV3IGNvbnRlbnRMYXllcl0gc2V0Q29udGVudHNTY2FsZTpzZWxmLndpbmRvdy5zY3JlZW4uc2Nh
bGVdOworICAgIH0KKworICAgIFtzZWxmIGxheW91dFZpZXdzXTsKK30KKworLSAodm9pZClsYXlv
dXRWaWV3cworeworICAgIENHUmVjdCBwYWdlRnJhbWUgPSBbc2VsZiBib3VuZHNdOworCisgICAg
Zm9yIChhdXRvJiBwYWdlVmlldyA6IF9wYWdlVmlld3MpIHsKKyAgICAgICAgQ0dTaXplIHBhZ2VT
aXplID0gW3BhZ2VWaWV3LnBhZ2Ugc2l6ZV07CisKKyAgICAgICAgcGFnZUZyYW1lLnNpemUuaGVp
Z2h0ID0gcGFnZVNpemUuaGVpZ2h0IC8gcGFnZVNpemUud2lkdGggKiBwYWdlRnJhbWUuc2l6ZS53
aWR0aDsKKyAgICAgICAgW3BhZ2VWaWV3IHNldEZyYW1lOnBhZ2VGcmFtZV07CisKKyAgICAgICAg
cGFnZUZyYW1lLm9yaWdpbi55ICs9IHBhZ2VGcmFtZS5zaXplLmhlaWdodDsKKyAgICB9CisKKyAg
ICBbX2RvY3VtZW50Vmlldy5nZXQoKSBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHBhZ2VGcmFt
ZS5zaXplLndpZHRoLCBwYWdlRnJhbWUub3JpZ2luLnkpXTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0
Q29udGVudFNpemU6W19kb2N1bWVudFZpZXcgZnJhbWVdLnNpemVdOworfQorCisjcHJhZ21hIG1h
cmsgVUlTY3JvbGxWaWV3RGVsZWdhdGUgbWV0aG9kcworCistIChVSVZpZXcgKil2aWV3Rm9yWm9v
bWluZ0luU2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldworeworICAgIHJldHVy
biBfZG9jdW1lbnRWaWV3LmdldCgpOworfQorCistICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRab29t
aW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3IGF0
U2NhbGU6KENHRmxvYXQpc2NhbGUKK3sKK30KKworQGVuZAorCisjZW5kaWYgLyogUExBVEZPUk0o
SU9TKSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5o
CmluZGV4IDcyMWFmNTYuLmI3YTYyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTc5LDcgKzc5LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIHByZWZlcmVu
Y2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgb2xkVG9vbFRpcCwgY29uc3QgU3RyaW5nJiBuZXdUb29sVGlwKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29y
Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggMzg3OWJlNi4uOTMyYWI5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC0yODUsNyAr
Mjg1LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYgb2xkVG9vbFRpcCwgY29uc3QgU3RyaW5nJiBuZXdUCiAgICAgW21fd2tWaWV3IF90b29sVGlw
Q2hhbmdlZEZyb206bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhvbGRUb29sVGlwKSB0bzpuc1N0
cmluZ0Zyb21XZWJDb3JlU3RyaW5nKG5ld1Rvb2xUaXApXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSgpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNl
Q3VzdG9tUmVwcmVzZW50YXRpb24pCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZp
bmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYzI5ZGEzNS4uZWNkM2VmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTA3LDYgKzUwNyw4IEBACiAJCTJE
QTA0OUI0MTgwQ0NDRDMwMEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTA0OUIyMTgwQ0NDRDMw
MEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCAqLzsgfTsKIAkJMkRBMDQ5QjcxODBD
Q0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEwNDlCNTE4MENDRDBBMDBBQUZBOUUg
LyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcCAqLzsgfTsKIAkJMkRBMDQ5QjgxODBDQ0QwQTAw
QUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMDQ5QjYxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBo
aWNzTGF5ZXJDQVJlbW90ZS5oICovOyB9OworCQkyREExRTRGRTE4QzAyQjZBMDBEQkM5MjkgLyog
V0tQREZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREExRTRGQzE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3LmggKi87IH07CisJCTJEQTFF
NEZGMThDMDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREExRTRGRDE4QzAyQjZBMDBEQkM5MjkgLyogV0tQ
REZWaWV3Lm1tICovOyB9OwogCQkyREE5NDQ5NTE4ODRFM0I1MDBFRDg2REIgLyogV0tWaWV3SU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
ODYxODg0RTNCNTAwRUQ4NkRCIC8qIFdLVmlld0lPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0OUUxODg0
RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnRJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5NzE4ODRFNEYwMDBFRDg2
REIgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0OUYxODg0
RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIg
LyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSAqLzsgfTsKQEAgLTUyNiw2ICs1MjgsOCBAQAog
CQkyREFDRTY0RTE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUNFNjREMThB
REJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICovOyB9OwogCQkyREFG
MDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDQxOEJE
MUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
MkRBRjA2RDcxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMDZE
NTE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAqLzsg
fTsKKwkJMkRDNkQ5QzMxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRD
NkQ5QzExOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5oICov
OyB9OworCQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50YXRpb25N
YW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5t
bSAqLzsgfTsKIAkJMkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllci5oICovOyB9OwogCQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJl
ZVByb3BlcnR5QXBwbGllci5tbSAqLzsgfTsKIAkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0IxOEJEMkE2ODAw
NUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwpAQCAtMjI2MCw2ICsyMjY0LDggQEAKIAkJMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlF
IC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRBMDQ5QjUxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ0FSZW1v
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREEwNDlCNjE4MENDRDBBMDBB
QUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyREExRTRGQzE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUERGVmlldy5oOyBwYXRoID0gaW9zL1dLUERGVmll
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREExRTRGRDE4QzAyQjZBMDBEQkM5
MjkgLyogV0tQREZWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tQREZWaWV3Lm1tOyBwYXRoID0gaW9zL1dLUERGVmlldy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0ODYxODg0RTNCNTAwRUQ4NkRCIC8qIFdLVmlld0lPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVmlld0lPUy5tbTsgcGF0
aCA9IGlvcy9XS1ZpZXdJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0
NDk3MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dElPUy5tbTsgcGF0aCA9IGlvcy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZl
V2ViVG91Y2hFdmVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW07IHBhdGggPSBpb3MvTmF0aXZlV2ViVG91Y2hF
dmVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyODAsMTAgKzIyODYs
MTIgQEAKIAkJMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlci5oOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBRjA2RDUxOEJEMUE0NzAwODFD
RUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBw
YXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEQUYwNkQ4MThCRDIzQkEwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIubWVzc2FnZXMuaW47IHBhdGggPSBpb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNkQ5QzExOEM0
NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1
c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFNjk0M0MxOEJEMkE2ODAwNUMx
NUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4
NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25D
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMzEsNiAr
NDEzOSw4IEBACiAJCTFBQkMzREYyMTg5OUU0MTUwMDRGMDYyNiAvKiBDb2NvYSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkRDNkQ5QzExOEM0NEE2MTAw
NDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5oICovLAorCQkJCTJEQzZEOUMy
MThDNDRBNjEwMDQzQkFENCAvKiBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIubW0gKi8sCiAJ
CQkJMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCAqLywK
IAkJCQkxQTQyMkY4RDE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5oICovLAogCQkJ
CTFBNDIyRjhDMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50Lm1tICovLApAQCAtNDMz
Miw2ICs0MzQyLDggQEAKIAkJCQkwRkNCNEUzNzE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVu
dEltcGxJT1MubW0gKi8sCiAJCQkJMEYwQzM2NTcxOEMwNTFCQTAwRjYwN0Q3IC8qIFJlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gKi8sCiAJCQkJMEYwQzM2NUIxOEMwNUNBMTAwRjYwN0Q3IC8qIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gKi8sCisJCQkJMkRBMUU0RkMxOEMw
MkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oICovLAorCQkJCTJEQTFFNEZEMThDMDJCNkEwMERC
QzkyOSAvKiBXS1BERlZpZXcubW0gKi8sCiAJCQkJMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8q
IFRleHRDaGVja2VySU9TLm1tICovLAogCQkJCTJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi8sCiAJCQkJMkRBRjA2RDQxOEJEMUE0NzAwODFD
RUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLywKQEAgLTY3MzksNiArNjc1
MSw3IEBACiAJCQkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MDE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNTQxOEJCRTA0NDAwMEZDRkM5IC8qIFdL
U2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRDNkQ5QzMxOEM0NEE2MTAwNDNCQUQ0
IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRF
Njk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0QTYyOTIxNDczMTJCRTAwNkM2ODFBIC8qIFdl
YkNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUZFQzFEMTYyN0I0NTcw
MDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjc4
Nyw2ICs2ODAwLDcgQEAKIAkJCQlCQzAzMkQ3QjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRHJhZ0Ns
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMEVGOUYxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdl
YkVkaXRDb21tYW5kUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDY0RDM2MTg5NzgxQzQw
MDRCMkZFQiAvKiBTUUxpdGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQTFFNEZF
MThDMDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMy
RDdEMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTk0N0E4MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0MDU1MzE4Qjg2RUQ2MDAyMkMzOEIg
LyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTQ5
LDYgKzc5NjMsNyBAQAogCQkJCTM3RDBCNUM4MTg0NTIzMjcwMEY2Q0U3RCAvKiBXS0Vycm9yUmVj
b3ZlcnlBdHRlbXB0aW5nLm0gaW4gU291cmNlcyAqLywKIAkJCQlDRDVDNjZBMDEzNEI5RDM4MDA0
RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3NTU0MjJDQjE4MDY1MDAyMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkRBMUU0RkYxOEMwMkI2QTAwREJDOTI5IC8qIFdL
UERGVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQThDNkE4MTFFM0JBNUYwMDgxMkZCNyAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZDQjRFNjcxOEJCRTNEOTAwMEZDRkM5IC8qIFdLUHJpbnRpbmdWaWV3Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFBQjAzN0MxODVGOTlEODAwRURGNTAxIC8qIEFQSURhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC04MDEwLDYgKzgwMjUsNyBAQAogCQkJCTUxQ0JCQTBGMTY1MjE5QjYwMDVCRThG
RCAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTgyOURBNTE2MzdDNzBDMDAwOTUzRDYgLyogTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJDMDY5MDE2MzkwRTY5MDBBQkI5MTEgLyogTmV0
d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEQzZE
OUM0MThDNDRBNjEwMDQzQkFENCAvKiBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZp
Y2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNTUxNDg5OTgyRTAwODEw
RDcxIC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxMzEyNjFFMTQ4RkY4MkMwMEJBMkEzOSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IGVjYzc3MWUuLjY4MDdhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC05MCw2ICs5MCw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFt
ZUxvYWRlckNsaWVudCgpCiAgICAgOiBtX2ZyYW1lKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25z
ZVRvUGx1Z2luVmlldyhmYWxzZSkKICAgICAsIG1fZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbkFs
cmVhZHkoZmFsc2UpCisgICAgLCBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oZmFsc2Up
CiAgICAgLCBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGUoZmFsc2UpCiB7CiB9CkBAIC0xMDksNiAr
MTEwLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVk
KCkKICAgICBtX2ZyYW1lLT5kZXJlZigpOwogfQogCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpoYXNIVE1MVmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2ZyYW1lSGFzQ3VzdG9tUmVw
cmVzZW50YXRpb247Cit9CisKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhhc1dlYlZpZXco
KSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCk7CkBAIC00NDUsOCArNDUxLDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIAog
ICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSwg
Q2VydGlmaWNhdGVJbmZvKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkpLCBJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKLQorICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUt
PmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVy
LnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uLCBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSwgQ2VydGlmaWNhdGVJbmZv
KGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJh
bWUpOwogfQogCkBAIC04NTIsNiArODU3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQogeworICAgIC8vIElmIHdlJ3JlIGxvYWRpbmcgYSBjdXN0b20gcmVw
cmVzZW50YXRpb24sIHdlIGRvbid0IHdhbnQgdG8gaGFuZCBvZmYgdGhlIGRhdGEgdG8gV2ViQ29y
ZS4KKyAgICBpZiAobV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgbG9hZGVyLT5jb21taXREYXRh
KGRhdGEsIGxlbmd0aCk7CiAKQEAgLTg3OCwyMiArODg3LDMzIEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hh
ciogZGF0CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1
bWVudExvYWRlciogbG9hZGVyKQogewotICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICAvLyBJZiB3ZSBqdXN0IHJlY2VpdmVkIGFuIGVtcHR5IHJlc3BvbnNlIHdp
dGhvdXQgYW55IGRhdGEsIHdlIHdvbid0IGhhdmUgc2VudCBhIHJlc3BvbnNlIHRvIHRoZSBwbHVn
LWluIHZpZXcuCi0gICAgLy8gTWFrZSBzdXJlIHRvIGRvIHRoaXMgYmVmb3JlIGNhbGxpbmcgbWFu
dWFsTG9hZERpZEZpbmlzaExvYWRpbmcuCi0gICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1
Z2luVmlldykgewotICAgICAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlUmVz
cG9uc2UobG9hZGVyLT5yZXNwb25zZSgpKTsKKyAgICBpZiAoIW1fcGx1Z2luVmlldykgeworICAg
ICAgICBpZiAobV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgICAgICAgICAgaWYgKCF3ZWJQ
YWdlKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBQcm90ZWN0IGFnYWlu
c3QgdGhlIGFib3ZlIGNhbGwgbnVsbGluZyBvdXQgdGhlIHBsdWctaW4gKGJ5IHRyeWluZyB0byBj
YW5jZWwgdGhlIGxvYWQgZm9yIGV4YW1wbGUpLgotICAgICAgICBpZiAoIW1fcGx1Z2luVmlldykK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6
IDApLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7Cisg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24obG9hZGVyLT5yZXNwb25zZSgpLnN1
Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKKyAgICAgICAgfQogICAgIH0KIAot
ICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKLSAgICBtX3Bs
dWdpblZpZXcgPSAwOwotICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gZmFsc2U7
CisgICAgaWYgKG1fcGx1Z2luVmlldykgeworICAgICAgICAvLyBJZiB3ZSBqdXN0IHJlY2VpdmVk
IGFuIGVtcHR5IHJlc3BvbnNlIHdpdGhvdXQgYW55IGRhdGEsIHdlIHdvbid0IGhhdmUgc2VudCBh
IHJlc3BvbnNlIHRvIHRoZSBwbHVnLWluIHZpZXcuCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0byBk
byB0aGlzIGJlZm9yZSBjYWxsaW5nIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nLgorICAgICAg
ICBpZiAoIW1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3KSB7CisgICAgICAgICAgICBtX3Bs
dWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5yZXNwb25zZSgp
KTsKKworICAgICAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IHRoZSBhYm92ZSBjYWxsIG51bGxp
bmcgb3V0IHRoZSBwbHVnLWluIChieSB0cnlpbmcgdG8gY2FuY2VsIHRoZSBsb2FkIGZvciBleGFt
cGxlKS4KKyAgICAgICAgICAgIGlmICghbV9wbHVnaW5WaWV3KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZEZp
bmlzaExvYWRpbmcoKTsKKyAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKKyAgICAgICAgbV9oYXNT
ZW50UmVzcG9uc2VUb1BsdWdpblZpZXcgPSBmYWxzZTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQpAQCAtMTE2Niw2ICsxMTg2LDEy
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZy
YW1lKENhY2hlZEZyYW1lKikKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKIHsKKyAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGJvb2wgaXNNYWluRnJhbWUgPSB3ZWJQ
YWdlLT5tYWluV2ViRnJhbWUoKSA9PSBtX2ZyYW1lOworCisgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+cmVzcG9uc2UoKTsKKyAgICBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24g
PSBpc01haW5GcmFtZSAmJiB3ZWJQYWdlLT5zaG91bGRVc2VDdXN0b21SZXByZXNlbnRhdGlvbkZv
clJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGUgPSB0cnVl
OwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRG
b3JOZXdQYWdlKCkKQEAgLTExODUsNiArMTIxMSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgICAgICBmaXhlZFZpc2li
bGVDb250ZW50UmVjdCA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPmZpeGVkVmlzaWJs
ZUNvbnRlbnRSZWN0KCk7CiAjZW5kaWYKIAorICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PnJlc3BvbnNlKCk7CisgICAgbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uID0gaXNNYWlu
RnJhbWUgJiYgd2ViUGFnZS0+c2hvdWxkVXNlQ3VzdG9tUmVwcmVzZW50YXRpb25Gb3JSZXNwb25z
ZShyZXNwb25zZSk7CiAgICAgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlID0gZmFsc2U7CiAKICAg
ICBTY3JvbGxiYXJNb2RlIGRlZmF1bHRTY3JvbGxiYXJNb2RlID0gc2hvdWxkSGlkZVNjcm9sbGJh
cnMgPyBTY3JvbGxiYXJBbHdheXNPZmYgOiBTY3JvbGxiYXJBdXRvOwpAQCAtMTI0NCw2ICsxMjcy
LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQmVjb21lRnJhbWVz
ZXQoYm9vbCB2YWx1ZSkKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkZyYW1lRGlkQmVjb21lRnJhbWVTZXQobV9mcmFtZS0+ZnJhbWVJRCgpLCB2YWx1ZSkpOwogfQog
Citib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAoreworICAg
IC8vIFdlIGNhbm5vdCBjYWNoZSBmcmFtZXMgdGhhdCBoYXZlIGN1c3RvbSByZXByZXNlbnRhdGlv
bnMgYmVjYXVzZSB0aGV5IGFyZQorICAgIC8vIHJlbmRlcmVkIGluIHRoZSBVSVByb2Nlc3MuCisg
ICAgcmV0dXJuICFtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247Cit9CisKIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1
bWVudExvYWRlciAqZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgbV9mcmFtZS0+Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKGRvY3VtZW50TG9hZGVyLCByZXF1ZXN0LCBy
ZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYmExZTQ5Ni4uNzky
Y2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNDEsMTAgKzQxLDEyIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFdlYkZyYW1lKFdlYkZyYW1lKiB3ZWJGcmFtZSkgeyBtX2Zy
YW1lID0gd2ViRnJhbWU7IH0KICAgICBXZWJGcmFtZSogd2ViRnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lOyB9CiAKKyAgICBib29sIGZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247IH0KKwogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzSFRNTFZpZXcoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBv
dmVycmlkZTsKQEAgLTE3NSw5ICsxNzcsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIAorCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpIG92ZXJyaWRlOwogICAgIApAQCAtMjMyLDYgKzIzNCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1f
aGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZVBhZ2VU
cmFuc2l0aW9uQWxyZWFkeTsKKyAgICBib29sIG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlv
bjsKICAgICBib29sIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyODk0Y2Q0Li5iNjdh
NDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0zMDc1LDYgKzMwNzUsMjIgQEAgdm9pZCBXZWJQYWdlOjpjbGVhclNlbGVjdGlvbigpCiB9
CiAjZW5kaWYKIAorYm9vbCBXZWJQYWdlOjptYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpKSB7CisgICAg
ICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJh
bWVMb2FkZXJDbGllbnQoZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKTsKKyAgICAgICAgQVNTRVJU
KHdlYkZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICAgICAgcmV0dXJuIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50LT5mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKCk7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFdlYlBhZ2U6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgbV9taW1lVHlwZXNXaXRoQ3Vz
dG9tUmVwcmVzZW50YXRpb25zLmFkZChtaW1lVHlwZSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6dXBk
YXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0g
bV9wYWdlLT5tYWluRnJhbWUoKTsKQEAgLTM4MTcsNiArMzgzMywxNSBAQCBib29sIFdlYlBhZ2U6
OmNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogI2VuZGlmCiB9CiAKK2Jvb2wgV2ViUGFnZTo6c2hvdWxkVXNlQ3VzdG9tUmVwcmVzZW50YXRp
b25Gb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBp
ZiAoIW1fbWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9ucy5jb250YWlucyhyZXNwb25z
ZS5taW1lVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgYSBwbHVn
LWluIGV4aXN0cyB0aGF0IGNsYWltcyB0byBzdXBwb3J0IHRoaXMgcmVzcG9uc2UsIGl0IHNob3Vs
ZCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9uLgorICAgIHJl
dHVybiAhY2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpOworfQorCiAjaWYgUExBVEZP
Uk0oR1RLKQogc3RhdGljIEZyYW1lKiB0YXJnZXRGcmFtZUZvckVkaXRpbmcoV2ViUGFnZSogcGFn
ZSkKIHsKQEAgLTM5NjIsNiArMzk4Nyw5IEBAIGJvb2wgV2ViUGFnZTo6Y2FuU2hvd01JTUVUeXBl
KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6
OmNhblNob3dNSU1FVHlwZShNSU1FVHlwZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAg
aWYgKG1fbWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9ucy5jb250YWlucyhNSU1FVHlw
ZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgY29uc3QgUGx1Z2luRGF0YSYgcGx1Z2lu
RGF0YSA9IG1fcGFnZS0+cGx1Z2luRGF0YSgpOwogICAgIGlmIChwbHVnaW5EYXRhLnN1cHBvcnRz
TWltZVR5cGUoTUlNRVR5cGUsIFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpICYmIGNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKE5vdEFi
b3V0VG9JbnN0YW50aWF0ZVBsdWdpbikpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOTc2NGY1Yy4uZjI4YmIw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02
MjIsNiArNjIyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxP
ZmZzZXRQaW5uaW5nKCk7CiAKKyAgICBib29sIG1haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIHZvaWQgbWFpbkZyYW1lRGlkTGF5b3V0
KCk7CiAKICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOyB9CkBAIC02NzMsNiArNjc2
LDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSgpIHsgcmV0dXJu
IG1fbmF0aXZlV2luZG93SGFuZGxlOyB9CiAjZW5kaWYKIAorICAgIGJvb2wgc2hvdWxkVXNlQ3Vz
dG9tUmVwcmVzZW50YXRpb25Gb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgYm9vbCBjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7CiAKICAgICBib29sIGFzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkOyB9CkBAIC0xMTAxLDYgKzExMDUsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKIAorICAgIEhh
c2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IG1fbWltZVR5cGVzV2l0aEN1c3RvbVJlcHJl
c2VudGF0aW9uczsKICAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKIAogICAg
IEhhc2hTZXQ8dW5zaWduZWQ+IG1fYWN0aXZlUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IGRkYTBlMjEuLmJmNDc0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xNzcsNiArMTc3
LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2VsZWN0Rmlu
ZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiAgICAgSGlkZUZpbmRVSSgpCiAgICAgQ291bnRT
dHJpbmdNYXRjaGVzKFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KQorICAgIAorICAgIEFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2Vu
dGF0aW9uKFN0cmluZyBtaW1lVHlwZSkKIAogICAgICMgRHJhZyBhbmQgZHJvcC4KICNpZiBQTEFU
Rk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225635</attachid>
            <date>2014-03-02 23:38:00 -0800</date>
            <delta_ts>2014-03-06 01:03:23 -0800</delta_ts>
            <desc>still preliminary</desc>
            <filename>pdf.diff</filename>
            <type>text/plain</type>
            <size>57370</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCmluZGV4
IDRlYTgyZDMuLmEzZWJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRp
b25zL1dlYktpdDIueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMv
V2ViS2l0Mi54Y2NvbmZpZwpAQCAtMzAsNyArMzAsNyBAQCBJTlNUQUxMX1BBVEhfQUNUVUFMID0g
JChXRUJLSVQyX0ZSQU1FV09SS1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChO
T1JNQUxfV0VCS0lUMl9GUkFNRVdPUktTX0RJUik7CiAKIEZSQU1FV09SS19BTkRfTElCUkFSWV9M
REZMQUdTID0gJChGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHU18kKFBMQVRGT1JNX05BTUUp
KTsKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1sb2Jq
YyAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdv
cmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9u
IC1mcmFtZXdvcmsgR3JhcGhpY3NTZXJ2aWNlcyAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29y
ayBVSUtpdCAtZnJhbWV3b3JrIFdlYktpdCAtbE1vYmlsZUdlc3RhbHQgLWxhc3NlcnRpb25fZXh0
ZW5zaW9uOworRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0g
LWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZy
YW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5k
YXRpb24gLWZyYW1ld29yayBHcmFwaGljc1NlcnZpY2VzIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJh
bWV3b3JrIFVJS2l0IC1mcmFtZXdvcmsgV2ViS2l0IC1sTW9iaWxlR2VzdGFsdCAtbGFzc2VydGlv
bl9leHRlbnNpb24gLWZyYW1ld29yayBDb3JlUERGOwogRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xE
RkxBR1NfaXBob25lb3MgPSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTX2lwaG9uZXNp
bXVsYXRvcikgLWZyYW1ld29yayBJT1N1cmZhY2U7CiBGUkFNRVdPUktfQU5EX0xJQlJBUllfTERG
TEFHU19tYWNvc3ggPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1ld29yayBD
YXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJhbWV3b3Jr
IElPS2l0IC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgSU9TdXJmYWNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDNj
YzM5MmMuLmIzNTE2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC01Myw5ICs1MywxMiBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMu
aCIKKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiQ3VzdG9tUmVwcmVzZW50
YXRpb25NYW5hZ2VyLmgiCisjaW1wb3J0ICJXS1BERlZpZXcuaCIKICNpbXBvcnQgIldLU2Nyb2xs
Vmlldy5oIgogI2ltcG9ydCA8VUlLaXQvVUlQZXJpcGhlcmFsSG9zdF9Qcml2YXRlLmg+CiAKQEAg
LTkwLDYgKzkzLDggQEAKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcj4gX2dlc3R1cmVDb250cm9sbGVyOwogICAgIEJPT0wgX2FsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbkdlc3R1cmVzOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6Q3Vz
dG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyPiBfY3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7
CkBAIC0xNTAsNiArMTU1LDggQEAKICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5kc107
CiAgICAgW19zY3JvbGxWaWV3IGFkZFN1YnZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKIAorICAg
IF9jdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
Q3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyPihzZWxmKTsKKwogICAgIFtzZWxmIF9mcmFtZU9y
Qm91bmRzQ2hhbmdlZF07CiAKICAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOwpAQCAtMTU3LDYgKzE2NCwxMiBAQAog
ICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tleWJvYXJk
RGlkQ2hhbmdlRnJhbWU6KSBuYW1lOlVJS2V5Ym9hcmREaWRDaGFuZ2VGcmFtZU5vdGlmaWNhdGlv
biBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKF9rZXlib2FyZFdpbGxTaG93OikgbmFtZTpVSUtleWJvYXJkV2lsbFNob3dOb3RpZmlj
YXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3Rvcihfa2V5Ym9hcmRXaWxsSGlkZTopIG5hbWU6VUlLZXlib2FyZFdpbGxIaWRlTm90
aWZpY2F0aW9uIG9iamVjdDpuaWxdOworCisgICAgV2ViS2l0OjpDdXN0b21SZXByZXNlbnRhdGlv
biB3a1BERlZpZXdDdXN0b21SZXByZXNlbnRhdGlvbjsKKyAgICB3a1BERlZpZXdDdXN0b21SZXBy
ZXNlbnRhdGlvbi5yZXByZXNlbnRhdGlvbkNsYXNzID0gW1dLUERGVmlldyBjbGFzc107CisKKyAg
ICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UERG
QW5kUG9zdFNjcmlwdE1JTUVUeXBlcygpKQorICAgICAgICBfY3VzdG9tUmVwcmVzZW50YXRpb25N
YW5hZ2VyLT5yZWdpc3RlckN1c3RvbVJlcHJlc2VudGF0aW9uRm9yTUlNRVR5cGUod2tQREZWaWV3
Q3VzdG9tUmVwcmVzZW50YXRpb24sIG1pbWVUeXBlKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtMzE1LDYgKzMyOCwzNCBAQAogICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IGJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXJdOwogfQogCistICh2b2lkKV9pbnN0YWxsQ3VzdG9tUmVwcmVz
ZW50YXRpb25WaWV3OihVSVZpZXcgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+ICopdmlldworewor
ICAgIFtzZWxmIGFkZFN1YnZpZXc6dmlld107CisgICAgW19zY3JvbGxWaWV3IHJlbW92ZUZyb21T
dXBlcnZpZXddOworCisgICAgW3ZpZXcgc2V0RnJhbWU6W3NlbGYgYm91bmRzXV07CisgICAgW3Zp
ZXcgc2V0Q29udGVudEluc2V0Oltfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdXTsKK30KKworLSAo
dm9pZClfZGlkVW5pbnN0YWxsQ3VzdG9tUmVwcmVzZW50YXRpb25WaWV3Cit7CisgICAgW3NlbGYg
YWRkU3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07Cit9CisKKy0gKHZvaWQpX3NldFBhZ2VIYXND
dXN0b21SZXByZXNlbnRhdGlvbjooQk9PTClwYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gbG9h
ZGVkTUlNRVR5cGU6KGNvbnN0IFdURjo6U3RyaW5nJiltaW1lVHlwZQoreworICAgIGlmIChwYWdl
SGFzQ3VzdG9tUmVwcmVzZW50YXRpb24pCisgICAgICAgIF9jdXN0b21SZXByZXNlbnRhdGlvbk1h
bmFnZXItPmluc3RhbnRpYXRlQ3VzdG9tUmVwcmVzZW50YXRpb24obWltZVR5cGUpOworICAgIGVs
c2UKKyAgICAgICAgX2N1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci0+Y2xlYXJDdXN0b21SZXBy
ZXNlbnRhdGlvbigpOworfQorCistICh2b2lkKV9kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3Rv
bVJlcHJlc2VudGF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihjb25zdCBTdHJpbmcmKXN1Z2dl
c3RlZEZpbGVuYW1lIGRhdGFSZWZlcmVuY2U6KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpZGF0
YVJlZmVyZW5jZQoreworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZShudWxscHRyLCBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5z
aXplKCkpKTsKKyAgICBfY3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLT5zZXREYXRhRm9yQ3Vz
dG9tUmVwcmVzZW50YXRpb24oZGF0YS5nZXQoKSk7Cit9CisKIC0gKHZvaWQpX2RpZENvbW1pdExv
YWRGb3JNYWluRnJhbWUKIHsKICAgICBfaXNXYWl0aW5nRm9yTmV3TGF5ZXJUcmVlQWZ0ZXJEaWRD
b21taXRMb2FkID0gWUVTOwpAQCAtNTI4LDYgKzU2OSwxMSBAQCBzdGF0aWMgV2ViQ29yZTo6Rmxv
YXRQb2ludCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVu
dE9mZgogICAgIFtfc2Nyb2xsVmlldyBzZXRGcmFtZTpib3VuZHNdOwogICAgIFtfY29udGVudFZp
ZXcgc2V0TWluaW11bVNpemU6Ym91bmRzLnNpemVdOwogICAgIFtzZWxmIF91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzV2l0aFN0YWJsZVN0YXRlOllFU107CisKKyAgICBpZiAoVUlWaWV3IDxXS0N1
c3RvbVJlcHJlc2VudGF0aW9uPiAqY3VzdG9tUmVwcmVzZW50YXRpb25WaWV3ID0gX2N1c3RvbVJl
cHJlc2VudGF0aW9uTWFuYWdlci0+dmlldygpKSB7CisgICAgICAgIFtjdXN0b21SZXByZXNlbnRh
dGlvblZpZXcgc2V0RnJhbWU6W3NlbGYgYm91bmRzXV07CisgICAgICAgIFtjdXN0b21SZXByZXNl
bnRhdGlvblZpZXcgc2V0Q29udGVudEluc2V0Oltfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdXTsK
KyAgICB9CiB9CiAKIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNXaXRoU3RhYmxl
U3RhdGU6KEJPT0wpaXNTdGF0ZVN0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDlmNGJmMjcuLmIxNzNm
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0ludGVybmFsLmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbXBvcnQgIldLQ29udGVudFZp
ZXcuaCIKICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNj
cm9sbFZpZXdfUHJpdmF0ZS5oPgorCitAcHJvdG9jb2wgV0tDdXN0b21SZXByZXNlbnRhdGlvbjsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDcsNiArNDksMTAgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgRGF0YVJlZmVyZW5jZTsKK30KKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgV0tfV0VCX1ZJ
RVdfUFJPVE9DT0xTIHsKIAogQHBhY2thZ2UKQEAgLTYxLDYgKzY3LDExIEBAIGNsYXNzIFdlYlBh
Z2VQcm94eTsKIAogLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdl
dFJlY3Qgd2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gZml0RW50aXJlUmVj
dDooQk9PTClmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBt
YXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNlOihm
bG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2U7CiAtICh2b2lkKV96b29tT3V0V2l0aE9yaWdpbjoo
V2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW47CisKKy0gKHZvaWQpX3NldFBhZ2VIYXNDdXN0b21S
ZXByZXNlbnRhdGlvbjooQk9PTClwYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gbG9hZGVkTUlN
RVR5cGU6KGNvbnN0IFdURjo6U3RyaW5nJiltaW1lVHlwZTsKKy0gKHZvaWQpX2RpZEZpbmlzaExv
YWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KGNv
bnN0IFdURjo6U3RyaW5nJilzdWdnZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNlOihjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmKWRhdGFSZWZlcmVuY2U7CistICh2b2lkKV9pbnN0YWxsQ3VzdG9t
UmVwcmVzZW50YXRpb25WaWV3OihVSVZpZXcgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+ICopdmll
dzsKKy0gKHZvaWQpX2RpZFVuaW5zdGFsbEN1c3RvbVJlcHJlc2VudGF0aW9uVmlldzsKICNlbmRp
ZgogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3Vz
dG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzRjY2I5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIuaApAQCAtMCwwICsxLDkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXJfaAor
I2RlZmluZSBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXJfaAorCisjaW1wb3J0IDxXZWJLaXQy
L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIFBMQVRGT1JNKElP
UykKKworI2ltcG9ydCA8b2JqYy9vYmpjLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2lt
cG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CitPQkpDX0NMQVNTIFdLV2ViVmlldzsKKworLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIEFQSS4K
K0Bwcm90b2NvbCBXS0N1c3RvbVJlcHJlc2VudGF0aW9uIDxOU09iamVjdD4KKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZTsKKworLSAodm9pZClzZXREYXRhOihD
RkRhdGFSZWYpZGF0YTsKKworI2lmIFBMQVRGT1JNKElPUykKKy0gKHZvaWQpc2V0Q29udGVudElu
c2V0OihVSUVkZ2VJbnNldHMpaW5zZXRzOworI2VuZGlmCisKK0BlbmQKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3N0cnVjdCBDdXN0b21SZXByZXNlbnRhdGlvbiB7CisgICAgQ2xhc3MgcmVwcmVz
ZW50YXRpb25DbGFzczsKKyAgICBTdHJpbmcgbWltZVR5cGU7Cit9OworCitjbGFzcyBDdXN0b21S
ZXByZXNlbnRhdGlvbk1hbmFnZXIgeworcHVibGljOgorICAgIEN1c3RvbVJlcHJlc2VudGF0aW9u
TWFuYWdlcihXS1dlYlZpZXcgKik7CisgICAgfkN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcigp
OworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IHJlZ2lzdGVyaW5nIGEgY3VzdG9t
IHJlcHJlc2VudGF0aW9uIGZvciBhIHNjaGVtZSB0b28uCisgICAgdm9pZCByZWdpc3RlckN1c3Rv
bVJlcHJlc2VudGF0aW9uRm9yTUlNRVR5cGUoQ3VzdG9tUmVwcmVzZW50YXRpb24sIFN0cmluZyBt
aW1lVHlwZSk7CisgICAgQ2xhc3MgY2xhc3NGb3JSZXByZXNlbnRhdGlvbihTdHJpbmcgbWltZVR5
cGUpOworCisgICAgVUlWaWV3IDxXS0N1c3RvbVJlcHJlc2VudGF0aW9uPiAqdmlldygpIHsgcmV0
dXJuIG1fY3VycmVudFZpZXcuZ2V0KCk7IH0KKworICAgIHZvaWQgaW5zdGFudGlhdGVDdXN0b21S
ZXByZXNlbnRhdGlvbihTdHJpbmcgbG9hZGVkTWltZVR5cGUpOworICAgIHZvaWQgY2xlYXJDdXN0
b21SZXByZXNlbnRhdGlvbigpOworICAgIHZvaWQgc2V0RGF0YUZvckN1c3RvbVJlcHJlc2VudGF0
aW9uKENGRGF0YVJlZik7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFVJVmlldyA8V0tDdXN0
b21SZXByZXNlbnRhdGlvbj4+IG1fY3VycmVudFZpZXc7CisKKyAgICBIYXNoTWFwPFN0cmluZywg
Q3VzdG9tUmVwcmVzZW50YXRpb24sIENhc2VGb2xkaW5nSGFzaD4gbV9jdXN0b21SZXByZXNlbnRh
dGlvbnNGb3JNSU1FVHlwZXM7CisKKyAgICBXS1dlYlZpZXcgKm1fd2ViVmlldzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUmVw
cmVzZW50YXRpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1
c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43OGEyNzNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL0N1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5tbQpAQCAtMCwwICsxLDEwMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ3VzdG9tUmVwcmVz
ZW50YXRpb25NYW5hZ2VyLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaWYgUExBVEZPUk0o
SU9TKQorCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVy
bmFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFn
ZXI6OkN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcihXS1dlYlZpZXcgKndlYlZpZXcpCisgICAg
OiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKworQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2Vy
Ojp+Q3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2VyKCkKK3sKK30KKwordm9pZCBDdXN0b21SZXBy
ZXNlbnRhdGlvbk1hbmFnZXI6OnJlZ2lzdGVyQ3VzdG9tUmVwcmVzZW50YXRpb25Gb3JNSU1FVHlw
ZShDdXN0b21SZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbiwgU3RyaW5nIG1pbWVUeXBlKQor
eworICAgIGlmIChtX2N1c3RvbVJlcHJlc2VudGF0aW9uc0Zvck1JTUVUeXBlcy5jb250YWlucyht
aW1lVHlwZSkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDYW5ub3QgcmVnaXN0ZXIgdHdvIGN1
c3RvbSByZXByZXNlbnRhdGlvbnMgZm9yIHRoZSBzYW1lIE1JTUUgdHlwZS5cbiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcmVwcmVzZW50YXRpb24ubWltZVR5cGUgPSBtaW1lVHlw
ZTsKKworICAgIG1fY3VzdG9tUmVwcmVzZW50YXRpb25zRm9yTUlNRVR5cGVzLmFkZChtaW1lVHlw
ZSwgcmVwcmVzZW50YXRpb24pOworCisgICAgbV93ZWJWaWV3LT5fcGFnZS0+YWRkTUlNRVR5cGVX
aXRoQ3VzdG9tUmVwcmVzZW50YXRpb24obWltZVR5cGUpOworfQorCitDbGFzcyBDdXN0b21SZXBy
ZXNlbnRhdGlvbk1hbmFnZXI6OmNsYXNzRm9yUmVwcmVzZW50YXRpb24oU3RyaW5nIG1pbWVUeXBl
KQoreworICAgIGZvciAoYXV0byYgcmVwcmVzZW50YXRpb24gOiBtX2N1c3RvbVJlcHJlc2VudGF0
aW9uc0Zvck1JTUVUeXBlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocmVwcmVzZW50YXRpb24u
bWltZVR5cGUgPT0gbWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gcmVwcmVzZW50YXRpb24u
cmVwcmVzZW50YXRpb25DbGFzczsKKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCit2b2lk
IEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcjo6aW5zdGFudGlhdGVDdXN0b21SZXByZXNlbnRh
dGlvbihTdHJpbmcgbG9hZGVkTWltZVR5cGUpCit7CisgICAgaWYgKG1fY3VycmVudFZpZXcpCisg
ICAgICAgIFttX2N1cnJlbnRWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworCisgICAgQ2xhc3Mg
Y3VzdG9tUmVwcmVzZW50YXRpb25DbGFzcyA9IGNsYXNzRm9yUmVwcmVzZW50YXRpb24obG9hZGVk
TWltZVR5cGUpOworICAgIG1fY3VycmVudFZpZXcgPSBhZG9wdE5TKFtbY3VzdG9tUmVwcmVzZW50
YXRpb25DbGFzcyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7CisKKyAgICBbbV93
ZWJWaWV3IF9pbnN0YWxsQ3VzdG9tUmVwcmVzZW50YXRpb25WaWV3Om1fY3VycmVudFZpZXcuZ2V0
KCldOworfQorCit2b2lkIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlcjo6Y2xlYXJDdXN0b21S
ZXByZXNlbnRhdGlvbigpCit7CisgICAgW21fY3VycmVudFZpZXcgcmVtb3ZlRnJvbVN1cGVydmll
d107CisgICAgbV9jdXJyZW50VmlldyA9IG5pbDsKKworICAgIFttX3dlYlZpZXcgX2RpZFVuaW5z
dGFsbEN1c3RvbVJlcHJlc2VudGF0aW9uVmlld107Cit9CisKK3ZvaWQgQ3VzdG9tUmVwcmVzZW50
YXRpb25NYW5hZ2VyOjpzZXREYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oQ0ZEYXRhUmVmIGRh
dGEpCit7CisgICAgQVNTRVJUKG1fY3VycmVudFZpZXcpOworICAgIFttX2N1cnJlbnRWaWV3IHNl
dERhdGE6ZGF0YV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCmluZGV4IGI5NGQ5MGEuLjE2OGNlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24p
ID0gMDsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZpcnR1YWwgdm9pZCBw
YWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKQEAgLTI1
Niw2ICsyNTYsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHZp
cnR1YWwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgZnVsbFNjcmVlbk1hbmFnZXJQ
cm94eUNsaWVudCgpID0gMDsKICNlbmRpZgorCisgICAgLy8gQ3VzdG9tIHJlcHJlc2VudGF0aW9u
cy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTI4ZGVlMi4uM2IwZjI5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxMCw2ICszMTAs
NyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgICwgbV9zcGVsbERvY3VtZW50VGFnKDAp
CiAgICAgLCBtX2hhc1NwZWxsRG9jdW1lbnRUYWcoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdMZWFy
bk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCgwKQorICAgICwgbV9tYWluRnJhbWVIYXNDdXN0b21S
ZXByZXNlbnRhdGlvbihmYWxzZSkKICAgICAsIG1fZGVsZWdhdGVzU2Nyb2xsaW5nKGZhbHNlKQog
ICAgICwgbV9tYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGZhbHNlKQogICAgICwgbV9t
YWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhcihmYWxzZSkKQEAgLTIyMzUsNyArMjIzNiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQogICAgIH0K
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVp
bnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXND
dXN0b21SZXByZXNlbnRhdGlvbiwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3Qg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIElQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAg
ICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBw
cm9jZXNzKCkpOwpAQCAtMjI0OSw3ICsyMjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQK
IAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBtX3BhZ2VMb2FkU3Rh
dGUuZGlkQ29tbWl0TG9hZCh0cmFuc2FjdGlvbik7Ci0gICAgICAgIG1fcGFnZUNsaWVudC5kaWRD
b21taXRMb2FkRm9yTWFpbkZyYW1lKCk7CisgICAgICAgIG1fcGFnZUNsaWVudC5kaWRDb21taXRM
b2FkRm9yTWFpbkZyYW1lKG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKTsK
ICAgICB9CiAKICNpZiBVU0UoQVBQS0lUKQpAQCAtMjI2NCw2ICsyMjY1LDIwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklECiAKICAgICBmcmFtZS0+ZGlkQ29tbWl0TG9hZChtaW1lVHlwZSwgY2Vy
dGlmaWNhdGVJbmZvKTsKIAorICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgeworICAgICAg
ICBtX21haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uID0gZnJhbWVIYXNDdXN0b21SZXBy
ZXNlbnRhdGlvbjsKKworICAgICAgICBpZiAobV9tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRh
dGlvbikgeworICAgICAgICAgICAgLy8gQWx3YXlzIGFzc3VtZSB0aGF0IHRoZSBtYWluIGZyYW1l
IGlzIHBpbm5lZCBoZXJlLCBzaW5jZSB0aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9uIHZpZXcgd2ls
bCBoYW5kbGUKKyAgICAgICAgICAgIC8vIGFueSB3aGVlbCBldmVudHMgYW5kIGRpc3BhdGNoIHRo
ZW0gdG8gdGhlIFdLVmlldyB3aGVuIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgIG1fbWFpbkZyYW1l
SXNQaW5uZWRUb0xlZnRTaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1lSXNQaW5u
ZWRUb1JpZ2h0U2lkZSA9IHRydWU7CisgICAgICAgICAgICBtX21haW5GcmFtZUlzUGlubmVkVG9U
b3BTaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRUb0JvdHRvbVNp
ZGUgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG1fcGFnZUNsaWVudC5kaWRDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lKG1pbWVUeXBlLCBmcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKTsKKyAg
ICB9CisKICAgICAvLyBFdmVuIGlmIFdlYlBhZ2UgaGFzIHRoZSBkZWZhdWx0IHBhZ2VTY2FsZUZh
Y3RvciAoYW5kIHRoZXJlZm9yZSBkb2Vzbid0IHJlc2V0IGl0KSwKICAgICAvLyBXZWJQYWdlUHJv
eHkncyBjYWNoZSBvZiB0aGUgdmFsdWUgY2FuIGdldCBvdXQgb2Ygc3luYyAoZS5nLiBpbiB0aGUg
Y2FzZSB3aGVyZSBhCiAgICAgLy8gcGx1Z2luIGlzIGhhbmRsaW5nIHBhZ2Ugc2NhbGluZyBpdHNl
bGYpIHNvIHdlIHNob3VsZCByZXNldCBpdCB0byB0aGUgZGVmYXVsdApAQCAtNDIzNiw2ICs0MjUx
LDExIEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp3aWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9sbEV2ZW50
cygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2NhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2
ZW50czsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3Vz
dG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQoreworICAgIG1fcGFnZUNsaWVudC5k
aWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKHN1Z2dlc3RlZEZpbGVu
YW1lLCBkYXRhUmVmZXJlbmNlKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJk
UmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlEKQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1fcGFnZUlE
KTsKQEAgLTQ1NDAsNCArNDU2MCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUaHVtYm5haWxT
Y2FsZShkb3VibGUgc2NhbGUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRUaHVtYm5haWxTY2FsZShzY2FsZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdl
UHJveHk6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRN
SU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbihtaW1lVHlwZSksIG1fcGFnZUlEKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggZDFlMWQxOC4uYjRmNTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNDUxLDYgKzQ1MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmll
d1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNQcm9jZXNzU3VwcHJlc3NpYmxlKCkg
Y29uc3Q7CiAKKyAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29u
c3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3Qg
U3RyaW5nJiBjb21tYW5kTmFtZSwgUGFzc1JlZlB0cjxWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjaz4p
OwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTk0MCw3ICs5NDIsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVucmVh
Y2hhYmxlVVJMLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIElQQzo6TWVzc2FnZURlY29kZXIm
KTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24sIHVpbnQzMl90
IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIElQQzo6TWVz
c2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIElQ
Qzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtMTE0OCw2ICsxMTUwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHBsdWdp
bkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1
dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNBbmRXaW5kb3dIYXNGb2N1cyk7CiAgICAg
dm9pZCBzZXRQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxl
eFRleHRJbnB1dElkZW50aWZpZXIsIHVpbnQ2NF90IGNvbXBsZXhUZXh0SW5wdXRTdGF0ZSk7CiAj
ZW5kaWYKQEAgLTEzODYsNiArMTM4OSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1NwZWxs
RG9jdW1lbnRUYWc7CiAgICAgdW5zaWduZWQgbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNz
YWdlQ291bnQ7CiAKKyAgICBib29sIG1fbWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247
CisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFdlYkNvcmU6OkRyYWdTZXNzaW9uIG1f
Y3VycmVudERyYWdTZXNzaW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxNDUyYjc1Li40ZGFiZTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTEyMSw3ICsxMjEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBTdHJpbmcgdXJsLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAgICAgRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBXZWJLaXQ6OkluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkQ29tbWl0
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3Ry
aW5nIG1pbWVUeXBlLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
IGNlcnRpZmljYXRlSW5mbywgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
ciB1c2VyRGF0YSkgVmFyaWFkaWMKKyAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFz
Q3VzdG9tUmVwcmVzZW50YXRpb24sIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZhaWxMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJE
YXRhKSBWYXJpYWRpYwogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRh
dGEpIFZhcmlhZGljCiAgICAgRGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKQEAgLTEzNyw2ICsxMzcsOSBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogCiAgICAgRnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50NjRfdCBm
cmFtZUlELCBib29sIHZhbHVlKQogCisgICAgIyBDdXN0b20gcmVwcmVzZW50YXRpb25zCisgICAg
RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorCiAgICAgIyBGb3JtcyBtZXNz
YWdlcwogICAgIFdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJj
ZUZyYW1lSUQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1
ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2Fn
ZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBkOWI0ZGQ0Li40MmMxNGUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBA
IC0zMiw3ICszMiw4IEBACiAjaW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLUBjbGFzcyBXS0NvbnRlbnRWaWV3OworT0JKQ19D
TEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBXS1dlYlZpZXc7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgIApAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBQYWdlQ2xpZW50SW1wbCA6IHB1
YmxpYyBQYWdlQ2xpZW50CiAjZW5kaWYKICAgICB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUGFn
ZUNsaWVudEltcGwoV0tDb250ZW50VmlldyAqKTsKKyAgICBleHBsaWNpdCBQYWdlQ2xpZW50SW1w
bChXS0NvbnRlbnRWaWV3ICosIFdLV2ViVmlldyAqKTsKICAgICB2aXJ0dWFsIH5QYWdlQ2xpZW50
SW1wbCgpOwogICAgIAogcHJpdmF0ZToKQEAgLTYzLDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QoV2ViRnJhbWVQcm94eSYsIFdlYlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByb3h5Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENv
bW1pdExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3Rv
bVJlcHJlc2VudGF0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNv
bnN0IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJz
b3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJp
YnV0ZXMmKSBvdmVycmlkZTsKQEAgLTEyOSw3ICsxMzAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0
aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIG92ZXJyaWRlOwog
I2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZTsKKwogICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVu
dFZpZXc7CisgICAgV0tXZWJWaWV3ICptX3dlYlZpZXc7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCmluZGV4IGY5ZTgwMTMuLjRjNTFmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgUExBVEZPUk0oSU9TKQogCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJO
YXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbi5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgpAQCAtNDAsNiArNDEsOCBA
QAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KIAorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKwogQGludGVy
ZmFjZSBVSVZpZXcgKElQSSkKIC0gKFVJU2Nyb2xsVmlldyAqKV9zY3JvbGxlcjsKIEBlbmQKQEAg
LTQ4LDggKzUxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tDb250ZW50VmlldyAqdmll
dykKLSAgICA6IG1fY29udGVudFZpZXcodmlldykKK1BhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbChXS0NvbnRlbnRWaWV3ICpjb250ZW50VmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3KQorICAg
IDogbV9jb250ZW50Vmlldyhjb250ZW50VmlldykKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQog
ewogfQogCkBAIC0xNDUsOCArMTQ5LDkgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6ZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JgogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFp
bkZyYW1lKCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1c2VDdXN0b21SZXByZXNlbnRhdGlvbikKIHsK
KyAgICBbbV93ZWJWaWV3IF9zZXRQYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb246dXNlQ3VzdG9t
UmVwcmVzZW50YXRpb24gbG9hZGVkTUlNRVR5cGU6bWltZVR5cGVdOwogICAgIFttX2NvbnRlbnRW
aWV3IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIH0KIApAQCAtNDAwLDYgKzQwNSwxMSBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3Qm
LCBjb25zdCBJbnRSZWN0JikKIAogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit7CisgICAgW21fd2ViVmlldyBfZGlkRmluaXNoTG9h
ZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpzdWdn
ZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNlOmRhdGFSZWZlcmVuY2VdOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAzZjJmNWQwLi5iMWE5MmU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBA
IC03NSw3ICs3NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICAgICBJbml0aWFsaXpl
V2ViS2l0MigpOwogCi0gICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGll
bnRJbXBsPihzZWxmKTsKKyAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNs
aWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwogCiAgICAgX3BhZ2UgPSBjb250ZXh0LmNyZWF0ZVdl
YlBhZ2UoKl9wYWdlQ2xpZW50LCBzdGQ6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsKICAg
ICBfcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLUERGVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMTBlNWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmll
dy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TKQorCisj
aW1wb3J0ICJDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIuaCIKKyNpbXBvcnQgIkRhdGFSZWZl
cmVuY2UuaCIKKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisKK0BpbnRlcmZhY2UgV0tQREZWaWV3IDogVUlWaWV3IDxVSVNjcm9sbFZpZXdEZWxlZ2F0
ZSwgV0tDdXN0b21SZXByZXNlbnRhdGlvbj4KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTM2MjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTAsMCArMSwxMjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLUERGVmlldy5oIgor
CisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0
IDxDb3JlUERGL1VJUERGRG9jdW1lbnQuaD4KKyNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlVmll
dy5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKworQGludGVyZmFjZSBXS1BERlZpZXcgKCkg
eworICAgIFJldGFpblB0cjxVSVBERkRvY3VtZW50PiBfcGRmRG9jdW1lbnQ7CisgICAgUmV0YWlu
UHRyPFVJU2Nyb2xsVmlldz4gX3Njcm9sbFZpZXc7CisgICAgUmV0YWluUHRyPFVJVmlldz4gX2Rv
Y3VtZW50VmlldzsKKyAgICBWZWN0b3I8VUlQREZQYWdlVmlldyo+IF9wYWdlVmlld3M7Cit9CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1BERlZpZXcKKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRnJhbWU6KENHUmVjdClmcmFtZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhGcmFtZTpmcmFtZV0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3Njcm9sbFZpZXcg
PSBhZG9wdE5TKFtbVUlTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXSk7Cisg
ICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6MV07CisgICAgW19zY3JvbGxWaWV3
IHNldE1heGltdW1ab29tU2NhbGU6NV07CisgICAgW19zY3JvbGxWaWV3IHNldERlbGVnYXRlOnNl
bGZdOworCisgICAgX2RvY3VtZW50VmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6W19zY3JvbGxWaWV3IGJvdW5kc11dKTsKKyAgICBbX3Njcm9sbFZpZXcgYWRkU3Vi
dmlldzpfZG9jdW1lbnRWaWV3LmdldCgpXTsKKworICAgIFtzZWxmIGFkZFN1YnZpZXc6X3Njcm9s
bFZpZXcuZ2V0KCldOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0RnJhbWU6
KENHUmVjdClmcmFtZQoreworICAgIFtzdXBlciBzZXRGcmFtZTpmcmFtZV07CisgICAgW19zY3Jv
bGxWaWV3IHNldEZyYW1lOmZyYW1lXTsKKworICAgIFtzZWxmIGxheW91dFZpZXdzXTsKK30KKwor
LSAodm9pZClzZXRDb250ZW50SW5zZXQ6KFVJRWRnZUluc2V0cyljb250ZW50SW5zZXQKK3sKKyAg
ICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudEluc2V0OmNvbnRlbnRJbnNldF07Cit9CisKKy0gKHZv
aWQpc2V0RGF0YTooQ0ZEYXRhUmVmKWRhdGEKK3sKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXI+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEpKTsKKyAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gY2dQREZEb2N1bWVudCA9
IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0
KCkpKTsKKyAgICBfcGRmRG9jdW1lbnQgPSBhZG9wdE5TKFtbVUlQREZEb2N1bWVudCBhbGxvY10g
aW5pdFdpdGhDR1BERkRvY3VtZW50OmNnUERGRG9jdW1lbnQuZ2V0KCldKTsKKworICAgIGZvciAo
TlNVSW50ZWdlciBwYWdlID0gMDsgcGFnZSA8IFtfcGRmRG9jdW1lbnQgbnVtYmVyT2ZQYWdlc107
ICsrcGFnZSkgeworICAgICAgICBVSVBERlBhZ2UgKnBkZlBhZ2UgPSBbX3BkZkRvY3VtZW50IHBh
Z2VBdEluZGV4OnBhZ2VdOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY3JlYXRlIGFu
ZCBkZXN0cm95IHZpZXdzIGluc3RlYWQgb2YgZGVwZW5kaW5nIG9uIHRpbGluZy4KKyAgICAgICAg
UmV0YWluUHRyPFVJUERGUGFnZVZpZXc+IHBhZ2VWaWV3ID0gYWRvcHROUyhbW1VJUERGUGFnZVZp
ZXcgYWxsb2NdIGluaXRXaXRoUGFnZTpwZGZQYWdlIHRpbGVkQ29udGVudDpZRVNdKTsKKyAgICAg
ICAgW19kb2N1bWVudFZpZXcgYWRkU3VidmlldzpwYWdlVmlldy5nZXQoKV07CisgICAgICAgIF9w
YWdlVmlld3MuYXBwZW5kKHBhZ2VWaWV3LmdldCgpKTsKKworICAgICAgICBbW3BhZ2VWaWV3IGNv
bnRlbnRMYXllcl0gc2V0Q29udGVudHNTY2FsZTpzZWxmLndpbmRvdy5zY3JlZW4uc2NhbGVdOwor
ICAgIH0KKworICAgIFtzZWxmIGxheW91dFZpZXdzXTsKK30KKworLSAodm9pZClsYXlvdXRWaWV3
cworeworICAgIENHUmVjdCBwYWdlRnJhbWUgPSBbc2VsZiBib3VuZHNdOworCisgICAgZm9yIChh
dXRvJiBwYWdlVmlldyA6IF9wYWdlVmlld3MpIHsKKyAgICAgICAgQ0dTaXplIHBhZ2VTaXplID0g
W3BhZ2VWaWV3LnBhZ2Ugc2l6ZV07CisKKyAgICAgICAgcGFnZUZyYW1lLnNpemUuaGVpZ2h0ID0g
cGFnZVNpemUuaGVpZ2h0IC8gcGFnZVNpemUud2lkdGggKiBwYWdlRnJhbWUuc2l6ZS53aWR0aDsK
KyAgICAgICAgW3BhZ2VWaWV3IHNldEZyYW1lOnBhZ2VGcmFtZV07CisKKyAgICAgICAgcGFnZUZy
YW1lLm9yaWdpbi55ICs9IHBhZ2VGcmFtZS5zaXplLmhlaWdodDsKKyAgICB9CisKKyAgICBbX2Rv
Y3VtZW50Vmlldy5nZXQoKSBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHBhZ2VGcmFtZS5zaXpl
LndpZHRoLCBwYWdlRnJhbWUub3JpZ2luLnkpXTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVu
dFNpemU6W19kb2N1bWVudFZpZXcgZnJhbWVdLnNpemVdOworfQorCisjcHJhZ21hIG1hcmsgVUlT
Y3JvbGxWaWV3RGVsZWdhdGUgbWV0aG9kcworCistIChVSVZpZXcgKil2aWV3Rm9yWm9vbWluZ0lu
U2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldworeworICAgIHJldHVybiBfZG9j
dW1lbnRWaWV3LmdldCgpOworfQorCistICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRab29taW5nOihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3IGF0U2NhbGU6
KENHRmxvYXQpc2NhbGUKK3sKK30KKworQGVuZAorCisjZW5kaWYgLyogUExBVEZPUk0oSU9TKSAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4
IDcyMWFmNTYuLmI3YTYyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLmgKQEAgLTc5LDcgKzc5LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIHByZWZlcmVuY2VzRGlk
Q2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0
IFN0cmluZyYgb2xkVG9vbFRpcCwgY29uc3QgU3RyaW5nJiBuZXdUb29sVGlwKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6
OlZpZXdwb3J0QXR0cmlidXRlcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwubW0KaW5kZXggMzg3OWJlNi4uOTMyYWI5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC0yODUsNyArMjg1LDEx
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYgb2xk
VG9vbFRpcCwgY29uc3QgU3RyaW5nJiBuZXdUCiAgICAgW21fd2tWaWV3IF90b29sVGlwQ2hhbmdl
ZEZyb206bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhvbGRUb29sVGlwKSB0bzpuc1N0cmluZ0Zy
b21XZWJDb3JlU3RyaW5nKG5ld1Rvb2xUaXApXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSgpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21t
aXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9t
UmVwcmVzZW50YXRpb24pCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaExv
YWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYzI5ZGEzNS4uZWNkM2VmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTA3LDYgKzUwNyw4IEBACiAJCTJEQTA0OUI0
MTgwQ0NDRDMwMEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTA0OUIyMTgwQ0NDRDMwMEFBRkE5
RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCAqLzsgfTsKIAkJMkRBMDQ5QjcxODBDQ0QwQTAw
QUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEwNDlCNTE4MENDRDBBMDBBQUZBOUUgLyogR3Jh
cGhpY3NMYXllckNBUmVtb3RlLmNwcCAqLzsgfTsKIAkJMkRBMDQ5QjgxODBDQ0QwQTAwQUFGQTlF
IC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRBMDQ5QjYxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5
ZXJDQVJlbW90ZS5oICovOyB9OworCQkyREExRTRGRTE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZW
aWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEx
RTRGQzE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3LmggKi87IH07CisJCTJEQTFFNEZGMThD
MDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREExRTRGRDE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3
Lm1tICovOyB9OwogCQkyREE5NDQ5NTE4ODRFM0I1MDBFRDg2REIgLyogV0tWaWV3SU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0ODYxODg0
RTNCNTAwRUQ4NkRCIC8qIFdLVmlld0lPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0OUUxODg0RTRGMDAw
RUQ4NkRCIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5NzE4ODRFNEYwMDBFRDg2REIgLyog
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0OUYxODg0RTRGMDAw
RUQ4NkRCIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0
aXZlV2ViVG91Y2hFdmVudElPUy5tbSAqLzsgfTsKQEAgLTUyNiw2ICs1MjgsOCBAQAogCQkyREFD
RTY0RTE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUNFNjREMThBREJGRjAw
MEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICovOyB9OwogCQkyREFGMDZENjE4
QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDQxOEJEMUE0NzAw
ODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkRBRjA2
RDcxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMDZENTE4QkQx
QTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJ
MkRDNkQ5QzMxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDNkQ5QzEx
OEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5oICovOyB9Owor
CQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50YXRpb25NYW5hZ2Vy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRDNkQ5
QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5tbSAqLzsg
fTsKIAkJMkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
ci5oICovOyB9OwogCQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVl
UHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3Bl
cnR5QXBwbGllci5tbSAqLzsgfTsKIAkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwpAQCAtMjI2MCw2ICsyMjY0LDggQEAKIAkJMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlFIC8qIFBs
YXRmb3JtQ0FMYXllclJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRB
MDQ5QjUxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREEwNDlCNjE4MENDRDBBMDBBQUZBOUUg
LyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyREExRTRGQzE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLUERGVmlldy5oOyBwYXRoID0gaW9zL1dLUERGVmlldy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREExRTRGRDE4QzAyQjZBMDBEQkM5MjkgLyog
V0tQREZWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQ
REZWaWV3Lm1tOyBwYXRoID0gaW9zL1dLUERGVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkRBOTQ0ODYxODg0RTNCNTAwRUQ4NkRCIC8qIFdLVmlld0lPUy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVmlld0lPUy5tbTsgcGF0aCA9IGlv
cy9XS1ZpZXdJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NDk3MTg4
NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5t
bTsgcGF0aCA9IGlvcy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyREE5NDQ5ODE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViVG91
Y2hFdmVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5h
dGl2ZVdlYlRvdWNoRXZlbnRJT1MubW07IHBhdGggPSBpb3MvTmF0aXZlV2ViVG91Y2hFdmVudElP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyODAsMTAgKzIyODYsMTIgQEAK
IAkJMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBwYXRoID0g
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEQUYwNkQ4MThCRDIzQkEwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIu
bWVzc2FnZXMuaW47IHBhdGggPSBpb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNkQ5QzExOEM0NEE2MTAw
NDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJl
cHJlc2VudGF0aW9uTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVM
YXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRF
Njk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8q
IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
MDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMzEsNiArNDEzOSw4
IEBACiAJCTFBQkMzREYyMTg5OUU0MTUwMDRGMDYyNiAvKiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkRDNkQ5QzExOEM0NEE2MTAwNDNCQUQ0
IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5oICovLAorCQkJCTJEQzZEOUMyMThDNDRB
NjEwMDQzQkFENCAvKiBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIubW0gKi8sCiAJCQkJMEYw
QzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCAqLywKIAkJCQkx
QTQyMkY4RDE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5oICovLAogCQkJCTFBNDIy
RjhDMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50Lm1tICovLApAQCAtNDMzMiw2ICs0
MzQyLDggQEAKIAkJCQkwRkNCNEUzNzE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJ
T1MubW0gKi8sCiAJCQkJMEYwQzM2NTcxOEMwNTFCQTAwRjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJl
ZUhvc3RJT1MubW0gKi8sCiAJCQkJMEYwQzM2NUIxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gKi8sCisJCQkJMkRBMUU0RkMxOEMwMkI2QTAw
REJDOTI5IC8qIFdLUERGVmlldy5oICovLAorCQkJCTJEQTFFNEZEMThDMDJCNkEwMERCQzkyOSAv
KiBXS1BERlZpZXcubW0gKi8sCiAJCQkJMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRD
aGVja2VySU9TLm1tICovLAogCQkJCTJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXJJT1MubW0gKi8sCiAJCQkJMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLywKQEAgLTY3MzksNiArNjc1MSw3IEBA
CiAJCQkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzRBNjI5MDE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNTQxOEJCRTA0NDAwMEZDRkM5IC8qIFdLU2Nyb2xs
Vmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRDNkQ5QzMxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1
c3RvbVJlcHJlc2VudGF0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNjk0M0Ux
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0QTYyOTIxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5l
Y3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUZFQzFEMTYyN0I0NTcwMDcwMEY2
RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjc4Nyw2ICs2
ODAwLDcgQEAKIAkJCQlCQzAzMkQ3QjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRHJhZ0NsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMEVGOUYxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRD
b21tYW5kUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDY0RDM2MTg5NzgxQzQwMDRCMkZF
QiAvKiBTUUxpdGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQTFFNEZFMThDMDJC
NkEwMERCQzkyOSAvKiBXS1BERlZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDdEMTBG
NDM3OEQwMDU4QzE1QSAvKiBXZWJFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTk0N0E4MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0MDU1MzE4Qjg2RUQ2MDAyMkMzOEIgLyogVmll
d1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTQ5LDYgKzc5
NjMsNyBAQAogCQkJCTM3RDBCNUM4MTg0NTIzMjcwMEY2Q0U3RCAvKiBXS0Vycm9yUmVjb3ZlcnlB
dHRlbXB0aW5nLm0gaW4gU291cmNlcyAqLywKIAkJCQlDRDVDNjZBMDEzNEI5RDM4MDA0RkUyQTgg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3NTU0MjJDQjE4MDY1MDAyMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMkRBMUU0RkYxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmll
dy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQThDNkE4MTFFM0JBNUYwMDgxMkZCNyAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRF
NjcxOEJCRTNEOTAwMEZDRkM5IC8qIFdLUHJpbnRpbmdWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFBQjAzN0MxODVGOTlEODAwRURGNTAxIC8qIEFQSURhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC04MDEwLDYgKzgwMjUsNyBAQAogCQkJCTUxQ0JCQTBGMTY1MjE5QjYwMDVCRThGRCAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTgy
OURBNTE2MzdDNzBDMDAwOTUzRDYgLyogTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTJDMDY5MDE2MzkwRTY5MDBBQkI5MTEgLyogTmV0d29ya1Jl
c291cmNlTG9hZFNjaGVkdWxlck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEQzZEOUM0MThD
NDRBNjEwMDQzQkFENCAvKiBDdXN0b21SZXByZXNlbnRhdGlvbk1hbmFnZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRy
eVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNTUxNDg5OTgyRTAwODEwRDcxIC8q
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMx
MzEyNjFFMTQ4RkY4MkMwMEJBMkEzOSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGVjYzc3MWUuLjY4MDdhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC05MCw2ICs5MCw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRl
ckNsaWVudCgpCiAgICAgOiBtX2ZyYW1lKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1
Z2luVmlldyhmYWxzZSkKICAgICAsIG1fZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbkFscmVhZHko
ZmFsc2UpCisgICAgLCBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oZmFsc2UpCiAgICAg
LCBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGUoZmFsc2UpCiB7CiB9CkBAIC0xMDksNiArMTEwLDEx
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKICAg
ICBtX2ZyYW1lLT5kZXJlZigpOwogfQogCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpoYXNI
VE1MVmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50
YXRpb247Cit9CisKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhhc1dlYlZpZXcoKSBjb25z
dAogewogICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCk7CkBAIC00NDUsOCArNDUxLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIAogICAgIC8v
IE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1
bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1l
VHlwZSgpLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSwgQ2VydGlm
aWNhdGVJbmZvKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkpLCBJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKLQorICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1l
SUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3Bv
bnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uLCBtX2ZyYW1l
LT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSwgQ2VydGlmaWNhdGVJbmZvKGRvY3Vt
ZW50TG9hZGVyLnJlc3BvbnNlKCkpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1
c2VyRGF0YS5nZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwog
fQogCkBAIC04NTIsNiArODU3LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENo
YW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKQogeworICAgIC8vIElmIHdlJ3JlIGxvYWRpbmcgYSBjdXN0b20gcmVwcmVzZW50
YXRpb24sIHdlIGRvbid0IHdhbnQgdG8gaGFuZCBvZmYgdGhlIGRhdGEgdG8gV2ViQ29yZS4KKyAg
ICBpZiAobV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKQorICAgICAgICByZXR1cm47CisK
ICAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEs
IGxlbmd0aCk7CiAKQEAgLTg3OCwyMiArODg3LDMzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciogbG9hZGVyKQogewotICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBJZiB3ZSBqdXN0IHJlY2VpdmVkIGFuIGVtcHR5IHJlc3BvbnNlIHdpdGhvdXQg
YW55IGRhdGEsIHdlIHdvbid0IGhhdmUgc2VudCBhIHJlc3BvbnNlIHRvIHRoZSBwbHVnLWluIHZp
ZXcuCi0gICAgLy8gTWFrZSBzdXJlIHRvIGRvIHRoaXMgYmVmb3JlIGNhbGxpbmcgbWFudWFsTG9h
ZERpZEZpbmlzaExvYWRpbmcuCi0gICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmll
dykgewotICAgICAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2Uo
bG9hZGVyLT5yZXNwb25zZSgpKTsKKyAgICBpZiAoIW1fcGx1Z2luVmlldykgeworICAgICAgICBp
ZiAobV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgdGhl
IGFib3ZlIGNhbGwgbnVsbGluZyBvdXQgdGhlIHBsdWctaW4gKGJ5IHRyeWluZyB0byBjYW5jZWwg
dGhlIGxvYWQgZm9yIGV4YW1wbGUpLgotICAgICAgICBpZiAoIW1fcGx1Z2luVmlldykKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4obWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IDApLCBt
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAg
ICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRp
bmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24obG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3Rl
ZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIG1f
cGx1Z2luVmlldy0+bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKLSAgICBtX3BsdWdpblZp
ZXcgPSAwOwotICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gZmFsc2U7CisgICAg
aWYgKG1fcGx1Z2luVmlldykgeworICAgICAgICAvLyBJZiB3ZSBqdXN0IHJlY2VpdmVkIGFuIGVt
cHR5IHJlc3BvbnNlIHdpdGhvdXQgYW55IGRhdGEsIHdlIHdvbid0IGhhdmUgc2VudCBhIHJlc3Bv
bnNlIHRvIHRoZSBwbHVnLWluIHZpZXcuCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0byBkbyB0aGlz
IGJlZm9yZSBjYWxsaW5nIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nLgorICAgICAgICBpZiAo
IW1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3KSB7CisgICAgICAgICAgICBtX3BsdWdpblZp
ZXctPm1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5yZXNwb25zZSgpKTsKKwor
ICAgICAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IHRoZSBhYm92ZSBjYWxsIG51bGxpbmcgb3V0
IHRoZSBwbHVnLWluIChieSB0cnlpbmcgdG8gY2FuY2VsIHRoZSBsb2FkIGZvciBleGFtcGxlKS4K
KyAgICAgICAgICAgIGlmICghbV9wbHVnaW5WaWV3KQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZEZpbmlzaExv
YWRpbmcoKTsKKyAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKKyAgICAgICAgbV9oYXNTZW50UmVz
cG9uc2VUb1BsdWdpblZpZXcgPSBmYWxzZTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQpAQCAtMTE2Niw2ICsxMTg2LDEyIEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENh
Y2hlZEZyYW1lKikKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKIHsKKyAgICBXZWJQYWdlKiB3ZWJQ
YWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGJvb2wgaXNNYWluRnJhbWUgPSB3ZWJQYWdlLT5t
YWluV2ViRnJhbWUoKSA9PSBtX2ZyYW1lOworCisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKTsKKyAgICBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gPSBpc01h
aW5GcmFtZSAmJiB3ZWJQYWdlLT5zaG91bGRVc2VDdXN0b21SZXByZXNlbnRhdGlvbkZvclJlc3Bv
bnNlKHJlc3BvbnNlKTsKKyAgICBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGUgPSB0cnVlOwogfQog
CiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQ
YWdlKCkKQEAgLTExODUsNiArMTIxMSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRy
YW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgICAgICBmaXhlZFZpc2libGVDb250
ZW50UmVjdCA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPmZpeGVkVmlzaWJsZUNvbnRl
bnRSZWN0KCk7CiAjZW5kaWYKIAorICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3Bv
bnNlKCk7CisgICAgbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uID0gaXNNYWluRnJhbWUg
JiYgd2ViUGFnZS0+c2hvdWxkVXNlQ3VzdG9tUmVwcmVzZW50YXRpb25Gb3JSZXNwb25zZShyZXNw
b25zZSk7CiAgICAgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlID0gZmFsc2U7CiAKICAgICBTY3Jv
bGxiYXJNb2RlIGRlZmF1bHRTY3JvbGxiYXJNb2RlID0gc2hvdWxkSGlkZVNjcm9sbGJhcnMgPyBT
Y3JvbGxiYXJBbHdheXNPZmYgOiBTY3JvbGxiYXJBdXRvOwpAQCAtMTI0NCw2ICsxMjcyLDEzIEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9v
bCB2YWx1ZSkKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZyYW1l
RGlkQmVjb21lRnJhbWVTZXQobV9mcmFtZS0+ZnJhbWVJRCgpLCB2YWx1ZSkpOwogfQogCitib29s
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAoreworICAgIC8vIFdl
IGNhbm5vdCBjYWNoZSBmcmFtZXMgdGhhdCBoYXZlIGN1c3RvbSByZXByZXNlbnRhdGlvbnMgYmVj
YXVzZSB0aGV5IGFyZQorICAgIC8vIHJlbmRlcmVkIGluIHRoZSBVSVByb2Nlc3MuCisgICAgcmV0
dXJuICFtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247Cit9CisKIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExv
YWRlciAqZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgbV9mcmFtZS0+Y29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKGRvY3VtZW50TG9hZGVyLCByZXF1ZXN0LCByZXNwb25z
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYmExZTQ5Ni4uNzkyY2M4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNDEsMTAgKzQxLDEyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFdlYkZyYW1lKFdlYkZyYW1lKiB3ZWJGcmFtZSkgeyBtX2ZyYW1lID0g
d2ViRnJhbWU7IH0KICAgICBXZWJGcmFtZSogd2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lOyB9CiAKKyAgICBib29sIGZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247IH0KKwogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaGFzSFRNTFZpZXcoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlk
ZTsKQEAgLTE3NSw5ICsxNzcsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ2FjaGVQYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIAorCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpIG92ZXJyaWRlOwogICAgIApAQCAtMjMyLDYgKzIzNCw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2Vu
dFJlc3BvbnNlVG9QbHVnaW5WaWV3OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZVBhZ2VUcmFuc2l0
aW9uQWxyZWFkeTsKKyAgICBib29sIG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbjsKICAg
ICBib29sIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyODk0Y2Q0Li5iNjdhNDJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0z
MDc1LDYgKzMwNzUsMjIgQEAgdm9pZCBXZWJQYWdlOjpjbGVhclNlbGVjdGlvbigpCiB9CiAjZW5k
aWYKIAorYm9vbCBXZWJQYWdlOjptYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbigpIGNv
bnN0Cit7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpKSB7CisgICAgICAgIFdl
YkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQoZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKTsKKyAgICAgICAgQVNTRVJUKHdlYkZy
YW1lTG9hZGVyQ2xpZW50KTsKKyAgICAgICAgcmV0dXJuIHdlYkZyYW1lTG9hZGVyQ2xpZW50LT5m
cmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFdlYlBhZ2U6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgbV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVw
cmVzZW50YXRpb25zLmFkZChtaW1lVHlwZSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6dXBkYXRlTWFp
bkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdl
LT5tYWluRnJhbWUoKTsKQEAgLTM4MTcsNiArMzgzMywxNSBAQCBib29sIFdlYlBhZ2U6OmNhblBs
dWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogI2Vu
ZGlmCiB9CiAKK2Jvb2wgV2ViUGFnZTo6c2hvdWxkVXNlQ3VzdG9tUmVwcmVzZW50YXRpb25Gb3JS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoIW1f
bWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9ucy5jb250YWlucyhyZXNwb25zZS5taW1l
VHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgYSBwbHVnLWluIGV4
aXN0cyB0aGF0IGNsYWltcyB0byBzdXBwb3J0IHRoaXMgcmVzcG9uc2UsIGl0IHNob3VsZCB0YWtl
IHByZWNlZGVuY2Ugb3ZlciB0aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9uLgorICAgIHJldHVybiAh
Y2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpOworfQorCiAjaWYgUExBVEZPUk0oR1RL
KQogc3RhdGljIEZyYW1lKiB0YXJnZXRGcmFtZUZvckVkaXRpbmcoV2ViUGFnZSogcGFnZSkKIHsK
QEAgLTM5NjIsNiArMzk4Nyw5IEBAIGJvb2wgV2ViUGFnZTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmNhblNo
b3dNSU1FVHlwZShNSU1FVHlwZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgaWYgKG1f
bWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9ucy5jb250YWlucyhNSU1FVHlwZSkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCiAgICAgY29uc3QgUGx1Z2luRGF0YSYgcGx1Z2luRGF0YSA9
IG1fcGFnZS0+cGx1Z2luRGF0YSgpOwogICAgIGlmIChwbHVnaW5EYXRhLnN1cHBvcnRzTWltZVR5
cGUoTUlNRVR5cGUsIFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpICYmIGNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKE5vdEFib3V0VG9J
bnN0YW50aWF0ZVBsdWdpbikpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOTc2NGY1Yy4uZjI4YmIwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02MjIsNiAr
NjIyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQ
aW5uaW5nKCk7CiAKKyAgICBib29sIG1haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCBhZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKKwogICAgIHZvaWQgbWFpbkZyYW1lRGlkTGF5b3V0KCk7CiAK
ICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOyB9CkBAIC02NzMsNiArNjc2LDcgQEAg
cHVibGljOgogICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSgpIHsgcmV0dXJuIG1fbmF0
aXZlV2luZG93SGFuZGxlOyB9CiAjZW5kaWYKIAorICAgIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUmVw
cmVzZW50YXRpb25Gb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgYm9vbCBjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSk7CiAKICAgICBib29sIGFzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNocm9ub3VzUGx1Z2luSW5p
dGlhbGl6YXRpb25FbmFibGVkOyB9CkBAIC0xMTAxLDYgKzExMDUsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKIAorICAgIEhhc2hTZXQ8
U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IG1fbWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0
aW9uczsKICAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIEhhc2hT
ZXQ8dW5zaWduZWQ+IG1fYWN0aXZlUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IGRkYTBlMjEuLmJmNDc0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xNzcsNiArMTc3LDggQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2VsZWN0RmluZE1hdGNo
KHVpbnQzMl90IG1hdGNoSW5kZXgpCiAgICAgSGlkZUZpbmRVSSgpCiAgICAgQ291bnRTdHJpbmdN
YXRjaGVzKFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQorICAgIAorICAgIEFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9u
KFN0cmluZyBtaW1lVHlwZSkKIAogICAgICMgRHJhZyBhbmQgZHJvcC4KICNpZiBQTEFURk9STShH
VEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225964</attachid>
            <date>2014-03-06 01:03:23 -0800</date>
            <delta_ts>2014-03-07 03:01:27 -0800</delta_ts>
            <desc>patch</desc>
            <filename>pdf.diff</filename>
            <type>text/plain</type>
            <size>75669</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmY5MTcxNC4uMjE3MjdkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTY2Niw2ICs2NjYsNyBAQCBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2
Y3JlYXRlRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRl
RVBOU181UmFuZ2VFCiBfX1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRXYKIF9f
Wk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTE1Y2FuU2hvd01JTUVUeXBlRVJLTjNXVEY2U3Ry
aW5nRQorX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MTVnZXRQREZNSU1FVHlwZXNFdgog
X19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjBpc0phdmFBcHBsZXRNSU1FVHlwZUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTIzZ2V0TUlNRVR5cGVG
b3JFeHRlbnNpb25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0
cnkyNGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKQEAgLTY3Myw3ICs2
NzQsNiBAQCBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyNWlzUERGT3JQb3N0U2NyaXB0
TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnky
NmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdp
c3RyeTI3Z2V0VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzRXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5
cGVSZWdpc3RyeTI3aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQot
X19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MjhnZXRQREZBbmRQb3N0U2NyaXB0TUlNRVR5
cGVzRXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTI5Z2V0U3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXNFdgogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lzdHJ5MzJpc1N1cHBvcnRl
ZEltYWdlUmVzb3VyY2VNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2TmF2
aWdhdGlvbkFjdGlvbkMxRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IDE4Yzc0MTEuLjgzM2EwMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xODcs
NiArMTg3LDcgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiogc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNGb3JFbmNvZGluZzsKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4qIHN1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZXM7CiBzdGF0aWMgSGFzaFNldDxTdHJpbmc+KiBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlczsKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4qIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
Oworc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiogcGRmTUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8
U3RyaW5nPiogcGRmQW5kUG9zdFNjcmlwdE1JTUVUeXBlczsKIHN0YXRpYyBIYXNoU2V0PFN0cmlu
Zz4qIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKIApAQCAtMzM5LDE1ICszNDAsMTkgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKQogICAgICAg
c3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcy0+YWRkKHR5cGVzW2ldKTsKIH0KIAotc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZVBERkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMoKQorc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVBERk1JTUVUeXBlcygpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3QgdHlwZXNb
XSA9IHsKICAgICAgICAgImFwcGxpY2F0aW9uL3BkZiIsCi0gICAgICAgICJ0ZXh0L3BkZiIsCi0g
ICAgICAgICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwKKyAgICAgICAgInRleHQvcGRmIgogICAg
IH07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHR5cGVzKTsg
KytpKQotICAgICAgICBwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzLT5hZGQodHlwZXNbaV0pOwor
ICAgICAgICBwZGZNSU1FVHlwZXMtPmFkZCh0eXBlc1tpXSk7Cit9CisKK3N0YXRpYyB2b2lkIGlu
aXRpYWxpemVQb3N0U2NyaXB0TUlNRVR5cGVzKCkKK3sKKyAgICBwZGZBbmRQb3N0U2NyaXB0TUlN
RVR5cGVzLT5hZGQoImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKTsKIH0KIAogc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCkKQEAgLTQ5MSw4ICs0OTYsMTEg
QEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1JTUVUeXBlUmVnaXN0cnkoKQogICAgIHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKICAgICBpbml0aWFsaXplU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKIAotICAgIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMg
PSBuZXcgSGFzaFNldDxTdHJpbmc+OwotICAgIGluaXRpYWxpemVQREZBbmRQb3N0U2NyaXB0TUlN
RVR5cGVzKCk7CisgICAgcGRmTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKKyAgICBp
bml0aWFsaXplUERGTUlNRVR5cGVzKCk7CisKKyAgICBwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVz
ID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigqcGRmTUlNRVR5cGVzKTsKKyAgICBpbml0aWFsaXplUG9z
dFNjcmlwdE1JTUVUeXBlcygpOwogCiAgICAgdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzID0gbmV3
IEhhc2hTZXQ8U3RyaW5nPjsKICAgICBpbml0aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVz
KCk7CkBAIC02NjEsNiArNjY5LDE0IEBAIEhhc2hTZXQ8U3RyaW5nPiYgTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKQogICAgIHJldHVybiAqc3VwcG9ydGVkTWVk
aWFNSU1FVHlwZXM7CiB9CiAKKworSGFzaFNldDxTdHJpbmc+JiBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRQREZNSU1FVHlwZXMoKQoreworICAgIGlmICghcGRmTUlNRVR5cGVzKQorICAgICAgICBpbml0
aWFsaXplTUlNRVR5cGVSZWdpc3RyeSgpOworICAgIHJldHVybiAqcGRmTUlNRVR5cGVzOworfQor
CiBIYXNoU2V0PFN0cmluZz4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFBERkFuZFBvc3RTY3JpcHRN
SU1FVHlwZXMoKQogewogICAgIGlmICghcGRmQW5kUG9zdFNjcmlwdE1JTUVUeXBlcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCBmNzIwZjU4Li45MjZk
N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC05
MSw2ICs5MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBnZXRTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCk7CiAgICAgc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nPiYgZ2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKICAgICBzdGF0aWMgSGFzaFNl
dDxTdHJpbmc+JiBnZXRTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOworICAgIHN0YXRpYyBIYXNo
U2V0PFN0cmluZz4mIGdldFBERk1JTUVUeXBlcygpOwogICAgIHN0YXRpYyBIYXNoU2V0PFN0cmlu
Zz4mIGdldFBERkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMoKTsKICAgICBzdGF0aWMgSGFzaFNldDxT
dHJpbmc+JiBnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFj
YWExMjIuLmZkOTdhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMTQtMDMtMDYg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYktp
dDJdW2lPU10gUERGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjk2MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1MjYwMjE2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlLWludHJvZHVjZSBjdXN0
b20gcmVwcmVzZW50YXRpb25zIHRvIFdlYktpdDIgKHJlbW92ZWQgaW4gcjE1Mjg0MSksIGJ1dAor
ICAgICAgICBmb3IgaU9TIHRoaXMgdGltZS4gQWRkIGEgc2luZ2xlIGN1c3RvbSByZXByZXNlbnRh
dGlvbiB3aGljaCBpbnN0YWxscyBhCisgICAgICAgIHByaW1pdGl2ZSBQREYgdmlldyBpbiBwbGFj
ZSBvZiB0aGUgV0tDb250ZW50VmlldyBpZiBhIFBERiBpcyBsb2FkZWQgaW4KKyAgICAgICAgdGhl
IG1haW4gZnJhbWUuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmln
OgorICAgICAgICBMaW5rIGFnYWluc3QgQ29yZVBERiwgZm9yIFVJUERGUGFnZVZpZXcuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgQWRkIHN0b3Jh
Z2UgZm9yIGEgQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeSBpbnN0YW5jZSwgYW5kIGZvciB0
aGUgYWN0aXZlCisgICAgICAgIGN1c3RvbSByZXByZXNlbnRhdGlvbiB2aWV3LiBJbml0aWFsaXpl
IHRoZSByZWdpc3RyeSwgdXNpbmcgV0tQREZWaWV3CisgICAgICAgIGZvciBhbGwgUERGIE1JTUUg
dHlwZXMuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQYWdlSGFzQ3VzdG9tUmVwcmVzZW50
YXRpb246bG9hZGVkTUlNRVR5cGU6XSk6CisgICAgICAgIEluc3RhbGwvdW5pbnN0YWxsIHRoZSBj
dXN0b20gcmVwcmVzZW50YXRpb24gdmlldy4gQ3JlYXRlIGEgdmlldywgaWYgbmVlZGVkLAorICAg
ICAgICBiYXNlZCBvbiB0aGUgY2xhc3MgdGhhdCB0aGUgcmVnaXN0cnkgaGFzIGFzc29jaWF0ZWQg
d2l0aCB0aGUgZ2l2ZW4gTUlNRSB0eXBlLgorICAgICAgICBXZSB1bnBhcmVudCB0aGUgV0tDb250
ZW50VmlldyB3aGlsZSB0aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9uIHZpZXcgaXMgYWN0aXZlLAor
ICAgICAgICBhbmQgcmUtdXNlIHRoZSBleGlzdGluZyBXS1Njcm9sbFZpZXcgdG8gY29udGFpbiB0
aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9uIHZpZXcuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9k
aWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOmRhdGFSZWZlcmVuY2U6XSk6CisgICAgICAgIEZvcndhcmQgbG9hZGVkIGRhdGEgb24g
dG8gdGhlIGN1c3RvbSByZXByZXNlbnRhdGlvbiB2aWV3IGZvciBkaXNwbGF5LgorCisgICAgICAg
ICgtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOldlYktpdDo6XSk6CisgICAgICAgIEFz
c2VydCB0aGF0IHdlIGFyZW4ndCBnZXR0aW5nIGxheWVyIHRyZWUgY29tbWl0cyB3aGlsZSB1c2lu
ZyBhIGN1c3RvbSByZXByZXNlbnRhdGlvbi4KKworICAgICAgICAoLVtXS1dlYlZpZXcgdmlld0Zv
clpvb21pbmdJblNjcm9sbFZpZXc6XSk6CisgICAgICAgIElmIHdlJ3JlIHVzaW5nIGEgY3VzdG9t
IHJlcHJlc2VudGF0aW9uLCBpdHMgdmlldyBzaG91bGQgYmUgdXNlZCBmb3Igem9vbWluZworICAg
ICAgICBpbnN0ZWFkIG9mIHRoZSAodW5wYXJlbnRlZCkgY29udGVudCB2aWV3LgorCisgICAgICAg
ICgtW1dLV2ViVmlldyBoYXNDb250ZW50Vmlld10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2Ny
b2xsVmlld1dpbGxCZWdpblpvb21pbmc6d2l0aFZpZXc6XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBzY3JvbGxWaWV3V2lsbEJlZ2luRHJhZ2dpbmc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZGlkRmluaXNoU2Nyb2xsaW5nXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJs
ZUNvbnRlbnRSZWN0c10pOgorICAgICAgICBJZiB3ZSBkbyBub3QgaGF2ZSBhIHBhcmVudGVkIFdL
Q29udGVudFZpZXcgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBjdXN0b20KKyAgICAgICAgcmVwcmVz
ZW50YXRpb24sIHdlIHNob3VsZCBub3QgZm9yd2FyZCBzY3JvbGwgdmlldyByZWxhdGVkIGNoYW5n
ZXMgdG8gaXQuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9mcmFtZU9yQm91bmRzQ2hhbmdlZF0p
OgorICAgICAgICBVcGRhdGUgdGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgY3VzdG9tIHJlcHJlc2Vu
dGF0aW9uIHZpZXcgaWYgdGhlIHdlYiB2aWV3IHNpemUgY2hhbmdlcy4KKyAgICAgICAgCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICBB
ZGQgdHdvIG1ldGhvZHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQ3VzdG9tUmVwcmVz
ZW50YXRpb25SZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQ3Vz
dG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkN1
c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnk6OkN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkp
OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5Ojp+Q3VzdG9t
UmVwcmVzZW50YXRpb25SZWdpc3RyeSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVJlcHJlc2Vu
dGF0aW9uUmVnaXN0cnk6OnJlZ2lzdGVyQ3VzdG9tUmVwcmVzZW50YXRpb25Gb3JNSU1FVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnk6OmN1c3RvbVJl
cHJlc2VudGF0aW9uRm9yTUlNRVR5cGUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dL
Q3VzdG9tUmVwcmVzZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIEEgbWluaW1hbCBwcm90b2Nv
bCBmb3IgaW5mb3JtaW5nIGN1c3RvbSByZXByZXNlbnRhdGlvbiBpbXBsZW1lbnRhdGlvbnMKKyAg
ICAgICAgb2YgY2hhbmdlcyB0byB0aGUgc2l6ZSBvZiB0aGUgdmlldywgdGhlIHJlcHJlc2VudGVk
IGRhdGEsIGFuZCB0aGUgb3duaW5nIHNjcm9sbCB2aWV3LgorCisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21S
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9t
UmVwcmVzZW50YXRpb24pOgorICAgICAgICBBZGQgcGFyYW1ldGVycyB0byBkaWRDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lLCBpbmRpY2F0aW5nIGlmIHdlIHNob3VsZCB1c2UKKyAgICAgICAgYSBjdXN0
b20gcmVwcmVzZW50YXRpb24gdG8gZGlzcGxheSB0aGUgbWFpbiBmcmFtZSwgYW5kIHdoYXQgTUlN
RSB0eXBlCisgICAgICAgIHdhcyBsb2FkZWQgaW4gc2FpZCBmcmFtZSwgYW5kIGFkZCBkaWRGaW5p
c2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uLgorICAgICAgICBPbiBpT1MsIGZv
cndhcmQgdGhlc2UgdG8gdGhlIFdLV2ViVmlldy4KKyAgICAgICAgQWxzbywgZ2l2ZSBQYWdlQ2xp
ZW50SW1wbElPUyBhIHJlZmVyZW5jZSB0byB0aGUgV0tXZWJWaWV3LgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRM
b2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgaW5pdFdpdGhGcmFtZTpjb250ZXh0OldlYktpdDo6Y29uZmlndXJhdGlvbjpXZWJLaXQ6
OndlYlZpZXc6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbTogQWRkZWQuCisgICAgICAg
IEFkZCBhIHZlcnkgc2ltcGxlIFBERiB2aWV3IGJhc2VkIG9uIFVJUERGUGFnZVZpZXcuIEFkZGl0
aW9uYWwgZnVuY3Rpb25hbGl0eQorICAgICAgICBjYW4gY29tZSBpbiB0aGUgZnV0dXJlOyByaWdo
dCBub3csIHdlIGp1c3QgY3JlYXRlIG9uZSB2aWV3IGZvciBlYWNoIHBhZ2UsIGFuZAorICAgICAg
ICBkZXBlbmQgb24gQ0FUaWxlZExheWVyIHRvIG9ubHkgcGFpbnQgdGhlIHBhZ2VzIHRoYXQgYXJl
IGJlaW5nIGRpc3BsYXllZC4KKyAgICAgICAgCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZSBfaGFzQ3VzdG9tUmVwcmVzZW50YXRpb25dKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZVBy
aXZhdGUuaDoKKyAgICAgICAgRXhwb3NlIHdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gZnJhbWUgaGFz
IGEgY3VzdG9tIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBwbHVnLWluLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpoYXNIVE1MVmlldyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRnJvbUNhY2hlZEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgUmVzdG9yZSBXZWJGcmFtZUxvYWRlckNsaWVudCBjdXN0b20gcmVwcmVzZW50YXRp
b24gY29kZSwgd2hpY2ggZW5zdXJlcworICAgICAgICB0aGF0IGRhdGEgaXMgcm91dGVkIGNvcnJl
Y3RseSAodG8gdGhlIFVJIHByb2Nlc3MsIGFuZCBub3QgdG8gV2ViQ29yZSkgYW5kCisgICAgICAg
IHRoYXQgd2UgZG9uJ3QgdHJ5IHRvIHVzZSB0aGUgcGFnZSBjYWNoZSBmb3IgZnJhbWVzIHdpdGgg
Y3VzdG9tIHJlcHJlc2VudGF0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bWFpbkZyYW1lSGFzQ3VzdG9t
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRNSU1FVHlwZVdp
dGhDdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNob3Vs
ZFVzZUN1c3RvbVJlcHJlc2VudGF0aW9uRm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgIEtlZXAgYSBsaXN0IG9mIE1JTUUgdHlwZXMgd2hpY2ggY2FuIGJlIGRpc3Bs
YXllZCB2aWEgY3VzdG9tIHJlcHJlc2VudGF0aW9ucworICAgICAgICBpbiBXZWJQYWdlLCB3aGlj
aCB3aWxsIGJlIHB1c2hlZCBkb3duIGZyb20gdGhlIHJlZ2lzdHJ5IGFzIG5ldyByZXByZXNlbnRh
dGlvbnMKKyAgICAgICAgYXJlIGFkZGVkLiBQbHVnLWlucyBzdGlsbCB0YWtlIHByZWNlbmRlbmNl
IG92ZXIgY3VzdG9tIHJlcHJlc2VudGF0aW9ucy4KKwogMjAxNC0wMy0wMyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bQ01ha2VdIEdlbmVy
YXRlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBET00gYmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCmluZGV4IGJkOWZjZjkuLjYwZjM2MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25m
aWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZwpA
QCAtMzAsNyArMzAsNyBAQCBJTlNUQUxMX1BBVEhfQUNUVUFMID0gJChXRUJLSVQyX0ZSQU1FV09S
S1NfRElSKTsKIERZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gJChOT1JNQUxfV0VCS0lUMl9GUkFN
RVdPUktTX0RJUik7CiAKIEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gJChGUkFNRVdP
UktfQU5EX0xJQlJBUllfTERGTEFHU18kKFBMQVRGT1JNX05BTUUpKTsKLUZSQU1FV09SS19BTkRf
TElCUkFSWV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1sb2JqYyAtZnJhbWV3b3JrIENGTmV0
d29yayAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1m
cmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgR3JhcGhp
Y3NTZXJ2aWNlcyAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBVSUtpdCAtZnJhbWV3b3Jr
IFdlYktpdCAtbE1vYmlsZUdlc3RhbHQgLWxhc3NlcnRpb25fZXh0ZW5zaW9uOworRlJBTUVXT1JL
X0FORF9MSUJSQVJZX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWxvYmpjIC1mcmFtZXdvcmsg
Q0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3JlR3JhcGhp
Y3MgLWZyYW1ld29yayBDb3JlUERGIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3Vu
ZGF0aW9uIC1mcmFtZXdvcmsgR3JhcGhpY3NTZXJ2aWNlcyAtZnJhbWV3b3JrIEltYWdlSU8gLWZy
YW1ld29yayBVSUtpdCAtZnJhbWV3b3JrIFdlYktpdCAtbE1vYmlsZUdlc3RhbHQgLWxhc3NlcnRp
b25fZXh0ZW5zaW9uOwogRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1NfaXBob25lb3MgPSAk
KEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvcikgLWZyYW1ld29y
ayBJT1N1cmZhY2U7CiBGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHU19tYWNvc3ggPSAtZnJh
bWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1ld29yayBDYXJib24gLWZyYW1ld29yayBD
b2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJhbWV3b3JrIElPS2l0IC1mcmFtZXdvcmsg
Q29yZUF1ZGlvIC1mcmFtZXdvcmsgSU9TdXJmYWNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDEzYmMxODYuLjQ1NzU1N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBA
IC01Myw5ICs1MywxMiBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYg
UExBVEZPUk0oSU9TKQorI2ltcG9ydCAiQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS5oIgor
I2ltcG9ydCAiV0tQREZWaWV3LmgiCiAjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIKICNpbXBvcnQg
PFVJS2l0L1VJUGVyaXBoZXJhbEhvc3RfUHJpdmF0ZS5oPgogCkBAIC05Niw2ICs5OSw5IEBACiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+IF9nZXN0
dXJlQ29udHJvbGxlcjsKICAgICBCT09MIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0
dXJlczsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkN1c3RvbVJlcHJlc2VudGF0aW9u
UmVnaXN0cnk+IF9jdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5OworICAgIFJldGFpblB0cjxV
SVZpZXcgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+PiBfY3VzdG9tUmVwcmVzZW50YXRpb25WaWV3
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXS1ZpZXc+IF93a1Zp
ZXc7CkBAIC0xNTYsNiArMTYyLDggQEAKICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5k
c107CiAgICAgW19zY3JvbGxWaWV3IGFkZFN1YnZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKIAor
ICAgIF9jdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OkN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnk+KCpfcGFnZSk7CisKICAgICBbc2VsZiBf
ZnJhbWVPckJvdW5kc0NoYW5nZWRdOwogCiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRl
ciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKQEAgLTE2Myw2ICsxNzEs
OSBAQAogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tl
eWJvYXJkRGlkQ2hhbmdlRnJhbWU6KSBuYW1lOlVJS2V5Ym9hcmREaWRDaGFuZ2VGcmFtZU5vdGlm
aWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKF9rZXlib2FyZFdpbGxTaG93OikgbmFtZTpVSUtleWJvYXJkV2lsbFNob3dO
b3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3Rvcihfa2V5Ym9hcmRXaWxsSGlkZTopIG5hbWU6VUlLZXlib2FyZFdpbGxI
aWRlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworCisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6
IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBlcygpKQorICAgICAgICBf
Y3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS0+cmVnaXN0ZXJDdXN0b21SZXByZXNlbnRhdGlv
bkZvck1JTUVUeXBlKFtXS1BERlZpZXcgY2xhc3NdLCBtaW1lVHlwZSk7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTMyMSw2ICszMzIsMzUgQEAKICAgICByZXR1cm4gW19jb250ZW50
VmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXTsKIH0KIAorLSAodm9pZClfc2V0UGFnZUhh
c0N1c3RvbVJlcHJlc2VudGF0aW9uOihCT09MKXBhZ2VIYXNDdXN0b21SZXByZXNlbnRhdGlvbiBs
b2FkZWRNSU1FVHlwZTooY29uc3QgV1RGOjpTdHJpbmcmKW1pbWVUeXBlCit7CisgICAgaWYgKHBh
Z2VIYXNDdXN0b21SZXByZXNlbnRhdGlvbikgeworICAgICAgICBbX2N1c3RvbVJlcHJlc2VudGF0
aW9uVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKworICAgICAgICBDbGFzcyByZXByZXNlbnRh
dGlvbkNsYXNzID0gX2N1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnktPmN1c3RvbVJlcHJlc2Vu
dGF0aW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOworICAgICAgICBfY3VzdG9tUmVwcmVzZW50YXRp
b25WaWV3ID0gYWRvcHROUyhbW3JlcHJlc2VudGF0aW9uQ2xhc3MgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVyb10pOworCisgICAgICAgIFtfc2Nyb2xsVmlldyBhZGRTdWJ2aWV3Ol9jdXN0
b21SZXByZXNlbnRhdGlvblZpZXcuZ2V0KCldOworICAgICAgICBbX2NvbnRlbnRWaWV3IHJlbW92
ZUZyb21TdXBlcnZpZXddOworCisgICAgICAgIFtfY3VzdG9tUmVwcmVzZW50YXRpb25WaWV3IHdl
Yl9zZXRNaW5pbXVtU2l6ZTpzZWxmLmJvdW5kcy5zaXplXTsKKyAgICAgICAgW19jdXN0b21SZXBy
ZXNlbnRhdGlvblZpZXcgd2ViX3NldFNjcm9sbFZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOworICAg
IH0gZWxzZSBpZiAoX2N1c3RvbVJlcHJlc2VudGF0aW9uVmlldykgeworICAgICAgICBbX2N1c3Rv
bVJlcHJlc2VudGF0aW9uVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgX2N1c3Rv
bVJlcHJlc2VudGF0aW9uVmlldyA9IG51bGxwdHI7CisKKyAgICAgICAgW19zY3JvbGxWaWV3IGFk
ZFN1YnZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKKyAgICAgICAgW19zY3JvbGxWaWV3IHNldENv
bnRlbnRTaXplOltfY29udGVudFZpZXcgZnJhbWVdLnNpemVdOworICAgIH0KK30KKworLSAodm9p
ZClfZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTooY29uc3QgU3RyaW5nJilzdWdnZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNl
Oihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKWRhdGFSZWZlcmVuY2UKK3sKKyAgICBBU1NFUlQo
X2N1c3RvbVJlcHJlc2VudGF0aW9uVmlldyk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YSA9
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YVJlZmVyZW5jZS5kYXRh
KCkgbGVuZ3RoOmRhdGFSZWZlcmVuY2Uuc2l6ZSgpXSk7CisgICAgW19jdXN0b21SZXByZXNlbnRh
dGlvblZpZXcgd2ViX3NldEN1c3RvbVJlcHJlc2VudGF0aW9uRGF0YTpkYXRhLmdldCgpXTsKK30K
KwogLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZQogewogICAgIF9pc1dhaXRpbmdG
b3JOZXdMYXllclRyZWVBZnRlckRpZENvbW1pdExvYWQgPSBZRVM7CkBAIC0zMjgsNiArMzY4LDgg
QEAKIAogLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlvbgogeworICAgIEFTU0VSVCgh
X2N1c3RvbVJlcHJlc2VudGF0aW9uVmlldyk7CisKICAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVu
dFNpemU6W19jb250ZW50VmlldyBmcmFtZV0uc2l6ZV07CiAgICAgW19zY3JvbGxWaWV3IHNldE1p
bmltdW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWluaW11bVNjYWxlRmFjdG9yKCld
OwogICAgIFtfc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0
aW9uLm1heGltdW1TY2FsZUZhY3RvcigpXTsKQEAgLTQ2NiwxNCArNTA4LDI2IEBAIHN0YXRpYyBX
ZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6RmxvYXRQ
b2ludCBjb250ZW50T2ZmCiAKICNwcmFnbWEgbWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAK
Ky0gKEJPT0wpaGFzQ29udGVudFZpZXcKK3sKKyAgICByZXR1cm4gIV9jdXN0b21SZXByZXNlbnRh
dGlvblZpZXc7Cit9CisKIC0gKFVJVmlldyAqKXZpZXdGb3Jab29taW5nSW5TY3JvbGxWaWV3OihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiB7CiAgICAgQVNTRVJUKF9zY3JvbGxWaWV3ID09IHNj
cm9sbFZpZXcpOworCisgICAgaWYgKF9jdXN0b21SZXByZXNlbnRhdGlvblZpZXcpCisgICAgICAg
IHJldHVybiBfY3VzdG9tUmVwcmVzZW50YXRpb25WaWV3LmdldCgpOworCiAgICAgcmV0dXJuIF9j
b250ZW50Vmlldy5nZXQoKTsKIH0KIAogLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWlu
ZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmlldzooVUlWaWV3ICopdmlldwogewor
ICAgIGlmICghW3NlbGYgaGFzQ29udGVudFZpZXddKQorICAgICAgICByZXR1cm47CisKICAgICBp
ZiAoc2Nyb2xsVmlldy5waW5jaEdlc3R1cmVSZWNvZ25pemVyLnN0YXRlID09IFVJR2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZUJlZ2FuKQogICAgICAgICBbX2NvbnRlbnRWaWV3IHdpbGxTdGFydFVzZXJU
cmlnZ2VyZWRab29tXTsKICAgICBbX2NvbnRlbnRWaWV3IHdpbGxTdGFydFpvb21PclNjcm9sbF07
CkBAIC00ODEsNiArNTM1LDkgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWlu
Q29udGVudE9mZnNldChXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnRlbnRPZmYKIAogLSAodm9pZClz
Y3JvbGxWaWV3V2lsbEJlZ2luRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKIHsK
KyAgICBpZiAoIVtzZWxmIGhhc0NvbnRlbnRWaWV3XSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKHNjcm9sbFZpZXcucGFuR2VzdHVyZVJlY29nbml6ZXIuc3RhdGUgPT0gVUlHZXN0dXJlUmVj
b2duaXplclN0YXRlQmVnYW4pCiAgICAgICAgIFtfY29udGVudFZpZXcgd2lsbFN0YXJ0VXNlclRy
aWdnZXJlZFNjcm9sbF07CiAgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRab29tT3JTY3JvbGxd
OwpAQCAtNDg4LDYgKzU0NSw5IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFp
bkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2ZmCiAKIC0gKHZvaWQp
X2RpZEZpbmlzaFNjcm9sbGluZwogeworICAgIGlmICghW3NlbGYgaGFzQ29udGVudFZpZXddKQor
ICAgICAgICByZXR1cm47CisKICAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107
CiAgICAgW19jb250ZW50VmlldyBkaWRGaW5pc2hTY3JvbGxpbmddOwogfQpAQCAtNTM0LDExICs1
OTQsMTUgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNl
dChXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnRlbnRPZmYKICAgICAgICAgW19jb250ZW50VmlldyBz
ZXRNaW5pbXVtTGF5b3V0U2l6ZTpib3VuZHMuc2l6ZV07CiAgICAgW19zY3JvbGxWaWV3IHNldEZy
YW1lOmJvdW5kc107CiAgICAgW19jb250ZW50VmlldyBzZXRNaW5pbXVtU2l6ZTpib3VuZHMuc2l6
ZV07CisgICAgW19jdXN0b21SZXByZXNlbnRhdGlvblZpZXcgd2ViX3NldE1pbmltdW1TaXplOmJv
dW5kcy5zaXplXTsKICAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CiB9CiAK
IC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKIHsKKyAgICBpZiAoIVtzZWxmIGhh
c0NvbnRlbnRWaWV3XSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQ0dSZWN0IGZ1bGxWaWV3UmVj
dCA9IHNlbGYuYm91bmRzOwogICAgIENHUmVjdCB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5h
dGVzID0gW3NlbGYgY29udmVydFJlY3Q6ZnVsbFZpZXdSZWN0IHRvVmlldzpfY29udGVudFZpZXcu
Z2V0KCldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggNjg1MThhMy4uOWNkMWE4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aApAQCAtNDcsNiArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJv
eHk7CiB9CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKwogQGlu
dGVyZmFjZSBXS1dlYlZpZXcgKCkgV0tfV0VCX1ZJRVdfUFJPVE9DT0xTIHsKIAogQHBhY2thZ2UK
QEAgLTYyLDYgKzY2LDkgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogLSAoQk9PTClfc2Nyb2xsVG9S
ZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCBvcmlnaW46KFdlYkNvcmU6OkZsb2F0
UG9pbnQpb3JpZ2luIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERp
c3RhbmNlOwogLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJl
Y3Qgd2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gZml0RW50aXJlUmVjdDoo
Qk9PTClmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhp
bXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9h
dCltaW5pbXVtU2Nyb2xsRGlzdGFuY2U7CiAtICh2b2lkKV96b29tT3V0V2l0aE9yaWdpbjooV2Vi
Q29yZTo6RmxvYXRQb2ludClvcmlnaW47CisKKy0gKHZvaWQpX3NldFBhZ2VIYXNDdXN0b21SZXBy
ZXNlbnRhdGlvbjooQk9PTClwYWdlSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gbG9hZGVkTUlNRVR5
cGU6KGNvbnN0IFdURjo6U3RyaW5nJiltaW1lVHlwZTsKKy0gKHZvaWQpX2RpZEZpbmlzaExvYWRp
bmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KGNvbnN0
IFdURjo6U3RyaW5nJilzdWdnZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNlOihjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKWRhdGFSZWZlcmVuY2U7CiAjZW5kaWYKIEBlbmQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0N1c3RvbVJlcHJlc2VudGF0aW9uUmVn
aXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRh
dGlvblJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI5OGM3
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0
b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQ3VzdG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeV9oCisjZGVmaW5lIEN1c3RvbVJl
cHJlc2VudGF0aW9uUmVnaXN0cnlfaAorCisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8
b2JqYy9vYmpjLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK0Bwcm90b2Nv
bCBXS0N1c3RvbVJlcHJlc2VudGF0aW9uOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZVByb3h5OworCitjbGFzcyBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5IHsKK3B1
YmxpYzoKKyAgICBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5KFdlYlBhZ2VQcm94eSYpOwor
ICAgIH5DdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5KCk7CisKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHN1cHBvcnQgcmVnaXN0ZXJpbmcgYSBjdXN0b20gcmVwcmVzZW50YXRpb24gZm9yIGEg
c2NoZW1lIHRvby4KKyAgICB2b2lkIHJlZ2lzdGVyQ3VzdG9tUmVwcmVzZW50YXRpb25Gb3JNSU1F
VHlwZShDbGFzcyA8V0tDdXN0b21SZXByZXNlbnRhdGlvbj4sIFN0cmluZyBtaW1lVHlwZSk7Cisg
ICAgQ2xhc3MgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+IGN1c3RvbVJlcHJlc2VudGF0aW9uRm9y
TUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPFN0cmlu
ZywgQ2xhc3MgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+LCBDYXNlRm9sZGluZ0hhc2g+IG1fY3Vz
dG9tUmVwcmVzZW50YXRpb25Gb3JNSU1FVHlwZTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQ
YWdlUHJveHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBDdXN0b21S
ZXByZXNlbnRhdGlvblJlZ2lzdHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL0N1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmZTNiZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9DdXN0b21SZXByZXNlbnRhdGlvblJlZ2lz
dHJ5Lm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkuaCIKKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgor
I2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0N1
c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnk6OkN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnko
V2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCisgICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdl
UHJveHkpCit7Cit9CisKK0N1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnk6On5DdXN0b21SZXBy
ZXNlbnRhdGlvblJlZ2lzdHJ5KCkKK3sKK30KKwordm9pZCBDdXN0b21SZXByZXNlbnRhdGlvblJl
Z2lzdHJ5OjpyZWdpc3RlckN1c3RvbVJlcHJlc2VudGF0aW9uRm9yTUlNRVR5cGUoQ2xhc3MgPFdL
Q3VzdG9tUmVwcmVzZW50YXRpb24+IHJlcHJlc2VudGF0aW9uLCBTdHJpbmcgbWltZVR5cGUpCit7
CisgICAgaWYgKG1fY3VzdG9tUmVwcmVzZW50YXRpb25Gb3JNSU1FVHlwZS5jb250YWlucyhtaW1l
VHlwZSkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDYW5ub3QgcmVnaXN0ZXIgdHdvIGN1c3Rv
bSByZXByZXNlbnRhdGlvbnMgZm9yIHRoZSBzYW1lIE1JTUUgdHlwZS5cbiIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9jdXN0b21SZXByZXNlbnRhdGlvbkZvck1JTUVUeXBlLmFk
ZChtaW1lVHlwZSwgcmVwcmVzZW50YXRpb24pOworICAgIG1fd2ViUGFnZVByb3h5LmFkZE1JTUVU
eXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uKG1pbWVUeXBlKTsKK30KKworQ2xhc3MgPFdLQ3Vz
dG9tUmVwcmVzZW50YXRpb24+IEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnk6OmN1c3RvbVJl
cHJlc2VudGF0aW9uRm9yTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKQoreworICAgIGNvbnN0IGF1
dG8mIHJlcHJlc2VudGF0aW9uID0gbV9jdXN0b21SZXByZXNlbnRhdGlvbkZvck1JTUVUeXBlLmZp
bmQobWltZVR5cGUpOworCisgICAgaWYgKHJlcHJlc2VudGF0aW9uID09IG1fY3VzdG9tUmVwcmVz
ZW50YXRpb25Gb3JNSU1FVHlwZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJl
dHVybiByZXByZXNlbnRhdGlvbi0+dmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS0N1c3RvbVJlcHJlc2Vu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDdXN0b21SZXByZXNl
bnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1Y2FiOTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tDdXN0b21S
ZXByZXNlbnRhdGlvbi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdL
Q3VzdG9tUmVwcmVzZW50YXRpb25faAorI2RlZmluZSBXS0N1c3RvbVJlcHJlc2VudGF0aW9uX2gK
KworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPG9iamMvb2JqYy5oPgorI2ltcG9ydCA8
VUlLaXQvVUlTY3JvbGxWaWV3Lmg+CisKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBBUEkuCitA
cHJvdG9jb2wgV0tDdXN0b21SZXByZXNlbnRhdGlvbiA8TlNPYmplY3Q+CisKKy0gKHZvaWQpd2Vi
X3NldEN1c3RvbVJlcHJlc2VudGF0aW9uRGF0YTooTlNEYXRhICopZGF0YTsKKy0gKHZvaWQpd2Vi
X3NldE1pbmltdW1TaXplOihDR1NpemUpc2l6ZTsKKy0gKHZvaWQpd2ViX3NldFNjcm9sbFZpZXc6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXc7CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBXS0N1c3RvbVJl
cHJlc2VudGF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGI5
NGQ5MGEuLjE2OGNlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pID0gMDsKIAogI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKQEAgLTI1Niw2ICsyNTYsOSBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHZpcnR1YWwgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eUNsaWVudCYgZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpID0gMDsKICNlbmRp
ZgorCisgICAgLy8gQ3VzdG9tIHJlcHJlc2VudGF0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSA9IDA7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggYWU0NGJiNS4uNzM1YmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMxMSw2ICszMTEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IHVpbgogICAgICwgbV9zcGVsbERvY3VtZW50VGFnKDApCiAgICAgLCBtX2hhc1NwZWxsRG9jdW1l
bnRUYWcoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3Vu
dCgwKQorICAgICwgbV9tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbihmYWxzZSkKICAg
ICAsIG1fZGVsZWdhdGVzU2Nyb2xsaW5nKGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVIYXNIb3Jp
em9udGFsU2Nyb2xsYmFyKGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9s
bGJhcihmYWxzZSkKQEAgLTIyMzYsNyArMjIzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVh
ckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiwgdWlu
dDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VE
ZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwpAQCAtMjI1MCw3ICsy
MjUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSkgewogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ29tbWl0TG9hZCh0cmFuc2Fj
dGlvbik7Ci0gICAgICAgIG1fcGFnZUNsaWVudC5kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCk7
CisgICAgICAgIG1fcGFnZUNsaWVudC5kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKG1pbWVUeXBl
LCBmcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKTsKICAgICB9CiAKICNpZiBVU0UoQVBQS0lU
KQpAQCAtMjI2NSw2ICsyMjY2LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKICAgICBm
cmFtZS0+ZGlkQ29tbWl0TG9hZChtaW1lVHlwZSwgY2VydGlmaWNhdGVJbmZvKTsKIAorICAgIGlm
IChmcmFtZS0+aXNNYWluRnJhbWUoKSkgeworICAgICAgICBtX21haW5GcmFtZUhhc0N1c3RvbVJl
cHJlc2VudGF0aW9uID0gZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbjsKKworICAgICAgICBp
ZiAobV9tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgLy8g
QWx3YXlzIGFzc3VtZSB0aGF0IHRoZSBtYWluIGZyYW1lIGlzIHBpbm5lZCBoZXJlLCBzaW5jZSB0
aGUgY3VzdG9tIHJlcHJlc2VudGF0aW9uIHZpZXcgd2lsbCBoYW5kbGUKKyAgICAgICAgICAgIC8v
IGFueSB3aGVlbCBldmVudHMgYW5kIGRpc3BhdGNoIHRoZW0gdG8gdGhlIFdLVmlldyB3aGVuIG5l
Y2Vzc2FyeS4KKyAgICAgICAgICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlID0gdHJ1
ZTsKKyAgICAgICAgICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRUb1JpZ2h0U2lkZSA9IHRydWU7Cisg
ICAgICAgICAgICBtX21haW5GcmFtZUlzUGlubmVkVG9Ub3BTaWRlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRUb0JvdHRvbVNpZGUgPSB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIG1fcGFnZUNsaWVudC5kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKG1pbWVUeXBlLCBm
cmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKTsKKyAgICB9CisKICAgICAvLyBFdmVuIGlmIFdl
YlBhZ2UgaGFzIHRoZSBkZWZhdWx0IHBhZ2VTY2FsZUZhY3RvciAoYW5kIHRoZXJlZm9yZSBkb2Vz
bid0IHJlc2V0IGl0KSwKICAgICAvLyBXZWJQYWdlUHJveHkncyBjYWNoZSBvZiB0aGUgdmFsdWUg
Y2FuIGdldCBvdXQgb2Ygc3luYyAoZS5nLiBpbiB0aGUgY2FzZSB3aGVyZSBhCiAgICAgLy8gcGx1
Z2luIGlzIGhhbmRsaW5nIHBhZ2Ugc2NhbGluZyBpdHNlbGYpIHNvIHdlIHNob3VsZCByZXNldCBp
dCB0byB0aGUgZGVmYXVsdApAQCAtNDIzNyw2ICs0MjUyLDExIEBAIGJvb2wgV2ViUGFnZVByb3h5
Ojp3aWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9sbEV2ZW50cygpIGNvbnN0CiAgICAgcmV0dXJuICFt
X2NhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50czsKIH0KIAordm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
UmVmZXJlbmNlKQoreworICAgIG1fcGFnZUNsaWVudC5kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1
c3RvbVJlcHJlc2VudGF0aW9uKHN1Z2dlc3RlZEZpbGVuYW1lLCBkYXRhUmVmZXJlbmNlKTsKK30K
Kwogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRl
bUlEKQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3Zl
QmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1fcGFnZUlEKTsKQEAgLTQ1NDEsNCArNDU2MSw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUaHVtYm5haWxTY2FsZShkb3VibGUgc2NhbGUpCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUaHVtYm5haWxTY2FsZShzY2Fs
ZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBlV2l0aEN1
c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21SZXByZXNl
bnRhdGlvbihtaW1lVHlwZSksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZTYzMTdiMi4uMDQz
YTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDUxLDYg
KzQ1MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIGNvbnN0Owog
ICAgIGJvb2wgaXNQcm9jZXNzU3VwcHJlc3NpYmxlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGFkZE1J
TUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwor
CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7
CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgUGFz
c1JlZlB0cjxWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjaz4pOwogI2lmIFBMQVRGT1JNKElPUykKQEAg
LTk0Niw3ICs5NDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7
Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50MzJfdCBmcmFtZUxv
YWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1l
SGFzQ3VzdG9tUmVwcmVzZW50YXRpb24sIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lk
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVz
c2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAg
ICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYpOwpAQCAtMTE1NCw2ICsxMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5n
ZWQodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2lu
SGFzRm9jdXNBbmRXaW5kb3dIYXNGb2N1cyk7CiAgICAgdm9pZCBzZXRQbHVnaW5Db21wbGV4VGV4
dElucHV0U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIHVp
bnQ2NF90IGNvbXBsZXhUZXh0SW5wdXRTdGF0ZSk7CiAjZW5kaWYKQEAgLTEzOTIsNiArMTM5NSw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1NwZWxsRG9jdW1lbnRUYWc7CiAgICAgdW5zaWdu
ZWQgbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQ7CiAKKyAgICBib29sIG1f
bWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247CisKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgIFdlYkNvcmU6OkRyYWdTZXNzaW9uIG1fY3VycmVudERyYWdTZXNzaW9uOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCAxNDUyYjc1Li40ZGFiZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTEyMSw3ICsxMjEsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBT
dHJpbmcgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVu
Y29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAgICAgRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBTdHJpbmcgdXJsLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIg
dXNlckRhdGEpIFZhcmlhZGljCi0gICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCB1aW50MzJfdCBs
b2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKKyAg
ICBEaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tUmVwcmVzZW50YXRpb24sIHVp
bnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZv
LCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJp
YWRpYwogICAgIERpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OkluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCiAgICAgRGlkRmlu
aXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFk
aWMKQEAgLTEzNyw2ICsxMzcsOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAg
RnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQogCisg
ICAgIyBDdXN0b20gcmVwcmVzZW50YXRpb25zCisgICAgRGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21SZXByZXNlbnRhdGlvbihTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUsIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhKQorCiAgICAgIyBGb3JtcyBtZXNzYWdlcwogICAgIFdpbGxTdWJtaXRGb3Jt
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlh
ZGljCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAppbmRleCBkOWI0ZGQ0Li40MmMxNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0zMiw3ICszMiw4IEBACiAjaW1wb3J0
ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKLUBjbGFzcyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JK
Q19DTEFTUyBXS1dlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIApAQCAtNDIsNyAr
NDMsNyBAQCBjbGFzcyBQYWdlQ2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50CiAjZW5kaWYK
ICAgICB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGwoV0tDb250ZW50Vmll
dyAqKTsKKyAgICBleHBsaWNpdCBQYWdlQ2xpZW50SW1wbChXS0NvbnRlbnRWaWV3ICosIFdLV2Vi
VmlldyAqKTsKICAgICB2aXJ0dWFsIH5QYWdlQ2xpZW50SW1wbCgpOwogICAgIAogcHJpdmF0ZToK
QEAgLTYzLDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmVyZW5jZXNE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViRnJhbWVQcm94eSYs
IFdlYlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMo
Ym9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVy
dGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKQEAgLTEy
OSw3ICsxMzAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNj
cmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGZpbmFsRnJhbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlk
ZTsKKwogICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7CisgICAgV0tXZWJWaWV3ICpt
X3dlYlZpZXc7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDY2NTM1NjYuLjQ1
YzVlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQpAQCAtNDEsNiArNDEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNj
cmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAorI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKKwogQGludGVyZmFjZSBVSVZpZXcgKElQSSkKIC0gKFVJU2Nyb2xs
VmlldyAqKV9zY3JvbGxlcjsKIEBlbmQKQEAgLTQ5LDggKzUxLDkgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYWdlQ2xpZW50SW1wbDo6UGFnZUNs
aWVudEltcGwoV0tDb250ZW50VmlldyAqdmlldykKLSAgICA6IG1fY29udGVudFZpZXcodmlldykK
K1BhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXS0NvbnRlbnRWaWV3ICpjb250ZW50Vmll
dywgV0tXZWJWaWV3ICp3ZWJWaWV3KQorICAgIDogbV9jb250ZW50Vmlldyhjb250ZW50VmlldykK
KyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQogewogfQogCkBAIC0xNDYsOCArMTQ5LDkgQEAgYm9v
bCBQYWdlQ2xpZW50SW1wbDo6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJGcmFtZVByb3h5JgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCB1
c2VDdXN0b21SZXByZXNlbnRhdGlvbikKIHsKKyAgICBbbV93ZWJWaWV3IF9zZXRQYWdlSGFzQ3Vz
dG9tUmVwcmVzZW50YXRpb246dXNlQ3VzdG9tUmVwcmVzZW50YXRpb24gbG9hZGVkTUlNRVR5cGU6
bWltZVR5cGVdOwogICAgIFttX2NvbnRlbnRWaWV3IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1l
XTsKIH0KIApAQCAtNDAyLDYgKzQwNiwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4
aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikKIAogI2VuZGlmIC8v
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNo
TG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit7Cisg
ICAgW21fd2ViVmlldyBfZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNlOmRh
dGFSZWZlcmVuY2VdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5tbQppbmRleCAwZWM4NWM5Li5kNWU5ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC03Niw3ICs3Niw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKICAgICBJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgX3BhZ2VDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmKTsKKyAgICBfcGFnZUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwogCiAg
ICAgX3BhZ2UgPSBjb250ZXh0LmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBzdGQ6Om1vdmUo
d2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICBfcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjY2YTVjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJXS0N1c3RvbVJlcHJlc2VudGF0aW9u
LmgiCisjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KKworQGludGVyZmFjZSBXS1BERlZpZXcgOiBV
SVZpZXcgPFdLQ3VzdG9tUmVwcmVzZW50YXRpb24+CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI3MDFiNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC0wLDAgKzEsMTI0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1BERlZpZXcu
aCIKKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8Q29yZVBERi9VSVBERkRvY3VtZW50
Lmg+CisjaW1wb3J0IDxDb3JlUERGL1VJUERGUGFnZVZpZXcuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworY29uc3QgQ0dGbG9hdCBwZGZQYWdl
TWFyZ2luID0gODsKK2NvbnN0IENHRmxvYXQgcGRmTWluaW11bVpvb21TY2FsZSA9IDE7Citjb25z
dCBDR0Zsb2F0IHBkZk1heGltdW1ab29tU2NhbGUgPSA1OworCitAaW50ZXJmYWNlIFdLUERGVmll
dyAoKSB7CisgICAgUmV0YWluUHRyPFVJUERGRG9jdW1lbnQ+IF9wZGZEb2N1bWVudDsKKyAgICBW
ZWN0b3I8VUlQREZQYWdlVmlldyo+IF9wYWdlVmlld3M7CisgICAgQ0dTaXplIF9taW5pbXVtU2l6
ZTsKKyAgICBVSVNjcm9sbFZpZXcgKl9zY3JvbGxWaWV3OworfQorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV0tQREZWaWV3CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3Qp
ZnJhbWUKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpbVUlD
b2xvciBncmF5Q29sb3JdXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXdlYl9z
ZXRDdXN0b21SZXByZXNlbnRhdGlvbkRhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBmb3IgKGF1
dG8mIHBhZ2VWaWV3IDogX3BhZ2VWaWV3cykKKyAgICAgICAgW3BhZ2VWaWV3IHJlbW92ZUZyb21T
dXBlcnZpZXddOworCisgICAgX3BhZ2VWaWV3cy5jbGVhcigpOworCisgICAgUmV0YWluUHRyPENH
RGF0YVByb3ZpZGVyPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRl
V2l0aENGRGF0YSgoQ0ZEYXRhUmVmKWRhdGEpKTsKKyAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVu
dFJlZj4gY2dQREZEb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92
aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKKyAgICBfcGRmRG9jdW1lbnQgPSBhZG9wdE5TKFtb
VUlQREZEb2N1bWVudCBhbGxvY10gaW5pdFdpdGhDR1BERkRvY3VtZW50OmNnUERGRG9jdW1lbnQu
Z2V0KCldKTsKKworICAgIGZvciAoTlNVSW50ZWdlciBwYWdlID0gMDsgcGFnZSA8IFtfcGRmRG9j
dW1lbnQgbnVtYmVyT2ZQYWdlc107ICsrcGFnZSkgeworICAgICAgICBVSVBERlBhZ2UgKnBkZlBh
Z2UgPSBbX3BkZkRvY3VtZW50IHBhZ2VBdEluZGV4OnBhZ2VdOworCisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHZpZXdzIGluc3RlYWQgb2YgZGVwZW5kaW5n
IG9uIHRpbGluZy4KKyAgICAgICAgUmV0YWluUHRyPFVJUERGUGFnZVZpZXc+IHBhZ2VWaWV3ID0g
YWRvcHROUyhbW1VJUERGUGFnZVZpZXcgYWxsb2NdIGluaXRXaXRoUGFnZTpwZGZQYWdlIHRpbGVk
Q29udGVudDpZRVNdKTsKKyAgICAgICAgW3NlbGYgYWRkU3VidmlldzpwYWdlVmlldy5nZXQoKV07
CisgICAgICAgIF9wYWdlVmlld3MuYXBwZW5kKHBhZ2VWaWV3LmdldCgpKTsKKworICAgICAgICBb
W3BhZ2VWaWV3IGNvbnRlbnRMYXllcl0gc2V0Q29udGVudHNTY2FsZTpzZWxmLndpbmRvdy5zY3Jl
ZW4uc2NhbGVdOworICAgIH0KKworICAgIFtzZWxmIGxheW91dFZpZXdzXTsKK30KKworLSAodm9p
ZCl3ZWJfc2V0TWluaW11bVNpemU6KENHU2l6ZSlzaXplCit7CisgICAgX21pbmltdW1TaXplID0g
c2l6ZTsKKworICAgIFtzZWxmIGxheW91dFZpZXdzXTsKK30KKworLSAodm9pZCl3ZWJfc2V0U2Ny
b2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldworeworICAgIF9zY3JvbGxWaWV3ID0g
c2Nyb2xsVmlldzsKK30KKworLSAodm9pZClsYXlvdXRWaWV3cworeworICAgIENHUmVjdCBwYWdl
RnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIF9taW5pbXVtU2l6ZS53aWR0aCwgX21pbmltdW1TaXpl
LmhlaWdodCk7CisKKyAgICBmb3IgKGF1dG8mIHBhZ2VWaWV3IDogX3BhZ2VWaWV3cykgeworICAg
ICAgICBDR1NpemUgcGFnZVNpemUgPSBbcGFnZVZpZXcucGFnZSBzaXplXTsKKworICAgICAgICBw
YWdlRnJhbWUuc2l6ZS5oZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQgLyBwYWdlU2l6ZS53aWR0aCAq
IHBhZ2VGcmFtZS5zaXplLndpZHRoOworCisgICAgICAgIENHUmVjdCBwYWdlRnJhbWVXaXRoTWFy
Z2luQXBwbGllZCA9IENHUmVjdEluc2V0KHBhZ2VGcmFtZSwgcGRmUGFnZU1hcmdpbiwgcGRmUGFn
ZU1hcmdpbik7CisgICAgICAgIFtwYWdlVmlldyBzZXRGcmFtZTpwYWdlRnJhbWVXaXRoTWFyZ2lu
QXBwbGllZF07CisKKyAgICAgICAgcGFnZUZyYW1lLm9yaWdpbi55ICs9IHBhZ2VGcmFtZS5zaXpl
LmhlaWdodCAtIHBkZlBhZ2VNYXJnaW47CisgICAgfQorCisgICAgQ0dSZWN0IG5ld0ZyYW1lID0g
W3NlbGYgZnJhbWVdOworICAgIG5ld0ZyYW1lLnNpemUud2lkdGggPSBfbWluaW11bVNpemUud2lk
dGg7CisgICAgbmV3RnJhbWUuc2l6ZS5oZWlnaHQgPSBzdGQ6Om1heChwYWdlRnJhbWUub3JpZ2lu
LnkgKyBwZGZQYWdlTWFyZ2luLCBfbWluaW11bVNpemUuaGVpZ2h0KTsKKyAgICBbc2VsZiBzZXRG
cmFtZTpuZXdGcmFtZV07CisKKyAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudFNpemU6bmV3RnJh
bWUuc2l6ZV07CisgICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6cGRmTWluaW11
bVpvb21TY2FsZV07CisgICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6cGRmTWF4
aW11bVpvb21TY2FsZV07Cit9CisKK0BlbmQKKworI2VuZGlmIC8qIFBMQVRGT1JNKElPUykgKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCA3
MjFhZjU2Li5iN2E2MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5oCkBAIC03OSw3ICs3OSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlbGF1bmNoUHJvY2VzcygpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXJlbmNlc0RpZENo
YW5nZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBT
dHJpbmcmIG9sZFRvb2xUaXAsIGNvbnN0IFN0cmluZyYgbmV3VG9vbFRpcCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBi
b29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpW
aWV3cG9ydEF0dHJpYnV0ZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCmluZGV4IDM4NzliZTYuLjkzMmFiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtMjg1LDcgKzI4NSwxMSBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmIG9sZFRv
b2xUaXAsIGNvbnN0IFN0cmluZyYgbmV3VAogICAgIFttX3drVmlldyBfdG9vbFRpcENoYW5nZWRG
cm9tOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcob2xkVG9vbFRpcCkgdG86bnNTdHJpbmdGcm9t
V2ViQ29yZVN0cmluZyhuZXdUb29sVGlwKV07CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZENvbW1pdExvYWRGb3JNYWluRnJhbWUoKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0
TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbVJl
cHJlc2VudGF0aW9uKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hMb2Fk
aW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDY3MzE3YTcuLjVkZTg5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5OCw2ICs0OTgsNyBAQAogCQkyRDZCMzcxQzE4
QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIFdL
VGh1bWJuYWlsVmlldy5tbSAqLzsgfTsKIAkJMkQ2Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8qIFZp
ZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAq
LzsgfTsKIAkJMkQ2Q0QxMUExODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2Q0QxMTgx
ODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovOyB9OworCQkyRDdBQUZE
MzE4Qzg2NDA2MDBBN0FDRDQgLyogV0tDdXN0b21SZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3QUFGRDIxOEM4NjQwNjAwQTdB
Q0Q0IC8qIFdLQ3VzdG9tUmVwcmVzZW50YXRpb24uaCAqLzsgfTsKIAkJMkQ4MTlCOUUxODYyN0VF
OTAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4MTlCOTkxODYyNzVCMzAwMUYw
M0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwICovOyB9OwogCQkyRDgxOUJB
MTE4NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDgxOUI5RjE4NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTJEODE5QkEyMTg2MjgwMEUwMDFGMDNEMSAv
KiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODE5QkEwMTg2MjgwMEUwMDFGMDNEMSAv
KiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTUxMCw2
ICs1MTEsOCBAQAogCQkyREEwNDlCNDE4MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REEwNDlCMjE4MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggKi87IH07
CiAJCTJEQTA0OUI3MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMDQ5QjUx
ODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgKi87IH07CiAJCTJE
QTA0OUI4MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTA0OUI2MTgwQ0NEMEEw
MEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuaCAqLzsgfTsKKwkJMkRBMUU0RkUxOEMw
MkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRBMUU0RkMxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5o
ICovOyB9OworCQkyREExRTRGRjE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMUU0RkQxOEMwMkI2
QTAwREJDOTI5IC8qIFdLUERGVmlldy5tbSAqLzsgfTsKIAkJMkRBOTQ0OTUxODg0RTNCNTAwRUQ4
NkRCIC8qIFdLVmlld0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEQTk0NDg2MTg4NEUzQjUwMEVEODZEQiAvKiBXS1ZpZXdJT1MubW0gKi87IH07
CiAJCTJEQTk0NDlFMTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50SU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
OTcxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnRJT1MubW0gKi87IH07
CiAJCTJEQTk0NDlGMTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0OTgx
ODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0gKi87IH07CkBAIC01
MjksNiArNTMyLDggQEAKIAkJMkRBQ0U2NEUxOEFEQkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWls
Vmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwu
aCAqLzsgfTsKIAkJMkRBRjA2RDYxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLmggKi87IH07CiAJCTJEQUYwNkQ3MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIubW0gKi87IH07CisJCTJEQzZEOUMzMThDNDRBNjEwMDQzQkFENCAvKiBDdXN0b21S
ZXByZXNlbnRhdGlvblJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREM2RDlDMTE4QzQ0QTYxMDA0M0JBRDQgLyogQ3VzdG9tUmVwcmVzZW50
YXRpb25SZWdpc3RyeS5oICovOyB9OworCQkyREM2RDlDNDE4QzQ0QTYxMDA0M0JBRDQgLyogQ3Vz
dG9tUmVwcmVzZW50YXRpb25SZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzZEOUMyMThDNDRBNjEwMDQzQkFENCAvKiBDdXN0b21SZXBy
ZXNlbnRhdGlvblJlZ2lzdHJ5Lm1tICovOyB9OwogCQkyRERFMEFGQTE4Mjk4Q0M5MDBGOTdFQUEg
LyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMEFGODE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi87IH07CiAJCTJEREUwQUZCMTgyOThDQzkw
MEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMEFGOTE4Mjk4Q0M5MDBGOTdF
QUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovOyB9OwogCQkyREU2OTQz
RDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0yMjU1LDYgKzIyNjAsNyBAQAogCQkyRDZD
RDExODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWV3U25hcHNob3RTdG9yZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3MEFCMTMxOEExRDUxQTAwMDI2RDZFIC8qIEluZm8t
aU9TLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSAiSW5mby1pT1MucGxpc3QiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDcwQUIxNDE4QTFENTdDMDAwMjZENkUgLyogSW5mby1pT1MucGxp
c3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnBsaXN0LnhtbDsgcGF0aCA9ICJJbmZvLWlPUy5wbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTJEN0FBRkQyMThDODY0MDYwMEE3QUNENCAvKiBXS0N1c3RvbVJlcHJlc2VudGF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ3VzdG9tUmVwcmVzZW50
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4MTlCOTkxODYyNzVCMzAw
MUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODE5QjlBMTg2Mjc1QjMwMDFGMDNEMSAv
KiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkQ4MTlCOUIxODYyNzVCMzAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIyNzAsNiArMjI3Niw4IEBACiAJCTJEQTA0OUIyMTgwQ0NDRDMwMEFBRkE5RSAv
KiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEQTA0OUI1MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllckNBUmVtb3Rl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBMDQ5QjYxODBDQ0QwQTAwQUFG
QTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0xheWVyQ0FSZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkRBMUU0RkMxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1BERlZpZXcuaDsgcGF0aCA9IGlvcy9XS1BERlZpZXcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRBMUU0RkQxOEMwMkI2QTAwREJDOTI5
IC8qIFdLUERGVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdLUERGVmlldy5tbTsgcGF0aCA9IGlvcy9XS1BERlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEQTk0NDg2MTg4NEUzQjUwMEVEODZEQiAvKiBXS1ZpZXdJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1ZpZXdJT1MubW07IHBhdGgg
PSBpb3MvV0tWaWV3SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ5
NzE4ODRFNEYwMDBFRDg2REIgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5hdGl2ZVdlYktleWJvYXJkRXZlbnRJ
T1MubW07IHBhdGggPSBpb3MvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0OTgxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdl
YlRvdWNoRXZlbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tOyBwYXRoID0gaW9zL05hdGl2ZVdlYlRvdWNoRXZl
bnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjkwLDEwICsyMjk4LDEy
IEBACiAJCTJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaDsgcGF0aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQUYwNkQ1MThCRDFBNDcwMDgxQ0VC
MSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbTsgcGF0
aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQzZEOUMxMThDNDRB
NjEwMDQzQkFENCAvKiBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1
c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVy
dHlBcHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0
aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBwYXRo
ID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU2OTQzQzE4QkQyQTY4MDA1
QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEyMDA5
Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRoID0g
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlv
bkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3Rp
ZmljYXRpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE0NCw2
ICs0MTU0LDkgQEAKIAkJMUFCQzNERjIxODk5RTQxNTAwNEYwNjI2IC8qIENvY29hICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRDdBQUZEMjE4Qzg2NDA2
MDBBN0FDRDQgLyogV0tDdXN0b21SZXByZXNlbnRhdGlvbi5oICovLAorCQkJCTJEQzZEOUMxMThD
NDRBNjEwMDQzQkFENCAvKiBDdXN0b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5LmggKi8sCisJCQkJ
MkRDNkQ5QzIxOEM0NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnku
bW0gKi8sCiAJCQkJMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRp
b24uaCAqLywKIAkJCQkxQTQyMkY4RDE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5o
ICovLAogCQkJCTFBNDIyRjhDMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50Lm1tICov
LApAQCAtNDM0NSw2ICs0MzU4LDggQEAKIAkJCQkwRkNCNEUzNzE4QkJFMDQ0MDAwRkNGQzkgLyog
UGFnZUNsaWVudEltcGxJT1MubW0gKi8sCiAJCQkJMEYwQzM2NTcxOEMwNTFCQTAwRjYwN0Q3IC8q
IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gKi8sCiAJCQkJMEYwQzM2NUIxOEMwNUNBMTAwRjYw
N0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gKi8sCisJCQkJMkRB
MUU0RkMxOEMwMkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oICovLAorCQkJCTJEQTFFNEZEMThD
MDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcubW0gKi8sCiAJCQkJMkRBOTQ0QTkxODg0RTlCQTAw
RUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tICovLAogCQkJCTJERjk1OTM0MThBNDI0MTIwMDk3
ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi8sCiAJCQkJMkRBRjA2RDQxOEJE
MUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLywKQEAgLTY1
NTMsNiArNjU2OCw3IEBACiAJCQkJQkM0QkVFQUIxMjBBMEE1RjAwRkJBMEM3IC8qIEluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc4RTFBNEUxODIwOEQ3MDAw
MzEwMDdBIC8qIFdLTlNVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUIwRUI4MThBNDI0Q0Qw
MDM4NDgxQSAvKiBXS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyRDdBQUZEMzE4Qzg2NDA2MDBBN0FDRDQgLyogV0tDdXN0b21SZXByZXNlbnRhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyOTM1RTQxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVk
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFNTNF
MzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE0RTEwQTEyMEI5MDVFMDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NzU5LDYgKzY3NzUsNyBAQAog
CQkJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM0QTYyOTAxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTU0MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZp
ZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQzZEOUMzMThDNDRBNjEwMDQzQkFENCAvKiBDdXN0
b21SZXByZXNlbnRhdGlvblJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREU2OTQzRTE4
QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVj
dGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRkVDMUQxNjI3QjQ1NzAwNzAwRjZE
IC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02ODA3LDYgKzY4
MjQsNyBAQAogCQkJCUJDMDMyRDdCMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJEcmFnQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwRUY5RjEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENv
bW1hbmRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNjREMzYxODk3ODFDNDAwNEIyRkVC
IC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRBMUU0RkUxOEMwMkI2
QTAwREJDOTI5IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEN0QxMEY0
Mzc4RDAwNThDMTVBIC8qIFdlYkVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1
OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODQwNTUzMThCODZFRDYwMDIyQzM4QiAvKiBWaWV3
VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5NzEsNiArNzk4
OSw3IEBACiAJCQkJMzdEMEI1QzgxODQ1MjMyNzAwRjZDRTdEIC8qIFdLRXJyb3JSZWNvdmVyeUF0
dGVtcHRpbmcubSBpbiBTb3VyY2VzICovLAogCQkJCUNENUM2NkEwMTM0QjlEMzgwMDRGRTJBOCAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTc1NTQyMkNCMTgwNjUwMDIwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkyREExRTRGRjE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBOEM2QTgxMUUzQkE1RjAwODEyRkI3IC8qIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU2
NzE4QkJFM0Q5MDAwRkNGQzkgLyogV0tQcmludGluZ1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQUFCMDM3QzE4NUY5OUQ4MDBFREY1MDEgLyogQVBJRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTgwMzIsNiArODA1MSw3IEBACiAJCQkJNTFDQkJBMEYxNjUyMTlCNjAwNUJFOEZEIC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODI5
REE1MTYzN0M3MEMwMDA5NTNENiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxMkMwNjkwMTYzOTBFNjkwMEFCQjkxMSAvKiBOZXR3b3JrUmVz
b3VyY2VMb2FkU2NoZWR1bGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkRDNkQ5QzQxOEM0
NEE2MTAwNDNCQUQ0IC8qIEN1c3RvbVJlcHJlc2VudGF0aW9uUmVnaXN0cnkubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRy
eVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNTUxNDg5OTgyRTAwODEwRDcxIC8q
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMx
MzEyNjFFMTQ4RkY4MkMwMEJBMkEzOSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCmluZGV4IGMxZTM3ZDcuLmRiMGNhYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCkBAIC0x
MDIsNiArMTAyLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgcmV0dXJuIFt3cmFw
cGVyKCpBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUoX2ZyYW1lLT5mcmFtZUlEKCkpLmxlYWtSZWYo
KSkgYXV0b3JlbGVhc2VdOwogfQogCistIChCT09MKV9oYXNDdXN0b21SZXByZXNlbnRhdGlvbgor
eworICAgIGlmICghX2ZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2Vu
dGF0aW9uKCk7Cit9CisKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRh
dGlvbgogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaAppbmRleCAxMGIw
OWYwLi42NzkwZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaApAQCAtMzUsNiArMzUsOCBAQAogCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciAqX2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlcjsKIAorQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIF9oYXNDdXN0b21SZXByZXNlbnRhdGlvbjsKKwogQGVuZAog
CiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggZWNjNzcxZS4uNjgwN2FiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50KCkKICAgICA6IG1fZnJhbWUoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNlVG9Q
bHVnaW5WaWV3KGZhbHNlKQogICAgICwgbV9kaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uQWxyZWFk
eShmYWxzZSkKKyAgICAsIG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbihmYWxzZSkKICAg
ICAsIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZShmYWxzZSkKIHsKIH0KQEAgLTEwOSw2ICsxMTAs
MTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQog
ICAgIG1fZnJhbWUtPmRlcmVmKCk7CiB9CiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhh
c0hUTUxWaWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZnJhbWVIYXNDdXN0b21SZXByZXNl
bnRhdGlvbjsKK30KKwogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6aGFzV2ViVmlldygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKTsKQEAgLTQ0NSw4ICs0NTEsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogCiAgICAg
Ly8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRv
Y3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1p
bWVUeXBlKCksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpLCBDZXJ0
aWZpY2F0ZUluZm8oZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKSksIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwotCisgICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJh
bWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVz
cG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24sIG1fZnJh
bWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpLCBDZXJ0aWZpY2F0ZUluZm8oZG9j
dW1lbnRMb2FkZXIucmVzcG9uc2UoKSksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVy
KHVzZXJEYXRhLmdldCgpKSkpOwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7
CiB9CiAKQEAgLTg1Miw2ICs4NTcsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCiB7CisgICAgLy8gSWYgd2UncmUgbG9hZGluZyBhIGN1c3RvbSByZXByZXNl
bnRhdGlvbiwgd2UgZG9uJ3Qgd2FudCB0byBoYW5kIG9mZiB0aGUgZGF0YSB0byBXZWJDb3JlLgor
ICAgIGlmIChtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24pCisgICAgICAgIHJldHVybjsK
KwogICAgIGlmICghbV9wbHVnaW5WaWV3KQogICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0
YSwgbGVuZ3RoKTsKIApAQCAtODc4LDIyICs4ODcsMzMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBk
YXQKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKCFtX3BsdWdpblZpZXcpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIElmIHdlIGp1c3QgcmVjZWl2ZWQgYW4gZW1wdHkgcmVzcG9uc2Ugd2l0aG91
dCBhbnkgZGF0YSwgd2Ugd29uJ3QgaGF2ZSBzZW50IGEgcmVzcG9uc2UgdG8gdGhlIHBsdWctaW4g
dmlldy4KLSAgICAvLyBNYWtlIHN1cmUgdG8gZG8gdGhpcyBiZWZvcmUgY2FsbGluZyBtYW51YWxM
b2FkRGlkRmluaXNoTG9hZGluZy4KLSAgICBpZiAoIW1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5W
aWV3KSB7Ci0gICAgICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25z
ZShsb2FkZXItPnJlc3BvbnNlKCkpOworICAgIGlmICghbV9wbHVnaW5WaWV3KSB7CisgICAgICAg
IGlmIChtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgICAgICAgICBpZiAoIXdlYlBhZ2Up
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCB0
aGUgYWJvdmUgY2FsbCBudWxsaW5nIG91dCB0aGUgcGx1Zy1pbiAoYnkgdHJ5aW5nIHRvIGNhbmNl
bCB0aGUgbG9hZCBmb3IgZXhhbXBsZSkuCi0gICAgICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogMCks
IG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAg
ICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9h
ZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2Vz
dGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOworICAgICAgICB9CiAgICAgfQogCi0gICAg
bV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkRmluaXNoTG9hZGluZygpOwotICAgIG1fcGx1Z2lu
VmlldyA9IDA7Ci0gICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcgPSBmYWxzZTsKKyAg
ICBpZiAobV9wbHVnaW5WaWV3KSB7CisgICAgICAgIC8vIElmIHdlIGp1c3QgcmVjZWl2ZWQgYW4g
ZW1wdHkgcmVzcG9uc2Ugd2l0aG91dCBhbnkgZGF0YSwgd2Ugd29uJ3QgaGF2ZSBzZW50IGEgcmVz
cG9uc2UgdG8gdGhlIHBsdWctaW4gdmlldy4KKyAgICAgICAgLy8gTWFrZSBzdXJlIHRvIGRvIHRo
aXMgYmVmb3JlIGNhbGxpbmcgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcuCisgICAgICAgIGlm
ICghbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXcpIHsKKyAgICAgICAgICAgIG1fcGx1Z2lu
Vmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPnJlc3BvbnNlKCkpOwor
CisgICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgdGhlIGFib3ZlIGNhbGwgbnVsbGluZyBv
dXQgdGhlIHBsdWctaW4gKGJ5IHRyeWluZyB0byBjYW5jZWwgdGhlIGxvYWQgZm9yIGV4YW1wbGUp
LgorICAgICAgICAgICAgaWYgKCFtX3BsdWdpblZpZXcpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkRmluaXNo
TG9hZGluZygpOworICAgICAgICBtX3BsdWdpblZpZXcgPSAwOworICAgICAgICBtX2hhc1NlbnRS
ZXNwb25zZVRvUGx1Z2luVmlldyA9IGZhbHNlOworICAgIH0KIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCkBAIC0xMTY2LDYgKzExODYsMTIgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUo
Q2FjaGVkRnJhbWUqKQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKQogeworICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgYm9vbCBpc01haW5GcmFtZSA9IHdlYlBhZ2Ut
Pm1haW5XZWJGcmFtZSgpID09IG1fZnJhbWU7CisKKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZSgpOworICAgIG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiA9IGlz
TWFpbkZyYW1lICYmIHdlYlBhZ2UtPnNob3VsZFVzZUN1c3RvbVJlcHJlc2VudGF0aW9uRm9yUmVz
cG9uc2UocmVzcG9uc2UpOworICAgIG1fZnJhbWVDYW1lRnJvbVBhZ2VDYWNoZSA9IHRydWU7CiB9
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5l
d1BhZ2UoKQpAQCAtMTE4NSw2ICsxMjExLDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgICAgIGZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+Zml4ZWRWaXNpYmxlQ29u
dGVudFJlY3QoKTsKICNlbmRpZgogCisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVz
cG9uc2UoKTsKKyAgICBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gPSBpc01haW5GcmFt
ZSAmJiB3ZWJQYWdlLT5zaG91bGRVc2VDdXN0b21SZXByZXNlbnRhdGlvbkZvclJlc3BvbnNlKHJl
c3BvbnNlKTsKICAgICBtX2ZyYW1lQ2FtZUZyb21QYWdlQ2FjaGUgPSBmYWxzZTsKIAogICAgIFNj
cm9sbGJhck1vZGUgZGVmYXVsdFNjcm9sbGJhck1vZGUgPSBzaG91bGRIaWRlU2Nyb2xsYmFycyA/
IFNjcm9sbGJhckFsd2F5c09mZiA6IFNjcm9sbGJhckF1dG87CkBAIC0xMjQ0LDYgKzEyNzIsMTMg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChi
b29sIHZhbHVlKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RnJh
bWVEaWRCZWNvbWVGcmFtZVNldChtX2ZyYW1lLT5mcmFtZUlEKCksIHZhbHVlKSk7CiB9CiAKK2Jv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSgpIGNvbnN0Cit7CisgICAgLy8g
V2UgY2Fubm90IGNhY2hlIGZyYW1lcyB0aGF0IGhhdmUgY3VzdG9tIHJlcHJlc2VudGF0aW9ucyBi
ZWNhdXNlIHRoZXkgYXJlCisgICAgLy8gcmVuZGVyZWQgaW4gdGhlIFVJUHJvY2Vzcy4KKyAgICBy
ZXR1cm4gIW1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbjsKK30KKwogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50
TG9hZGVyICpkb2N1bWVudExvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBtX2ZyYW1lLT5jb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoZG9jdW1lbnRMb2FkZXIsIHJlcXVlc3QsIHJlc3Bv
bnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiYTFlNDk2Li43OTJjYzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC00MSwxMCArNDEsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0V2ViRnJhbWUoV2ViRnJhbWUqIHdlYkZyYW1lKSB7IG1fZnJhbWUg
PSB3ZWJGcmFtZTsgfQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWU7IH0KIAorICAgIGJvb2wgZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbjsgfQorCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJy
aWRlOwpAQCAtMTc1LDkgKzE3Nyw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9v
bCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgCisKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50
IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7CiAgICAgCkBAIC0yMzIsNiArMjM0LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8UGx1Z2luVmlldz4gbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9oYXNT
ZW50UmVzcG9uc2VUb1BsdWdpblZpZXc7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlUGFnZVRyYW5z
aXRpb25BbHJlYWR5OworICAgIGJvb2wgbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uOwog
ICAgIGJvb2wgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQzY2Y1ODIuLjU1ODQ1MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTMwNzUsNiArMzA3NSwyMiBAQCB2b2lkIFdlYlBhZ2U6OmNsZWFyU2VsZWN0aW9uKCkKIH0KICNl
bmRpZgogCitib29sIFdlYlBhZ2U6Om1haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKK3sKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCkpIHsKKyAgICAgICAg
V2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxv
YWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpOworICAgICAgICBBU1NFUlQod2Vi
RnJhbWVMb2FkZXJDbGllbnQpOworICAgICAgICByZXR1cm4gd2ViRnJhbWVMb2FkZXJDbGllbnQt
PmZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YWRkTUlNRVR5cGVXaXRoQ3VzdG9tUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBtX21pbWVUeXBlc1dpdGhDdXN0b21S
ZXByZXNlbnRhdGlvbnMuYWRkKG1pbWVUeXBlKTsKK30KKwogdm9pZCBXZWJQYWdlOjp1cGRhdGVN
YWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpOwpAQCAtMzgxNyw2ICszODMzLDE1IEBAIGJvb2wgV2ViUGFnZTo6Y2Fu
UGx1Z2luSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAj
ZW5kaWYKIH0KIAorYm9vbCBXZWJQYWdlOjpzaG91bGRVc2VDdXN0b21SZXByZXNlbnRhdGlvbkZv
clJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmICgh
bV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zLmNvbnRhaW5zKHJlc3BvbnNlLm1p
bWVUeXBlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJZiBhIHBsdWctaW4g
ZXhpc3RzIHRoYXQgY2xhaW1zIHRvIHN1cHBvcnQgdGhpcyByZXNwb25zZSwgaXQgc2hvdWxkIHRh
a2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBjdXN0b20gcmVwcmVzZW50YXRpb24uCisgICAgcmV0dXJu
ICFjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKICNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgRnJhbWUqIHRhcmdldEZyYW1lRm9yRWRpdGluZyhXZWJQYWdlKiBwYWdlKQog
ewpAQCAtMzk2Miw2ICszOTg3LDkgQEAgYm9vbCBXZWJQYWdlOjpjYW5TaG93TUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3QKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6Y2Fu
U2hvd01JTUVUeXBlKE1JTUVUeXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAo
bV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zLmNvbnRhaW5zKE1JTUVUeXBlKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBjb25zdCBQbHVnaW5EYXRhJiBwbHVnaW5EYXRh
ID0gbV9wYWdlLT5wbHVnaW5EYXRhKCk7CiAgICAgaWYgKHBsdWdpbkRhdGEuc3VwcG9ydHNNaW1l
VHlwZShNSU1FVHlwZSwgUGx1Z2luRGF0YTo6QWxsUGx1Z2lucykgJiYgY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkubG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5hbGxvd1BsdWdpbnMoTm90QWJvdXRU
b0luc3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlMWU3MDczLi41MzVlOWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTYyNSw2
ICs2MjUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNl
dFBpbm5pbmcoKTsKIAorICAgIGJvb2wgbWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24o
KSBjb25zdDsKKyAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOworCiAgICAgdm9pZCBtYWluRnJhbWVEaWRMYXlvdXQoKTsK
IAogICAgIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7IH0KQEAgLTY3OSw2ICs2ODIsNyBA
QCBwdWJsaWM6CiAgICAgdWludDY0X3QgbmF0aXZlV2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV9u
YXRpdmVXaW5kb3dIYW5kbGU7IH0KICNlbmRpZgogCisgICAgYm9vbCBzaG91bGRVc2VDdXN0b21S
ZXByZXNlbnRhdGlvbkZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKTsKIAogICAgIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5p
dGlhbGl6YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbkVuYWJsZWQ7IH0KQEAgLTExMDcsNiArMTExMSw3IEBAIHByaXZhdGU6CiAK
ICAgICBXZWJJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogCisgICAgSGFzaFNl
dDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50
YXRpb25zOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogCiAgICAgSGFz
aFNldDx1bnNpZ25lZD4gbV9hY3RpdmVSZW5kZXJpbmdTdXBwcmVzc2lvblRva2VuczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggMjY4ZTJjZC4uNmI1ZTE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE4Myw2ICsxODMsOCBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZWxlY3RGaW5kTWF0
Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBIaWRlRmluZFVJKCkKICAgICBDb3VudFN0cmlu
Z01hdGNoZXMoU3RyaW5nIHN0cmluZywgdWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1h
eE1hdGNoQ291bnQpCisgICAgCisgICAgQWRkTUlNRVR5cGVXaXRoQ3VzdG9tUmVwcmVzZW50YXRp
b24oU3RyaW5nIG1pbWVUeXBlKQogCiAgICAgIyBEcmFnIGFuZCBkcm9wLgogI2lmIFBMQVRGT1JN
KEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226106</attachid>
            <date>2014-03-07 03:01:27 -0800</date>
            <delta_ts>2014-03-07 15:56:47 -0800</delta_ts>
            <desc>split patch</desc>
            <filename>pdf.diff</filename>
            <type>text/plain</type>
            <size>19839</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MjNmNDU5Li4wMmFhY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTQtMDMtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dlYktpdDJdW2lPU10gUERGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1MjYw
MjE2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVBERk1JTUVUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXplUG9zdFNjcmlwdE1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpp
bml0aWFsaXplTUlNRVR5cGVSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaDoKKyAgICAgICAgU3BsaXQgUERGIGFuZCBQb3N0U2NyaXB0IE1JTUUgdHlwZXMsIHNv
IFdlYktpdDIgY2FuIHJldHJpZXZlIGp1c3QgdGhlIFBERiBvbmVzCisgICAgICAgIHdpdGhvdXQg
UG9zdFNjcmlwdCBpbmNsdWRlZC4KKwogMjAxNC0wMy0wMyAgTWFydGluIFJvYmluc29uICA8bXJv
Ymluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bQ01ha2VdIEdlbmVyYXRlIGRvY3Vt
ZW50YXRpb24gZm9yIHRoZSBET00gYmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMmY5
MTcxNC4uMjE3MjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTY2Niw2ICs2NjYsNyBAQCBf
X1pON1dlYkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRVBOU181RnJhbWVFCiBfX1pON1dl
YkNvcmUxNkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRVBOU181UmFuZ2VFCiBfX1pON1dlYkNvcmUx
NkxlZ2FjeVdlYkFyY2hpdmU2Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3Ry
eTE1Y2FuU2hvd01JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTZNSU1FVHlw
ZVJlZ2lzdHJ5MTVnZXRQREZNSU1FVHlwZXNFdgogX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lz
dHJ5MjBpc0phdmFBcHBsZXRNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2
TUlNRVR5cGVSZWdpc3RyeTIzZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb25FUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyNGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZUVSS04zV1RGNlN0cmluZ0UKQEAgLTY3Myw3ICs2NzQsNiBAQCBfX1pON1dlYkNvcmUxNk1JTUVU
eXBlUmVnaXN0cnkyNWlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxNk1JTUVUeXBlUmVnaXN0cnkyNmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
RXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTI3Z2V0VW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzRXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTI3aXNTdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTZNSU1FVHlwZVJlZ2lz
dHJ5MjhnZXRQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzRXYKIF9fWk43V2ViQ29yZTE2TUlNRVR5
cGVSZWdpc3RyeTI5Z2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNFdgogX19aTjdXZWJDb3Jl
MTZNSU1FVHlwZVJlZ2lzdHJ5MzJpc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRVJLTlNfMTVSZXNv
dXJjZVJlcXVlc3RFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCmluZGV4IDE4Yzc0MTEuLjgzM2EwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xODcsNiArMTg3LDcgQEAgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nPiogc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZzsKIHN0YXRpYyBIYXNo
U2V0PFN0cmluZz4qIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXM7CiBzdGF0aWMgSGFzaFNl
dDxTdHJpbmc+KiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKIHN0YXRpYyBIYXNoU2V0PFN0
cmluZz4qIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiog
cGRmTUlNRVR5cGVzOwogc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiogcGRmQW5kUG9zdFNjcmlwdE1J
TUVUeXBlczsKIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4qIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
czsKIApAQCAtMzM5LDE1ICszNDAsMTkgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRl
ZEphdmFTY3JpcHRNSU1FVHlwZXMoKQogICAgICAgc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
cy0+YWRkKHR5cGVzW2ldKTsKIH0KIAotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBERkFuZFBvc3RT
Y3JpcHRNSU1FVHlwZXMoKQorc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBERk1JTUVUeXBlcygpCiB7
CiAgICAgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsKICAgICAgICAgImFwcGxpY2F0aW9u
L3BkZiIsCi0gICAgICAgICJ0ZXh0L3BkZiIsCi0gICAgICAgICJhcHBsaWNhdGlvbi9wb3N0c2Ny
aXB0IiwKKyAgICAgICAgInRleHQvcGRmIgogICAgIH07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHR5cGVzKTsgKytpKQotICAgICAgICBwZGZBbmRQb3N0U2Ny
aXB0TUlNRVR5cGVzLT5hZGQodHlwZXNbaV0pOworICAgICAgICBwZGZNSU1FVHlwZXMtPmFkZCh0
eXBlc1tpXSk7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb3N0U2NyaXB0TUlNRVR5cGVz
KCkKK3sKKyAgICBwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzLT5hZGQoImFwcGxpY2F0aW9uL3Bv
c3RzY3JpcHQiKTsKIH0KIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdl
TWltZVR5cGVzKCkKQEAgLTQ5MSw4ICs0OTYsMTEgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1J
TUVUeXBlUmVnaXN0cnkoKQogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gbmV3IEhhc2hT
ZXQ8U3RyaW5nPjsKICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKIAot
ICAgIHBkZkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmc+OwotICAg
IGluaXRpYWxpemVQREZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzKCk7CisgICAgcGRmTUlNRVR5cGVz
ID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKKyAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7CisK
KyAgICBwZGZBbmRQb3N0U2NyaXB0TUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigqcGRm
TUlNRVR5cGVzKTsKKyAgICBpbml0aWFsaXplUG9zdFNjcmlwdE1JTUVUeXBlcygpOwogCiAgICAg
dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKICAgICBpbml0
aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7CkBAIC02NjEsNiArNjY5LDE0IEBAIEhh
c2hTZXQ8U3RyaW5nPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlw
ZXMoKQogICAgIHJldHVybiAqc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CiB9CiAKKworSGFzaFNl
dDxTdHJpbmc+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKQoreworICAgIGlm
ICghcGRmTUlNRVR5cGVzKQorICAgICAgICBpbml0aWFsaXplTUlNRVR5cGVSZWdpc3RyeSgpOwor
ICAgIHJldHVybiAqcGRmTUlNRVR5cGVzOworfQorCiBIYXNoU2V0PFN0cmluZz4mIE1JTUVUeXBl
UmVnaXN0cnk6OmdldFBERkFuZFBvc3RTY3JpcHRNSU1FVHlwZXMoKQogewogICAgIGlmICghcGRm
QW5kUG9zdFNjcmlwdE1JTUVUeXBlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaAppbmRleCBmNzIwZjU4Li45MjZkN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSGFzaFNldDxTdHJpbmc+JiBnZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29k
aW5nKCk7CiAgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgZ2V0U3VwcG9ydGVkTm9uSW1hZ2VN
SU1FVHlwZXMoKTsKICAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBnZXRTdXBwb3J0ZWRNZWRp
YU1JTUVUeXBlcygpOworICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGdldFBERk1JTUVUeXBl
cygpOwogICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGdldFBERkFuZFBvc3RTY3JpcHRNSU1F
VHlwZXMoKTsKICAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBnZXRVbnN1cHBvcnRlZFRleHRN
SU1FVHlwZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg4MWQ3YWQuLmRmZGQ0NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOCBAQAorMjAxNC0wMy0wNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViS2l0Ml1baU9TXSBQREYKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTYwMAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTUyNjAyMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgc2luZ2xlIGN1c3RvbSBjb250ZW50IHByb3ZpZGVyIHdoaWNoIGlu
c3RhbGxzIGEgdmVyeSBwcmltaXRpdmUgUERGIHZpZXcKKyAgICAgICAgaW4gcGxhY2Ugb2YgdGhl
IFdLQ29udGVudFZpZXcgaWYgYSBQREYgaXMgbG9hZGVkIGluIHRoZSBtYWluIGZyYW1lLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZzoKKyAgICAgICAgTGluayBh
Z2FpbnN0IENvcmVQREYsIGZvciBVSVBERlBhZ2VWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSBpbml0XSk6CisgICAgICAgIEluaXRpYWxp
emUgdGhlIHJlZ2lzdHJ5LCB1c2luZyBXS1BERlZpZXcgZm9yIGFsbCBQREYgTUlNRSB0eXBlcy4K
KworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLUERGVmlldy5tbTogQWRkZWQuCisgICAgICAgIEFkZCBhIHZlcnkgc2ltcGxlIFBERiB2
aWV3IGJhc2VkIG9uIFVJUERGUGFnZVZpZXcuIEFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eQorICAg
ICAgICBjYW4gY29tZSBpbiB0aGUgZnV0dXJlOyByaWdodCBub3csIHdlIGp1c3QgY3JlYXRlIG9u
ZSB2aWV3IGZvciBlYWNoIHBhZ2UsIGFuZAorICAgICAgICBkZXBlbmQgb24gQ0FUaWxlZExheWVy
IHRvIG9ubHkgcGFpbnQgdGhlIHBhZ2VzIHRoYXQgYXJlIGJlaW5nIGRpc3BsYXllZC4KKwogMjAx
NC0wMy0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViS2l0Ml1baU9TXSBNYWluLWZyYW1lIGN1c3RvbSBjb250ZW50IHByb3ZpZGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZyBi
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKaW5kZXggYmQ5
ZmNmOS4uNjBmMzYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMv
V2ViS2l0Mi54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJL
aXQyLnhjY29uZmlnCkBAIC0zMCw3ICszMCw3IEBAIElOU1RBTExfUEFUSF9BQ1RVQUwgPSAkKFdF
QktJVDJfRlJBTUVXT1JLU19ESVIpOwogRFlMSUJfSU5TVEFMTF9OQU1FX0JBU0UgPSAkKE5PUk1B
TF9XRUJLSVQyX0ZSQU1FV09SS1NfRElSKTsKIAogRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxB
R1MgPSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTXyQoUExBVEZPUk1fTkFNRSkpOwot
RlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWxvYmpjIC1m
cmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBD
b3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZy
YW1ld29yayBHcmFwaGljc1NlcnZpY2VzIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIFVJ
S2l0IC1mcmFtZXdvcmsgV2ViS2l0IC1sTW9iaWxlR2VzdGFsdCAtbGFzc2VydGlvbl9leHRlbnNp
b247CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtbG9i
amMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3
b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVQREYgLWZyYW1ld29yayBDb3JlVGV4dCAt
ZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBHcmFwaGljc1NlcnZpY2VzIC1mcmFtZXdv
cmsgSW1hZ2VJTyAtZnJhbWV3b3JrIFVJS2l0IC1mcmFtZXdvcmsgV2ViS2l0IC1sTW9iaWxlR2Vz
dGFsdCAtbGFzc2VydGlvbl9leHRlbnNpb247CiBGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFH
U19pcGhvbmVvcyA9ICQoRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1NfaXBob25lc2ltdWxh
dG9yKSAtZnJhbWV3b3JrIElPU3VyZmFjZTsKIEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdT
X21hY29zeCA9IC1mcmFtZXdvcmsgQXBwbGljYXRpb25TZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJv
biAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9L
aXQgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBJT1N1cmZhY2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlk
ZXJSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQppbmRleCAyYTJjMmE0Li5kZTE5MWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCkBAIC0zMiw2ICszMiw4IEBACiAKICNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBv
cnQgIldLUERGVmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAj
aW1wb3J0IDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00Nyw2ICs0OSwxNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkKIAorLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGZvciAoYXV0byYgbWlt
ZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKSkKKyAg
ICAgICAgW3NlbGYgcmVnaXN0ZXJDb250ZW50UHJvdmlkZXI6W1dLUERGVmlldyBjbGFzc10gZm9y
TUlNRVR5cGU6bWltZVR5cGVdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKIC0gKHZvaWQpYWRk
UGFnZTooV2ViUGFnZVByb3h5JilwYWdlCiB7CiAgICAgX3BhZ2VzLmFkZCgmcGFnZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5mNDllMTIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgi
CisjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KKworQGludGVyZmFjZSBXS1BERlZpZXcgOiBVSVZp
ZXcgPFdLV2ViVmlld0NvbnRlbnRQcm92aWRlcj4KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWRiYmQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTAsMCArMSwxMjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLUERGVmlldy5o
IgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxDb3JlUERGL1VJUERGRG9jdW1lbnQu
aD4KKyNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlVmlldy5oPgorI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCitjb25zdCBDR0Zsb2F0IHBkZlBhZ2VN
YXJnaW4gPSA4OworY29uc3QgQ0dGbG9hdCBwZGZNaW5pbXVtWm9vbVNjYWxlID0gMTsKK2NvbnN0
IENHRmxvYXQgcGRmTWF4aW11bVpvb21TY2FsZSA9IDU7CisKK0BpbnRlcmZhY2UgV0tQREZWaWV3
ICgpIHsKKyAgICBSZXRhaW5QdHI8VUlQREZEb2N1bWVudD4gX3BkZkRvY3VtZW50OworICAgIFZl
Y3RvcjxVSVBERlBhZ2VWaWV3Kj4gX3BhZ2VWaWV3czsKKyAgICBDR1NpemUgX21pbmltdW1TaXpl
OworICAgIFVJU2Nyb2xsVmlldyAqX3Njcm9sbFZpZXc7Cit9CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBXS1BERlZpZXcKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClm
cmFtZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV0pKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgW3NlbGYgc2V0QmFja2dyb3VuZENvbG9yOltVSUNv
bG9yIGdyYXlDb2xvcl1dOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpd2ViX3Nl
dENvbnRlbnRQcm92aWRlckRhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBmb3IgKGF1dG8mIHBh
Z2VWaWV3IDogX3BhZ2VWaWV3cykKKyAgICAgICAgW3BhZ2VWaWV3IHJlbW92ZUZyb21TdXBlcnZp
ZXddOworCisgICAgX3BhZ2VWaWV3cy5jbGVhcigpOworCisgICAgUmV0YWluUHRyPENHRGF0YVBy
b3ZpZGVyPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENG
RGF0YSgoQ0ZEYXRhUmVmKWRhdGEpKTsKKyAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4g
Y2dQREZEb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihk
YXRhUHJvdmlkZXIuZ2V0KCkpKTsKKyAgICBfcGRmRG9jdW1lbnQgPSBhZG9wdE5TKFtbVUlQREZE
b2N1bWVudCBhbGxvY10gaW5pdFdpdGhDR1BERkRvY3VtZW50OmNnUERGRG9jdW1lbnQuZ2V0KCld
KTsKKworICAgIGZvciAoTlNVSW50ZWdlciBwYWdlID0gMDsgcGFnZSA8IFtfcGRmRG9jdW1lbnQg
bnVtYmVyT2ZQYWdlc107ICsrcGFnZSkgeworICAgICAgICBVSVBERlBhZ2UgKnBkZlBhZ2UgPSBb
X3BkZkRvY3VtZW50IHBhZ2VBdEluZGV4OnBhZ2VdOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHZpZXdzIGluc3RlYWQgb2YgZGVwZW5kaW5nIG9uIHRp
bGluZy4KKyAgICAgICAgUmV0YWluUHRyPFVJUERGUGFnZVZpZXc+IHBhZ2VWaWV3ID0gYWRvcHRO
UyhbW1VJUERGUGFnZVZpZXcgYWxsb2NdIGluaXRXaXRoUGFnZTpwZGZQYWdlIHRpbGVkQ29udGVu
dDpZRVNdKTsKKyAgICAgICAgW3NlbGYgYWRkU3VidmlldzpwYWdlVmlldy5nZXQoKV07CisgICAg
ICAgIF9wYWdlVmlld3MuYXBwZW5kKHBhZ2VWaWV3LmdldCgpKTsKKworICAgICAgICBbW3BhZ2VW
aWV3IGNvbnRlbnRMYXllcl0gc2V0Q29udGVudHNTY2FsZTpzZWxmLndpbmRvdy5zY3JlZW4uc2Nh
bGVdOworICAgIH0KKworICAgIFtzZWxmIGxheW91dFZpZXdzXTsKK30KKworLSAodm9pZCl3ZWJf
c2V0TWluaW11bVNpemU6KENHU2l6ZSlzaXplCit7CisgICAgX21pbmltdW1TaXplID0gc2l6ZTsK
KworICAgIFtzZWxmIGxheW91dFZpZXdzXTsKK30KKworLSAodm9pZCl3ZWJfc2V0U2Nyb2xsVmll
dzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldworeworICAgIF9zY3JvbGxWaWV3ID0gc2Nyb2xs
VmlldzsKK30KKworLSAodm9pZClsYXlvdXRWaWV3cworeworICAgIENHUmVjdCBwYWdlRnJhbWUg
PSBDR1JlY3RNYWtlKDAsIDAsIF9taW5pbXVtU2l6ZS53aWR0aCwgX21pbmltdW1TaXplLmhlaWdo
dCk7CisKKyAgICBmb3IgKGF1dG8mIHBhZ2VWaWV3IDogX3BhZ2VWaWV3cykgeworICAgICAgICBD
R1NpemUgcGFnZVNpemUgPSBbcGFnZVZpZXcucGFnZSBzaXplXTsKKworICAgICAgICBwYWdlRnJh
bWUuc2l6ZS5oZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQgLyBwYWdlU2l6ZS53aWR0aCAqIHBhZ2VG
cmFtZS5zaXplLndpZHRoOworCisgICAgICAgIENHUmVjdCBwYWdlRnJhbWVXaXRoTWFyZ2luQXBw
bGllZCA9IENHUmVjdEluc2V0KHBhZ2VGcmFtZSwgcGRmUGFnZU1hcmdpbiwgcGRmUGFnZU1hcmdp
bik7CisgICAgICAgIFtwYWdlVmlldyBzZXRGcmFtZTpwYWdlRnJhbWVXaXRoTWFyZ2luQXBwbGll
ZF07CisKKyAgICAgICAgcGFnZUZyYW1lLm9yaWdpbi55ICs9IHBhZ2VGcmFtZS5zaXplLmhlaWdo
dCAtIHBkZlBhZ2VNYXJnaW47CisgICAgfQorCisgICAgQ0dSZWN0IG5ld0ZyYW1lID0gW3NlbGYg
ZnJhbWVdOworICAgIG5ld0ZyYW1lLnNpemUud2lkdGggPSBfbWluaW11bVNpemUud2lkdGg7Cisg
ICAgbmV3RnJhbWUuc2l6ZS5oZWlnaHQgPSBzdGQ6Om1heChwYWdlRnJhbWUub3JpZ2luLnkgKyBw
ZGZQYWdlTWFyZ2luLCBfbWluaW11bVNpemUuaGVpZ2h0KTsKKyAgICBbc2VsZiBzZXRGcmFtZTpu
ZXdGcmFtZV07CisKKyAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudFNpemU6bmV3RnJhbWUuc2l6
ZV07CisgICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6cGRmTWluaW11bVpvb21T
Y2FsZV07CisgICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6cGRmTWF4aW11bVpv
b21TY2FsZV07Cit9CisKK0BlbmQKKworI2VuZGlmIC8qIFBMQVRGT1JNKElPUykgKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0
YTFlNTEyLi5iNGFhZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTIsNiArNTEyLDggQEAKIAkJMkRBMDQ5QjQxODBDQ0NE
MzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMDQ5QjIxODBDQ0NEMzAwQUFGQTlFIC8qIFBs
YXRmb3JtQ0FMYXllclJlbW90ZS5oICovOyB9OwogCQkyREEwNDlCNzE4MENDRDBBMDBBQUZBOUUg
LyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTA0OUI1MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xh
eWVyQ0FSZW1vdGUuY3BwICovOyB9OwogCQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3Jh
cGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREEwNDlCNjE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVt
b3RlLmggKi87IH07CisJCTJEQTFFNEZFMThDMDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTFFNEZDMThD
MDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcuaCAqLzsgfTsKKwkJMkRBMUU0RkYxOEMwMkI2QTAw
REJDOTI5IC8qIFdLUERGVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEQTFFNEZEMThDMDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcubW0gKi87
IH07CiAJCTJEQTk0NDk1MTg4NEUzQjUwMEVEODZEQiAvKiBXS1ZpZXdJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDQ4NjE4ODRFM0I1MDBF
RDg2REIgLyogV0tWaWV3SU9TLm1tICovOyB9OwogCQkyREE5NDQ5RTE4ODRFNEYwMDBFRDg2REIg
LyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDk3MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50SU9TLm1tICovOyB9OwogCQkyREE5NDQ5RjE4ODRFNEYwMDBFRDg2REIg
LyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDk4MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJU
b3VjaEV2ZW50SU9TLm1tICovOyB9OwpAQCAtMjI3Niw2ICsyMjc4LDggQEAKIAkJMkRBMDQ5QjIx
ODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBMDQ5QjUxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5
ZXJDQVJlbW90ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFw
aGljc0xheWVyQ0FSZW1vdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREEw
NDlCNjE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyREExRTRGQzE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZW
aWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUERGVmlldy5oOyBwYXRo
ID0gaW9zL1dLUERGVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREExRTRG
RDE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV0tQREZWaWV3Lm1tOyBwYXRoID0gaW9zL1dLUERGVmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0ODYxODg0RTNCNTAwRUQ4NkRCIC8q
IFdLVmlld0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
Vmlld0lPUy5tbTsgcGF0aCA9IGlvcy9XS1ZpZXdJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJEQTk0NDk3MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudElPUy5tbTsgcGF0aCA9IGlvcy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ5ODE4ODRFNEYwMDBF
RDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW07IHBhdGggPSBpb3Mv
TmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQzNTYsNiArNDM2MCw4IEBACiAJCQkJMEZDQjRFMzcxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VD
bGllbnRJbXBsSU9TLm1tICovLAogCQkJCTBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tICovLAogCQkJCTBGMEMzNjVCMThDMDVDQTEwMEY2MDdENyAv
KiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tICovLAorCQkJCTJEQTFFNEZD
MThDMDJCNkEwMERCQzkyOSAvKiBXS1BERlZpZXcuaCAqLywKKwkJCQkyREExRTRGRDE4QzAyQjZB
MDBEQkM5MjkgLyogV0tQREZWaWV3Lm1tICovLAogCQkJCTJEQTk0NEE5MTg4NEU5QkEwMEVEODZE
QiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAqLywKIAkJCQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEg
LyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovLAogCQkJCTJEQUYwNkQ0MThCRDFBNDcw
MDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggKi8sCkBAIC02ODIyLDYg
KzY4MjgsNyBAQAogCQkJCUJDMDMyRDdCMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJEcmFnQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EwRUY5RjEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRp
dENvbW1hbmRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNjREMzYxODk3ODFDNDAwNEIy
RkVCIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRBMUU0RkUxOEMw
MkI2QTAwREJDOTI5IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEN0Qx
MEY0Mzc4RDAwNThDMTVBIC8qIFdlYkVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY1OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2ODQwNTUzMThCODZFRDYwMDIyQzM4QiAvKiBW
aWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5ODYsNiAr
Nzk5Myw3IEBACiAJCQkJMzdEMEI1QzgxODQ1MjMyNzAwRjZDRTdEIC8qIFdLRXJyb3JSZWNvdmVy
eUF0dGVtcHRpbmcubSBpbiBTb3VyY2VzICovLAogCQkJCUNENUM2NkEwMTM0QjlEMzgwMDRGRTJB
OCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTc1NTQyMkNCMTgwNjUwMDIwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyREExRTRGRjE4QzAyQjZBMDBEQkM5MjkgLyogV0tQREZW
aWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBOEM2QTgxMUUzQkE1RjAwODEyRkI3IC8qIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNC
NEU2NzE4QkJFM0Q5MDAwRkNGQzkgLyogV0tQcmludGluZ1ZpZXcubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQUFCMDM3QzE4NUY5OUQ4MDBFREY1MDEgLyogQVBJRGF0YS5jcHAgaW4gU291cmNlcyAq
LywK
</data>
<flag name="review"
          id="250292"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>