<?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>79321</bug_id>
          
          <creation_ts>2012-02-22 20:22:15 -0800</creation_ts>
          <short_desc>[chromium] Clean up GraphicsContext3D initialization paths</short_desc>
          <delta_ts>2012-02-23 17:38:23 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>enne</cc>
    
    <cc>gman</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>562756</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 20:22:15 -0800</bug_when>
    <thetext>[chromium] Clean up GraphicsContext3D initialization paths</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562762</commentid>
    <comment_count>1</comment_count>
      <attachid>128378</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-22 20:30:01 -0800</bug_when>
    <thetext>Created attachment 128378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563387</commentid>
    <comment_count>2</comment_count>
      <attachid>128378</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-02-23 13:03:54 -0800</bug_when>
    <thetext>Comment on attachment 128378
Patch

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

Looks good. r=me

&gt; Source/WebKit/chromium/ChangeLog:21
&gt; +        2) GraphicsContext3DPrivate::createGraphicsContextFromWebContext() wraps the WebGraphicsContext3D in a

Missing end of comment?

&gt; Source/WebKit/chromium/src/GraphicsContext3DPrivate.h:58
&gt; +    // via ContextLost before using the context in any way.. Once made current on a thread, the context cannot

Two periods after &quot;way&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563393</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 13:08:57 -0800</bug_when>
    <thetext>Committed r108666: &lt;http://trac.webkit.org/changeset/108666&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563531</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-23 15:11:56 -0800</bug_when>
    <thetext>Committed r108679: &lt;http://trac.webkit.org/changeset/108679&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563532</commentid>
    <comment_count>5</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-23 15:12:46 -0800</bug_when>
    <thetext>Breaks tests.  See commit above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563555</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 15:30:43 -0800</bug_when>
    <thetext>This broke some plugin tests because I wasn&apos;t properly retaining the temporary graphics context across WebViewImpl::graphicsContext3D() calls before the compositor was fully initialized.  I&apos;ve made an attempt at making this a bit clearer, because it sure confused the heck out of me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563556</commentid>
    <comment_count>7</comment_count>
      <attachid>128568</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 15:31:33 -0800</bug_when>
    <thetext>Created attachment 128568
delta from last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563566</commentid>
    <comment_count>8</comment_count>
      <attachid>128571</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 15:39:39 -0800</bug_when>
    <thetext>Created attachment 128571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563567</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 15:40:21 -0800</bug_when>
    <thetext>Ken - would you mind taking another look?  The differences here are in WebViewImpl::graphicsContext3D() and WebViewImpl::createLayerTreeHost3D().  I&apos;ve added some inline comments to try to explain what the code is trying to do a bit more explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563734</commentid>
    <comment_count>10</comment_count>
      <attachid>128571</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-02-23 17:29:16 -0800</bug_when>
    <thetext>Comment on attachment 128571
Patch

The delta looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563752</commentid>
    <comment_count>11</comment_count>
      <attachid>128571</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 17:38:19 -0800</bug_when>
    <thetext>Comment on attachment 128571
Patch

Clearing flags on attachment: 128571

Committed r108706: &lt;http://trac.webkit.org/changeset/108706&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563753</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-23 17:38:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128378</attachid>
            <date>2012-02-22 20:30:01 -0800</date>
            <delta_ts>2012-02-23 15:31:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79321-20120222203000.patch</filename>
            <type>text/plain</type>
            <size>30287</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDYyYTI2MjM4MzBmNTBmMmE0OGNiZjY1OTE2ZDUzMTNkZTdiMThjMjMuLmE1OTIwMjA2ZDhhOTMz
