<?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>83241</bug_id>
          
          <creation_ts>2012-04-04 18:27:59 -0700</creation_ts>
          <short_desc>[chromium] Draw missing layer tile checkerboards as checkerboards</short_desc>
          <delta_ts>2012-04-11 13:11:14 -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="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jamesr</cc>
    
    <cc>jbauman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>596192</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-04 18:27:59 -0700</bug_when>
    <thetext>[chromium] Draw missing layer tile checkerboards as checkerboards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596195</commentid>
    <comment_count>1</comment_count>
      <attachid>135739</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-04 18:32:07 -0700</bug_when>
    <thetext>Created attachment 135739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596197</commentid>
    <comment_count>2</comment_count>
      <attachid>135740</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-04 18:37:04 -0700</bug_when>
    <thetext>Created attachment 135740
Remove unneeded tile size</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596201</commentid>
    <comment_count>3</comment_count>
      <attachid>135740</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-04 18:40:35 -0700</bug_when>
    <thetext>Comment on attachment 135740
Remove unneeded tile size

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

This code was ported from Vangelis&apos;s patch here: https://bug-69585-attachments.webkit.org/attachment.cgi?id=110070.

The biggest difference is that I just specified the checkerboard width explicitly and used the tile rect position as an offset to make it line up with other tiles in a global sense.  The checkerboards won&apos;t perfectly line up with tile edges within a tile, but they&apos;re perfectly square, and I think it looks visually better.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:186
&gt; +#if OS(ANDROID)
&gt;                  usedCheckerboard |= quadList.append(CCSolidColorDrawQuad::create(sharedQuadState, tileRect, backgroundColor()));
&gt; +#else
&gt; +                usedCheckerboard |= quadList.append(CCCheckerboardDrawQuad::create(sharedQuadState, tileRect));
&gt; +#endif

I&apos;m not super happy with this.  I&apos;ll take suggestions if somebody sees a more elegant way to push this as a setting down to this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596234</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-04 19:31:13 -0700</bug_when>
    <thetext>Can we get some UX guidance about if this is the checkerboard we want?  I don&apos;t want to have to do a bunch of round-trips if it ends up someone dislikes it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596260</commentid>
    <comment_count>5</comment_count>
      <attachid>135740</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-04 20:33:15 -0700</bug_when>
    <thetext>Comment on attachment 135740
Remove unneeded tile size

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:186
&gt;&gt; +#endif
&gt; 
&gt; I&apos;m not super happy with this.  I&apos;ll take suggestions if somebody sees a more elegant way to push this as a setting down to this function.

I guess you could make a &quot;NotATextureDrawQuad&quot; (insert better name) and make it support modes such as checkerboard and solid color. Not sure that&apos;s more elegant or anything.

So this will also do the same for non-NCCH layers? What if the layer was originally transparent? I guess we really need to detect solid color tiles and not use textures for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596631</commentid>
    <comment_count>6</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-05 09:22:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 135740 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135740&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:186
&gt; &gt;&gt; +#endif
&gt; &gt; 
&gt; &gt; I&apos;m not super happy with this.  I&apos;ll take suggestions if somebody sees a more elegant way to push this as a setting down to this function.
&gt; 
&gt; I guess you could make a &quot;NotATextureDrawQuad&quot; (insert better name) and make it support modes such as checkerboard and solid color. Not sure that&apos;s more elegant or anything.

I&apos;m not sure I&apos;m sold on having two quad types that draw solid colors.  I guess I think of quad material as &quot;this is how this should be drawn&quot;, so solid colors should be drawn with solid color quads.

I could also just make all platforms use checkerboards for missing tiles and let the Android port sort out what they really want when they upstream.

&gt; So this will also do the same for non-NCCH layers? What if the layer was originally transparent? I guess we really need to detect solid color tiles and not use textures for them.

Transparency is still applied, so you get a semi-transparent checkerboard if the drawOpacity() of the layer was not 1.  If the drawOpacity() was 0, then the layer wouldn&apos;t draw at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596670</commentid>
    <comment_count>7</comment_count>
      <attachid>135740</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-04-05 10:18:01 -0700</bug_when>
    <thetext>Comment on attachment 135740
Remove unneeded tile size

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:186
&gt;&gt;&gt;&gt; +#endif
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m not super happy with this.  I&apos;ll take suggestions if somebody sees a more elegant way to push this as a setting down to this function.
&gt;&gt; 
&gt;&gt; I guess you could make a &quot;NotATextureDrawQuad&quot; (insert better name) and make it support modes such as checkerboard and solid color. Not sure that&apos;s more elegant or anything.
&gt;&gt; 
&gt;&gt; So this will also do the same for non-NCCH layers? What if the layer was originally transparent? I guess we really need to detect solid color tiles and not use textures for them.
&gt; 
&gt; I&apos;m not sure I&apos;m sold on having two quad types that draw solid colors.  I guess I think of quad material as &quot;this is how this should be drawn&quot;, so solid colors should be drawn with solid color quads.
&gt; 
&gt; I could also just make all platforms use checkerboards for missing tiles and let the Android port sort out what they really want when they upstream.

Could we make it a setting in CCSettings and have the CCTiledLayerImpl get the setting value via its layerRenderer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596920</commentid>
    <comment_count>8</comment_count>
      <attachid>135907</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-05 14:36:10 -0700</bug_when>
    <thetext>Created attachment 135907
Use CCSettings, use lighter colors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596921</commentid>
    <comment_count>9</comment_count>
      <attachid>135907</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-05 14:38:09 -0700</bug_when>
    <thetext>Comment on attachment 135907
Use CCSettings, use lighter colors

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:192
&gt; +                if (m_checkerboardMissingTiles)
&gt; +                    usedCheckerboard |= quadList.append(CCCheckerboardDrawQuad::create(sharedQuadState, tileRect));
&gt; +                else
&gt; +                    usedCheckerboard |= quadList.append(CCSolidColorDrawQuad::create(sharedQuadState, tileRect, backgroundColor()));

suddenly checkerboard is an overloaded term :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596923</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-05 14:39:56 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 135907 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135907&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:192
&gt; &gt; +                if (m_checkerboardMissingTiles)
&gt; &gt; +                    usedCheckerboard |= quadList.append(CCCheckerboardDrawQuad::create(sharedQuadState, tileRect));
&gt; &gt; +                else
&gt; &gt; +                    usedCheckerboard |= quadList.append(CCSolidColorDrawQuad::create(sharedQuadState, tileRect, backgroundColor()));
&gt; 
&gt; suddenly checkerboard is an overloaded term :(

I was going to do that in a follow-up patch, but I might as well just shave that yak now.

(In reply to comment #4)
&gt; Can we get some UX guidance about if this is the checkerboard we want?  I don&apos;t want to have to do a bunch of round-trips if it ends up someone dislikes it.

alcor and glen argued about this and decided they liked 16 pixel checkerboards and white / 0xf1f1f1 colors.  It&apos;s pretty trivial to change both of these things in code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596925</commentid>
    <comment_count>11</comment_count>
      <attachid>135907</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-05 14:44:00 -0700</bug_when>
    <thetext>Comment on attachment 135907
Use CCSettings, use lighter colors

I can&apos;t offhand remember how this relates to backgroundCoversViewport.  We&apos;re only generating new-style checkerboards on tiles on the root (backgroundCoversViewport) layer, right?  Is that because that&apos;s the only case where we have tiles with non-empty tileRects and no texture IDs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596937</commentid>
    <comment_count>12</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-05 15:00:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 135907 [details])
&gt; I can&apos;t offhand remember how this relates to backgroundCoversViewport.  We&apos;re only generating new-style checkerboards on tiles on the root (backgroundCoversViewport) layer, right?  Is that because that&apos;s the only case where we have tiles with non-empty tileRects and no texture IDs?

backgroundCoversViewport should really just use the background color.  That was originally intended for the use case where for example you&apos;re zooming a page that&apos;s too short to fill the entire viewport when its width is 100%.  In that case, it really should be the background color.  There&apos;s just no content at all, not missing content.

In all other cases, we are generating new-style checkerboards, whether we are on the root layer or on other layers.  So, if you have some super large non-animating non-root layer and you scroll down and there&apos;s content that&apos;s not painted yet, you will see new-style checkerboards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596947</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-05 15:04:34 -0700</bug_when>
    <thetext>Oh, so we could end up with new-style checkerboards on top of other layers or with odd transforms applied (instead of just skipping as we do now)?  That seems like it could be surprising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597002</commentid>
    <comment_count>14</comment_count>
      <attachid>135931</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-05 16:26:41 -0700</bug_when>
    <thetext>Created attachment 135931
Only checkerboard root, rename usedCheckerboard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598637</commentid>
    <comment_count>15</comment_count>
      <attachid>135931</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 14:48:27 -0700</bug_when>
    <thetext>Comment on attachment 135931
Only checkerboard root, rename usedCheckerboard

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

Looks great. R=me

&gt; Source/WebKit/chromium/tests/LayerChromiumTest.cpp:502
&gt; +    EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer-&gt;setDrawCheckerboardForMissingTiles(!testLayer-&gt;drawCheckerboardForMissingTiles()));

Changing this might change how the layer draws, so it probably _should_ trigger needsDisplay / needsCommit (although in practice this won&apos;t matter since it&apos;s effectively static state)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598652</commentid>
    <comment_count>16</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-09 15:01:39 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 135931 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135931&amp;action=review
&gt; 
&gt; Looks great. R=me
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/LayerChromiumTest.cpp:502
&gt; &gt; +    EXECUTE_AND_VERIFY_SET_NEEDS_COMMIT_BEHAVIOR(0, testLayer-&gt;setDrawCheckerboardForMissingTiles(!testLayer-&gt;drawCheckerboardForMissingTiles()));
&gt; 
&gt; Changing this might change how the layer draws, so it probably _should_ trigger needsDisplay / needsCommit (although in practice this won&apos;t matter since it&apos;s effectively static state)

No, you&apos;re right.  I&apos;ll change that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598664</commentid>
    <comment_count>17</comment_count>
      <attachid>136314</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-09 15:19:45 -0700</bug_when>
    <thetext>Created attachment 136314
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598930</commentid>
    <comment_count>18</comment_count>
      <attachid>136314</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 19:56:10 -0700</bug_when>
    <thetext>Comment on attachment 136314
Patch for landing

Rejecting attachment 136314 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
rce/WebKit/chromium/src/NonCompositedContentHost.cpp
patching file Source/WebKit/chromium/tests/CCQuadCullerTest.cpp
Hunk #1 succeeded at 86 (offset 4 lines).
patching file Source/WebKit/chromium/tests/CCSolidColorLayerImplTest.cpp
patching file Source/WebKit/chromium/tests/CCTiledLayerImplTest.cpp
patching file Source/WebKit/chromium/tests/LayerChromiumTest.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12371595</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600318</commentid>
    <comment_count>19</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-11 09:21:25 -0700</bug_when>
    <thetext>Committed r113871: &lt;http://trac.webkit.org/changeset/113871&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600512</commentid>
    <comment_count>20</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2012-04-11 12:55:21 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600513</commentid>
    <comment_count>21</comment_count>
      <attachid>136730</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2012-04-11 12:55:23 -0700</bug_when>
    <thetext>Created attachment 136730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600516</commentid>
    <comment_count>22</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2012-04-11 12:56:18 -0700</bug_when>
    <thetext>webkit-patch upload did something horrible.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135739</attachid>
            <date>2012-04-04 18:32:07 -0700</date>
            <delta_ts>2012-04-04 18:37:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83241-20120404183206.patch</filename>
            <type>text/plain</type>
            <size>19483</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJlMWM3ZmFlM2ZjNjdj
YWJkYWY4OGE3OTlhM2Y4YWQyOWQxZDQ5Yi4uNDQzNWNlMmJlMjYyY2I4ZGVlNjY5M2U4NDgwMDYy
ZWFiY2Y5YjFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA0LTA0ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBEcmF3
IG1pc3NpbmcgbGF5ZXIgdGlsZSBjaGVja2VyYm9hcmRzIGFzIGNoZWNrZXJib2FyZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIG5vbi1BbmRyb2lk
IHBsYXRmb3JtcywgZHJhdyBtaXNzaW5nIHRpbGUgY2hlY2tlcmJvYXJkcyBhcyBhY3R1YWwKKyAg
ICAgICAgY2hlY2tlcmJvYXJkcy4gVXNlIGEgc2hhZGVyIHRvIGRvIHRoaXMgc28gdGhhdCBubyB0
ZXh0dXJlIHVwbG9hZHMgYXJlCisgICAgICAgIG5lZWRlZC4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdD
aGVja2VyYm9hcmRRdWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjaGVja2VyYm9hcmRQcm9ncmFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
OgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNr
ZXJib2FyZDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJi
b2FyZDo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9h
cmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmFscGhh
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6
OnRleFRyYW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVy
Q2hlY2tlcmJvYXJkOjpmcmVxdWVuY3lMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdR
dWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NoZWNr
ZXJib2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OnRpbGVTaXplKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0RyYXdRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KwogMjAxMi0wNC0wNCAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtWOF0gQWRkIGEgcGVyIGNvbnRleHQgZGF0YSBzdG9yZSBhbmQgdXNlIHRoYXQgZm9yIGNh
Y2hpbmcgYm9pbGVyIHBsYXRlcyBhcyB3ZWxsIGFzIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDYyYWM2OGMyYzY2ZTUwZmI2MzA3N2YzZWU4NjIyZjE1ZDZkOTY2OWUu
LjZmYjExNGNlNTQ2NGJkOWNhZDQ4MTJjN2JmNTI3MWE5ZmMwNmYwODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTM1NjgsNiArMzU2OCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uQ3VydmUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3
UXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggM2QxN2I4ZWVkYjFiYmQx
YjUzNjM2ODZhM2Y5YTFlZjRkNmY0Zjk5My4uYTQwMWFkMzAzZDNkZWE4MzY3YWQwNTE3MjM1OWZk
ODAwZDEzNTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5j
bHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgogI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5o
IgorI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgpAQCAtNDY4LDYgKzQ2OSw5IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25z
dCBGbG9hdFJlY3QmIHN1CiAgICAgY2FzZSBDQ0RyYXdRdWFkOjpJbnZhbGlkOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDQ0RyYXdRdWFk
OjpDaGVja2VyYm9hcmQ6CisgICAgICAgIGRyYXdDaGVja2VyYm9hcmRRdWFkKHF1YWQtPnRvQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ0NEcmF3UXVh
ZDo6RGVidWdCb3JkZXI6CiAgICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQocXVhZC0+dG9EZWJ1
Z0JvcmRlckRyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKQEAgLTQ4OSw2ICs0OTMsMzQgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1
YWQsIGNvbnN0IEZsb2F0UmVjdCYgc3UKICAgICB9CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFk
KiBxdWFkKQoreworICAgIGNvbnN0IENoZWNrZXJib2FyZFByb2dyYW0qIHByb2dyYW0gPSBjaGVj
a2VyYm9hcmRQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlh
bGl6ZWQoKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dy
YW0tPnByb2dyYW0oKSkpOworCisgICAgSW50UmVjdCB0aWxlUmVjdCA9IHF1YWQtPnF1YWRSZWN0
KCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRU
cmFuc2Zvcm0oKTsKKyAgICB0aWxlVHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlUmVjdC54KCkgKyB0
aWxlUmVjdC53aWR0aCgpIC8gMi4wLCB0aWxlUmVjdC55KCkgKyB0aWxlUmVjdC5oZWlnaHQoKSAv
IDIuMCk7CisKKyAgICBmbG9hdCB0ZXhPZmZzZXRYID0gdGlsZVJlY3QueCgpOworICAgIGZsb2F0
IHRleE9mZnNldFkgPSB0aWxlUmVjdC55KCk7CisgICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJl
Y3Qud2lkdGgoKTsKKyAgICBmbG9hdCB0ZXhTY2FsZVkgPSB0aWxlUmVjdC5oZWlnaHQoKTsKKyAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm00Zihwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksIHRleE9mZnNldFgsIHRleE9mZnNldFksIHRl
eFNjYWxlWCwgdGV4U2NhbGVZKSk7CisKKyAgICBjb25zdCBpbnQgY2hlY2tlcmJvYXJkV2lkdGgg
PSAzMjsKKyAgICBmbG9hdCBmcmVxdWVuY3kgPSAxLjAgLyBjaGVja2VyYm9hcmRXaWR0aDsKKwor
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuZnJlcXVlbmN5TG9jYXRpb24oKSwgZnJlcXVlbmN5KSk7CisKKyAgICBmbG9hdCBv
cGFjaXR5ID0gcXVhZC0+b3BhY2l0eSgpOworICAgIGRyYXdUZXh0dXJlZFF1YWQodGlsZVRyYW5z
Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0Lmhl
aWdodCgpLCBvcGFjaXR5LCBGbG9hdFF1YWQoKSwKKyAgICAgICAgICAgICAgICAgICAgIHByb2dy
YW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAg
ICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwgLTEpOworfQorCiB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQqIHF1YWQpCiB7CiAgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2
XTsKQEAgLTEzMDAsNiArMTMzMiwxNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5p
dGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OkNoZWNrZXJib2FyZFByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y2hlY2tlcmJvYXJkUHJvZ3JhbSgpCit7CisgICAgaWYgKCFtX2NoZWNrZXJib2FyZFBy
b2dyYW0pCisgICAgICAgIG1fY2hlY2tlcmJvYXJkUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDaGVj
a2VyYm9hcmRQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV9jaGVja2VyYm9h
cmRQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNoZWNrZXJib2FyZFByb2dyYW06OmluaXRhbGl6ZSIsIHRoaXMsIDAp
OworICAgICAgICBtX2NoZWNrZXJib2FyZFByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fY2hlY2tlcmJvYXJkUHJvZ3JhbS5nZXQoKTsKK30K
KwogY29uc3QgTGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpib3JkZXJQcm9ncmFtKCkKIHsKICAgICBpZiAoIW1fYm9yZGVyUHJvZ3JhbSkKQEAgLTE1
MzQsNiArMTU3Nyw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cygpCiAKICAgICBtX3NoYXJlZEdlb21ldHJ5LmNsZWFyKCk7CiAKKyAgICBpZiAobV9j
aGVja2VyYm9hcmRQcm9ncmFtKQorICAgICAgICBtX2NoZWNrZXJib2FyZFByb2dyYW0tPmNsZWFu
dXAobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9ib3JkZXJQcm9ncmFtKQogICAgICAgICBt
X2JvcmRlclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9oZWFk
c1VwRGlzcGxheVByb2dyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4
IGQ2YWM2ODIyOTA2OTEyN2UzYjEyMGU5MzQ0OWNiYTk1ZTE5NzU2OTEuLjdjYjllYjU2YTIzNTNi
YTgwZDcyMDAxMThiMjk2YTkyZGI4MGRkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCkBAIC0xMTUsNiArMTE1LDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdlb21ldHJ5
QmluZGluZyogc2hhcmVkR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5
LmdldCgpOyB9CiAgICAgY29uc3QgRmxvYXRRdWFkJiBzaGFyZWRHZW9tZXRyeVF1YWQoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVhZDsgfQorCisgICAgdHlwZWRlZiBQcm9ncmFt
QmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkPiBD
aGVja2VyYm9hcmRQcm9ncmFtOworCisgICAgY29uc3QgQ2hlY2tlcmJvYXJkUHJvZ3JhbSogY2hl
Y2tlcmJvYXJkUHJvZ3JhbSgpOwogICAgIGNvbnN0IExheWVyQ2hyb21pdW06OkJvcmRlclByb2dy
YW0qIGJvcmRlclByb2dyYW0oKTsKICAgICBjb25zdCBDQ0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFt
KiBoZWFkc1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlBy
b2dyYW0qIHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CkBAIC0xNzIsNiArMTc2LDcgQEAgcHJvdGVj
dGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCosIGNv
bnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOworICAgIHZvaWQgZHJhd0NoZWNrZXJi
b2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd0Rl
YnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqKTsKICAgICB2b2lkIGRy
YXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCopOwogICAg
IHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKik7CkBA
IC0yMjQsNiArMjI5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBtdWx0aXBsZSBpbnN0YW5jZXMgb2Yg
dGhlIGNvbXBvc2l0b3IgcnVubmluZyBpbiB0aGUgc2FtZSByZW5kZXJlciBwcm9jZXNzCiAgICAg
Ly8gd2UgY2Fubm90IHN0b3JlIHRoZXNlIHZhbHVlcyBpbiBzdGF0aWMgdmFyaWFibGVzLgogICAg
IE93blB0cjxHZW9tZXRyeUJpbmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CisgICAgT3duUHRyPENo
ZWNrZXJib2FyZFByb2dyYW0+IG1fY2hlY2tlcmJvYXJkUHJvZ3JhbTsKICAgICBPd25QdHI8TGF5
ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbT4gbV9ib3JkZXJQcm9ncmFtOwogICAgIE93blB0cjxD
Q0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFtPiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbTsKICAgICBP
d25QdHI8Q0NUZXh0dXJlTGF5ZXJJbXBsOjpQcm9ncmFtRmxpcD4gbV90ZXh0dXJlTGF5ZXJQcm9n
cmFtRmxpcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAppbmRleCBkOTk1ZWRhZGJkNDRiNTRlNjMx
NGEyM2U3Njk0MDRkMjQ5ZTc1MmViLi45Y2JlNGIzYWZiNzBkNTg4YjVlYTg2MDNiMGQ1Mjk3OTE1
OTEyZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC03MjUsNiArNzI1LDQ0IEBAIFN0
cmluZyBGcmFnbWVudFNoYWRlckNvbG9yOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7
CiB9CiAKK0ZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjpGcmFnbWVudFNoYWRlckNoZWNrZXJi
b2FyZCgpCisgICAgOiBtX2FscGhhTG9jYXRpb24oLTEpCisgICAgLCBtX3RleFRyYW5zZm9ybUxv
Y2F0aW9uKC0xKQorICAgICwgbV9mcmVxdWVuY3lMb2NhdGlvbigtMSkKK3sKK30KKwordm9pZCBG
cmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CisgICAgbV90ZXhUcmFuc2Zvcm1M
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNm
b3JtIik7CisgICAgbV9mcmVxdWVuY3lMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCAiZnJlcXVlbmN5Iik7CisgICAgQVNTRVJUKG1fYWxwaGFMb2NhdGlvbiAh
PSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZnJlcXVlbmN5TG9jYXRp
b24gIT0gLTEpOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmdldFNo
YWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgLy8gU2hhZGVyIGJhc2VkIG9uIEV4YW1wbGUgMTMt
MTcgb2YgIk9wZW5HTCBFUyAyLjAgUHJvZ3JhbW1pbmcgR3VpZGUiCisgICAgLy8gYnkgTXVuc2hp
LCBHaW5zYnVyZywgU2hyZWluZXIuCisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGludDsKKyAgICAg
ICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7
CisgICAgICAgIHVuaWZvcm0gZmxvYXQgZnJlcXVlbmN5OworICAgICAgICB1bmlmb3JtIHZlYzQg
dGV4VHJhbnNmb3JtOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAg
ICB2ZWM0IGNvbG9yMSA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgICAgIHZl
YzQgY29sb3IyID0gdmVjNCgwLjUsIDAuNSwgMC41LCAxLjApOworICAgICAgICAgICAgdmVjMiB0
ZXhDb29yZCA9IGNsYW1wKHZfdGV4Q29vcmQsIDAuMCwgMS4wKSAqIHRleFRyYW5zZm9ybS56dyAr
IHRleFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZlYzIgY29vcmQgPSBtb2QoZmxvb3IodGV4
Q29vcmQgKiBmcmVxdWVuY3kgKiAyLjApLCAyLjApOworICAgICAgICAgICAgZmxvYXQgcGlja2Vy
ID0gYWJzKGNvb3JkLnggLSBjb29yZC55KTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IG1p
eChjb2xvcjEsIGNvbG9yMiwgcGlja2VyKSAqIGFscGhhOworICAgICAgICB9CisgICAgKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggMGU0MTk2ODgwMmNjOGNlZDMyNmVj
YjY2ZGY0YTlhYmIyN2JiOWRhMS4uYjI4MzdlOTFlYWMxYTg5NTUzOTRiZGIxODFmMTQ5ZDI2ZjNh
NzBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0zNTksNiArMzU5LDIxIEBAIHByaXZhdGU6
CiAgICAgaW50IG1fY29sb3JMb2NhdGlvbjsKIH07CiAKK2NsYXNzIEZyYWdtZW50U2hhZGVyQ2hl
Y2tlcmJvYXJkIHsKK3B1YmxpYzoKKyAgICBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCgpOwor
ICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKKworICAgIHZvaWQgaW5pdChHcmFw
aGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGludCBhbHBoYUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CisgICAgaW50IHRleFRyYW5zZm9y
bUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQorICAg
IGludCBmcmVxdWVuY3lMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJlcXVlbmN5TG9jYXRp
b247IH0KK3ByaXZhdGU6CisgICAgaW50IG1fYWxwaGFMb2NhdGlvbjsKKyAgICBpbnQgbV90ZXhU
cmFuc2Zvcm1Mb2NhdGlvbjsKKyAgICBpbnQgbV9mcmVxdWVuY3lMb2NhdGlvbjsKK307CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDRiMzZmYmYzNTJjYjdmOTQ5NjYzZDk5Mzg3OTQ3N2Y1ODY1NGM2YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxDQ0NoZWNrZXJib2FyZERyYXdRdWFk
PiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDaGVja2VyYm9hcmREcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0aWxlU2l6ZSkpOworfQorCitDQ0NoZWNr
ZXJib2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSkKKyAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0Ry
YXdRdWFkOjpDaGVja2VyYm9hcmQsIHF1YWRSZWN0KQorICAgICwgbV90aWxlU2l6ZSh0aWxlU2l6
ZSkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFmYmY1YmJkODgzYjJhYzA0MTI0NGJkNmM3YzBlY2U4NmQzMmVmN2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQ0NDaGVja2VyYm9hcmREcmF3UXVhZF9oCisjZGVmaW5lIENDQ2hlY2tlcmJvYXJkRHJhd1F1
YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NDaGVja2VyYm9hcmREcmF3
UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0No
ZWNrZXJib2FyZERyYXdRdWFkKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0No
ZWNrZXJib2FyZERyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUpOworCisgICAgY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3RpbGVTaXplOyB9CisKK3ByaXZhdGU6Cisg
ICAgQ0NDaGVja2VyYm9hcmREcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRTaXplJik7CisgICAgSW50U2l6ZSBtX3RpbGVTaXplOworfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKaW5kZXggNmE1NTMwMDI2OTRiMmJk
MzZlNWNlZTZiNmI4N2Y5NGUzZjFmMjg4Yy4uYmM0ODlkZTQwNWM1ZGU1ZjBlMzY1YTE2ZWU5NGNi
NTY2OTdlMDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKIAorI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJk
RHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgi
CkBAIC02NCw2ICs2NSwxMiBAQCB2b2lkIENDRHJhd1F1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChj
b25zdCBJbnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QpCiAgICAgbV9xdWFkVmlzaWJsZVJlY3QuaW50
ZXJzZWN0KG1fcXVhZFJlY3QpOwogfQogCitjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBD
Q0RyYXdRdWFkOjp0b0NoZWNrZXJib2FyZERyYXdRdWFkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9tYXRlcmlhbCA9PSBDaGVja2VyYm9hcmQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKj4odGhpcyk7Cit9CisKIGNvbnN0IENDRGVidWdCb3Jk
ZXJEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgK
aW5kZXggZTZmMjA4NTY4Y2M0ODJlOGI3MDZkZDZhMTU4NjA2NGIxNzY5YWI5Ny4uMDU3NWI5NTA0
NzBjOWRkNTBkMjE4MGVjZjRkZDliZjU5MTY3ZjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaApAQCAt
MzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENDQ2hlY2tlcmJv
YXJkRHJhd1F1YWQ7CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBjbGFzcyBDQ1JlbmRl
clN1cmZhY2VEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwpAQCAtNjIsNiAr
NjMsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIE1hdGVyaWFsIHsKICAgICAgICAgSW52YWxpZCwK
KyAgICAgICAgQ2hlY2tlcmJvYXJkLAogICAgICAgICBEZWJ1Z0JvcmRlciwKICAgICAgICAgUmVu
ZGVyU3VyZmFjZSwKICAgICAgICAgVGV4dHVyZUNvbnRlbnQsCkBAIC03Miw2ICs3NCw3IEBAIHB1
YmxpYzoKIAogICAgIE1hdGVyaWFsIG1hdGVyaWFsKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlh
bDsgfQogCisgICAgY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogdG9DaGVja2VyYm9hcmRE
cmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogdG9EZWJ1
Z0JvcmRlckRyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQqIHRvUmVuZGVyU3VyZmFjZURyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NTb2xpZENv
bG9yRHJhd1F1YWQqIHRvU29saWRDb2xvckRyYXdRdWFkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuY3BwCmluZGV4IDEwNTExNjViMTdmMzNlYjM1NGZmMTZmNGQzMDUxNGJl
YTVmOWM5NTcuLmM5MjdjYzhiOGJkYmQ4ZDk4YmQ0NGRmM2ZiYTEyNjk3N2JhZTg5ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5o
IgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCkBAIC0xNzgsNyArMTc5LDEx
IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFk
TGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+dGV4dHVyZUlkKCkpIHsKKyNpZiBPUyhB
TkRST0lEKQogICAgICAgICAgICAgICAgIHVzZWRDaGVja2VyYm9hcmQgfD0gcXVhZExpc3QuYXBw
ZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVj
dCwgYmFja2dyb3VuZENvbG9yKCkpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgdXNlZENoZWNr
ZXJib2FyZCB8PSBxdWFkTGlzdC5hcHBlbmQoQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRl
KHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCkpKTsKKyNlbmRp
ZgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135740</attachid>
            <date>2012-04-04 18:37:04 -0700</date>
            <delta_ts>2012-04-05 14:36:07 -0700</delta_ts>
            <desc>Remove unneeded tile size</desc>
            <filename>bug-83241-20120404183703.patch</filename>
            <type>text/plain</type>
            <size>19246</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJlMWM3ZmFlM2ZjNjdj
