<?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>91793</bug_id>
          
          <creation_ts>2012-07-19 15:44:07 -0700</creation_ts>
          <short_desc>[chromium] Use CCGraphicsContext in LayerRenderChromium</short_desc>
          <delta_ts>2012-07-27 01:15:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90325</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Anderson">brianderson</reporter>
          <assigned_to name="Brian Anderson">brianderson</assigned_to>
          <cc>enne</cc>
    
    <cc>nduca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>673998</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-07-19 15:44:07 -0700</bug_when>
    <thetext>[chromium] Use CCGraphicsContext in LayerRenderChromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674002</commentid>
    <comment_count>1</comment_count>
      <attachid>153365</attachid>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-07-19 15:47:35 -0700</bug_when>
    <thetext>Created attachment 153365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674152</commentid>
    <comment_count>2</comment_count>
      <attachid>153365</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-19 21:42:05 -0700</bug_when>
    <thetext>Comment on attachment 153365
Patch

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

Any idea why the patch isn&apos;t applying cleanly? LGTM with nits, @enne for review.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:136
&gt; +PassOwnPtr&lt;LayerRendererChromium&gt; LayerRendererChromium::create(CCRendererClient* client, WebCore::CCGraphicsContext* context, TextureUploaderOption textureUploaderSetting)

Why does this got the webcore namespace on it?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1442
&gt;  bool LayerRendererChromium::makeContextCurrent()

/me wonders out loud why we have this function in the first place? Does anyone call it aside from the first time?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1444
&gt; +    // We call CCGraphcisContext&apos;s makeContextCurrent so it can lazily initialize.

Not sure this comment adds value.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCGraphicsContext.h:54
&gt; +            lazyInitialize();

I&apos;d leave this part out. E.g. pass directly through to
 m_context3D-&gt;makeContextCurrent();

The patch to lazyInit can be in your other patch.

Also, I&apos;d say initializeIfNeeded() and use an m_initialized to ensure that makeContextCurrent will only happen once. The makeCurrent code returns true even if you call it twice in a row, i think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674653</commentid>
    <comment_count>3</comment_count>
      <attachid>153365</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-20 09:49:28 -0700</bug_when>
    <thetext>Comment on attachment 153365
Patch

I don&apos;t have anything to add over Nat&apos;s comments.  Fix those, get this applying and green on the EWS bots, and I&apos;ll take a final look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674872</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-07-20 12:51:10 -0700</bug_when>
    <thetext>Looks like https://bugs.webkit.org/show_bug.cgi?id=91044 just went in, which resulted in a lot of conflicts.  Will rebase and address comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675011</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Anderson">brianderson</who>
    <bug_when>2012-07-20 15:12:40 -0700</bug_when>
    <thetext>Turns out the patch for bug 91044 completely invalidates the need for this patch.  Closing.  A simpler shallowFlush patch will be coming through shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680273</commentid>
    <comment_count>6</comment_count>
      <attachid>153365</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:15:51 -0700</bug_when>
    <thetext>Comment on attachment 153365
Patch

Cleared review? from attachment 153365 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153365</attachid>
            <date>2012-07-19 15:47:35 -0700</date>
            <delta_ts>2012-07-27 01:15:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91793-20120719154735.patch</filename>
            <type>text/plain</type>
            <size>63180</size>
            <attacher name="Brian Anderson">brianderson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFlNTY0YmNkOTA3YWJj
