<?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>84311</bug_id>
          
          <creation_ts>2012-04-18 20:03:27 -0700</creation_ts>
          <short_desc>[chromium] Use TextureLayerChromium for WebGL content instead of a dedicated layer type</short_desc>
          <delta_ts>2012-04-23 19:01:03 -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>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>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>605320</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-18 20:03:27 -0700</bug_when>
    <thetext>[chromium] Use TextureLayerChromium for WebGL content instead of a dedicated layer type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605330</commentid>
    <comment_count>1</comment_count>
      <attachid>137829</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-18 20:15:43 -0700</bug_when>
    <thetext>Created attachment 137829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605331</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-18 20:17:02 -0700</bug_when>
    <thetext>Note that with this patch CanvasLayerChromium is somewhat silly, since it&apos;s a only a base class for Canvas2DLayerChromium.  I left this alone for two reasons:

1.) I&apos;m going to port Canvas2DLayerChromium over to TextureLayerChromium soon anyway
2.) I don&apos;t want to cause collisions with other Canvas2DLayerChromium patches.

I also plan to move up to depending on platform/WebExternalTextureLayerChromium soon, but I think going piece-by-piece is a better staging strategy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605332</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 20:18:47 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608030</commentid>
    <comment_count>4</comment_count>
      <attachid>137829</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-23 14:45:00 -0700</bug_when>
    <thetext>Comment on attachment 137829
Patch

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

Looks good in general.  Here&apos;s some assorted comments.

&gt; Source/WebCore/ChangeLog:14
&gt; +        This cuts down the compositor interface significantly and allows for more code use in exchange for code to make
&gt; +        TextureLayerChromium more general.

More code...*re*use? I&apos;m not sure what you&apos;re trying to say here.

&gt; Source/WebCore/platform/graphics/chromium/TextureLayerChromium.h:39
&gt; +    virtual unsigned prepareTexture(CCTextureUpdater&amp;) = 0;
&gt; +    virtual GraphicsContext3D* context() = 0;

Can you add comments for this API so it&apos;s clear what clients need to be doing to implement it?

&gt; Source/WebCore/platform/graphics/chromium/TextureLayerChromium.h:65
&gt; +    // Sets whether this texture has an alpha channel. Defaults to true.
&gt; +    void setHasAlpha(bool);

From an API perspective, how does hasAlpha() relate to opaque()? Could they be the same thing?

&gt; Source/WebCore/platform/graphics/gpu/DrawingBuffer.h:161
&gt; +    OwnPtr&lt;DrawingBufferPrivate&gt; m_private;

(Huh.  I thought you couldn&apos;t have a forward declared OwnPtr type.  Maybe if the destructor knows the full type, it&apos;s ok?)

&gt; Source/WebKit/chromium/tests/WebGLLayerChromiumTest.cpp:-39
&gt; -TEST(WebGLLayerChromiumTest, opaqueFormats)

Is there some corresponding unit test you can write for DrawingBuffer setting up the right flags on TextureLayerChromium based on the GC3D attributes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608245</commentid>
    <comment_count>5</comment_count>
      <attachid>137829</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-23 17:48:46 -0700</bug_when>
    <thetext>Comment on attachment 137829
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        TextureLayerChromium more general.
&gt; 
&gt; More code...*re*use? I&apos;m not sure what you&apos;re trying to say here.

Me neither. Will take another crack at this sentence

&gt;&gt; Source/WebCore/platform/graphics/chromium/TextureLayerChromium.h:65
&gt;&gt; +    void setHasAlpha(bool);
&gt; 
&gt; From an API perspective, how does hasAlpha() relate to opaque()? Could they be the same thing?

Yes, turns out it&apos;s redundant.  setHasAlpha() is used to pick the blending mode, but if the caller sets premultipliedAlpha() correctly (which it does) that&apos;s sufficient to pick the blend mode. switched DrawingBuffer to using setOpaque() so we can disable blending completely if we don&apos;t need it

&gt;&gt; Source/WebCore/platform/graphics/gpu/DrawingBuffer.h:161
&gt;&gt; +    OwnPtr&lt;DrawingBufferPrivate&gt; m_private;
&gt; 
&gt; (Huh.  I thought you couldn&apos;t have a forward declared OwnPtr type.  Maybe if the destructor knows the full type, it&apos;s ok?)

(You can, so long as the c&apos;tor and d&apos;tor can see the real type. DrawingBuffer::DrawingBuffer() and DrawingBuffer::~DrawingBuffer() are in DrawingBufferChromium.cpp, so it&apos;s all good)

&gt;&gt; Source/WebKit/chromium/tests/WebGLLayerChromiumTest.cpp:-39
&gt;&gt; -TEST(WebGLLayerChromiumTest, opaqueFormats)
&gt; 
&gt; Is there some corresponding unit test you can write for DrawingBuffer setting up the right flags on TextureLayerChromium based on the GC3D attributes?

I can take a swing. I doubt these provide much real value, though - it&apos;s pretty much testing a getter/setter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608248</commentid>
    <comment_count>6</comment_count>
      <attachid>138477</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-23 17:50:44 -0700</bug_when>
    <thetext>Created attachment 138477
everything but the new unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608261</commentid>
    <comment_count>7</comment_count>
      <attachid>138479</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-23 17:59:57 -0700</bug_when>
    <thetext>Created attachment 138479
unit test for alpha attribute propagating to layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608286</commentid>
    <comment_count>8</comment_count>
      <attachid>138479</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-23 18:39:12 -0700</bug_when>
    <thetext>Comment on attachment 138479
unit test for alpha attribute propagating to layer

Other than maybe needing to be rebased, these changes look good to me.  Thanks for removing the unnecessary hasAlpha; that really wormed its way through a lot of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608291</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-23 19:01:03 -0700</bug_when>
    <thetext>Committed r114983: &lt;http://trac.webkit.org/changeset/114983&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137829</attachid>
            <date>2012-04-18 20:15:43 -0700</date>
            <delta_ts>2012-04-23 17:50:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84311-20120418201542.patch</filename>
            <type>text/plain</type>
            <size>32885</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3ZjkzMzcyODE3MTMw