YWJkYWY4OGE3OTlhM2Y4YWQyOWQxZDQ5Yi4uNDQzNWNlMmJlMjYyY2I4ZGVlNjY5M2U4NDgwMDYy
ZWFiY2Y5YjFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA0LTA0ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBEcmF3
IG1pc3NpbmcgbGF5ZXIgdGlsZSBjaGVja2VyYm9hcmRzIGFzIGNoZWNrZXJib2FyZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIG5vbi1BbmRyb2lk
IHBsYXRmb3JtcywgZHJhdyBtaXNzaW5nIHRpbGUgY2hlY2tlcmJvYXJkcyBhcyBhY3R1YWwKKyAg
ICAgICAgY2hlY2tlcmJvYXJkcy4gVXNlIGEgc2hhZGVyIHRvIGRvIHRoaXMgc28gdGhhdCBubyB0
ZXh0dXJlIHVwbG9hZHMgYXJlCisgICAgICAgIG5lZWRlZC4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdD
aGVja2VyYm9hcmRRdWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjaGVja2VyYm9hcmRQcm9ncmFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
OgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNr
ZXJib2FyZDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJi
b2FyZDo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9h
cmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmFscGhh
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6
OnRleFRyYW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVy
Q2hlY2tlcmJvYXJkOjpmcmVxdWVuY3lMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdR
dWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NoZWNr
ZXJib2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OnRpbGVTaXplKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0RyYXdRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KwogMjAxMi0wNC0wNCAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtWOF0gQWRkIGEgcGVyIGNvbnRleHQgZGF0YSBzdG9yZSBhbmQgdXNlIHRoYXQgZm9yIGNh
Y2hpbmcgYm9pbGVyIHBsYXRlcyBhcyB3ZWxsIGFzIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDYyYWM2OGMyYzY2ZTUwZmI2MzA3N2YzZWU4NjIyZjE1ZDZkOTY2OWUu
LjZmYjExNGNlNTQ2NGJkOWNhZDQ4MTJjN2JmNTI3MWE5ZmMwNmYwODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTM1NjgsNiArMzU2OCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uQ3VydmUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3
UXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggM2QxN2I4ZWVkYjFiYmQx
YjUzNjM2ODZhM2Y5YTFlZjRkNmY0Zjk5My4uYTQwMWFkMzAzZDNkZWE4MzY3YWQwNTE3MjM1OWZk
ODAwZDEzNTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5j
bHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgogI2luY2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5o
IgorI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgpAQCAtNDY4LDYgKzQ2OSw5IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25z
dCBGbG9hdFJlY3QmIHN1CiAgICAgY2FzZSBDQ0RyYXdRdWFkOjpJbnZhbGlkOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDQ0RyYXdRdWFk
OjpDaGVja2VyYm9hcmQ6CisgICAgICAgIGRyYXdDaGVja2VyYm9hcmRRdWFkKHF1YWQtPnRvQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ0NEcmF3UXVh
ZDo6RGVidWdCb3JkZXI6CiAgICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQocXVhZC0+dG9EZWJ1
Z0JvcmRlckRyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKQEAgLTQ4OSw2ICs0OTMsMzQgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1
YWQsIGNvbnN0IEZsb2F0UmVjdCYgc3UKICAgICB9CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFk
KiBxdWFkKQoreworICAgIGNvbnN0IENoZWNrZXJib2FyZFByb2dyYW0qIHByb2dyYW0gPSBjaGVj
a2VyYm9hcmRQcm9ncmFtKCk7CisgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlh
bGl6ZWQoKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dy
YW0tPnByb2dyYW0oKSkpOworCisgICAgSW50UmVjdCB0aWxlUmVjdCA9IHF1YWQtPnF1YWRSZWN0
KCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRU
cmFuc2Zvcm0oKTsKKyAgICB0aWxlVHJhbnNmb3JtLnRyYW5zbGF0ZSh0aWxlUmVjdC54KCkgKyB0
aWxlUmVjdC53aWR0aCgpIC8gMi4wLCB0aWxlUmVjdC55KCkgKyB0aWxlUmVjdC5oZWlnaHQoKSAv
IDIuMCk7CisKKyAgICBmbG9hdCB0ZXhPZmZzZXRYID0gdGlsZVJlY3QueCgpOworICAgIGZsb2F0
IHRleE9mZnNldFkgPSB0aWxlUmVjdC55KCk7CisgICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJl
Y3Qud2lkdGgoKTsKKyAgICBmbG9hdCB0ZXhTY2FsZVkgPSB0aWxlUmVjdC5oZWlnaHQoKTsKKyAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm00Zihwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksIHRleE9mZnNldFgsIHRleE9mZnNldFksIHRl
eFNjYWxlWCwgdGV4U2NhbGVZKSk7CisKKyAgICBjb25zdCBpbnQgY2hlY2tlcmJvYXJkV2lkdGgg
PSAzMjsKKyAgICBmbG9hdCBmcmVxdWVuY3kgPSAxLjAgLyBjaGVja2VyYm9hcmRXaWR0aDsKKwor
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuZnJlcXVlbmN5TG9jYXRpb24oKSwgZnJlcXVlbmN5KSk7CisKKyAgICBmbG9hdCBv
cGFjaXR5ID0gcXVhZC0+b3BhY2l0eSgpOworICAgIGRyYXdUZXh0dXJlZFF1YWQodGlsZVRyYW5z
Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0Lmhl
aWdodCgpLCBvcGFjaXR5LCBGbG9hdFF1YWQoKSwKKyAgICAgICAgICAgICAgICAgICAgIHByb2dy
YW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAg
ICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwgLTEpOworfQorCiB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQqIHF1YWQpCiB7CiAgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2
XTsKQEAgLTEzMDAsNiArMTMzMiwxNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5p
dGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OkNoZWNrZXJib2FyZFByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y2hlY2tlcmJvYXJkUHJvZ3JhbSgpCit7CisgICAgaWYgKCFtX2NoZWNrZXJib2FyZFBy
b2dyYW0pCisgICAgICAgIG1fY2hlY2tlcmJvYXJkUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDaGVj
a2VyYm9hcmRQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV9jaGVja2VyYm9h
cmRQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNoZWNrZXJib2FyZFByb2dyYW06OmluaXRhbGl6ZSIsIHRoaXMsIDAp
OworICAgICAgICBtX2NoZWNrZXJib2FyZFByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fY2hlY2tlcmJvYXJkUHJvZ3JhbS5nZXQoKTsKK30K
KwogY29uc3QgTGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpib3JkZXJQcm9ncmFtKCkKIHsKICAgICBpZiAoIW1fYm9yZGVyUHJvZ3JhbSkKQEAgLTE1
MzQsNiArMTU3Nyw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cygpCiAKICAgICBtX3NoYXJlZEdlb21ldHJ5LmNsZWFyKCk7CiAKKyAgICBpZiAobV9j
aGVja2VyYm9hcmRQcm9ncmFtKQorICAgICAgICBtX2NoZWNrZXJib2FyZFByb2dyYW0tPmNsZWFu
dXAobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9ib3JkZXJQcm9ncmFtKQogICAgICAgICBt
X2JvcmRlclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9oZWFk
c1VwRGlzcGxheVByb2dyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4
IGQ2YWM2ODIyOTA2OTEyN2UzYjEyMGU5MzQ0OWNiYTk1ZTE5NzU2OTEuLjdjYjllYjU2YTIzNTNi
YTgwZDcyMDAxMThiMjk2YTkyZGI4MGRkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCkBAIC0xMTUsNiArMTE1LDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdlb21ldHJ5
QmluZGluZyogc2hhcmVkR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5
LmdldCgpOyB9CiAgICAgY29uc3QgRmxvYXRRdWFkJiBzaGFyZWRHZW9tZXRyeVF1YWQoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVhZDsgfQorCisgICAgdHlwZWRlZiBQcm9ncmFt
QmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkPiBD
aGVja2VyYm9hcmRQcm9ncmFtOworCisgICAgY29uc3QgQ2hlY2tlcmJvYXJkUHJvZ3JhbSogY2hl
Y2tlcmJvYXJkUHJvZ3JhbSgpOwogICAgIGNvbnN0IExheWVyQ2hyb21pdW06OkJvcmRlclByb2dy
YW0qIGJvcmRlclByb2dyYW0oKTsKICAgICBjb25zdCBDQ0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFt
KiBoZWFkc1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlBy
b2dyYW0qIHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CkBAIC0xNzIsNiArMTc2LDcgQEAgcHJvdGVj
dGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCosIGNv
bnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOworICAgIHZvaWQgZHJhd0NoZWNrZXJi
b2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd0Rl
YnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqKTsKICAgICB2b2lkIGRy
YXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCopOwogICAg
IHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKik7CkBA
IC0yMjQsNiArMjI5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBtdWx0aXBsZSBpbnN0YW5jZXMgb2Yg
dGhlIGNvbXBvc2l0b3IgcnVubmluZyBpbiB0aGUgc2FtZSByZW5kZXJlciBwcm9jZXNzCiAgICAg
Ly8gd2UgY2Fubm90IHN0b3JlIHRoZXNlIHZhbHVlcyBpbiBzdGF0aWMgdmFyaWFibGVzLgogICAg
IE93blB0cjxHZW9tZXRyeUJpbmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CisgICAgT3duUHRyPENo
ZWNrZXJib2FyZFByb2dyYW0+IG1fY2hlY2tlcmJvYXJkUHJvZ3JhbTsKICAgICBPd25QdHI8TGF5
ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbT4gbV9ib3JkZXJQcm9ncmFtOwogICAgIE93blB0cjxD
Q0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFtPiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbTsKICAgICBP
d25QdHI8Q0NUZXh0dXJlTGF5ZXJJbXBsOjpQcm9ncmFtRmxpcD4gbV90ZXh0dXJlTGF5ZXJQcm9n
cmFtRmxpcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAppbmRleCBkOTk1ZWRhZGJkNDRiNTRlNjMx
NGEyM2U3Njk0MDRkMjQ5ZTc1MmViLi45Y2JlNGIzYWZiNzBkNTg4YjVlYTg2MDNiMGQ1Mjk3OTE1
OTEyZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC03MjUsNiArNzI1LDQ0IEBAIFN0
cmluZyBGcmFnbWVudFNoYWRlckNvbG9yOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7
CiB9CiAKK0ZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjpGcmFnbWVudFNoYWRlckNoZWNrZXJi
b2FyZCgpCisgICAgOiBtX2FscGhhTG9jYXRpb24oLTEpCisgICAgLCBtX3RleFRyYW5zZm9ybUxv
Y2F0aW9uKC0xKQorICAgICwgbV9mcmVxdWVuY3lMb2NhdGlvbigtMSkKK3sKK30KKwordm9pZCBG
cmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBtX2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFscGhhIik7CisgICAgbV90ZXhUcmFuc2Zvcm1M
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNm
b3JtIik7CisgICAgbV9mcmVxdWVuY3lMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCAiZnJlcXVlbmN5Iik7CisgICAgQVNTRVJUKG1fYWxwaGFMb2NhdGlvbiAh
PSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZnJlcXVlbmN5TG9jYXRp
b24gIT0gLTEpOworfQorCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmdldFNo
YWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgLy8gU2hhZGVyIGJhc2VkIG9uIEV4YW1wbGUgMTMt
MTcgb2YgIk9wZW5HTCBFUyAyLjAgUHJvZ3JhbW1pbmcgR3VpZGUiCisgICAgLy8gYnkgTXVuc2hp
LCBHaW5zYnVyZywgU2hyZWluZXIuCisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGludDsKKyAgICAg
ICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7
CisgICAgICAgIHVuaWZvcm0gZmxvYXQgZnJlcXVlbmN5OworICAgICAgICB1bmlmb3JtIHZlYzQg
dGV4VHJhbnNmb3JtOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAg
ICB2ZWM0IGNvbG9yMSA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICAgICAgICAgIHZl
YzQgY29sb3IyID0gdmVjNCgwLjUsIDAuNSwgMC41LCAxLjApOworICAgICAgICAgICAgdmVjMiB0
ZXhDb29yZCA9IGNsYW1wKHZfdGV4Q29vcmQsIDAuMCwgMS4wKSAqIHRleFRyYW5zZm9ybS56dyAr
IHRleFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZlYzIgY29vcmQgPSBtb2QoZmxvb3IodGV4
Q29vcmQgKiBmcmVxdWVuY3kgKiAyLjApLCAyLjApOworICAgICAgICAgICAgZmxvYXQgcGlja2Vy
ID0gYWJzKGNvb3JkLnggLSBjb29yZC55KTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IG1p
eChjb2xvcjEsIGNvbG9yMiwgcGlja2VyKSAqIGFscGhhOworICAgICAgICB9CisgICAgKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggMGU0MTk2ODgwMmNjOGNlZDMyNmVj
YjY2ZGY0YTlhYmIyN2JiOWRhMS4uYjI4MzdlOTFlYWMxYTg5NTUzOTRiZGIxODFmMTQ5ZDI2ZjNh
NzBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0zNTksNiArMzU5LDIxIEBAIHByaXZhdGU6
CiAgICAgaW50IG1fY29sb3JMb2NhdGlvbjsKIH07CiAKK2NsYXNzIEZyYWdtZW50U2hhZGVyQ2hl
Y2tlcmJvYXJkIHsKK3B1YmxpYzoKKyAgICBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCgpOwor
ICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKKworICAgIHZvaWQgaW5pdChHcmFw
aGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGludCBhbHBoYUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYUxvY2F0aW9uOyB9CisgICAgaW50IHRleFRyYW5zZm9y
bUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQorICAg
IGludCBmcmVxdWVuY3lMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJlcXVlbmN5TG9jYXRp
b247IH0KK3ByaXZhdGU6CisgICAgaW50IG1fYWxwaGFMb2NhdGlvbjsKKyAgICBpbnQgbV90ZXhU
cmFuc2Zvcm1Mb2NhdGlvbjsKKyAgICBpbnQgbV9mcmVxdWVuY3lMb2NhdGlvbjsKK307CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWFlMDMzNTE0YTY4NDZhYjlmNGNiMWZjYjFiOTYxNThmZjJkMDIzZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxDQ0NoZWNrZXJib2FyZERyYXdRdWFk
PiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QpCit7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVh
ZFJlY3QpKTsKK30KKworQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Q0NDaGVja2VyYm9hcmREcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCkKKyAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdR
dWFkOjpDaGVja2VyYm9hcmQsIHF1YWRSZWN0KQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERy
YXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0NoZWNrZXJib2FyZERyYXdRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdmOGM1NmJkNDljNDVlMzA1NWEz
ZmE3Y2I2ZTdhNzI1ZTVmNDNmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaApAQCAt
MCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkX2gKKyNk
ZWZpbmUgQ0NDaGVja2VyYm9hcmREcmF3UXVhZF9oCisKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFk
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDQ0NoZWNrZXJib2FyZERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IGNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmKTsKKworcHJpdmF0ZToKKyAgICBD
Q0NoZWNrZXJib2FyZERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50
UmVjdCYpOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKaW5kZXggNmE1
NTMwMDI2OTRiMmJkMzZlNWNlZTZiNmI4N2Y5NGUzZjFmMjg4Yy4uYmM0ODlkZTQwNWM1ZGU1ZjBl
MzY1YTE2ZWU5NGNiNTY2OTdlMDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKIAorI2luY2x1ZGUgImNjL0ND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1
YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVy
ZURyYXdRdWFkLmgiCkBAIC02NCw2ICs2NSwxMiBAQCB2b2lkIENDRHJhd1F1YWQ6OnNldFF1YWRW
aXNpYmxlUmVjdChjb25zdCBJbnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QpCiAgICAgbV9xdWFkVmlz
aWJsZVJlY3QuaW50ZXJzZWN0KG1fcXVhZFJlY3QpOwogfQogCitjb25zdCBDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0NoZWNrZXJib2FyZERyYXdRdWFkKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBDaGVja2VyYm9hcmQpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKj4odGhpcyk7Cit9CisKIGNvbnN0
IENDRGVidWdCb3JkZXJEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9EZWJ1Z0JvcmRlckRyYXdRdWFk
KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RyYXdRdWFkLmgKaW5kZXggZTZmMjA4NTY4Y2M0ODJlOGI3MDZkZDZhMTU4NjA2NGIxNzY5YWI5
Ny4uMDU3NWI5NTA0NzBjOWRkNTBkMjE4MGVjZjRkZDliZjU5MTY3ZjE5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBj
bGFzcyBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFk
OwpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIE1hdGVyaWFsIHsKICAgICAg
ICAgSW52YWxpZCwKKyAgICAgICAgQ2hlY2tlcmJvYXJkLAogICAgICAgICBEZWJ1Z0JvcmRlciwK
ICAgICAgICAgUmVuZGVyU3VyZmFjZSwKICAgICAgICAgVGV4dHVyZUNvbnRlbnQsCkBAIC03Miw2
ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIE1hdGVyaWFsIG1hdGVyaWFsKCkgY29uc3QgeyByZXR1
cm4gbV9tYXRlcmlhbDsgfQogCisgICAgY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogdG9D
aGVja2VyYm9hcmREcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3
UXVhZCogdG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqIHRvUmVuZGVyU3VyZmFjZURyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29u
c3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqIHRvU29saWRDb2xvckRyYXdRdWFkKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDEwNTExNjViMTdmMzNlYjM1NGZm
MTZmNGQzMDUxNGJlYTVmOWM5NTcuLmZmNjRmMjE4MGY5NDA4ZjhhMjdlNGI2ZTYwNzBmYzkzMTll
MDY2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCiAjaW5jbHVkZSAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5o
IgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0ND
UXVhZEN1bGxlci5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCkBAIC0x
NzgsNyArMTc5LDExIEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+dGV4dHVyZUlkKCkp
IHsKKyNpZiBPUyhBTkRST0lEKQogICAgICAgICAgICAgICAgIHVzZWRDaGVja2VyYm9hcmQgfD0g
cXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCB0aWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKKyNlbHNlCisgICAgICAgICAgICAg
ICAgdXNlZENoZWNrZXJib2FyZCB8PSBxdWFkTGlzdC5hcHBlbmQoQ0NDaGVja2VyYm9hcmREcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QpKTsKKyNlbmRpZgogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135907</attachid>
            <date>2012-04-05 14:36:10 -0700</date>
            <delta_ts>2012-04-05 16:26:38 -0700</delta_ts>
            <desc>Use CCSettings, use lighter colors</desc>
            <filename>bug-83241-20120405143609.patch</filename>
            <type>text/plain</type>
            <size>22149</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViYjE1OGRjZTFlNWVl