YWM4MDUxZTIzZGYwZjE4M2ZjYzBmYWJmMS4uMTNlYmEwOTVjZDhlYzNlODkzMDRhOTNmNDExMWEx
MmQyOWM1MDE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTA3LTE5ICBCcmlh
biBBbmRlcnNvbiAgPGJyaWFuZGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIFVzZSBDQ0dyYXBoaWNzQ29udGV4dCBpbiBMYXllclJlbmRlckNocm9taXVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTc5MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSByZWZhY3Rv
cmluZyBwYXRjaCB0aGF0IGRvZXNuJ3QgY2hhbmdlIGFueSBmdW5jdGlvbmFsaXR5CisgICAgICAg
IGJ1dCB3aWxsIGVuYWJsZSBmdXR1cmUgcGF0Y2hlcyB0aGF0IG5lZWQgYWNjZXNzIHRvIHRoZSBD
Q0dyYXBoaWNzQ29udGV4dAorICAgICAgICBmcm9tIExheWVyUmVuZGVyQ2hyb21pdW0uCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGFyZSByZXF1aXJlZC4gRXhpc3RpbmcgdGVzdHMgaGF2ZSBiZWVu
IHVwZGF0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpM
YXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6fkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Y2xlYXJSZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkb05vT3ApOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdUZXh0dXJlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06Om9uTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRPbkltcGxUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkaXNjYXJkRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjplbnN1cmVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06Omdl
dEZyYW1lYnVmZmVyUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3RnJhbWVidWZmZXJS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6
ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnNvbGlkQ29sb3JQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6aGVhZHNVcERpc3BsYXlQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbUFBKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFz
c01hc2tQcm9ncmFtQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0aWxlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OnRpbGVQcm9ncmFtT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dGlsZVByb2dyYW1BQSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9ncmFtU3dpenpsZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZUFBKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlUHJvZ3JhbUZsaXApOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlSU9TdXJmYWNl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVv
WVVWUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnZp
ZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmlzQ29udGV4dExvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRl
eHQ6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChDQ0dyYXBoaWNzQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6bGF6eUluaXRpYWxpemUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIpOgorCiAyMDEyLTA3LTE4ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IHVwIG9sZCBuYW1lIGluIFJ1bGVTZXQ6OmFkZFJ1
bGVzRnJvbVNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRmYjc2ZDk0NzdjYmNl
MDkxYWZiM2RjYzQ5NzI4YmEyMjcyMzk3OTYuLjY0OTE4NmU1Njg4NTcxMTMzOWY4NTM0Y2NkY2M3
NWI2YzRlMzA4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTItMDctMTkgIEJyaWFuIEFuZGVyc29uICA8YnJpYW5kZXJzb25AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gVXNlIENDR3JhcGhpY3NDb250ZXh0IGluIExheWVyUmVuZGVy
Q2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBpcyBhIHJlZmFjdG9yaW5nIHBhdGNoIHRoYXQgZG9lc24ndCBjaGFuZ2UgYW55IGZ1bmN0
aW9uYWxpdHkKKyAgICAgICAgYnV0IHdpbGwgZW5hYmxlIGZ1dHVyZSBwYXRjaGVzIHRoYXQgbmVl
ZCBhY2Nlc3MgdG8gdGhlIENDR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGZyb20gTGF5ZXJSZW5k
ZXJDaHJvbWl1bS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIHJlcXVpcmVkLiBFeGlzdGlu
ZyB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZC4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAg
ICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtOjpGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVt
KToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Q6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCk6CisgICAgICAg
IChURVNUX0YpOgorICAgICAgICAoVEVTVCk6CisKIDIwMTItMDctMTggIFRvbnkgQ2hhbmcgIDx0
b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQsIG1vcmUg
Y29tcGlsZSBmaXhlcyBvbiBDaHJvbWl1bSBXaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAppbmRleCBhNzI2NzQxNDBlYWM0MDdhMjcyYjVmNGJkYWQ2NjE1ZTU0YmE1NDFh
Li41ODliZDU2ZmQ4NTM3MWVkZWFlNjQ4Y2JiMWM4ODMwMjY3NzM0ZWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcm90ZWN0ZWQ6
CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1QYXNzT3duUHRyPExheWVyUmVuZGVyZXJD
aHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCog
Y2xpZW50LCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0
aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xp
ZW50LCBXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZVVwbG9hZGVy
T3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7CiAgICAgT3duUHRyPExheWVyUmVuZGVy
ZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJSZW5kZXJlckNocm9t
aXVtKGNsaWVudCwgY29udGV4dCwgdGV4dHVyZVVwbG9hZGVyU2V0dGluZykpKTsKICAgICBpZiAo
IWxheWVyUmVuZGVyZXItPmluaXRpYWxpemUoKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBQYXNzT3du
UHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUo
Q0NSZW5kZXJlckNsaWVudAogfQogCiBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRp
bmcpCiAgICAgOiBDQ1JlbmRlcmVyKGNsaWVudCkKICAgICAsIG1fY3VycmVudFJlbmRlclBhc3Mo
MCkKQEAgLTE1MSw2ICsxNTEsNyBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsCiAgICAgLCBtX29mZnNjcmVlbkZy
YW1lYnVmZmVySWQoMCkKICAgICAsIG1fc2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41
ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBt
X2NvbnRleHQzRChjb250ZXh0LT5jb250ZXh0M0QoKSkKICAgICAsIG1fZGVmYXVsdFJlbmRlclBh
c3MoMCkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2lzRnJhbWVi
dWZmZXJEaXNjYXJkZWQoZmFsc2UpCkBAIC0xNTgsMTcgKzE1OSwxNyBAQCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQs
CiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVwbG9hZGVyU2V0dGluZyh0
ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogewotICAgIEFTU0VSVChtX2NvbnRleHQpOworICAgIEFT
U0VSVChtX2NvbnRleHQzRCk7CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0
aWFsaXplKCkKIHsKLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKHRoaXMpOworICAgIG1fY29udGV4
dDNELT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKHRoaXMpOwogCi0gICAgU3RyaW5nIGV4dGVuc2lv
bnNTdHJpbmcgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHQzRDo6RVhURU5T
SU9OUyk7CisgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBtX2NvbnRleHQzRC0+Z2V0U3Ry
aW5nKEdyYXBoaWNzQ29udGV4dDNEOjpFWFRFTlNJT05TKTsKICAgICBWZWN0b3I8U3RyaW5nPiBl
eHRlbnNpb25zTGlzdDsKICAgICBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJywgZXh0ZW5zaW9u
c0xpc3QpOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHRlbnNpb25zOwpAQCAtMTkyLDcgKzE5Myw3
IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKCkKICAgICBpZiAoQ0NQ
cm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICAgICBtX2NhcGFiaWxpdGllcy51c2luZ1N3YXBD
b21wbGV0ZUNhbGxiYWNrID0gZXh0ZW5zaW9ucy5jb250YWlucygiR0xfQ0hST01JVU1fc3dhcGJ1
ZmZlcnNfY29tcGxldGVfY2FsbGJhY2siKTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdT
d2FwQ29tcGxldGVDYWxsYmFjaykgewotICAgICAgICBtX2NvbnRleHQtPnNldFN3YXBCdWZmZXJz
Q29tcGxldGVDYWxsYmFja0NIUk9NSVVNKHRoaXMpOworICAgICAgICBtX2NvbnRleHQzRC0+c2V0
U3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01JVU0odGhpcyk7CiAgICAgfQogCiAgICAg
bV9jYXBhYmlsaXRpZXMudXNpbmdTZXRWaXNpYmlsaXR5ID0gZXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQ0hST01JVU1fc2V0X3Zpc2liaWxpdHkiKTsKQEAgLTIwNywxNCArMjA4LDE0IEBAIGJvb2wg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplKCkKIAogICAgIG1fY2FwYWJpbGl0aWVz
LnVzaW5nR3B1TWVtb3J5TWFuYWdlciA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVN
X2dwdV9tZW1vcnlfbWFuYWdlciIpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ0dwdU1l
bW9yeU1hbmFnZXIpCi0gICAgICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbkNoYW5n
ZWRDYWxsYmFja0NIUk9NSVVNKHRoaXMpOworICAgICAgICBtX2NvbnRleHQzRC0+c2V0TWVtb3J5
QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKHRoaXMpOwogCiAgICAgbV9jYXBhYmls
aXRpZXMudXNpbmdEaXNjYXJkRnJhbWVidWZmZXIgPSBleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9D
SFJPTUlVTV9kaXNjYXJkX2ZyYW1lYnVmZmVyIik7CiAKICAgICBtX2NhcGFiaWxpdGllcy51c2lu
Z0VnbEltYWdlID0gZXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5h
bCIpOwogCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGlj
c0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVT
aXplKSk7Ci0gICAgbV9jYXBhYmlsaXRpZXMuYmVzdFRleHR1cmVGb3JtYXQgPSBQbGF0Zm9ybUNv
bG9yOjpiZXN0VGV4dHVyZUZvcm1hdChtX2NvbnRleHQsIGV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKTsKKyAgICBHTEMobV9jb250ZXh0M0QsIG1f
Y29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0la
RSwgJm1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKSk7CisgICAgbV9jYXBhYmlsaXRpZXMu
YmVzdFRleHR1cmVGb3JtYXQgPSBQbGF0Zm9ybUNvbG9yOjpiZXN0VGV4dHVyZUZvcm1hdChtX2Nv
bnRleHQzRCwgZXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4
ODg4IikpOwogCiAgICAgbV9pc1VzaW5nQmluZFVuaWZvcm0gPSBleHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24iKTsKIApAQCAtMjI5LDE1ICsyMzAs
MTUgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemUoKQogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp+TGF5ZXJSZW5kZXJlckNocm9taXVtKCkKIHsKICAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIG1fY29udGV4dC0+c2V0U3dhcEJ1ZmZlcnNDb21w
bGV0ZUNhbGxiYWNrQ0hST01JVU0oMCk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0
aW9uQ2hhbmdlZENhbGxiYWNrQ0hST01JVU0oMCk7Ci0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0
TG9zdENhbGxiYWNrKDApOworICAgIG1fY29udGV4dDNELT5zZXRTd2FwQnVmZmVyc0NvbXBsZXRl
Q2FsbGJhY2tDSFJPTUlVTSgwKTsKKyAgICBtX2NvbnRleHQzRC0+c2V0TWVtb3J5QWxsb2NhdGlv
bkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKDApOworICAgIG1fY29udGV4dDNELT5zZXRDb250ZXh0
TG9zdENhbGxiYWNrKDApOwogICAgIGNsZWFudXBTaGFyZWRPYmplY3RzKCk7CiB9CiAKIFdlYkdy
YXBoaWNzQ29udGV4dDNEKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvbnRleHQoKQogewotICAg
IHJldHVybiBtX2NvbnRleHQ7CisgICAgcmV0dXJuIG1fY29udGV4dDNEOwogfQogCiB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVidWdHTENhbGwoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIGNvbnN0IGNoYXIqIGNvbW1hbmQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQpA
QCAtMjU2LDcgKzI1Nyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRWaXNpYmxl
KGJvb2wgdmlzaWJsZSkKICAgICAvLyBUT0RPOiBSZXBsYWNlIHNldFZpc2liaWxpdHlDSFJPTUlV
TSB3aXRoIGFuIGV4dGVuc2lvbiB0byBleHBsaWNpdGx5IG1hbmFnZSBmcm9udC9iYWNrYnVmZmVy
cwogICAgIC8vIGNyYnVnLmNvbS8xMTYwNDkKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdT
ZXRWaXNpYmlsaXR5KSB7Ci0gICAgICAgIG1fY29udGV4dC0+c2V0VmlzaWJpbGl0eUNIUk9NSVVN
KHZpc2libGUpOworICAgICAgICBtX2NvbnRleHQzRC0+c2V0VmlzaWJpbGl0eUNIUk9NSVVNKHZp
c2libGUpOwogICAgIH0KIH0KIApAQCAtMjgyLDIxICsyODMsMjEgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmNsZWFyUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBh
c3MsIGNvbnMKICAgICAvLyBvZiB0aGUgc2NyZWVuLgogCiAgICAgaWYgKHJlbmRlclBhc3MtPmhh
c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpKQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCkpOworICAgICAgICBHTEMobV9jb250ZXh0M0QsIG1f
Y29udGV4dDNELT5jbGVhckNvbG9yKDAsIDAsIDAsIDApKTsKICAgICBlbHNlCi0gICAgICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAxLCAxKSk7CisgICAgICAg
IEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPmNsZWFyQ29sb3IoMCwgMCwgMSwgMSkpOwog
CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nUGFydGlhbFN3YXApCiAgICAgICAgIHNldFNj
aXNzb3JUb1JlY3QoZW5jbG9zaW5nSW50UmVjdChmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpKTsKICAg
ICBlbHNlCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGlj
c0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQzRCwgbV9j
b250ZXh0M0QtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogCiAj
aWYgZGVmaW5lZChOREVCVUcpCiAgICAgaWYgKHJlbmRlclBhc3MtPmhhc1RyYW5zcGFyZW50QmFj
a2dyb3VuZCgpKQogI2VuZGlmCi0gICAgICAgIG1fY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBtX2NvbnRleHQzRC0+Y2xlYXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOwogCi0gICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOworICAg
IEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
U0NJU1NPUl9URVNUKSk7CiB9CiAKIC8vIHN0YXRpYwpAQCAtMzcwLDI0ICszNzEsMjQgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVy
UGFzcyogcm9vdFJlbmRlclBhc3MKICAgICAgICAgLy8gY2FuIGxlYXZlIHRoZSB3aW5kb3cgYXQg
dGhlIHdyb25nIHNpemUgaWYgd2UgbmV2ZXIgZHJhdyBhbmQgdGhlIHByb3BlcgogICAgICAgICAv
LyB2aWV3cG9ydCBzaXplIGlzIG5ldmVyIHNldC4KICAgICAgICAgbV9pc1ZpZXdwb3J0Q2hhbmdl
ZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRleHQtPnJlc2hhcGUodmlld3BvcnRXaWR0aCgpLCB2
aWV3cG9ydEhlaWdodCgpKTsKKyAgICAgICAgbV9jb250ZXh0M0QtPnJlc2hhcGUodmlld3BvcnRX
aWR0aCgpLCB2aWV3cG9ydEhlaWdodCgpKTsKICAgICB9CiAKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICAvLyBCaW5kIHRoZSBjb21tb24gdmVydGV4IGF0dHJpYnV0ZXMgdXNlZCBmb3Ig
ZHJhd2luZyBhbGwgdGhlIGxheWVycy4KICAgICBtX3NoYXJlZEdlb21ldHJ5LT5wcmVwYXJlRm9y
RHJhdygpOwogCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9URVNUKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5k
aXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0UpKTsKLSAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKSk7Ci0gICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7
Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0
M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKKyAgICBH
TEMobV9jb250ZXh0M0QsIG1fY29udGV4dDNELT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9URVNUKSk7CisgICAgR0xDKG1fY29udGV4dDNELCBtX2NvbnRleHQzRC0+ZGlzYWJsZShH
cmFwaGljc0NvbnRleHQzRDo6Q1VMTF9GQUNFKSk7CisgICAgR0xDKG1fY29udGV4dDNELCBtX2Nv
bnRleHQzRC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpKTsKKyAgICBHTEMobV9j
b250ZXh0M0QsIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7
CisgICAgR0xDKG1fY29udGV4dDNELCBtX2NvbnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29u
dGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiB9
CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkb05vT3AoKQogewotICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgMCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7Cisg
ICAgR0xDKG1fY29udGV4dDNELCBtX2NvbnRleHQzRC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOworICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250
ZXh0M0QtPmZsdXNoKCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jl
bmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBjb25zdCBGbG9hdFJlY3Qm
IGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkKQEAgLTQxMyw5ICs0MTQsOSBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCog
cXVhZCkKICAgICBzZXRTY2lzc29yVG9SZWN0KHNjaXNzb3JSZWN0KTsKIAogICAgIGlmIChxdWFk
LT5uZWVkc0JsZW5kaW5nKCkpCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5h
YmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOworICAgICAgICBHTEMobV9jb250ZXh0M0Qs
IG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAgICAgZWxz
ZQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250
ZXh0M0Q6OkJMRU5EKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPmRp
c2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAKICAgICBzd2l0Y2ggKHF1YWQtPm1h
dGVyaWFsKCkpIHsKICAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OkludmFsaWQ6
CkBAIC0xMDYxLDcgKzEwNjIsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Rl
eHR1cmVRdWFkKGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBxdWFkKQogICAgIGRyYXdUZXh0dXJl
ZFF1YWQocXVhZFRyYW5zZm9ybSwgcXVhZFJlY3Qud2lkdGgoKSwgcXVhZFJlY3QuaGVpZ2h0KCks
IHF1YWQtPm9wYWNpdHkoKSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksIGJpbmRpbmcubWF0cml4TG9j
YXRpb24sIGJpbmRpbmcuYWxwaGFMb2NhdGlvbiwgLTEpOwogCiAgICAgaWYgKCFxdWFkLT5wcmVt
dWx0aXBsaWVkQWxwaGEoKSkKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5ibGVu
ZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5V
U19TUkNfQUxQSEEpKTsKKyAgICAgICAgR0xDKG1fY29udGV4dDNELCBtX2NvbnRleHQzRC0+Ymxl
bmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlO
VVNfU1JDX0FMUEhBKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SU9T
dXJmYWNlUXVhZChjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBxdWFkKQpAQCAtMTA5NywxNyAr
MTA5OCwxNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5
KGNvbnN0IENDU2NvcGVkVGV4dHVyZSogaHVkVGV4dHVyZQogewogICAgIEFTU0VSVChodWRUZXh0
dXJlLT5pZCgpKTsKIAotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBo
aWNzQ29udGV4dDNEOjpCTEVORCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Ymxl
bmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlO
VVNfU1JDX0FMUEhBKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKKyAgICBHTEMobV9jb250ZXh0M0QsIG1f
Y29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CisgICAgR0xDKG1f
Y29udGV4dDNELCBtX2NvbnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUs
IEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CisgICAgR0xDKG1fY29u
dGV4dDNELCBtX2NvbnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUKSk7CiAgICAgdXNlUmVuZGVyUGFzcyhtX2RlZmF1bHRSZW5kZXJQYXNzKTsKIAogICAgIGNv
bnN0IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogcHJvZ3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJvZ3Jh
bSgpOwogICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwotICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRTApKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBodWRUZXh0dXJlLT5pZCgpKSk7Ci0gICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkp
OwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBHTEMobV9jb250ZXh0M0Qs
IG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkp
OworICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBodWRUZXh0dXJlLT5pZCgpKSk7CisgICAgR0xDKG1fY29u
dGV4dDNELCBtX2NvbnRleHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKKyAg
ICBHTEMobV9jb250ZXh0M0QsIG1fY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCiAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggbWF0cml4OwogICAgIG1hdHJpeC50cmFuc2xhdGUzZChodWRTaXplLndpZHRoKCkg
KiAwLjUsIGh1ZFNpemUuaGVpZ2h0KCkgKiAwLjUsIDApOwpAQCAtMTExOSw4ICsxMTIwLDggQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheShjb25zdCBDQ1Nj
b3BlZFRleHR1cmUqIGh1ZFRleHR1cmUKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZp
bmlzaERyYXdpbmdGcmFtZSgpCiB7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNh
YmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKLSAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CisgICAgR0xD
KG1fY29udGV4dDNELCBtX2NvbnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJ
U1NPUl9URVNUKSk7CisgICAgR0xDKG1fY29udGV4dDNELCBtX2NvbnRleHQzRC0+ZGlzYWJsZShH
cmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnRvR0xNYXRyaXgoZmxvYXQqIGZsYXR0ZW5lZCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG0pCkBAIC0xMTU3LDcgKzExNTgsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1RleHR1cmVkUXVhZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhdwog
ICAgIC8vIEFwcGx5IHRoZSBwcm9qZWN0aW9uIG1hdHJpeCBiZWZvcmUgc2VuZGluZyB0aGUgdHJh
bnNmb3JtIG92ZXIgdG8gdGhlIHNoYWRlci4KICAgICB0b0dMTWF0cml4KCZnbE1hdHJpeFswXSwg
bV9wcm9qZWN0aW9uTWF0cml4ICogcmVuZGVyTWF0cml4KTsKIAotICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihtYXRyaXhMb2NhdGlvbiwgMSwgZmFsc2UsICZn
bE1hdHJpeFswXSkpOworICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPnVuaWZvcm1N
YXRyaXg0ZnYobWF0cml4TG9jYXRpb24sIDEsIGZhbHNlLCAmZ2xNYXRyaXhbMF0pKTsKIAogICAg
IGlmIChxdWFkTG9jYXRpb24gIT0gLTEpIHsKICAgICAgICAgZmxvYXQgcG9pbnRbOF07CkBAIC0x
MTY5LDEzICsxMTcwLDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVy
ZWRRdWFkKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3CiAgICAgICAgIHBvaW50
WzVdID0gcXVhZC5wMygpLnkoKTsKICAgICAgICAgcG9pbnRbNl0gPSBxdWFkLnA0KCkueCgpOwog
ICAgICAgICBwb2ludFs3XSA9IHF1YWQucDQoKS55KCk7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+dW5pZm9ybTJmdihxdWFkTG9jYXRpb24sIDQsIHBvaW50KSk7CisgICAgICAg
IEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPnVuaWZvcm0yZnYocXVhZExvY2F0aW9uLCA0
LCBwb2ludCkpOwogICAgIH0KIAogICAgIGlmIChhbHBoYUxvY2F0aW9uICE9IC0xKQotICAgICAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0xZihhbHBoYUxvY2F0aW9uLCBvcGFj
aXR5KSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihh
bHBoYUxvY2F0aW9uLCBvcGFjaXR5KSk7CiAKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCA2LCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDApKTsKKyAgICBHTEMobV9jb250ZXh0M0QsIG1fY29u
dGV4dDNELT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAwKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJZCwgY29u
c3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01h
dHJpeCkKQEAgLTEyMDAsNyArMTIwMSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
b3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6CiB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoKCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNj
IiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoIik7Ci0gICAgbV9jb250ZXh0LT5maW5p
c2goKTsKKyAgICBtX2NvbnRleHQzRC0+ZmluaXNoKCk7CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpzd2FwQnVmZmVycyhjb25zdCBJbnRSZWN0JiBzdWJCdWZmZXIpCkBAIC0xMjE2
LDExICsxMjE3LDExIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzd2FwQnVmZmVycyhj
b25zdCBJbnRSZWN0JiBzdWJCdWZmZXIpCiAgICAgICAgIEludFJlY3QgY2xpcHBlZFN1YkJ1ZmZl
ciA9IHN1YkJ1ZmZlcjsKICAgICAgICAgY2xpcHBlZFN1YkJ1ZmZlci5pbnRlcnNlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCB2aWV3cG9ydFNpemUoKSkpOwogICAgICAgICBpbnQgZmxpcHBl
ZFlQb3NPZlJlY3RCb3R0b20gPSB2aWV3cG9ydEhlaWdodCgpIC0gY2xpcHBlZFN1YkJ1ZmZlci55
KCkgLSBjbGlwcGVkU3ViQnVmZmVyLmhlaWdodCgpOwotICAgICAgICBtX2NvbnRleHQtPnBvc3RT
dWJCdWZmZXJDSFJPTUlVTShjbGlwcGVkU3ViQnVmZmVyLngoKSwgZmxpcHBlZFlQb3NPZlJlY3RC
b3R0b20sIGNsaXBwZWRTdWJCdWZmZXIud2lkdGgoKSwgY2xpcHBlZFN1YkJ1ZmZlci5oZWlnaHQo
KSk7CisgICAgICAgIG1fY29udGV4dDNELT5wb3N0U3ViQnVmZmVyQ0hST01JVU0oY2xpcHBlZFN1
YkJ1ZmZlci54KCksIGZsaXBwZWRZUG9zT2ZSZWN0Qm90dG9tLCBjbGlwcGVkU3ViQnVmZmVyLndp
ZHRoKCksIGNsaXBwZWRTdWJCdWZmZXIuaGVpZ2h0KCkpOwogICAgIH0gZWxzZQogICAgICAgICAv
LyBOb3RlIHRoYXQgY3VycmVudGx5IHRoaXMgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBzd2FwQnVm
ZmVyczsgd2Ugc2hvdWxkCiAgICAgICAgIC8vIGNvbnNpZGVyIGV4cG9zaW5nIGEgZGlmZmVyZW50
IGVudHJ5IHBvaW50IG9uIFdlYkdyYXBoaWNzQ29udGV4dDNELgotICAgICAgICBtX2NvbnRleHQt
PnByZXBhcmVUZXh0dXJlKCk7CisgICAgICAgIG1fY29udGV4dDNELT5wcmVwYXJlVGV4dHVyZSgp
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMjU0LDcgKzEyNTUsNyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6b25NZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZE9uSW1wbFRocmVhZChX
ZWJLaXQ6OldlYkdyYQogICAgIGlmICghYWxsb2NhdGlvbi5ncHVSZXNvdXJjZVNpemVJbkJ5dGVz
KSB7CiAgICAgICAgIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMoKTsKICAgICAgICAgbV9jbGll
bnQtPnJlbGVhc2VDb250ZW50c1RleHR1cmVzKCk7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+Zmx1c2goKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0Qt
PmZsdXNoKCkpOwogICAgIH0gZWxzZQogICAgICAgICBtX2NsaWVudC0+c2V0TWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXMoYWxsb2NhdGlvbi5ncHVSZXNvdXJjZVNpemVJbkJ5dGVzKTsKIH0KQEAg
LTEyNjgsNyArMTI2OSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkaXNjYXJkRnJh
bWVidWZmZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogVXBkYXRlIGF0dGFj
aG1lbnRzIGFyZ3VtZW50IHRvIGFwcHJvcHJpYXRlIHZhbHVlcyBvbmNlIHRoZXkgYXJlIG5vIGxv
bmdlciBpZ25vcmVkLgotICAgIG1fY29udGV4dC0+ZGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwKTsKKyAgICBtX2NvbnRleHQzRC0+ZGlzY2Fy
ZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwKTsKICAg
ICBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQgPSB0cnVlOwogCiAgICAgLy8gRGFtYWdlIHRyYWNr
ZXIgbmVlZHMgYSBmdWxsIHJlc2V0IGV2ZXJ5IHRpbWUgZnJhbWVidWZmZXIgaXMgZGlzY2FyZGVk
LgpAQCAtMTI4Myw3ICsxMjg0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmVuc3Vy
ZUZyYW1lYnVmZmVyKCkKICAgICBpZiAoIW1fY2FwYWJpbGl0aWVzLnVzaW5nRGlzY2FyZEZyYW1l
YnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRleHQtPmVuc3VyZUZyYW1lYnVm
ZmVyQ0hST01JVU0oKTsKKyAgICBtX2NvbnRleHQzRC0+ZW5zdXJlRnJhbWVidWZmZXJDSFJPTUlV
TSgpOwogICAgIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCA9IGZhbHNlOwogfQogCkBAIC0xMzEz
LDMxICsxMzE0LDMxIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZl
clBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlCiAgICAgICAgIC8vIGRpZmZl
cmVudCBPcGVuR0wgY29udGV4dHMuIEl0IGlzIGJlbGlldmVkIHRoYXQgdGhpcyBpcyB0aGUgcm9v
dCBjYXVzZSBvZiB0b3AgY3Jhc2hlcgogICAgICAgICAvLyBodHRwOi8vY3JidWcuY29tLzk5Mzkz
LiA8cmRhcjovL3Byb2JsZW0vMTA5NDk2ODc+CiAKLSAgICAgICAgdGVtcG9yYXJ5VGV4dHVyZSA9
IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZW1wb3Jh
cnlUZXh0dXJlKSk7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdF
KSk7Ci0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JB
UF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworICAgICAgICB0ZW1wb3Jh
cnlUZXh0dXJlID0gbV9jb250ZXh0M0QtPmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgR0xDKG1f
Y29udGV4dDNELCBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHRlbXBvcmFyeVRleHR1cmUpKTsKKyAgICAgICAgR0xDKG1fY29udGV4dDNELCBt
X2NvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUikpOworICAgICAgICBHTEMobV9jb250ZXh0M0QsIG1fY29udGV4dDNELT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgICAg
IEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKKyAgICAgICAgR0xDKG1fY29udGV4dDNE
LCBtX2NvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSkpOwogICAgICAgICAvLyBDb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgY3Vy
cmVudCAoSU9TdXJmYWNlLWJhY2tlZCkgZnJhbWVidWZmZXIgaW50byBhIHRlbXBvcmFyeSB0ZXh0
dXJlLgotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
MCwgMCwgcmVjdC5tYXhYKCksIHJlY3QubWF4WSgpLCAwKSk7Ci0gICAgICAgIHRlbXBvcmFyeUZC
TyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICAgICAgR0xDKG1fY29udGV4
dDNELCBtX2NvbnRleHQzRC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCAwLCAwLCByZWN0Lm1heFgoKSwgcmVj
dC5tYXhZKCksIDApKTsKKyAgICAgICAgdGVtcG9yYXJ5RkJPID0gbV9jb250ZXh0M0QtPmNyZWF0
ZUZyYW1lYnVmZmVyKCk7CiAgICAgICAgIC8vIEF0dGFjaCB0aGlzIHRleHR1cmUgdG8gYW4gRkJP
LCBhbmQgcGVyZm9ybSB0aGUgcmVhZGJhY2sgZnJvbSB0aGF0IEZCTy4KLSAgICAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCB0ZW1wb3JhcnlGQk8pKTsKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRlbXBvcmFyeVRleHR1cmUsIDApKTsKKyAgICAgICAgR0xDKG1fY29udGV4
dDNELCBtX2NvbnRleHQzRC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgdGVtcG9yYXJ5RkJPKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250
ZXh0M0QtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgdGVtcG9yYXJ5VGV4dHVyZSwgMCkpOwogCi0gICAgICAgIEFTU0VSVCht
X2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpOworICAg
ICAgICBBU1NFUlQobV9jb250ZXh0M0QtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJf
Q09NUExFVEUpOwogICAgIH0KIAotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+cmVhZFBp
eGVscyhyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKKyAg
ICBHTEMobV9jb250ZXh0M0QsIG1fY29udGV4dDNELT5yZWFkUGl4ZWxzKHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgcGl4ZWxzKSk7CiAKICAgICBpZiAoZG9Xb3JrYXJvdW5kKSB7CiAg
ICAgICAgIC8vIENsZWFuIHVwLgotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKLSAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCkpOwotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRl
bGV0ZUZyYW1lYnVmZmVyKHRlbXBvcmFyeUZCTykpOwotICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRlbGV0ZVRleHR1cmUodGVtcG9yYXJ5VGV4dHVyZSkpOworICAgICAgICBHTEMo
bV9jb250ZXh0M0QsIG1fY29udGV4dDNELT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCAwKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0
M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CisgICAg
ICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPmRlbGV0ZUZyYW1lYnVmZmVyKHRlbXBv
cmFyeUZCTykpOworICAgICAgICBHTEMobV9jb250ZXh0M0QsIG1fY29udGV4dDNELT5kZWxldGVU
ZXh0dXJlKHRlbXBvcmFyeVRleHR1cmUpKTsKICAgICB9CiAKICAgICBpZiAoIW1fdmlzaWJsZSkg
ewpAQCAtMTM0NSw3ICsxMzQ2LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZy
YW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmUKICAgICAgICAg
ZGlzY2FyZEZyYW1lYnVmZmVyKCk7CiAgICAgICAgIHJlbGVhc2VSZW5kZXJQYXNzVGV4dHVyZXMo
KTsKICAgICAgICAgbV9jbGllbnQtPnJlbGVhc2VDb250ZW50c1RleHR1cmVzKCk7Ci0gICAgICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7CisgICAgICAgIEdMQyhtX2NvbnRl
eHQzRCwgbV9jb250ZXh0M0QtPmZsdXNoKCkpOwogICAgIH0KIH0KIApAQCAtMTM1Niw4ICsxMzU3
LDggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShD
Q1Njb3BlZFRleHR1cmUqIHRleHR1cmUsIGNvbnMKICAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYg
IXRleHR1cmUtPmFsbG9jYXRlKGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS0+
aWQoKSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAorICAgIEdM
QyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCB0ZXh0dXJlLT5pZCgpKSk7CisgICAgR0xDKG1fY29udGV4dDNELCBtX2Nv
bnRleHQzRC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAs
IHRleHR1cmUtPmZvcm1hdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRo
KCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEz
NzMsNyArMTM3NCw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNz
KGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKICAgICBtX2N1cnJlbnRUZXh0dXJlID0g
MDsKIAogICAgIGlmIChyZW5kZXJQYXNzID09IG1fZGVmYXVsdFJlbmRlclBhc3MpIHsKLSAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250
ZXh0M0QtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDAp
KTsKICAgICAgICAgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChyZW5kZXJQYXNzLT5mcmFtZWJ1ZmZl
ck91dHB1dFJlY3QoKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE0
MDEsMTEgKzE0MDIsMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1
ZmZlclRvVGV4dHVyZShjb25zdCBDQ1Njb3BlZFRleHR1cmUqIHRleHQKIHsKICAgICBBU1NFUlQo
dGV4dHVyZS0+aWQoKSk7CiAKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVi
dWZmZXJJZCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0
dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6
Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJl
LT5pZCgpLCAwKSk7CisgICAgR0xDKG1fY29udGV4dDNELCBtX2NvbnRleHQzRC0+YmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1
ZmZlcklkKSk7CisgICAgR0xDKG1fY29udGV4dDNELCBtX2NvbnRleHQzRC0+ZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0
dXJlLT5pZCgpLCAwKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCi0gICAgaWYgKG1fY29u
dGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgIGlm
IChtX2NvbnRleHQzRC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkg
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTE0MjIsNyArMTQyMyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpz
ZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KQogewogICAgIEludFJl
Y3QgZnJhbWVidWZmZXJPdXRwdXRSZWN0ID0gKG1fY3VycmVudFJlbmRlclBhc3MgPyBtX2N1cnJl
bnRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSA6IG1fZGVmYXVsdFJlbmRlclBh
c3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsKIAotICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKKyAgICBHTEMo
bV9jb250ZXh0M0QsIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNT
T1JfVEVTVCkpOwogCiAgICAgLy8gVGhlIHNjaXNzb3IgY29vcmRpbmF0ZXMgbXVzdCBiZSBzdXBw
bGllZCBpbiB2aWV3cG9ydCBzcGFjZSBzbyB3ZSBuZWVkIHRvIG9mZnNldAogICAgIC8vIGJ5IHRo
ZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBjdXJyZW50
IHJlbmRlciBwYXNzLgpAQCAtMTQzNSwxMSArMTQzNiwxMiBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCkKICAg
ICAgICAgc2Npc3NvclkgPSBmcmFtZWJ1ZmZlck91dHB1dFJlY3QuaGVpZ2h0KCkgLSAoc2Npc3Nv
clJlY3QubWF4WSgpIC0gZnJhbWVidWZmZXJPdXRwdXRSZWN0LnkoKSk7CiAgICAgZWxzZQogICAg
ICAgICBzY2lzc29yWSA9IHNjaXNzb3JSZWN0LnkoKSAtIGZyYW1lYnVmZmVyT3V0cHV0UmVjdC55
KCk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5zY2lzc29yKHNjaXNzb3JYLCBzY2lz
c29yWSwgc2Npc3NvclJlY3Qud2lkdGgoKSwgc2Npc3NvclJlY3QuaGVpZ2h0KCkpKTsKKyAgICBH
TEMobV9jb250ZXh0M0QsIG1fY29udGV4dDNELT5zY2lzc29yKHNjaXNzb3JYLCBzY2lzc29yWSwg
c2Npc3NvclJlY3Qud2lkdGgoKSwgc2Npc3NvclJlY3QuaGVpZ2h0KCkpKTsKIH0KIAogYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CisgICAgLy8gV2Ug
Y2FsbCBDQ0dyYXBoY2lzQ29udGV4dCdzIG1ha2VDb250ZXh0Q3VycmVudCBzbyBpdCBjYW4gbGF6
aWx5IGluaXRpYWxpemUuCiAgICAgcmV0dXJuIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CiB9CiAKQEAgLTE0NTIsNyArMTQ1NCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KGNvbnN0IEludFJlY3QmIGRyYXdSZWN0LCBib29sCiAg
ICAgICAgIG1fcHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0LngoKSwgZHJh
d1JlY3QubWF4WCgpLCBkcmF3UmVjdC5tYXhZKCksIGRyYXdSZWN0LnkoKSk7CiAgICAgZWxzZQog
ICAgICAgICBtX3Byb2plY3Rpb25NYXRyaXggPSBvcnRob01hdHJpeChkcmF3UmVjdC54KCksIGRy
YXdSZWN0Lm1heFgoKSwgZHJhd1JlY3QueSgpLCBkcmF3UmVjdC5tYXhZKCkpOwotICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgZHJhd1JlY3Qud2lkdGgoKSwgZHJh
d1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBHTEMobV9jb250ZXh0M0QsIG1fY29udGV4dDNELT52aWV3
cG9ydCgwLCAwLCBkcmF3UmVjdC53aWR0aCgpLCBkcmF3UmVjdC5oZWlnaHQoKSkpOwogICAgIG1f
d2luZG93TWF0cml4ID0gc2NyZWVuTWF0cml4KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdS
ZWN0LmhlaWdodCgpKTsKIH0KIApAQCAtMTQ2MywyNCArMTQ2NSwyNCBAQCBib29sIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEZCTyBmb3IgZG9pbmcgb2Zmc2NyZWVuIHJl
bmRlcmluZy4KLSAgICBHTEMobV9jb250ZXh0LCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQgPSBt
X2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOworICAgIEdMQyhtX2NvbnRleHQzRCwgbV9v
ZmZzY3JlZW5GcmFtZWJ1ZmZlcklkID0gbV9jb250ZXh0M0QtPmNyZWF0ZUZyYW1lYnVmZmVyKCkp
OwogCiAgICAgLy8gV2Ugd2lsbCBhbHdheXMgbmVlZCB0aGVzZSBwcm9ncmFtcyB0byByZW5kZXIs
IHNvIGNyZWF0ZSB0aGUgcHJvZ3JhbXMgZWFnZXJseSBzbyB0aGF0IHRoZSBzaGFkZXIgY29tcGls
YXRpb24gY2FuCiAgICAgLy8gc3RhcnQgd2hpbGUgd2UgZG8gb3RoZXIgd29yay4gT3RoZXIgcHJv
Z3JhbXMgYXJlIGNyZWF0ZWQgbGF6aWx5IG9uIGZpcnN0IGFjY2Vzcy4KLSAgICBtX3NoYXJlZEdl
b21ldHJ5ID0gYWRvcHRQdHIobmV3IEdlb21ldHJ5QmluZGluZyhtX2NvbnRleHQpKTsKLSAgICBt
X3JlbmRlclBhc3NQcm9ncmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NQcm9ncmFtKG1fY29u
dGV4dCkpOwotICAgIG1fdGlsZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW0obV9j
b250ZXh0KSk7Ci0gICAgbV90aWxlUHJvZ3JhbU9wYXF1ZSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJv
Z3JhbU9wYXF1ZShtX2NvbnRleHQpKTsKKyAgICBtX3NoYXJlZEdlb21ldHJ5ID0gYWRvcHRQdHIo
bmV3IEdlb21ldHJ5QmluZGluZyhtX2NvbnRleHQzRCkpOworICAgIG1fcmVuZGVyUGFzc1Byb2dy
YW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyUGFzc1Byb2dyYW0obV9jb250ZXh0M0QpKTsKKyAgICBt
X3RpbGVQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtKG1fY29udGV4dDNEKSk7Cisg
ICAgbV90aWxlUHJvZ3JhbU9wYXF1ZSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbU9wYXF1ZSht
X2NvbnRleHQzRCkpOwogCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVzaCgpKTsK
KyAgICBHTEMobV9jb250ZXh0M0QsIG1fY29udGV4dDNELT5mbHVzaCgpKTsKIAotICAgIG1fdGV4
dHVyZUNvcGllciA9IEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dCwg
bV9pc1VzaW5nQmluZFVuaWZvcm0pOworICAgIG1fdGV4dHVyZUNvcGllciA9IEFjY2VsZXJhdGVk
VGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1fY29udGV4dDNELCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7
CiAgICAgaWYgKG1fdGV4dHVyZVVwbG9hZGVyU2V0dGluZyA9PSBUaHJvdHRsZWRVcGxvYWRlcikK
LSAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNy
ZWF0ZShtX2NvbnRleHQpOworICAgICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4dDNEKTsKICAgICBlbHNlCiAgICAgICAgIG1f
dGV4dHVyZVVwbG9hZGVyID0gVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSgpOwot
ICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
OjpjcmVhdGUobV9jb250ZXh0LCBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7Ci0gICAg
bV9pbXBsVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRl
KG1fY29udGV4dCwgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOworICAgIG1fY29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9j
b250ZXh0M0QsIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKKyAgICBtX2ltcGxUZXh0
dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0
M0QsIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKICAgICBpZiAobV9jYXBhYmlsaXRp
ZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50KQogICAgICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9y
LT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6RnJhbWVidWZm
ZXJBdHRhY2htZW50KTsKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFn
ZUV4dGVuc2lvbikgewpAQCAtMTQ5NCwxMCArMTQ5NiwxMCBAQCBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogY29uc3QgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3RpbGVDaGVja2VyYm9hcmRQ
cm9ncmFtKQotICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtID0gYWRvcHRQdHIobmV3
IFRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKG1fY29udGV4dCkpOworICAgICAgICBtX3RpbGVDaGVj
a2VyYm9hcmRQcm9ncmFtID0gYWRvcHRQdHIobmV3IFRpbGVDaGVja2VyYm9hcmRQcm9ncmFtKG1f
Y29udGV4dDNEKSk7CiAgICAgaWYgKCFtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtLT5pbml0aWFs
aXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjaGVja2VyYm9hcmRQcm9ncmFtOjppbml0YWxpemUiKTsKLSAgICAgICAgbV90aWxlQ2hl
Y2tlcmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlm
b3JtKTsKKyAgICAgICAgbV90aWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQzRCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90aWxl
Q2hlY2tlcmJvYXJkUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE1MDUsMTAgKzE1MDcsMTAgQEAgY29u
c3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSogTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp0aWwKIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6U29saWRD
b2xvclByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c29saWRDb2xvclByb2dyYW0oKQog
ewogICAgIGlmICghbV9zb2xpZENvbG9yUHJvZ3JhbSkKLSAgICAgICAgbV9zb2xpZENvbG9yUHJv
Z3JhbSA9IGFkb3B0UHRyKG5ldyBTb2xpZENvbG9yUHJvZ3JhbShtX2NvbnRleHQpKTsKKyAgICAg
ICAgbV9zb2xpZENvbG9yUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBTb2xpZENvbG9yUHJvZ3JhbSht
X2NvbnRleHQzRCkpOwogICAgIGlmICghbV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5pdGlhbGl6ZWQo
KSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
c29saWRDb2xvclByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9zb2xpZENvbG9yUHJv
Z3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKKyAgICAg
ICAgbV9zb2xpZENvbG9yUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQzRCwgbV9pc1VzaW5n
QmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV9zb2xpZENvbG9yUHJvZ3JhbS5nZXQo
KTsKIH0KQEAgLTE1MTYsMTAgKzE1MTgsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpTb2xpZENvbG9yUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzb2xpZENvbG8KIGNv
bnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6SGVhZHNVcERpc3BsYXlQcm9ncmFtKiBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX2hl
YWRzVXBEaXNwbGF5UHJvZ3JhbSkKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0gPSBh
ZG9wdFB0cihuZXcgSGVhZHNVcERpc3BsYXlQcm9ncmFtKG1fY29udGV4dCkpOworICAgICAgICBt
X2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBIZWFkc1VwRGlzcGxheVByb2dy
YW0obV9jb250ZXh0M0QpKTsKICAgICBpZiAoIW1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0
aWFsaXplZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5k
VW5pZm9ybSk7CisgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXplKG1f
Y29udGV4dDNELCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX2hl
YWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE1MjksNyArMTUzMSw3IEBAIGNvbnN0
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc1Byb2dyYW0qIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVuZGVyUGFzCiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOwogICAg
IGlmICghbV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFD
RV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc1Byb2dyYW06
OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzUHJv
Z3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQzRCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAg
IH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzUHJvZ3JhbS5nZXQoKTsKIH0KQEAgLTE1MzcsMTAg
KzE1MzksMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3Jh
bSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXMKIGNvbnN0IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6UmVuZGVyUGFzc1Byb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5k
ZXJQYXNzUHJvZ3JhbUFBKCkKIHsKICAgICBpZiAoIW1fcmVuZGVyUGFzc1Byb2dyYW1BQSkKLSAg
ICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbUFBID0gYWRvcHRQdHIobmV3IFJlbmRlclBhc3NQcm9n
cmFtQUEobV9jb250ZXh0KSk7CisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQSA9IGFkb3B0
UHRyKG5ldyBSZW5kZXJQYXNzUHJvZ3JhbUFBKG1fY29udGV4dDNEKSk7CiAgICAgaWYgKCFtX3Jl
bmRlclBhc3NQcm9ncmFtQUEtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtQUE6OmluaXRp
YWxpemUiKTsKLSAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5pbml0aWFsaXplKG1fY29u
dGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOworICAgICAgICBtX3JlbmRlclBhc3NQcm9ncmFt
QUEtPmluaXRpYWxpemUobV9jb250ZXh0M0QsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS5nZXQoKTsKIH0KQEAgLTE1NDgsMTAg
KzE1NTAsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3Jh
bUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclAKIGNvbnN0IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6UmVuZGVyUGFzc01hc2tQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bmRlclBhc3NNYXNrUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3JlbmRlclBhc3NNYXNrUHJvZ3Jh
bSkKLSAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW0gPSBhZG9wdFB0cihuZXcgUmVuZGVy
UGFzc01hc2tQcm9ncmFtKG1fY29udGV4dCkpOworICAgICAgICBtX3JlbmRlclBhc3NNYXNrUHJv
Z3JhbSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW0obV9jb250ZXh0M0QpKTsK
ICAgICBpZiAoIW1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CiAgICAg
ICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNz
TWFza1Byb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dy
YW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CisgICAgICAg
IG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dDNELCBtX2lzVXNp
bmdCaW5kVW5pZm9ybSk7CiAgICAgfQogICAgIHJldHVybiBtX3JlbmRlclBhc3NNYXNrUHJvZ3Jh
bS5nZXQoKTsKIH0KQEAgLTE1NTksMTAgKzE1NjEsMTAgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpSZW5kZXJQYXNzTWFza1Byb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVu
ZGUKIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6UmVuZGVyUGFzc01hc2tQcm9ncmFtQUEq
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUEoKQogewogICAg
IGlmICghbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQSkKLSAgICAgICAgbV9yZW5kZXJQYXNzTWFz
a1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBSZW5kZXJQYXNzTWFza1Byb2dyYW1BQShtX2NvbnRl
eHQpKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBS
ZW5kZXJQYXNzTWFza1Byb2dyYW1BQShtX2NvbnRleHQzRCkpOwogICAgIGlmICghbV9yZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAo
ImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVuZGVyUGFzc01hc2tQcm9ncmFtQUE6Omlu
aXRpYWxpemUiKTsKLSAgICAgICAgbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6
ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKKyAgICAgICAgbV9yZW5kZXJQYXNz
TWFza1Byb2dyYW1BQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQzRCwgbV9pc1VzaW5nQmluZFVuaWZv
cm0pOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJQYXNzTWFza1Byb2dyYW1BQS5nZXQoKTsK
IH0KQEAgLTE1NzIsNyArMTU3NCw3IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGls
ZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW0oKQogICAgIEFTU0VS
VChtX3RpbGVQcm9ncmFtKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW0tPmluaXRpYWxpemVkKCkp
IHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRp
bGVQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGlsZVByb2dyYW0tPmluaXRpYWxp
emUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CisgICAgICAgIG1fdGlsZVByb2dy
YW0tPmluaXRpYWxpemUobV9jb250ZXh0M0QsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNTgyLDcgKzE1ODQsNyBA
QCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtT3BhcXVlKiBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncgogICAgIEFTU0VSVChtX3RpbGVQcm9ncmFtT3BhcXVl
KTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1PcGFxdWUtPmluaXRpYWxpemVkKCkpIHsKICAgICAg
ICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFt
T3BhcXVlOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1PcGFxdWUtPmluaXRp
YWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CisgICAgICAgIG1fdGlsZVBy
b2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9jb250ZXh0M0QsIG1faXNVc2luZ0JpbmRVbmlmb3Jt
KTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGlsZVByb2dyYW1PcGFxdWUuZ2V0KCk7CiB9CkBAIC0x
NTkwLDEwICsxNTkyLDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dy
YW1PcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyCiBjb25zdCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGls
ZVByb2dyYW1BQSgpCiB7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtQUEpCi0gICAgICAgIG1fdGls
ZVByb2dyYW1BQSA9IGFkb3B0UHRyKG5ldyBUaWxlUHJvZ3JhbUFBKG1fY29udGV4dCkpOworICAg
ICAgICBtX3RpbGVQcm9ncmFtQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1BQShtX2NvbnRl
eHQzRCkpOwogICAgIGlmICghbV90aWxlUHJvZ3JhbUFBLT5pbml0aWFsaXplZCgpKSB7CiAgICAg
ICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3Jh
bUFBOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1BQS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbUFB
LT5pbml0aWFsaXplKG1fY29udGV4dDNELCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CiAgICAgfQog
ICAgIHJldHVybiBtX3RpbGVQcm9ncmFtQUEuZ2V0KCk7CiB9CkBAIC0xNjAxLDEwICsxNjAzLDEw
IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1BQSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbUFBCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlRpbGVQcm9ncmFtU3dpenpsZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3
aXp6bGUoKQogewogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGUpCi0gICAgICAgIG1fdGls
ZVByb2dyYW1Td2l6emxlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtU3dpenpsZShtX2NvbnRl
eHQpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUgPSBhZG9wdFB0cihuZXcgVGlsZVBy
b2dyYW1Td2l6emxlKG1fY29udGV4dDNEKSk7CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtU3dpenps
ZS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGlsZVByb2dyYW1Td2l6emxlOjppbml0aWFsaXplIik7Ci0gICAgICAg
IG1fdGlsZVByb2dyYW1Td2l6emxlLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmlu
ZFVuaWZvcm0pOworICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQzRCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90aWxl
UHJvZ3JhbVN3aXp6bGUuZ2V0KCk7CiB9CkBAIC0xNjEyLDEwICsxNjE0LDEwIEBAIGNvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVQcm9nCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9ncmFt
U3dpenpsZU9wYXF1ZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlUHJvZ3JhbVN3aXp6bGVP
cGFxdWUoKQogewogICAgIGlmICghbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUpCi0gICAgICAg
IG1fdGlsZVByb2dyYW1Td2l6emxlT3BhcXVlID0gYWRvcHRQdHIobmV3IFRpbGVQcm9ncmFtU3dp
enpsZU9wYXF1ZShtX2NvbnRleHQpKTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFx
dWUgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKG1fY29udGV4dDNEKSk7
CiAgICAgaWYgKCFtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZWQoKSkgewog
ICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVBy
b2dyYW1Td2l6emxlT3BhcXVlOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGlsZVByb2dyYW1T
d2l6emxlT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmluZFVuaWZvcm0p
OworICAgICAgICBtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRl
eHQzRCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90aWxlUHJv
Z3JhbVN3aXp6bGVPcGFxdWUuZ2V0KCk7CiB9CkBAIC0xNjIzLDEwICsxNjI1LDEwIEBAIGNvbnN0
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlT3BhcXVlKiBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRpCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRpbGVQcm9n
cmFtU3dpenpsZUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZUFB
KCkKIHsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1Td2l6emxlQUEpCi0gICAgICAgIG1fdGlsZVBy
b2dyYW1Td2l6emxlQUEgPSBhZG9wdFB0cihuZXcgVGlsZVByb2dyYW1Td2l6emxlQUEobV9jb250
ZXh0KSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEgPSBhZG9wdFB0cihuZXcgVGls
ZVByb2dyYW1Td2l6emxlQUEobV9jb250ZXh0M0QpKTsKICAgICBpZiAoIW1fdGlsZVByb2dyYW1T
d2l6emxlQUEtPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVQcm9ncmFtU3dpenpsZUFBOjppbml0aWFsaXplIik7
Ci0gICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmluaXRpYWxpemUobV9jb250ZXh0LCBt
X2lzVXNpbmdCaW5kVW5pZm9ybSk7CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxlQUEtPmlu
aXRpYWxpemUobV9jb250ZXh0M0QsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAg
cmV0dXJuIG1fdGlsZVByb2dyYW1Td2l6emxlQUEuZ2V0KCk7CiB9CkBAIC0xNjM0LDEwICsxNjM2
LDEwIEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGlsZVByb2dyYW1Td2l6emxlQUEq
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZVByCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OlRleHR1cmVQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9ncmFt
KCkKIHsKICAgICBpZiAoIW1fdGV4dHVyZVByb2dyYW0pCi0gICAgICAgIG1fdGV4dHVyZVByb2dy
YW0gPSBhZG9wdFB0cihuZXcgVGV4dHVyZVByb2dyYW0obV9jb250ZXh0KSk7CisgICAgICAgIG1f
dGV4dHVyZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGV4dHVyZVByb2dyYW0obV9jb250ZXh0M0Qp
KTsKICAgICBpZiAoIW1fdGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAg
VFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVQcm9ncmFt
Ojppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemUobV9j
b250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CisgICAgICAgIG1fdGV4dHVyZVByb2dyYW0t
PmluaXRpYWxpemUobV9jb250ZXh0M0QsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAg
ICAgcmV0dXJuIG1fdGV4dHVyZVByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNjQ1LDEwICsxNjQ3LDEw
IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVByb2dyYW0qIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlRleHR1cmVQcm9ncmFtRmxpcCogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0ZXh0dXJlUHJvZ3Jh
bUZsaXAoKQogewogICAgIGlmICghbV90ZXh0dXJlUHJvZ3JhbUZsaXApCi0gICAgICAgIG1fdGV4
dHVyZVByb2dyYW1GbGlwID0gYWRvcHRQdHIobmV3IFRleHR1cmVQcm9ncmFtRmxpcChtX2NvbnRl
eHQpKTsKKyAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbUZsaXAgPSBhZG9wdFB0cihuZXcgVGV4dHVy
ZVByb2dyYW1GbGlwKG1fY29udGV4dDNEKSk7CiAgICAgaWYgKCFtX3RleHR1cmVQcm9ncmFtRmxp
cC0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dGV4dHVyZVByb2dyYW1GbGlwOjppbml0aWFsaXplIik7Ci0gICAgICAg
IG1fdGV4dHVyZVByb2dyYW1GbGlwLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1VzaW5nQmlu
ZFVuaWZvcm0pOworICAgICAgICBtX3RleHR1cmVQcm9ncmFtRmxpcC0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQzRCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV90ZXh0
dXJlUHJvZ3JhbUZsaXAuZ2V0KCk7CiB9CkBAIC0xNjU2LDEwICsxNjU4LDEwIEBAIGNvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6VGV4dHVyZVByb2dyYW1GbGlwKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRleHR1cmVQCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlRleHR1cmVJT1N1
cmZhY2VQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVJT1N1cmZhY2VQcm9n
cmFtKCkKIHsKICAgICBpZiAoIW1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0pCi0gICAgICAgIG1f
dGV4dHVyZUlPU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVGV4dHVyZUlPU3VyZmFjZVBy
b2dyYW0obV9jb250ZXh0KSk7CisgICAgICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0gPSBh
ZG9wdFB0cihuZXcgVGV4dHVyZUlPU3VyZmFjZVByb2dyYW0obV9jb250ZXh0M0QpKTsKICAgICBp
ZiAoIW1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKICAgICAgICAg
VFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRleHR1cmVJT1N1cmZh
Y2VQcm9ncmFtOjppbml0aWFsaXplIik7Ci0gICAgICAgIG1fdGV4dHVyZUlPU3VyZmFjZVByb2dy
YW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7CisgICAgICAg
IG1fdGV4dHVyZUlPU3VyZmFjZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0M0QsIG1faXNV
c2luZ0JpbmRVbmlmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdGV4dHVyZUlPU3VyZmFjZVBy
b2dyYW0uZ2V0KCk7CiB9CkBAIC0xNjY3LDEwICsxNjY5LDEwIEBAIGNvbnN0IExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6VGV4dHVyZUlPU3VyZmFjZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGV4CiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlZpZGVvWVVWUHJvZ3JhbSogTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp2aWRlb1lVVlByb2dyYW0oKQogewogICAgIGlmICghbV92aWRl
b1lVVlByb2dyYW0pCi0gICAgICAgIG1fdmlkZW9ZVVZQcm9ncmFtID0gYWRvcHRQdHIobmV3IFZp
ZGVvWVVWUHJvZ3JhbShtX2NvbnRleHQpKTsKKyAgICAgICAgbV92aWRlb1lVVlByb2dyYW0gPSBh
ZG9wdFB0cihuZXcgVmlkZW9ZVVZQcm9ncmFtKG1fY29udGV4dDNEKSk7CiAgICAgaWYgKCFtX3Zp
ZGVvWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBUUkFDRV9FVkVOVDAoImNj
IiwgIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9ZVVZQcm9ncmFtOjppbml0aWFsaXplIik7
Ci0gICAgICAgIG1fdmlkZW9ZVVZQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV9pc1Vz
aW5nQmluZFVuaWZvcm0pOworICAgICAgICBtX3ZpZGVvWVVWUHJvZ3JhbS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQzRCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV92
aWRlb1lVVlByb2dyYW0uZ2V0KCk7CiB9CkBAIC0xNjc4LDEwICsxNjgwLDEwIEBAIGNvbnN0IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6VmlkZW9ZVVZQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnZpZGVvWVVWUHJvCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlZpZGVvU3RyZWFt
VGV4dHVyZVByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dmlkZW9TdHJlYW1UZXh0dXJl
UHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0pCi0gICAg
ICAgIG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBWaWRlb1N0cmVh
bVRleHR1cmVQcm9ncmFtKG1fY29udGV4dCkpOworICAgICAgICBtX3ZpZGVvU3RyZWFtVGV4dHVy
ZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgVmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbShtX2NvbnRl
eHQzRCkpOwogICAgIGlmICghbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtLT5pbml0aWFsaXpl
ZCgpKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpzdHJlYW1UZXh0dXJlUHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX3ZpZGVvU3Ry
ZWFtVGV4dHVyZVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5p
Zm9ybSk7CisgICAgICAgIG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbS0+aW5pdGlhbGl6ZSht
X2NvbnRleHQzRCwgbV9pc1VzaW5nQmluZFVuaWZvcm0pOwogICAgIH0KICAgICByZXR1cm4gbV92
aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtLmdldCgpOwogfQpAQCAtMTY5Myw0OSArMTY5NSw0OSBA
QCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAg
IG1fc2hhcmVkR2VvbWV0cnkuY2xlYXIoKTsKIAogICAgIGlmIChtX3RpbGVQcm9ncmFtKQotICAg
ICAgICBtX3RpbGVQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dCk7CisgICAgICAgIG1fdGlsZVBy
b2dyYW0tPmNsZWFudXAobV9jb250ZXh0M0QpOwogICAgIGlmIChtX3RpbGVQcm9ncmFtT3BhcXVl
KQotICAgICAgICBtX3RpbGVQcm9ncmFtT3BhcXVlLT5jbGVhbnVwKG1fY29udGV4dCk7CisgICAg
ICAgIG1fdGlsZVByb2dyYW1PcGFxdWUtPmNsZWFudXAobV9jb250ZXh0M0QpOwogICAgIGlmICht
X3RpbGVQcm9ncmFtU3dpenpsZSkKLSAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUtPmNsZWFu
dXAobV9jb250ZXh0KTsKKyAgICAgICAgbV90aWxlUHJvZ3JhbVN3aXp6bGUtPmNsZWFudXAobV9j
b250ZXh0M0QpOwogICAgIGlmIChtX3RpbGVQcm9ncmFtU3dpenpsZU9wYXF1ZSkKLSAgICAgICAg
bV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmNsZWFudXAobV9jb250ZXh0KTsKKyAgICAgICAg
bV90aWxlUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmNsZWFudXAobV9jb250ZXh0M0QpOwogICAgIGlm
IChtX3RpbGVQcm9ncmFtQUEpCi0gICAgICAgIG1fdGlsZVByb2dyYW1BQS0+Y2xlYW51cChtX2Nv
bnRleHQpOworICAgICAgICBtX3RpbGVQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0M0QpOwog
ICAgIGlmIChtX3RpbGVQcm9ncmFtU3dpenpsZUFBKQotICAgICAgICBtX3RpbGVQcm9ncmFtU3dp
enpsZUFBLT5jbGVhbnVwKG1fY29udGV4dCk7CisgICAgICAgIG1fdGlsZVByb2dyYW1Td2l6emxl
QUEtPmNsZWFudXAobV9jb250ZXh0M0QpOwogICAgIGlmIChtX3RpbGVDaGVja2VyYm9hcmRQcm9n
cmFtKQotICAgICAgICBtX3RpbGVDaGVja2VyYm9hcmRQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4
dCk7CisgICAgICAgIG1fdGlsZUNoZWNrZXJib2FyZFByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0
M0QpOwogCiAgICAgaWYgKG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtKQotICAgICAgICBtX3JlbmRl
clBhc3NNYXNrUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOworICAgICAgICBtX3JlbmRlclBh
c3NNYXNrUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQzRCk7CiAgICAgaWYgKG1fcmVuZGVyUGFz
c1Byb2dyYW0pCi0gICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW0tPmNsZWFudXAobV9jb250ZXh0
KTsKKyAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQzRCk7CiAg
ICAgaWYgKG1fcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEpCi0gICAgICAgIG1fcmVuZGVyUGFzc01h
c2tQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0KTsKKyAgICAgICAgbV9yZW5kZXJQYXNzTWFz
a1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQzRCk7CiAgICAgaWYgKG1fcmVuZGVyUGFzc1By
b2dyYW1BQSkKLSAgICAgICAgbV9yZW5kZXJQYXNzUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29udGV4
dCk7CisgICAgICAgIG1fcmVuZGVyUGFzc1Byb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQzRCk7
CiAKICAgICBpZiAobV90ZXh0dXJlUHJvZ3JhbSkKLSAgICAgICAgbV90ZXh0dXJlUHJvZ3JhbS0+
Y2xlYW51cChtX2NvbnRleHQpOworICAgICAgICBtX3RleHR1cmVQcm9ncmFtLT5jbGVhbnVwKG1f
Y29udGV4dDNEKTsKICAgICBpZiAobV90ZXh0dXJlUHJvZ3JhbUZsaXApCi0gICAgICAgIG1fdGV4
dHVyZVByb2dyYW1GbGlwLT5jbGVhbnVwKG1fY29udGV4dCk7CisgICAgICAgIG1fdGV4dHVyZVBy
b2dyYW1GbGlwLT5jbGVhbnVwKG1fY29udGV4dDNEKTsKICAgICBpZiAobV90ZXh0dXJlSU9TdXJm
YWNlUHJvZ3JhbSkKLSAgICAgICAgbV90ZXh0dXJlSU9TdXJmYWNlUHJvZ3JhbS0+Y2xlYW51cCht
X2NvbnRleHQpOworICAgICAgICBtX3RleHR1cmVJT1N1cmZhY2VQcm9ncmFtLT5jbGVhbnVwKG1f
Y29udGV4dDNEKTsKIAogICAgIGlmIChtX3ZpZGVvWVVWUHJvZ3JhbSkKLSAgICAgICAgbV92aWRl
b1lVVlByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1lVVlByb2dy
YW0tPmNsZWFudXAobV9jb250ZXh0M0QpOwogICAgIGlmIChtX3ZpZGVvU3RyZWFtVGV4dHVyZVBy
b2dyYW0pCi0gICAgICAgIG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbS0+Y2xlYW51cChtX2Nv
bnRleHQpOworICAgICAgICBtX3ZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0tPmNsZWFudXAobV9j
b250ZXh0M0QpOwogCiAgICAgaWYgKG1fc29saWRDb2xvclByb2dyYW0pCi0gICAgICAgIG1fc29s
aWRDb2xvclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0KTsKKyAgICAgICAgbV9zb2xpZENvbG9y
UHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQzRCk7CiAKICAgICBpZiAobV9oZWFkc1VwRGlzcGxh
eVByb2dyYW0pCi0gICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5jbGVhbnVwKG1fY29u
dGV4dCk7CisgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4
dDNEKTsKIAogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCi0gICAgICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZzY3JlZW5GcmFtZWJ1
ZmZlcklkKSk7CisgICAgICAgIEdMQyhtX2NvbnRleHQzRCwgbV9jb250ZXh0M0QtPmRlbGV0ZUZy
YW1lYnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCiAgICAgbV90ZXh0dXJlQ29w
aWVyLmNsZWFyKCk7CiAgICAgbV90ZXh0dXJlVXBsb2FkZXIuY2xlYXIoKTsKQEAgLTE3NDUsNyAr
MTc0Nyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0
cygpCiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0NvbnRleHRMb3N0KCkKIHsKLSAg
ICByZXR1cm4gKG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpOT19FUlJPUik7CisgICAgcmV0dXJuIChtX2NvbnRleHQzRC0+Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggNDE1NTIwZDdmZDllOTM4MWU2NWU1MDNmYTliNzNmYjVmOWQ5OGNjZC4uOGZhNzU5
Yzg1OGZlZDA4ZTc3MDMzY2U0MzBjNDI0ODFkYTU5NTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCiAj
aW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlcmVy
LmgiCkBAIC02Niw3ICs2Nyw3IEBAIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bSA6IHB1Ymxp
YyBDQ1JlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OldlYkdyYXBoaWNzQ29udGV4dExvc3RDYWxsYmFjayB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJSZW5kZXJlckNocm9taXVtKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShD
Q1JlbmRlcmVyQ2xpZW50KiwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVV
cGxvYWRlck9wdGlvbik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCosIFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0
KiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKIAogICAgIHZpcnR1YWwgfkxheWVyUmVuZGVyZXJD
aHJvbWl1bSgpOwogCkBAIC0xMTgsNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weVRl
eHR1cmVUb0ZyYW1lYnVmZmVyKGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCk7CiAKIHBy
b3RlY3RlZDoKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCosIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOworICAg
IExheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiwgV2ViQ29yZTo6Q0NHcmFw
aGljc0NvbnRleHQqLCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogCiAgICAgYm9vbCBpc0ZyYW1l
YnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
OyB9CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CkBAIC0yNjcsNyArMjY4LDggQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiA+IG1fcmVuZGVyUGFz
c1RleHR1cmVzOwogCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0
OworICAgIFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0M0Q7CiAKICAgICBjb25zdCBDQ1JlbmRl
clBhc3MqIG1fZGVmYXVsdFJlbmRlclBhc3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IGJlOGM4YTU1N2E5MzQwMzhlYWZhZmZlMzU4MDBkNWE0ZmI1Y2I2YmQuLmIyMmUy
NjIwZDc0ODVmNzg1MzU5ZWMxMWIzODQwNjA0MTg4NDdiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHcmFw
aGljc0NvbnRleHQuaApAQCAtNDgsNiArNDgsMTUgQEAgcHVibGljOgogCiAgICAgV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEKCkgeyByZXR1cm4gbV9jb250ZXh0M0QuZ2V0
KCk7IH0KIAorICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkKKyAgICB7CisgICAgICAgIGlm
IChtX2NvbnRleHQzRCAmJiBtX2NvbnRleHQzRC0+bWFrZUNvbnRleHRDdXJyZW50KCkpIHsKKyAg
ICAgICAgICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgdm9pZCBmbHVzaCgp
CiAgICAgewogICAgICAgICBpZiAobV9jb250ZXh0M0QpCkBAIC01OSw2ICs2OCwxMSBAQCBwcml2
YXRlOgogICAgIGV4cGxpY2l0IENDR3JhcGhpY3NDb250ZXh0KFBhc3NPd25QdHI8V2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dDNEKQogICAgICAgICA6IG1fY29udGV4dDNEKGNv
bnRleHQzRCkgeyB9CiAKKyAgICB2b2lkIGxhenlJbml0aWFsaXplKCkKKyAgICB7CisgICAgICAg
IC8vIFRPRE8KKyAgICB9CisKICAgICBPd25QdHI8V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RD4gbV9jb250ZXh0M0Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCmluZGV4IDA0YmI3ODY3MTU5ZDc2ODgzMjA4Njk0OWM0YzkyODY3YmE0MThlOWIuLjRhZjA5
MTRjNzM5ZWVjOWFiMjJmMjFkYTdiNmQ1ZDBhZWVlNTlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC03MTAsNyArNzEwLDcgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzT3duUHRyPENDR3JhcGhpY3ND
b250ZXh0PgogICAgIH0KIAogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVy
UmVuZGVyZXI7Ci0gICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3Jl
YXRlKHRoaXMsIGNvbnRleHQzZCwgdGV4dHVyZVVwbG9hZGVyKTsKKyAgICBsYXllclJlbmRlcmVy
ID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dC5nZXQoKSwgdGV4
dHVyZVVwbG9hZGVyKTsKIAogICAgIC8vIFNpbmNlIHdlIG5vdyBoYXZlIGEgbmV3IGNvbnRleHQv
bGF5ZXJSZW5kZXJlciwgd2UgY2Fubm90IGNvbnRpbnVlIHRvIHVzZSB0aGUgb2xkCiAgICAgLy8g
cmVzb3VyY2VzIChpLmUuIHJlbmRlclN1cmZhY2VzIGFuZCB0ZXh0dXJlIElEcykuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwCmluZGV4IGY4NDI3MjdjMGYxNDI4ZDZkMmNjMmE3MjRlMjNmNzhkMWYxZDcxMzguLmE2
ZTliNTMyODZiZjFiMjA0NTlmYmM2YjU4MzZiYzViNTQ0NjAyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
CkBAIC0yOTcyLDcgKzI5NzIsNyBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIENDVGVzdFJlbmRlcmVy
IDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSwgcHVibGljIENDUmVuZGVyZXJDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGVzdFJlbmRlcmVyPiBjcmVhdGUo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1Rlc3RSZW5kZXJlcj4gY3JlYXRlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQog
ICAgIHsKICAgICAgICAgT3duUHRyPENDVGVzdFJlbmRlcmVyPiByZW5kZXJlcihhZG9wdFB0cihu
ZXcgQ0NUZXN0UmVuZGVyZXIoY29udGV4dCkpKTsKICAgICAgICAgaWYgKCFyZW5kZXJlci0+aW5p
dGlhbGl6ZSgpKQpAQCAtMjk5Niw3ICsyOTk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpIE9WRVJSSURFIHsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgQ0NUZXN0UmVuZGVyZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0odGhpcywgY29udGV4dCwgVW50aHJv
dHRsZWRVcGxvYWRlcikgeyB9CisgICAgQ0NUZXN0UmVuZGVyZXIoQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKHRoaXMsIGNvbnRleHQsIFVudGhyb3R0
bGVkVXBsb2FkZXIpIHsgfQogCiBwcml2YXRlOgogICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbV9z
ZXR0aW5nczsKQEAgLTMyODEsNyArMzI4MSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgdGVzdFJlbW92ZVJlbmRlclBhc3NlcykKICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNvbnRleHQoY3JlYXRlQ29udGV4dCgpKTsKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBBU1NFUlRfVFJV
RShjb250ZXh0M2QpOwotICAgIE93blB0cjxDQ1Rlc3RSZW5kZXJlcj4gcmVuZGVyZXIoQ0NUZXN0
UmVuZGVyZXI6OmNyZWF0ZShjb250ZXh0M2QpKTsKKyAgICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+
IHJlbmRlcmVyKENDVGVzdFJlbmRlcmVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOwogCiAgICAg
aW50IHRlc3RDYXNlSW5kZXggPSAwOwogICAgIHdoaWxlIChyZW1vdmVSZW5kZXJQYXNzZXNDYXNl
c1t0ZXN0Q2FzZUluZGV4XS5uYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUZXh0dXJlVXBkYXRlclRlc3QuY3BwCmluZGV4IGQwYmJkMzZmNDc4ZWM1ODg0
MmUzYzVlMWZjNGY5MGExNzVkNDNjYjkuLjg5ZTZmOGZmMTMyODI0Zjk1YTE3MDgzODg5MzI1NGU0
MzE2MDJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0
dXJlVXBkYXRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
ZXh0dXJlVXBkYXRlclRlc3QuY3BwCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIENDVGV4dHVyZVVw
ZGF0ZXJUZXN0OwogY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0IDogcHVi
bGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CiAgICAgV2ViR3JhcGhpY3ND
b250ZXh0M0RGb3JVcGxvYWRUZXN0KENDVGV4dHVyZVVwZGF0ZXJUZXN0ICp0ZXN0KSA6IG1fdGVz
dCh0ZXN0KSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaCh2b2lkKTsKICAgICB2aXJ0dWFs
IEdyR0xJbnRlcmZhY2UqIG9uQ3JlYXRlR3JHTEludGVyZmFjZSgpIHsgcmV0dXJuIDA7IH0KIApA
QCAtMTYzLDggKzE2NCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgT3duUHRyPFdlYlRocmVhZD4g
dGhyZWFkOwogICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKHRocmVhZC5nZXQoKSk7
CiAKLSAgICAgICAgbV9jb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKAotICAg
ICAgICAgICAgICAgICAgICBhZG9wdFB0cihuZXcgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxv
YWRUZXN0KHRoaXMpKSk7CisgICAgICAgIG1fcmF3Q29udGV4dCA9IG5ldyBXZWJHcmFwaGljc0Nv
bnRleHQzREZvclVwbG9hZFRlc3QodGhpcyk7CisgICAgICAgIG1fY29udGV4dCA9IENDR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihtX3Jhd0NvbnRleHQpKTsKKyAgICAgICAgbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKQpAQCAtMjAwLDYgKzIwMiw3IEBAIHByb3RlY3RlZDoKIHByb3RlY3RlZDoKICAg
ICAvLyBDbGFzc2VzIHJlcXVpcmVkIHRvIGludGVyYWN0IGFuZCB0ZXN0IHRoZSBDQ1RleHR1cmVV
cGRhdGVyCiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgV2Vi
R3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0KiBtX3Jhd0NvbnRleHQ7CiAgICAgQ0NUZXh0
dXJlVXBkYXRlciBtX3VwZGF0ZXI7CiAgICAgVGV4dHVyZUZvclVwbG9hZFRlc3QgbV90ZXh0dXJl
OwogICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIG1fYWxsb2NhdG9yOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHAKaW5kZXggN2NkYmE4MDljZTJiNjc5MGIzMmZjOWI5OTUwODIzZGI0MGQwOTk0YS4uYTdlOWJj
OTM5NzU1ZjZmNWI0MjRiNzMxZmQwOGM5Y2Y0MDUwNzA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgRmFrZUxheWVyUmVuZGVyZXJD
aHJvbWl1bSA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW0gewogcHVibGljOgotICAgIEZh
a2VMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBj
b250ZXh0LCBVbnRocm90dGxlZFVwbG9hZGVyKSB7IH0KKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNo
cm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgVW50aHJvdHRsZWRV
cGxvYWRlcikgeyB9CiAKICAgICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW0gbWV0aG9kcy4KIApA
QCAtMTIzLDcgKzEyMyw4IEBAIHByb3RlY3RlZDoKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0KCkKICAgICAgICAgOiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllcygxLCB0cnVlKQogICAg
ICAgICAsIG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8oMSwgZmFsc2UpCi0gICAgICAgICwgbV9j
b250ZXh0KGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdD
b250ZXh0KSkKKyAgICAgICAgLCBtX3Jhd0NvbnRleHQobmV3IEZyYW1lQ291bnRpbmdNZW1vcnlB
bGxvY2F0aW9uU2V0dGluZ0NvbnRleHQpCisgICAgICAgICwgbV9jb250ZXh0KENDR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihtX3Jhd0NvbnRleHQpKSkKICAgICAgICAgLCBtX2xh
eWVyUmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQuZ2V0KCkpCiAgICAg
ewogICAgIH0KQEAgLTE0Nyw3ICsxNDgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViR3JhcGhpY3NN
ZW1vcnlBbGxvY2F0aW9uIG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyWWVzOwogICAgIFdlYkdyYXBo
aWNzTWVtb3J5QWxsb2NhdGlvbiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vOwogCi0gICAgT3du
UHRyPEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQ+IG1fY29udGV4
dDsKKyAgICBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0KiBtX3Jh
d0NvbnRleHQ7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAg
RmFrZUNDUmVuZGVyZXJDbGllbnQgbV9tb2NrQ2xpZW50OwogICAgIEZha2VMYXllclJlbmRlcmVy
Q2hyb21pdW0gbV9sYXllclJlbmRlcmVyQ2hyb21pdW07CiAgICAgQ0NTY29wZWRTZXR0aW5ncyBt
X3Njb3BlZFNldHRpbmdzOwpAQCAtMTU4LDEyICsxNjAsMTIgQEAgcHJvdGVjdGVkOgogLy8gRXhw
ZWN0ZWQ6IGl0IGRvZXMgbm90aGluZy4KIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0
LCBTdWdnZXN0QmFja2J1ZmZlclllc1doZW5JdEFscmVhZHlFeGlzdHNTaG91bGREb05vdGhpbmcp
CiB7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNr
YnVmZmVyWWVzKTsKKyAgICBtX3Jhd0NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdn
ZXN0SGF2ZUJhY2tidWZmZXJZZXMpOwogICAgIEVYUEVDVF9FUSgwLCBtX21vY2tDbGllbnQuc2V0
RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogCiAgICAgc3dhcEJ1ZmZl
cnMoKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9jb250ZXh0LT5mcmFtZUNvdW50KCkpOworICAgIEVY
UEVDVF9FUSgxLCBtX3Jhd0NvbnRleHQtPmZyYW1lQ291bnQoKSk7CiB9CiAKIC8vIFRlc3QgTGF5
ZXJSZW5kZXJlckNocm9taXVtIGRpc2NhcmRGcmFtZWJ1ZmZlciBmdW5jdGlvbmFsaXR5OgpAQCAt
MTcyLDcgKzE3NCw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0
QmFja2J1ZmZlclllc1doZW5JdEFscmVhZHlFeGlzdHNTaG91bGRECiBURVNUX0YoTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1Nob3VsZERpc2NhcmRCYWNrYnVm
ZmVyQW5kRGFtYWdlUm9vdExheWVyV2hpbGVOb3RWaXNpYmxlKQogewogICAgIG1fbGF5ZXJSZW5k
ZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwotICAgIG1fY29udGV4dC0+c2V0TWVtb3J5
QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBtX3Jhd0NvbnRleHQt
PnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQ
RUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAg
ICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2Nh
cmRlZCgpKTsKIH0KQEAgLTE4MywyMyArMTg1LDIyIEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2FyZEJhY2tidWZmZXJBbmRE
CiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb0Rv
Tm90aGluZ1doZW5WaXNpYmxlKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZp
c2libGUodHJ1ZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2Vz
dEhhdmVCYWNrYnVmZmVyTm8pOworICAgIG1fcmF3Q29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlv
bihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ2xp
ZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobV9s
YXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KIAotCiAv
LyBUZXN0IExheWVyUmVuZGVyZXJDaHJvbWl1bSBkaXNjYXJkRnJhbWVidWZmZXIgZnVuY3Rpb25h
bGl0eToKIC8vIFN1Z2dlc3QgZGlzY2FyZGluZyBmcmFtZWJ1ZmZlciB3aGVuIG9uZSBkb2VzIG5v
dCBleGlzdC4KIC8vIEV4cGVjdGVkOiBpdCBkb2VzIG5vdGhpbmcuCiBURVNUX0YoTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0U2hv
dWxkRG9Ob3RoaW5nKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUo
ZmFsc2UpOwotICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZl
QmFja2J1ZmZlck5vKTsKKyAgICBtX3Jhd0NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9z
dWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5z
ZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJl
bmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIAotICAgIG1fY29udGV4
dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBt
X3Jhd0NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJO
byk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdl
Q291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFt
ZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KQEAgLTIxMCw3ICsyMTEsNyBAQCBURVNUX0YoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0
U2hvdWxkRG9ObwogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIERpc2NhcmRlZEJh
Y2tidWZmZXJJc1JlY3JlYXRlZEZvclNjb3BlRHVyYXRpb24pCiB7CiAgICAgbV9sYXllclJlbmRl
cmVyQ2hyb21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlB
bGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIG1fcmF3Q29udGV4dC0+
c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBF
Q1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkp
OwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNv
dW50KCkpOwogCkBAIC0yMTksMTMgKzIyMCwxMyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdCwgRGlzY2FyZGVkQmFja2J1ZmZlcklzUmVjcmVhdGVkRm9yU2NvcGVEdXJhdGlvbgog
ICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlz
Y2FyZGVkKCkpOwogCiAgICAgc3dhcEJ1ZmZlcnMoKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9jb250
ZXh0LT5mcmFtZUNvdW50KCkpOworICAgIEVYUEVDVF9FUSgxLCBtX3Jhd0NvbnRleHQtPmZyYW1l
Q291bnQoKSk7CiB9CiAKIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBGcmFtZWJ1
ZmZlckRpc2NhcmRlZEFmdGVyUmVhZGJhY2tXaGVuTm90VmlzaWJsZSkKIHsKICAgICBtX2xheWVy
UmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKGZhbHNlKTsKLSAgICBtX2NvbnRleHQtPnNldE1l
bW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CisgICAgbV9yYXdDb250
ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOwogICAg
IEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJk
ZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFt
YWdlQ291bnQoKSk7CiAKQEAgLTMwOSw3ICszMTAsOSBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNOb3RNYWtlU3luY2hyb25vdXNDYWxscykKIHsK
ICAgICBDQ1Njb3BlZFNldHRpbmdzIHNjb3BlZFNldHRpbmdzOwogICAgIEZha2VDQ1JlbmRlcmVy
Q2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSk7CisgICAgT3du
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KAorICAgICAgICBDQ0dyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpKSk7
CisKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgm
bW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShsYXllclJlbmRl
cmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpKTsKQEAgLTM1Miw3ICszNTUsOCBAQCBURVNUKExheWVy
UmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhRdWlja2x5TG9zdENvbnRl
eHREb2VzTm90QXNzZQogewogICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7CiAg
ICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBPd25QdHI8V2ViR3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQoYWRvcHRQdHIobmV3IExvc2VDb250ZXh0T25GaXJzdEdldENv
bnRleHQpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoCisgICAgICAg
IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgTG9zZUNvbnRleHRPbkZp
cnN0R2V0Q29udGV4dCkpKTsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVu
ZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CiAKICAgICBsYXllclJl
bmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpOwpAQCAtMzczLDcgKzM3Nyw4IEBAIHB1YmxpYzoK
IFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uV2l0aG91dEdw
dU1lbW9yeU1hbmFnZXJFeHRlbnNpb25TdXBwb3J0U2hvdWxkRGVmYXVsdFRvTm9uWmVyb0FsbG9j
YXRpb24pCiB7CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBPd25Q
dHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoYWRvcHRQdHIobmV3IENvbnRleHRUaGF0
RG9lc05vdFN1cHBvcnRNZW1vcnlNYW5hZ21lbnRFeHRlbnNpb25zKSk7CisgICAgT3duUHRyPEND
R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KAorICAgICAgICBDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QoYWRvcHRQdHIobmV3IENvbnRleHRUaGF0RG9lc05vdFN1cHBvcnRNZW1vcnlNYW5hZ21l
bnRFeHRlbnNpb25zKSkpOwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5k
ZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgpKTsKIAogICAgIGxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCk7CkBAIC0zOTksNyArNDA0LDkgQEAgcHJpdmF0ZToK
IFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIG9wYXF1ZUJhY2tncm91bmQpCiB7CiAg
ICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBPd25QdHI8Q2xlYXJDb3Vu
dGluZ0NvbnRleHQ+IGNvbnRleHQoYWRvcHRQdHIobmV3IENsZWFyQ291bnRpbmdDb250ZXh0KSk7
CisgICAgQ2xlYXJDb3VudGluZ0NvbnRleHQqIGNsZWFyQ291bnRpbmdDb250ZXh0ID0gbmV3IENs
ZWFyQ291bnRpbmdDb250ZXh0OworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4
dCgKKyAgICAgICAgQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKGNsZWFyQ291
bnRpbmdDb250ZXh0KSkpOwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5k
ZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgpKTsKIAogICAgIG1vY2tDbGll
bnQucm9vdFJlbmRlclBhc3MoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGZhbHNlKTsK
QEAgLTQxMywxNiArNDIwLDE4IEBAIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIG9w
YXF1ZUJhY2tncm91bmQpCiAgICAgLy8gT24gREVCVUcgYnVpbGRzLCByZW5kZXIgcGFzc2VzIHdp
dGggb3BhcXVlIGJhY2tncm91bmQgY2xlYXIgdG8gYmx1ZSB0bwogICAgIC8vIGVhc2lseSBzZWUg
cmVnaW9ucyB0aGF0IHdlcmUgbm90IGRyYXduIG9uIHRoZSBzY3JlZW4uCiAjaWYgZGVmaW5lZChO
REVCVUcpCi0gICAgRVhQRUNUX0VRKDAsIGNvbnRleHQtPmNsZWFyQ291bnQoKSk7CisgICAgRVhQ
RUNUX0VRKDAsIGNsZWFyQ291bnRpbmdDb250ZXh0LT5jbGVhckNvdW50KCkpOwogI2Vsc2UKLSAg
ICBFWFBFQ1RfRVEoMSwgY29udGV4dC0+Y2xlYXJDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwg
Y2xlYXJDb3VudGluZ0NvbnRleHQtPmNsZWFyQ291bnQoKSk7CiAjZW5kaWYKIH0KIAogVEVTVChM
YXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogewogICAg
IEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPENsZWFyQ291bnRp
bmdDb250ZXh0PiBjb250ZXh0KGFkb3B0UHRyKG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCkpOwor
ICAgIENsZWFyQ291bnRpbmdDb250ZXh0KiBjbGVhckNvdW50aW5nQ29udGV4dCA9IG5ldyBDbGVh
ckNvdW50aW5nQ29udGV4dDsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQo
CisgICAgICAgIENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihjbGVhckNvdW50
aW5nQ29udGV4dCkpKTsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVy
ZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CiAKICAgICBtb2NrQ2xpZW50
LnJvb3RSZW5kZXJQYXNzKCktPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsKQEAg
LTQzMyw1ICs0NDIsNSBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCB0cmFuc3Bh
cmVudEJhY2tncm91bmQpCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmRyYXdSZW5kZXJQYXNz
KG1vY2tDbGllbnQucm9vdFJlbmRlclBhc3MoKSwgRmxvYXRSZWN0KCkpOwogICAgIGxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5maW5pc2hEcmF3aW5nRnJhbWUoKTsKIAotICAgIEVYUEVDVF9FUSgxLCBj
b250ZXh0LT5jbGVhckNvdW50KCkpOworICAgIEVYUEVDVF9FUSgxLCBjbGVhckNvdW50aW5nQ29u
dGV4dC0+Y2xlYXJDb3VudCgpKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>