MmIyMjlmNTNkMzYwYTMwMTg3Y2NkODU1MmJmLi44MjJiNTE4ZWY0YTI5MmY1ZmIyYWQ3NDM4ZjBk
NDllNzk0MjRlYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0xOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVXNlIFRleHR1cmVMYXllckNocm9taXVtIGZvciBXZWJHTCBjb250ZW50IGluc3RlYWQgb2Yg
YSBkZWRpY2F0ZWQgbGF5ZXIgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgc29tZSB1bnVzZWQgZ2V0dGVycy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIpOgorCiAyMDEyLTA0LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IFdlYlBsdWdpbkNv
bnRhaW5lckltcGwgb3ZlciB0byB1c2UgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA0Nzc0ZGU0NjMxYTg1ZWFmNzQ0MmI5MTU2MTFlZTY3ZmY3Njk2OTZiLi5hN2M4MDlmZTE1
NGRlZWNjZGFmMzlmN2E1NjY2ODRmODY5ZDU2M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTItMDQtMTggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIFVzZSBUZXh0dXJlTGF5ZXJDaHJvbWl1bSBmb3IgV2ViR0wgY29u
dGVudCBpbnN0ZWFkIG9mIGEgZGVkaWNhdGVkIGxheWVyIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MzExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViR0wgY29udGVudCdzIGludGVyZmFjZSB3
aXRoIHRoZSBjb21wb3NpdG9yIGNhbiBiZSBleHByZXNzZWQgaW4gdGVybXMgb2YgdHdvIGJhc2lj
IG9wZXJhdGlvbnM6CisgICAgICAgIDEuKSBEbyBzb21lIHN0dWZmCisgICAgICAgIDIuKSBQcm92
aWRlIGEgdGV4dHVyZSBJRCBmb3IgdGhlIGNvbXBvc2l0b3IgdG8gdXNlCisKKyAgICAgICAgVGhp
cyBpbXBsZW1lbnRzICgxKSBpbiBEcmF3aW5nQnVmZmVyQ2hyb21pdW0gYW5kIHVzZXMgdGhlIGFs
cmVhZHktZXhpc3RpbmcgVGV4dHVyZUxheWVyQ2hyb21pdW0gdG8gaGFuZGxlICgyKS4KKyAgICAg
ICAgVGhpcyBjdXRzIGRvd24gdGhlIGNvbXBvc2l0b3IgaW50ZXJmYWNlIHNpZ25pZmljYW50bHkg
YW5kIGFsbG93cyBmb3IgbW9yZSBjb2RlIHVzZSBpbiBleGNoYW5nZSBmb3IgY29kZSB0byBtYWtl
CisgICAgICAgIFRleHR1cmVMYXllckNocm9taXVtIG1vcmUgZ2VuZXJhbC4KKworICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3
aW5nQnVmZmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6
fkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoRHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6OkRyYXdpbmdCdWZmZXJQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjp+RHJhd2luZ0J1ZmZlclBy
aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6OmxheWVyKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGV4dHVyZUxheWVyQ2hyb21pdW1D
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQ6On5U
ZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFRleHR1cmVMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVMYXllckNo
cm9taXVtOjpjbGVhckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpncmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChEcmF3aW5nQnVmZmVyKToKKwogMjAxMi0wNC0xNiAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCBXZWJQ
bHVnaW5Db250YWluZXJJbXBsIG92ZXIgdG8gdXNlIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM4Nzc0YWJjMzU1MjE4MjA1MzA2NDM5ODAyMjNj
N2ViNDE5MTY5YjcuLjMzYTc5M2VhYmFhYjkwMGY2ODkzOGRjOGIyOTE4ODZhZTQ3Njc5ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQtMTggIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFVzZSBUZXh0dXJlTGF5ZXJDaHJvbWl1bSBmb3IgV2ViR0wgY29udGVudCBpbnN0ZWFkIG9mIGEg
ZGVkaWNhdGVkIGxheWVyIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0MzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3BwOgorICAgICAgICAqIHRlc3RzL1dl
YkdMTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHRlc3RzL1dlYkxh
eWVyVGVzdC5jcHA6CisKIDIwMTItMDQtMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENvbnZlcnQgV2ViUGx1Z2luQ29udGFpbmVy
SW1wbCBvdmVyIHRvIHVzZSBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5o
CmluZGV4IDUyZWZiYjdlYjM4MjA2YjMxZjdlN2ZlOGViYzc1N2RjNTZmNjE0YTguLjgzMzMwZDMz
YzA1MmIxOTgxODVlOTY0ZWIxMjM4OTNlMjBmNzMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgKQEAg
LTYwLDEyICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gU2V0cyB3aGV0aGVyIG9yIG5vdCB0aGUg
dGV4dHVyZSBzaG91bGQgYmUgZmxpcHBlZCBpbiB0aGUgWSBkaXJlY3Rpb24gd2hlbgogICAgIC8v
IHJlbmRlcmVkLgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGbGlwcGVkKGJvb2wpOwotICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBmbGlwcGVkKCkgY29uc3Q7CiAKICAgICAvLyBTZXRzIHRoZSBy
ZWN0IGluIFVWIHNwYWNlIG9mIHRoZSB0ZXh0dXJlIHRoYXQgaXMgbWFwcGVkIHRvIHRoZSBsYXll
cgogICAgIC8vIGJvdW5kcy4KICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VVZSZWN0KGNvbnN0
IFdlYkZsb2F0UmVjdCYpOwotICAgIFdFQktJVF9FWFBPUlQgV2ViRmxvYXRSZWN0IHV2UmVjdCgp
IGNvbnN0OwogCiBwcml2YXRlOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDY1NTZlODAwYWEyMzIxMjM1MmJhY2UwZDM4YWZkMjIzZDM0MTFlYjUuLjk1NDRi
YzViZGE3ZjA2ZWNmNzg2MzhiYmYwYWZkNGRlNWNkZTIyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTM1OTQsOCArMzU5NCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVkRNWFBhcnNlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVB
bmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAppbmRleCA0Y2Q4OTQyNmQ2Y2RjOTVkYTBkMDE0Y2Q2MTViYTQ4ZWU1MTI1ZThk
Li42NTQ2YWQ2NmI1NWZmYTg4ODdjYzk5YjhhZjE1NWVhYTZhOWJiMjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTM1LDggKzM1LDkgQEAKICNpbmNsdWRlICJD
YW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIldlYkdMTGF5ZXJD
aHJvbWl1bS5oIgorI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC04OSw5ICs5MCw2IEBAIERy
YXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAK
IERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKIHsKLSAgICBpZiAobV9wbGF0Zm9ybUxh
eWVyKQotICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNldERyYXdpbmdCdWZmZXIoMCk7Ci0KICAg
ICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDgsMTYgKzE0Niw1NiBA
QCB1bnNpZ25lZCBEcmF3aW5nQnVmZmVyOjpmcm9udENvbG9yQnVmZmVyKCkgY29uc3QKIH0KICNl
bmRpZgogCitjbGFzcyBEcmF3aW5nQnVmZmVyUHJpdmF0ZSA6IHB1YmxpYyBUZXh0dXJlTGF5ZXJD
aHJvbWl1bUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhd2luZ0J1ZmZlclBy
aXZhdGUpOworcHVibGljOgorICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERyYXdp
bmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCisgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRyYXdp
bmdCdWZmZXIpCisgICAgICAgICwgbV9sYXllcihUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KHRoaXMpKQorICAgIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0
cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4
dEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgbV9sYXllci0+c2V0SGFzQWxwaGEoYXR0cmlidXRlcy5h
bHBoYSk7CisgICAgICAgIG1fbGF5ZXItPnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVz
LnByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgfQorCisgICAgdmlydHVhbCB+RHJhd2luZ0J1ZmZl
clByaXZhdGUoKQorICAgIHsKKyAgICAgICAgbV9sYXllci0+Y2xlYXJDbGllbnQoKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHByZXBhcmVUZXh0dXJlKENDVGV4dHVyZVVwZGF0ZXIm
IHVwZGF0ZXIpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnByZXBh
cmVCYWNrQnVmZmVyKCk7CisKKyAgICAgICAgY29udGV4dCgpLT5mbHVzaCgpOworICAgICAgICBj
b250ZXh0KCktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAgICB1bnNpZ25lZCB0ZXh0
dXJlSWQgPSBtX2RyYXdpbmdCdWZmZXItPmZyb250Q29sb3JCdWZmZXIoKTsKKyAgICAgICAgaWYg
KG1fZHJhd2luZ0J1ZmZlci0+cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkpCisg
ICAgICAgICAgICB1cGRhdGVyLmFwcGVuZENvcHkobV9kcmF3aW5nQnVmZmVyLT5jb2xvckJ1ZmZl
cigpLCB0ZXh0dXJlSWQsIG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgpKTsKKworICAgICAgICByZXR1
cm4gdGV4dHVyZUlkOworICAgIH0KKworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZHJhd2luZ0J1ZmZlci0+
Z3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB9CisKKyAgICBMYXllckNocm9taXVtKiBsYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBEcmF3aW5n
QnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisgICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9taXVt
PiBtX2xheWVyOworfTsKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRm
b3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQogewotICAgIGlmICghbV9w
bGF0Zm9ybUxheWVyKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllciA9IFdlYkdMTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllci0+c2V0RHJhd2luZ0J1ZmZl
cih0aGlzKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXRPcGFxdWUobV9hbHBoYSA9PSBP
cGFxdWUpOwotICAgIH0KKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlID0g
YWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXJQcml2YXRlKHRoaXMpKTsKIAotICAgIHJldHVybiBt
X3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXIoKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA3ZmEz
YzM1Njc5OTJmNTNkYmU2NTQ1ODQ3MTk3NmRmN2M2MDNkY2NhLi5iYmUwYTg0ODVmMWEyZTI3YjZm
MmZjODMzZGU1ZGI1MWFkNGRlZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXpl
ci5oIgotI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNp
bmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXll
ckNocm9taXVtLmNwcAppbmRleCAyOWNjNmJhMGIxMjRjMGZjZWVhYWEwM2M2YzA1ZWRjYTkzNmRi
ZjA1Li4xOWM5MTYxNzk2Y2U1YjE3ZDIwYTI3ZDQ2ZTBkZjBmYThkNjNiODM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwCkBAIC0yOSw0OSArMjksNzcgQEAKIAogI2luY2x1
ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIK
KyNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVM
YXllckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFRleHR1cmVM
YXllckNocm9taXVtPiBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKK1Bhc3NSZWZQdHI8
VGV4dHVyZUxheWVyQ2hyb21pdW0+IFRleHR1cmVMYXllckNocm9taXVtOjpjcmVhdGUoVGV4dHVy
ZUxheWVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFRleHR1cmVMYXllckNocm9taXVtKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVM
YXllckNocm9taXVtKGNsaWVudCkpOwogfQogCi1UZXh0dXJlTGF5ZXJDaHJvbWl1bTo6VGV4dHVy
ZUxheWVyQ2hyb21pdW0oKQorVGV4dHVyZUxheWVyQ2hyb21pdW06OlRleHR1cmVMYXllckNocm9t
aXVtKFRleHR1cmVMYXllckNocm9taXVtQ2xpZW50KiBjbGllbnQpCiAgICAgOiBMYXllckNocm9t
aXVtKCkKLSAgICAsIG1fdGV4dHVyZUlkKDApCisgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAg
LCBtX2ZsaXBwZWQodHJ1ZSkKICAgICAsIG1fdXZSZWN0KDAsIDAsIDEsIDEpCisgICAgLCBtX2hh
c0FscGhhKHRydWUpCisgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYSh0cnVlKQorICAgICwgbV9y
YXRlTGltaXRDb250ZXh0KGZhbHNlKQorICAgICwgbV9jb250ZXh0TG9zdChmYWxzZSkKKyAgICAs
IG1fdGV4dHVyZUlkKDApCiAgICAgLCBtX2lvU3VyZmFjZUlkKDApCiB7CiB9CiAKK1RleHR1cmVM
YXllckNocm9taXVtOjp+VGV4dHVyZUxheWVyQ2hyb21pdW0oKQoreworICAgIGlmIChtX3JhdGVM
aW1pdENvbnRleHQgJiYgbV9jbGllbnQgJiYgbGF5ZXJUcmVlSG9zdCgpKQorICAgICAgICBsYXll
clRyZWVIb3N0KCktPnN0b3BSYXRlTGltaXRlcihtX2NsaWVudC0+Y29udGV4dCgpKTsKK30KKwog
UGFzc093blB0cjxDQ0xheWVySW1wbD4gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5
ZXJJbXBsKCkKIHsKICAgICByZXR1cm4gQ0NUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXll
cklkKTsKIH0KIAotYm9vbCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29u
c3QKK3ZvaWQgVGV4dHVyZUxheWVyQ2hyb21pdW06OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQog
ewotICAgIHJldHVybiAobV90ZXh0dXJlSWQgfHwgbV9pb1N1cmZhY2VJZCkgJiYgTGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCk7CisgICAgbV9mbGlwcGVkID0gZmxpcHBlZDsKKyAgICBzZXRO
ZWVkc0NvbW1pdCgpOwogfQogCi12b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRUZXh0dXJl
SWQodW5zaWduZWQgaWQpCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRVVlJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIG1fdGV4dHVyZUlkID0gaWQ7CisgICAgbV91dlJl
Y3QgPSByZWN0OwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgVGV4dHVyZUxheWVy
Q2hyb21pdW06OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQordm9pZCBUZXh0dXJlTGF5ZXJDaHJv
bWl1bTo6c2V0SGFzQWxwaGEoYm9vbCBoYXNBbHBoYSkKIHsKLSAgICBtX2ZsaXBwZWQgPSBmbGlw
cGVkOworICAgIG1faGFzQWxwaGEgPSBoYXNBbHBoYTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwog
fQogCi12b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRVVlJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQordm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0UHJlbXVsdGlwbGllZEFscGhh
KGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKQogewotICAgIG1fdXZSZWN0ID0gcmVjdDsKKyAgICBt
X3ByZW11bHRpcGxpZWRBbHBoYSA9IHByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBzZXROZWVkc0Nv
bW1pdCgpOworfQorCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRSYXRlTGltaXRDb250
ZXh0KGJvb2wgcmF0ZUxpbWl0KQoreworICAgIGlmICghcmF0ZUxpbWl0ICYmIG1fcmF0ZUxpbWl0
Q29udGV4dCAmJiBtX2NsaWVudCAmJiBsYXllclRyZWVIb3N0KCkpCisgICAgICAgIGxheWVyVHJl
ZUhvc3QoKS0+c3RvcFJhdGVMaW1pdGVyKG1fY2xpZW50LT5jb250ZXh0KCkpOworCisgICAgbV9y
YXRlTGltaXRDb250ZXh0ID0gcmF0ZUxpbWl0OworfQorCit2b2lkIFRleHR1cmVMYXllckNocm9t
aXVtOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgbV90ZXh0dXJlSWQgPSBpZDsK
ICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCkBAIC04MiwxNCArMTEwLDM5IEBAIHZvaWQgVGV4
dHVyZUxheWVyQ2hyb21pdW06OnNldElPU3VyZmFjZVByb3BlcnRpZXMoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCB1aW50MzJfCiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBUZXh0dXJl
TGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5
UmVjdCkKK3sKKyAgICBMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5UmVj
dCk7CisKKyAgICBpZiAobV9yYXRlTGltaXRDb250ZXh0ICYmIG1fY2xpZW50ICYmIGxheWVyVHJl
ZUhvc3QoKSkKKyAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5zdGFydFJhdGVMaW1pdGVyKG1fY2xp
ZW50LT5jb250ZXh0KCkpOworfQorCitib29sIFRleHR1cmVMYXllckNocm9taXVtOjpkcmF3c0Nv
bnRlbnQoKSBjb25zdAoreworICAgIHJldHVybiAobV9jbGllbnQgfHwgbV90ZXh0dXJlSWQgfHwg
bV9pb1N1cmZhY2VJZCkgJiYgIW1fY29udGV4dExvc3QgJiYgTGF5ZXJDaHJvbWl1bTo6ZHJhd3ND
b250ZW50KCk7Cit9CisKK3ZvaWQgVGV4dHVyZUxheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1
cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKQoreworICAgIGlm
IChtX2NsaWVudCkgeworICAgICAgICBtX3RleHR1cmVJZCA9IG1fY2xpZW50LT5wcmVwYXJlVGV4
dHVyZSh1cGRhdGVyKTsKKyAgICAgICAgbV9jb250ZXh0TG9zdCA9IG1fY2xpZW50LT5jb250ZXh0
KCktPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpOT19FUlJPUjsKKyAgICB9CisKKyAgICBtX25lZWRzRGlzcGxheSA9IGZh
bHNlOworfQorCiB2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKiBsYXllcikKIHsKICAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1Rv
KGxheWVyKTsKIAogICAgIENDVGV4dHVyZUxheWVySW1wbCogdGV4dHVyZUxheWVyID0gc3RhdGlj
X2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXIpOwotICAgIHRleHR1cmVMYXllci0+c2V0
VGV4dHVyZUlkKG1fdGV4dHVyZUlkKTsKICAgICB0ZXh0dXJlTGF5ZXItPnNldEZsaXBwZWQobV9m
bGlwcGVkKTsKICAgICB0ZXh0dXJlTGF5ZXItPnNldFVWUmVjdChtX3V2UmVjdCk7CisgICAgdGV4
dHVyZUxheWVyLT5zZXRIYXNBbHBoYShtX2hhc0FscGhhKTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNl
dFByZW11bHRpcGxpZWRBbHBoYShtX3ByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgdGV4dHVyZUxh
eWVyLT5zZXRUZXh0dXJlSWQobV90ZXh0dXJlSWQpOwogICAgIHRleHR1cmVMYXllci0+c2V0SU9T
dXJmYWNlUHJvcGVydGllcyhtX2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlSWQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0
dXJlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uaAppbmRleCA3YTkxMDkyNDgxNTFiNGQxMTAxOGM3
ZTg2NzA5ZjM5YWFjNTFjNTU5Li4xNzU4MDE2NDkwOTA0ZGI4NGYzZDI2MWJjMmRlOGUwNDczNDc1
ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmgKQEAgLTMzLDM0ICszMyw3MiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRleHR1cmVMYXllckNocm9taXVtQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHByZXBhcmVUZXh0dXJlKENDVGV4
dHVyZVVwZGF0ZXImKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflRleHR1cmVMYXllckNocm9taXVt
Q2xpZW50KCkgeyB9Cit9OworCiAvLyBBIExheWVyIGNvbnRhaW5pbmcgYSB0aGUgcmVuZGVyZWQg
b3V0cHV0IG9mIGEgcGx1Z2luIGluc3RhbmNlLgogY2xhc3MgVGV4dHVyZUxheWVyQ2hyb21pdW0g
OiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dHVyZUxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOworICAgIC8vIElmIHRoaXMgdGV4dHVyZSBs
YXllciByZXF1aXJlcyBzcGVjaWFsIHByZXBhcmF0aW9uIGxvZ2ljIGZvciBlYWNoIGZyYW1lIGRy
aXZlbiBieQorICAgIC8vIHRoZSBjb21wb3NpdG9yLCBwYXNzIGluIGEgbm9uLW5pbCBjbGllbnQu
IFBhc3MgaW4gYSBuaWwgY2xpZW50IHBvaW50ZXIgaWYgdGV4dHVyZSB1cGRhdGVzCisgICAgLy8g
YXJlIGRyaXZlbiBieSBhbiBleHRlcm5hbCBwcm9jZXNzLgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRleHR1cmVMYXllckNocm9taXVtPiBjcmVhdGUoVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQq
KTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJlTGF5ZXJDaHJvbWl1bSgpOworCisgICAgdm9pZCBjbGVh
ckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NM
YXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgLy8gU2V0cyB3aGV0aGVyIHRo
aXMgdGV4dHVyZSBzaG91bGQgYmUgWS1mbGlwcGVkIGF0IGRyYXcgdGltZS4gRGVmYXVsdHMgdG8g
dHJ1ZS4KKyAgICB2b2lkIHNldEZsaXBwZWQoYm9vbCk7CisKKyAgICAvLyBTZXRzIGEgVVYgdHJh
bnNmb3JtIHRvIGJlIHVzZWQgYXQgZHJhdyB0aW1lLiBEZWZhdWx0cyB0byAoMCwgMCwgMSwgMSku
CisgICAgdm9pZCBzZXRVVlJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisKKyAgICAvLyBTZXRzIHdo
ZXRoZXIgdGhpcyB0ZXh0dXJlIGhhcyBhbiBhbHBoYSBjaGFubmVsLiBEZWZhdWx0cyB0byB0cnVl
LgorICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCk7CisKKyAgICAvLyBTZXRzIHdoZXRoZXIgdGhl
IGFscGhhIGNoYW5uZWwgaXMgcHJlbXVsdGlwbGllZCBvciB1bnByZW11bHRpcGxpZWQuIERlZmF1
bHRzIHRvIHRydWUuCisgICAgdm9pZCBzZXRQcmVtdWx0aXBsaWVkQWxwaGEoYm9vbCk7CisKKyAg
ICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBjb250ZXh0IHNob3VsZCByYXRlIGxpbWl0IG9uIGRhbWFn
ZSB0byBwcmV2ZW50IHRvbyBtYW55IGZyYW1lcyBmcm9tCisgICAgLy8gYmVpbmcgcXVldWVkIHVw
IGJlZm9yZSB0aGUgY29tcG9zaXRvciBnZXRzIGEgY2hhbmNlIHRvIHJ1bi4gUmVxdWlyZXMgYSBu
b24tbmlsIGNsaWVudC4KKyAgICAvLyBEZWZhdWx0cyB0byBmYWxzZS4KKyAgICB2b2lkIHNldFJh
dGVMaW1pdENvbnRleHQoYm9vbCk7CiAKICAgICAvLyBDb2RlIHBhdGggZm9yIHBsdWdpbnMgd2hp
Y2ggc3VwcGx5IHRoZWlyIG93biB0ZXh0dXJlIElELgogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVu
c2lnbmVkKTsKLSAgICB2b2lkIHNldEZsaXBwZWQoYm9vbCk7Ci0gICAgYm9vbCBmbGlwcGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9mbGlwcGVkOyB9Ci0gICAgdm9pZCBzZXRVVlJlY3QoY29uc3QgRmxv
YXRSZWN0Jik7Ci0gICAgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3V2UmVjdDsgfQogCiAgICAgLy8gQ29kZSBwYXRoIGZvciBwbHVnaW5zIHdoaWNoIHJlbmRlciB2
aWEgYW4gSU9TdXJmYWNlLgogICAgIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyhpbnQgd2lk
dGgsIGludCBoZWlnaHQsIHVpbnQzMl90IGlvU3VyZmFjZUlkKTsKIAorICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOworCisgICAg
dmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBs
KikgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICBUZXh0dXJlTGF5ZXJDaHJvbWl1bSgpOwor
ICAgIGV4cGxpY2l0IFRleHR1cmVMYXllckNocm9taXVtKFRleHR1cmVMYXllckNocm9taXVtQ2xp
ZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgVGV4dHVy
ZUxheWVyQ2hyb21pdW1DbGllbnQqIG1fY2xpZW50OworCiAgICAgYm9vbCBtX2ZsaXBwZWQ7CiAg
ICAgRmxvYXRSZWN0IG1fdXZSZWN0OworICAgIGJvb2wgbV9oYXNBbHBoYTsKKyAgICBib29sIG1f
cHJlbXVsdGlwbGllZEFscGhhOworICAgIGJvb2wgbV9yYXRlTGltaXRDb250ZXh0OworICAgIGJv
b2wgbV9jb250ZXh0TG9zdDsKKworICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworCiAgICAgSW50
U2l6ZSBtX2lvU3VyZmFjZVNpemU7CiAgICAgdWludDMyX3QgbV9pb1N1cmZhY2VJZDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmNmOWUzODZiNjk4YWZmNDY4MGFhYTYwZDJiNTZmM2M4ZGRlMmQ5MC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi0KLSNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKLQotI2lu
Y2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKLSNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5o
IgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiVGV4dHVyZUNvcGll
ci5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVMYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxX
ZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bSgpKTsKLX0KLQotV2ViR0xMYXll
ckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oKQotICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1
bSgpCi0gICAgLCBtX2hhc0FscGhhKHRydWUpCi0gICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYSh0
cnVlKQotICAgICwgbV9jb250ZXh0TG9zdChmYWxzZSkKLSAgICAsIG1fdGV4dHVyZUlkKDApCi0g
ICAgLCBtX2RyYXdpbmdCdWZmZXIoMCkKLXsKLX0KLQotV2ViR0xMYXllckNocm9taXVtOjp+V2Vi
R0xMYXllckNocm9taXVtKCkKLXsKLSAgICBpZiAoY29udGV4dCgpICYmIGxheWVyVHJlZUhvc3Qo
KSkKLSAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5zdG9wUmF0ZUxpbWl0ZXIoY29udGV4dCgpKTsK
LX0KLQotYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmICFtX2NvbnRleHRMb3N0
OwotfQotCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXIm
IHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopCi17Ci0gICAgaWYgKCFkcmF3c0Nv
bnRlbnQoKSB8fCAhbV9uZWVkc0Rpc3BsYXkgfHwgIW1fZHJhd2luZ0J1ZmZlcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9kcmF3aW5nQnVmZmVyLT5wcmVwYXJlQmFja0J1ZmZlcigpOwotCi0g
ICAgY29udGV4dCgpLT5mbHVzaCgpOwotICAgIGNvbnRleHQoKS0+bWFya0xheWVyQ29tcG9zaXRl
ZCgpOwotICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7Ci0gICAgbV9jb250ZXh0TG9zdCA9IGNv
bnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0g
R3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwotCi0gICAgbV90ZXh0dXJlSWQgPSBtX2RyYXdp
bmdCdWZmZXItPmZyb250Q29sb3JCdWZmZXIoKTsKLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyLT5y
ZXF1aXJlc0NvcHlGcm9tQmFja1RvRnJvbnRCdWZmZXIoKSkKLSAgICAgICAgdXBkYXRlci5hcHBl
bmRDb3B5KG1fZHJhd2luZ0J1ZmZlci0+Y29sb3JCdWZmZXIoKSwgbV90ZXh0dXJlSWQsIGJvdW5k
cygpKTsKLX0KLQotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NM
YXllckltcGwqIGxheWVyKQotewotICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXIpOwotCi0gICAgQ0NUZXh0dXJlTGF5ZXJJbXBsKiB0ZXh0dXJlTGF5ZXIgPSBz
dGF0aWNfY2FzdDxDQ1RleHR1cmVMYXllckltcGwqPihsYXllcik7Ci0gICAgdGV4dHVyZUxheWVy
LT5zZXRUZXh0dXJlSWQobV90ZXh0dXJlSWQpOwotICAgIHRleHR1cmVMYXllci0+c2V0SGFzQWxw
aGEobV9oYXNBbHBoYSk7Ci0gICAgdGV4dHVyZUxheWVyLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEo
bV9wcmVtdWx0aXBsaWVkQWxwaGEpOwotfQotCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0
TmVlZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICBMYXll
ckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5UmVjdCk7Ci0KLSAgICAvLyBJZiBX
ZWJHTCBjb21tYW5kcyBhcmUgaXNzdWVkIG91dHNpZGUgb2YgYSB0aGUgYW5pbWF0aW9uIGNhbGxi
YWNrcywgdGhlbiB1c2UKLSAgICAvLyBjYWxsIHJhdGVMaW1pdE9mZnNjcmVlbkNvbnRleHRDSFJP
TUlVTSgpIHRvIGtlZXAgdGhlIGNvbnRleHQgZnJvbSBnZXR0aW5nIHRvbyBmYXIgYWhlYWQuCi0g
ICAgaWYgKGxheWVyVHJlZUhvc3QoKSkKLSAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5zdGFydFJh
dGVMaW1pdGVyKGNvbnRleHQoKSk7Ci19Ci0KLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjpzZXRE
cmF3aW5nQnVmZmVyKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCi17Ci0gICAgYm9vbCBk
cmF3aW5nQnVmZmVyQ2hhbmdlZCA9IChtX2RyYXdpbmdCdWZmZXIgIT0gZHJhd2luZ0J1ZmZlcik7
Ci0KLSAgICAvLyBUaGUgR3JhcGhpY3NDb250ZXh0M0QgdXNlZCBieSB0aGUgbGF5ZXIgaXMgdGhl
IGNvbnRleHQgYXNzb2NpYXRlZCB3aXRoCi0gICAgLy8gdGhlIGRyYXdpbmcgYnVmZmVyLiBJZiB0
aGUgZHJhd2luZyBidWZmZXIgaXMgY2hhbmdpbmcsIG1ha2Ugc3VyZQotICAgIC8vIHRvIHN0b3Ag
dGhlIHJhdGUgbGltaXRlciBvbiB0aGUgb2xkIGNvbnRleHQsIG5vdCB0aGUgbmV3IGNvbnRleHQg
ZnJvbSB0aGUKLSAgICAvLyBuZXcgZHJhd2luZyBidWZmZXIuCi0gICAgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQzRCA9IGNvbnRleHQoKTsKLSAgICBpZiAobGF5ZXJUcmVlSG9zdCgpICYmIGRy
YXdpbmdCdWZmZXJDaGFuZ2VkICYmIGNvbnRleHQzRCkKLSAgICAgICAgbGF5ZXJUcmVlSG9zdCgp
LT5zdG9wUmF0ZUxpbWl0ZXIoY29udGV4dDNEKTsKLQotICAgIG1fZHJhd2luZ0J1ZmZlciA9IGRy
YXdpbmdCdWZmZXI7Ci0gICAgaWYgKCFtX2RyYXdpbmdCdWZmZXIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBjb250ZXh0
KCktPmdldENvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgbV9oYXNBbHBoYSA9IGF0dHJpYnV0ZXMu
YWxwaGE7Ci0gICAgbV9wcmVtdWx0aXBsaWVkQWxwaGEgPSBhdHRyaWJ1dGVzLnByZW11bHRpcGxp
ZWRBbHBoYTsKLSAgICBtX2NvbnRleHRMb3N0ID0gY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCkt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJS
T1I7Ci19Ci0KLUdyYXBoaWNzQ29udGV4dDNEKiBXZWJHTExheWVyQ2hyb21pdW06OmNvbnRleHQo
KSBjb25zdAotewotICAgIGlmIChkcmF3aW5nQnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBkcmF3
aW5nQnVmZmVyKCktPmdyYXBoaWNzQ29udGV4dDNEKCkuZ2V0KCk7Ci0KLSAgICByZXR1cm4gMDsK
LX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE1ZjU2
MzYyMzU4ZjFjMjQ2MmNhZmY4M2QwMDg4M2I2MWNjZGMwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0KLSNpZm5kZWYgV2ViR0xMYXllckNocm9taXVtX2gKLSNkZWZpbmUgV2ViR0xMYXllckNo
cm9taXVtX2gKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUg
IkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBXZWJH
TExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwotCi0vLyBBIExheWVyIGNvbnRhaW5pbmcgYSBX
ZWJHTCBjYW52YXMKLWNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXll
ckNocm9taXVtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hy
b21pdW0+IGNyZWF0ZSgpOwotCi0gICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ckltcGwqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5UmVjdChj
b25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsKLQotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciop
OwotICAgIERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Ry
YXdpbmdCdWZmZXI7IH0KLXByaXZhdGU6Ci0gICAgV2ViR0xMYXllckNocm9taXVtKCk7Ci0gICAg
ZnJpZW5kIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7Ci0KLSAgICBib29s
IG1faGFzQWxwaGE7Ci0gICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKLSAgICBib29sIG1f
Y29udGV4dExvc3Q7Ci0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0KLSAgICAvLyBUaGUgRHJh
d2luZ0J1ZmZlciBob2xkaW5nIHRoZSBXZWJHTCBjb250ZW50cyBmb3IgdGhpcyBsYXllci4KLSAg
ICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBoZXJlLCBiZWNhdXNlIHRoZSBEcmF3aW5nQnVm
ZmVyIGFscmVhZHkgaG9sZHMKLSAgICAvLyBhIHJlZmVyZW5jZSB0byB0aGUgV2ViR0xMYXllckNo
cm9taXVtLgotICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKLX07Ci0KLX0KLSNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKaW5k
ZXggOTVlYTkwZjA5YmIyMGZkYWEzYWQ5YzhkZDljZDYyYWJkNmQ3NGZiNi4uZWU0ZWZjMTRiZDQ2
Mjc5YzdkZDlmMWMxYWI5MWFmMDVhZmY4ODQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCkBAIC00OCw3ICs0OCw3IEBA
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
IGNsYXNzIEltYWdlRGF0YTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLWNsYXNzIFdlYkdMTGF5
ZXJDaHJvbWl1bTsKK2NsYXNzIERyYXdpbmdCdWZmZXJQcml2YXRlOwogI2VuZGlmCiAKIC8vIE1h
bmFnZXMgYSByZW5kZXJpbmcgdGFyZ2V0IChmcmFtZWJ1ZmZlciArIGF0dGFjaG1lbnQpIGZvciBh
IGNhbnZhcy4gIENhbiBwdWJsaXNoIGl0cyByZW5kZXJpbmcKQEAgLTEyMyw3ICsxMjMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCopOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIERyYXdpbmdCdWZmZXIoR3JhcGhpY3ND
b250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBv
cnRlZCwKQEAgLTE1OCw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIFBsYXRmb3JtM0RPYmplY3Qg
bV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAg
UmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gbV9wbGF0Zm9ybUxheWVyOworICAgIE93blB0cjxE
cmF3aW5nQnVmZmVyUHJpdmF0ZT4gbV9wcml2YXRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA5NTQ4YjJhMGY2NWRiMTk5Mzky
YThiZmU1NWE5Zjk3ZDBlNzI2N2Y0Li42YmU5YTVkMDhhNDI0NmUzOTMxYTcyMDY1ZDFiMDYxZjlm
MjM0Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEzMSw3ICsxMzEsNiBA
QAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5oJywKICAgICAgICAgICAgICd0
ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwJywKICAgICAgICAgICAg
ICd0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwJywKLSAgICAgICAgICAgICd0ZXN0cy9XZWJHTExheWVy
Q2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViTGF5ZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKaW5k
ZXggMjYyMDAyNmJmYjdmMTgzNTQyZjVjNzgyYTBkNzQ5MGIzMGNkYWM2ZC4uZDI0MzllODhkMmQw
YzE5NTVjNWI4YWQ0Nzc1ODEyYjAzZjM5NmI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgUmVmUHRyPFRleHR1cmVMYXllckNo
cm9taXVtPiBsYXllciA9IFRleHR1cmVMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNy
ZWF0ZSgwKTsKICAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKICAgICByZXR1cm4gV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIobGF5ZXIucmVsZWFzZSgpKTsKIH0KQEAgLTU2LDIxICs1Niwx
MSBAQCB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRGbGlwcGVkKGJvb2wgZmxpcHBl
ZCkKICAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldEZsaXBwZWQoZmxpcHBl
ZCk7CiB9CiAKLWJvb2wgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmZsaXBwZWQoKSBjb25zdAot
ewotICAgIHJldHVybiBjb25zdFVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+ZmxpcHBl
ZCgpOwotfQotCiB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRVVlJlY3QoY29uc3Qg
V2ViRmxvYXRSZWN0JiByZWN0KQogewogICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4o
KS0+c2V0VVZSZWN0KHJlY3QpOwogfQogCi1XZWJGbG9hdFJlY3QgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OnV2UmVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkZsb2F0UmVjdChjb25zdFVu
d3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+dXZSZWN0KCkpOwotfQotCiBXZWJFeHRlcm5h
bFRleHR1cmVMYXllcjo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxUZXh0dXJl
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCiAgICAgOiBXZWJMYXllcihsYXllcikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAppbmRleCA3Y2UwNzUzOTM1MDNlNzFjNWNhZGQ4
NmM0NDQ3YTY4NzdkZTFhMjM3Li5lY2Y3NDUyZmM2NTRhMWY3NmU3ZWE2Mzk4OGY3NmU2M2VkZDE5
MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCkBAIC0zMSwxMyAr
MzEsMTEgQEAKICNpbmNsdWRlICJTa01hdHJpeDQ0LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRp
b25NYXRyaXguaCIKICNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKLQorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlNpemUuaD4KIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+Ci0KIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiM2ZkMDFlNTk3NTUzYjBiNjUxZGQwNGJmZGNiZDlj
ZTFjNjQxNTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgotCi0jaW5jbHVkZSAi
Q29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIkRyYXdpbmdCdWZm
ZXIuaCIKLSNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQot
bmFtZXNwYWNlIHsKLQotVEVTVChXZWJHTExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVGb3JtYXRz
KQotewotICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBidWZmZXI7Ci0KLSAgICBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBhbHBoYUF0dHJzOwotICAgIGFscGhhQXR0cnMuYWxwaGEgPSB0
cnVlOwotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG9wYXF1ZUF0dHJzOwotICAg
IG9wYXF1ZUF0dHJzLmFscGhhID0gZmFsc2U7Ci0KLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGFscGhhQ29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0Qo
YWxwaGFBdHRycyk7Ci0gICAgRVhQRUNUX1RSVUUoYWxwaGFDb250ZXh0KTsKLSAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IG9wYXF1ZUNvbnRleHQgPSBjcmVhdGVDb21wb3NpdG9yTW9ja0dy
YXBoaWNzQ29udGV4dDNEKG9wYXF1ZUF0dHJzKTsKLSAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250
ZXh0KTsKLQotICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShhbHBoYUNvbnRleHQu
Z2V0KCksIEludFNpemUoKSwgRHJhd2luZ0J1ZmZlcjo6UHJlc2VydmUsIERyYXdpbmdCdWZmZXI6
OkFscGhhKTsKLSAgICBFWFBFQ1RfRkFMU0UoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1
ZSgpKTsKLSAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoYWxwaGFDb250ZXh0Lmdl
dCgpLCBJbnRTaXplKCksIERyYXdpbmdCdWZmZXI6OkRpc2NhcmQsIERyYXdpbmdCdWZmZXI6OkFs
cGhhKTsKLSAgICBFWFBFQ1RfRkFMU0UoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgp
KTsKLQotICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShvcGFxdWVDb250ZXh0Lmdl
dCgpLCBJbnRTaXplKCksIERyYXdpbmdCdWZmZXI6OlByZXNlcnZlLCBEcmF3aW5nQnVmZmVyOjpP
cGFxdWUpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUo
KSk7Ci0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG9wYXF1ZUNvbnRleHQuZ2V0
KCksIEludFNpemUoKSwgRHJhd2luZ0J1ZmZlcjo6RGlzY2FyZCwgRHJhd2luZ0J1ZmZlcjo6T3Bh
cXVlKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3BhcXVlKCkp
OwotfQotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJMYXllclRlc3QuY3BwCmluZGV4IDJiNmNiYTU2MmMyNGUzNDI2NDg2ZGU3MDM5NzRjMGViZDk2
Y2U4ZTcuLjdjMDgzMWY5MDM1ODc0MGJiOWUxZGQyNDJiMDdmYjM4YzJmNjQzZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKQEAgLTE2NCwxMyAr
MTY0LDExIEBAIFRFU1RfRihXZWJMYXllclRlc3QsIENsaWVudCkKICAgICBFWFBFQ1RfQ0FMTCht
X2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7CiAgICAgdGV4
dHVyZUxheWVyLnNldEZsaXBwZWQodHJ1ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTGF5ZXIuZmxpcHBl
ZCgpKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5U
aW1lcyhBdExlYXN0KDEpKTsKICAgICBXZWJGbG9hdFJlY3QgdXZSZWN0KDAuMWYsIDAuMWYsIDAu
OWYsIDAuOWYpOwogICAgIHRleHR1cmVMYXllci5zZXRVVlJlY3QodXZSZWN0KTsKICAgICBNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9UUlVF
KHRleHR1cmVMYXllci5mbGlwcGVkKCkpOwogCiAKICAgICAvLyBDb250ZW50IGxheWVyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138477</attachid>
            <date>2012-04-23 17:50:44 -0700</date>
            <delta_ts>2012-04-23 17:59:53 -0700</delta_ts>
            <desc>everything but the new unit test</desc>
            <filename>bug-84311-20120423175043.patch</filename>
            <type>text/plain</type>
            <size>39920</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0OTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiNjg4YTE0MTUwNzNl