ZjEwOWVkOTkzOGNiMDQ3OWUxYzAyOGUyMC4uNzdlNmRlZjRhMjU5MTk3YjdjYzVmY2QxN2M1NDBj
OGMzOWZjMGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA0LTA1ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBEcmF3
IG1pc3NpbmcgbGF5ZXIgdGlsZSBjaGVja2VyYm9hcmRzIGFzIGNoZWNrZXJib2FyZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIG5vbi1BbmRyb2lk
IHBsYXRmb3JtcywgZHJhdyBtaXNzaW5nIHRpbGUgY2hlY2tlcmJvYXJkcyBhcyBhY3R1YWwKKyAg
ICAgICAgY2hlY2tlcmJvYXJkcy4gVXNlIGEgc2hhZGVyIHRvIGRvIHRoaXMgc28gdGhhdCBubyB0
ZXh0dXJlIHVwbG9hZHMgYXJlCisgICAgICAgIG5lZWRlZC4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdD
aGVja2VyYm9hcmRRdWFkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjaGVja2VyYm9hcmRQcm9ncmFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
OgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNr
ZXJib2FyZDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJi
b2FyZDo6Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TaGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9h
cmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmFscGhh
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6
OnRleFRyYW5zZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVy
Q2hlY2tlcmJvYXJkOjpmcmVxdWVuY3lMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdR
dWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NoZWNr
ZXJib2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0RyYXdRdWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OkNDU2V0dGluZ3MpOgorICAgICAg
ICAoQ0NTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBs
OjpDQ1RpbGVkTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6
OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxl
ZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAgICAgKENDVGlsZWRMYXllckltcGwp
OgorCiAyMDEyLTA0LTA1ICBNaW4gUWluICA8cWlubWluQGdvb2dsZS5jb20+CiAKICAgICAgICAg
Rml4IGZ1bGxzY3JlZW4gdmlkZW8gYnV0dG9uIGZvciBhbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggZDg1ZmZiNzYzMjVjYzZkZjRhZDc3YzUyNDk0YTg2YWQ3NmYzNjljZi4uYzg0MjlmY2M4MDhl
ZTM4NjVhNGIxODk1MzY3NzNjNzE5MWUyNzA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzU3Miw2
ICszNTcyLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0FuaW1hdGlvbkN1cnZlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmRE
cmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RhbWFnZVRyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAzZDE3YjhlZWRiMWJiZDFiNTM2MzY4NmEzZjlh
MWVmNGQ2ZjRmOTkzLi40Nzc0YWZkMzFiZGY4N2YzYjRjNjk0MWQxMTlmNzE5OGJhOTA5ODI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAK
ICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJUcmVlU3lu
Y2hyb25pemVyLmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAi
Y2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJhY2tl
ci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCkBAIC00NjgsNiArNDY5LDkgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1YWQsIGNvbnN0IEZsb2F0UmVjdCYg
c3UKICAgICBjYXNlIENDRHJhd1F1YWQ6OkludmFsaWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENDRHJhd1F1YWQ6OkNoZWNrZXJib2Fy
ZDoKKyAgICAgICAgZHJhd0NoZWNrZXJib2FyZFF1YWQocXVhZC0+dG9DaGVja2VyYm9hcmREcmF3
UXVhZCgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDQ0RyYXdRdWFkOjpEZWJ1Z0JvcmRl
cjoKICAgICAgICAgZHJhd0RlYnVnQm9yZGVyUXVhZChxdWFkLT50b0RlYnVnQm9yZGVyRHJhd1F1
YWQoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDg5LDYgKzQ5MywzNCBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCwgY29uc3QgRmxv
YXRSZWN0JiBzdQogICAgIH0KIH0KIAordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdD
aGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIHF1YWQpCit7Cisg
ICAgY29uc3QgQ2hlY2tlcmJvYXJkUHJvZ3JhbSogcHJvZ3JhbSA9IGNoZWNrZXJib2FyZFByb2dy
YW0oKTsKKyAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKKyAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgp
KSk7CisKKyAgICBJbnRSZWN0IHRpbGVSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCB0aWxlVHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwor
ICAgIHRpbGVUcmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVSZWN0LngoKSArIHRpbGVSZWN0LndpZHRo
KCkgLyAyLjAsIHRpbGVSZWN0LnkoKSArIHRpbGVSZWN0LmhlaWdodCgpIC8gMi4wKTsKKworICAg
IGZsb2F0IHRleE9mZnNldFggPSB0aWxlUmVjdC54KCk7CisgICAgZmxvYXQgdGV4T2Zmc2V0WSA9
IHRpbGVSZWN0LnkoKTsKKyAgICBmbG9hdCB0ZXhTY2FsZVggPSB0aWxlUmVjdC53aWR0aCgpOwor
ICAgIGZsb2F0IHRleFNjYWxlWSA9IHRpbGVSZWN0LmhlaWdodCgpOworICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkudGV4VHJh
bnNmb3JtTG9jYXRpb24oKSwgdGV4T2Zmc2V0WCwgdGV4T2Zmc2V0WSwgdGV4U2NhbGVYLCB0ZXhT
Y2FsZVkpKTsKKworICAgIGNvbnN0IGludCBjaGVja2VyYm9hcmRXaWR0aCA9IDE2OworICAgIGZs
b2F0IGZyZXF1ZW5jeSA9IDEuMCAvIGNoZWNrZXJib2FyZFdpZHRoOworCisgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmVx
dWVuY3lMb2NhdGlvbigpLCBmcmVxdWVuY3kpKTsKKworICAgIGZsb2F0IG9wYWNpdHkgPSBxdWFk
LT5vcGFjaXR5KCk7CisgICAgZHJhd1RleHR1cmVkUXVhZCh0aWxlVHJhbnNmb3JtLAorICAgICAg
ICAgICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNp
dHksIEZsb2F0UXVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkubWF0cml4TG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZy
YWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCAtMSk7Cit9CisKIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3
UXVhZCogcXVhZCkKIHsKICAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwpAQCAtMTMwMCw2
ICsxMzMyLDE3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVk
T2JqZWN0cygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NvbnN0IExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Q2hlY2tlcmJvYXJkUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjaGVja2Vy
Ym9hcmRQcm9ncmFtKCkKK3sKKyAgICBpZiAoIW1fY2hlY2tlcmJvYXJkUHJvZ3JhbSkKKyAgICAg
ICAgbV9jaGVja2VyYm9hcmRQcm9ncmFtID0gYWRvcHRQdHIobmV3IENoZWNrZXJib2FyZFByb2dy
YW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX2NoZWNrZXJib2FyZFByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Y2hlY2tlcmJvYXJkUHJvZ3JhbTo6aW5pdGFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIG1f
Y2hlY2tlcmJvYXJkUHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOworICAgIH0K
KyAgICByZXR1cm4gbV9jaGVja2VyYm9hcmRQcm9ncmFtLmdldCgpOworfQorCiBjb25zdCBMYXll
ckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJvcmRlclBy
b2dyYW0oKQogewogICAgIGlmICghbV9ib3JkZXJQcm9ncmFtKQpAQCAtMTUzNCw2ICsxNTc3LDgg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKIAog
ICAgIG1fc2hhcmVkR2VvbWV0cnkuY2xlYXIoKTsKIAorICAgIGlmIChtX2NoZWNrZXJib2FyZFBy
b2dyYW0pCisgICAgICAgIG1fY2hlY2tlcmJvYXJkUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQu
Z2V0KCkpOwogICAgIGlmIChtX2JvcmRlclByb2dyYW0pCiAgICAgICAgIG1fYm9yZGVyUHJvZ3Jh
bS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX2hlYWRzVXBEaXNwbGF5UHJv
Z3JhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggZDZhYzY4MjI5MDY5
MTI3ZTNiMTIwZTkzNDQ5Y2JhOTVlMTk3NTY5MS4uN2NiOWViNTZhMjM1M2JhODBkNzIwMDExOGIy
OTZhOTJkYjgwZGQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEx
NSw2ICsxMTUsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgR2VvbWV0cnlCaW5kaW5nKiBzaGFy
ZWRHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkR2VvbWV0cnkuZ2V0KCk7IH0KICAg
ICBjb25zdCBGbG9hdFF1YWQmIHNoYXJlZEdlb21ldHJ5UXVhZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkR2VvbWV0cnlRdWFkOyB9CisKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRl
eFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ+IENoZWNrZXJib2FyZFBy
b2dyYW07CisKKyAgICBjb25zdCBDaGVja2VyYm9hcmRQcm9ncmFtKiBjaGVja2VyYm9hcmRQcm9n
cmFtKCk7CiAgICAgY29uc3QgTGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbSogYm9yZGVyUHJv
Z3JhbSgpOwogICAgIGNvbnN0IENDSGVhZHNVcERpc3BsYXk6OlByb2dyYW0qIGhlYWRzVXBEaXNw
bGF5UHJvZ3JhbSgpOwogICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbSogcmVuZGVy
U3VyZmFjZVByb2dyYW0oKTsKQEAgLTE3Miw2ICsxNzYsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0
JiBzdXJmYWNlRGFtYWdlUmVjdCk7CisgICAgdm9pZCBkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25z
dCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3RGVidWdCb3JkZXJRdWFk
KGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1JlbmRlclN1cmZh
Y2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3U29s
aWRDb2xvclF1YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqKTsKQEAgLTIyNCw2ICsyMjks
NyBAQCBwcml2YXRlOgogICAgIC8vIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgY29tcG9zaXRv
ciBydW5uaW5nIGluIHRoZSBzYW1lIHJlbmRlcmVyIHByb2Nlc3MKICAgICAvLyB3ZSBjYW5ub3Qg
c3RvcmUgdGhlc2UgdmFsdWVzIGluIHN0YXRpYyB2YXJpYWJsZXMuCiAgICAgT3duUHRyPEdlb21l
dHJ5QmluZGluZz4gbV9zaGFyZWRHZW9tZXRyeTsKKyAgICBPd25QdHI8Q2hlY2tlcmJvYXJkUHJv
Z3JhbT4gbV9jaGVja2VyYm9hcmRQcm9ncmFtOwogICAgIE93blB0cjxMYXllckNocm9taXVtOjpC
b3JkZXJQcm9ncmFtPiBtX2JvcmRlclByb2dyYW07CiAgICAgT3duUHRyPENDSGVhZHNVcERpc3Bs
YXk6OlByb2dyYW0+IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtOwogICAgIE93blB0cjxDQ1RleHR1
cmVMYXllckltcGw6OlByb2dyYW1GbGlwPiBtX3RleHR1cmVMYXllclByb2dyYW1GbGlwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2hhZGVyQ2hyb21pdW0uY3BwCmluZGV4IGQ5OTVlZGFkYmQ0NGI1NGU2MzE0YTIzZTc2OTQwNGQy
NDllNzUyZWIuLjE2MjM3NzVjODJmNjFjOGE0NjY1NTJjY2M2OWFjNDA1NzY1OGY1NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5jcHAKQEAgLTcyNSw2ICs3MjUsNDQgQEAgU3RyaW5nIEZyYWdtZW50
U2hhZGVyQ29sb3I6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorRnJhZ21l
bnRTaGFkZXJDaGVja2VyYm9hcmQ6OkZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkKCkKKyAgICA6
IG1fYWxwaGFMb2NhdGlvbigtMSkKKyAgICAsIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCisg
ICAgLCBtX2ZyZXF1ZW5jeUxvY2F0aW9uKC0xKQoreworfQorCit2b2lkIEZyYWdtZW50U2hhZGVy
Q2hlY2tlcmJvYXJkOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtKQoreworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtLCAiYWxwaGEiKTsKKyAgICBtX3RleFRyYW5zZm9ybUxvY2F0aW9uID0gY29u
dGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXhUcmFuc2Zvcm0iKTsKKyAgICBt
X2ZyZXF1ZW5jeUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJmcmVxdWVuY3kiKTsKKyAgICBBU1NFUlQobV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fdGV4
VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV9mcmVxdWVuY3lMb2NhdGlvbiAhPSAtMSk7Cit9
CisKK1N0cmluZyBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6Z2V0U2hhZGVyU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICAvLyBTaGFkZXIgYmFzZWQgb24gRXhhbXBsZSAxMy0xNyBvZiAiT3BlbkdM
IEVTIDIuMCBQcm9ncmFtbWluZyBHdWlkZSIKKyAgICAvLyBieSBNdW5zaGksIEdpbnNidXJnLCBT
aHJlaW5lci4KKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgaW50OworICAgICAgICB2YXJ5aW5nIHZl
YzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBmbG9hdCBhbHBoYTsKKyAgICAgICAgdW5p
Zm9ybSBmbG9hdCBmcmVxdWVuY3k7CisgICAgICAgIHVuaWZvcm0gdmVjNCB0ZXhUcmFuc2Zvcm07
CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzQgY29sb3Ix
ID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworICAgICAgICAgICAgdmVjNCBjb2xvcjIgPSB2
ZWM0KDAuOTQ1LCAwLjk0NSwgMC45NDUsIDEuMCk7CisgICAgICAgICAgICB2ZWMyIHRleENvb3Jk
ID0gY2xhbXAodl90ZXhDb29yZCwgMC4wLCAxLjApICogdGV4VHJhbnNmb3JtLnp3ICsgdGV4VHJh
bnNmb3JtLnh5OworICAgICAgICAgICAgdmVjMiBjb29yZCA9IG1vZChmbG9vcih0ZXhDb29yZCAq
IGZyZXF1ZW5jeSAqIDIuMCksIDIuMCk7CisgICAgICAgICAgICBmbG9hdCBwaWNrZXIgPSBhYnMo
Y29vcmQueCAtIGNvb3JkLnkpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gbWl4KGNvbG9y
MSwgY29sb3IyLCBwaWNrZXIpICogYWxwaGE7CisgICAgICAgIH0KKyAgICApOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2hhZGVyQ2hyb21pdW0uaAppbmRleCAwZTQxOTY4ODAyY2M4Y2VkMzI2ZWNiNjZkZjRh
OWFiYjI3YmI5ZGExLi5iMjgzN2U5MWVhYzFhODk1NTM5NGJkYjE4MWYxNDlkMjZmM2E3MGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFk
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NoYWRlckNocm9taXVtLmgKQEAgLTM1OSw2ICszNTksMjEgQEAgcHJpdmF0ZToKICAgICBp
bnQgbV9jb2xvckxvY2F0aW9uOwogfTsKIAorY2xhc3MgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9h
cmQgeworcHVibGljOgorICAgIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkKCk7CisgICAgU3Ry
aW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworCisgICAgdm9pZCBpbml0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgaW50IGFscGhhTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2FscGhhTG9jYXRpb247IH0KKyAgICBpbnQgdGV4VHJhbnNmb3JtTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3RleFRyYW5zZm9ybUxvY2F0aW9uOyB9CisgICAgaW50IGZy
ZXF1ZW5jeUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mcmVxdWVuY3lMb2NhdGlvbjsgfQor
cHJpdmF0ZToKKyAgICBpbnQgbV9hbHBoYUxvY2F0aW9uOworICAgIGludCBtX3RleFRyYW5zZm9y
bUxvY2F0aW9uOworICAgIGludCBtX2ZyZXF1ZW5jeUxvY2F0aW9uOworfTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YWUwMzM1MTRhNjg0NmFiOWY0Y2IxZmNiMWI5NjE1OGZmMmQwMjNmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2Vy
Ym9hcmREcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ+IENDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCkp
OworfQorCitDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0KQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkNo
ZWNrZXJib2FyZCwgcXVhZFJlY3QpCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2Y4YzU2YmQ0OWM0NWUzMDU1YTNmYTdjYjZl
N2E3MjVlNWY0M2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oCkBAIC0wLDAgKzEs
NDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWRfaAorI2RlZmluZSBD
Q0NoZWNrZXJib2FyZERyYXdRdWFkX2gKKworI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ0NDaGVja2VyYm9hcmREcmF3UXVhZCk7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NDaGVja2VyYm9hcmREcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYpOworCitwcml2YXRlOgorICAgIENDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jik7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCA2YTU1MzAwMjY5
NGIyYmQzNmU1Y2VlNmI2Yjg3Zjk0ZTNmMWYyODhjLi5iYzQ4OWRlNDA1YzVkZTVmMGUzNjVhMTZl
ZTk0Y2I1NjY5N2UwNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgogCisjaW5jbHVkZSAiY2MvQ0NDaGVja2Vy
Ym9hcmREcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1
YWQuaCIKQEAgLTY0LDYgKzY1LDEyIEBAIHZvaWQgQ0NEcmF3UXVhZDo6c2V0UXVhZFZpc2libGVS
ZWN0KGNvbnN0IEludFJlY3QmIHF1YWRWaXNpYmxlUmVjdCkKICAgICBtX3F1YWRWaXNpYmxlUmVj
dC5pbnRlcnNlY3QobV9xdWFkUmVjdCk7CiB9CiAKK2NvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1
YWQqIENDRHJhd1F1YWQ6OnRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQoKSBjb25zdAoreworICAgIEFT
U0VSVChtX21hdGVyaWFsID09IENoZWNrZXJib2FyZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqPih0aGlzKTsKK30KKwogY29uc3QgQ0NEZWJ1
Z0JvcmRlckRyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0RlYnVnQm9yZGVyRHJhd1F1YWQoKSBjb25z
dAogewogICAgIEFTU0VSVChtX21hdGVyaWFsID09IERlYnVnQm9yZGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1
YWQuaAppbmRleCBlNmYyMDg1NjhjYzQ4MmU4YjcwNmRkNmExNTg2MDY0YjE3NjlhYjk3Li4wNTc1
Yjk1MDQ3MGM5ZGQ1MGQyMTgwZWNmNGRkOWJmNTkxNjdmMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZDsKIGNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKIGNsYXNzIEND
UmVuZGVyU3VyZmFjZURyYXdRdWFkOwogY2xhc3MgQ0NTb2xpZENvbG9yRHJhd1F1YWQ7CkBAIC02
Miw2ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIGVudW0gTWF0ZXJpYWwgewogICAgICAgICBJbnZh
bGlkLAorICAgICAgICBDaGVja2VyYm9hcmQsCiAgICAgICAgIERlYnVnQm9yZGVyLAogICAgICAg
ICBSZW5kZXJTdXJmYWNlLAogICAgICAgICBUZXh0dXJlQ29udGVudCwKQEAgLTcyLDYgKzc0LDcg
QEAgcHVibGljOgogCiAgICAgTWF0ZXJpYWwgbWF0ZXJpYWwoKSBjb25zdCB7IHJldHVybiBtX21h
dGVyaWFsOyB9CiAKKyAgICBjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiB0b0NoZWNrZXJi
b2FyZERyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiB0
b0RlYnVnQm9yZGVyRHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2VE
cmF3UXVhZCogdG9SZW5kZXJTdXJmYWNlRHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZCogdG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKaW5kZXggOWNhMTRmYzA0NDg4M2FiMGMzMTA5YTk3ZmI4YmUxYjJi
YTIzNzE2MS4uZTE3ZWE0MTRhY2QyNzhiZWVhNzMwODg2NTUyOGVlM2YwY2ZmYWRlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTc5LDYgKzc5LDExIEBAIHN0cnVjdCBDQ1NldHRp
bmdzIHsKICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAg
LCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHRocmVhZGVkQW5pbWF0
aW9uRW5hYmxlZChmYWxzZSkKKyNpZiBPUyhBTkRST0lEKQorICAgICAgICAgICAgLCBjaGVja2Vy
Ym9hcmRNaXNzaW5nVGlsZXMoZmFsc2UpCisjZWxzZQorICAgICAgICAgICAgLCBjaGVja2VyYm9h
cmRNaXNzaW5nVGlsZXModHJ1ZSkKKyNlbmRpZgogICAgICAgICAgICAgLCBtYXhQYXJ0aWFsVGV4
dHVyZVVwZGF0ZXMoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgeyB9CiAKICAg
ICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKQEAgLTg5LDYgKzk0LDcgQEAgc3RydWN0IENDU2V0
dGluZ3MgewogICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogICAgIGJvb2wgcGFydGlhbFN3YXBF
bmFibGVkOwogICAgIGJvb2wgdGhyZWFkZWRBbmltYXRpb25FbmFibGVkOworICAgIGJvb2wgY2hl
Y2tlcmJvYXJkTWlzc2luZ1RpbGVzOwogICAgIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDEwNTExNjVi
MTdmMzNlYjM1NGZmMTZmNGQzMDUxNGJlYTVmOWM5NTcuLmY0ZGQyMDk0ZjI4Mjk1MmZjOTIyZmE1
MGVmZjBkYWE4NWE2YjAxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9h
cmREcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2lu
Y2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdR
dWFkLmgiCkBAIC02OSw2ICs3MCw3IEBAIENDVGlsZWRMYXllckltcGw6OkNDVGlsZWRMYXllcklt
cGwoaW50IGlkKQogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgLCBtX3NraXBzRHJhdyh0cnVl
KQogICAgICwgbV9jb250ZW50c1N3aXp6bGVkKGZhbHNlKQorICAgICwgbV9jaGVja2VyYm9hcmRN
aXNzaW5nVGlsZXModHJ1ZSkKIHsKIH0KIApAQCAtMTM1LDYgKzEzNywxMiBAQCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBDQ1RpbGVkTGF5ZXJJbXBsOjpxdWFkVHJhbnNmb3JtKCkgY29uc3QKICAgICBy
ZXR1cm4gdHJhbnNmb3JtOwogfQogCit2b2lkIENDVGlsZWRMYXllckltcGw6OndpbGxEcmF3KExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3sKKyAgICBjb25zdCBDQ1NldHRp
bmdzJiBzZXR0aW5ncyA9IGxheWVyUmVuZGVyZXItPnNldHRpbmdzKCk7CisgICAgbV9jaGVja2Vy
Ym9hcmRNaXNzaW5nVGlsZXMgPSBzZXR0aW5ncy5jaGVja2VyYm9hcmRNaXNzaW5nVGlsZXM7Cit9
CisKIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFk
TGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgdXNl
ZENoZWNrZXJib2FyZCkKIHsKICAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2aXNpYmxl
TGF5ZXJSZWN0KCk7CkBAIC0xNzgsNyArMTg2LDEwIEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICghdGlsZSB8fCAh
dGlsZS0+dGV4dHVyZUlkKCkpIHsKLSAgICAgICAgICAgICAgICB1c2VkQ2hlY2tlcmJvYXJkIHw9
IHF1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgdGlsZVJlY3QsIGJhY2tncm91bmRDb2xvcigpKSk7CisgICAgICAgICAgICAgICAgaWYg
KG1fY2hlY2tlcmJvYXJkTWlzc2luZ1RpbGVzKQorICAgICAgICAgICAgICAgICAgICB1c2VkQ2hl
Y2tlcmJvYXJkIHw9IHF1YWRMaXN0LmFwcGVuZChDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgdXNlZENoZWNrZXJib2FyZCB8PSBxdWFkTGlzdC5hcHBlbmQoQ0NT
b2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCBiYWNr
Z3JvdW5kQ29sb3IoKSkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMzc5MGZhZTVhNjY4NThiMjhj
MGU2NGU0Mjc2YzQwNWQxYzI2NzMwNi4uMmI5MjAzYmEyOGZkYWJmYTA0YzU3YzQyODFiNDdmM2Nh
ZWRjYjMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDMsNiArNDMsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGlsZWRMYXllckltcGwoKTsKIAorICAg
IHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKICAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29u
dGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwpAQCAtODgsNiArODksNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX3NraXBzRHJhdzsKICAgICBib29sIG1fY29udGVudHNTd2l6
emxlZDsKKyAgICBib29sIG1fY2hlY2tlcmJvYXJkTWlzc2luZ1RpbGVzOwogCiAgICAgT3duUHRy
PENDTGF5ZXJUaWxpbmdEYXRhPiBtX3RpbGVyOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135931</attachid>
            <date>2012-04-05 16:26:41 -0700</date>
            <delta_ts>2012-04-09 15:19:42 -0700</delta_ts>
            <desc>Only checkerboard root, rename usedCheckerboard</desc>
            <filename>bug-83241-20120405162640.patch</filename>
            <type>text/plain</type>
            <size>45199</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJlZjRhNzZjYTM3ZDk5
YjI3ZDk4NTNjMDZmZjBhYjUwMTg2YTMxMC4uODMyOGNlMzVlMzJhNTBiOTNhZDEyMmE2YWViNWVi
NjRhYWRjYWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA0LTA1ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBEcmF3
IG1pc3NpbmcgbGF5ZXIgdGlsZSBjaGVja2VyYm9hcmRzIGFzIGNoZWNrZXJib2FyZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIG5vbi1BbmRyb2lk
IHBsYXRmb3JtcywgZHJhdyBtaXNzaW5nIHRpbGUgY2hlY2tlcmJvYXJkcyBhcyBhY3R1YWwKKyAg
ICAgICAgY2hlY2tlcmJvYXJkcy4gVXNlIGEgc2hhZGVyIHRvIGRvIHRoaXMgc28gdGhhdCBubyB0
ZXh0dXJlIHVwbG9hZHMgYXJlCisgICAgICAgIG5lZWRlZC4gVGhpcyBvbmx5IGhhcHBlbnMgb24g
dGhlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnQgaG9zdCB0byBhdm9pZAorICAgICAgICBoYXZpbmcg
dW5leHBlY3RlZCAob3IgdHJhbnNmb3JtZWQgYW5kIGFsaWFzZWQpIGNoZWNrZXJib2FyZHMgb24g
b3RoZXIKKyAgICAgICAgY29udGVudCBsYXllcnMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06OnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6ZHJhd0NoZWNrZXJib2FyZEZvck1p
c3NpbmdUaWxlcyk6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdDaGVja2VyYm9hcmRRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
aGVja2VyYm9hcmRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2Fy
ZDo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5pdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6Z2V0U2hhZGVyU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OnRleFRyYW5zZm9ybUxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjpmcmVxdWVuY3lM
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckxheWVySW1wbC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnRvQ2hlY2tlcmJvYXJk
RHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDQ0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllcklt
cGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1w
bDo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6ZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQ
YXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTY3Jv
bGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJbXBs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXll
ckltcGwuaDoKKyAgICAgICAgKENDVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NU
aWxlZExheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0xheWVySW1wbC5oOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTIt
MDQtMDUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNdIHJl
cXVlc3RBbmltYXRpb25GcmFtZSBzb21ldGltZXMgc3R1Y2sgd2hlbiBwYWdlIGxvYWRzIGluIGEg
YmFja2dyb3VuZCB0YWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWU5Mzc0NGNmODlj
OWNjZDcwNjFmNDI1MzlmNDgyZmFhYzdlMzRmNy4uNmIxZDQzZjNiNTE5NjUxYjc5MjMxY2I5Zjlj
MzQ0MmMxZmRlYjAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAxMi0wNC0wNCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gRHJhdyBtaXNzaW5nIGxheWVyIHRpbGUgY2hlY2tlcmJvYXJkcyBhcyBj
aGVja2VyYm9hcmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzI0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtZSB1c2VkQ2hlY2tlcmJvYXJkIHRvIGhhZE1pc3NpbmdUaWxlIHRvIGF2b2lkIGNv
bmZ1c2lvbi4gVXBkYXRlCisgICAgICAgIHRlc3RzIHRvIG5vdCBleHBlY3QgU29saWRDb2xvciBx
dWFkcyBmb3IgY2hlY2tlcmJvYXJkcy4KKworICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29u
dGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6
Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVy
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogdGVz
dHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENv
bW1vbjo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgor
ICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAoQ0NMYXllclRlc3RD
b21tb246OmdldFF1YWRzKToKKyAgICAgICAgKiB0ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHA6
CisKIDIwMTItMDQtMDUgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBSZWNvcmQgdGhlIG51bWJlciBvZiB0aWxlcyBwYWludC1jdWxsZWQg
aW5zdGVhZCBvZiB0aGUgaW5jb3JyZWN0IG51bWJlciBvZiBwaXhlbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA5NDdjZmJkMTQ1MzkzMjA1NDVkNzUxODdkZmFiNzU5ZTk1NmNlYzA0Li5hMTRmODA0OGYx
MTA2YjUyODE2NjAxZWJjZmI2YmJhOTk5NmU2YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTc0
LDYgKzM1NzQsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQW5pbWF0aW9uQ3VydmUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGFtYWdlVHJhY2tlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggMmFkMDliOTQ4YTQzYmIzY2UzYTcxOTUxZmM3YjVkOWUxMzAwZWE1NS4u
YWU1ZGFjZDgwMDUwYzU2M2NiZTk2NTFmODdhZDdkODYwOGE0Nzg3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTc4LDYgKzc4LDcgQEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bSgp
CiAgICAgLCBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3ByZXNlcnZl
czNEKGZhbHNlKQogICAgICwgbV9hbHdheXNSZXNlcnZlVGV4dHVyZXMoZmFsc2UpCisgICAgLCBt
X2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoZmFsc2UpCiAgICAgLCBtX3JlcGxpY2FM
YXllcigwKQogICAgICwgbV9kcmF3T3BhY2l0eSgwKQogICAgICwgbV9kcmF3T3BhY2l0eUlzQW5p
bWF0aW5nKGZhbHNlKQpAQCAtNDYwLDYgKzQ2MSw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbGF5ZXItPnNldERlYnVnQm9y
ZGVyV2lkdGgobV9kZWJ1Z0JvcmRlcldpZHRoKTsKICAgICBsYXllci0+c2V0RGVidWdOYW1lKG1f
ZGVidWdOYW1lLmlzb2xhdGVkQ29weSgpKTsgLy8gV2UgaGF2ZSB0byB1c2UgaXNvbGF0ZWRDb3B5
KCkgaGVyZSB0byBzYWZlbHkgcGFzcyBvd25lcnNoaXAgdG8gYW5vdGhlciB0aHJlYWQuCiAgICAg
bGF5ZXItPnNldERvdWJsZVNpZGVkKG1fZG91YmxlU2lkZWQpOworICAgIGxheWVyLT5zZXREcmF3
Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdU
aWxlcyk7CiAgICAgbGF5ZXItPnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQoKSk7CiAgICAg
aWYgKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkgewogICAgICAgICAvLyBTaW5jZSBGaWx0ZXJP
cGVyYXRpb25zIGNvbnRhaW5zIGEgdmVjdG9yIG9mIFJlZlB0cnMsIHdlIG11c3QgZGVlcCBjb3B5
IHRoZSBmaWx0ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGI5ODAyMmI1MmRhNThiOTE5N2Ni
ZjU0NDhjYjZkNDBhOWEwN2MyNzAuLmQyZWU4MDA3YjI4NzU5MWNjODNlMDRmYTg3NGI4OGM4YWY5
ZjI5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE0Niw2ICsxNDYsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKICAgICB2
b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCgpIHsgbV9ub25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbkNoYW5nZWQgPSB0cnVlOyB9CiAKKyAgICB2b2lkIHNldERyYXdDaGVja2VyYm9h
cmRGb3JNaXNzaW5nVGlsZXMoYm9vbCBjaGVja2VyYm9hcmQpIHsgbV9kcmF3Q2hlY2tlcmJvYXJk
Rm9yTWlzc2luZ1RpbGVzID0gY2hlY2tlcmJvYXJkOyB9CisgICAgYm9vbCBkcmF3Q2hlY2tlcmJv
YXJkRm9yTWlzc2luZ1RpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3Q2hlY2tlcmJvYXJkRm9y
TWlzc2luZ1RpbGVzOyB9CisKICAgICBJbnRTaXplIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1
cm4gSW50U2l6ZSgpOyB9CiAKICAgICBmbG9hdCBwYWdlU2NhbGVEZWx0YSgpIGNvbnN0IHsgcmV0
dXJuIDE7IH0KQEAgLTMyMCw2ICszMjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc05vbkNv
bXBvc2l0ZWRDb250ZW50OwogICAgIGJvb2wgbV9wcmVzZXJ2ZXMzRDsKICAgICBib29sIG1fYWx3
YXlzUmVzZXJ2ZVRleHR1cmVzOworICAgIGJvb2wgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2lu
Z1RpbGVzOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9zdWJsYXllclRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDExNTI5NDExMjc4MmQxYTk2YTlhMDgwNDY0NGViNDRl
N2FmYTVhNGEuLjdmMDZjYzg3N2FhMGJmZTE3Mzg5ZmRkMDdiMDAwMDBkNDdhNGZmZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2lu
Y2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJv
bml6ZXIuaCIKICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJjYy9D
Q0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NEYW1hZ2VUcmFja2VyLmgi
CiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NM
YXllckltcGwuaCIKQEAgLTQ2OSw2ICs0NzAsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCogcXVhZCwgY29uc3QgRmxvYXRSZWN0JiBzdQog
ICAgIGNhc2UgQ0NEcmF3UXVhZDo6SW52YWxpZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ0NEcmF3UXVhZDo6Q2hlY2tlcmJvYXJkOgor
ICAgICAgICBkcmF3Q2hlY2tlcmJvYXJkUXVhZChxdWFkLT50b0NoZWNrZXJib2FyZERyYXdRdWFk
KCkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENDRHJhd1F1YWQ6OkRlYnVnQm9yZGVyOgog
ICAgICAgICBkcmF3RGVidWdCb3JkZXJRdWFkKHF1YWQtPnRvRGVidWdCb3JkZXJEcmF3UXVhZCgp
KTsKICAgICAgICAgYnJlYWs7CkBAIC00OTAsNiArNDk0LDM0IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25zdCBGbG9hdFJl
Y3QmIHN1CiAgICAgfQogfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NoZWNr
ZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogcXVhZCkKK3sKKyAgICBj
b25zdCBDaGVja2VyYm9hcmRQcm9ncmFtKiBwcm9ncmFtID0gY2hlY2tlcmJvYXJkUHJvZ3JhbSgp
OworICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOworICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsK
KworICAgIEludFJlY3QgdGlsZVJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOworICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHRpbGVUcmFuc2Zvcm0gPSBxdWFkLT5xdWFkVHJhbnNmb3JtKCk7CisgICAg
dGlsZVRyYW5zZm9ybS50cmFuc2xhdGUodGlsZVJlY3QueCgpICsgdGlsZVJlY3Qud2lkdGgoKSAv
IDIuMCwgdGlsZVJlY3QueSgpICsgdGlsZVJlY3QuaGVpZ2h0KCkgLyAyLjApOworCisgICAgZmxv
YXQgdGV4T2Zmc2V0WCA9IHRpbGVSZWN0LngoKTsKKyAgICBmbG9hdCB0ZXhPZmZzZXRZID0gdGls
ZVJlY3QueSgpOworICAgIGZsb2F0IHRleFNjYWxlWCA9IHRpbGVSZWN0LndpZHRoKCk7CisgICAg
ZmxvYXQgdGV4U2NhbGVZID0gdGlsZVJlY3QuaGVpZ2h0KCk7CisgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtNGYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS50ZXhUcmFuc2Zv
cm1Mb2NhdGlvbigpLCB0ZXhPZmZzZXRYLCB0ZXhPZmZzZXRZLCB0ZXhTY2FsZVgsIHRleFNjYWxl
WSkpOworCisgICAgY29uc3QgaW50IGNoZWNrZXJib2FyZFdpZHRoID0gMTY7CisgICAgZmxvYXQg
ZnJlcXVlbmN5ID0gMS4wIC8gY2hlY2tlcmJvYXJkV2lkdGg7CisKKyAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPnVuaWZvcm0xZihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmZyZXF1ZW5j
eUxvY2F0aW9uKCksIGZyZXF1ZW5jeSkpOworCisgICAgZmxvYXQgb3BhY2l0eSA9IHF1YWQtPm9w
YWNpdHkoKTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkKHRpbGVUcmFuc2Zvcm0sCisgICAgICAgICAg
ICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwg
RmxvYXRRdWFkKCksCisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIo
KS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksIC0xKTsKK30KKwogdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdEZWJ1Z0JvcmRlclF1YWQoY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFk
KiBxdWFkKQogewogICAgIHN0YXRpYyBmbG9hdCBnbE1hdHJpeFsxNl07CkBAIC0xMzA3LDYgKzEz
MzksMTcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmpl
Y3RzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpDaGVja2VyYm9hcmRQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNoZWNrZXJib2Fy
ZFByb2dyYW0oKQoreworICAgIGlmICghbV9jaGVja2VyYm9hcmRQcm9ncmFtKQorICAgICAgICBt
X2NoZWNrZXJib2FyZFByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ2hlY2tlcmJvYXJkUHJvZ3JhbSht
X2NvbnRleHQuZ2V0KCkpKTsKKyAgICBpZiAoIW1fY2hlY2tlcmJvYXJkUHJvZ3JhbS0+aW5pdGlh
bGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
aGVja2VyYm9hcmRQcm9ncmFtOjppbml0YWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV9jaGVj
a2VyYm9hcmRQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgfQorICAg
IHJldHVybiBtX2NoZWNrZXJib2FyZFByb2dyYW0uZ2V0KCk7Cit9CisKIGNvbnN0IExheWVyQ2hy
b21pdW06OkJvcmRlclByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Ym9yZGVyUHJvZ3Jh
bSgpCiB7CiAgICAgaWYgKCFtX2JvcmRlclByb2dyYW0pCkBAIC0xNTQxLDYgKzE1ODQsOCBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogCiAgICAg
bV9zaGFyZWRHZW9tZXRyeS5jbGVhcigpOwogCisgICAgaWYgKG1fY2hlY2tlcmJvYXJkUHJvZ3Jh
bSkKKyAgICAgICAgbV9jaGVja2VyYm9hcmRQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQo
KSk7CiAgICAgaWYgKG1fYm9yZGVyUHJvZ3JhbSkKICAgICAgICAgbV9ib3JkZXJQcm9ncmFtLT5j
bGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1faGVhZHNVcERpc3BsYXlQcm9ncmFt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBkNmFjNjgyMjkwNjkxMjdl
M2IxMjBlOTM0NDljYmE5NWUxOTc1NjkxLi43Y2I5ZWI1NmEyMzUzYmE4MGQ3MjAwMTE4YjI5NmE5
MmRiODBkZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTE1LDYg
KzExNSwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJlZEdl
b21ldHJ5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQogICAgIGNv
bnN0IEZsb2F0UXVhZCYgc2hhcmVkR2VvbWV0cnlRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWRHZW9tZXRyeVF1YWQ7IH0KKworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hh
ZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZD4gQ2hlY2tlcmJvYXJkUHJvZ3Jh
bTsKKworICAgIGNvbnN0IENoZWNrZXJib2FyZFByb2dyYW0qIGNoZWNrZXJib2FyZFByb2dyYW0o
KTsKICAgICBjb25zdCBMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtKiBib3JkZXJQcm9ncmFt
KCk7CiAgICAgY29uc3QgQ0NIZWFkc1VwRGlzcGxheTo6UHJvZ3JhbSogaGVhZHNVcERpc3BsYXlQ
cm9ncmFtKCk7CiAgICAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlOjpQcm9ncmFtKiByZW5kZXJTdXJm
YWNlUHJvZ3JhbSgpOwpAQCAtMTcyLDYgKzE3Niw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqLCBjb25zdCBGbG9hdFJlY3QmIHN1
cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICB2b2lkIGRyYXdDaGVja2VyYm9hcmRRdWFkKGNvbnN0IEND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdEZWJ1Z0JvcmRlclF1YWQoY29u
c3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3UmVuZGVyU3VyZmFjZVF1
YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdTb2xpZENv
bG9yUXVhZChjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCopOwpAQCAtMjI0LDYgKzIyOSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBjb21wb3NpdG9yIHJ1
bm5pbmcgaW4gdGhlIHNhbWUgcmVuZGVyZXIgcHJvY2VzcwogICAgIC8vIHdlIGNhbm5vdCBzdG9y
ZSB0aGVzZSB2YWx1ZXMgaW4gc3RhdGljIHZhcmlhYmxlcy4KICAgICBPd25QdHI8R2VvbWV0cnlC
aW5kaW5nPiBtX3NoYXJlZEdlb21ldHJ5OworICAgIE93blB0cjxDaGVja2VyYm9hcmRQcm9ncmFt
PiBtX2NoZWNrZXJib2FyZFByb2dyYW07CiAgICAgT3duUHRyPExheWVyQ2hyb21pdW06OkJvcmRl
clByb2dyYW0+IG1fYm9yZGVyUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NIZWFkc1VwRGlzcGxheTo6
UHJvZ3JhbT4gbV9oZWFkc1VwRGlzcGxheVByb2dyYW07CiAgICAgT3duUHRyPENDVGV4dHVyZUxh
eWVySW1wbDo6UHJvZ3JhbUZsaXA+IG1fdGV4dHVyZUxheWVyUHJvZ3JhbUZsaXA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFk
ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDk5NWVkYWRiZDQ0YjU0ZTYzMTRhMjNlNzY5NDA0ZDI0OWU3
NTJlYi4uMTYyMzc3NWM4MmY2MWM4YTQ2NjU1MmNjYzY5YWM0MDU3NjU4ZjU0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmNwcApAQCAtNzI1LDYgKzcyNSw0NCBAQCBTdHJpbmcgRnJhZ21lbnRTaGFk
ZXJDb2xvcjo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCitGcmFnbWVudFNo
YWRlckNoZWNrZXJib2FyZDo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQoKQorICAgIDogbV9h
bHBoYUxvY2F0aW9uKC0xKQorICAgICwgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbigtMSkKKyAgICAs
IG1fZnJlcXVlbmN5TG9jYXRpb24oLTEpCit7Cit9CisKK3ZvaWQgRnJhZ21lbnRTaGFkZXJDaGVj
a2VyYm9hcmQ6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dy
YW0pCit7CisgICAgbV9hbHBoYUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0sICJhbHBoYSIpOworICAgIG1fdGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleFRyYW5zZm9ybSIpOworICAgIG1fZnJl
cXVlbmN5TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImZy
ZXF1ZW5jeSIpOworICAgIEFTU0VSVChtX2FscGhhTG9jYXRpb24gIT0gLTEgJiYgbV90ZXhUcmFu
c2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX2ZyZXF1ZW5jeUxvY2F0aW9uICE9IC0xKTsKK30KKwor
U3RyaW5nIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dAoreworICAgIC8vIFNoYWRlciBiYXNlZCBvbiBFeGFtcGxlIDEzLTE3IG9mICJPcGVuR0wgRVMg
Mi4wIFByb2dyYW1taW5nIEd1aWRlIgorICAgIC8vIGJ5IE11bnNoaSwgR2luc2J1cmcsIFNocmVp
bmVyLgorICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OworICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2
X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIGZsb2F0IGFscGhhOworICAgICAgICB1bmlmb3Jt
IGZsb2F0IGZyZXF1ZW5jeTsKKyAgICAgICAgdW5pZm9ybSB2ZWM0IHRleFRyYW5zZm9ybTsKKyAg
ICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmVjNCBjb2xvcjEgPSB2
ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7CisgICAgICAgICAgICB2ZWM0IGNvbG9yMiA9IHZlYzQo
MC45NDUsIDAuOTQ1LCAwLjk0NSwgMS4wKTsKKyAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQgPSBj
bGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiB0ZXhUcmFuc2Zvcm0uencgKyB0ZXhUcmFuc2Zv
cm0ueHk7CisgICAgICAgICAgICB2ZWMyIGNvb3JkID0gbW9kKGZsb29yKHRleENvb3JkICogZnJl
cXVlbmN5ICogMi4wKSwgMi4wKTsKKyAgICAgICAgICAgIGZsb2F0IHBpY2tlciA9IGFicyhjb29y
ZC54IC0gY29vcmQueSk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBtaXgoY29sb3IxLCBj
b2xvcjIsIHBpY2tlcikgKiBhbHBoYTsKKyAgICAgICAgfQorICAgICk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1No
YWRlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5oCmluZGV4IDBlNDE5Njg4MDJjYzhjZWQzMjZlY2I2NmRmNGE5YWJi
MjdiYjlkYTEuLmIyODM3ZTkxZWFjMWE4OTU1Mzk0YmRiMTgxZjE0OWQyNmYzYTcwYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2hhZGVyQ2hyb21pdW0uaApAQCAtMzU5LDYgKzM1OSwyMSBAQCBwcml2YXRlOgogICAgIGludCBt
X2NvbG9yTG9jYXRpb247CiB9OwogCitjbGFzcyBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCB7
CitwdWJsaWM6CisgICAgRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQoKTsKKyAgICBTdHJpbmcg
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CisKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0
M0QqLCB1bnNpZ25lZCBwcm9ncmFtKTsKKyAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWxwaGFMb2NhdGlvbjsgfQorICAgIGludCB0ZXhUcmFuc2Zvcm1Mb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4VHJhbnNmb3JtTG9jYXRpb247IH0KKyAgICBpbnQgZnJlcXVl
bmN5TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZyZXF1ZW5jeUxvY2F0aW9uOyB9Citwcml2
YXRlOgorICAgIGludCBtX2FscGhhTG9jYXRpb247CisgICAgaW50IG1fdGV4VHJhbnNmb3JtTG9j
YXRpb247CisgICAgaW50IG1fZnJlcXVlbmN5TG9jYXRpb247Cit9OworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0No
ZWNrZXJib2FyZERyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhZTAz
MzUxNGE2ODQ2YWI5ZjRjYjFmY2IxYjk2MTU4ZmYyZDAyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8Q0NDaGVja2VyYm9hcmREcmF3UXVhZD4gQ0NDaGVja2Vy
Ym9hcmREcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0KQoreworICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ0NDaGVja2VyYm9hcmREcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0KSk7Cit9
CisKK0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OkNDQ2hlY2tlcmJvYXJkRHJhd1F1YWQoY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QpCisgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2hlY2tl
cmJvYXJkLCBxdWFkUmVjdCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVja2VyYm9h
cmREcmF3UXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZjhjNTZiZDQ5YzQ1ZTMwNTVhM2ZhN2NiNmU3YTcy
NWU1ZjQzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0NDaGVja2VyYm9hcmREcmF3UXVhZF9oCisjZGVmaW5lIENDQ2hl
Y2tlcmJvYXJkRHJhd1F1YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0ND
aGVja2VyYm9hcmREcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ0NoZWNrZXJib2FyZERyYXdRdWFkKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDQ0NoZWNrZXJib2FyZERyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jik7CisKK3ByaXZhdGU6CisgICAgQ0NDaGVja2VyYm9h
cmREcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmKTsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCmluZGV4IDZhNTUzMDAyNjk0YjJi
ZDM2ZTVjZWU2YjZiODdmOTRlM2YxZjI4OGMuLmJjNDg5ZGU0MDVjNWRlNWYwZTM2NWExNmVlOTRj
YjU2Njk3ZTA3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCiAKKyNpbmNsdWRlICJjYy9DQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5o
IgpAQCAtNjQsNiArNjUsMTIgQEAgdm9pZCBDQ0RyYXdRdWFkOjpzZXRRdWFkVmlzaWJsZVJlY3Qo
Y29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQogICAgIG1fcXVhZFZpc2libGVSZWN0Lmlu
dGVyc2VjdChtX3F1YWRSZWN0KTsKIH0KIAorY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCog
Q0NEcmF3UXVhZDo6dG9DaGVja2VyYm9hcmREcmF3UXVhZCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1fbWF0ZXJpYWwgPT0gQ2hlY2tlcmJvYXJkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCo+KHRoaXMpOworfQorCiBjb25zdCBDQ0RlYnVnQm9y
ZGVyRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvRGVidWdCb3JkZXJEcmF3UXVhZCgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gRGVidWdCb3JkZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CmluZGV4IGU2ZjIwODU2OGNjNDgyZThiNzA2ZGQ2YTE1ODYwNjRiMTc2OWFiOTcuLjA1NzViOTUw
NDcwYzlkZDUwZDIxODBlY2Y0ZGQ5YmY1OTE2N2YxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAg
LTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkOwogY2xhc3MgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOwogY2xhc3MgQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQ7CiBjbGFzcyBDQ1NvbGlkQ29sb3JEcmF3UXVhZDsKQEAgLTYyLDYg
KzYzLDcgQEAgcHVibGljOgogCiAgICAgZW51bSBNYXRlcmlhbCB7CiAgICAgICAgIEludmFsaWQs
CisgICAgICAgIENoZWNrZXJib2FyZCwKICAgICAgICAgRGVidWdCb3JkZXIsCiAgICAgICAgIFJl
bmRlclN1cmZhY2UsCiAgICAgICAgIFRleHR1cmVDb250ZW50LApAQCAtNzIsNiArNzQsNyBAQCBw
dWJsaWM6CiAKICAgICBNYXRlcmlhbCBtYXRlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJp
YWw7IH0KIAorICAgIGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIHRvQ2hlY2tlcmJvYXJk
RHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqIHRvRGVi
dWdCb3JkZXJEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdR
dWFkKiB0b1JlbmRlclN1cmZhY2VEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDU29saWRD
b2xvckRyYXdRdWFkKiB0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCmluZGV4IDJhZmI5ZDhmZjc0MWY5MzM1OTU2NmExNjlmZDQzNzI5NzAyYTc5Njku
LmU5YzE4NWMxZGU0NTYwMDk3ODRlZWQxNDYxOGE1OTY1YjVmZTE1OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgQ0NMYXllckltcGw6OkNDTGF5ZXJJbXBsKGlu
dCBpZCkKICAgICAsIG1fb3BhcXVlKGZhbHNlKQogICAgICwgbV9vcGFjaXR5KDEuMCkKICAgICAs
IG1fcHJlc2VydmVzM0QoZmFsc2UpCisgICAgLCBtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5n
VGlsZXMoZmFsc2UpCiAgICAgLCBtX3VzZXNMYXllckNsaXBwaW5nKGZhbHNlKQogICAgICwgbV9p
c05vbkNvbXBvc2l0ZWRDb250ZW50KGZhbHNlKQogICAgICwgbV9kcmF3c0NvbnRlbnQoZmFsc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA2Y2I2ZGYwM2MyOWVhZTYwODdlMGY0YTllZTk0MWMz
MmI5OTUwODkyLi4zMjdhYjU2NTNlYjNhODUwOGQwYmMwZTYwYWVjMmZiZDhhYWYzZTUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgUGFzc093
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOworICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhh
ZE1pc3NpbmdUaWxlcyk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKSB7IH0KICAgICB2b2lk
IGFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSopIGNvbnN0OwogCkBAIC0xOTgsNiArMTk4LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFJl
Z2lvbiYgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX25vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uOyB9CiAgICAgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihj
b25zdCBSZWdpb24mIHJlZ2lvbikgeyBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0gcmVnaW9u
OyB9CiAKKyAgICB2b2lkIHNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoYm9vbCBj
aGVja2VyYm9hcmQpIHsgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzID0gY2hlY2tl
cmJvYXJkOyB9CisgICAgYm9vbCBkcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKCkgY29u
c3QgeyByZXR1cm4gbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzOyB9CisKICAgICBj
b25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxl
TGF5ZXJSZWN0OyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3Qm
IHZpc2libGVMYXllclJlY3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVj
dDsgfQogCkBAIC0yOTksNiArMzAyLDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX29wYWNpdHk7
CiAgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXMzRDsKKyAg
ICBib29sIG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlczsKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX3N1YmxheWVyVHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IG1fdHJhbnNmb3JtOwogICAgIGJvb2wgbV91c2VzTGF5ZXJDbGlwcGluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggZDIxYTRlMGM2MDljMzdiZGFkMmRmOTMx
NWFmNTA3Mjc2ZDdhZDFiZS4uYzNjNTNiNzY5ZGZmMjNlNjkxODdmODQ2NzE3NmU4OWM4MTIxN2M2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTMxNyw5ICsz
MTcsOSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhD
Q1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogCiAgICAgICAgIGl0LT53aWxsRHJhdyht
X2xheWVyUmVuZGVyZXIuZ2V0KCkpOwogCi0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9
IGZhbHNlOwotICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lv
blRyYWNrZXIsIHVzZWRDaGVja2VyYm9hcmQpOwotICAgICAgICBpZiAodXNlZENoZWNrZXJib2Fy
ZCkgeworICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOworICAgICAgICBwYXNz
LT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdU
aWxlcyk7CisgICAgICAgIGlmIChoYWRNaXNzaW5nVGlsZXMpIHsKICAgICAgICAgICAgIGJvb2wg
bGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0gPSBpdC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm1Jc0Fu
aW1hdGluZygpIHx8IGl0LT5kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoKTsKICAgICAgICAgICAg
IGlmIChsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSkKICAgICAgICAgICAgICAgICBkcmF3RnJh
bWUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IDE3MDRhNjE2ZDViMzEz
NGM5YWM5YTg0NjFkYThhNGRiMmZmMTBlYjcuLmQ1NDJkZTk0MDIwNWFlOGVjNWVkNjA0ZGQwMjdj
YzA0ODY2YjQ3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtNTYsMTMgKzU2LDEz
IEBAIENDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3Vy
ZmFjZSkKICAgICBBU1NFUlQobV90YXJnZXRTdXJmYWNlKTsKIH0KIAotdm9pZCBDQ1JlbmRlclBh
c3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRy
YWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKQordm9p
ZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBD
Q09jY2x1c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBib29sJiBoYWRNaXNzaW5n
VGlsZXMpCiB7CiAgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIs
IG9jY2x1c2lvblRyYWNrZXIpOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgbGF5ZXIt
PmFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkp
OwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0
KCksIHVzZWRDaGVja2VyYm9hcmQpOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgbV9zaGFyZWRR
dWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuaAppbmRleCA1OTkwMWM4YzU4Y2YzNzZhMGMxZjBjYzA5YzU3OGVlMDRk
MzE2MmUzLi5hMTU3OWFiODA2ZTg1NDNjZTNmNmY2YWFjMTJmMDk4NDIxYzE3ZGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDQ1JlbmRlclBhc3Mgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKENDUmVu
ZGVyU3VyZmFjZSopOwogCi0gICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBs
KiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOworICAg
IHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tl
ckltcGwqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpOwogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JS
ZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqKTsKIAogICAgIGNvbnN0IENDUXVhZExpc3Qm
IHF1YWRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkTGlzdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2Nyb2xsYmFyTGF5ZXJJbXBsLmgKaW5kZXggZDBjZGE4ZjY5OGYzZTA0OWZmYzEwMDkwZjExYzQy
NjJmNzBiZDVjMS4uMjIzNGIwODBhYjNlYzljMDgyOTY1YjkzMDhmNjZiNzA2MzM1NzVkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcikg
eyBtX3Njcm9sbExheWVyID0gc2Nyb2xsTGF5ZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
RHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hl
Y2tlcmJvYXJkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWREcmF3KCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmgKaW5kZXggMTBjNmFkZTNmNDczYjU0ZGJiYTc5MDQ1M2YyYzBkZThh
NWI2YWNlOS4uMDA4Y2E4Y2MyZjFlYjI3MmI4MjRjNDA1ZTcyZjVlM2MwZTQ0ZTQ1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkNDU29saWRDb2xvckxheWVySW1wbCgpOwogCiAgICAgdmlydHVh
bCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2lu
Z1RpbGVzKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENDU29saWRDb2xvckxheWVySW1w
bChpbnQgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAppbmRleCA5MmQxYTkw
YjlmZmNkNTQ4MjExYmM4YzY1MTk2MWNkYWIzNjdjOWYzLi4zZmYzODMwYTAwNWZkNzEzNjZmNDQz
MzVlOGUzMjRhYzkxZjFmNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGV4dHVyZUxh
eWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CisgICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIHR5cGVkZWYgUHJvZ3JhbUJp
bmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+
IFByb2dyYW1GbGlwOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9z
VGV4U3RyZXRjaCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW1TdHJldGNoOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCAxMDUxMTY1YjE3ZjMzZWIzNTRm
ZjE2ZjRkMzA1MTRiZWE1ZjljOTU3Li5mOWY2ZDhiMWNmM2I0MzkyMmE4YWM2MDNlZmE4YTcyN2Y1
ZWEzOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKIAogI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQu
aCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgpAQCAt
MTM1LDcgKzEzNiw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IENDVGlsZWRMYXllckltcGw6OnF1
YWRUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJldHVybiB0cmFuc2Zvcm07CiB9CiAKLXZvaWQgQ0NU
aWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgdXNlZENoZWNrZXJib2Fy
ZCkKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFk
TGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgaGFk
TWlzc2luZ1RpbGVzKQogewogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2libGVM
YXllclJlY3QoKTsKIApAQCAtMTc4LDcgKzE3OSwxMCBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoIXRpbGUgfHwg
IXRpbGUtPnRleHR1cmVJZCgpKSB7Ci0gICAgICAgICAgICAgICAgdXNlZENoZWNrZXJib2FyZCB8
PSBxdWFkTGlzdC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIHRpbGVSZWN0LCBiYWNrZ3JvdW5kQ29sb3IoKSkpOworICAgICAgICAgICAgICAgIGlm
IChkcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKCkpCisgICAgICAgICAgICAgICAgICAg
IGhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkTGlzdC5hcHBlbmQoQ0NDaGVja2VyYm9hcmREcmF3UXVh
ZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkTGlzdC5hcHBl
bmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0
LCBiYWNrZ3JvdW5kQ29sb3IoKSkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMzc5MGZhZTVhNjY4
NThiMjhjMGU2NGU0Mjc2YzQwNWQxYzI2NzMwNi4uZjI4MzliYmE5OGVlNTJlNWZlNDY2OTA1NTM3
OTZjNTNlMDhmN2U5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGlsZWRMYXllckltcGwoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOworICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJv
b2wmIGhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4
dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5oCmluZGV4IGRkYjI3OWM4M2FmZWZkODdkZjM2Njc2MWUxMWNlNmE4OWY3YWUzYTIuLjdhMmU2
ZTFiYThmNzhkMjBhYmQ5Yzk2ZTQ3YTBmMjcxZDJiYzlhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDVmlk
ZW9MYXllckltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVy
Q2hyb21pdW0qKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3
KCk7CiAKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5z
Zm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBSR0JBUHJvZ3JhbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhv
c3QuY3BwCmluZGV4IGI2YjFhMjI5NGQxNDk2YjM4MWRkYzE4YjI0ZGFlMTUzNmY2ODA4YzguLjcz
YTMzZDFmM2VhNTlhNTdiMDdlY2Y5OThkNzU1Y2NkZGM3N2JmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApA
QCAtNTAsNiArNTAsOSBAQCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Ok5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdChQYXNzT3duUHRyPFdlYkNvcmU6OkxheWVyUGFpbgogICAgIG1fZ3JhcGhpY3NM
YXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSk7
CiAjZW5kaWYKICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0T3BhcXVl
KHRydWUpOworI2lmICFPUyhBTkRST0lEKQorICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1M
YXllcigpLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKHRydWUpOworI2VuZGlm
CiB9CiAKIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6fk5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxl
clRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0
LmNwcAppbmRleCA0NTYyYTNhNzVjMmNiYjk1ODA5MzNjMzIzYWJkMDUwZGU1NDExZDczLi5jMmQy
MDhjOGEyNWFlYmViNjExOTQyNDE2NzFmYTVmNzlkYjhiMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTgyLDggKzgyLDgg
QEAgc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIFZlY3RvcjxP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4KIHsKICAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxl
cihxdWFkTGlzdCwgbGF5ZXIsICZvY2NsdXNpb25UcmFja2VyKTsKICAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3Rh
dGUoKTsKLSAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICBsYXllci0+YXBw
ZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJv
YXJkKTsKKyAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOworICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxl
cyk7CiAgICAgc2hhcmVkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlk
Q29sb3JMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMTJmOGMyMjRkZTUxZmM3OWNlYzRlZDRk
OTRhYTUwM2I5N2IwZDIxZC4uYTU1YTQ0N2E5YmNkYzhiMTIxYzI2NGVkOTk0NWUzNWViOTI1MWI0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JM
YXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29s
aWRDb2xvckxheWVySW1wbFRlc3QuY3BwCkBAIC01Miw4ICs1Miw4IEBAIFRFU1QoQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5VGlsaW5nQ29tcGxldGVBbmROb092ZXJsYXApCiAgICAg
bGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0g
ICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgbGF5ZXItPmFwcGVuZFF1YWRz
KHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7Cisg
ICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogCiAg
ICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRDdWxsZXIucXVhZExpc3QoKSwgdmlz
aWJsZUxheWVyUmVjdCk7CiB9CkBAIC03NCw4ICs3NCw4IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsVGVzdCwgdmVyaWZ5Q29ycmVjdEJhY2tncm91bmRDb2xvckluUXVhZCkKICAgICBsYXll
ci0+c2V0QmFja2dyb3VuZENvbG9yKHRlc3RDb2xvcik7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUo
KTsKLSAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICBsYXllci0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJk
KTsKKyAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOworICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7
CiAKICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMVUpOwogICAg
IEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbMF0tPnRvU29saWRDb2xvckRyYXdRdWFk
KCktPmNvbG9yKCksIHRlc3RDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IDU3Y2FhN2RjMTcxNGExZjll
NTJlNTIxYzU4ZDQwMzkyNTM1MzdiYjkuLjZiOWRiNjU4MTE4NjBiNGY0NWFlN2YyNDg5NTc3ZGZl
MTg1ZmI4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVySW1wbFRlc3QuY3BwCkBAIC03Miw4ICs3Miw4IEBAIFRFU1QoQ0NUaWxlZExheWVy
SW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdE
YXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxl
cjsKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBs
YXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJi
b2FyZCA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hh
cmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICAgICAgYm9vbCBoYWRN
aXNzaW5nVGlsZXMgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxs
ZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgY29u
c3QgdW5zaWduZWQgbnVtVGlsZXMgPSBudW1UaWxlc1ggKiBudW1UaWxlc1k7CiAgICAgICAgIEVY
UEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCBudW1UaWxlcyk7CiAgICAgfQpA
QCAtODUsOCArODUsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0
KQogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVk
UXVhZFN0YXRlKCk7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAg
ICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgp
LCB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxz
ZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0
ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIu
cXVhZExpc3QoKS5zaXplKCksIDB1KTsKICAgICB9CiAKQEAgLTk5LDggKzk5LDggQEAgVEVTVChD
Q1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKIAogICAgICAgICBNb2NrQ0NRdWFk
Q3VsbGVyIHF1YWRDdWxsZXI7CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hh
cmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBi
b29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRz
KHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7Cisg
ICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxl
cyk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7
CiAgICAgfQogCkBAIC0xMTEsOCArMTExLDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwg
ZW1wdHlRdWFkTGlzdCkKIAogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAg
ICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXIt
PmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQg
PSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1
YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CisgICAgICAgIGJvb2wgaGFkTWlzc2lu
Z1RpbGVzID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgICAgIEVYUEVDVF9F
UShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAwdSk7CiAgICAgfQogfQpAQCAtMTMyLDEw
ICsxMzIsMTAgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQog
ICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwogICAgIHsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxl
ciBxdWFkQ3VsbGVyOwotICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAg
ICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQo
KSwgdXNlZENoZWNrZXJib2FyZCk7CisgICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFs
c2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVy
LnF1YWRMaXN0KCkuc2l6ZSgpLCA0dSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1c2VkQ2hlY2tl
cmJvYXJkKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyAr
K2kpCiAgICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRl
cmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpOwpAQCAtMTQ4LDEyICsxNDgsMTIgQEAg
VEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIC8vIEFsbCBj
aGVja2VyYm9hcmRpbmcKICAgICB7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxl
cjsKLSAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgICAgIGxheWVy
LT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVj
a2VyYm9hcmQpOwotICAgICAgICBFWFBFQ1RfVFJVRSh1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICAg
ICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgRVhQRUNUX0VR
KHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDR1KTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdR
dWFkOjpTb2xpZENvbG9yKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShxdWFkQ3VsbGVyLnF1YWRM
aXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCk7CiAgICAgfQog
fQogCkBAIC0xNjUsOCArMTY1LDggQEAgc3RhdGljIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXoKIAogICAgIE1v
Y2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkcyk7CiAgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7
Ci0gICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7
CisgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKKyAgICBsYXllci0+YXBwZW5kUXVh
ZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwog
ICAgIHJldHVybiBzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUgc2hhcmVkIGRhdGEg
bXVzdCBiZSBvd25lZCBhcyBsb25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3RzLgogfQogCkBAIC0y
ODQsOCArMjg0LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVy
c1ZpZXdwb3J0KQogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRT
dGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKIAogICAgICAgICBNb2NrQ0NR
dWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZh
bHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0
YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGls
ZXMgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJl
ZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgRVhQRUNUX0VRKHF1
YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIG51bVRpbGVzKTsKIAogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKQEAgLTMw
MCwxMSArMzAwLDExIEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGJhY2tncm91bmRDb3Zl
cnNWaWV3cG9ydCkKIAogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1
YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICAgICAgTW9ja0ND
UXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBm
YWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRT
dGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7CisgICAgICAgIGJvb2wgaGFkTWlzc2luZ1Rp
bGVzID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0Ry
YXdRdWFkOjpTb2xpZENvbG9yKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShxdWFkQ3VsbGVyLnF1
YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCk7CiAKICAg
ICAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRDdWxsZXIucXVhZExpc3QoKSwg
Y2xpcFJlY3QpOwogICAgIH0KQEAgLTMxNywxNCArMzE3LDE0IEBAIFRFU1QoQ0NUaWxlZExheWVy
SW1wbFRlc3QsIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKIAogICAgICAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFk
U3RhdGUoKTsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBi
b29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRz
KHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7Cisg
ICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CisgICAgICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxl
cyk7CiAKICAgICAgICAgdW5zaWduZWQgbnVtQ29udGVudFRpbGVzID0gMCwgbnVtR3V0dGVyVGls
ZXMgPSAwOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExp
c3QoKS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKHF1YWRDdWxsZXIucXVhZExpc3Qo
KVtpXS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpCiAgICAgICAgICAg
ICAgICAgbnVtQ29udGVudFRpbGVzKys7Ci0gICAgICAgICAgICBlbHNlIGlmIChxdWFkQ3VsbGVy
LnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6U29saWRDb2xvcikKKyAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBudW1HdXR0ZXJUaWxlcysrOwogICAgICAg
ICB9CiAgICAgICAgIEVYUEVDVF9FUShudW1Db250ZW50VGlsZXMsIG51bVRpbGVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKaW5k
ZXggZTdkZTM1NmRkMGRhMzhhMzFiODk2YjJkN2E5YzQ4YTliMWEzNmMyMy4uYzNkYzg2NWJkNjAw
M2RiMTE3OTMyZDNjNTFlMjE2NzBhZTBmMTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTQ5OSw2ICs0OTksNyBAQCBU
RVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0
QmVoYXZpb3IpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJ
T1IoMCwgdGVzdExheWVyLT5zZXREcmF3VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
KTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0
ZXN0TGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
KTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0
ZXN0TGF5ZXItPnNldERyYXdhYmxlQ29udGVudFJlY3QoSW50UmVjdCg0LCA1LCA2LCA3KSkpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDAsIHRlc3RM
YXllci0+c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyghdGVzdExheWVyLT5kcmF3
Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKCkpKTsKICAgICBFWFBFQ1RfRkFMU0UodGVzdExh
eWVyLT5uZWVkc0Rpc3BsYXkoKSk7CiAKICAgICAvLyBOZXh0LCB0ZXN0IHByb3BlcnRpZXMgdGhh
dCBzaG91bGQgY2FsbCBzZXROZWVkc0NvbW1pdCAoYnV0IG5vdCBzZXROZWVkc0Rpc3BsYXkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136314</attachid>
            <date>2012-04-09 15:19:45 -0700</date>
            <delta_ts>2012-04-11 12:55:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-83241-20120409151944.patch</filename>
            <type>text/plain</type>
            <size>45548</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFlMTI1NjE2NGQ1ZTZk