ZGU1YTFmMGJjOTczYTBjZGEwNjE0NGVhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsNTcgQEAKIDIwMTItMDItMjIgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIENsZWFuIHVwIEdyYXBoaWNzQ29udGV4dDNE
IGluaXRpYWxpemF0aW9uIHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03OTMyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgc2ltcGxpZmllcyB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaW5pdGlh
bGl6YXRpb24gcGF0aHMgZG93biB0byB0d28gc2ltcGxlIGNvZGVwYXRocywgb25lIGZvciBvZmZz
Y3JlZW4KKyAgICAgICAgY29udGV4dHMgaW5pdGlhbGl6ZWQgZnJvbSBXZWJDb3JlIGFuZCBvbmUg
Zm9yIG9uc2NyZWVuIChjb21wb3NpdG9yKSBjb250ZXh0cyBpbml0aWFsaXplZCBieSBXZWJWaWV3
SW1wbCBvcgorICAgICAgICBXZWJMYXllclRyZWVWaWV3SW1wbC4KKworICAgICAgICBPZmZzY3Jl
ZW4gaW5pdGlhbGl6YXRpb24gcGF0aDoKKyAgICAgICAgMSkgV2ViQ29yZSBjb2RlIGNhbGxzIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoKSwgaW1wbGVtZW50ZWQgaW4gR3JhcGhp
Y3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKyAgICAgICAgMikgR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZSgpIGluc3RhbnRpYXRlcyBhIFdlYkdyYXBoaWNzQ29udGV4dDNEIHZpYSB0aGUgc3RhdGlj
IFdlYktpdFBsYXRmb3JtU3VwcG9ydCBpbnRlcmZhY2UKKyAgICAgICAgMykgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCgpIHdyYXBz
IHRoZSBXZWJHcmFwaGljc0NvbnRleHQzRCBpbiBhCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
J3MgbV9wcml2YXRlIHBvaW50ZXIuCisKKyAgICAgICAgT25zY3JlZW4gaW5pdGlhbGl6YXRpb24g
cGF0aDoKKyAgICAgICAgMSkgV2ViVmlld0ltcGwgb3IgV2ViTGF5ZXJUcmVlVmlld0ltcGwgcmVx
dWVzdCBhbiBvbnNjcmVlbiBXZWJHcmFwaGljc0NvbnRleHQzRCBmcm9tIGVpdGhlciB0aGVpciBX
ZWJWaWV3Q2xpZW50CisgICAgICAgIG9yIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHJlc3BlY3Rp
dmVseQorICAgICAgICAyKSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZyb21XZWJDb250ZXh0KCkgd3JhcHMgdGhlIFdlYkdyYXBoaWNzQ29udGV4dDNEIGlu
IGEKKworICAgICAgICBUaGVyZSBhcmUgbm8gb3RoZXIgaW5pdGlhbGl6YXRpb24gcGF0aHMuIFNw
ZWNpZmljYWxseSwgd2UgZG8gbm90IHN1cHBvcnQgaW5zdGFudGlhdGluZyBvbnNjcmVlbiBjb250
ZXh0cyBmcm9tCisgICAgICAgIHdpdGhpbiBXZWJDb3JlLgorCisgICAgICAgICogc3JjL0dyYXBo
aWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2Vi
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6cGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAg
ICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChzdGQ6OmdldENvbXBvc2l0b3JDb250ZXh0
QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRy
ZWVIb3N0Q29udGV4dDNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmdyYXBoaWNz
Q29udGV4dDNEKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0OjpjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdDo6
VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAg
ICAgKFdURjo6TW9ja0xheWVyVHJlZUhvc3RDbGllbnQ6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250
ZXh0M0QpOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtVGVzdDo6ZnVsbExpZmVjeWNs
ZVRlc3QpOgorICAgICAgICAqIHRlc3RzL0NvbXBvc2l0b3JGYWtlR3JhcGhpY3NDb250ZXh0M0Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0
M0QpOgorICAgICAgICAqIHRlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwOgorICAg
ICAgICAoVEVTVCk6CisKKzIwMTItMDItMjIgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KKwogICAgICAgICBSZW1vdmUgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50c0ludG9D
YW52YXNCdWZmZXIgYW5kIHVuaWZ5IFdlYkdMIGFuZCBjYW52YXMgMmQgbG9naWMKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MzE3CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1
bS5jcHAKaW5kZXggMTQyYTFiMTM2MDliMWJjMGM2NDMwNTNmYjFiMTZiZTM2ZmRmYmJhOS4uYzdh
Yzg5NGIwZjA2NWJlM2Y0ZTZjZWQ3OTAyODhjNmRhZjc1YzI3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAK
QEAgLTg1LDEyICs4NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IC8vIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZQogCi1HcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3SW1w
bCwgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0LCBH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKK0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFw
aGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCwgYm9vbCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCiAg
ICAgOiBtX2ltcGwod2ViQ29udGV4dCkKLSAgICAsIG1fd2ViVmlld0ltcGwod2ViVmlld0ltcGwp
CiAgICAgLCBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1f
bGF5ZXJDb21wb3NpdGVkKGZhbHNlKQotICAgICwgbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIoYXR0
cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICwgbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIo
cHJlc2VydmVEcmF3aW5nQnVmZmVyKQogICAgICwgbV9yZXNvdXJjZVNhZmV0eShSZXNvdXJjZVNh
ZmV0eVVua25vd24pCiAjaWYgVVNFKFNLSUEpCiAgICAgLCBtX2dyQ29udGV4dCgwKQpAQCAtMTEy
LDU5ICsxMTEsMTkgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlKCkKICNlbmRpZgogfQogCi0KLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlPiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZShXZWJLaXQ6OldlYlZpZXdJ
bXBsKiB3ZWJWaWV3SW1wbCwgUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
PiB3ZWJDb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycykKLXsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSh3ZWJWaWV3SW1w
bCwgd2ViQ29udGV4dCwgYXR0cnMpKTsKLX0KLQotUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2Vi
Q29udGV4dChQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRl
eHQsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0
V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIFRocmVh
ZFVzYWdlIHRocmVhZFVzYWdlKQorUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChQ
YXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQsIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSwgYm9vbCBwcmVzZXJ2ZURyYXdp
bmdCdWZmZXIpCiB7Ci0gICAgQ2hyb21lKiBjaHJvbWUgPSBzdGF0aWNfY2FzdDxDaHJvbWUqPiho
b3N0V2luZG93KTsKLSAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNocm9t
ZSA/IHN0YXRpY19jYXN0PFdlYktpdDo6V2ViVmlld0ltcGwqPihjaHJvbWUtPmNsaWVudCgpLT53
ZWJWaWV3KCkpIDogMDsKKyAgICBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93ID0gcmVu
ZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
OwogCi0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gcHJpdiA9IEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKHdlYlZpZXdJbXBsLCB3ZWJDb250ZXh0LCBhdHRycyk7
Ci0gICAgaWYgKCFwcml2KQotICAgICAgICByZXR1cm4gMDsKKyAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0M0QoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSwgMCwgcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cp
KTsKIAotICAgIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cgPSByZW5kZXJTdHlsZSA9
PSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3c7Ci0gICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiByZXN1bHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250
ZXh0M0QoYXR0cnMsIGhvc3RXaW5kb3csIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7Ci0g
ICAgcmVzdWx0LT5tX3ByaXZhdGUgPSBwcml2LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKKyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPiBwcml2ID0g
YWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSh3ZWJDb250ZXh0LCBwcmVzZXJ2
ZURyYXdpbmdCdWZmZXIpKTsKKyAgICBjb250ZXh0LT5tX3ByaXZhdGUgPSBwcml2LnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CiB9CiAKIG5hbWVzcGFjZSB7CiAKLVBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlLCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OlRocmVhZFVzYWdlIHRocmVhZFVzYWdlKQotewotICAgIGJvb2wgcmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cgPSByZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3c7Ci0KLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIHdlYkF0dHJpYnV0ZXM7Ci0gICAgd2ViQXR0cmlidXRlcy5hbHBoYSA9
IGF0dHJzLmFscGhhOwotICAgIHdlYkF0dHJpYnV0ZXMuZGVwdGggPSBhdHRycy5kZXB0aDsKLSAg
ICB3ZWJBdHRyaWJ1dGVzLnN0ZW5jaWwgPSBhdHRycy5zdGVuY2lsOwotICAgIHdlYkF0dHJpYnV0
ZXMuYW50aWFsaWFzID0gYXR0cnMuYW50aWFsaWFzOwotICAgIHdlYkF0dHJpYnV0ZXMucHJlbXVs
dGlwbGllZEFscGhhID0gYXR0cnMucHJlbXVsdGlwbGllZEFscGhhOwotICAgIHdlYkF0dHJpYnV0
ZXMuY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IGF0dHJzLmNhblJlY292ZXJGcm9tQ29udGV4
dExvc3M7Ci0gICAgd2ViQXR0cmlidXRlcy5ub0V4dGVuc2lvbnMgPSBhdHRycy5ub0V4dGVuc2lv
bnM7Ci0gICAgd2ViQXR0cmlidXRlcy5zaGFyZVJlc291cmNlcyA9IGF0dHJzLnNoYXJlUmVzb3Vy
Y2VzOwotICAgIHdlYkF0dHJpYnV0ZXMuZm9yVXNlT25Bbm90aGVyVGhyZWFkID0gdGhyZWFkVXNh
Z2UgPT0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPbkFub3RoZXJUaHJlYWQ7Ci0K
LSAgICBDaHJvbWUqIGNocm9tZSA9IHN0YXRpY19jYXN0PENocm9tZSo+KGhvc3RXaW5kb3cpOwot
ICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gY2hyb21lID8gc3RhdGljX2Nh
c3Q8V2ViS2l0OjpXZWJWaWV3SW1wbCo+KGNocm9tZS0+Y2xpZW50KCktPndlYlZpZXcoKSkgOiAw
OwotICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0Owot
ICAgIGlmICghd2ViVmlld0ltcGwgfHwgIXdlYlZpZXdJbXBsLT5jbGllbnQoKSkgewotICAgICAg
ICBpZiAocmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpCi0gICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgd2ViQ29udGV4dCA9IGFkb3B0UHRyKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPmNyZWF0ZU9mZnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEKHdlYkF0dHJpYnV0ZXMpKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgd2ViQ29udGV4dCA9IGFkb3B0UHRyKHdlYlZpZXdJbXBsLT5j
bGllbnQoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0M0Qod2ViQXR0cmlidXRlcywgcmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cpKTsKLSAgICBpZiAoIXdlYkNvbnRleHQpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIGF0dHJzLCBob3N0
V2luZG93LCByZW5kZXJTdHlsZSwgdGhyZWFkVXNhZ2UpOwotfQotCiB2b2lkIGdldERyYXdpbmdQ
YXJhbWV0ZXJzKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIsIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNELAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBQbGF0Zm9ybTNET2JqZWN0KiBmcmFtZUJ1ZmZlcklkLCBpbnQqIHdpZHRoLCBpbnQqIGhlaWdo
dCkKIHsKQEAgLTE4MSwxMSArMTQwLDYgQEAgdm9pZCBnZXREcmF3aW5nUGFyYW1ldGVycyhEcmF3
aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyLCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGUKIAogfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLVBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0Rm9yQW5vdGhlclRo
cmVhZChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQotewot
ICAgIHJldHVybiBjcmVhdGVHcmFwaGljc0NvbnRleHQoYXR0cnMsIGhvc3RXaW5kb3csIHJlbmRl
clN0eWxlLCBGb3JVc2VPbkFub3RoZXJUaHJlYWQpOwotfQotCiBXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBpZiAoIWNvbnRleHQp
CkBAIC0yMDAsOCArMTU0LDYgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKQogCiBQbGF0Zm9ybTNE
T2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQobV93ZWJWaWV3SW1wbCk7Ci0gICAgbV9pbXBsLT5zZXRQYXJlbnRDb250
ZXh0KG1fd2ViVmlld0ltcGwtPmdyYXBoaWNzQ29udGV4dDNEKCkpOwogICAgIHJldHVybiBtX2lt
cGwtPmdldFBsYXRmb3JtVGV4dHVyZUlkKCk7CiB9CiAKQEAgLTEwMzEsOSArOTgzLDI1IEBAIEdy
YXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogICAgIG1fcHJpdmF0ZS0+c2V0
R3B1TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKG51bGxwdHIpOwogfQog
Ci1QYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCitQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQogewotICAgIHJldHVybiBjcmVhdGVHcmFwaGlj
c0NvbnRleHQoYXR0cnMsIGhvc3RXaW5kb3csIHJlbmRlclN0eWxlLCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZCk7CisgICAgQVNTRVJUKHJlbmRlclN0eWxlICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisKKyAgICBX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIHdlYkF0dHJpYnV0ZXM7Cisg
ICAgd2ViQXR0cmlidXRlcy5hbHBoYSA9IGF0dHJzLmFscGhhOworICAgIHdlYkF0dHJpYnV0ZXMu
ZGVwdGggPSBhdHRycy5kZXB0aDsKKyAgICB3ZWJBdHRyaWJ1dGVzLnN0ZW5jaWwgPSBhdHRycy5z
dGVuY2lsOworICAgIHdlYkF0dHJpYnV0ZXMuYW50aWFsaWFzID0gYXR0cnMuYW50aWFsaWFzOwor
ICAgIHdlYkF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhID0gYXR0cnMucHJlbXVsdGlwbGll
ZEFscGhhOworICAgIHdlYkF0dHJpYnV0ZXMuY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IGF0
dHJzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3M7CisgICAgd2ViQXR0cmlidXRlcy5ub0V4dGVu
c2lvbnMgPSBhdHRycy5ub0V4dGVuc2lvbnM7CisgICAgd2ViQXR0cmlidXRlcy5zaGFyZVJlc291
cmNlcyA9IGF0dHJzLnNoYXJlUmVzb3VyY2VzOworCisgICAgT3duUHRyPFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBhZG9wdFB0cihXZWJLaXQ6OndlYktpdFBsYXRm
b3JtU3VwcG9ydCgpLT5jcmVhdGVPZmZzY3JlZW5HcmFwaGljc0NvbnRleHQzRCh3ZWJBdHRyaWJ1
dGVzKSk7CisgICAgaWYgKCF3ZWJDb250ZXh0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCByZW5kZXJTdHlsZSwgYXR0cnMucHJlc2Vy
dmVEcmF3aW5nQnVmZmVyKTsKIH0KIAogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmlu
ZGV4IGYwOGJhNThlZTYzMGRhMmYxNTEwMWE0YmZmODU1NWUxNGIwZTkyYTUuLmNkNWFjMDI5N2E4
MTEwMmQxNDZlZTZjNmRkY2M1MTQyYTFmNjQ2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC00MSw4ICs0MSw3
IEBAIGNsYXNzIEdyQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJHcmFw
aGljc0NvbnRleHQzRDsKLWNsYXNzIFdlYlZpZXdJbXBsOwotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsMjIgKzU0LDEwIEBAIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNETWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0FkYXB0ZXI7CiAK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPiBjcmVhdGUoV2ViS2l0OjpXZWJWaWV3
SW1wbCosIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKLQotICAgIGVudW0gVGhyZWFkVXNhZ2UgewotICAgICAg
ICBGb3JVc2VPblRoaXNUaHJlYWQsCi0gICAgICAgIEZvclVzZU9uQW5vdGhlclRocmVhZCwKLSAg
ICB9OwotCi0gICAgLy8gY3JlYXRlR3JhcGhpY3NDb250ZXh0Rm9yQW5vdGhlclRocmVhZCBpcyBl
cXVpdmFsZW50IHRvCi0gICAgLy8gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSwgYnV0IHdpbGwg
c2tpcCBtYWtpbmcgdGhlIGNvbnRleHQKLSAgICAvLyBjdXJyZW50LiBDYWxsZXJzIG11c3QgbWFr
ZSB0aGUgY29udGV4dCBjdXJyZW50IGJlZm9yZSB1c2luZyBpdCBBTkQgY2hlY2sKLSAgICAvLyB0
aGF0IHRoZSBjb250ZXh0IHdhcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSB2aWEgQ29udGV4dExvc3Qu
IE9uY2UgbWFkZQotICAgIC8vIGN1cnJlbnQgb24gYSB0aHJlYWQsIHRoZSBjb250ZXh0IGNhbm5v
dCBiZSB1c2VkIG9uIGFueSBvdGhlciB0aHJlYWQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEZvckFub3RoZXJUaHJlYWQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyU3R5bGUpOwotCi0gICAgLy8gVXNlZCBpbiB0ZXN0cyB0byBjcmVhdGUgYSBHcmFw
aGljc0NvbnRleHQzRCBmcm9tIGEgbW9ja2VkIFdlYkdyYXBoaWNzQ29udGV4dDNELgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHRG
cm9tV2ViQ29udGV4dChQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+LCBH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSwgVGhyZWFkVXNhZ2UpOworICAgIC8vIENhbGxlcnMgbXVzdCBtYWtl
IHRoZSBjb250ZXh0IGN1cnJlbnQgYmVmb3JlIHVzaW5nIGl0IEFORCBjaGVjayB0aGF0IHRoZSBj
b250ZXh0IHdhcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseQorICAgIC8vIHZpYSBDb250ZXh0TG9zdCBi
ZWZvcmUgdXNpbmcgdGhlIGNvbnRleHQgaW4gYW55IHdheS4uIE9uY2UgbWFkZSBjdXJyZW50IG9u
IGEgdGhyZWFkLCB0aGUgY29udGV4dCBjYW5ub3QKKyAgICAvLyBiZSB1c2VkIG9uIGFueSBvdGhl
ciB0aHJlYWQuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0
ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFw
aGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSwgYm9vbCBwcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIgPSBmYWxzZSk7CiAKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlKCk7CiAKQEAgLTMyMSw3ICszMDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXhTdG9yYWdl
MkRFWFQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVscywgR0MzRHVpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDM0RpbnQgd2lkdGgsIEdDM0RpbnQgaGVpZ2h0KTsKIAogcHJpdmF0ZToKLSAgICBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUoV2ViS2l0OjpXZWJWaWV3SW1wbCosIFBhc3NPd25QdHI8
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoUGFzc093blB0cjxXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEPiwgYm9vbCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIpOwogCiAgICAg
T3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IG1faW1wbDsKICAgICBPd25QdHI8
RXh0ZW5zaW9uczNEQ2hyb21pdW0+IG1fZXh0ZW5zaW9uczsKQEAgLTMyOSw3ICszMTYsNiBAQCBw
cml2YXRlOgogICAgIE93blB0cjxHcmFwaGljc0Vycm9yTWVzc2FnZUNhbGxiYWNrQWRhcHRlcj4g
bV9lcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXI7CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcj4gbV9zd2FwQnVmZmVyc0NvbXBs
ZXRlQ2FsbGJhY2tBZGFwdGVyOwogICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRE1lbW9yeUFs
bG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyPiBtX21lbW9yeUFsbG9jYXRpb25DaGFuZ2Vk
Q2FsbGJhY2tBZGFwdGVyOwotICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIG1fd2ViVmlld0ltcGw7
CiAgICAgYm9vbCBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9uczsKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXF1
ZXN0YWJsZUV4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXggOTgxNDc3MTE4OWJmNjlkN2M4ZDUzNDg3YzI0
OWFmMjBjMTA5ZDNkMS4uMjlkMDMzMjE1MzBiNjkyMTNhZGYxNTFmMGE1MGE4YzhhMDc1ZDIzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJ
bXBsLmNwcApAQCAtODYsMjEgKzg2LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QKICAgICBp
ZiAoIXdlYkNvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgV2ViR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgd2ViQXR0cmlidXRlcyA9IHdlYkNvbnRleHQtPmdldENvbnRleHRB
dHRyaWJ1dGVzKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRl
czsKLSAgICBhdHRyaWJ1dGVzLmFscGhhID0gd2ViQXR0cmlidXRlcy5hbHBoYTsKLSAgICBhdHRy
aWJ1dGVzLmRlcHRoID0gd2ViQXR0cmlidXRlcy5kZXB0aDsKLSAgICBhdHRyaWJ1dGVzLnN0ZW5j
aWwgPSB3ZWJBdHRyaWJ1dGVzLnN0ZW5jaWw7Ci0gICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSB3
ZWJBdHRyaWJ1dGVzLmFudGlhbGlhczsKLSAgICBhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBo
YSA9IHdlYkF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOwotICAgIGF0dHJpYnV0ZXMuY2Fu
UmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IHdlYkF0dHJpYnV0ZXMuY2FuUmVjb3ZlckZyb21Db250
ZXh0TG9zczsKLSAgICBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9ucyA9IHdlYkF0dHJpYnV0ZXMubm9F
eHRlbnNpb25zOwotICAgIGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSB3ZWJBdHRyaWJ1dGVz
LnNoYXJlUmVzb3VyY2VzOwotICAgIGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyID0g
ZmFsc2U7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgc3R5bGUgPSBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3c7Ci0gICAgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpUaHJlYWRVc2FnZSB1c2FnZSA9IENDUHJveHk6Omhhc0ltcGxUaHJl
YWQoKSA/IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25Bbm90aGVyVGhyZWFkIDog
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQ7Ci0gICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNv
bnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIGF0dHJpYnV0ZXMsIDAsIHN0eWxlLCB1c2FnZSk7
CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UgLyogcHJlc2VydmVEcmF3aW5nQnVm
ZmVyICovICk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbW1pdEFuZERy
YXdGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggMzRkYTBkZWI0YmFlZjMyNTFiOWVlZjhhODI4NzVjMDk0MTBiYjAxZC4uM2FmY2Q2MGE0Yjdm
MGE5MzU2MDI3NjYyNmE2Yjc3MjkzNTQ5ZGYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIG5hbWVzcGFjZSB7CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGdldENv
bXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpCitXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcyhib29sIHRocmVhZGVk
KQogewogICAgIC8vIEV4cGxpY2l0bHkgZGlzYWJsZSBhbnRpYWxpYXNpbmcgZm9yIHRoZSBjb21w
b3NpdG9yLiBBcyBvZiB0aGUgdGltZSBvZgogICAgIC8vIHRoaXMgd3JpdGluZywgdGhlIG9ubHkg
cGxhdGZvcm0gdGhhdCBzdXBwb3J0ZWQgYW50aWFsaWFzaW5nIGZvciB0aGUKQEAgLTE4Miw5ICsx
ODIsMTAgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgZ2V0Q29tcG9zaXRvckNvbnRl
eHRBdHRyaWJ1dGVzKCkKICAgICAvLyBiZSBvcHRpbWl6ZWQgdG8gcmVzb2x2ZSBkaXJlY3RseSBp
bnRvIHRoZSBJT1N1cmZhY2Ugc2hhcmVkIGJldHdlZW4gdGhlCiAgICAgLy8gR1BVIGFuZCBicm93
c2VyIHByb2Nlc3Nlcy4gRm9yIHRoZXNlIHJlYXNvbnMgYW5kIHRvIGF2b2lkIHBsYXRmb3JtCiAg
ICAgLy8gZGlzcGFyaXRpZXMgd2UgZXhwbGljaXRseSBkaXNhYmxlIGFudGlhbGlhc2luZy4KLSAg
ICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1
dGVzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSB0
cnVlOworICAgIGF0dHJpYnV0ZXMuZm9yVXNlT25Bbm90aGVyVGhyZWFkID0gdGhyZWFkZWQ7CiAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CiAKQEAgLTMyMDQsMTAgKzMyMDUsMTIgQEAgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RD
b250ZXh0M0QoKQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG1f
dGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRC5yZWxlYXNlKCk7CiAgICAgaWYgKCFj
b250ZXh0KSB7Ci0gICAgICAgIGlmIChDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCi0gICAgICAg
ICAgICBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGb3JBbm90aGVyVGhyZWFkKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBt
X3BhZ2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RX
aW5kb3cpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0ID0gR3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZShnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5j
aHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsK
KyAgICAgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1
dGVzID0gZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKENDUHJveHk6Omhhc0ltcGxUaHJl
YWQoKSk7CisgICAgICAgIE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCA9
IGFkb3B0UHRyKGNsaWVudCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQzRChhdHRyaWJ1dGVzLCB0
cnVlIC8qIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93ICovKSk7CisgICAgICAgIGlmICghd2Vi
Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0OworCisgICAgICAgIGNvbnRleHQg
PSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJD
b250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGly
ZWN0bHlUb0hvc3RXaW5kb3cpOwogICAgIH0KICAgICByZXR1cm4gY29udGV4dDsKIH0KQEAgLTMz
MDEsMTcgKzMzMDQsNyBAQCBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViVmlld0ltcGw6OmdyYXBo
aWNzQ29udGV4dDNEKCkKICAgICAgICAgICAgIGlmICh3ZWJDb250ZXh0ICYmICF3ZWJDb250ZXh0
LT5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHdlYkNvbnRleHQ7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQz
RCkgewotICAgICAgICAgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIHdlYkNvbnRleHQgPSBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3RlbXBv
cmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKHdl
YkNvbnRleHQgJiYgIXdlYkNvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gd2ViQ29udGV4dDsKLSAgICAgICAgfQotICAgICAgICBpZiAoQ0NQcm94eTo6aGFz
SW1wbFRocmVhZCgpKQotICAgICAgICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29u
dGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRG
b3JBbm90aGVyVGhyZWFkKGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpLCBtX3BhZ2Ut
PmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3ND
b250ZXh0M0QgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGdldENvbXBvc2l0b3JDb250ZXh0
QXR0cmlidXRlcygpLCBtX3BhZ2UtPmNocm9tZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
RGlyZWN0bHlUb0hvc3RXaW5kb3cpOwotCi0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3RlbXBvcmFyeU9uc2NyZWVu
R3JhcGhpY3NDb250ZXh0M0QuZ2V0KCkpOworICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY3JlYXRlTGF5ZXJUcmVlSG9z
dENvbnRleHQzRCgpLmdldCgpKTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKaW5kZXggNWI3ZjUwMjdiMjFkZTUzMGExMDVkNTAzMmZhM2VhM2QyZDVmNTM3NS4u
ZWVhZTcxZDQ0OGExNjNiZGVjNDBmYjRlYTUxNTJhMTUyMGQyYmI5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKQEAgLTkxLDYgKzkxLDExIEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKKyAgICBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QoKSks
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CisgICAgfQor
CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1fYWx3YXlzSW1wbFRocmVhZDsKICAgICBP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbV9ob3N0SW1wbDsKICAgICBib29sIG1fZGlkUmVx
dWVzdENvbW1pdDsKQEAgLTMzMyw4ICszMzgsNyBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdOb3RDYWxsZWRPbkhpZGRlbkxheWVyKQogewotR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEKCkpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0
V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZCk7Cisg
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpOwog
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogCiAgICAg
Ly8gRW5zdXJlIHZpc2libGVMYXllclJlY3QgZm9yIHJvb3QgbGF5ZXIgaXMgZW1wdHkKQEAgLTM2
OSw4ICszNzMsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKIAogVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Q2FsbGVkT25BbGxMYXllcnMpCiB7
Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdlYkdyYXBo
aWNzQ29udGV4dDNEKCkpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1Ro
cmVhZCk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gY3JlYXRlQ29u
dGV4dCgpOwogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQp
OwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCkBA
IC00NzEsOCArNDc0LDcgQEAgcHJpdmF0ZToKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NTc4MwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVu
ZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdl
YkNvbnRleHQoYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVUcmFja2VyQ29udGV4dCgpKSwgYXR0cnMs
IDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOworICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTsKICAgICBtX2hvc3RJbXBs
LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKICAgICBtX2hvc3RJbXBsLT5zZXRW
aWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIApAQCAtNjM4LDkgKzY0MCw4IEBAIHB1Ymxp
YzoKIC8vIHZpZXdwb3J0IHNpemUgaXMgbmV2ZXIgc2V0LgogVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3KQogewotICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwogICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCogcmVz
aGFwZVRyYWNrZXIgPSBuZXcgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCk7Ci0gICAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihyZXNoYXBlVHJhY2tlciks
IGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cs
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkKTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKHJlc2hhcGVUcmFj
a2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKICAg
ICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKICAgICBtX2hv
c3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIApAQCAtNjgyLDkgKzY4
Myw4IEBAIHByaXZhdGU6CiAvLyB3aGVyZSBpdCBzaG91bGQgcmVxdWVzdCB0byBzd2FwIG9ubHkg
dGhlIHN1YkJ1ZmZlciB0aGF0IGlzIGRhbWFnZWQuCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1hZ2VSZWN0KQogewotICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwogICAgIFBhcnRpYWxTd2FwVHJhY2tlckNvbnRleHQq
IHBhcnRpYWxTd2FwVHJhY2tlciA9IG5ldyBQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0KCk7Ci0g
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihwYXJ0
aWFsU3dhcFRyYWNrZXIpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1Ro
cmVhZCk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9w
dFB0cihwYXJ0aWFsU3dhcFRyYWNrZXIpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3cpOwogCiAgICAgLy8gVGhpcyB0ZXN0IGNyZWF0ZXMgaXRzIG93biBDQ0xh
eWVyVHJlZUhvc3RJbXBsLCBzbwogICAgIC8vIHRoYXQgd2UgY2FuIGZvcmNlIHBhcnRpYWwgc3dh
cCBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKaW5kZXggODI2MDk4OWE1NGJmMDViMDQwMzMwYWMzZDQ5NDM4MjQ3
NzNmOWZlYy4uMTJkNzE0MTkzODUyZTFkNTc5NDlkYWI1MTJiNDVhYTI0NjgzNjk2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCkBAIC0yNDYsMTAgKzI0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgd2ViQXR0cnMuYWxwaGEg
PSBhdHRycy5hbHBoYTsKIAogICAgICAgICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdl
YkNvbnRleHQgPSBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEV2l0aFRleHR1cmVU
cmFja2luZzo6Y3JlYXRlKHdlYkF0dHJzKTsKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoCi0gICAgICAg
ICAgICB3ZWJDb250ZXh0LnJlbGVhc2UoKSwgYXR0cnMsIDAsCi0gICAgICAgICAgICBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csCi0gICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCk7CisgICAgICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
RGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21t
aXRBbmREcmF3RnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNGIzZGQyN2QzMWQ4ODIx
MDRjNzBjZmZmNTAyNGZiODA0NDdlYTE0MS4uZWMwY2UwYzZhYmNhMTI0ZmU5YjJhZTk3OWMzMDQ4
YTBkMjJjZTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52
YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHByb3Rl
Y3RlZDoKICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
OwogCi0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbWFpbkNvbnRleHQgPSBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0
KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOwotICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGltcGxDb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQoKSks
IGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cs
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkKTsKKyAgICAgICAg
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3
IE1vY2tDYW52YXNDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlU
b0hvc3RXaW5kb3cpOworICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGltcGxDb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQoKSksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiAKICAgICAgICAgTW9ja0NhbnZh
c0NvbnRleHQmIG1haW5Nb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobWFpbkNv
bnRleHQuZ2V0KCkpKTsKICAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQmIGltcGxNb2NrID0gKnN0
YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpl
eHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbENvbnRleHQuZ2V0KCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ29tcG9zaXRvckZha2VHcmFwaGljc0Nv
bnRleHQzRC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db21wb3NpdG9yRmFrZUdy
YXBoaWNzQ29udGV4dDNELmgKaW5kZXggMWYwODk3MzQxMzNkNzM4MGJiZmM3YWY4NDUyMTgzNDhm
YWQzNTlhOC4uOTM3YjYyZDRjNzYyZmFiZmFjODU5MTE2NTZlMWMwODM2OTA4ODk4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db21wb3NpdG9yRmFrZUdyYXBoaWNz
Q29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db21wb3NpdG9y
RmFrZUdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTM3LDEwICszNyw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb21wb3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4
dDNEKEdyYXBoCiAgICAgd2ViQXR0cnMuYWxwaGEgPSBhdHRycy5hbHBoYTsKIAogICAgIE93blB0
cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gV2ViS2l0OjpDb21w
b3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUod2ViQXR0cnMpOwotICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KAotICAgICAgICB3ZWJDb250ZXh0LnJlbGVhc2UoKSwgYXR0cnMsIDAsCi0gICAg
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPbkFub3RoZXJUaHJlYWQpOworICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZy
b21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcAppbmRl
eCAyYjc2YjgwYWQzMGIwYzg1NTRjZGIxYzM0ZTZlY2I2Y2FlN2U2YzI3Li43MWNiOGJhYjFlZDg4
YzVlZDc0MGY4YTBhOTQ5NzlhMDkzMjJlN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgcHJpdmF0ZToKIFRFU1QoRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVzdCwgQ2Fu
T3ZlcnJpZGVNYW51YWxseSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRyczsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0
UHRyKG5ldyBGcmFtZUNvdW50aW5nQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpGb3JVc2VPblRoaXNUaHJlYWQpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJv
bVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdDb250ZXh0KCkpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogICAgIEZyYW1lQ291bnRp
bmdDb250ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxGcmFtZUNvdW50aW5nQ29udGV4
dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNE
KGNvbnRleHQuZ2V0KCkpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgewpA
QCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiBURVNUKEZha2VHcmFwaGljc0NvbnRleHQzRFRlc3Qs
IENhblVzZUdNb2NrKQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
OwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIo
bmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJE
aXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRo
aXNUaHJlYWQpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQo
YWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRp
cmVjdGx5VG9Ib3N0V2luZG93KTsKICAgICBHTW9ja0NvbnRleHQmIG1vY2tDb250ZXh0ID0gKnN0
YXRpY19jYXN0PEdNb2NrQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFj
dFdlYkdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKIAogICAgIEVYUEVDVF9DQUxM
KG1vY2tDb250ZXh0LCBnZXRFcnJvcigpKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiBU
RVNUKEZha2VHcmFwaGljc0NvbnRleHQzRFRlc3QsIENvbnRleHRGb3JUaGlzVGhyZWFkU2hvdWxk
Tm90TWFrZUN1cnJlbnQpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0
cnM7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0
cihuZXcgQ29udGV4dFRoYXRDb3VudHNNYWtlQ3VycmVudHMoKSksIGF0dHJzLCAwLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBDb250ZXh0VGhhdENvdW50c01ha2VDdXJy
ZW50cygpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsK
ICAgICBFWFBFQ1RfVFJVRShjb250ZXh0KTsKICAgICBDb250ZXh0VGhhdENvdW50c01ha2VDdXJy
ZW50cyYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8Q29udGV4dFRoYXRDb3VudHNNYWtlQ3Vy
cmVudHMqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRl
eHQzRChjb250ZXh0LmdldCgpKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1vY2tDb250ZXh0Lm1ha2VD
dXJyZW50Q291bnQoKSk7CkBAIC0xMTMsNyArMTEzLDcgQEAgVEVTVChGYWtlR3JhcGhpY3NDb250
ZXh0M0RUZXN0LCBDb250ZXh0Rm9yVGhpc1RocmVhZFNob3VsZE5vdE1ha2VDdXJyZW50KQogVEVT
VChGYWtlR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDb250ZXh0Rm9yQW5vdGhlclRocmVhZFNob3Vs
ZE5vdE1ha2VDdXJyZW50KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQ
dHIobmV3IENvbnRleHRUaGF0Q291bnRzTWFrZUN1cnJlbnRzKCkpLCBhdHRycywgMCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgQ29udGV4dFRoYXRDb3VudHNNYWtl
Q3VycmVudHMoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRv
dyk7CiAgICAgRVhQRUNUX1RSVUUoY29udGV4dCk7CiAgICAgQ29udGV4dFRoYXRDb3VudHNNYWtl
Q3VycmVudHMmIG1vY2tDb250ZXh0ID0gKnN0YXRpY19jYXN0PENvbnRleHRUaGF0Q291bnRzTWFr
ZUN1cnJlbnRzKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3ND
b250ZXh0M0QoY29udGV4dC5nZXQoKSkpOwogICAgIEVYUEVDVF9FUSgwLCBtb2NrQ29udGV4dC5t
YWtlQ3VycmVudENvdW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128568</attachid>
            <date>2012-02-23 15:31:33 -0800</date>
            <delta_ts>2012-02-23 15:39:35 -0800</delta_ts>
            <desc>delta from last patch</desc>
            <filename>bug-79321-20120223153132.patch</filename>
            <type>text/plain</type>
            <size>4169</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggNWM5OWFhMzhlMmQzMzE5YjAzYzViYjYxNDMyZWU1MWZmMjcw