NTA2NGY1YzcxNmY3MGU4MTUwNDc2MDRlY2Y4Li4xMWZmOWIwZmE3YTg1YWI3NDZlZmFlZDcyYjc3
MDYyMGJiNjRmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0xOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVXNlIFRleHR1cmVMYXllckNocm9taXVtIGZvciBXZWJHTCBjb250ZW50IGluc3RlYWQgb2Yg
YSBkZWRpY2F0ZWQgbGF5ZXIgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgc29tZSB1bnVzZWQgZ2V0dGVycy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIpOgorCiAyMDEyLTA0LTIwICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gV2ViRmlsdGVyT3BlcmF0aW9ucyBB
UEkgZG9lcyBub3QgY29tcGlsZSBvciBkeW5hbWljYWxseSBsaW5rCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkw
YjAyODAyYjZkNWY0MTg0M2JjNzJhYTRmMmQ5OTc4NjE2NDc3Yy4uMjAwOTNhOTAzN2JkMDllN2Qz
MWFlODVjZjg1NmRmNzI3MmI4YzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEy
LTA0LTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBVc2UgVGV4dHVyZUxheWVyQ2hyb21pdW0gZm9yIFdlYkdMIGNvbnRlbnQgaW5z
dGVhZCBvZiBhIGRlZGljYXRlZCBsYXllciB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDMxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYkdMIGNvbnRlbnQncyBpbnRlcmZhY2Ugd2l0aCB0aGUg
Y29tcG9zaXRvciBjYW4gYmUgZXhwcmVzc2VkIGluIHRlcm1zIG9mIHR3byBiYXNpYyBvcGVyYXRp
b25zOgorICAgICAgICAxLikgRG8gc29tZSBzdHVmZgorICAgICAgICAyLikgUHJvdmlkZSBhIHRl
eHR1cmUgSUQgZm9yIHRoZSBjb21wb3NpdG9yIHRvIHVzZQorCisgICAgICAgIFRoaXMgaW1wbGVt
ZW50cyAoMSkgaW4gRHJhd2luZ0J1ZmZlckNocm9taXVtIGFuZCB1c2VzIHRoZSBhbHJlYWR5LWV4
aXN0aW5nIFRleHR1cmVMYXllckNocm9taXVtIHRvIGhhbmRsZSAoMikuCisgICAgICAgIFRoaXMg
Y3V0cyBkb3duIHRoZSBjb21wb3NpdG9yIGludGVyZmFjZSBzaWduaWZpY2FudGx5IGFuZCBhbGxv
d3MgZm9yIG1vcmUgY29kZSByZXVzZSBpbiBleGNoYW5nZSBmb3IgbW9yZSBjb2RlCisgICAgICAg
IGluIFRleHR1cmVMYXllckNocm9taXVtIHRvIGhhbmRsZSB0aGUgZmVhdHVyZXMgV2ViR0wgbmVl
ZHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKERyYXdpbmdCdWZmZXJQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjpEcmF3aW5n
QnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6
fkRyYXdpbmdCdWZmZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQ
cml2YXRlOjpsYXllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFRleHR1
cmVMYXllckNocm9taXVtQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVMYXllckNo
cm9taXVtQ2xpZW50Ojp+VGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChUZXh0dXJlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y2xlYXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6Z3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoRHJhd2luZ0J1ZmZlcik6CisKIDIwMTItMDQtMjMg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF1bUmVm
YWN0b3JpbmddIFJlbW92ZSBWOFByb3h5Ojp0b1Y4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggY2YyNDVkOGZkYWI0ZWEyODRiYzI1NDQ3OGExZjk2MTQ5MWQyYWI2ZC4uZTE5YmU2Y2M3
NzllZjY4N2IxYTdmM2U2Y2MzNTY0YzY5N2VjZTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0xOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIFRleHR1cmVMYXllckNocm9t
aXVtIGZvciBXZWJHTCBjb250ZW50IGluc3RlYWQgb2YgYSBkZWRpY2F0ZWQgbGF5ZXIgdHlwZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzMTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5n
eXBpOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAqIHNy
Yy9XZWJMYXllci5jcHA6CisgICAgICAgICogdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcDoKKwogMjAxMi0w
NC0yMyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFByb3Blcmx5IGlnbm9yZSB1bnN1cHBvcnRlZCBhbmltYXRpb24gZGlyZWN0aW9ucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuaAppbmRleCA1MmVmYmI3ZWIzODIwNmIzMWY3ZTdmZThlYmM3NTdkYzU2
ZjYxNGE4Li44MzMzMGQzM2MwNTJiMTk4MTg1ZTk2NGViMTIzODkzZTIwZjczMzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5oCkBAIC02MCwxMiArNjAsMTAgQEAgcHVibGljOgogICAgIC8vIFNldHMgd2hl
dGhlciBvciBub3QgdGhlIHRleHR1cmUgc2hvdWxkIGJlIGZsaXBwZWQgaW4gdGhlIFkgZGlyZWN0
aW9uIHdoZW4KICAgICAvLyByZW5kZXJlZC4KICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rmxp
cHBlZChib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZmxpcHBlZCgpIGNvbnN0OwogCiAg
ICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUgdGV4dHVyZSB0aGF0IGlzIG1h
cHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYkZs
b2F0UmVjdCB1dlJlY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMzNhY2FlOTMwYTQwMWI2NmYzNjY0ZmMxZWVkNmMw
NzQ2MDFiYmQyLi4zYWU2ZjFkNTZiMzQzOTczYzRhYjRkMGZlNGZmYWFjNGYyNjRmZTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0zNTk4LDggKzM1OTgsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAn
LAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fj
dGl2ZUFuaW1hdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKaW5kZXggNGNkODk0MjZkNmNkYzk1ZGEwZDAxNGNk
NjE1YmE0OGVlNTEyNWU4ZC4uMzRhOGRjMTE1MzFlYTJlMmNjMzcyMzBkMGQxM2UxYTQyMDY4ZjI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCkBAIC0zNSw4ICszNSw5
IEBACiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNs
dWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
ODksOSArOTAsNiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LAogCiBEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiB7Ci0gICAg
aWYgKG1fcGxhdGZvcm1MYXllcikKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXREcmF3aW5n
QnVmZmVyKDApOwotCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTQ4LDE2ICsxNDYsNTYgQEAgdW5zaWduZWQgRHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZl
cigpIGNvbnN0CiB9CiAjZW5kaWYKIAorY2xhc3MgRHJhd2luZ0J1ZmZlclByaXZhdGUgOiBwdWJs
aWMgVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERyYXdpbmdCdWZmZXJQcml2YXRlKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEcmF3aW5nQnVm
ZmVyUHJpdmF0ZShEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQorICAgICAgICA6IG1fZHJh
d2luZ0J1ZmZlcihkcmF3aW5nQnVmZmVyKQorICAgICAgICAsIG1fbGF5ZXIoVGV4dHVyZUxheWVy
Q2hyb21pdW06OmNyZWF0ZSh0aGlzKSkKKyAgICB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldENvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgICAgIG1fbGF5ZXItPnNldE9wYXF1
ZSghYXR0cmlidXRlcy5hbHBoYSk7CisgICAgICAgIG1fbGF5ZXItPnNldFByZW11bHRpcGxpZWRB
bHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQorICAgIHsKKyAgICAgICAgbV9sYXllci0+Y2xlYXJD
bGllbnQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHByZXBhcmVUZXh0dXJlKEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2RyYXdp
bmdCdWZmZXItPnByZXBhcmVCYWNrQnVmZmVyKCk7CisKKyAgICAgICAgY29udGV4dCgpLT5mbHVz
aCgpOworICAgICAgICBjb250ZXh0KCktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAg
ICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBtX2RyYXdpbmdCdWZmZXItPmZyb250Q29sb3JCdWZmZXIo
KTsKKyAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zy
b250QnVmZmVyKCkpCisgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZENvcHkobV9kcmF3aW5nQnVm
ZmVyLT5jb2xvckJ1ZmZlcigpLCB0ZXh0dXJlSWQsIG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgpKTsK
KworICAgICAgICByZXR1cm4gdGV4dHVyZUlkOworICAgIH0KKworICAgIHZpcnR1YWwgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB9CisKKyAgICBMYXllckNo
cm9taXVtKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisgICAgUmVmUHRyPFRleHR1
cmVMYXllckNocm9taXVtPiBtX2xheWVyOworfTsKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQog
ewotICAgIGlmICghbV9wbGF0Zm9ybUxheWVyKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllciA9
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllci0+
c2V0RHJhd2luZ0J1ZmZlcih0aGlzKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXRPcGFx
dWUobV9hbHBoYSA9PSBPcGFxdWUpOwotICAgIH0KKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAg
ICAgbV9wcml2YXRlID0gYWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXJQcml2YXRlKHRoaXMpKTsK
IAotICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bGF5ZXIoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAppbmRleCBkODNjOGU1YjY3Mzk3YzNhZGIzZDFjMTYyYzZiZjdjMzA5ZTZjYTdmLi42MzQ4
ZTE0OTY4N2Y0MzU1MDk2NWNhODZkNDQxYmQ2ZDhmZjYyYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
VHJlZVN5bmNocm9uaXplci5oIgotI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RhbWFn
ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKQEAgLTEw
NjcsNyArMTA2Niw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1
YWQoY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqIHF1YWQpCiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9U
T19FREdFKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9X
UkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CiAKLSAgICBpZiAocXVh
ZC0+aGFzQWxwaGEoKSAmJiAhcXVhZC0+cHJlbXVsdGlwbGllZEFscGhhKCkpCisgICAgaWYgKCFx
dWFkLT5wcmVtdWx0aXBsaWVkQWxwaGEoKSkKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6OlNSQ19BTFBIQSwgR3JhcGhpY3NDb250
ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKIAogICAgIGNvbnN0IEludFNpemUmIGJvdW5k
cyA9IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDI5Y2M2YmEwYjEyNGMwZmNlZWFhYTAzYzZjMDVlZGNhOTM2ZGJmMDUuLjk3
NjdlM2U5ZDYyNDY2YzBjYTc4ZTJkODcxY2E3NmY4ZDI4ZDE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0
dXJlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTI5LDQ5ICsyOSw3MCBAQAogCiAjaW5jbHVkZSAiVGV4
dHVyZUxheWVyQ2hyb21pdW0uaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgorI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1w
bC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8VGV4dHVyZUxheWVyQ2hy
b21pdW0+IFRleHR1cmVMYXllckNocm9taXVtOjpjcmVhdGUoKQorUGFzc1JlZlB0cjxUZXh0dXJl
TGF5ZXJDaHJvbWl1bT4gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZShUZXh0dXJlTGF5ZXJD
aHJvbWl1bUNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVy
ZUxheWVyQ2hyb21pdW0pOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZUxheWVyQ2hy
b21pdW0oY2xpZW50KSk7CiB9CiAKLVRleHR1cmVMYXllckNocm9taXVtOjpUZXh0dXJlTGF5ZXJD
aHJvbWl1bSgpCitUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6VGV4dHVyZUxheWVyQ2hyb21pdW0oVGV4
dHVyZUxheWVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCkKICAgICA6IExheWVyQ2hyb21pdW0oKQot
ICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZmxp
cHBlZCh0cnVlKQogICAgICwgbV91dlJlY3QoMCwgMCwgMSwgMSkKKyAgICAsIG1fcHJlbXVsdGlw
bGllZEFscGhhKHRydWUpCisgICAgLCBtX3JhdGVMaW1pdENvbnRleHQoZmFsc2UpCisgICAgLCBt
X2NvbnRleHRMb3N0KGZhbHNlKQorICAgICwgbV90ZXh0dXJlSWQoMCkKICAgICAsIG1faW9TdXJm
YWNlSWQoMCkKIHsKIH0KIAorVGV4dHVyZUxheWVyQ2hyb21pdW06On5UZXh0dXJlTGF5ZXJDaHJv
bWl1bSgpCit7CisgICAgaWYgKG1fcmF0ZUxpbWl0Q29udGV4dCAmJiBtX2NsaWVudCAmJiBsYXll
clRyZWVIb3N0KCkpCisgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c3RvcFJhdGVMaW1pdGVyKG1f
Y2xpZW50LT5jb250ZXh0KCkpOworfQorCiBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUZXh0dXJl
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJldHVybiBDQ1RleHR1
cmVMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOwogfQogCi1ib29sIFRleHR1cmVMYXllckNo
cm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAordm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6
c2V0RmxpcHBlZChib29sIGZsaXBwZWQpCiB7Ci0gICAgcmV0dXJuIChtX3RleHR1cmVJZCB8fCBt
X2lvU3VyZmFjZUlkKSAmJiBMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKKyAgICBtX2Zs
aXBwZWQgPSBmbGlwcGVkOworICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgVGV4dHVy
ZUxheWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKK3ZvaWQgVGV4dHVyZUxh
eWVyQ2hyb21pdW06OnNldFVWUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgbV90
ZXh0dXJlSWQgPSBpZDsKKyAgICBtX3V2UmVjdCA9IHJlY3Q7CiAgICAgc2V0TmVlZHNDb21taXQo
KTsKIH0KIAotdm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0RmxpcHBlZChib29sIGZsaXBw
ZWQpCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRQcmVtdWx0aXBsaWVkQWxwaGEoYm9v
bCBwcmVtdWx0aXBsaWVkQWxwaGEpCiB7Ci0gICAgbV9mbGlwcGVkID0gZmxpcHBlZDsKKyAgICBt
X3ByZW11bHRpcGxpZWRBbHBoYSA9IHByZW11bHRpcGxpZWRBbHBoYTsKICAgICBzZXROZWVkc0Nv
bW1pdCgpOwogfQogCi12b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRVVlJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQordm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0UmF0ZUxpbWl0
Q29udGV4dChib29sIHJhdGVMaW1pdCkKIHsKLSAgICBtX3V2UmVjdCA9IHJlY3Q7CisgICAgaWYg
KCFyYXRlTGltaXQgJiYgbV9yYXRlTGltaXRDb250ZXh0ICYmIG1fY2xpZW50ICYmIGxheWVyVHJl
ZUhvc3QoKSkKKyAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5zdG9wUmF0ZUxpbWl0ZXIobV9jbGll
bnQtPmNvbnRleHQoKSk7CisKKyAgICBtX3JhdGVMaW1pdENvbnRleHQgPSByYXRlTGltaXQ7Cit9
CisKK3ZvaWQgVGV4dHVyZUxheWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkK
K3sKKyAgICBtX3RleHR1cmVJZCA9IGlkOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKQEAg
LTgyLDE0ICsxMDMsMzggQEAgdm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0SU9TdXJmYWNl
UHJvcGVydGllcyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl8KICAgICBzZXROZWVkc0Nv
bW1pdCgpOwogfQogCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KQoreworICAgIExheWVyQ2hyb21pdW06OnNl
dE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0KTsKKworICAgIGlmIChtX3JhdGVMaW1pdENvbnRl
eHQgJiYgbV9jbGllbnQgJiYgbGF5ZXJUcmVlSG9zdCgpKQorICAgICAgICBsYXllclRyZWVIb3N0
KCktPnN0YXJ0UmF0ZUxpbWl0ZXIobV9jbGllbnQtPmNvbnRleHQoKSk7Cit9CisKK2Jvb2wgVGV4
dHVyZUxheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICht
X2NsaWVudCB8fCBtX3RleHR1cmVJZCB8fCBtX2lvU3VyZmFjZUlkKSAmJiAhbV9jb250ZXh0TG9z
dCAmJiBMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKK30KKwordm9pZCBUZXh0dXJlTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlciopCit7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIG1fdGV4dHVy
ZUlkID0gbV9jbGllbnQtPnByZXBhcmVUZXh0dXJlKHVwZGF0ZXIpOworICAgICAgICBtX2NvbnRl
eHRMb3N0ID0gbV9jbGllbnQtPmNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOworICAgIH0K
KworICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7Cit9CisKIHZvaWQgVGV4dHVyZUxheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAgIExheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwogCiAgICAgQ0NUZXh0dXJlTGF5ZXJJ
bXBsKiB0ZXh0dXJlTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ1RleHR1cmVMYXllckltcGwqPihsYXll
cik7Ci0gICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQobV90ZXh0dXJlSWQpOwogICAgIHRl
eHR1cmVMYXllci0+c2V0RmxpcHBlZChtX2ZsaXBwZWQpOwogICAgIHRleHR1cmVMYXllci0+c2V0
VVZSZWN0KG1fdXZSZWN0KTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldFByZW11bHRpcGxpZWRBbHBo
YShtX3ByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQo
bV90ZXh0dXJlSWQpOwogICAgIHRleHR1cmVMYXllci0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyht
X2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVy
Q2hyb21pdW0uaAppbmRleCA3YTkxMDkyNDgxNTFiNGQxMTAxOGM3ZTg2NzA5ZjM5YWFjNTFjNTU5
Li4yNGY1YWM1OTQxMjdhMzQwYzI5MzFkMWY0NjEwMDE4MWJlODNmYTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVMYXllckNocm9taXVtLmgKQEAgLTMzLDM0ICszMyw3MyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIFRleHR1cmVMYXllckNocm9taXVtQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICAvLyBDYWxsZWQgdG8gcHJlcGFyZSB0aGlzIGxheWVyJ3MgdGV4dHVyZSBmb3IgY29tcG9zaXRp
bmcuIFRoZSBjbGllbnQgbWF5IHF1ZXVlIGEgdGV4dHVyZQorICAgIC8vIHVwbG9hZCBvciBjb3B5
IG9uIHRoZSBDQ1RleHR1cmVVcGRhdGVyLgorICAgIC8vIFJldHVybnMgdGhlIHRleHR1cmUgSUQg
dG8gYmUgdXNlZCBmb3IgY29tcG9zaXRpbmcuCisgICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJl
VGV4dHVyZShDQ1RleHR1cmVVcGRhdGVyJikgPSAwOworCisgICAgLy8gUmV0dXJucyB0aGUgY29u
dGV4dCB0aGF0IGlzIHByb3ZpZGluZyB0aGUgdGV4dHVyZS4gVXNlZCBmb3IgcmF0ZSBsaW1pdGlu
ZyBhbmQgZGV0ZWN0aW5nIGxvc3QgY29udGV4dC4KKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+VGV4dHVyZUxh
eWVyQ2hyb21pdW1DbGllbnQoKSB7IH0KK307CisKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIHRo
ZSByZW5kZXJlZCBvdXRwdXQgb2YgYSBwbHVnaW4gaW5zdGFuY2UuCiBjbGFzcyBUZXh0dXJlTGF5
ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CisgICAgLy8gSWYgdGhp
cyB0ZXh0dXJlIGxheWVyIHJlcXVpcmVzIHNwZWNpYWwgcHJlcGFyYXRpb24gbG9naWMgZm9yIGVh
Y2ggZnJhbWUgZHJpdmVuIGJ5CisgICAgLy8gdGhlIGNvbXBvc2l0b3IsIHBhc3MgaW4gYSBub24t
bmlsIGNsaWVudC4gUGFzcyBpbiBhIG5pbCBjbGllbnQgcG9pbnRlciBpZiB0ZXh0dXJlIHVwZGF0
ZXMKKyAgICAvLyBhcmUgZHJpdmVuIGJ5IGFuIGV4dGVybmFsIHByb2Nlc3MuCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGNyZWF0ZShUZXh0dXJlTGF5ZXJDaHJv
bWl1bUNsaWVudCopOworICAgIHZpcnR1YWwgflRleHR1cmVMYXllckNocm9taXVtKCk7CisKKyAg
ICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KIAogICAgIHZpcnR1YWwgUGFz
c093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICAvLyBTZXRz
IHdoZXRoZXIgdGhpcyB0ZXh0dXJlIHNob3VsZCBiZSBZLWZsaXBwZWQgYXQgZHJhdyB0aW1lLiBE
ZWZhdWx0cyB0byB0cnVlLgorICAgIHZvaWQgc2V0RmxpcHBlZChib29sKTsKKworICAgIC8vIFNl
dHMgYSBVViB0cmFuc2Zvcm0gdG8gYmUgdXNlZCBhdCBkcmF3IHRpbWUuIERlZmF1bHRzIHRvICgw
LCAwLCAxLCAxKS4KKyAgICB2b2lkIHNldFVWUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKworICAg
IC8vIFNldHMgd2hldGhlciB0aGUgYWxwaGEgY2hhbm5lbCBpcyBwcmVtdWx0aXBsaWVkIG9yIHVu
cHJlbXVsdGlwbGllZC4gRGVmYXVsdHMgdG8gdHJ1ZS4KKyAgICB2b2lkIHNldFByZW11bHRpcGxp
ZWRBbHBoYShib29sKTsKKworICAgIC8vIFNldHMgd2hldGhlciB0aGlzIGNvbnRleHQgc2hvdWxk
IHJhdGUgbGltaXQgb24gZGFtYWdlIHRvIHByZXZlbnQgdG9vIG1hbnkgZnJhbWVzIGZyb20KKyAg
ICAvLyBiZWluZyBxdWV1ZWQgdXAgYmVmb3JlIHRoZSBjb21wb3NpdG9yIGdldHMgYSBjaGFuY2Ug
dG8gcnVuLiBSZXF1aXJlcyBhIG5vbi1uaWwgY2xpZW50LgorICAgIC8vIERlZmF1bHRzIHRvIGZh
bHNlLgorICAgIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKTsKIAogICAgIC8vIENvZGUg
cGF0aCBmb3IgcGx1Z2lucyB3aGljaCBzdXBwbHkgdGhlaXIgb3duIHRleHR1cmUgSUQuCiAgICAg
dm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpOwotICAgIHZvaWQgc2V0RmxpcHBlZChib29sKTsK
LSAgICBib29sIGZsaXBwZWQoKSBjb25zdCB7IHJldHVybiBtX2ZsaXBwZWQ7IH0KLSAgICB2b2lk
IHNldFVWUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBjb25zdCBGbG9hdFJlY3QmIHV2UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9CiAKICAgICAvLyBDb2RlIHBhdGggZm9yIHBs
dWdpbnMgd2hpY2ggcmVuZGVyIHZpYSBhbiBJT1N1cmZhY2UuCiAgICAgdm9pZCBzZXRJT1N1cmZh
Y2VQcm9wZXJ0aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgaW9TdXJmYWNlSWQp
OwogCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0
JikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqKSBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIFRleHR1
cmVMYXllckNocm9taXVtKCk7CisgICAgZXhwbGljaXQgVGV4dHVyZUxheWVyQ2hyb21pdW0oVGV4
dHVyZUxheWVyQ2hyb21pdW1DbGllbnQqKTsKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3Rl
eHR1cmVJZDsKKyAgICBUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCogbV9jbGllbnQ7CisKICAg
ICBib29sIG1fZmxpcHBlZDsKICAgICBGbG9hdFJlY3QgbV91dlJlY3Q7CisgICAgYm9vbCBtX3By
ZW11bHRpcGxpZWRBbHBoYTsKKyAgICBib29sIG1fcmF0ZUxpbWl0Q29udGV4dDsKKyAgICBib29s
IG1fY29udGV4dExvc3Q7CisKKyAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKwogICAgIEludFNp
emUgbV9pb1N1cmZhY2VTaXplOwogICAgIHVpbnQzMl90IG1faW9TdXJmYWNlSWQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJjZjllMzg2YjY5OGFmZjQ2ODBhYWE2MGQyYjU2ZjNjOGRkZTJkOTAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCi0KLSNpbmNs
dWRlICJEcmF3aW5nQnVmZmVyLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIu
aCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
LmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8V2Vi
R0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZSgpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0oKSk7Ci19Ci0KLVdlYkdMTGF5ZXJD
aHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKCkKLSAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0o
KQotICAgICwgbV9oYXNBbHBoYSh0cnVlKQotICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEodHJ1
ZSkKLSAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCi0gICAgLCBtX3RleHR1cmVJZCgwKQotICAg
ICwgbV9kcmF3aW5nQnVmZmVyKDApCi17Ci19Ci0KLVdlYkdMTGF5ZXJDaHJvbWl1bTo6fldlYkdM
TGF5ZXJDaHJvbWl1bSgpCi17Ci0gICAgaWYgKGNvbnRleHQoKSAmJiBsYXllclRyZWVIb3N0KCkp
Ci0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c3RvcFJhdGVMaW1pdGVyKGNvbnRleHQoKSk7Ci19
Ci0KLWJvb2wgV2ViR0xMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAotewotICAg
IHJldHVybiBMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSAmJiAhbV9jb250ZXh0TG9zdDsK
LX0KLQotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiB1
cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKQotewotICAgIGlmICghZHJhd3NDb250
ZW50KCkgfHwgIW1fbmVlZHNEaXNwbGF5IHx8ICFtX2RyYXdpbmdCdWZmZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fZHJhd2luZ0J1ZmZlci0+cHJlcGFyZUJhY2tCdWZmZXIoKTsKLQotICAg
IGNvbnRleHQoKS0+Zmx1c2goKTsKLSAgICBjb250ZXh0KCktPm1hcmtMYXllckNvbXBvc2l0ZWQo
KTsKLSAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwotICAgIG1fY29udGV4dExvc3QgPSBjb250
ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsKLQotICAgIG1fdGV4dHVyZUlkID0gbV9kcmF3aW5n
QnVmZmVyLT5mcm9udENvbG9yQnVmZmVyKCk7Ci0gICAgaWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVx
dWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkpCi0gICAgICAgIHVwZGF0ZXIuYXBwZW5k
Q29weShtX2RyYXdpbmdCdWZmZXItPmNvbG9yQnVmZmVyKCksIG1fdGV4dHVyZUlkLCBib3VuZHMo
KSk7Ci19Ci0KLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5
ZXJJbXBsKiBsYXllcikKLXsKLSAgICBDYW52YXNMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGll
c1RvKGxheWVyKTsKLQotICAgIENDVGV4dHVyZUxheWVySW1wbCogdGV4dHVyZUxheWVyID0gc3Rh
dGljX2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXIpOwotICAgIHRleHR1cmVMYXllci0+
c2V0VGV4dHVyZUlkKG1fdGV4dHVyZUlkKTsKLSAgICB0ZXh0dXJlTGF5ZXItPnNldEhhc0FscGhh
KG1faGFzQWxwaGEpOwotICAgIHRleHR1cmVMYXllci0+c2V0UHJlbXVsdGlwbGllZEFscGhhKG1f
cHJlbXVsdGlwbGllZEFscGhhKTsKLX0KLQotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldE5l
ZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAgTGF5ZXJD
aHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdChkaXJ0eVJlY3QpOwotCi0gICAgLy8gSWYgV2Vi
R0wgY29tbWFuZHMgYXJlIGlzc3VlZCBvdXRzaWRlIG9mIGEgdGhlIGFuaW1hdGlvbiBjYWxsYmFj
a3MsIHRoZW4gdXNlCi0gICAgLy8gY2FsbCByYXRlTGltaXRPZmZzY3JlZW5Db250ZXh0Q0hST01J
VU0oKSB0byBrZWVwIHRoZSBjb250ZXh0IGZyb20gZ2V0dGluZyB0b28gZmFyIGFoZWFkLgotICAg
IGlmIChsYXllclRyZWVIb3N0KCkpCi0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c3RhcnRSYXRl
TGltaXRlcihjb250ZXh0KCkpOwotfQotCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0RHJh
d2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQotewotICAgIGJvb2wgZHJh
d2luZ0J1ZmZlckNoYW5nZWQgPSAobV9kcmF3aW5nQnVmZmVyICE9IGRyYXdpbmdCdWZmZXIpOwot
Ci0gICAgLy8gVGhlIEdyYXBoaWNzQ29udGV4dDNEIHVzZWQgYnkgdGhlIGxheWVyIGlzIHRoZSBj
b250ZXh0IGFzc29jaWF0ZWQgd2l0aAotICAgIC8vIHRoZSBkcmF3aW5nIGJ1ZmZlci4gSWYgdGhl
IGRyYXdpbmcgYnVmZmVyIGlzIGNoYW5naW5nLCBtYWtlIHN1cmUKLSAgICAvLyB0byBzdG9wIHRo
ZSByYXRlIGxpbWl0ZXIgb24gdGhlIG9sZCBjb250ZXh0LCBub3QgdGhlIG5ldyBjb250ZXh0IGZy
b20gdGhlCi0gICAgLy8gbmV3IGRyYXdpbmcgYnVmZmVyLgotICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0M0QgPSBjb250ZXh0KCk7Ci0gICAgaWYgKGxheWVyVHJlZUhvc3QoKSAmJiBkcmF3
aW5nQnVmZmVyQ2hhbmdlZCAmJiBjb250ZXh0M0QpCi0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+
c3RvcFJhdGVMaW1pdGVyKGNvbnRleHQzRCk7Ci0KLSAgICBtX2RyYXdpbmdCdWZmZXIgPSBkcmF3
aW5nQnVmZmVyOwotICAgIGlmICghbV9kcmF3aW5nQnVmZmVyKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4dCgp
LT5nZXRDb250ZXh0QXR0cmlidXRlcygpOwotICAgIG1faGFzQWxwaGEgPSBhdHRyaWJ1dGVzLmFs
cGhhOwotICAgIG1fcHJlbXVsdGlwbGllZEFscGhhID0gYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVk
QWxwaGE7Ci0gICAgbV9jb250ZXh0TG9zdCA9IGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5n
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9S
OwotfQotCi1HcmFwaGljc0NvbnRleHQzRCogV2ViR0xMYXllckNocm9taXVtOjpjb250ZXh0KCkg
Y29uc3QKLXsKLSAgICBpZiAoZHJhd2luZ0J1ZmZlcigpKQotICAgICAgICByZXR1cm4gZHJhd2lu
Z0J1ZmZlcigpLT5ncmFwaGljc0NvbnRleHQzRCgpLmdldCgpOwotCi0gICAgcmV0dXJuIDA7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNWY1NjM2
MjM1OGYxYzI0NjJjYWZmODNkMDA4ODNiNjFjY2RjMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotCi0jaWZuZGVmIFdlYkdMTGF5ZXJDaHJvbWl1bV9oCi0jZGVmaW5lIFdlYkdMTGF5ZXJDaHJv
bWl1bV9oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNpbmNsdWRlICJD
YW52YXNMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgV2ViR0xM
YXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKLQotLy8gQSBMYXllciBjb250YWluaW5nIGEgV2Vi
R0wgY2FudmFzCi1jbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJD
aHJvbWl1bSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9t
aXVtPiBjcmVhdGUoKTsKLQotICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwotCi0g
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJ
bXBsKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29u
c3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXREcmF3aW5nQnVmZmVyKERyYXdpbmdCdWZmZXIqKTsK
LSAgICBEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3
aW5nQnVmZmVyOyB9Ci1wcml2YXRlOgotICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSgpOwotICAgIGZy
aWVuZCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwotCi0gICAgYm9vbCBt
X2hhc0FscGhhOwotICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7Ci0gICAgYm9vbCBtX2Nv
bnRleHRMb3N0OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotCi0gICAgLy8gVGhlIERyYXdp
bmdCdWZmZXIgaG9sZGluZyB0aGUgV2ViR0wgY29udGVudHMgZm9yIHRoaXMgbGF5ZXIuCi0gICAg
Ly8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZl
ciBhbHJlYWR5IGhvbGRzCi0gICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJv
bWl1bS4KLSAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7Ci19OwotCi19Ci0jZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURy
YXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZURyYXdRdWFkLmNwcAppbmRleCA2NDIzOGI3OTRkMWI0MzJmMGM3YmU5Y2FkNjVl
YmUwYjgwMDgzZThiLi5iZjU3ODQwZGJiNGQwZWY0NWUyM2MxYjA1ZDU0ZTA2MDVmY2Q2Y2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwCkBAIC0yOSwxNSArMjksMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBD
Q1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJv
b2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2
UmVjdCwgYm9vbCBmbGlwcGVkLCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25l
ZCBpb1N1cmZhY2VUZXh0dXJlSWQpCitQYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBDQ1Rl
eHR1cmVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVk
LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJl
SWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVEcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIGhhc0FscGhhLCBwcmVtdWx0aXBsaWVkQWxw
aGEsIHV2UmVjdCwgZmxpcHBlZCwgaW9TdXJmYWNlU2l6ZSwgaW9TdXJmYWNlVGV4dHVyZUlkKSk7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlw
cGVkLCBpb1N1cmZhY2VTaXplLCBpb1N1cmZhY2VUZXh0dXJlSWQpKTsKIH0KIAotQ0NUZXh0dXJl
RHJhd1F1YWQ6OkNDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQs
IGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3Qm
IHV2UmVjdCwgYm9vbCBmbGlwcGVkLCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNp
Z25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCitDQ1RleHR1cmVEcmF3UXVhZDo6Q0NUZXh0dXJlRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxw
aGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQsIGNvbnN0IEludFNpemUm
IGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKICAgICA6IENDRHJh
d1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpUZXh0dXJlQ29udGVudCwgcXVhZFJl
Y3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCi0gICAgLCBtX2hhc0FscGhhKGhhc0Fs
cGhhKQogICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKQogICAg
ICwgbV91dlJlY3QodXZSZWN0KQogICAgICwgbV9mbGlwcGVkKGZsaXBwZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVE
cmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlRHJhd1F1YWQuaAppbmRleCAxYTgzMTU3MWJhZDUwZGM4OTYxMTBiZDg1ZWI4ODRj
MzgzODJjMjkyLi5mMzQyYmM4Mjg1ZjMwMjgzYjgzYzRlOWEyYmNlN2Q2ZDExMDdhZDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmgKQEAgLTM1LDEwICszNSw5IEBAIGNsYXNzIEND
TGF5ZXJJbXBsOwogY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NUZXh0dXJlRHJhd1F1YWQpOwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29s
IGhhc0FscGhhLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJl
Y3QsIGJvb2wgZmxpcHBlZCwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQg
aW9TdXJmYWNlVGV4dHVyZUlkKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1RleHR1cmVEcmF3
UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVu
c2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVj
dCYgdXZSZWN0LCBib29sIGZsaXBwZWQsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUsIHVu
c2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCk7CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBj
b25zdCB7IHJldHVybiAgbV90ZXh0dXJlSWQ7IH0KLSAgICBib29sIGhhc0FscGhhKCkgY29uc3Qg
eyByZXR1cm4gIG1faGFzQWxwaGE7IH0KICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSgpIGNv
bnN0IHsgcmV0dXJuICBtX3ByZW11bHRpcGxpZWRBbHBoYTsgfQogICAgIEZsb2F0UmVjdCB1dlJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVjdDsgfQogICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQpAQCAtNDcsMTAgKzQ2LDkgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1faW9TdXJmYWNlVGV4
dHVyZUlkOyB9CiAgCiBwcml2YXRlOgotICAgIENDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVfaWQsIGJvb2wg
aGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVj
dCwgYm9vbCBmbGlwcGVkLCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBp
b1N1cmZhY2VUZXh0dXJlSWQpOworICAgIENDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVfaWQsIGJvb2wgcHJl
bXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkLCBj
b25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQp
OwogICAgIAogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotICAgIGJvb2wgbV9oYXNBbHBoYTsK
ICAgICBib29sIG1fcHJlbXVsdGlwbGllZEFscGhhOwogICAgIEZsb2F0UmVjdCBtX3V2UmVjdDsK
ICAgICBib29sIG1fZmxpcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3Bw
CmluZGV4IDg1MzRhOGM4NWZkZGRiZjEwZDgzZTcyODNkMDJmNTU0ZjhlNThmMmYuLjI1Y2JlNGI1
OTUzMDEzYTg3YWFmZWU2MzI2OTdiOTk0NDYwM2RlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmNwcApAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBD
Q1RleHR1cmVMYXllckltcGw6OkNDVGV4dHVyZUxheWVySW1wbChpbnQgaWQpCiAgICAgOiBDQ0xh
eWVySW1wbChpZCkKICAgICAsIG1fdGV4dHVyZUlkKDApCi0gICAgLCBtX2hhc0FscGhhKHRydWUp
CiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYSh0cnVlKQogICAgICwgbV9mbGlwcGVkKHRydWUp
CiAgICAgLCBtX3V2UmVjdCgwLCAwLCAxLCAxKQpAQCAtOTMsNyArOTIsNyBAQCB2b2lkIENDVGV4
dHVyZUxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyKQogdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wm
KQogewogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwg
cXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX2hhc0FscGhhLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwg
bV91dlJlY3QsIG1fZmxpcHBlZCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJ
ZCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwg
bV91dlJlY3QsIG1fZmxpcHBlZCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJ
ZCkpOwogfQogCiB2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6ZHVtcExheWVyUHJvcGVydGllcyhU
ZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5
ZXJJbXBsLmgKaW5kZXggYzZjOWIxNDUwMzRiNTNjMzU0YWIxZGJmOWJkZDkyZjg5Nzg4NzRjNS4u
ZjFjMjY1ZmExZTFlYjIwYjIxOWZmNzYxY2VlZTQ3ZTU3OWZjMDdhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KICAgICB2b2lk
IHNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkgeyBtX3RleHR1cmVJZCA9IGlkOyB9Ci0gICAgdm9p
ZCBzZXRIYXNBbHBoYShib29sIGhhc0FscGhhKSB7IG1faGFzQWxwaGEgPSBoYXNBbHBoYTsgfQog
ICAgIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKSB7
IG1fcHJlbXVsdGlwbGllZEFscGhhID0gcHJlbXVsdGlwbGllZEFscGhhOyB9CiAgICAgdm9pZCBz
ZXRGbGlwcGVkKGJvb2wgZmxpcHBlZCkgeyBtX2ZsaXBwZWQgPSBmbGlwcGVkOyB9CiAgICAgdm9p
ZCBzZXRVVlJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fdXZSZWN0ID0gcmVjdDsgfQpA
QCAtNjgsNyArNjcsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJU
eXBlQXNTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiVGV4dHVyZUxheWVyIjsgfQog
CiAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgYm9vbCBtX2hhc0FscGhhOwogICAgIGJv
b2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7CiAgICAgYm9vbCBtX2ZsaXBwZWQ7CiAgICAgRmxvYXRS
ZWN0IG1fdXZSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9EcmF3aW5nQnVmZmVyLmgKaW5kZXggOTVlYTkwZjA5YmIyMGZkYWEzYWQ5YzhkZDljZDYy
YWJkNmQ3NGZiNi4uZWU0ZWZjMTRiZDQ2Mjc5YzdkZDlmMWMxYWI5MWFmMDVhZmY4ODQyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1
ZmZlci5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEltYWdlRGF0YTsKICNpZiBQTEFURk9STShD
SFJPTUlVTSkKLWNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bTsKK2NsYXNzIERyYXdpbmdCdWZmZXJQ
cml2YXRlOwogI2VuZGlmCiAKIC8vIE1hbmFnZXMgYSByZW5kZXJpbmcgdGFyZ2V0IChmcmFtZWJ1
ZmZlciArIGF0dGFjaG1lbnQpIGZvciBhIGNhbnZhcy4gIENhbiBwdWJsaXNoIGl0cyByZW5kZXJp
bmcKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOwogI2VuZGlmCiAKLSAgICBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dDsgfQorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRl
eHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCiBwcml2YXRlOgogICAg
IERyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgYm9vbCBt
dWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKQEAgLTE1OCw3ICsxNTgsNyBAQCBwcml2YXRl
OgogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyOwogCiAjaWYg
UExBVEZPUk0oQ0hST01JVU0pCi0gICAgUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gbV9wbGF0
Zm9ybUxheWVyOworICAgIE93blB0cjxEcmF3aW5nQnVmZmVyUHJpdmF0ZT4gbV9wcml2YXRlOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpp
bmRleCA5NTQ4YjJhMGY2NWRiMTk5MzkyYThiZmU1NWE5Zjk3ZDBlNzI2N2Y0Li42YmU5YTVkMDhh
NDI0NmUzOTMxYTcyMDY1ZDFiMDYxZjlmMjM0Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cGkKQEAgLTEzMSw3ICsxMzEsNiBAQAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVs
cGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwJywKLSAgICAg
ICAgICAgICd0ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvV2ViTGF5ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1Nl
cmlhbGl6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJU
ZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllci5jcHAKaW5kZXggMjYyMDAyNmJmYjdmMTgzNTQyZjVjNzgyYTBkNzQ5
MGIzMGNkYWM2ZC4uZDI0MzllODhkMmQwYzE5NTVjNWI4YWQ0Nzc1ODEyYjAzZjM5NmI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpCiB7Ci0g
ICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXllciA9IFRleHR1cmVMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGxheWVyID0g
VGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKICAgICBsYXllci0+c2V0SXNEcmF3YWJs
ZSh0cnVlKTsKICAgICByZXR1cm4gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIobGF5ZXIucmVsZWFz
ZSgpKTsKIH0KQEAgLTU2LDIxICs1NiwxMSBAQCB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
OjpzZXRGbGlwcGVkKGJvb2wgZmxpcHBlZCkKICAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21p
dW0+KCktPnNldEZsaXBwZWQoZmxpcHBlZCk7CiB9CiAKLWJvb2wgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OmZsaXBwZWQoKSBjb25zdAotewotICAgIHJldHVybiBjb25zdFVud3JhcDxUZXh0dXJl
TGF5ZXJDaHJvbWl1bT4oKS0+ZmxpcHBlZCgpOwotfQotCiB2b2lkIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiByZWN0KQogewogICAgIHVud3Jh
cDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0VVZSZWN0KHJlY3QpOwogfQogCi1XZWJGbG9h
dFJlY3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnV2UmVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFdlYkZsb2F0UmVjdChjb25zdFVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+dXZS
ZWN0KCkpOwotfQotCiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIoUGFzc1JlZlB0cjxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCiAgICAgOiBXZWJM
YXllcihsYXllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAppbmRl
eCA3Y2UwNzUzOTM1MDNlNzFjNWNhZGQ4NmM0NDQ3YTY4NzdkZTFhMjM3Li5lY2Y3NDUyZmM2NTRh
MWY3NmU3ZWE2Mzk4OGY3NmU2M2VkZDE5MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXIuY3BwCkBAIC0zMSwxMyArMzEsMTEgQEAKICNpbmNsdWRlICJTa01hdHJpeDQ0Lmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJXZWJMYXllcklt
cGwuaCIKLQorI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJG
aWx0ZXJPcGVyYXRpb25zLmg+Ci0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHTExheWVy
Q2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViR0xMYXll
ckNocm9taXVtVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiM2ZkMDFl
NTk3NTUzYjBiNjUxZGQwNGJmZGNiZDljZTFjNjQxNTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJH
TExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIldlYkdMTGF5ZXJD
aHJvbWl1bS5oIgotCi0jaW5jbHVkZSAiQ29tcG9zaXRvckZha2VHcmFwaGljc0NvbnRleHQzRC5o
IgotI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKLSNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKLQotbmFtZXNwYWNlIHsKLQotVEVTVChXZWJHTExheWVyQ2hy
b21pdW1UZXN0LCBvcGFxdWVGb3JtYXRzKQotewotICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBi
dWZmZXI7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhbHBoYUF0dHJzOwot
ICAgIGFscGhhQXR0cnMuYWxwaGEgPSB0cnVlOwotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIG9wYXF1ZUF0dHJzOwotICAgIG9wYXF1ZUF0dHJzLmFscGhhID0gZmFsc2U7Ci0KLSAg
ICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGFscGhhQ29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0
b3JNb2NrR3JhcGhpY3NDb250ZXh0M0QoYWxwaGFBdHRycyk7Ci0gICAgRVhQRUNUX1RSVUUoYWxw
aGFDb250ZXh0KTsKLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG9wYXF1ZUNvbnRleHQg
PSBjcmVhdGVDb21wb3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4dDNEKG9wYXF1ZUF0dHJzKTsKLSAg
ICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZXh0KTsKLQotICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZm
ZXI6OmNyZWF0ZShhbHBoYUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwgRHJhd2luZ0J1ZmZlcjo6
UHJlc2VydmUsIERyYXdpbmdCdWZmZXI6OkFscGhhKTsKLSAgICBFWFBFQ1RfRkFMU0UoYnVmZmVy
LT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgpKTsKLSAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVy
OjpjcmVhdGUoYWxwaGFDb250ZXh0LmdldCgpLCBJbnRTaXplKCksIERyYXdpbmdCdWZmZXI6OkRp
c2NhcmQsIERyYXdpbmdCdWZmZXI6OkFscGhhKTsKLSAgICBFWFBFQ1RfRkFMU0UoYnVmZmVyLT5w
bGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgpKTsKLQotICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZmZXI6
OmNyZWF0ZShvcGFxdWVDb250ZXh0LmdldCgpLCBJbnRTaXplKCksIERyYXdpbmdCdWZmZXI6OlBy
ZXNlcnZlLCBEcmF3aW5nQnVmZmVyOjpPcGFxdWUpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7Ci0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6
Y3JlYXRlKG9wYXF1ZUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwgRHJhd2luZ0J1ZmZlcjo6RGlz
Y2FyZCwgRHJhd2luZ0J1ZmZlcjo6T3BhcXVlKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnBs
YXRmb3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IDJiNmNiYTU2MmMy
NGUzNDI2NDg2ZGU3MDM5NzRjMGViZDk2Y2U4ZTcuLjdjMDgzMWY5MDM1ODc0MGJiOWUxZGQyNDJi
MDdmYjM4YzJmNjQzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViTGF5ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxh
eWVyVGVzdC5jcHAKQEAgLTE2NCwxMyArMTY0LDExIEBAIFRFU1RfRihXZWJMYXllclRlc3QsIENs
aWVudCkKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGlt
ZXMoQXRMZWFzdCgxKSk7CiAgICAgdGV4dHVyZUxheWVyLnNldEZsaXBwZWQodHJ1ZSk7CiAgICAg
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1Rf
VFJVRSh0ZXh0dXJlTGF5ZXIuZmxpcHBlZCgpKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50
LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKICAgICBXZWJGbG9hdFJl
Y3QgdXZSZWN0KDAuMWYsIDAuMWYsIDAuOWYsIDAuOWYpOwogICAgIHRleHR1cmVMYXllci5zZXRV
VlJlY3QodXZSZWN0KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9j
bGllbnQpOwotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVMYXllci5mbGlwcGVkKCkpOwogCiAKICAg
ICAvLyBDb250ZW50IGxheWVyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138479</attachid>
            <date>2012-04-23 17:59:57 -0700</date>
            <delta_ts>2012-04-23 18:39:11 -0700</delta_ts>
            <desc>unit test for alpha attribute propagating to layer</desc>
            <filename>bug-84311-20120423175956.patch</filename>
            <type>text/plain</type>
            <size>43476</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0OTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiNjg4YTE0MTUwNzNl