Zjc1ZTM2M2RlMGM5NjEyOWNlZGEwNzcwYi4uYTMzOTJjNTM3ZjdjYTYzZDFlMjE5YjhmZWMzODkw
MjRhMjFmYzEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA0LTA1ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBEcmF3
IG1pc3NpbmcgbGF5ZXIgdGlsZSBjaGVja2VyYm9hcmRzIGFzIGNoZWNrZXJib2FyZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgRm9yIG5vbi1BbmRyb2lk
IHBsYXRmb3JtcywgZHJhdyBtaXNzaW5nIHRpbGUgY2hlY2tlcmJvYXJkcyBhcyBhY3R1YWwKKyAg
ICAgICAgY2hlY2tlcmJvYXJkcy4gVXNlIGEgc2hhZGVyIHRvIGRvIHRoaXMgc28gdGhhdCBubyB0
ZXh0dXJlIHVwbG9hZHMgYXJlCisgICAgICAgIG5lZWRlZC4gVGhpcyBvbmx5IGhhcHBlbnMgb24g
dGhlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnQgaG9zdCB0byBhdm9pZAorICAgICAgICBoYXZpbmcg
dW5leHBlY3RlZCAob3IgdHJhbnNmb3JtZWQgYW5kIGFsaWFzZWQpIGNoZWNrZXJib2FyZHMgb24g
b3RoZXIKKyAgICAgICAgY29udGVudCBsYXllcnMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06OnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6ZHJhd0NoZWNrZXJib2FyZEZvck1p
c3NpbmdUaWxlcyk6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdDaGVja2VyYm9hcmRRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpj
aGVja2VyYm9hcmRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2Fy
ZDo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5pdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6Z2V0U2hhZGVyU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoRnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRTaGFkZXJDaGVja2VyYm9hcmQ6OnRleFRyYW5zZm9ybUxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkOjpmcmVxdWVuY3lM
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmNwcDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2hlY2tl
cmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkOjpDQ0NoZWNrZXJib2FyZERyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckxheWVySW1wbC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnRvQ2hlY2tlcmJvYXJk
RHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDQ0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllcklt
cGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1w
bDo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVySW1wbDo6ZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQ
YXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTY3Jv
bGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU29saWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJbXBs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXll
ckltcGwuaDoKKyAgICAgICAgKENDVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NU
aWxlZExheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0xheWVySW1wbC5oOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTIt
MDQtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
RnJhbWVEYXRhIGNvbnN0cnVjdG9yIHplcm9lcyBhbGwgZmllbGRzLCBjYXVzaW5nIEltYWdlT3Jp
ZW50YXRpb24gdG8gYmUgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5YWQ3MmQwOWQx
ODk5MWIyZDNlZDU4MWVlYTI0N2E5ZjRkNGJiN2IyLi4wNWE2ZGFhMjYyZWRhZmI0OGY3NTM4ODE4
ODRlYjlmM2ZiYjU0YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDEyLTA0LTA0ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBEcmF3IG1pc3NpbmcgbGF5ZXIgdGlsZSBjaGVja2VyYm9hcmRzIGFz
IGNoZWNrZXJib2FyZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzMjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAg
ICAgICAgUmVuYW1lIHVzZWRDaGVja2VyYm9hcmQgdG8gaGFkTWlzc2luZ1RpbGUgdG8gYXZvaWQg
Y29uZnVzaW9uLiBVcGRhdGUKKyAgICAgICAgdGVzdHMgdG8gbm90IGV4cGVjdCBTb2xpZENvbG9y
IHF1YWRzIGZvciBjaGVja2VyYm9hcmRzLgorCisgICAgICAgICogc3JjL05vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxs
ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiB0
ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0
Q29tbW9uOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHA6
CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgIChDQ0xheWVyVGVz
dENvbW1vbjo6Z2V0UXVhZHMpOgorICAgICAgICAqIHRlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNw
cDoKKwogMjAxMi0wNC0wOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gQ0NMYXllclRyZWVIb3N0IC8gV2ViTGF5ZXJUcmVlVmlldyBz
aG91bGQgYmUgc2luZ2xlIG93bmVyc2hpcCwgbm90IFJlZkNvdW50ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCBmN2FiOGFkZjgyNGI0MmQ1OTNhMDg0YjMyZGY4MzkwZTk3MGZmYjA4Li44ZDE1NWZlNTcy
NzViMmEyNDQ2ZWNiYjU0OTFmZjE1NWVhMmI2NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTg4
LDYgKzM1ODgsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQW5pbWF0aW9uQ3VydmUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2Fy
ZERyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGFtYWdlVHJhY2tlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggMDU5MzQ1NDdkYTkxYTU1NWYxMTMyYjU1ZDkyOTAxZDc2ZWJkYjJhOC4u
OGM3OTFlNjk1NDExODI2ZGFlNGFiY2I3MzgxZGYzYmJlYTY5NDhlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTc5LDYgKzc5LDcgQEAgTGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1bSgp
CiAgICAgLCBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3ByZXNlcnZl
czNEKGZhbHNlKQogICAgICwgbV9hbHdheXNSZXNlcnZlVGV4dHVyZXMoZmFsc2UpCisgICAgLCBt
X2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoZmFsc2UpCiAgICAgLCBtX3JlcGxpY2FM
YXllcigwKQogICAgICwgbV9kcmF3T3BhY2l0eSgwKQogICAgICwgbV9kcmF3T3BhY2l0eUlzQW5p
bWF0aW5nKGZhbHNlKQpAQCAtNDE0LDYgKzQxNSwxNCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNl
dE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQogICAgIHNldE5l
ZWRzQ29tbWl0KCk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RHJhd0NoZWNrZXJib2Fy
ZEZvck1pc3NpbmdUaWxlcyhib29sIGNoZWNrZXJib2FyZCkKK3sKKyAgICBpZiAobV9kcmF3Q2hl
Y2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzID09IGNoZWNrZXJib2FyZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyA9IGNoZWNrZXJib2FyZDsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCiB2b2lkIExheWVyQ2hyb21pdW06OnNldERvdWJs
ZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCiB7CiAgICAgaWYgKG1fZG91YmxlU2lkZWQgPT0gZG91
YmxlU2lkZWQpCkBAIC00NjEsNiArNDcwLDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBsYXllci0+c2V0RGVidWdCb3JkZXJX
aWR0aChtX2RlYnVnQm9yZGVyV2lkdGgpOwogICAgIGxheWVyLT5zZXREZWJ1Z05hbWUobV9kZWJ1
Z05hbWUuaXNvbGF0ZWRDb3B5KCkpOyAvLyBXZSBoYXZlIHRvIHVzZSBpc29sYXRlZENvcHkoKSBo
ZXJlIHRvIHNhZmVseSBwYXNzIG93bmVyc2hpcCB0byBhbm90aGVyIHRocmVhZC4KICAgICBsYXll
ci0+c2V0RG91YmxlU2lkZWQobV9kb3VibGVTaWRlZCk7CisgICAgbGF5ZXItPnNldERyYXdDaGVj
a2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMobV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
KTsKICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGRyYXdzQ29udGVudCgpKTsKICAgICBpZiAo
Q0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKSB7CiAgICAgICAgIC8vIFNpbmNlIEZpbHRlck9wZXJh
dGlvbnMgY29udGFpbnMgYSB2ZWN0b3Igb2YgUmVmUHRycywgd2UgbXVzdCBkZWVwIGNvcHkgdGhl
IGZpbHRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggZTg3YjA3NGNiMjAxOWE5Mjg0YTNhZDJi
ZGM0NGM3ZTNkZmJlNTZiYy4uZDgxMDRkZmVkZWQ3MmE0Y2VkZDJlZTUxOTFmNGFhMWQwNjg2MWNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTQ2LDYgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYpOwogICAgIHZvaWQg
c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKCkgeyBtX25vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uQ2hhbmdlZCA9IHRydWU7IH0KIAorICAgIHZvaWQgc2V0RHJhd0NoZWNrZXJib2FyZEZv
ck1pc3NpbmdUaWxlcyhib29sKTsKKyAgICBib29sIGRyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5n
VGlsZXMoKSBjb25zdCB7IHJldHVybiBtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXM7
IH0KKwogICAgIEludFNpemUgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7
IH0KIAogICAgIGZsb2F0IHBhZ2VTY2FsZURlbHRhKCkgY29uc3QgeyByZXR1cm4gMTsgfQpAQCAt
MzIzLDYgKzMyNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzTm9uQ29tcG9zaXRlZENvbnRl
bnQ7CiAgICAgYm9vbCBtX3ByZXNlcnZlczNEOwogICAgIGJvb2wgbV9hbHdheXNSZXNlcnZlVGV4
dHVyZXM7CisgICAgYm9vbCBtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXM7CiAKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtX3N1YmxheWVyVHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKaW5kZXggMGFkNzNiNDY3MmZlYzI5NzVjYzAxZWY4M2M4NTA5Njk2NGViMzlkYi4uZjRh
NTAwYTg3MzlhMTBjYTc3NTBlMmY4Yzg4OGQ4MGVmNGM2YTMzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgogI2lu
Y2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJk
RHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgpA
QCAtNDY5LDYgKzQ3MCw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChj
b25zdCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25zdCBGbG9hdFJlY3QmIHN1CiAgICAgY2FzZSBDQ0Ry
YXdRdWFkOjpJbnZhbGlkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpDaGVja2VyYm9hcmQ6CisgICAgICAgIGRyYXdD
aGVja2VyYm9hcmRRdWFkKHF1YWQtPnRvQ2hlY2tlcmJvYXJkRHJhd1F1YWQoKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ0NEcmF3UXVhZDo6RGVidWdCb3JkZXI6CiAgICAgICAgIGRyYXdE
ZWJ1Z0JvcmRlclF1YWQocXVhZC0+dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkpOwogICAgICAgICBi
cmVhazsKQEAgLTQ5MCw2ICs0OTQsMzQgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1YWQsIGNvbnN0IEZsb2F0UmVjdCYgc3UKICAgICB9
CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2hlY2tlcmJvYXJkUXVhZChj
b25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBxdWFkKQoreworICAgIGNvbnN0IENoZWNrZXJi
b2FyZFByb2dyYW0qIHByb2dyYW0gPSBjaGVja2VyYm9hcmRQcm9ncmFtKCk7CisgICAgQVNTRVJU
KHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CisgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOworCisgICAgSW50UmVj
dCB0aWxlUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKKyAgICB0aWxlVHJhbnNmb3Jt
LnRyYW5zbGF0ZSh0aWxlUmVjdC54KCkgKyB0aWxlUmVjdC53aWR0aCgpIC8gMi4wLCB0aWxlUmVj
dC55KCkgKyB0aWxlUmVjdC5oZWlnaHQoKSAvIDIuMCk7CisKKyAgICBmbG9hdCB0ZXhPZmZzZXRY
ID0gdGlsZVJlY3QueCgpOworICAgIGZsb2F0IHRleE9mZnNldFkgPSB0aWxlUmVjdC55KCk7Cisg
ICAgZmxvYXQgdGV4U2NhbGVYID0gdGlsZVJlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCB0ZXhTY2Fs
ZVkgPSB0aWxlUmVjdC5oZWlnaHQoKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVu
aWZvcm00Zihwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCks
IHRleE9mZnNldFgsIHRleE9mZnNldFksIHRleFNjYWxlWCwgdGV4U2NhbGVZKSk7CisKKyAgICBj
b25zdCBpbnQgY2hlY2tlcmJvYXJkV2lkdGggPSAxNjsKKyAgICBmbG9hdCBmcmVxdWVuY3kgPSAx
LjAgLyBjaGVja2VyYm9hcmRXaWR0aDsKKworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZnJlcXVlbmN5TG9jYXRpb24oKSwg
ZnJlcXVlbmN5KSk7CisKKyAgICBmbG9hdCBvcGFjaXR5ID0gcXVhZC0+b3BhY2l0eSgpOworICAg
IGRyYXdUZXh0dXJlZFF1YWQodGlsZVRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgIHRp
bGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBGbG9hdFF1YWQoKSwK
KyAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0
aW9uKCksCisgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFs
cGhhTG9jYXRpb24oKSwgLTEpOworfQorCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqIHF1YWQpCiB7CiAg
ICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsKQEAgLTEzMTUsNiArMTM0NywxNyBAQCBib29s
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgIHJl
dHVybiB0cnVlOwogfQogCitjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkNoZWNrZXJib2Fy
ZFByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2hlY2tlcmJvYXJkUHJvZ3JhbSgpCit7
CisgICAgaWYgKCFtX2NoZWNrZXJib2FyZFByb2dyYW0pCisgICAgICAgIG1fY2hlY2tlcmJvYXJk
UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDaGVja2VyYm9hcmRQcm9ncmFtKG1fY29udGV4dC5nZXQo
KSkpOworICAgIGlmICghbV9jaGVja2VyYm9hcmRQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Cisg
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmNoZWNrZXJib2FyZFBy
b2dyYW06OmluaXRhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX2NoZWNrZXJib2FyZFByb2dy
YW0tPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fY2hl
Y2tlcmJvYXJkUHJvZ3JhbS5nZXQoKTsKK30KKwogY29uc3QgTGF5ZXJDaHJvbWl1bTo6Qm9yZGVy
UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpib3JkZXJQcm9ncmFtKCkKIHsKICAgICBp
ZiAoIW1fYm9yZGVyUHJvZ3JhbSkKQEAgLTE1NDksNiArMTU5Miw4IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAKICAgICBtX3NoYXJlZEdlb21l
dHJ5LmNsZWFyKCk7CiAKKyAgICBpZiAobV9jaGVja2VyYm9hcmRQcm9ncmFtKQorICAgICAgICBt
X2NoZWNrZXJib2FyZFByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAo
bV9ib3JkZXJQcm9ncmFtKQogICAgICAgICBtX2JvcmRlclByb2dyYW0tPmNsZWFudXAobV9jb250
ZXh0LmdldCgpKTsKICAgICBpZiAobV9oZWFkc1VwRGlzcGxheVByb2dyYW0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGQ2YWM2ODIyOTA2OTEyN2UzYjEyMGU5MzQ0OWNi
YTk1ZTE5NzU2OTEuLjdjYjllYjU2YTIzNTNiYTgwZDcyMDAxMThiMjk2YTkyZGI4MGRkOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMTUsNiArMTE1LDEwIEBAIHB1
YmxpYzoKIAogICAgIGNvbnN0IEdlb21ldHJ5QmluZGluZyogc2hhcmVkR2VvbWV0cnkoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5LmdldCgpOyB9CiAgICAgY29uc3QgRmxvYXRRdWFk
JiBzaGFyZWRHZW9tZXRyeVF1YWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZEdlb21ldHJ5UXVh
ZDsgfQorCisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZy
YWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkPiBDaGVja2VyYm9hcmRQcm9ncmFtOworCisgICAgY29u
c3QgQ2hlY2tlcmJvYXJkUHJvZ3JhbSogY2hlY2tlcmJvYXJkUHJvZ3JhbSgpOwogICAgIGNvbnN0
IExheWVyQ2hyb21pdW06OkJvcmRlclByb2dyYW0qIGJvcmRlclByb2dyYW0oKTsKICAgICBjb25z
dCBDQ0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFtKiBoZWFkc1VwRGlzcGxheVByb2dyYW0oKTsKICAg
ICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlByb2dyYW0qIHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7
CkBAIC0xNzIsNiArMTc2LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgZHJh
d1F1YWQoY29uc3QgQ0NEcmF3UXVhZCosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJl
Y3QpOworICAgIHZvaWQgZHJhd0NoZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmRE
cmF3UXVhZCopOwogICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9y
ZGVyRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1Jl
bmRlclN1cmZhY2VEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0
IENDU29saWRDb2xvckRyYXdRdWFkKik7CkBAIC0yMjQsNiArMjI5LDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIGNvbXBvc2l0b3IgcnVubmluZyBpbiB0aGUg
c2FtZSByZW5kZXJlciBwcm9jZXNzCiAgICAgLy8gd2UgY2Fubm90IHN0b3JlIHRoZXNlIHZhbHVl
cyBpbiBzdGF0aWMgdmFyaWFibGVzLgogICAgIE93blB0cjxHZW9tZXRyeUJpbmRpbmc+IG1fc2hh
cmVkR2VvbWV0cnk7CisgICAgT3duUHRyPENoZWNrZXJib2FyZFByb2dyYW0+IG1fY2hlY2tlcmJv
YXJkUHJvZ3JhbTsKICAgICBPd25QdHI8TGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3JhbT4gbV9i
b3JkZXJQcm9ncmFtOwogICAgIE93blB0cjxDQ0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFtPiBtX2hl
YWRzVXBEaXNwbGF5UHJvZ3JhbTsKICAgICBPd25QdHI8Q0NUZXh0dXJlTGF5ZXJJbXBsOjpQcm9n
cmFtRmxpcD4gbV90ZXh0dXJlTGF5ZXJQcm9ncmFtRmxpcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNw
cAppbmRleCBkOTk1ZWRhZGJkNDRiNTRlNjMxNGEyM2U3Njk0MDRkMjQ5ZTc1MmViLi4xNjIzNzc1
YzgyZjYxYzhhNDY2NTUyY2NjNjlhYzQwNTc2NThmNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0u
Y3BwCkBAIC03MjUsNiArNzI1LDQ0IEBAIFN0cmluZyBGcmFnbWVudFNoYWRlckNvbG9yOjpnZXRT
aGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9CiAKK0ZyYWdtZW50U2hhZGVyQ2hlY2tlcmJv
YXJkOjpGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCgpCisgICAgOiBtX2FscGhhTG9jYXRpb24o
LTEpCisgICAgLCBtX3RleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQorICAgICwgbV9mcmVxdWVuY3lM
b2NhdGlvbigtMSkKK3sKK30KKwordm9pZCBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZDo6aW5p
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBt
X2FscGhhTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImFs
cGhhIik7CisgICAgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidGV4VHJhbnNmb3JtIik7CisgICAgbV9mcmVxdWVuY3lMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiZnJlcXVlbmN5Iik7Cisg
ICAgQVNTRVJUKG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAmJiBtX3RleFRyYW5zZm9ybUxvY2F0aW9u
ICE9IC0xICYmIG1fZnJlcXVlbmN5TG9jYXRpb24gIT0gLTEpOworfQorCitTdHJpbmcgRnJhZ21l
bnRTaGFkZXJDaGVja2VyYm9hcmQ6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgLy8g
U2hhZGVyIGJhc2VkIG9uIEV4YW1wbGUgMTMtMTcgb2YgIk9wZW5HTCBFUyAyLjAgUHJvZ3JhbW1p
bmcgR3VpZGUiCisgICAgLy8gYnkgTXVuc2hpLCBHaW5zYnVyZywgU2hyZWluZXIuCisgICAgcmV0
dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGludDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Cisg
ICAgICAgIHVuaWZvcm0gZmxvYXQgYWxwaGE7CisgICAgICAgIHVuaWZvcm0gZmxvYXQgZnJlcXVl
bmN5OworICAgICAgICB1bmlmb3JtIHZlYzQgdGV4VHJhbnNmb3JtOworICAgICAgICB2b2lkIG1h
aW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IGNvbG9yMSA9IHZlYzQoMS4wLCAxLjAs
IDEuMCwgMS4wKTsKKyAgICAgICAgICAgIHZlYzQgY29sb3IyID0gdmVjNCgwLjk0NSwgMC45NDUs
IDAuOTQ1LCAxLjApOworICAgICAgICAgICAgdmVjMiB0ZXhDb29yZCA9IGNsYW1wKHZfdGV4Q29v
cmQsIDAuMCwgMS4wKSAqIHRleFRyYW5zZm9ybS56dyArIHRleFRyYW5zZm9ybS54eTsKKyAgICAg
ICAgICAgIHZlYzIgY29vcmQgPSBtb2QoZmxvb3IodGV4Q29vcmQgKiBmcmVxdWVuY3kgKiAyLjAp
LCAyLjApOworICAgICAgICAgICAgZmxvYXQgcGlja2VyID0gYWJzKGNvb3JkLnggLSBjb29yZC55
KTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IG1peChjb2xvcjEsIGNvbG9yMiwgcGlja2Vy
KSAqIGFscGhhOworICAgICAgICB9CisgICAgKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9t
aXVtLmgKaW5kZXggMGU0MTk2ODgwMmNjOGNlZDMyNmVjYjY2ZGY0YTlhYmIyN2JiOWRhMS4uYjI4
MzdlOTFlYWMxYTg5NTUzOTRiZGIxODFmMTQ5ZDI2ZjNhNzBhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1
bS5oCkBAIC0zNTksNiArMzU5LDIxIEBAIHByaXZhdGU6CiAgICAgaW50IG1fY29sb3JMb2NhdGlv
bjsKIH07CiAKK2NsYXNzIEZyYWdtZW50U2hhZGVyQ2hlY2tlcmJvYXJkIHsKK3B1YmxpYzoKKyAg
ICBGcmFnbWVudFNoYWRlckNoZWNrZXJib2FyZCgpOworICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKKworICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IHByb2dyYW0pOworICAgIGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbHBo
YUxvY2F0aW9uOyB9CisgICAgaW50IHRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQorICAgIGludCBmcmVxdWVuY3lMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZnJlcXVlbmN5TG9jYXRpb247IH0KK3ByaXZhdGU6CisgICAgaW50
IG1fYWxwaGFMb2NhdGlvbjsKKyAgICBpbnQgbV90ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsKKyAgICBp
bnQgbV9mcmVxdWVuY3lMb2NhdGlvbjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJh
d1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFlMDMzNTE0YTY4NDZhYjlm
NGNiMWZjYjFiOTYxNThmZjJkMDIzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuY3Bw
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc093blB0cjxDQ0NoZWNrZXJib2FyZERyYXdRdWFkPiBDQ0NoZWNrZXJib2FyZERyYXdRdWFk
OjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QpKTsKK30KKworQ0NDaGVja2Vy
Ym9hcmREcmF3UXVhZDo6Q0NDaGVja2VyYm9hcmREcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCkKKyAgICA6IEND
RHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpDaGVja2VyYm9hcmQsIHF1YWRS
ZWN0KQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjdmOGM1NmJkNDljNDVlMzA1NWEzZmE3Y2I2ZTdhNzI1ZTVmNDNmMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDQ0NoZWNrZXJib2FyZERyYXdRdWFkX2gKKyNkZWZpbmUgQ0NDaGVja2VyYm9hcmREcmF3
UXVhZF9oCisKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ0NoZWNrZXJib2FyZERy
YXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
Q2hlY2tlcmJvYXJkRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmKTsKKworcHJpdmF0ZToKKyAgICBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYpOworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKaW5kZXggNmE1NTMwMDI2OTRiMmJkMzZlNWNlZTZiNmI4
N2Y5NGUzZjFmMjg4Yy4uYmM0ODlkZTQwNWM1ZGU1ZjBlMzY1YTE2ZWU5NGNiNTY2OTdlMDc5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgImNj
L0NDRHJhd1F1YWQuaCIKIAorI2luY2x1ZGUgImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIK
ICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCkBAIC02NCw2ICs2
NSwxMiBAQCB2b2lkIENDRHJhd1F1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdChjb25zdCBJbnRSZWN0
JiBxdWFkVmlzaWJsZVJlY3QpCiAgICAgbV9xdWFkVmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fcXVh
ZFJlY3QpOwogfQogCitjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0
b0NoZWNrZXJib2FyZERyYXdRdWFkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9tYXRlcmlhbCA9
PSBDaGVja2VyYm9hcmQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkKj4odGhpcyk7Cit9CisKIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCog
Q0NEcmF3UXVhZDo6dG9EZWJ1Z0JvcmRlckRyYXdRdWFkKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
bV9tYXRlcmlhbCA9PSBEZWJ1Z0JvcmRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKaW5kZXggZTZmMjA4
NTY4Y2M0ODJlOGI3MDZkZDZhMTU4NjA2NGIxNzY5YWI5Ny4uMDU3NWI5NTA0NzBjOWRkNTBkMjE4
MGVjZjRkZDliZjU5MTY3ZjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaApAQCAtMzAsNiArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ7
CiBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBjbGFzcyBDQ1JlbmRlclN1cmZhY2VEcmF3
UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFkOwpAQCAtNjIsNiArNjMsNyBAQCBwdWJs
aWM6CiAKICAgICBlbnVtIE1hdGVyaWFsIHsKICAgICAgICAgSW52YWxpZCwKKyAgICAgICAgQ2hl
Y2tlcmJvYXJkLAogICAgICAgICBEZWJ1Z0JvcmRlciwKICAgICAgICAgUmVuZGVyU3VyZmFjZSwK
ICAgICAgICAgVGV4dHVyZUNvbnRlbnQsCkBAIC03Miw2ICs3NCw3IEBAIHB1YmxpYzoKIAogICAg
IE1hdGVyaWFsIG1hdGVyaWFsKCkgY29uc3QgeyByZXR1cm4gbV9tYXRlcmlhbDsgfQogCisgICAg
Y29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogdG9DaGVja2VyYm9hcmREcmF3UXVhZCgpIGNv
bnN0OwogICAgIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogdG9EZWJ1Z0JvcmRlckRyYXdR
dWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIHRvUmVuZGVy
U3VyZmFjZURyYXdRdWFkKCkgY29uc3Q7CiAgICAgY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQq
IHRvU29saWRDb2xvckRyYXdRdWFkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5k
ZXggMmFmYjlkOGZmNzQxZjkzMzU5NTY2YTE2OWZkNDM3Mjk3MDJhNzk2OS4uZTljMTg1YzFkZTQ1
NjAwOTc4NGVlZDE0NjE4YTU5NjViNWZlMTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApA
QCAtNTcsNiArNTcsNyBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwg
bV9vcGFxdWUoZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4wKQogICAgICwgbV9wcmVzZXJ2ZXMz
RChmYWxzZSkKKyAgICAsIG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhmYWxzZSkK
ICAgICAsIG1fdXNlc0xheWVyQ2xpcHBpbmcoZmFsc2UpCiAgICAgLCBtX2lzTm9uQ29tcG9zaXRl
ZENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX2RyYXdzQ29udGVudChmYWxzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCmluZGV4IDZjYjZkZjAzYzI5ZWFlNjA4N2UwZjRhOWVlOTQxYzMyYjk5NTA4OTIuLjMy
N2FiNTY1M2ViM2E4NTA4ZDBiYzBlNjBhZWMyZmJkOGFhZjNlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiBjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9v
bCYgdXNlZENoZWNrZXJib2FyZCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVz
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpIHsgfQogICAgIHZvaWQgYXBwZW5kRGVidWdC
b3JkZXJRdWFkKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7
CiAKQEAgLTE5OCw2ICsxOTgsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVnaW9uJiBub25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdp
b247IH0KICAgICB2b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYg
cmVnaW9uKSB7IG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gPSByZWdpb247IH0KIAorICAgIHZv
aWQgc2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sIGNoZWNrZXJib2FyZCkg
eyBtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMgPSBjaGVja2VyYm9hcmQ7IH0KKyAg
ICBib29sIGRyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoKSBjb25zdCB7IHJldHVybiBt
X2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXM7IH0KKwogICAgIGNvbnN0IEludFJlY3Qm
IHZpc2libGVMYXllclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVMYXllclJlY3Q7IH0K
ICAgICB2b2lkIHNldFZpc2libGVMYXllclJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVy
UmVjdCkgeyBtX3Zpc2libGVMYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0OyB9CiAKQEAgLTI5
OSw2ICszMDIsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fb3BhY2l0eTsKICAgICBGbG9hdFBv
aW50IG1fcG9zaXRpb247CiAgICAgYm9vbCBtX3ByZXNlcnZlczNEOworICAgIGJvb2wgbV9kcmF3
Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1f
c3VibGF5ZXJUcmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07
CiAgICAgYm9vbCBtX3VzZXNMYXllckNsaXBwaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAppbmRleCBkMjFhNGUwYzYwOWMzN2JkYWQyZGY5MzE1YWY1MDcyNzZkN2Fk
MWJlLi5jM2M1M2I3NjlkZmYyM2U2OTE4N2Y4NDY3MTc2ZTg5YzgxMjE3YzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzE3LDkgKzMxNyw5IEBAIGJvb2wg
Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xp
c3QmIHBhc3NlcywgQ0NMYXllCiAKICAgICAgICAgaXQtPndpbGxEcmF3KG1fbGF5ZXJSZW5kZXJl
ci5nZXQoKSk7CiAKLSAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAg
ICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgdXNl
ZENoZWNrZXJib2FyZCk7Ci0gICAgICAgIGlmICh1c2VkQ2hlY2tlcmJvYXJkKSB7CisgICAgICAg
IGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CisgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRz
Rm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICAg
ICAgaWYgKGhhZE1pc3NpbmdUaWxlcykgewogICAgICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1h
dGluZ1RyYW5zZm9ybSA9IGl0LT5zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgfHwg
aXQtPmRyYXdUcmFuc2Zvcm1Jc0FuaW1hdGluZygpOwogICAgICAgICAgICAgaWYgKGxheWVySGFz
QW5pbWF0aW5nVHJhbnNmb3JtKQogICAgICAgICAgICAgICAgIGRyYXdGcmFtZSA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggOTZiNzYwOGY4Y2UzZWVjNzJlZGE2MGFkYzc5
OWY0OWZmOGFiMDMwMC4uM2JhZTYzMDIxNDI2YTI0OGFlMTE3ZWM2NTM1OTc5NGU4NzFiNDIxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC01NiwxMyArNTYsMTMgQEAgQ0NSZW5kZXJQ
YXNzOjpDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlKQogICAgIEFT
U0VSVChtX3RhcmdldFN1cmZhY2UpOwogfQogCi12b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVh
ZHNGb3JMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9j
Y2x1c2lvblRyYWNrZXIsIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpCit2b2lkIENDUmVuZGVyUGFz
czo6YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJh
Y2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKIHsKICAg
ICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJh
Y2tlcik7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9
IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICBsYXllci0+YXBwZW5kRGVidWdC
b3JkZXJRdWFkKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7Ci0gICAgbGF5ZXIt
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNr
ZXJib2FyZCk7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRT
dGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3Qu
YXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5oCmluZGV4IDU5OTAxYzhjNThjZjM3NmEwYzFmMGNjMDljNTc4ZWUwNGQzMTYyZTMuLmExNTc5
YWI4MDZlODU0M2NlM2Y2ZjZhYWMxMmYwOTg0MjFjMTdkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENDUmVuZGVyUGFzcyB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoQ0NSZW5kZXJTdXJmYWNlKik7
CiAKLSAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lv
blRyYWNrZXJJbXBsKiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CisgICAgdm9pZCBhcHBlbmRR
dWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIGJvb2wm
IGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VM
YXllcihDQ0xheWVySW1wbCopOwogCiAgICAgY29uc3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBj
b25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuaAppbmRleCBkMGNkYThmNjk4ZjNlMDQ5ZmZjMTAwOTBmMTFjNDI2MmY3MGJkNWMxLi4y
MjM0YjA4MGFiM2VjOWMwODI5NjViOTMwOGY2NmI3MDYzMzU3NWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U2Nyb2xsTGF5ZXIoQ0NMYXllckltcGwqIHNjcm9sbExheWVyKSB7IG1fc2Nyb2xsTGF5
ZXIgPSBzY3JvbGxMYXllcjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVu
ZGVyZXJDaHJvbWl1bSopOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxs
ZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOwor
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERyYXcoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllcklt
cGwuaAppbmRleCAxMGM2YWRlM2Y0NzNiNTRkYmJhNzkwNDUzZjJjMGRlOGE1YjZhY2U5Li4wMDhj
YThjYzJmMWViMjcyYjgyNGM0MDVlNzJmNWUzYzBlNDRlNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NvbGlkQ29sb3JMYXllckltcGwuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+Q0NTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CiAKICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm0oKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
UXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2Vk
Q2hlY2tlcmJvYXJkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKGludCBpZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCmluZGV4IDkyZDFhOTBiOWZmY2Q1NDgyMTFi
YzhjNjUxOTYxY2RhYjM2N2M5ZjMuLjNmZjM4MzBhMDA1ZmQ3MTM2NmY0NDMzNWU4ZTMyNGFjOTFm
MWY1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUZXh0dXJlTGF5ZXJJbXBsKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29s
JiBoYWRNaXNzaW5nVGlsZXMpOwogCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhT
aGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbUZsaXA7
CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhTdHJldGNoLCBG
cmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbVN0cmV0Y2g7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuY3BwCmluZGV4IDdhM2M0NGZmNTQ3NWNlYzQzMDVkMTc5NTFhOTliY2Ey
MWQwNTFjNTQuLjJiZDU3YWRkZGEzMTAzY2NlY2VmZjBjZjI4MmMwY2E5YWVkYjVkZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5o
IgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCkBAIC0xMzUsNyArMTM2LDcg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NUaWxlZExheWVySW1wbDo6cXVhZFRyYW5zZm9ybSgp
IGNvbnN0CiAgICAgcmV0dXJuIHRyYW5zZm9ybTsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKQordm9pZCBDQ1Rp
bGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiBoYWRNaXNzaW5nVGlsZXMp
CiB7CiAgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwog
CkBAIC0xNzgsNyArMTc5LDEwIEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMo
Q0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+dGV4dHVy
ZUlkKCkpIHsKLSAgICAgICAgICAgICAgICB1c2VkQ2hlY2tlcmJvYXJkIHw9IHF1YWRMaXN0LmFw
cGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJl
Y3QsIGJhY2tncm91bmRDb2xvcigpKSk7CisgICAgICAgICAgICAgICAgaWYgKGRyYXdDaGVja2Vy
Ym9hcmRGb3JNaXNzaW5nVGlsZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgaGFkTWlzc2luZ1Rp
bGVzIHw9IHF1YWRMaXN0LmFwcGVuZChDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCB0aWxlUmVjdCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29s
b3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJhY2tncm91bmRD
b2xvcigpKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCAzNzkwZmFlNWE2Njg1OGIyOGMwZTY0ZTQy
NzZjNDA1ZDFjMjY3MzA2Li5mMjgzOWJiYTk4ZWU1MmU1ZmU0NjY5MDU1Mzc5NmM1M2UwOGY3ZTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUaWxlZExheWVySW1wbCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2lu
Z1RpbGVzKTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggZGRi
Mjc5YzgzYWZlZmQ4N2RmMzY2NzYxZTExY2U2YTg5ZjdhZTNhMi4uN2EyZTZlMWJhOGY3OGQyMGFi
ZDljOTZlNDdhMGYyNzFkMmJjOWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOworICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wm
IGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKTsKIAogICAgIHR5
cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVu
dFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFJHQkFQcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5kZXgg
YjZiMWEyMjk0ZDE0OTZiMzgxZGRjMThiMjRkYWUxNTM2ZjY4MDhjOC4uNzNhMzNkMWYzZWE1OWE1
N2IwN2VjZjk5OGQ3NTVjY2RkYzc3YmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBAIC01MCw2ICs1MCw5
IEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFBh
c3NPd25QdHI8V2ViQ29yZTo6TGF5ZXJQYWluCiAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9y
bUxheWVyKCktPnNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCh0cnVlKTsKICNlbmRpZgogICAg
IG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRPcGFxdWUodHJ1ZSk7CisjaWYg
IU9TKEFORFJPSUQpCisgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldERy
YXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXModHJ1ZSk7CisjZW5kaWYKIH0KIAogTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0Ojp+Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IDQ1
NjJhM2E3NWMyY2JiOTU4MDkzM2MzMjNhYmQwNTBkZTU0MTFkNzMuLmMyZDIwOGM4YTI1YWViZWI2
MTE5NDI0MTY3MWZhNWY3OWRiOGIwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtODIsOCArODIsOCBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgVmVjdG9yPE93blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gPgogewogICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBs
YXllciwgJm9jY2x1c2lvblRyYWNrZXIpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
c2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGJv
b2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOworICAgIGJv
b2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRD
dWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICBzaGFy
ZWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1w
bFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXll
ckltcGxUZXN0LmNwcAppbmRleCAxMmY4YzIyNGRlNTFmYzc5Y2VjNGVkNGQ5NGFhNTAzYjk3YjBk
MjFkLi5hNTVhNDQ3YTliY2RjOGIxMjFjMjY0ZWQ5OTQ1ZTM1ZWI5MjUxYjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsVGVzdC5jcHAKQEAgLTUyLDggKzUyLDggQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxU
ZXN0LCB2ZXJpZnlUaWxpbmdDb21wbGV0ZUFuZE5vT3ZlcmxhcCkKICAgICBsYXllci0+c2V0Qm91
bmRzKGxheWVyU2l6ZSk7CiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1
YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBib29sIHVzZWRD
aGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwg
c2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICBib29sIGhhZE1p
c3NpbmdUaWxlcyA9IGZhbHNlOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICB2ZXJpZnlRdWFk
c0V4YWN0bHlDb3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCB2aXNpYmxlTGF5ZXJSZWN0
KTsKIH0KQEAgLTc0LDggKzc0LDggQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2
ZXJpZnlDb3JyZWN0QmFja2dyb3VuZENvbG9ySW5RdWFkKQogICAgIGxheWVyLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IodGVzdENvbG9yKTsKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hh
cmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIGJvb2wg
dXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOworICAgIGJvb2wg
aGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxs
ZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFTU0VS
VF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAxVSk7CiAgICAgRVhQRUNUX0VRKHF1
YWRDdWxsZXIucXVhZExpc3QoKVswXS0+dG9Tb2xpZENvbG9yRHJhd1F1YWQoKS0+Y29sb3IoKSwg
dGVzdENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rp
bGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggNTdjYWE3ZGMxNzE0YTFmOWU1MmU1MjFjNThkNDAz
OTI1MzUzN2JiOS4uNmI5ZGI2NTgxMTg2MGI0ZjQ1YWU3ZjI0ODk1NzdkZmUxODVmYjgxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBs
VGVzdC5jcHAKQEAgLTcyLDggKzcyLDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1w
dHlRdWFkTGlzdCkKICAgICAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3Jl
YXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVy
VGV4ZWxzKTsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwogICAgICAgICBP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVT
aGFyZWRRdWFkU3RhdGUoKTsKLSAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7
Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUu
Z2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOworICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9
IGZhbHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVh
ZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBu
dW1UaWxlcyA9IG51bVRpbGVzWCAqIG51bVRpbGVzWTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRD
dWxsZXIucXVhZExpc3QoKS5zaXplKCksIG51bVRpbGVzKTsKICAgICB9CkBAIC04NSw4ICs4NSw4
IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAKICAgICAgICAg
TW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwogICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsK
LSAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2Vy
Ym9hcmQpOworICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOworICAgICAgICBs
YXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRN
aXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNp
emUoKSwgMHUpOwogICAgIH0KIApAQCAtOTksOCArOTksOCBAQCBURVNUKENDVGlsZWRMYXllcklt
cGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1
bGxlcjsKICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUg
PSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNr
ZXJib2FyZCA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwg
c2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICAgICAgYm9vbCBo
YWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRD
dWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAg
RVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDB1KTsKICAgICB9CiAKQEAg
LTExMSw4ICsxMTEsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0
KQogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKICAgICAgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVk
UXVhZFN0YXRlKCk7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAg
ICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgp
LCB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxz
ZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0
ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIu
cXVhZExpc3QoKS5zaXplKCksIDB1KTsKICAgICB9CiB9CkBAIC0xMzIsMTAgKzEzMiwxMCBAQCBU
RVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAgICAgLy8gTm8gY2hl
Y2tlcmJvYXJkaW5nCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7
Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAgICAgICBsYXllci0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tl
cmJvYXJkKTsKKyAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKKyAgICAgICAg
bGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFk
TWlzc2luZ1RpbGVzKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5z
aXplKCksIDR1KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHVzZWRDaGVja2VyYm9hcmQpOworICAg
ICAgICBFWFBFQ1RfRkFMU0UoaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKICAgICAgICAg
ICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCk7CkBAIC0xNDgsMTIgKzE0OCwxMiBAQCBURVNUKENDVGlsZWRM
YXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAgICAgLy8gQWxsIGNoZWNrZXJib2FyZGlu
ZwogICAgIHsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBi
b29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRz
KHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKHVzZWRDaGVja2VyYm9hcmQpOworICAgICAgICBib29sIGhhZE1p
c3NpbmdUaWxlcyA9IGZhbHNlOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICBFWFBF
Q1RfVFJVRShoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5x
dWFkTGlzdCgpLnNpemUoKSwgNHUpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1
YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIEVYUEVDVF9FUShx
dWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlNvbGlkQ29s
b3IpOworICAgICAgICAgICAgRVhQRUNUX05FKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+bWF0
ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KTsKICAgICB9CiB9CiAKQEAgLTE2NSw4
ICsxNjUsOCBAQCBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gZ2V0UXVhZHMo
Q0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpegogCiAgICAgTW9ja0NDUXVhZEN1bGxl
ciBxdWFkQ3VsbGVyKHF1YWRzKTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJl
ZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICBib29sIHVz
ZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICBib29sIGhh
ZE1pc3NpbmdUaWxlcyA9IGZhbHNlOworICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CiAgICAgcmV0dXJuIHNo
YXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCk7IC8vIFRoZSBzaGFyZWQgZGF0YSBtdXN0IGJlIG93bmVk
IGFzIGxvbmcgYXMgdGhlIHF1YWQgbGlzdCBleGlzdHMuCiB9CiAKQEAgLTI4NCw4ICsyODQsOCBA
QCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCiAg
ICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXIt
PmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogCiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVh
ZEN1bGxlcjsKLSAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVz
ZWRDaGVja2VyYm9hcmQpOworICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwor
ICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdl
dCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFk
TGlzdCgpLnNpemUoKSwgbnVtVGlsZXMpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsgKytpKQpAQCAtMzAwLDExICszMDAsMTEg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQog
CiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5
ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAgICAg
ICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1
c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsK
KyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5n
ZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIEVYUEVDVF9F
UShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlNvbGlk
Q29sb3IpOworICAgICAgICAgICAgRVhQRUNUX05FKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+
bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KTsKIAogICAgICAgICB2ZXJpZnlR
dWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCBjbGlwUmVjdCk7CiAg
ICAgfQpAQCAtMzE3LDE0ICszMTcsMTQgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFj
a2dyb3VuZENvdmVyc1ZpZXdwb3J0KQogCiAgICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAg
ICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNr
ZXJib2FyZCA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwg
c2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICAgICAgYm9vbCBo
YWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKKyAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRD
dWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgICAg
ICB1bnNpZ25lZCBudW1Db250ZW50VGlsZXMgPSAwLCBudW1HdXR0ZXJUaWxlcyA9IDA7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsg
KytpKSB7CiAgICAgICAgICAgICBpZiAocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlh
bCgpID09IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCkKICAgICAgICAgICAgICAgICBudW1Db250
ZW50VGlsZXMrKzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHF1YWRDdWxsZXIucXVhZExpc3QoKVtp
XS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKQorICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIG51bUd1dHRlclRpbGVzKys7CiAgICAgICAgIH0KICAgICAgICAg
RVhQRUNUX0VRKG51bUNvbnRlbnRUaWxlcywgbnVtVGlsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBmNjE3ZTZhNzli
ZWE0ZTkzMDM4YWQ1Yjg0MDRhZmVlMWI1OTdmZDZmLi4wZGRlN2I0Y2M3NDIwYzk3Y2ZiNWQxNWJj
MWY5MjkzODhhOGExNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTIyLDYgKzUyMiw3IEBAIFRFU1RfRihMYXllckNo
cm9taXVtVGVzdCwgY2hlY2tQcm9wZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5
ZXItPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRl
c3RMYXllci0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldERlYnVnTmFtZSgiVGVz
dCBMYXllciIpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhB
VklPUigxLCB0ZXN0TGF5ZXItPnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoIXRl
c3RMYXllci0+ZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcygpKSk7CiAKICAgICAvLyBU
aGUgYWJvdmUgdGVzdHMgc2hvdWxkIG5vdCBoYXZlIGNhdXNlZCBhIGNoYW5nZSB0byB0aGUgbmVl
ZHNEaXNwbGF5IGZsYWcuCiAgICAgRVhQRUNUX0ZBTFNFKHRlc3RMYXllci0+bmVlZHNEaXNwbGF5
KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136730</attachid>
            <date>2012-04-11 12:55:23 -0700</date>
            <delta_ts>2012-04-11 13:11:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83241-20120411125522.patch</filename>
            <type>text/plain</type>
            <size>12944</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYzBkMWVhNTY1ODM5