MGZmOS4uYmM2ZDY0MmZiYThiYmFhMjBlMjQ2MDhiOGM0ZDk0OWQ3YjMyNDkxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzIwMSwxNyArMzIwMSwy
NSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUo
Ym9vbCBhY3RpdmUpCiAKICNlbmRpZgogCitQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBX
ZWJWaWV3SW1wbDo6Y3JlYXRlQ29tcG9zaXRvckdyYXBoaWNzQ29udGV4dDNEKCkKK3sKKyAgICBX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBnZXRD
b21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKTsKKyAg
ICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBhZG9wdFB0cihjbGll
bnQoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0M0QoYXR0cmlidXRlcywgdHJ1ZSAvKiByZW5kZXJE
aXJlY3RseVRvSG9zdFdpbmRvdyAqLykpOworICAgIGlmICghd2ViQ29udGV4dCkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVhc2UoKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTt9Cit9CisKIFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29u
dGV4dDNEKCkKIHsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX3Rl
bXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QucmVsZWFzZSgpOwotICAgIGlmICghY29u
dGV4dCkgewotICAgICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMgPSBnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoQ0NQcm94eTo6aGFz
SW1wbFRocmVhZCgpKTsKLSAgICAgICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJD
b250ZXh0ID0gYWRvcHRQdHIoY2xpZW50KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKGF0dHJp
YnV0ZXMsIHRydWUgLyogcmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cgKi8pKTsKLSAgICAgICAg
aWYgKCF3ZWJDb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0OwogCi0gICAgICAgIGNvbnRleHQgPSBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdl
YkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpOwotICAgIH0KKyAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNyZWF0ZWQgYW4gb25z
Y3JlZW4gY29udGV4dCBmb3IgdGhpcyB2aWV3LCByZXR1cm4gdGhhdC4KKyAgICBpZiAobV90ZW1w
b3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEKQorICAgICAgICBjb250ZXh0ID0gbV90ZW1w
b3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNELnJlbGVhc2UoKTsKKyAgICBlbHNlIC8vIE90
aGVyd2lzZSBtYWtlIGEgbmV3IG9uZS4KKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0
b3JHcmFwaGljc0NvbnRleHQzRCgpOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCkBAIC0zMzA0
LDcgKzMzMTIsMTYgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpncmFwaGlj
c0NvbnRleHQzRCgpCiAgICAgICAgICAgICBpZiAod2ViQ29udGV4dCAmJiAhd2ViQ29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB3ZWJDb250ZXh0OwogICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RX
ZWJHcmFwaGljc0NvbnRleHQzRChjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkuZ2V0KCkp
OworICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSBpdCBtZWFucyB0aGF0IHNvbWUgc3lzdGVtIG5l
ZWRzIGFjY2VzcyB0byB0aGUgY29udGV4dCB0aGUgY29tcG9zaXRvciB3aWxsIHVzZSBidXQgdGhl
IGNvbXBvc2l0b3IgaXRzZWxmCisgICAgICAgIC8vIGhhc24ndCByZXF1ZXN0ZWQgYSBjb250ZXh0
IG9yIGl0IHdhcyB1bmFibGUgdG8gc3VjY2Vzc2Z1bGx5IGluc3RhbnRpYXRlIGEgY29udGV4dC4K
KyAgICAgICAgLy8gV2UgbmVlZCB0byByZXR1cm4gdGhlIGNvbnRleHQgdGhhdCB0aGUgY29tcG9z
aXRvciB3aWxsIGxhdGVyIHVzZSBzbyB3ZSBhbGxvY2F0ZSBhIG5ldyBjb250ZXh0IChpZiBuZWVk
ZWQpIGFuZCBzdGFzaCBpdAorICAgICAgICAvLyB1bnRpbCB0aGUgY29tcG9zaXRvciByZXF1ZXN0
cyBhbmQgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBjb250ZXh0IHZpYSBjcmVhdGVMYXllclRyZWVI
b3N0M0QoKS4KKyAgICAgICAgaWYgKCFtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0
M0QpCisgICAgICAgICAgICBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QgPSBj
cmVhdGVDb21wb3NpdG9yR3JhcGhpY3NDb250ZXh0M0QoKTsKKworICAgICAgICBXZWJHcmFwaGlj
c0NvbnRleHQzRCogd2ViQ29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFj
dFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQz
RC5nZXQoKSk7CisgICAgICAgIGlmICh3ZWJDb250ZXh0ICYmICF3ZWJDb250ZXh0LT5pc0NvbnRl
eHRMb3N0KCkpCisgICAgICAgICAgICByZXR1cm4gd2ViQ29udGV4dDsKICAgICB9CiAjZW5kaWYK
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmlu
ZGV4IGU4ZDUzYmI5NDVlNTc1ZGIwYTdiNjIzZDU3MmI3ZWUxMThiZmY2OWEuLjg0ZDUxNDkzOTJi
NzhjMTE0MWEyNzZlZDJjOTI3MzNjMTYwZjA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaApAQCAtNDQ2LDkgKzQ0NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJucyB0aGUgb25zY3JlZW4gM0QgY29udGV4dCB1c2VkIGJ5IHRoZSBjb21wb3NpdG9yLiBUaGlz
IGlzCiAgICAgLy8gdXNlZCBieSB0aGUgcmVuZGVyZXIncyBjb2RlIHRvIHNldCB1cCByZXNvdXJj
ZSBzaGFyaW5nIGJldHdlZW4KICAgICAvLyB0aGUgY29tcG9zaXRvcidzIGNvbnRleHQgYW5kIHN1
Ym9yZGluYXRlIGNvbnRleHRzIGZvciBBUElzIGxpa2UKLSAgICAvLyBXZWJHTC4gUmV0dXJucyAw
IGlmIGNvbXBvc2l0aW5nIHN1cHBvcnQgaXMgbm90IGNvbXBpbGVkIGluLgorICAgIC8vIFdlYkdM
LiBSZXR1cm5zIDAgaWYgY29tcG9zaXRpbmcgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW4gb3IK
KyAgICAvLyB3ZSBjb3VsZCBub3Qgc3VjY2Vzc2Z1bGx5IGluc3RhbnRpYXRlIGEgY29udGV4dC4K
ICAgICB2aXJ0dWFsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQzRCgpOwog
CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29tcG9z
aXRvckdyYXBoaWNzQ29udGV4dDNEKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJpbGl0
eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUsIGJvb2wpOwogCiAgICAgV2ViQ29yZTo6UG9w
dXBDb250YWluZXIqIHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cC5n
ZXQoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128571</attachid>
            <date>2012-02-23 15:39:39 -0800</date>
            <delta_ts>2012-02-23 17:38:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79321-20120223153937.patch</filename>
            <type>text/plain</type>
            <size>32582</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGM0YWNmMDNjMjM0YTI2NGNkY2MwOGRhZDZlMzRhMGMzZDYwOTE1YzEuLjg5ZGE2ZWU2MjNlZTcz