NTA2NGY1YzcxNmY3MGU4MTUwNDc2MDRlY2Y4Li4xMWZmOWIwZmE3YTg1YWI3NDZlZmFlZDcyYjc3
MDYyMGJiNjRmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0xOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gVXNlIFRleHR1cmVMYXllckNocm9taXVtIGZvciBXZWJHTCBjb250ZW50IGluc3RlYWQgb2Yg
YSBkZWRpY2F0ZWQgbGF5ZXIgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgc29tZSB1bnVzZWQgZ2V0dGVycy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIpOgorCiAyMDEyLTA0LTIwICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gV2ViRmlsdGVyT3BlcmF0aW9ucyBB
UEkgZG9lcyBub3QgY29tcGlsZSBvciBkeW5hbWljYWxseSBsaW5rCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkw
YjAyODAyYjZkNWY0MTg0M2JjNzJhYTRmMmQ5OTc4NjE2NDc3Yy4uMjAwOTNhOTAzN2JkMDllN2Qz
MWFlODVjZjg1NmRmNzI3MmI4YzM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEy
LTA0LTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBVc2UgVGV4dHVyZUxheWVyQ2hyb21pdW0gZm9yIFdlYkdMIGNvbnRlbnQgaW5z
dGVhZCBvZiBhIGRlZGljYXRlZCBsYXllciB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDMxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYkdMIGNvbnRlbnQncyBpbnRlcmZhY2Ugd2l0aCB0aGUg
Y29tcG9zaXRvciBjYW4gYmUgZXhwcmVzc2VkIGluIHRlcm1zIG9mIHR3byBiYXNpYyBvcGVyYXRp
b25zOgorICAgICAgICAxLikgRG8gc29tZSBzdHVmZgorICAgICAgICAyLikgUHJvdmlkZSBhIHRl
eHR1cmUgSUQgZm9yIHRoZSBjb21wb3NpdG9yIHRvIHVzZQorCisgICAgICAgIFRoaXMgaW1wbGVt
ZW50cyAoMSkgaW4gRHJhd2luZ0J1ZmZlckNocm9taXVtIGFuZCB1c2VzIHRoZSBhbHJlYWR5LWV4
aXN0aW5nIFRleHR1cmVMYXllckNocm9taXVtIHRvIGhhbmRsZSAoMikuCisgICAgICAgIFRoaXMg
Y3V0cyBkb3duIHRoZSBjb21wb3NpdG9yIGludGVyZmFjZSBzaWduaWZpY2FudGx5IGFuZCBhbGxv
d3MgZm9yIG1vcmUgY29kZSByZXVzZSBpbiBleGNoYW5nZSBmb3IgbW9yZSBjb2RlCisgICAgICAg
IGluIFRleHR1cmVMYXllckNocm9taXVtIHRvIGhhbmRsZSB0aGUgZmVhdHVyZXMgV2ViR0wgbmVl
ZHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKERyYXdpbmdCdWZmZXJQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjpEcmF3aW5n
QnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6
fkRyYXdpbmdCdWZmZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQ
cml2YXRlOjpsYXllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFRleHR1
cmVMYXllckNocm9taXVtQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVMYXllckNo
cm9taXVtQ2xpZW50Ojp+VGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChUZXh0dXJlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y2xlYXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6Z3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoRHJhd2luZ0J1ZmZlcik6CisKIDIwMTItMDQtMjMg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF1bUmVm
YWN0b3JpbmddIFJlbW92ZSBWOFByb3h5Ojp0b1Y4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggY2YyNDVkOGZkYWI0ZWEyODRiYzI1NDQ3OGExZjk2MTQ5MWQyYWI2ZC4uZTE5YmU2Y2M3
NzllZjY4N2IxYTdmM2U2Y2MzNTY0YzY5N2VjZTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0xOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIFRleHR1cmVMYXllckNocm9t
aXVtIGZvciBXZWJHTCBjb250ZW50IGluc3RlYWQgb2YgYSBkZWRpY2F0ZWQgbGF5ZXIgdHlwZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQzMTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5n
eXBpOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAqIHNy
Yy9XZWJMYXllci5jcHA6CisgICAgICAgICogdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcDoKKwogMjAxMi0w
NC0yMyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIFByb3Blcmx5IGlnbm9yZSB1bnN1cHBvcnRlZCBhbmltYXRpb24gZGlyZWN0aW9ucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuaAppbmRleCA1MmVmYmI3ZWIzODIwNmIzMWY3ZTdmZThlYmM3NTdkYzU2
ZjYxNGE4Li44MzMzMGQzM2MwNTJiMTk4MTg1ZTk2NGViMTIzODkzZTIwZjczMzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5oCkBAIC02MCwxMiArNjAsMTAgQEAgcHVibGljOgogICAgIC8vIFNldHMgd2hl
dGhlciBvciBub3QgdGhlIHRleHR1cmUgc2hvdWxkIGJlIGZsaXBwZWQgaW4gdGhlIFkgZGlyZWN0
aW9uIHdoZW4KICAgICAvLyByZW5kZXJlZC4KICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rmxp
cHBlZChib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZmxpcHBlZCgpIGNvbnN0OwogCiAg
ICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUgdGV4dHVyZSB0aGF0IGlzIG1h
cHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYkZs
b2F0UmVjdCB1dlJlY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMzNhY2FlOTMwYTQwMWI2NmYzNjY0ZmMxZWVkNmMw
NzQ2MDFiYmQyLi4zYWU2ZjFkNTZiMzQzOTczYzRhYjRkMGZlNGZmYWFjNGYyNjRmZTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0zNTk4LDggKzM1OTgsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAn
LAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fj
dGl2ZUFuaW1hdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKaW5kZXggNGNkODk0MjZkNmNkYzk1ZGEwZDAxNGNk
NjE1YmE0OGVlNTEyNWU4ZC4uMzRhOGRjMTE1MzFlYTJlMmNjMzcyMzBkMGQxM2UxYTQyMDY4ZjI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCkBAIC0zNSw4ICszNSw5
IEBACiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNs
dWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
ODksOSArOTAsNiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LAogCiBEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiB7Ci0gICAg
aWYgKG1fcGxhdGZvcm1MYXllcikKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXREcmF3aW5n
QnVmZmVyKDApOwotCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTQ4LDE2ICsxNDYsNTYgQEAgdW5zaWduZWQgRHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZl
cigpIGNvbnN0CiB9CiAjZW5kaWYKIAorY2xhc3MgRHJhd2luZ0J1ZmZlclByaXZhdGUgOiBwdWJs
aWMgVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERyYXdpbmdCdWZmZXJQcml2YXRlKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEcmF3aW5nQnVm
ZmVyUHJpdmF0ZShEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQorICAgICAgICA6IG1fZHJh
d2luZ0J1ZmZlcihkcmF3aW5nQnVmZmVyKQorICAgICAgICAsIG1fbGF5ZXIoVGV4dHVyZUxheWVy
Q2hyb21pdW06OmNyZWF0ZSh0aGlzKSkKKyAgICB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldENvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgICAgIG1fbGF5ZXItPnNldE9wYXF1
ZSghYXR0cmlidXRlcy5hbHBoYSk7CisgICAgICAgIG1fbGF5ZXItPnNldFByZW11bHRpcGxpZWRB
bHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQorICAgIHsKKyAgICAgICAgbV9sYXllci0+Y2xlYXJD
bGllbnQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHByZXBhcmVUZXh0dXJlKEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2RyYXdp
bmdCdWZmZXItPnByZXBhcmVCYWNrQnVmZmVyKCk7CisKKyAgICAgICAgY29udGV4dCgpLT5mbHVz
aCgpOworICAgICAgICBjb250ZXh0KCktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworICAgICAg
ICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBtX2RyYXdpbmdCdWZmZXItPmZyb250Q29sb3JCdWZmZXIo
KTsKKyAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zy
b250QnVmZmVyKCkpCisgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZENvcHkobV9kcmF3aW5nQnVm
ZmVyLT5jb2xvckJ1ZmZlcigpLCB0ZXh0dXJlSWQsIG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgpKTsK
KworICAgICAgICByZXR1cm4gdGV4dHVyZUlkOworICAgIH0KKworICAgIHZpcnR1YWwgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB9CisKKyAgICBMYXllckNo
cm9taXVtKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisgICAgUmVmUHRyPFRleHR1
cmVMYXllckNocm9taXVtPiBtX2xheWVyOworfTsKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQog
ewotICAgIGlmICghbV9wbGF0Zm9ybUxheWVyKSB7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllciA9
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllci0+
c2V0RHJhd2luZ0J1ZmZlcih0aGlzKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXRPcGFx
dWUobV9hbHBoYSA9PSBPcGFxdWUpOwotICAgIH0KKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAg
ICAgbV9wcml2YXRlID0gYWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXJQcml2YXRlKHRoaXMpKTsK
IAotICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bGF5ZXIoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAppbmRleCBkODNjOGU1YjY3Mzk3YzNhZGIzZDFjMTYyYzZiZjdjMzA5ZTZjYTdmLi42MzQ4
ZTE0OTY4N2Y0MzU1MDk2NWNhODZkNDQxYmQ2ZDhmZjYyYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
VHJlZVN5bmNocm9uaXplci5oIgotI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RhbWFn
ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKQEAgLTEw
NjcsNyArMTA2Niw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1
YWQoY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqIHF1YWQpCiAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9U
T19FREdFKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9X
UkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CiAKLSAgICBpZiAocXVh
ZC0+aGFzQWxwaGEoKSAmJiAhcXVhZC0+cHJlbXVsdGlwbGllZEFscGhhKCkpCisgICAgaWYgKCFx
dWFkLT5wcmVtdWx0aXBsaWVkQWxwaGEoKSkKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6OlNSQ19BTFBIQSwgR3JhcGhpY3NDb250
ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKIAogICAgIGNvbnN0IEludFNpemUmIGJvdW5k
cyA9IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDI5Y2M2YmEwYjEyNGMwZmNlZWFhYTAzYzZjMDVlZGNhOTM2ZGJmMDUuLjk3
NjdlM2U5ZDYyNDY2YzBjYTc4ZTJkODcxY2E3NmY4ZDI4ZDE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0
dXJlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTI5LDQ5ICsyOSw3MCBAQAogCiAjaW5jbHVkZSAiVGV4
dHVyZUxheWVyQ2hyb21pdW0uaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgorI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1w
bC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8VGV4dHVyZUxheWVyQ2hy
b21pdW0+IFRleHR1cmVMYXllckNocm9taXVtOjpjcmVhdGUoKQorUGFzc1JlZlB0cjxUZXh0dXJl
TGF5ZXJDaHJvbWl1bT4gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZShUZXh0dXJlTGF5ZXJD
aHJvbWl1bUNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVy
ZUxheWVyQ2hyb21pdW0pOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZUxheWVyQ2hy
b21pdW0oY2xpZW50KSk7CiB9CiAKLVRleHR1cmVMYXllckNocm9taXVtOjpUZXh0dXJlTGF5ZXJD
aHJvbWl1bSgpCitUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6VGV4dHVyZUxheWVyQ2hyb21pdW0oVGV4
dHVyZUxheWVyQ2hyb21pdW1DbGllbnQqIGNsaWVudCkKICAgICA6IExheWVyQ2hyb21pdW0oKQot
ICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZmxp
cHBlZCh0cnVlKQogICAgICwgbV91dlJlY3QoMCwgMCwgMSwgMSkKKyAgICAsIG1fcHJlbXVsdGlw
bGllZEFscGhhKHRydWUpCisgICAgLCBtX3JhdGVMaW1pdENvbnRleHQoZmFsc2UpCisgICAgLCBt
X2NvbnRleHRMb3N0KGZhbHNlKQorICAgICwgbV90ZXh0dXJlSWQoMCkKICAgICAsIG1faW9TdXJm
YWNlSWQoMCkKIHsKIH0KIAorVGV4dHVyZUxheWVyQ2hyb21pdW06On5UZXh0dXJlTGF5ZXJDaHJv
bWl1bSgpCit7CisgICAgaWYgKG1fcmF0ZUxpbWl0Q29udGV4dCAmJiBtX2NsaWVudCAmJiBsYXll
clRyZWVIb3N0KCkpCisgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c3RvcFJhdGVMaW1pdGVyKG1f
Y2xpZW50LT5jb250ZXh0KCkpOworfQorCiBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUZXh0dXJl
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogewogICAgIHJldHVybiBDQ1RleHR1
cmVMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOwogfQogCi1ib29sIFRleHR1cmVMYXllckNo
cm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAordm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6
c2V0RmxpcHBlZChib29sIGZsaXBwZWQpCiB7Ci0gICAgcmV0dXJuIChtX3RleHR1cmVJZCB8fCBt
X2lvU3VyZmFjZUlkKSAmJiBMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKKyAgICBtX2Zs
aXBwZWQgPSBmbGlwcGVkOworICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgVGV4dHVy
ZUxheWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKK3ZvaWQgVGV4dHVyZUxh
eWVyQ2hyb21pdW06OnNldFVWUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgbV90
ZXh0dXJlSWQgPSBpZDsKKyAgICBtX3V2UmVjdCA9IHJlY3Q7CiAgICAgc2V0TmVlZHNDb21taXQo
KTsKIH0KIAotdm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0RmxpcHBlZChib29sIGZsaXBw
ZWQpCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRQcmVtdWx0aXBsaWVkQWxwaGEoYm9v
bCBwcmVtdWx0aXBsaWVkQWxwaGEpCiB7Ci0gICAgbV9mbGlwcGVkID0gZmxpcHBlZDsKKyAgICBt
X3ByZW11bHRpcGxpZWRBbHBoYSA9IHByZW11bHRpcGxpZWRBbHBoYTsKICAgICBzZXROZWVkc0Nv
bW1pdCgpOwogfQogCi12b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRVVlJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQordm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0UmF0ZUxpbWl0
Q29udGV4dChib29sIHJhdGVMaW1pdCkKIHsKLSAgICBtX3V2UmVjdCA9IHJlY3Q7CisgICAgaWYg
KCFyYXRlTGltaXQgJiYgbV9yYXRlTGltaXRDb250ZXh0ICYmIG1fY2xpZW50ICYmIGxheWVyVHJl
ZUhvc3QoKSkKKyAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5zdG9wUmF0ZUxpbWl0ZXIobV9jbGll
bnQtPmNvbnRleHQoKSk7CisKKyAgICBtX3JhdGVMaW1pdENvbnRleHQgPSByYXRlTGltaXQ7Cit9
CisKK3ZvaWQgVGV4dHVyZUxheWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkK
K3sKKyAgICBtX3RleHR1cmVJZCA9IGlkOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKQEAg
LTgyLDE0ICsxMDMsMzggQEAgdm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0SU9TdXJmYWNl
UHJvcGVydGllcyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl8KICAgICBzZXROZWVkc0Nv
bW1pdCgpOwogfQogCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KQoreworICAgIExheWVyQ2hyb21pdW06OnNl
dE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0KTsKKworICAgIGlmIChtX3JhdGVMaW1pdENvbnRl
eHQgJiYgbV9jbGllbnQgJiYgbGF5ZXJUcmVlSG9zdCgpKQorICAgICAgICBsYXllclRyZWVIb3N0
KCktPnN0YXJ0UmF0ZUxpbWl0ZXIobV9jbGllbnQtPmNvbnRleHQoKSk7Cit9CisKK2Jvb2wgVGV4
dHVyZUxheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICht
X2NsaWVudCB8fCBtX3RleHR1cmVJZCB8fCBtX2lvU3VyZmFjZUlkKSAmJiAhbV9jb250ZXh0TG9z
dCAmJiBMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKK30KKwordm9pZCBUZXh0dXJlTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlciopCit7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIG1fdGV4dHVy
ZUlkID0gbV9jbGllbnQtPnByZXBhcmVUZXh0dXJlKHVwZGF0ZXIpOworICAgICAgICBtX2NvbnRl
eHRMb3N0ID0gbV9jbGllbnQtPmNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOworICAgIH0K
KworICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7Cit9CisKIHZvaWQgVGV4dHVyZUxheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAgIExheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwogCiAgICAgQ0NUZXh0dXJlTGF5ZXJJ
bXBsKiB0ZXh0dXJlTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ1RleHR1cmVMYXllckltcGwqPihsYXll
cik7Ci0gICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQobV90ZXh0dXJlSWQpOwogICAgIHRl
eHR1cmVMYXllci0+c2V0RmxpcHBlZChtX2ZsaXBwZWQpOwogICAgIHRleHR1cmVMYXllci0+c2V0
VVZSZWN0KG1fdXZSZWN0KTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldFByZW11bHRpcGxpZWRBbHBo
YShtX3ByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQo
bV90ZXh0dXJlSWQpOwogICAgIHRleHR1cmVMYXllci0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyht
X2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVy
Q2hyb21pdW0uaAppbmRleCA3YTkxMDkyNDgxNTFiNGQxMTAxOGM3ZTg2NzA5ZjM5YWFjNTFjNTU5
Li4yNGY1YWM1OTQxMjdhMzQwYzI5MzFkMWY0NjEwMDE4MWJlODNmYTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVMYXllckNocm9taXVtLmgKQEAgLTMzLDM0ICszMyw3MyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIFRleHR1cmVMYXllckNocm9taXVtQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICAvLyBDYWxsZWQgdG8gcHJlcGFyZSB0aGlzIGxheWVyJ3MgdGV4dHVyZSBmb3IgY29tcG9zaXRp
bmcuIFRoZSBjbGllbnQgbWF5IHF1ZXVlIGEgdGV4dHVyZQorICAgIC8vIHVwbG9hZCBvciBjb3B5
IG9uIHRoZSBDQ1RleHR1cmVVcGRhdGVyLgorICAgIC8vIFJldHVybnMgdGhlIHRleHR1cmUgSUQg
dG8gYmUgdXNlZCBmb3IgY29tcG9zaXRpbmcuCisgICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJl
VGV4dHVyZShDQ1RleHR1cmVVcGRhdGVyJikgPSAwOworCisgICAgLy8gUmV0dXJucyB0aGUgY29u
dGV4dCB0aGF0IGlzIHByb3ZpZGluZyB0aGUgdGV4dHVyZS4gVXNlZCBmb3IgcmF0ZSBsaW1pdGlu
ZyBhbmQgZGV0ZWN0aW5nIGxvc3QgY29udGV4dC4KKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+VGV4dHVyZUxh
eWVyQ2hyb21pdW1DbGllbnQoKSB7IH0KK307CisKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIHRo
ZSByZW5kZXJlZCBvdXRwdXQgb2YgYSBwbHVnaW4gaW5zdGFuY2UuCiBjbGFzcyBUZXh0dXJlTGF5
ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CisgICAgLy8gSWYgdGhp
cyB0ZXh0dXJlIGxheWVyIHJlcXVpcmVzIHNwZWNpYWwgcHJlcGFyYXRpb24gbG9naWMgZm9yIGVh
Y2ggZnJhbWUgZHJpdmVuIGJ5CisgICAgLy8gdGhlIGNvbXBvc2l0b3IsIHBhc3MgaW4gYSBub24t
bmlsIGNsaWVudC4gUGFzcyBpbiBhIG5pbCBjbGllbnQgcG9pbnRlciBpZiB0ZXh0dXJlIHVwZGF0
ZXMKKyAgICAvLyBhcmUgZHJpdmVuIGJ5IGFuIGV4dGVybmFsIHByb2Nlc3MuCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGNyZWF0ZShUZXh0dXJlTGF5ZXJDaHJv
bWl1bUNsaWVudCopOworICAgIHZpcnR1YWwgflRleHR1cmVMYXllckNocm9taXVtKCk7CisKKyAg
ICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KIAogICAgIHZpcnR1YWwgUGFz
c093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICAvLyBTZXRz
IHdoZXRoZXIgdGhpcyB0ZXh0dXJlIHNob3VsZCBiZSBZLWZsaXBwZWQgYXQgZHJhdyB0aW1lLiBE
ZWZhdWx0cyB0byB0cnVlLgorICAgIHZvaWQgc2V0RmxpcHBlZChib29sKTsKKworICAgIC8vIFNl
dHMgYSBVViB0cmFuc2Zvcm0gdG8gYmUgdXNlZCBhdCBkcmF3IHRpbWUuIERlZmF1bHRzIHRvICgw
LCAwLCAxLCAxKS4KKyAgICB2b2lkIHNldFVWUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKworICAg
IC8vIFNldHMgd2hldGhlciB0aGUgYWxwaGEgY2hhbm5lbCBpcyBwcmVtdWx0aXBsaWVkIG9yIHVu
cHJlbXVsdGlwbGllZC4gRGVmYXVsdHMgdG8gdHJ1ZS4KKyAgICB2b2lkIHNldFByZW11bHRpcGxp
ZWRBbHBoYShib29sKTsKKworICAgIC8vIFNldHMgd2hldGhlciB0aGlzIGNvbnRleHQgc2hvdWxk
IHJhdGUgbGltaXQgb24gZGFtYWdlIHRvIHByZXZlbnQgdG9vIG1hbnkgZnJhbWVzIGZyb20KKyAg
ICAvLyBiZWluZyBxdWV1ZWQgdXAgYmVmb3JlIHRoZSBjb21wb3NpdG9yIGdldHMgYSBjaGFuY2Ug
dG8gcnVuLiBSZXF1aXJlcyBhIG5vbi1uaWwgY2xpZW50LgorICAgIC8vIERlZmF1bHRzIHRvIGZh
bHNlLgorICAgIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKTsKIAogICAgIC8vIENvZGUg
cGF0aCBmb3IgcGx1Z2lucyB3aGljaCBzdXBwbHkgdGhlaXIgb3duIHRleHR1cmUgSUQuCiAgICAg
dm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpOwotICAgIHZvaWQgc2V0RmxpcHBlZChib29sKTsK
LSAgICBib29sIGZsaXBwZWQoKSBjb25zdCB7IHJldHVybiBtX2ZsaXBwZWQ7IH0KLSAgICB2b2lk
IHNldFVWUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBjb25zdCBGbG9hdFJlY3QmIHV2UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9CiAKICAgICAvLyBDb2RlIHBhdGggZm9yIHBs
dWdpbnMgd2hpY2ggcmVuZGVyIHZpYSBhbiBJT1N1cmZhY2UuCiAgICAgdm9pZCBzZXRJT1N1cmZh
Y2VQcm9wZXJ0aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgaW9TdXJmYWNlSWQp
OwogCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0
JikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqKSBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIFRleHR1
cmVMYXllckNocm9taXVtKCk7CisgICAgZXhwbGljaXQgVGV4dHVyZUxheWVyQ2hyb21pdW0oVGV4
dHVyZUxheWVyQ2hyb21pdW1DbGllbnQqKTsKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3Rl
eHR1cmVJZDsKKyAgICBUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCogbV9jbGllbnQ7CisKICAg
ICBib29sIG1fZmxpcHBlZDsKICAgICBGbG9hdFJlY3QgbV91dlJlY3Q7CisgICAgYm9vbCBtX3By
ZW11bHRpcGxpZWRBbHBoYTsKKyAgICBib29sIG1fcmF0ZUxpbWl0Q29udGV4dDsKKyAgICBib29s
IG1fY29udGV4dExvc3Q7CisKKyAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKwogICAgIEludFNp
emUgbV9pb1N1cmZhY2VTaXplOwogICAgIHVpbnQzMl90IG1faW9TdXJmYWNlSWQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJjZjllMzg2YjY5OGFmZjQ2ODBhYWE2MGQyYjU2ZjNjOGRkZTJkOTAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCi0KLSNpbmNs
dWRlICJEcmF3aW5nQnVmZmVyLmgiCi0jaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIu
aCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
LmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8V2Vi
R0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZSgpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0oKSk7Ci19Ci0KLVdlYkdMTGF5ZXJD
aHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKCkKLSAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0o
KQotICAgICwgbV9oYXNBbHBoYSh0cnVlKQotICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEodHJ1
ZSkKLSAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCi0gICAgLCBtX3RleHR1cmVJZCgwKQotICAg
ICwgbV9kcmF3aW5nQnVmZmVyKDApCi17Ci19Ci0KLVdlYkdMTGF5ZXJDaHJvbWl1bTo6fldlYkdM
TGF5ZXJDaHJvbWl1bSgpCi17Ci0gICAgaWYgKGNvbnRleHQoKSAmJiBsYXllclRyZWVIb3N0KCkp
Ci0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c3RvcFJhdGVMaW1pdGVyKGNvbnRleHQoKSk7Ci19
Ci0KLWJvb2wgV2ViR0xMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAotewotICAg
IHJldHVybiBMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSAmJiAhbV9jb250ZXh0TG9zdDsK
LX0KLQotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiB1
cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKQotewotICAgIGlmICghZHJhd3NDb250
ZW50KCkgfHwgIW1fbmVlZHNEaXNwbGF5IHx8ICFtX2RyYXdpbmdCdWZmZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fZHJhd2luZ0J1ZmZlci0+cHJlcGFyZUJhY2tCdWZmZXIoKTsKLQotICAg
IGNvbnRleHQoKS0+Zmx1c2goKTsKLSAgICBjb250ZXh0KCktPm1hcmtMYXllckNvbXBvc2l0ZWQo
KTsKLSAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwotICAgIG1fY29udGV4dExvc3QgPSBjb250
ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsKLQotICAgIG1fdGV4dHVyZUlkID0gbV9kcmF3aW5n
QnVmZmVyLT5mcm9udENvbG9yQnVmZmVyKCk7Ci0gICAgaWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVx
dWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkpCi0gICAgICAgIHVwZGF0ZXIuYXBwZW5k
Q29weShtX2RyYXdpbmdCdWZmZXItPmNvbG9yQnVmZmVyKCksIG1fdGV4dHVyZUlkLCBib3VuZHMo
KSk7Ci19Ci0KLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5
ZXJJbXBsKiBsYXllcikKLXsKLSAgICBDYW52YXNMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGll
c1RvKGxheWVyKTsKLQotICAgIENDVGV4dHVyZUxheWVySW1wbCogdGV4dHVyZUxheWVyID0gc3Rh
dGljX2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXIpOwotICAgIHRleHR1cmVMYXllci0+
c2V0VGV4dHVyZUlkKG1fdGV4dHVyZUlkKTsKLSAgICB0ZXh0dXJlTGF5ZXItPnNldEhhc0FscGhh
KG1faGFzQWxwaGEpOwotICAgIHRleHR1cmVMYXllci0+c2V0UHJlbXVsdGlwbGllZEFscGhhKG1f
cHJlbXVsdGlwbGllZEFscGhhKTsKLX0KLQotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldE5l
ZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAgTGF5ZXJD
aHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdChkaXJ0eVJlY3QpOwotCi0gICAgLy8gSWYgV2Vi
R0wgY29tbWFuZHMgYXJlIGlzc3VlZCBvdXRzaWRlIG9mIGEgdGhlIGFuaW1hdGlvbiBjYWxsYmFj
a3MsIHRoZW4gdXNlCi0gICAgLy8gY2FsbCByYXRlTGltaXRPZmZzY3JlZW5Db250ZXh0Q0hST01J
VU0oKSB0byBrZWVwIHRoZSBjb250ZXh0IGZyb20gZ2V0dGluZyB0b28gZmFyIGFoZWFkLgotICAg
IGlmIChsYXllclRyZWVIb3N0KCkpCi0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c3RhcnRSYXRl
TGltaXRlcihjb250ZXh0KCkpOwotfQotCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0RHJh
d2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQotewotICAgIGJvb2wgZHJh
d2luZ0J1ZmZlckNoYW5nZWQgPSAobV9kcmF3aW5nQnVmZmVyICE9IGRyYXdpbmdCdWZmZXIpOwot
Ci0gICAgLy8gVGhlIEdyYXBoaWNzQ29udGV4dDNEIHVzZWQgYnkgdGhlIGxheWVyIGlzIHRoZSBj
b250ZXh0IGFzc29jaWF0ZWQgd2l0aAotICAgIC8vIHRoZSBkcmF3aW5nIGJ1ZmZlci4gSWYgdGhl
IGRyYXdpbmcgYnVmZmVyIGlzIGNoYW5naW5nLCBtYWtlIHN1cmUKLSAgICAvLyB0byBzdG9wIHRo
ZSByYXRlIGxpbWl0ZXIgb24gdGhlIG9sZCBjb250ZXh0LCBub3QgdGhlIG5ldyBjb250ZXh0IGZy
b20gdGhlCi0gICAgLy8gbmV3IGRyYXdpbmcgYnVmZmVyLgotICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0M0QgPSBjb250ZXh0KCk7Ci0gICAgaWYgKGxheWVyVHJlZUhvc3QoKSAmJiBkcmF3
aW5nQnVmZmVyQ2hhbmdlZCAmJiBjb250ZXh0M0QpCi0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+
c3RvcFJhdGVMaW1pdGVyKGNvbnRleHQzRCk7Ci0KLSAgICBtX2RyYXdpbmdCdWZmZXIgPSBkcmF3
aW5nQnVmZmVyOwotICAgIGlmICghbV9kcmF3aW5nQnVmZmVyKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4dCgp
LT5nZXRDb250ZXh0QXR0cmlidXRlcygpOwotICAgIG1faGFzQWxwaGEgPSBhdHRyaWJ1dGVzLmFs
cGhhOwotICAgIG1fcHJlbXVsdGlwbGllZEFscGhhID0gYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVk
QWxwaGE7Ci0gICAgbV9jb250ZXh0TG9zdCA9IGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5n
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9S
OwotfQotCi1HcmFwaGljc0NvbnRleHQzRCogV2ViR0xMYXllckNocm9taXVtOjpjb250ZXh0KCkg
Y29uc3QKLXsKLSAgICBpZiAoZHJhd2luZ0J1ZmZlcigpKQotICAgICAgICByZXR1cm4gZHJhd2lu
Z0J1ZmZlcigpLT5ncmFwaGljc0NvbnRleHQzRCgpLmdldCgpOwotCi0gICAgcmV0dXJuIDA7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNWY1NjM2
MjM1OGYxYzI0NjJjYWZmODNkMDA4ODNiNjFjY2RjMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotCi0jaWZuZGVmIFdlYkdMTGF5ZXJDaHJvbWl1bV9oCi0jZGVmaW5lIFdlYkdMTGF5ZXJDaHJv
bWl1bV9oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNpbmNsdWRlICJD
YW52YXNMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgV2ViR0xM
YXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKLQotLy8gQSBMYXllciBjb250YWluaW5nIGEgV2Vi
R0wgY2FudmFzCi1jbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJD
aHJvbWl1bSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9t
aXVtPiBjcmVhdGUoKTsKLQotICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwotCi0g
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJ
bXBsKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29u
c3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXREcmF3aW5nQnVmZmVyKERyYXdpbmdCdWZmZXIqKTsK
LSAgICBEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3
aW5nQnVmZmVyOyB9Ci1wcml2YXRlOgotICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSgpOwotICAgIGZy
aWVuZCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwotCi0gICAgYm9vbCBt
X2hhc0FscGhhOwotICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7Ci0gICAgYm9vbCBtX2Nv
bnRleHRMb3N0OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotCi0gICAgLy8gVGhlIERyYXdp
bmdCdWZmZXIgaG9sZGluZyB0aGUgV2ViR0wgY29udGVudHMgZm9yIHRoaXMgbGF5ZXIuCi0gICAg
Ly8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZl
ciBhbHJlYWR5IGhvbGRzCi0gICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJv
bWl1bS4KLSAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7Ci19OwotCi19Ci0jZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURy
YXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZURyYXdRdWFkLmNwcAppbmRleCA2NDIzOGI3OTRkMWI0MzJmMGM3YmU5Y2FkNjVl
YmUwYjgwMDgzZThiLi5iZjU3ODQwZGJiNGQwZWY0NWUyM2MxYjA1ZDU0ZTA2MDVmY2Q2Y2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQuY3BwCkBAIC0yOSwxNSArMjksMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBD
Q1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJv
b2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2
UmVjdCwgYm9vbCBmbGlwcGVkLCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25l
ZCBpb1N1cmZhY2VUZXh0dXJlSWQpCitQYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBDQ1Rl
eHR1cmVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVk
LCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJl
SWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVEcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIGhhc0FscGhhLCBwcmVtdWx0aXBsaWVkQWxw
aGEsIHV2UmVjdCwgZmxpcHBlZCwgaW9TdXJmYWNlU2l6ZSwgaW9TdXJmYWNlVGV4dHVyZUlkKSk7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlw
cGVkLCBpb1N1cmZhY2VTaXplLCBpb1N1cmZhY2VUZXh0dXJlSWQpKTsKIH0KIAotQ0NUZXh0dXJl
RHJhd1F1YWQ6OkNDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQs
IGJvb2wgaGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3Qm
IHV2UmVjdCwgYm9vbCBmbGlwcGVkLCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNp
Z25lZCBpb1N1cmZhY2VUZXh0dXJlSWQpCitDQ1RleHR1cmVEcmF3UXVhZDo6Q0NUZXh0dXJlRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxw
aGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQsIGNvbnN0IEludFNpemUm
IGlvU3VyZmFjZVNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCkKICAgICA6IENDRHJh
d1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpUZXh0dXJlQ29udGVudCwgcXVhZFJl
Y3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCi0gICAgLCBtX2hhc0FscGhhKGhhc0Fs
cGhhKQogICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKQogICAg
ICwgbV91dlJlY3QodXZSZWN0KQogICAgICwgbV9mbGlwcGVkKGZsaXBwZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVE
cmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlRHJhd1F1YWQuaAppbmRleCAxYTgzMTU3MWJhZDUwZGM4OTYxMTBiZDg1ZWI4ODRj
MzgzODJjMjkyLi5mMzQyYmM4Mjg1ZjMwMjgzYjgzYzRlOWEyYmNlN2Q2ZDExMDdhZDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmgKQEAgLTM1LDEwICszNSw5IEBAIGNsYXNzIEND
TGF5ZXJJbXBsOwogY2xhc3MgQ0NUZXh0dXJlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NUZXh0dXJlRHJhd1F1YWQpOwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29s
IGhhc0FscGhhLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJl
Y3QsIGJvb2wgZmxpcHBlZCwgY29uc3QgSW50U2l6ZSYgaW9TdXJmYWNlU2l6ZSwgdW5zaWduZWQg
aW9TdXJmYWNlVGV4dHVyZUlkKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1RleHR1cmVEcmF3
UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVu
c2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVj
dCYgdXZSZWN0LCBib29sIGZsaXBwZWQsIGNvbnN0IEludFNpemUmIGlvU3VyZmFjZVNpemUsIHVu
c2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCk7CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBj
b25zdCB7IHJldHVybiAgbV90ZXh0dXJlSWQ7IH0KLSAgICBib29sIGhhc0FscGhhKCkgY29uc3Qg
eyByZXR1cm4gIG1faGFzQWxwaGE7IH0KICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSgpIGNv
bnN0IHsgcmV0dXJuICBtX3ByZW11bHRpcGxpZWRBbHBoYTsgfQogICAgIEZsb2F0UmVjdCB1dlJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVjdDsgfQogICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQpAQCAtNDcsMTAgKzQ2LDkgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGlvU3VyZmFjZVRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1faW9TdXJmYWNlVGV4
dHVyZUlkOyB9CiAgCiBwcml2YXRlOgotICAgIENDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVfaWQsIGJvb2wg
aGFzQWxwaGEsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVj
dCwgYm9vbCBmbGlwcGVkLCBjb25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBp
b1N1cmZhY2VUZXh0dXJlSWQpOworICAgIENDVGV4dHVyZURyYXdRdWFkKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVfaWQsIGJvb2wgcHJl
bXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkLCBj
b25zdCBJbnRTaXplJiBpb1N1cmZhY2VTaXplLCB1bnNpZ25lZCBpb1N1cmZhY2VUZXh0dXJlSWQp
OwogICAgIAogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotICAgIGJvb2wgbV9oYXNBbHBoYTsK
ICAgICBib29sIG1fcHJlbXVsdGlwbGllZEFscGhhOwogICAgIEZsb2F0UmVjdCBtX3V2UmVjdDsK
ICAgICBib29sIG1fZmxpcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3Bw
CmluZGV4IDg1MzRhOGM4NWZkZGRiZjEwZDgzZTcyODNkMDJmNTU0ZjhlNThmMmYuLjI1Y2JlNGI1
OTUzMDEzYTg3YWFmZWU2MzI2OTdiOTk0NDYwM2RlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmNwcApAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBD
Q1RleHR1cmVMYXllckltcGw6OkNDVGV4dHVyZUxheWVySW1wbChpbnQgaWQpCiAgICAgOiBDQ0xh
eWVySW1wbChpZCkKICAgICAsIG1fdGV4dHVyZUlkKDApCi0gICAgLCBtX2hhc0FscGhhKHRydWUp
CiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYSh0cnVlKQogICAgICwgbV9mbGlwcGVkKHRydWUp
CiAgICAgLCBtX3V2UmVjdCgwLCAwLCAxLCAxKQpAQCAtOTMsNyArOTIsNyBAQCB2b2lkIENDVGV4
dHVyZUxheWVySW1wbDo6d2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyKQogdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wm
KQogewogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwg
cXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX2hhc0FscGhhLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwg
bV91dlJlY3QsIG1fZmxpcHBlZCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJ
ZCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwg
bV91dlJlY3QsIG1fZmxpcHBlZCwgbV9pb1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZVRleHR1cmVJ
ZCkpOwogfQogCiB2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6ZHVtcExheWVyUHJvcGVydGllcyhU
ZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5
ZXJJbXBsLmgKaW5kZXggYzZjOWIxNDUwMzRiNTNjMzU0YWIxZGJmOWJkZDkyZjg5Nzg4NzRjNS4u
ZjFjMjY1ZmExZTFlYjIwYjIxOWZmNzYxY2VlZTQ3ZTU3OWZjMDdhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KICAgICB2b2lk
IHNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkgeyBtX3RleHR1cmVJZCA9IGlkOyB9Ci0gICAgdm9p
ZCBzZXRIYXNBbHBoYShib29sIGhhc0FscGhhKSB7IG1faGFzQWxwaGEgPSBoYXNBbHBoYTsgfQog
ICAgIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKSB7
IG1fcHJlbXVsdGlwbGllZEFscGhhID0gcHJlbXVsdGlwbGllZEFscGhhOyB9CiAgICAgdm9pZCBz
ZXRGbGlwcGVkKGJvb2wgZmxpcHBlZCkgeyBtX2ZsaXBwZWQgPSBmbGlwcGVkOyB9CiAgICAgdm9p
ZCBzZXRVVlJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fdXZSZWN0ID0gcmVjdDsgfQpA
QCAtNjgsNyArNjcsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJU
eXBlQXNTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiVGV4dHVyZUxheWVyIjsgfQog
CiAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgYm9vbCBtX2hhc0FscGhhOwogICAgIGJv
b2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7CiAgICAgYm9vbCBtX2ZsaXBwZWQ7CiAgICAgRmxvYXRS
ZWN0IG1fdXZSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9EcmF3aW5nQnVmZmVyLmgKaW5kZXggOTVlYTkwZjA5YmIyMGZkYWEzYWQ5YzhkZDljZDYy
YWJkNmQ3NGZiNi4uZWU0ZWZjMTRiZDQ2Mjc5YzdkZDlmMWMxYWI5MWFmMDVhZmY4ODQyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1
ZmZlci5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEltYWdlRGF0YTsKICNpZiBQTEFURk9STShD
SFJPTUlVTSkKLWNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bTsKK2NsYXNzIERyYXdpbmdCdWZmZXJQ
cml2YXRlOwogI2VuZGlmCiAKIC8vIE1hbmFnZXMgYSByZW5kZXJpbmcgdGFyZ2V0IChmcmFtZWJ1
ZmZlciArIGF0dGFjaG1lbnQpIGZvciBhIGNhbnZhcy4gIENhbiBwdWJsaXNoIGl0cyByZW5kZXJp
bmcKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopOwogI2VuZGlmCiAKLSAgICBQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dDsgfQorICAgIEdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRl
eHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCiBwcml2YXRlOgogICAg
IERyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgYm9vbCBt
dWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKQEAgLTE1OCw3ICsxNTgsNyBAQCBwcml2YXRl
OgogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyOwogCiAjaWYg
UExBVEZPUk0oQ0hST01JVU0pCi0gICAgUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gbV9wbGF0
Zm9ybUxheWVyOworICAgIE93blB0cjxEcmF3aW5nQnVmZmVyUHJpdmF0ZT4gbV9wcml2YXRlOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpp
bmRleCA5NTQ4YjJhMGY2NWRiMTk5MzkyYThiZmU1NWE5Zjk3ZDBlNzI2N2Y0Li45MWYzYjBlOWJl
NzFmZmJkNDU0NTgxNjA1OWI3MTM4NjI1MmQwMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cGkKQEAgLTk1LDYgKzk1LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9Db21wb3NpdG9yRmFr
ZUdyYXBoaWNzQ29udGV4dDNELmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NvbXBvc2l0b3JGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAndGVzdHMvRHJhZ0ltYWdlVGVz
dC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0RyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9GYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LmgnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0Zha2VHcmFwaGljc0NvbnRleHQzRFRlc3QuY3BwJywKICAgICAgICAg
ICAgICd0ZXN0cy9GYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCcsCkBAIC0xMzEsNyArMTMyLDYg
QEAKICAgICAgICAgICAgICd0ZXN0cy9UcmVlVGVzdEhlbHBlcnMuaCcsCiAgICAgICAgICAgICAn
dGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvV2ViRnJhbWVUZXN0LmNwcCcsCi0gICAgICAgICAgICAndGVzdHMvV2ViR0xMYXll
ckNocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCmlu
ZGV4IDI2MjAwMjZiZmI3ZjE4MzU0MmY1Yzc4MmEwZDc0OTBiMzBjZGFjNmQuLmQyNDM5ZTg4ZDJk
MGMxOTU1YzViOGFkNDc3NTgxMmIwM2YzOTZiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKQogewotICAgIFJlZlB0cjxUZXh0dXJlTGF5ZXJD
aHJvbWl1bT4gbGF5ZXIgPSBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXllciA9IFRleHR1cmVMYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CiAgICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7CiAgICAgcmV0dXJuIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7CiB9CkBAIC01NiwyMSArNTYs
MTEgQEAgdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0RmxpcHBlZChib29sIGZsaXBw
ZWQpCiAgICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT5zZXRGbGlwcGVkKGZsaXBw
ZWQpOwogfQogCi1ib29sIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpmbGlwcGVkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gY29uc3RVbndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPmZsaXBw
ZWQoKTsKLX0KLQogdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VVZSZWN0KGNvbnN0
IFdlYkZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+
KCktPnNldFVWUmVjdChyZWN0KTsKIH0KIAotV2ViRmxvYXRSZWN0IFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjp1dlJlY3QoKSBjb25zdAotewotICAgIHJldHVybiBXZWJGbG9hdFJlY3QoY29uc3RV
bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnV2UmVjdCgpKTsKLX0KLQogV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyKFBhc3NSZWZQdHI8VGV4dHVy
ZUxheWVyQ2hyb21pdW0+IGxheWVyKQogICAgIDogV2ViTGF5ZXIobGF5ZXIpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKaW5kZXggN2NlMDc1MzkzNTAzZTcxYzVjYWRk
ODZjNDQ0N2E2ODc3ZGUxYTIzNy4uZWNmNzQ1MmZjNjU0YTFmNzZlN2VhNjM5ODhmNzZlNjNlZGQx
OTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcApAQCAtMzEsMTMg
KzMxLDExIEBACiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCi0KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJTaXplLmg+CiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgotCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhd2luZ0J1ZmZlckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYXdpbmdCdWZmZXJDaHJvbWl1bVRlc3QuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3ZWY0OTI4MWJkZjk0Mzg1ZDFmY2EzYjAwMDAwOTEzZjgyYTM2MzIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYXdpbmdCdWZm
ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKKworI2luY2x1ZGUg
IkNvbXBvc2l0b3JGYWtlR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJMYXllckNocm9t
aXVtLmgiCisjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K25hbWVzcGFjZSB7CisKK1RFU1QoRHJhd2luZ0J1ZmZlckNocm9taXVtVGVzdCwgb3BhcXVlRm9y
bWF0cykKK3sKKyAgICBSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gYnVmZmVyOworCisgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYWxwaGFBdHRyczsKKyAgICBhbHBoYUF0dHJzLmFscGhh
ID0gdHJ1ZTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBvcGFxdWVBdHRyczsK
KyAgICBvcGFxdWVBdHRycy5hbHBoYSA9IGZhbHNlOworCisgICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBhbHBoYUNvbnRleHQgPSBjcmVhdGVDb21wb3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4
dDNEKGFscGhhQXR0cnMpOworICAgIEVYUEVDVF9UUlVFKGFscGhhQ29udGV4dCk7CisgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBvcGFxdWVDb250ZXh0ID0gY3JlYXRlQ29tcG9zaXRvck1v
Y2tHcmFwaGljc0NvbnRleHQzRChvcGFxdWVBdHRycyk7CisgICAgRVhQRUNUX1RSVUUob3BhcXVl
Q29udGV4dCk7CisKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoYWxwaGFDb250
ZXh0LmdldCgpLCBJbnRTaXplKCksIERyYXdpbmdCdWZmZXI6OlByZXNlcnZlLCBEcmF3aW5nQnVm
ZmVyOjpBbHBoYSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5v
cGFxdWUoKSk7CisgICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4
dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpEaXNjYXJkLCBEcmF3aW5nQnVmZmVy
OjpBbHBoYSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFx
dWUoKSk7CisKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4
dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpQcmVzZXJ2ZSwgRHJhd2luZ0J1ZmZl
cjo6T3BhcXVlKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3Bh
cXVlKCkpOworICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShvcGFxdWVDb250ZXh0
LmdldCgpLCBJbnRTaXplKCksIERyYXdpbmdCdWZmZXI6OkRpc2NhcmQsIERyYXdpbmdCdWZmZXI6
Ok9wYXF1ZSk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1
ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkdMTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0YjNmZDAxZTU5NzU1M2IwYjY1MWRkMDRiZmRjYmQ5Y2UxYzY0MTU2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKLQotI2luY2x1ZGUgIkNvbXBvc2l0b3JG
YWtlR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCi0jaW5j
bHVkZSA8Z21vY2svZ21vY2suaD4KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLW5hbWVzcGFjZSB7
Ci0KLVRFU1QoV2ViR0xMYXllckNocm9taXVtVGVzdCwgb3BhcXVlRm9ybWF0cykKLXsKLSAgICBS
ZWZQdHI8RHJhd2luZ0J1ZmZlcj4gYnVmZmVyOwotCi0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYWxwaGFBdHRyczsKLSAgICBhbHBoYUF0dHJzLmFscGhhID0gdHJ1ZTsKLSAgICBH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBvcGFxdWVBdHRyczsKLSAgICBvcGFxdWVBdHRy
cy5hbHBoYSA9IGZhbHNlOwotCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBhbHBoYUNv
bnRleHQgPSBjcmVhdGVDb21wb3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4dDNEKGFscGhhQXR0cnMp
OwotICAgIEVYUEVDVF9UUlVFKGFscGhhQ29udGV4dCk7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBvcGFxdWVDb250ZXh0ID0gY3JlYXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0NvbnRl
eHQzRChvcGFxdWVBdHRycyk7Ci0gICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGV4dCk7Ci0KLSAg
ICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoYWxwaGFDb250ZXh0LmdldCgpLCBJbnRT
aXplKCksIERyYXdpbmdCdWZmZXI6OlByZXNlcnZlLCBEcmF3aW5nQnVmZmVyOjpBbHBoYSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7Ci0gICAg
YnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6
ZSgpLCBEcmF3aW5nQnVmZmVyOjpEaXNjYXJkLCBEcmF3aW5nQnVmZmVyOjpBbHBoYSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7Ci0KLSAgICBi
dWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4dC5nZXQoKSwgSW50U2l6
ZSgpLCBEcmF3aW5nQnVmZmVyOjpQcmVzZXJ2ZSwgRHJhd2luZ0J1ZmZlcjo6T3BhcXVlKTsKLSAg
ICBFWFBFQ1RfVFJVRShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwotICAgIGJ1
ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShvcGFxdWVDb250ZXh0LmdldCgpLCBJbnRTaXpl
KCksIERyYXdpbmdCdWZmZXI6OkRpc2NhcmQsIERyYXdpbmdCdWZmZXI6Ok9wYXF1ZSk7Ci0gICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
TGF5ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0
LmNwcAppbmRleCAyYjZjYmE1NjJjMjRlMzQyNjQ4NmRlNzAzOTc0YzBlYmQ5NmNlOGU3Li43YzA4
MzFmOTAzNTg3NDBiYjllMWRkMjQyYjA3ZmIzOGMyZjY0M2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCkBAIC0xNjQsMTMgKzE2NCwxMSBAQCBU
RVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNj
aGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwogICAgIHRleHR1cmVMYXllci5z
ZXRGbGlwcGVkKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X2NsaWVudCk7Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZUxheWVyLmZsaXBwZWQoKSk7CiAKICAg
ICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFz
dCgxKSk7CiAgICAgV2ViRmxvYXRSZWN0IHV2UmVjdCgwLjFmLCAwLjFmLCAwLjlmLCAwLjlmKTsK
ICAgICB0ZXh0dXJlTGF5ZXIuc2V0VVZSZWN0KHV2UmVjdCk7CiAgICAgTW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTGF5
ZXIuZmxpcHBlZCgpKTsKIAogCiAgICAgLy8gQ29udGVudCBsYXllci4K
</data>
<flag name="review"
          id="143840"
          type_id="1"
          status="+"
          setter="enne"
    />
    <flag name="commit-queue"
          id="143849"
          type_id="3"
          status="-"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>