ZDExNzc5M2JmODhiYmVhODJmOTVkYTk4OS4uNWE0OWNmODlkZmNkZWRkYjg4ZGUzOTBmOTc3NDA2
N2U2NjYyZTBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtNzE2OSw2ICs3MTY5LDUxIEBACiAgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQpOgogICAgICAgICAoUGFn
ZSk6CiAKKzIwMTItMDQtMTAgIEpvaG4gQmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBFbnN1cmUgUmF0ZUxpbWl0ZXIgd2FpdHMgZm9yIFN3YXBidWZm
ZXJzIGNvbXBsZXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2Ugd2VyZSB3YWl0aW5nIG9ubHkgb24gdGhlIGNhbnZhcyBjb250ZXh0LCB3aGljaCB3
aXRoIHRoZSBuZXcgR1BVCisgICAgICAgIHNjaGVkdWxpbmcgd2FzIGNhdXNpbmcgdGhlIFJhdGVM
aW1pdGVyIG5vdCB0byByYXRlbGltaXQgZW5vdWdoLiBXZQorICAgICAgICBuZWVkIHRvIGluc2Vy
dCBuby1vcCBjb21tYW5kcyBpbiB0aGUgY29tcG9zaXRvciBjb250ZXh0LCBzbyB0aGF0IHdlJ2xs
CisgICAgICAgIHdhaXQgZm9yIHRoZSBjYW52YXMgY29udGV4dCBhbmQgU3dhcEJ1ZmZlcnMgYXMg
d2VsbC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRvTm9PcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmF0ZUxp
bWl0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmF0ZUxpbWl0ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYXRlTGltaXRlcjo6UmF0ZUxpbWl0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmF0ZUxpbWl0ZXI6OnJhdGVMaW1pdENvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1JhdGVMaW1pdGVyLmg6CisgICAgICAgIChSYXRlTGltaXRlckNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJhdGVMaW1pdGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzdGFydFJhdGVMaW1pdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmF0ZUxpbWl0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmZvcmNlTm9PcENvbW1h
bmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQ
cm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpmb3JjZU5vT3BDb21t
YW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6Zm9yY2VOb09wQ29tbWFuZE9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94
eSk6CisKIDIwMTItMDQtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MzU5MDI5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgzMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAppbmRleCBmNGE1MDBhODczOWExMGNhNzc1MGUyZjhjODg4ZDgwZWY0YzZhMzM3Li5kMGI3
OTUwZGNjMmJlNWQyODRmODYyMjNjNWU2ODMxZWRhYzQ5MjZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQzMCw2ICs0MzAsMTIgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKCkKICAgICBHTEMobV9jb250ZXh0LmdldCgp
LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0Nv
bnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSkpOwogfQogCit2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZG9Ob09wKCkKK3sKKyAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQt
PmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKKyAg
ICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmZsdXNoKCkpOworfQorCiB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiBy
ZW5kZXJQYXNzKQogewogICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSA9IHJlbmRl
clBhc3MtPnRhcmdldFN1cmZhY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
aW5kZXggN2NiOWViNTZhMjM1M2JhODBkNzIwMDExOGIyOTZhOTJkYjgwZGQ4YS4uMjk0NzQ5MGQw
ZTViNDRkM2YyM2FlMGI0NDQzNThhYjczZWY0MWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2FpdHMgZm9y
IHJlbmRlcmluZyB0byBmaW5pc2gKICAgICB2b2lkIGZpbmlzaCgpOwogCisgICAgdm9pZCBkb05v
T3AoKTsKICAgICAvLyBwdXRzIGJhY2tidWZmZXIgb25zY3JlZW4KICAgICBib29sIHN3YXBCdWZm
ZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JhdGVMaW1pdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JhdGVMaW1pdGVyLmNwcAppbmRleCA1
NzEyNjNlNzdmMDFkYWZjMWZkNjk3NWUwNjg3MzYwNGIwNGU3MDdmLi5mZGFkZjkzYjQzYmQ0MGU2
Zjk0YTNjN2ZhMDAwMTBjN2ZiYjI1OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SYXRlTGltaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmF0ZUxpbWl0ZXIuY3BwCkBAIC0zNSwxNCAr
MzUsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFJhdGVMaW1pdGVy
PiBSYXRlTGltaXRlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorUGFzc1Jl
ZlB0cjxSYXRlTGltaXRlcj4gUmF0ZUxpbWl0ZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgUmF0ZUxpbWl0ZXJDbGllbnQgKmNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJhdGVMaW1pdGVyKGNvbnRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJh
dGVMaW1pdGVyKGNvbnRleHQsIGNsaWVudCkpOwogfQogCi1SYXRlTGltaXRlcjo6UmF0ZUxpbWl0
ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCitSYXRlTGltaXRlcjo6UmF0ZUxpbWl0ZXIo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFJhdGVMaW1pdGVyQ2xpZW50ICpjbGllbnQpCiAg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fdGltZXIodGhpcywgJlJhdGVMaW1pdGVy
OjpyYXRlTGltaXRDb250ZXh0KQorICAgICwgbV9jbGllbnQoY2xpZW50KQogewogICAgIEFTU0VS
VChjb250ZXh0KTsKICAgICBBU1NFUlQoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKQEAgLTcw
LDYgKzcxLDcgQEAgdm9pZCBSYXRlTGltaXRlcjo6cmF0ZUxpbWl0Q29udGV4dChUaW1lcjxSYXRl
TGltaXRlcj4qKQogCiAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0
aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
KTsKIAorICAgIG1fY2xpZW50LT5yYXRlTGltaXQoKTsKICAgICBleHRlbnNpb25zLT5yYXRlTGlt
aXRPZmZzY3JlZW5Db250ZXh0Q0hST01JVU0oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmF0ZUxpbWl0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JhdGVMaW1pdGVyLmgKaW5kZXggZDRl
ODI0ZDYwNmVhMDE4MWJkNDAwNjg1ZDkxMzVmMTVlMTA5OTQ3NC4uNThlNWU3ZTRkZmEyZGNhMzBj
ZDVkNmI5NWU3N2NmMjYwZDE1OWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmF0ZUxpbWl0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SYXRlTGltaXRlci5oCkBAIC0zNiwyMSArMzYsMjcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAorY2xh
c3MgUmF0ZUxpbWl0ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCByYXRlTGlt
aXQoKSA9IDA7Cit9OworCiAvLyBBIGNsYXNzIGNvbnRhaW5pbmcgYSB0aW1lciwgd2hpY2ggY2Fs
bHMgcmF0ZUxpbWl0Q0hST01JVU0gb24gZXhwaXJ5CiBjbGFzcyBSYXRlTGltaXRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJhdGVMaW1pdGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmF0ZUxpbWl0ZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCopOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJhdGVMaW1pdGVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBSYXRlTGlt
aXRlckNsaWVudCopOwogICAgIH5SYXRlTGltaXRlcigpOwogCiAgICAgdm9pZCBzdGFydCgpOwog
ICAgIHZvaWQgc3RvcCgpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJhdGVMaW1pdGVyKEdy
YXBoaWNzQ29udGV4dDNEKik7CisgICAgZXhwbGljaXQgUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250
ZXh0M0QqLCBSYXRlTGltaXRlckNsaWVudCopOwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gbV9jb250ZXh0OwogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNSYXRlTGltaXRpbmdFeHRl
bnNpb247CiAgICAgVGltZXI8UmF0ZUxpbWl0ZXI+IG1fdGltZXI7CiAgICAgdm9pZCByYXRlTGlt
aXRDb250ZXh0KFRpbWVyPFJhdGVMaW1pdGVyPiopOworICAgIFJhdGVMaW1pdGVyQ2xpZW50ICpt
X2NsaWVudDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDhk
NDdhNzk5YTlkNDJkZjlkNTZmY2M0OGI2M2UxYmU1ZWJhMjRlNWMuLjhkZGJlMGJlMGNiNjUyNzA2
ODY4MTg2NjM5OGJhNTU4Y2I4NzQzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cApAQCAtNTgzLDEyICs1ODMsMTkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnN0YXJ0UmF0ZUxp
bWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgaWYgKGl0ICE9IG1fcmF0ZUxp
bWl0ZXJzLmVuZCgpKQogICAgICAgICBpdC0+c2Vjb25kLT5zdGFydCgpOwogICAgIGVsc2Ugewot
ICAgICAgICBSZWZQdHI8UmF0ZUxpbWl0ZXI+IHJhdGVMaW1pdGVyID0gUmF0ZUxpbWl0ZXI6OmNy
ZWF0ZShjb250ZXh0KTsKKyAgICAgICAgUmVmUHRyPFJhdGVMaW1pdGVyPiByYXRlTGltaXRlciA9
IFJhdGVMaW1pdGVyOjpjcmVhdGUoY29udGV4dCwgdGhpcyk7CiAgICAgICAgIG1fcmF0ZUxpbWl0
ZXJzLnNldChjb250ZXh0LCByYXRlTGltaXRlcik7CiAgICAgICAgIHJhdGVMaW1pdGVyLT5zdGFy
dCgpOwogICAgIH0KIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJhdGVMaW1pdCgpCit7Cisg
ICAgLy8gRm9yY2UgYSBuby1vcCBjb21tYW5kIG9uIHRoZSBjb21wb3NpdG9yIGNvbnRleHQsIHNv
IHRoYXQgYW55IHJhdGVsaW1pdGluZyBjb21tYW5kcyB3aWxsIHdhaXQgZm9yIHRoZSBjb21wb3Np
dGluZworICAgIC8vIGNvbnRleHQsIGFuZCB0aGVyZWZvcmUgZm9yIHRoZSBTd2FwQnVmZmVycy4K
KyAgICBtX3Byb3h5LT5mb3JjZU5vT3BDb21tYW5kKCk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAg
UmF0ZUxpbWl0ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yYXRlTGltaXRlcnMuZmluZChjb250ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZjc4ODlmZGE0NzI0MTE1MDg5NGFk
MTc2ZjFkZjg1ZTk3ZDIyZTliOS4uNWI4OGE2YmYzNzUzNDgzYzIzYzUyOTQxNzM2ZjRlODk5ZThl
YjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTEyNCw3ICsxMjQsOCBAQCBz
dHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyB7CiAgICAgaW50IG1heFRleHR1cmVTaXpl
OwogfTsKIAotY2xhc3MgQ0NMYXllclRyZWVIb3N0IHsKKworY2xhc3MgQ0NMYXllclRyZWVIb3N0
IDogUmF0ZUxpbWl0ZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDTGF5ZXJU
cmVlSG9zdCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0
PiBjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiwgY29uc3QgQ0NTZXR0aW5ncyYpOwpAQCAt
MjE2LDYgKzIxNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29u
c3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFw
aGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4
dDNEKik7CisgICAgdm9pZCByYXRlTGltaXQoKTsKIAogICAgIGJvb2wgcmVxdWVzdFBhcnRpYWxU
ZXh0dXJlVXBkYXRlKCk7CiAgICAgdm9pZCBkZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQoUGFzc093
blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDI2NzgwNTQ3NThhZjMwZTli
ZTI1NWUwYzQyYWNjOGQzYTU4YTg5MjIuLjdjY2VlOWY2OTBiZTYzYzdmNGI1ZWQ0ZjAzYTlkNTQ0
NmMzOWJjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTg3LDYgKzg3LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRo
ZSBwcm94eS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQg
YmVmb3JlIGRlbGV0aW5nIHRoZSBwcm94eS4KIAorICAgIHZpcnR1YWwgdm9pZCBmb3JjZU5vT3BD
b21tYW5kKCkgPSAwOworCiAgICAgLy8gTWF4aW11bSBudW1iZXIgb2Ygc3ViLXJlZ2lvbiB0ZXh0
dXJlIHVwZGF0ZXMgc3VwcG9ydGVkIGZvciBlYWNoIGNvbW1pdC4KICAgICB2aXJ0dWFsIHNpemVf
dCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggOTIyM2M1ZjZiMDBkMWVkZDFlYTYzNDYwYzlm
MDk5OWE0ZGZkYmQwOS4uZTk4ZTZkY2E1NzE2N2Y3NDRmMmNjNjc3MGZlYmNkOGQyZjExOTVjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI4MSw2ICsyODEs
MTUgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiAg
ICAgfQogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmZvcmNlTm9PcENvbW1hbmQoKQor
eworICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CisgICAgICAg
IGlmIChtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+ZG9Ob09wKCk7CisgICAgfQorfQorCiBib29sIEND
U2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmlu
ZGV4IDlkZWM0ZjQ3M2VkNTkwYjliZDQ4MGVjNmNmMTJkZjY3MTVhZWIxNjAuLmI4YzE5OTJlZWNl
MGZlOGVjYmZmZjU5MmQxNDBjNWNhMzY3MTYxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dGFydCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBmb3JjZU5vT3BDb21tYW5kKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VD
b250ZXh0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCmluZGV4IDYzOGVjZDI1NTdkYzY4ODE0NDA3MzA3MjNkYjlmYWNiNjQ4MDA0NTMuLjExMDUw
ZWViNDE4ZTk5YzNlOTViMDQ0NmM0OWRlZDg2YzllODExMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCkBAIC0zODAsNiArMzgwLDIxIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgp
CiAgICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6Zm9yY2VO
b09wQ29tbWFuZCgpCit7CisgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICBD
Q1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6Zm9yY2VOb09wQ29tbWFuZE9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICBjb21wbGV0aW9uLndhaXQoKTsKK30KKwor
dm9pZCBDQ1RocmVhZFByb3h5Ojpmb3JjZU5vT3BDb21tYW5kT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uKQoreworICAgIGlmIChtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT5kb05v
T3AoKTsKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKworCiB2b2lkIENDVGhyZWFkUHJv
eHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVu
ZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5k
ZXggNzA3ZjRlMTUxZDMwNTMxYTZkYTQ2NWI1MzE3MGM4MzJiZmVjNzlmOC4uZTg2MzZmMjQzMDU1
M2U1N2Y2NWZlNDIwMTY0MTY4YzJmNzJhMTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApA
QCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHNpemVf
dCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZm9yY2VOb09wQ29tbWFuZCgpIE9WRVJSSURFOwogCiAgICAgLy8gQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29u
dGV4dE9uSW1wbFRocmVhZCgpIE9WRVJSSURFOwpAQCAtMTM0LDYgKzEzNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRGdWxsUm9vdExheWVyRGFtYWdlT25JbXBsVGhyZWFkKCk7CiAgICAgdm9p
ZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBHcmFwaGlj
c0NvbnRleHQzRCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKik7CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7CisgICAgdm9pZCBm
b3JjZU5vT3BDb21tYW5kT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAKICAgICAv
LyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgogICAgIGJvb2wgbV9hbmltYXRlUmVxdWVz
dGVkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>