MzlmZDc0MDRkYmIxMjM4MTcxODc0M2QwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTItMDItMjMgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENsZWFuIHVwIEdyYXBoaWNzQ29udGV4dDNE
IGluaXRpYWxpemF0aW9uIHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03OTMyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgc2ltcGxpZmllcyB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaW5pdGlh
bGl6YXRpb24gcGF0aHMgZG93biB0byB0d28gc2ltcGxlIGNvZGVwYXRocywgb25lIGZvciBvZmZz
Y3JlZW4KKyAgICAgICAgY29udGV4dHMgaW5pdGlhbGl6ZWQgZnJvbSBXZWJDb3JlIGFuZCBvbmUg
Zm9yIG9uc2NyZWVuIChjb21wb3NpdG9yKSBjb250ZXh0cyBpbml0aWFsaXplZCBieSBXZWJWaWV3
SW1wbCBvcgorICAgICAgICBXZWJMYXllclRyZWVWaWV3SW1wbC4KKworICAgICAgICBPZmZzY3Jl
ZW4gaW5pdGlhbGl6YXRpb24gcGF0aDoKKyAgICAgICAgMSkgV2ViQ29yZSBjb2RlIGNhbGxzIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoKSwgaW1wbGVtZW50ZWQgaW4gR3JhcGhp
Y3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKyAgICAgICAgMikgR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZSgpIGluc3RhbnRpYXRlcyBhIFdlYkdyYXBoaWNzQ29udGV4dDNEIHZpYSB0aGUgc3RhdGlj
IFdlYktpdFBsYXRmb3JtU3VwcG9ydCBpbnRlcmZhY2UKKyAgICAgICAgMykgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCgpIHdyYXBz
IHRoZSBXZWJHcmFwaGljc0NvbnRleHQzRCBpbiBhCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
J3MgbV9wcml2YXRlIHBvaW50ZXIuCisKKyAgICAgICAgT25zY3JlZW4gaW5pdGlhbGl6YXRpb24g
cGF0aDoKKyAgICAgICAgMSkgV2ViVmlld0ltcGwgb3IgV2ViTGF5ZXJUcmVlVmlld0ltcGwgcmVx
dWVzdCBhbiBvbnNjcmVlbiBXZWJHcmFwaGljc0NvbnRleHQzRCBmcm9tIGVpdGhlciB0aGVpciBX
ZWJWaWV3Q2xpZW50CisgICAgICAgIG9yIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHJlc3BlY3Rp
dmVseQorICAgICAgICAyKSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZyb21XZWJDb250ZXh0KCkgd3JhcHMgdGhlIFdlYkdyYXBoaWNzQ29udGV4dDNEIGlu
IGEKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QncyBtX3ByaXZhdGUgcG9pbnRlci4KKworICAg
ICAgICBUaGVyZSBhcmUgbm8gb3RoZXIgaW5pdGlhbGl6YXRpb24gcGF0aHMuIFNwZWNpZmljYWxs
eSwgd2UgZG8gbm90IHN1cHBvcnQgaW5zdGFudGlhdGluZyBvbnNjcmVlbiBjb250ZXh0cyBmcm9t
CisgICAgICAgIHdpdGhpbiBXZWJDb3JlLgorCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4
dDNEQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QpOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5jcHA6CisgICAgICAgIChzdGQ6OmdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVDb21wb3NpdG9yR3JhcGhp
Y3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1w
bC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0NMYXllclRyZWVIb3N0SW1wbFRl
c3Q6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdENsaWVudDo6Y3JlYXRl
TGF5ZXJUcmVlSG9zdENvbnRleHQzRCk6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNo
cm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW1U
ZXN0OjpmdWxsTGlmZWN5Y2xlVGVzdCk6CisgICAgICAgICogdGVzdHMvQ29tcG9zaXRvckZha2VH
cmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29tcG9zaXRvck1v
Y2tHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogdGVzdHMvRmFrZUdyYXBoaWNzQ29udGV4
dDNEVGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxMi0wMi0yMyAgQWRyaWVubmUgV2Fs
a2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMDg2NjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGlj
c0NvbnRleHQzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBo
aWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCmluZGV4IDE0MmExYjEzNjA5YjFiYzBjNjQzMDUzZmIx
YjE2YmUzNmZkZmJiYTkuLmM3YWM4OTRiMGYwNjViZTNmNGU2Y2VkNzkwMjg4YzZkYWY3NWMyN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29u
dGV4dDNEQ2hyb21pdW0uY3BwCkBAIC04NSwxMiArODUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUKIAotR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoV2ViS2l0OjpXZWJW
aWV3SW1wbCogd2ViVmlld0ltcGwsIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRD4gd2ViQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCitH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShQYXNzT3du
UHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQsIGJvb2wgcHJlc2Vy
dmVEcmF3aW5nQnVmZmVyKQogICAgIDogbV9pbXBsKHdlYkNvbnRleHQpCi0gICAgLCBtX3dlYlZp
ZXdJbXBsKHdlYlZpZXdJbXBsKQogICAgICwgbV9pbml0aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lv
bnMoZmFsc2UpCiAgICAgLCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkKLSAgICAsIG1fcHJlc2Vy
dmVEcmF3aW5nQnVmZmVyKGF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAsIG1fcHJl
c2VydmVEcmF3aW5nQnVmZmVyKHByZXNlcnZlRHJhd2luZ0J1ZmZlcikKICAgICAsIG1fcmVzb3Vy
Y2VTYWZldHkoUmVzb3VyY2VTYWZldHlVbmtub3duKQogI2lmIFVTRShTS0lBKQogICAgICwgbV9n
ckNvbnRleHQoMCkKQEAgLTExMiw1OSArMTExLDE5IEBAIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCiAjZW5kaWYKIH0KIAotCi1QYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGUoV2ViS2l0OjpXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwsIFBhc3NPd25QdHI8V2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnMpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGUod2ViVmlld0ltcGwsIHdlYkNvbnRleHQsIGF0dHJzKSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEPiB3ZWJDb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
cywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxl
IHJlbmRlclN0eWxlLCBUaHJlYWRVc2FnZSB0aHJlYWRVc2FnZSkKK1Bhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0RnJvbVdlYkNvbnRleHQoUGFzc093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
PiB3ZWJDb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUs
IGJvb2wgcHJlc2VydmVEcmF3aW5nQnVmZmVyKQogewotICAgIENocm9tZSogY2hyb21lID0gc3Rh
dGljX2Nhc3Q8Q2hyb21lKj4oaG9zdFdpbmRvdyk7Ci0gICAgV2ViS2l0OjpXZWJWaWV3SW1wbCog
d2ViVmlld0ltcGwgPSBjaHJvbWUgPyBzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlZpZXdJbXBsKj4o
Y2hyb21lLT5jbGllbnQoKS0+d2ViVmlldygpKSA6IDA7CisgICAgYm9vbCByZW5kZXJEaXJlY3Rs
eVRvSG9zdFdpbmRvdyA9IHJlbmRlclN0eWxlID09IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJE
aXJlY3RseVRvSG9zdFdpbmRvdzsKIAotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU+IHByaXYgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZSh3ZWJWaWV3SW1wbCwg
d2ViQ29udGV4dCwgYXR0cnMpOwotICAgIGlmICghcHJpdikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBo
aWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKCksIDAsIHJlbmRlckRp
cmVjdGx5VG9Ib3N0V2luZG93KSk7CiAKLSAgICBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2lu
ZG93ID0gcmVuZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93OwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gcmVzdWx0ID0gYWRvcHRS
ZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJEaXJlY3Rs
eVRvSG9zdFdpbmRvdykpOwotICAgIHJlc3VsdC0+bV9wcml2YXRlID0gcHJpdi5yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZT4gcHJpdiA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUo
d2ViQ29udGV4dCwgcHJlc2VydmVEcmF3aW5nQnVmZmVyKSk7CisgICAgY29udGV4dC0+bV9wcml2
YXRlID0gcHJpdi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwogfQog
CiBuYW1lc3BhY2UgewogCi1QYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFw
aGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpUaHJlYWRVc2FnZSB0aHJlYWRVc2FnZSkKLXsK
LSAgICBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93ID0gcmVuZGVyU3R5bGUgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OwotCi0gICAgV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyB3ZWJBdHRyaWJ1dGVzOwotICAgIHdl
YkF0dHJpYnV0ZXMuYWxwaGEgPSBhdHRycy5hbHBoYTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmRlcHRo
ID0gYXR0cnMuZGVwdGg7Ci0gICAgd2ViQXR0cmlidXRlcy5zdGVuY2lsID0gYXR0cnMuc3RlbmNp
bDsKLSAgICB3ZWJBdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGF0dHJzLmFudGlhbGlhczsKLSAgICB3
ZWJBdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9IGF0dHJzLnByZW11bHRpcGxpZWRBbHBo
YTsKLSAgICB3ZWJBdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3MgPSBhdHRycy5j
YW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzOwotICAgIHdlYkF0dHJpYnV0ZXMubm9FeHRlbnNpb25z
ID0gYXR0cnMubm9FeHRlbnNpb25zOwotICAgIHdlYkF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMg
PSBhdHRycy5zaGFyZVJlc291cmNlczsKLSAgICB3ZWJBdHRyaWJ1dGVzLmZvclVzZU9uQW5vdGhl
clRocmVhZCA9IHRocmVhZFVzYWdlID09IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNl
T25Bbm90aGVyVGhyZWFkOwotCi0gICAgQ2hyb21lKiBjaHJvbWUgPSBzdGF0aWNfY2FzdDxDaHJv
bWUqPihob3N0V2luZG93KTsKLSAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9
IGNocm9tZSA/IHN0YXRpY19jYXN0PFdlYktpdDo6V2ViVmlld0ltcGwqPihjaHJvbWUtPmNsaWVu
dCgpLT53ZWJWaWV3KCkpIDogMDsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRD4gd2ViQ29udGV4dDsKLSAgICBpZiAoIXdlYlZpZXdJbXBsIHx8ICF3ZWJWaWV3SW1wbC0+
Y2xpZW50KCkpIHsKLSAgICAgICAgaWYgKHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KQotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHdlYkNvbnRleHQgPSBhZG9wdFB0cihXZWJLaXQ6
OndlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVPZmZzY3JlZW5HcmFwaGljc0NvbnRleHQz
RCh3ZWJBdHRyaWJ1dGVzKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHdlYkNvbnRleHQgPSBhZG9w
dFB0cih3ZWJWaWV3SW1wbC0+Y2xpZW50KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKHdlYkF0
dHJpYnV0ZXMsIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KSk7Ci0gICAgaWYgKCF3ZWJDb250
ZXh0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVs
ZWFzZSgpLCBhdHRycywgaG9zdFdpbmRvdywgcmVuZGVyU3R5bGUsIHRocmVhZFVzYWdlKTsKLX0K
LQogdm9pZCBnZXREcmF3aW5nUGFyYW1ldGVycyhEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVy
LCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQzRCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCogZnJhbWVCdWZmZXJJZCwgaW50
KiB3aWR0aCwgaW50KiBoZWlnaHQpCiB7CkBAIC0xODEsMTEgKzE0MCw2IEBAIHZvaWQgZ2V0RHJh
d2luZ1BhcmFtZXRlcnMoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlciwgV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRlCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1QYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEZvckFub3RoZXJUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0
cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHls
ZSByZW5kZXJTdHlsZSkKLXsKLSAgICByZXR1cm4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGF0dHJz
LCBob3N0V2luZG93LCByZW5kZXJTdHlsZSwgRm9yVXNlT25Bbm90aGVyVGhyZWFkKTsKLX0KLQog
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpl
eHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7
CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMjAwLDggKzE1NCw2IEBAIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDNEKCkKIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRm
b3JtVGV4dHVyZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fd2ViVmlld0ltcGwpOwotICAgIG1f
aW1wbC0+c2V0UGFyZW50Q29udGV4dChtX3dlYlZpZXdJbXBsLT5ncmFwaGljc0NvbnRleHQzRCgp
KTsKICAgICByZXR1cm4gbV9pbXBsLT5nZXRQbGF0Zm9ybVRleHR1cmVJZCgpOwogfQogCkBAIC0x
MDMxLDkgKzk4MywyNSBAQCBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkK
ICAgICBtX3ByaXZhdGUtPnNldEdwdU1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tDSFJP
TUlVTShudWxscHRyKTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJl
bmRlclN0eWxlKQorUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRv
dyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKIHsKLSAgICBy
ZXR1cm4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGF0dHJzLCBob3N0V2luZG93LCByZW5kZXJTdHls
ZSwgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOworICAgIEFT
U0VSVChyZW5kZXJTdHlsZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpOworCisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyB3ZWJBdHRyaWJ1dGVzOworICAgIHdlYkF0dHJpYnV0ZXMuYWxwaGEgPSBhdHRycy5hbHBoYTsK
KyAgICB3ZWJBdHRyaWJ1dGVzLmRlcHRoID0gYXR0cnMuZGVwdGg7CisgICAgd2ViQXR0cmlidXRl
cy5zdGVuY2lsID0gYXR0cnMuc3RlbmNpbDsKKyAgICB3ZWJBdHRyaWJ1dGVzLmFudGlhbGlhcyA9
IGF0dHJzLmFudGlhbGlhczsKKyAgICB3ZWJBdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9
IGF0dHJzLnByZW11bHRpcGxpZWRBbHBoYTsKKyAgICB3ZWJBdHRyaWJ1dGVzLmNhblJlY292ZXJG
cm9tQ29udGV4dExvc3MgPSBhdHRycy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzOworICAgIHdl
YkF0dHJpYnV0ZXMubm9FeHRlbnNpb25zID0gYXR0cnMubm9FeHRlbnNpb25zOworICAgIHdlYkF0
dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMgPSBhdHRycy5zaGFyZVJlc291cmNlczsKKworICAgIE93
blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQdHIo
V2ViS2l0Ojp3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlT2Zmc2NyZWVuR3JhcGhpY3ND
b250ZXh0M0Qod2ViQXR0cmlidXRlcykpOworICAgIGlmICghd2ViQ29udGV4dCkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVhc2UoKSwgcmVuZGVy
U3R5bGUsIGF0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7CiB9CiAKIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaAppbmRleCBmMDhiYTU4ZWU2MzBkYTJmMTUxMDFhNGJmZjg1NTVlMTRi
MGU5MmE1Li5kMjk2ZWViOWI4ZTQ5OWI3NzY0YjQxMzk5NGUxNGQwNTE5MDlkMjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaApAQCAtNDEsOCArNDEsNyBAQCBjbGFzcyBHckNvbnRleHQ7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBXZWJWaWV3SW1wbDsKLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAorfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDIy
ICs1NCwxMCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRE1lbW9yeUFsbG9jYXRpb25DaGFuZ2Vk
Q2FsbGJhY2tBZGFwdGVyOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gY3Jl
YXRlKFdlYktpdDo6V2ViVmlld0ltcGwqLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7Ci0KLSAgICBlbnVtIFRo
cmVhZFVzYWdlIHsKLSAgICAgICAgRm9yVXNlT25UaGlzVGhyZWFkLAotICAgICAgICBGb3JVc2VP
bkFub3RoZXJUaHJlYWQsCi0gICAgfTsKLQotICAgIC8vIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEZv
ckFub3RoZXJUaHJlYWQgaXMgZXF1aXZhbGVudCB0bwotICAgIC8vIEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUsIGJ1dCB3aWxsIHNraXAgbWFraW5nIHRoZSBjb250ZXh0Ci0gICAgLy8gY3VycmVu
dC4gQ2FsbGVycyBtdXN0IG1ha2UgdGhlIGNvbnRleHQgY3VycmVudCBiZWZvcmUgdXNpbmcgaXQg
QU5EIGNoZWNrCi0gICAgLy8gdGhhdCB0aGUgY29udGV4dCB3YXMgY3JlYXRlZCBzdWNjZXNzZnVs
bHkgdmlhIENvbnRleHRMb3N0LiBPbmNlIG1hZGUKLSAgICAvLyBjdXJyZW50IG9uIGEgdGhyZWFk
LCB0aGUgY29udGV4dCBjYW5ub3QgYmUgdXNlZCBvbiBhbnkgb3RoZXIgdGhyZWFkLgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVHcmFwaGljc0NvbnRleHRG
b3JBbm90aGVyVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzLCBIb3N0V2luZG93
KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKLQotICAgIC8vIFVzZWQgaW4gdGVz
dHMgdG8gY3JlYXRlIGEgR3JhcGhpY3NDb250ZXh0M0QgZnJvbSBhIG1vY2tlZCBXZWJHcmFwaGlj
c0NvbnRleHQzRC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3Jl
YXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoUGFzc093blB0cjxXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUsIFRocmVhZFVzYWdlKTsKKyAgICAv
LyBDYWxsZXJzIG11c3QgbWFrZSB0aGUgY29udGV4dCBjdXJyZW50IGJlZm9yZSB1c2luZyBpdCBB
TkQgY2hlY2sgdGhhdCB0aGUgY29udGV4dCB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkKKyAgICAv
LyB2aWEgQ29udGV4dExvc3QgYmVmb3JlIHVzaW5nIHRoZSBjb250ZXh0IGluIGFueSB3YXkuIE9u
Y2UgbWFkZSBjdXJyZW50IG9uIGEgdGhyZWFkLCB0aGUgY29udGV4dCBjYW5ub3QKKyAgICAvLyBi
ZSB1c2VkIG9uIGFueSBvdGhlciB0aHJlYWQuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJTdHlsZSwgYm9vbCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSBmYWxzZSk7CiAKICAgICB+R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CiAKQEAgLTMyMSw3ICszMDgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB0ZXhTdG9yYWdlMkRFWFQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVscywg
R0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgd2lkdGgsIEdDM0RpbnQgaGVpZ2h0KTsK
IAogcHJpdmF0ZToKLSAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoV2ViS2l0OjpXZWJWaWV3
SW1wbCosIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4sIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoUGFz
c093blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiwgYm9vbCBwcmVzZXJ2ZURyYXdp
bmdCdWZmZXIpOwogCiAgICAgT3duUHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IG1f
aW1wbDsKICAgICBPd25QdHI8RXh0ZW5zaW9uczNEQ2hyb21pdW0+IG1fZXh0ZW5zaW9uczsKQEAg
LTMyOSw3ICszMTYsNiBAQCBwcml2YXRlOgogICAgIE93blB0cjxHcmFwaGljc0Vycm9yTWVzc2Fn
ZUNhbGxiYWNrQWRhcHRlcj4gbV9lcnJvck1lc3NhZ2VDYWxsYmFja0FkYXB0ZXI7CiAgICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dDNEU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQWRhcHRlcj4g
bV9zd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tBZGFwdGVyOwogICAgIE93blB0cjxHcmFwaGlj
c0NvbnRleHQzRE1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyPiBtX21lbW9y
eUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tBZGFwdGVyOwotICAgIFdlYktpdDo6V2ViVmlld0lt
cGwqIG1fd2ViVmlld0ltcGw7CiAgICAgYm9vbCBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5z
aW9uczsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9lbmFibGVkRXh0ZW5zaW9uczsKICAgICBIYXNo
U2V0PFN0cmluZz4gbV9yZXF1ZXN0YWJsZUV4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKaW5kZXggOTgxNDc3MTE4
OWJmNjlkN2M4ZDUzNDg3YzI0OWFmMjBjMTA5ZDNkMS4uMjlkMDMzMjE1MzBiNjkyMTNhZGYxNTFm
MGE1MGE4YzhhMDc1ZDIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAtODYsMjEgKzg2LDcgQEAgUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhv
c3RDb250ZXh0M0QKICAgICBpZiAoIXdlYkNvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgd2ViQXR0cmlidXRlcyA9IHdlYkNv
bnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cmlidXRlczsKLSAgICBhdHRyaWJ1dGVzLmFscGhhID0gd2ViQXR0cmlidXRl
cy5hbHBoYTsKLSAgICBhdHRyaWJ1dGVzLmRlcHRoID0gd2ViQXR0cmlidXRlcy5kZXB0aDsKLSAg
ICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSB3ZWJBdHRyaWJ1dGVzLnN0ZW5jaWw7Ci0gICAgYXR0cmli
dXRlcy5hbnRpYWxpYXMgPSB3ZWJBdHRyaWJ1dGVzLmFudGlhbGlhczsKLSAgICBhdHRyaWJ1dGVz
LnByZW11bHRpcGxpZWRBbHBoYSA9IHdlYkF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhOwot
ICAgIGF0dHJpYnV0ZXMuY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyA9IHdlYkF0dHJpYnV0ZXMu
Y2FuUmVjb3ZlckZyb21Db250ZXh0TG9zczsKLSAgICBhdHRyaWJ1dGVzLm5vRXh0ZW5zaW9ucyA9
IHdlYkF0dHJpYnV0ZXMubm9FeHRlbnNpb25zOwotICAgIGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJj
ZXMgPSB3ZWJBdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzOwotICAgIGF0dHJpYnV0ZXMucHJlc2Vy
dmVEcmF3aW5nQnVmZmVyID0gZmFsc2U7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
U3R5bGUgc3R5bGUgPSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3c7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpUaHJlYWRVc2FnZSB1c2FnZSA9IEND
UHJveHk6Omhhc0ltcGxUaHJlYWQoKSA/IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNl
T25Bbm90aGVyVGhyZWFkIDogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNU
aHJlYWQ7Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIGF0dHJpYnV0ZXMs
IDAsIHN0eWxlLCB1c2FnZSk7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCks
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UgLyog
cHJlc2VydmVEcmF3aW5nQnVmZmVyICovICk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmRpZENvbW1pdEFuZERyYXdGcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggOWM1MTRiYTAxNWRlNjgzOWVjYWU3N2ZmZjg2NTE3YzMxOTE1
NzZmZC4uMzlhYTg3NzMxNzU4YTA5NWU3Y2NhZmNlOWI4ZjhhM2QwOWIyNzNjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSB7CiAKLUdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmlidXRlcygpCitXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGdldENvbXBvc2l0b3JDb250ZXh0QXR0cmli
dXRlcyhib29sIHRocmVhZGVkKQogewogICAgIC8vIEV4cGxpY2l0bHkgZGlzYWJsZSBhbnRpYWxp
YXNpbmcgZm9yIHRoZSBjb21wb3NpdG9yLiBBcyBvZiB0aGUgdGltZSBvZgogICAgIC8vIHRoaXMg
d3JpdGluZywgdGhlIG9ubHkgcGxhdGZvcm0gdGhhdCBzdXBwb3J0ZWQgYW50aWFsaWFzaW5nIGZv
ciB0aGUKQEAgLTE4Miw5ICsxODIsMTAgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
Z2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCkKICAgICAvLyBiZSBvcHRpbWl6ZWQgdG8g
cmVzb2x2ZSBkaXJlY3RseSBpbnRvIHRoZSBJT1N1cmZhY2Ugc2hhcmVkIGJldHdlZW4gdGhlCiAg
ICAgLy8gR1BVIGFuZCBicm93c2VyIHByb2Nlc3Nlcy4gRm9yIHRoZXNlIHJlYXNvbnMgYW5kIHRv
IGF2b2lkIHBsYXRmb3JtCiAgICAgLy8gZGlzcGFyaXRpZXMgd2UgZXhwbGljaXRseSBkaXNhYmxl
IGFudGlhbGlhc2luZy4KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1
dGVzOworICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmli
dXRlczsKICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMu
c2hhcmVSZXNvdXJjZXMgPSB0cnVlOworICAgIGF0dHJpYnV0ZXMuZm9yVXNlT25Bbm90aGVyVGhy
ZWFkID0gdGhyZWFkZWQ7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CiAKQEAgLTMyMDAsMTUg
KzMyMDEsMjUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKGJvb2wgYWN0aXZlKQogCiAjZW5kaWYKIAorUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0ZUNvbXBvc2l0b3JHcmFwaGljc0NvbnRleHQzRCgpCit7
CisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVz
ID0gZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKENDUHJveHk6Omhhc0ltcGxUaHJlYWQo
KSk7CisgICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQ
dHIoY2xpZW50KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dDNEKGF0dHJpYnV0ZXMsIHRydWUgLyog
cmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cgKi8pKTsKKyAgICBpZiAoIXdlYkNvbnRleHQpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCks
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7Cit9CisKIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVI
b3N0Q29udGV4dDNEKCkKIHsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQg
PSBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QucmVsZWFzZSgpOwotICAgIGlm
ICghY29udGV4dCkgewotICAgICAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQotICAg
ICAgICAgICAgY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0Rm9yQW5vdGhlclRocmVhZChnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMo
KSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUoZ2V0Q29tcG9zaXRvckNvbnRleHRBdHRyaWJ1dGVzKCksIG1fcGFn
ZS0+Y2hyb21lKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRv
dyk7Ci0gICAgfQorICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dDsKKworICAg
IC8vIElmIHdlJ3ZlIGFscmVhZHkgY3JlYXRlZCBhbiBvbnNjcmVlbiBjb250ZXh0IGZvciB0aGlz
IHZpZXcsIHJldHVybiB0aGF0LgorICAgIGlmIChtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3ND
b250ZXh0M0QpCisgICAgICAgIGNvbnRleHQgPSBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3ND
b250ZXh0M0QucmVsZWFzZSgpOworICAgIGVsc2UgLy8gT3RoZXJ3aXNlIG1ha2UgYSBuZXcgb25l
LgorICAgICAgICBjb250ZXh0ID0gY3JlYXRlQ29tcG9zaXRvckdyYXBoaWNzQ29udGV4dDNEKCk7
CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKQEAgLTMzMDEsMTcgKzMzMTIsMTYgQEAgV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIFdlYlZpZXdJbXBsOjpncmFwaGljc0NvbnRleHQzRCgpCiAgICAgICAg
ICAgICBpZiAod2ViQ29udGV4dCAmJiAhd2ViQ29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB3ZWJDb250ZXh0OwogICAgICAgICB9Ci0gICAgICAgIGlmICht
X3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QpIHsKLSAgICAgICAgICAgIFdlYkdy
YXBoaWNzQ29udGV4dDNEKiB3ZWJDb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpl
eHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29u
dGV4dDNELmdldCgpKTsKLSAgICAgICAgICAgIGlmICh3ZWJDb250ZXh0ICYmICF3ZWJDb250ZXh0
LT5pc0NvbnRleHRMb3N0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHdlYkNvbnRleHQ7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKLSAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRCA9IEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0Rm9yQW5vdGhlclRocmVhZChnZXRDb21w
b3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5jaHJvbWUoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEID0gR3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZShnZXRDb21wb3NpdG9yQ29udGV4dEF0dHJpYnV0ZXMoKSwgbV9wYWdlLT5j
aHJvbWUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsK
LQotICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3Jh
cGhpY3NDb250ZXh0M0QobV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNELmdldCgp
KTsKKyAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgaXQgbWVhbnMgdGhhdCBzb21lIHN5c3RlbSBu
ZWVkcyBhY2Nlc3MgdG8gdGhlIGNvbnRleHQgdGhlIGNvbXBvc2l0b3Igd2lsbCB1c2UgYnV0IHRo
ZSBjb21wb3NpdG9yIGl0c2VsZgorICAgICAgICAvLyBoYXNuJ3QgcmVxdWVzdGVkIGEgY29udGV4
dCBvciBpdCB3YXMgdW5hYmxlIHRvIHN1Y2Nlc3NmdWxseSBpbnN0YW50aWF0ZSBhIGNvbnRleHQu
CisgICAgICAgIC8vIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBjb250ZXh0IHRoYXQgdGhlIGNvbXBv
c2l0b3Igd2lsbCBsYXRlciB1c2Ugc28gd2UgYWxsb2NhdGUgYSBuZXcgY29udGV4dCAoaWYgbmVl
ZGVkKSBhbmQgc3Rhc2ggaXQKKyAgICAgICAgLy8gdW50aWwgdGhlIGNvbXBvc2l0b3IgcmVxdWVz
dHMgYW5kIHRha2VzIG93bmVyc2hpcCBvZiB0aGUgY29udGV4dCB2aWEgY3JlYXRlTGF5ZXJUcmVl
SG9zdDNEKCkuCisgICAgICAgIGlmICghbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4
dDNEKQorICAgICAgICAgICAgbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEID0g
Y3JlYXRlQ29tcG9zaXRvckdyYXBoaWNzQ29udGV4dDNEKCk7CisKKyAgICAgICAgV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIHdlYkNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJh
Y3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0
M0QuZ2V0KCkpOworICAgICAgICBpZiAod2ViQ29udGV4dCAmJiAhd2ViQ29udGV4dC0+aXNDb250
ZXh0TG9zdCgpKQorICAgICAgICAgICAgcmV0dXJuIHdlYkNvbnRleHQ7CiAgICAgfQogI2VuZGlm
CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApp
bmRleCBlOGQ1M2JiOTQ1ZTU3NWRiMGE3YjYyM2Q1NzJiN2VlMTE4YmZmNjlhLi44NGQ1MTQ5Mzky
Yjc4YzExNDFhMjc2ZWQyYzkyNzMzYzE2MGYwNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKQEAgLTQ0Niw5ICs0NDYsMTIgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybnMgdGhlIG9uc2NyZWVuIDNEIGNvbnRleHQgdXNlZCBieSB0aGUgY29tcG9zaXRvci4gVGhp
cyBpcwogICAgIC8vIHVzZWQgYnkgdGhlIHJlbmRlcmVyJ3MgY29kZSB0byBzZXQgdXAgcmVzb3Vy
Y2Ugc2hhcmluZyBiZXR3ZWVuCiAgICAgLy8gdGhlIGNvbXBvc2l0b3IncyBjb250ZXh0IGFuZCBz
dWJvcmRpbmF0ZSBjb250ZXh0cyBmb3IgQVBJcyBsaWtlCi0gICAgLy8gV2ViR0wuIFJldHVybnMg
MCBpZiBjb21wb3NpdGluZyBzdXBwb3J0IGlzIG5vdCBjb21waWxlZCBpbi4KKyAgICAvLyBXZWJH
TC4gUmV0dXJucyAwIGlmIGNvbXBvc2l0aW5nIHN1cHBvcnQgaXMgbm90IGNvbXBpbGVkIGluIG9y
CisgICAgLy8gd2UgY291bGQgbm90IHN1Y2Nlc3NmdWxseSBpbnN0YW50aWF0ZSBhIGNvbnRleHQu
CiAgICAgdmlydHVhbCBXZWJHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKTsK
IAorICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbXBv
c2l0b3JHcmFwaGljc0NvbnRleHQzRCgpOworCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2liaWxp
dHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsKIAogICAgIFdlYkNvcmU6OlBv
cHVwQ29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNWI3ZjUwMjdiMjFkZTUzMGExMDVkNTAzMmZh
M2VhM2QyZDVmNTM3NS4uZWVhZTcxZDQ0OGExNjNiZGVjNDBmYjRlYTUxNTJhMTUyMGQyYmI5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTkxLDYgKzkxLDExIEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
b3RlY3RlZDoKKyAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb250ZXh0
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0QoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdyk7CisgICAgfQorCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1fYWx3YXlzSW1w
bFRocmVhZDsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbV9ob3N0SW1wbDsKICAg
ICBib29sIG1fZGlkUmVxdWVzdENvbW1pdDsKQEAgLTMzMyw4ICszMzgsNyBAQCBwcml2YXRlOgog
CiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdOb3RDYWxsZWRPbkhpZGRl
bkxheWVyKQogewotR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgRmFrZVdl
YkdyYXBoaWNzQ29udGV4dDNEKCkpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
ckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9u
VGhpc1RocmVhZCk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gY3Jl
YXRlQ29udGV4dCgpOwogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNv
bnRleHQpOwogCiAgICAgLy8gRW5zdXJlIHZpc2libGVMYXllclJlY3QgZm9yIHJvb3QgbGF5ZXIg
aXMgZW1wdHkKQEAgLTM2OSw4ICszNzMsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyczsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Q2FsbGVk
T25BbGxMYXllcnMpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7
Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihu
ZXcgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEKCkpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OkZvclVzZU9uVGhpc1RocmVhZCk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gY3JlYXRlQ29udGV4dCgpOwogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNvbnRleHQpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDEwLCAxMCkpOwogCkBAIC00NzEsOCArNDc0LDcgQEAgcHJpdmF0ZToKIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc4MwogVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogewotICAgIEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVUcmFja2VyQ29u
dGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOwor
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTsK
ICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKICAgICBt
X2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKIApAQCAtNjM4LDkg
KzY0MCw4IEBAIHB1YmxpYzoKIC8vIHZpZXdwb3J0IHNpemUgaXMgbmV2ZXIgc2V0LgogVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3KQogewot
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwogICAgIFJlc2hhcGVUcmFj
a2VyQ29udGV4dCogcmVzaGFwZVRyYWNrZXIgPSBuZXcgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCk7
Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihy
ZXNoYXBlVHJhY2tlciksIGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhy
ZWFkKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0
UHRyKHJlc2hhcGVUcmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KTsKICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250
ZXh0KTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsK
IApAQCAtNjgyLDkgKzY4Myw4IEBAIHByaXZhdGU6CiAvLyB3aGVyZSBpdCBzaG91bGQgcmVxdWVz
dCB0byBzd2FwIG9ubHkgdGhlIHN1YkJ1ZmZlciB0aGF0IGlzIGRhbWFnZWQuCiBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1hZ2VSZWN0KQogewot
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwogICAgIFBhcnRpYWxTd2Fw
VHJhY2tlckNvbnRleHQqIHBhcnRpYWxTd2FwVHJhY2tlciA9IG5ldyBQYXJ0aWFsU3dhcFRyYWNr
ZXJDb250ZXh0KCk7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4
dChhZG9wdFB0cihwYXJ0aWFsU3dhcFRyYWNrZXIpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OkZvclVzZU9uVGhpc1RocmVhZCk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9t
V2ViQ29udGV4dChhZG9wdFB0cihwYXJ0aWFsU3dhcFRyYWNrZXIpLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogCiAgICAgLy8gVGhpcyB0ZXN0IGNyZWF0
ZXMgaXRzIG93biBDQ0xheWVyVHJlZUhvc3RJbXBsLCBzbwogICAgIC8vIHRoYXQgd2UgY2FuIGZv
cmNlIHBhcnRpYWwgc3dhcCBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggODI2MDk4OWE1NGJmMDViMDQw
MzMwYWMzZDQ5NDM4MjQ3NzNmOWZlYy4uMTJkNzE0MTkzODUyZTFkNTc5NDlkYWI1MTJiNDVhYTI0
NjgzNjk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yNDYsMTAgKzI0Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
d2ViQXR0cnMuYWxwaGEgPSBhdHRycy5hbHBoYTsKIAogICAgICAgICBPd25QdHI8V2ViR3JhcGhp
Y3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEV2l0aFRleHR1cmVUcmFja2luZzo6Y3JlYXRlKHdlYkF0dHJzKTsKLSAgICAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNv
bnRleHQoCi0gICAgICAgICAgICB3ZWJDb250ZXh0LnJlbGVhc2UoKSwgYXR0cnMsIDAsCi0gICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csCi0g
ICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVh
ZCk7CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXgg
NGIzZGQyN2QzMWQ4ODIxMDRjNzBjZmZmNTAyNGZiODA0NDdlYTE0MS4uZWMwY2UwYzZhYmNhMTI0
ZmU5YjJhZTk3OWMzMDQ4YTBkMjJjZTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC03OSw4
ICs3OSw4IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIGF0dHJzOwogCi0gICAgICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbWFp
bkNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4dCgpKSwgYXR0cnMs
IDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOwotICAgICAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGltcGxDb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0Nh
bnZhc0NvbnRleHQoKSksIGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0
bHlUb0hvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhy
ZWFkKTsKKyAgICAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4dCA9IEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRl
eHQoYWRvcHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOworICAgICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IGltcGxDb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgTW9ja0NhbnZhc0NvbnRleHQo
KSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiAKICAg
ICAgICAgTW9ja0NhbnZhc0NvbnRleHQmIG1haW5Nb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52
YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3ND
b250ZXh0M0QobWFpbkNvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQm
IGltcGxNb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbENvbnRleHQuZ2V0
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ29tcG9zaXRv
ckZha2VHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
b21wb3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggMWYwODk3MzQxMzNkNzM4MGJi
ZmM3YWY4NDUyMTgzNDhmYWQzNTlhOC4uOTM3YjYyZDRjNzYyZmFiZmFjODU5MTE2NTZlMWMwODM2
OTA4ODk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db21wb3Np
dG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Db21wb3NpdG9yRmFrZUdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTM3LDEwICszNyw3IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVDb21wb3NpdG9yTW9j
a0dyYXBoaWNzQ29udGV4dDNEKEdyYXBoCiAgICAgd2ViQXR0cnMuYWxwaGEgPSBhdHRycy5hbHBo
YTsKIAogICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0
ID0gV2ViS2l0OjpDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUod2Vi
QXR0cnMpOwotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dEZyb21XZWJDb250ZXh0KAotICAgICAgICB3ZWJDb250ZXh0LnJlbGVhc2UoKSwg
YXR0cnMsIDAsCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9z
dFdpbmRvdywKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPbkFub3Ro
ZXJUaHJlYWQpOworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlR3JhcGhpY3NDb250ZXh0
M0RUZXN0LmNwcAppbmRleCAyYjc2YjgwYWQzMGIwYzg1NTRjZGIxYzM0ZTZlY2I2Y2FlN2U2YzI3
Li43MWNiOGJhYjFlZDg4YzVlZDc0MGY4YTBhOTQ5NzlhMDkzMjJlN2VkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUdyYXBoaWNzQ29udGV4dDNE
VGVzdC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIFRFU1QoRmFrZUdyYXBoaWNzQ29u
dGV4dDNEVGVzdCwgQ2FuT3ZlcnJpZGVNYW51YWxseSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRyczsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21X
ZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nQ29udGV4dCgpKSwgYXR0cnMsIDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOworICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdDb250
ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpOwog
ICAgIEZyYW1lQ291bnRpbmdDb250ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxGcmFt
ZUNvdW50aW5nQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdy
YXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMTA7IGkrKykgewpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiBURVNUKEZha2VHcmFwaGlj
c0NvbnRleHQzRFRlc3QsIENhblVzZUdNb2NrKQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNv
bnRleHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IEdNb2NrQ29udGV4dCgpKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsKICAgICBHTW9ja0NvbnRleHQmIG1v
Y2tDb250ZXh0ID0gKnN0YXRpY19jYXN0PEdNb2NrQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGNvbnRleHQuZ2V0KCkpKTsKIAog
ICAgIEVYUEVDVF9DQUxMKG1vY2tDb250ZXh0LCBnZXRFcnJvcigpKQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHByaXZhdGU6CiBURVNUKEZha2VHcmFwaGljc0NvbnRleHQzRFRlc3QsIENvbnRleHRGb3JU
aGlzVGhyZWFkU2hvdWxkTm90TWFrZUN1cnJlbnQpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0
ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2Vi
Q29udGV4dChhZG9wdFB0cihuZXcgQ29udGV4dFRoYXRDb3VudHNNYWtlQ3VycmVudHMoKSksIGF0
dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkKTsKKyAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBDb250ZXh0VGhh
dENvdW50c01ha2VDdXJyZW50cygpKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5
VG9Ib3N0V2luZG93KTsKICAgICBFWFBFQ1RfVFJVRShjb250ZXh0KTsKICAgICBDb250ZXh0VGhh
dENvdW50c01ha2VDdXJyZW50cyYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8Q29udGV4dFRo
YXRDb3VudHNNYWtlQ3VycmVudHMqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RX
ZWJHcmFwaGljc0NvbnRleHQzRChjb250ZXh0LmdldCgpKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1v
Y2tDb250ZXh0Lm1ha2VDdXJyZW50Q291bnQoKSk7CkBAIC0xMTMsNyArMTEzLDcgQEAgVEVTVChG
YWtlR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDb250ZXh0Rm9yVGhpc1RocmVhZFNob3VsZE5vdE1h
a2VDdXJyZW50KQogVEVTVChGYWtlR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDb250ZXh0Rm9yQW5v
dGhlclRocmVhZFNob3VsZE5vdE1ha2VDdXJyZW50KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdl
YkNvbnRleHQoYWRvcHRQdHIobmV3IENvbnRleHRUaGF0Q291bnRzTWFrZUN1cnJlbnRzKCkpLCBh
dHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCk7CisgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgQ29udGV4
dFRoYXRDb3VudHNNYWtlQ3VycmVudHMoKSksIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJl
Y3RseVRvSG9zdFdpbmRvdyk7CiAgICAgRVhQRUNUX1RSVUUoY29udGV4dCk7CiAgICAgQ29udGV4
dFRoYXRDb3VudHNNYWtlQ3VycmVudHMmIG1vY2tDb250ZXh0ID0gKnN0YXRpY19jYXN0PENvbnRl
eHRUaGF0Q291bnRzTWFrZUN1cnJlbnRzKj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRy
YWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoY29udGV4dC5nZXQoKSkpOwogICAgIEVYUEVDVF9FUSgw
LCBtb2NrQ29udGV4dC5tYWtlQ3VycmVudENvdW50KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>