<?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>175734</bug_id>
          
          <creation_ts>2017-08-18 12:28:26 -0700</creation_ts>
          <short_desc>Web Inspector: Capture Element Screenshot looks fuzzy</short_desc>
          <delta_ts>2021-03-17 15:06:56 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>rmondello</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340178</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-08-18 12:28:26 -0700</bug_when>
    <thetext>It appears to capture to 1x on a Retina display.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340180</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-08-18 12:28:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/33803377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378954</commentid>
    <comment_count>2</comment_count>
      <attachid>328662</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-06 17:31:32 -0800</bug_when>
    <thetext>Created attachment 328662
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378956</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-06 17:34:09 -0800</bug_when>
    <thetext>Attachment 328662 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:9:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378961</commentid>
    <comment_count>4</comment_count>
      <attachid>328662</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-12-06 17:38:48 -0800</bug_when>
    <thetext>Comment on attachment 328662
WIP

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

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:108
&gt; +    String toDataURL(const String&amp; mimeType, std::optional&lt;double&gt; quality = std::nullopt, ScaleBehavior = Scaled) const;

It&apos;s hard to wrap my head around what &quot;Scaled&quot; means. Does it mean use the logical size, or the physical size?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378965</commentid>
    <comment_count>5</comment_count>
      <attachid>328662</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-12-06 17:43:06 -0800</bug_when>
    <thetext>Comment on attachment 328662
WIP

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

&gt;&gt; Source/WebCore/platform/graphics/ImageBuffer.h:108
&gt;&gt; +    String toDataURL(const String&amp; mimeType, std::optional&lt;double&gt; quality = std::nullopt, ScaleBehavior = Scaled) const;
&gt; 
&gt; It&apos;s hard to wrap my head around what &quot;Scaled&quot; means. Does it mean use the logical size, or the physical size?

Maybe better terminology would be around &quot;preserve resolution&quot; or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379010</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-06 20:53:40 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Comment on attachment 328662 [details]
&gt; WIP
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328662&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageBuffer.h:108
&gt; &gt; +    String toDataURL(const String&amp; mimeType, std::optional&lt;double&gt; quality = std::nullopt, ScaleBehavior = Scaled) const;
&gt; 
&gt; It&apos;s hard to wrap my head around what &quot;Scaled&quot; means. Does it mean use the
&gt; logical size, or the physical size?

The existing uses are that Scaled is the logical size and Unscaled is the internal size. I was going to introduce my own enum, then I noticed this other one being used in the exact same way, so I used it instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383379</commentid>
    <comment_count>7</comment_count>
      <attachid>329844</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-19 15:50:39 -0800</bug_when>
    <thetext>Created attachment 329844
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383386</commentid>
    <comment_count>8</comment_count>
      <attachid>329846</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-19 15:53:40 -0800</bug_when>
    <thetext>Created attachment 329846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383405</commentid>
    <comment_count>9</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-19 16:31:14 -0800</bug_when>
    <thetext>webkit-patch is messing up my patches, but the correct one is up for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383420</commentid>
    <comment_count>10</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-19 16:47:18 -0800</bug_when>
    <thetext>Per smfr, will put up new patch with enum class PreserveResolution { Yes, No }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383422</commentid>
    <comment_count>11</comment_count>
      <attachid>329844</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-19 16:49:52 -0800</bug_when>
    <thetext>Comment on attachment 329844
Proposed Fix

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

Inspector parts look good to me, someone else should probably review the WebCore portions.

&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:8
&gt; +    window.snapshotElement = document.getElementById(&apos;element-to-snapshot&apos;);

Style: Some single quotes in this test that could be double quotes.

&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:16
&gt; +    // This function is adapted from an answer on the following page:
&gt; +    // https://stackoverflow.com/questions/15327959/get-height-and-width-dimensions-from-base64-png/41152378#41152378

I don&apos;t really think we need to link to the stack overflow. Does this gain us anything?

If we want to carry over the explanation of what this is doing we can attribute it and reformat + improve it here. For example:

    A PNG file starts with the bytes 89 50 4E 47 0D 01 1A 0A, followed by the
    IHDR chunk that contains the size. IHDR’s content starts with a 4-byte width
    and a 4-byte height, so a PNG’s width and height are always bytes 16-24.

&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:28
&gt; +    let suite = InspectorTest.createAsyncSuite(&quot;Page.snapshot&quot;);

This tests Page.snapshotNode and maybe could get an even better name.

&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:41
&gt; +            // Peek into the data URL&apos;s raw PNG data to get the size. For various reasons,
&gt; +            // setting the &apos;src&apos; attribute of an &lt;img&gt; element is unreliable under WKTR.

I don&apos;t find this comment useful.

&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:58
&gt; +&lt;p id=&quot;element-to-snapshot&quot; style=&quot;height: 198px; width: 198px; border: 1px solid black;&quot;&gt;Test for DOM.snapshotNode on HiDPI systems.&lt;/p&gt;

Typo: Says &quot;DOM.snapshotNode&quot; but test &quot;Page.snapshotNode&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385923</commentid>
    <comment_count>12</comment_count>
      <attachid>329844</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-01-04 13:35:57 -0800</bug_when>
    <thetext>Comment on attachment 329844
Proposed Fix

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

&gt;&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:41
&gt;&gt; +            // setting the &apos;src&apos; attribute of an &lt;img&gt; element is unreliable under WKTR.
&gt; 
&gt; I don&apos;t find this comment useful.

I spent a lot of time trying to do it that way, and I want to remember why it was a dead end. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385927</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-01-04 13:50:36 -0800</bug_when>
    <thetext>(In reply to Brian Burg from comment #12)
&gt; Comment on attachment 329844 [details]
&gt; Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=329844&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:41
&gt; &gt;&gt; +            // setting the &apos;src&apos; attribute of an &lt;img&gt; element is unreliable under WKTR.
&gt; &gt; 
&gt; &gt; I don&apos;t find this comment useful.
&gt; 
&gt; I spent a lot of time trying to do it that way, and I want to remember why
&gt; it was a dead end. =)

You make it sound like setting the src doesn&apos;t work. It does, but you probably have to listen for the &apos;load&apos; event to fix the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385931</commentid>
    <comment_count>14</comment_count>
      <attachid>329844</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-01-04 14:18:42 -0800</bug_when>
    <thetext>Comment on attachment 329844
Proposed Fix

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

&gt;&gt;&gt;&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:41
&gt;&gt;&gt;&gt; +            // setting the &apos;src&apos; attribute of an &lt;img&gt; element is unreliable under WKTR.
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t find this comment useful.
&gt;&gt; 
&gt;&gt; I spent a lot of time trying to do it that way, and I want to remember why it was a dead end. =)
&gt; 
&gt; You make it sound like setting the src doesn&apos;t work. It does, but you probably have to listen for the &apos;load&apos; event to fix the test.

I did try that approach (listen for &apos;load&apos;) but the width/height properties of the image element did not match what would be shown when running the test manually under mini browser or Safari. I didn&apos;t have time to further investigate why that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385952</commentid>
    <comment_count>15</comment_count>
      <attachid>330491</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-01-04 15:16:56 -0800</bug_when>
    <thetext>Created attachment 330491
Proposed Fix (review feedback applied)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385969</commentid>
    <comment_count>16</comment_count>
      <attachid>330491</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-01-04 15:41:09 -0800</bug_when>
    <thetext>Comment on attachment 330491
Proposed Fix (review feedback applied)

ImageBuffer bits look OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385974</commentid>
    <comment_count>17</comment_count>
      <attachid>330491</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-01-04 15:53:19 -0800</bug_when>
    <thetext>Comment on attachment 330491
Proposed Fix (review feedback applied)

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

r=me since smfr is happy with the rest

&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:17
&gt; +    // IHDR chunk that contains the size. IHDRâs content starts with a 4-byte width
&gt; +    // and a 4-byte height, so a PNGâs width and height are always bytes 16-24.

Might want to cleanup these single quotes: &quot;IHDRâs&quot; and &quot;PNGâs&quot;

&gt; LayoutTests/inspector/page/hidpi-snapshot-size.html:35
&gt; +            let targetElementId = await WI.domTreeManager.querySelector(documentNode.id, &quot;#element-to-snapshot&quot;);

Nit: I&apos;d name this `targetNodeId` instead of ElementId.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385977</commentid>
    <comment_count>18</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-01-04 16:00:31 -0800</bug_when>
    <thetext>Committed r226425: &lt;https://trac.webkit.org/changeset/226425&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328662</attachid>
            <date>2017-12-06 17:31:32 -0800</date>
            <delta_ts>2017-12-19 15:50:38 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-175734-20171206173131.patch</filename>
            <type>text/plain</type>
            <size>13479</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQwNzQzOWFmYTdjNjc0
ZDUyZmFmOGRlYzY5OGFkNDE0YmQ1NTQ0MS4uYjgyM2E3ODRiMjM4MjBlYTc3NGIyN2Q0MWZhMzI0
ZjkxZDQ5YWZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTEyLTA2ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhcHR1
cmUgRWxlbWVudCBTY3JlZW5zaG90IGxvb2tzIGZ1enp5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMzODAzMzc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpzbmFwc2hvdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50
OjpzbmFwc2hvdFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUJ1ZmZlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRh
VVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMIGNv
bnN0KToKKwogMjAxNy0xMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiBzaG91bGQgaGFuZGxlIHRoZSBj
YXNlIG9mIHRlcm1pbmF0ZWQgd29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDJjYTRkZWI5YzA3NmVj
NWRmMzBiYTYxYWZkMTE3MTcxYWJjMjMyZjguLmRhZjk4ZmFmZTQ2NjZhYTVhNzA5ZDc2NTVhZTQw
ZTc3MTdkMmZmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50
IG5vZGVJZCwgU3RyaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKm91dERhdGFVUkwg
PSBzbmFwc2hvdC0+dG9EYXRhVVJMKEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvcG5nIikpOworICAgICpv
dXREYXRhVVJMID0gc25hcHNob3QtPnRvRGF0YVVSTChBU0NJSUxpdGVyYWwoImltYWdlL3BuZyIp
LCBzdGQ6Om51bGxvcHQsIFVuc2NhbGVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNuYXBzaG90UmVjdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCB4LCBpbnQgeSwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBTdHJpbmcmIGNvb3JkaW5hdGVTeXN0ZW0sIFN0cmlu
Zyogb3V0RGF0YVVSTCkKQEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c25hcHNob3RSZWN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IHgsIGludCB5LCBp
bgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKm91dERhdGFVUkwgPSBzbmFwc2hvdC0+
dG9EYXRhVVJMKEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvcG5nIikpOworICAgICpvdXREYXRhVVJMID0g
c25hcHNob3QtPnRvRGF0YVVSTChBU0NJSUxpdGVyYWwoImltYWdlL3BuZyIpLCBzdGQ6Om51bGxv
cHQsIFVuc2NhbGVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFyY2hpdmUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBTdHJpbmcqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAxZDViMDczNzJkNmQzMWRkOThi
NDIzOWQ2ZGU4ZjJiYmJkYzVjYjUxLi5iZmY1NmQ1YTlmOTc2NzdjNzRjYTM1OWRjMjdkMGUzZjc0
NWE0Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXRCeXRlQXJyYXko
Y29uc3QgVWludDhDbGFtcGVkQXJyYXkmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGJ1ZmZlckZv
cm1hdCwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxD
b29yZGluYXRlU3lzdGVtKTsKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2so
KTsKLSAgICAKLSAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0LCBDb29yZGluYXRlU3lz
dGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OworCisgICAgU3RyaW5nIHRvRGF0
YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSA9IHN0ZDo6bnVsbG9wdCwgU2NhbGVCZWhhdmlvciA9IFNjYWxlZCkgY29uc3Q7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHRvQkdSQURhdGEoKSBjb25zdDsKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBib29sJiBzdWNjZXNzKTsK
ICNpZiBVU0UoQ0cpCiAgICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIGJvb2wmIHN1Y2Nl
c3MpOwotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdDsKKyAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiB0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSwgU2NhbGVCZWhhdmlvcikgY29uc3Q7CiAjZWxpZiBVU0UoRElS
RUNUMkQpCiAgICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
LCBib29sJiBzdWNjZXNzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCBjZDZk
MDFjNzhjZjk0NzkyNzMwY2NhYThlNTRmNzUxZDlkNTFiZmI0Li4wYzJiOGJmZDhjNDkyYjhiNGM0
OTE2ODA1ZGFhNzk1YmI0MmY0YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNTY0LDcg
KzU2NCw3IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2Us
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFZlY3Rvcjx1CiAgICAgcmV0dXJuIGNhaXJvX3N1cmZh
Y2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShpbWFnZSwgd3JpdGVGdW5jdGlvbiwgb3V0cHV0KSA9PSBD
QUlST19TVEFUVVNfU1VDQ0VTUzsKIH0KIAotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIENv
b3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgU2NhbGVC
ZWhhdmlvcikgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlID0gdG9E
YXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsKICAgICBpZiAoZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKaW5kZXggNDAzZTY1ZTE0ZGFhNjFjM2YwY2QxZmFmMjNlNGU1NmUzZTg3YWZlNS4u
ODgzNGVjMjdkZjMyYjAyZjAyYzk5MGUzMTJkNjUzNTg5MzM5MDY2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAg
LTUwOCwyMSArNTA4LDIxIEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZGF0YVZlY3RvcihDRkRh
dGFSZWYgY2ZEYXRhKQogICAgIHJldHVybiBkYXRhOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXI6
OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1N0cmluZyBJbWFnZUJ1ZmZlcjo6dG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBTY2FsZUJlaGF2aW9yIHNjYWxlQmVoYXZpb3IpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8g
ZGF0YSA9IHRvQ0ZEYXRhKG1pbWVUeXBlLCBxdWFsaXR5KSkKKyAgICBpZiAoYXV0byBkYXRhID0g
dG9DRkRhdGEobWltZVR5cGUsIHF1YWxpdHksIHNjYWxlQmVoYXZpb3IpKQogICAgICAgICByZXR1
cm4gZGF0YVVSTChkYXRhLmdldCgpLCBtaW1lVHlwZSk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiZGF0YTosIik7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9EYXRhKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25z
dAogewotICAgIGlmIChhdXRvIGRhdGEgPSB0b0NGRGF0YShtaW1lVHlwZSwgcXVhbGl0eSkpCisg
ICAgaWYgKGF1dG8gZGF0YSA9IHRvQ0ZEYXRhKG1pbWVUeXBlLCBxdWFsaXR5LCBTY2FsZWQpKQog
ICAgICAgICByZXR1cm4gZGF0YVZlY3RvcihkYXRhLmdldCgpKTsKICAgICByZXR1cm4geyB9Owog
fQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0CitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFNjYWxlQmVoYXZpb3Igc2NhbGVC
ZWhhdmlvcikgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIApAQCAtNTQ3LDcgKzU0Nyw3
IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyOjp0b0NGRGF0YShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShsb2dpY2FsU2l6ZSgpLndp
ZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDMyLCA0ICogbG9naWNhbFNpemUoKS53
aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwg
a0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwg
a0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwotICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9u
U2NhbGUgPT0gMSkgeworICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBz
Y2FsZUJlaGF2aW9yID09IFVuc2NhbGVkKSB7CiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUlt
YWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFn
ZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUoKSk7CiAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1
ZmZlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VC
dWZmZXJHdGsuY3BwCmluZGV4IDhjZjBkZTVjMTY5MzVmZDEyYjEyNTg5OTA0OTQ2NjUwNWUzMjU0
OTUuLmU1NDhmNzhjMTIyM2QzODhkMTgwMDY3MTE3OWY5M2IzYmEzOTViOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3Rr
LmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6bwogICAgIHJldHVy
biAhZXJyb3I7CiB9CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lz
dGVtKSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFNjYWxlQmVoYXZpb3IpIGNv
bnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YSA9IHRvRGF0YShtaW1lVHlwZSwg
cXVhbGl0eSk7CiAgICAgaWYgKGltYWdlRGF0YS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHAKaW5kZXggN2NmZTU4ZWFkODdiZGFlNGM3ZTVkM2RiM2ZkYjg1ZTI1MjAwNTZlYS4uZmJl
ZjU0NGYzZDY4NTY5YjMyZDhlMjdkNGRmNDU2Yzg2OWEwMmVmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJELmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJh
eShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpCiAgICAg
bV9kYXRhLnB1dERhdGEoc291cmNlLCBidWZmZXJGb3JtYXQsIHNjYWxlZFNvdXJjZVNpemUsIHNj
YWxlZFNvdXJjZVJlY3QsIGRlc3RQb2ludCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCAxKTsKIH0KIAotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBDb29yZGluYXRlU3lzdGVt
KSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+LCBTY2FsZUJlaGF2aW9yKSBjb25zdAogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGF0YTosIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVl
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCmluZGV4IDY3ZjNiZTk0NmFmNTQxYTVjZjQxYjc2MzJkMTNi
MWQ2ZmY2ZWM4ODcuLjFkMDQyMTY2YzBhYmFlNDNmOTk4ZWYxOWFkYTE5ZWJkNzIxZDBiNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0RPTVRyZWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCkBAIC00MTEsMTQgKzQxMSwyMCBAQCBX
SS5ET01UcmVlTWFuYWdlciA9IGNsYXNzIERPTVRyZWVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBxdWVyeVNlbGVjdG9yKG5vZGVJZCwgc2VsZWN0b3Jz
LCBjYWxsYmFjaykKKyAgICBxdWVyeVNlbGVjdG9yKG5vZGVJZCwgc2VsZWN0b3IsIGNhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3Rvcihub2RlSWQsIHNlbGVjdG9y
cywgdGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxiYWNrKSk7CisgICAgICAgIGlmICh0eXBl
b2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBET01BZ2VudC5xdWVyeVNl
bGVjdG9yKG5vZGVJZCwgc2VsZWN0b3IsIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFj
aykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gRE9NQWdlbnQucXVlcnlTZWxl
Y3Rvcihub2RlLCBzZWxlY3Rvcik7CiAgICAgfQogCi0gICAgcXVlcnlTZWxlY3RvckFsbChub2Rl
SWQsIHNlbGVjdG9ycywgY2FsbGJhY2spCisgICAgcXVlcnlTZWxlY3RvckFsbChub2RlSWQsIHNl
bGVjdG9yLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3JB
bGwobm9kZUlkLCBzZWxlY3RvcnMsIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykp
OworICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQorICAgICAgICAg
ICAgRE9NQWdlbnQucXVlcnlTZWxlY3RvckFsbChub2RlSWQsIHNlbGVjdG9yLCB0aGlzLl93cmFw
Q2xpZW50Q2FsbGJhY2soY2FsbGJhY2spKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0
dXJuIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3JBbGwobm9kZUlkLCBzZWxlY3Rvcik7CiAgICAgfQog
CiAgICAgaGlnaGxpZ2h0RE9NTm9kZShub2RlSWQsIG1vZGUpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjI4OTBjYWZjMTkw
YjM1ODczMDY1Y2NlZmYwN2ZiYzE3MmNlNjg0Yi4uZjNlNzg4YjdkNzc3MTliMWFkNDMyOTc5OGM1
MmM3YTFiYTdjNTIzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEyLTA2ICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhcHR1cmUg
RWxlbWVudCBTY3JlZW5zaG90IGxvb2tzIGZ1enp5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMz
ODAzMzc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL3BhZ2UvaGlkcGktc25hcHNob3Qtc2l6ZS5odG1sOiBBZGRlZC4KKwogMjAx
Ny0xMi0wNCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVi
YXNlbGluZSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2lu
dGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9kaWFsb2ctc2hvd01vZGFsLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90
LXNpemUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNp
emUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZmE5NWYwYjBjNWY1N2RhMzFmMzhhYzFkMmVmN2Y0OGM5YmI1
NjBmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2UvaGlkcGkt
c25hcHNob3Qtc2l6ZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGxldCBkb2N1bWVudE5vZGU7CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0
b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIlBhZ2Uuc25hcHNob3QiKTsKKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlBhZ2Uuc25hcHNob3ROb2RlIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJWZXJpZnkgdGhhdCBhIG5vZGUgc25hcHNob3QgaXMgbm90IHNjYWxlZCBk
b3duIHRvIENTUyBwaXhlbHMuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
IGxldCBzbmFwc2hvdEVsZW1lbnRQYXlsb2FkID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgid2luZG93LnNuYXBzaG90RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCcjZWxlbWVudC10by1zbmFwc2hvdCcpIik7CisgICAgICAgICAgICBsZXQgc25hcHNob3RFbGVt
ZW50ID0gV0kuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHNuYXBzaG90RWxlbWVudFBheWxvYWQp
OworCisgICAgICAgICAgICBsZXQgb3V0cHV0RWxlbWVudFBheWxvYWQgPSBhd2FpdCBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cub3V0cHV0RWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCcjaW1hZ2UtdG8tbWVhc3VyZScpIik7CisgICAgICAgICAgICBsZXQgb3V0
cHV0RWxlbWVudCA9IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChvdXRwdXRFbGVtZW50UGF5
bG9hZCk7CisKKyAgICAgICAgICAgIGxldCB0YXJnZXREYXRhVVJMID0gYXdhaXQgUGFnZUFnZW50
LnNuYXBzaG90Tm9kZShvdXRwdXRFbGVtZW50LmlkKTsKKyAgICAgICAgICAgIGF3YWl0IEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGUoYGltYWdlRWxlbWVudC5zcmMgPSAiJHt0YXJnZXREYXRhVVJMfSJg
KTsKKworICAgICAgICAgICAgbGV0IGVsZW1lbnRCb3VuZHNQYXlsb2FkID0gYXdhaXQgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgic25hcHNob3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpIik7CisgICAgICAgICAgICBsZXQgZWxlbWVudEJvdW5kcyA9IFdJLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZChlbGVtZW50Qm91bmRzUGF5bG9hZCk7CisKKyAgICAgICAgICAgIGxldCBp
bWFnZVNpemVQYXlsb2FkID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgie3dp
ZHRoOiBvdXRwdXRFbGVtZW50LndpZHRoLCBoZWlnaHQ6IG91dHB1dEVsZW1lbnQuaGVpZ2h0fSIp
OworICAgICAgICAgICAgbGV0IGltYWdlU2l6ZSA9IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9h
ZChpbWFnZVNpemVQYXlsb2FkKTsKKworICAgICAgICAgICAgbGV0IGRldmljZVBpeGVsUmF0aW8g
PSBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5kb3cuZGV2aWNlUGl4ZWxS
YXRpbyIpOworCisgICAgICAgICAgICAvLyBPbiBhbiBAMnggbWFjaGluZSwgdGhlIHNjcmVlbnNo
b3Qgc2hvdWxkIGJlIHR3aWNlIHRoZSByZWFsIHBpeGVsIHNpemUgYXMgdGhlIENTUyBwaXhlbCBz
aXplLgorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChpbWFnZVNpemUud2lk
dGgsIGVsZW1lbnRCb3VuZHMud2lkdGggKiBkZXZpY2VQaXhlbFJhdGlvKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0R3JlYXRlclRoYW4oaW1hZ2VTaXplLmhlaWdodCwgZWxlbWVu
dEJvdW5kcy5oZWlnaHQgKiBkZXZpY2VQaXhlbFJhdGlvKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChub2RlKSA9PiB7CisgICAg
ICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CisgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOworICAgIH0pOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cCBpZD0iZWxlbWVudC10by1zbmFwc2hvdCIgc3R5bGU9ImhlaWdodDogMTk4
cHg7IHdpZHRoOiAxOThweDsgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Ij5UZXN0IGZvciBET00u
c25hcHNob3ROb2RlIG9uIEhpRFBJIHN5c3RlbXMuPC9wPgorPGltZyBpZD0iaW1hZ2UtdG8tbWVh
c3VyZSIgLz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329844</attachid>
            <date>2017-12-19 15:50:39 -0800</date>
            <delta_ts>2018-01-04 15:16:54 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-175734-20171219155039.patch</filename>
            <type>text/plain</type>
            <size>16727</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZlOTM5Mjc0MGVkYTNj
YTczOGZmNGRkMjNhMjllMTU1MmU2N2RkYi4uMWY0NDE5N2I3M2UwY2U5NmNiOTM5ZDIxMmU4YTEz
MjAyNmExOGQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEyLTE5ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhcHR1
cmUgRWxlbWVudCBTY3JlZW5zaG90IGxvb2tzIGZ1enp5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMzODAzMzc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNjcmVlbnNob3RzIHRha2VuIGJ5IFdlYiBJbnNwZWN0b3Igd2VyZSBiZWluZyBkb3duc2Nh
bGVkIGZyb20gdGhlCisgICAgICAgIGludGVybmFsIHNpemUgdG8gdGhlIGxvZ2ljYWwgc2l6ZSwg
Y2F1c2luZyB0aGVtIHRvIGJlIGJsdXJyeSB3aGVuCisgICAgICAgIGxhdGVyIHVwc2NhbGVkIHRv
IHRoZSBpbnRlcm5hbCBzaXplLgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgQ29vcmRpbmF0ZVN5
c3RlbSBhcmd1bWVudCBmb3IgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCwKKyAgICAgICAgYW5kIHJl
cGxhY2UgaXQgd2l0aCBTY2FsZUJlaGF2aW9yLiBQbHVtYiBTY2FsZUJlaGF2aW9yIGludG8gdG9D
RkRhdGEKKyAgICAgICAgc28gdGhhdCBTY2FsZUJlaGF2aW9yPVVuc2NhbGVkIHdpbGwgcHJlc2Vy
dmUgdGhlIGludGVybmFsIHNpemUgb2YKKyAgICAgICAgdGhlIGltYWdlIGJ1ZmZlciwganVzdCBh
cyBpdCBkb2VzIGluIG90aGVyIG1ldGhvZHMgdGhhdCB0YWtlIFNjYWxlQmVoYXZpb3IuCisKKyAg
ICAgICAgQXQgdGhlIHVzZSBzaXRlIGluIEluc3BlY3RvclBhZ2VBZ2VudCwgYWx3YXlzIHJlcXVl
c3QgVW5zY2FsZWQgc25hcHNob3RzCisgICAgICAgIHdoZW4gdGFraW5nIGFuIGVsZW1lbnQgc2Ny
ZWVuc2hvdC4gRm9yIG5vdywga2VlcCB1c2luZyBkb3duc2NhbGVkIChzbWFsbGVyKQorICAgICAg
ICBzbmFwc2hvdHMgd2hlbiBjYXB0dXJpbmcgY2FudmFzIHByZXZpZXdzLCBhcyB0aGUgcHJldmll
d3MgYXJlIG5vdCBmdWxsLXNpemUuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL3BhZ2UvaGlk
cGktc25hcHNob3Qtc2l6ZS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNuYXBzaG90Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNu
YXBzaG90UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6dG9EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Ojp0b0NGRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdl
QnVmZmVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwgY29uc3Qp
OgorCiAyMDE3LTEyLTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJSVEMgU3RhdHMgc2hvdWxkIG5vdCBiZSBjb25zb2xlIGxvZ2dlZCBmcm9tIGEgYmFj
a2dyb3VuZCB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGY3NDM0ZTBiZmMxNGY1
OGY4MDY5ZDkzYTE3NmMyM2RhM2JlZTdmMjIuLmVlNTZhMTA3NTZjNjliNmM4MDFmYWE5MTZhNjNh
YThmYjNhYjk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDE3LTEyLTE5ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENhcHR1cmUgRWxlbWVudCBTY3JlZW5zaG90IGxvb2tzIGZ1enp5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MzQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMzODAzMzc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNwcnVjZSB1cCB0aGVzZSBmdW5jdGlvbnMgYSBiaXQuIFRoZXkg
bm93IG9wdGlvbmFsbHkgcmV0dXJuIGEgcHJvbWlzZQorICAgICAgICBpZiBubyBjYWxsYmFjayBp
cyBzdXBwbGllZC4gVGhleSBub3cgY2FuIHRha2UgZWl0aGVyIGEgV0kuRE9NTm9kZSBvciBhIG5v
ZGUgaWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5h
Z2VyLmpzOgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLnF1ZXJ5U2VsZWN0
b3IpOgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JB
bGwpOgorCiAyMDE3LTEyLTE4ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Ugc2hvdWxkIHJl
dHVybiBhIHJlamVjdGlvbiBpZiBhbiBlcnJvciB3YXMgdGhyb3duCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXgg
MmNiMWRhZWMyMGMyYjEzZmQyMWE0YzU4MWI3OWE0NWE3ZWRmMWQzOC4uZWQwMjg1MDczZGIwMGY2
ZjgyMjc0NmYzNzc4ZWJkOWE4MGZmMzZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtODI0LDcgKzgyNCw3
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBTdHJpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAqb3V0RGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoQVNDSUlMaXRlcmFsKCJpbWFnZS9w
bmciKSk7CisgICAgKm91dERhdGFVUkwgPSBzbmFwc2hvdC0+dG9EYXRhVVJMKEFTQ0lJTGl0ZXJh
bCgiaW1hZ2UvcG5nIiksIHN0ZDo6bnVsbG9wdCwgVW5zY2FsZWQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFN0cmluZyYgY29vcmRpbmF0
ZVN5c3RlbSwgU3RyaW5nKiBvdXREYXRhVVJMKQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBp
bnQgeCwgaW50IHksIGluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqb3V0RGF0YVVS
TCA9IHNuYXBzaG90LT50b0RhdGFVUkwoQVNDSUlMaXRlcmFsKCJpbWFnZS9wbmciKSk7CisgICAg
Km91dERhdGFVUkwgPSBzbmFwc2hvdC0+dG9EYXRhVVJMKEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvcG5n
IiksIHN0ZDo6bnVsbG9wdCwgVW5zY2FsZWQpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6YXJjaGl2ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDFkNWIw
NzM3MmQ2ZDMxZGQ5OGI0MjM5ZDZkZThmMmJiYmRjNWNiNTEuLmJmZjU2ZDVhOWY5NzY3N2M3NGNh
MzU5ZGMyN2QwZTNmNzQ1YTRjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHB1dEJ5dGVBcnJheShjb25zdCBVaW50OENsYW1wZWRBcnJheSYsIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gYnVmZmVyRm9ybWF0LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lz
dGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pOwogICAgIAogICAgIHZvaWQgY29udmVydFRv
THVtaW5hbmNlTWFzaygpOwotICAgIAotICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQs
IENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisKKyAg
ICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0LCBTY2FsZUJlaGF2aW9yID0gU2NhbGVkKSBj
b25zdDsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAg
ICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0OwogCkBAIC0xNjcsNyArMTY3LDcg
QEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGJv
b2wmIHN1Y2Nlc3MpOwogI2lmIFVTRShDRykKICAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcGFjZVJlZiwgUmVuZGVyaW5nTW9k
ZSwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gdG9DRkRhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0
OworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBTY2FsZUJlaGF2aW9yKSBjb25zdDsK
ICNlbGlmIFVTRShESVJFQ1QyRCkKICAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCosIGJvb2wmIHN1Y2Nlc3MpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCmluZGV4IGNkNmQwMWM3OGNmOTQ3OTI3MzBjY2FhOGU1NGY3NTFkOWQ1MWJmYjQuLjBjMmI4
YmZkOGM0OTJiOGI0YzQ5MTY4MDVkYWE3OTViYjQyZjRiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCkBAIC01NjQsNyArNTY0LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY2Fpcm9fc3Vy
ZmFjZV90KiBpbWFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVmVjdG9yPHUKICAgICByZXR1
cm4gY2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmdfc3RyZWFtKGltYWdlLCB3cml0ZUZ1bmN0aW9u
LCBvdXRwdXQpID09IENBSVJPX1NUQVRVU19TVUNDRVNTOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZm
ZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1N0cmluZyBJbWFnZUJ1ZmZlcjo6
dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBTY2FsZUJlaGF2aW9yKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNv
ZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1h
Z2UuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA0MDNlNjVlMTRkYWE2MWMzZjBjZDFmYWYyM2U0
ZTU2ZTNlODdhZmU1Li44ODM0ZWMyN2RmMzJiMDJmMDJjOTkwZTMxMmQ2NTM1ODkzMzkwNjZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcApAQCAtNTA4LDIxICs1MDgsMjEgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBk
YXRhVmVjdG9yKENGRGF0YVJlZiBjZkRhdGEpCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVN0cmlu
ZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorU3RyaW5nIElt
YWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHF1YWxpdHksIFNjYWxlQmVoYXZpb3Igc2NhbGVCZWhhdmlvcikgY29uc3QKIHsK
LSAgICBpZiAoYXV0byBkYXRhID0gdG9DRkRhdGEobWltZVR5cGUsIHF1YWxpdHkpKQorICAgIGlm
IChhdXRvIGRhdGEgPSB0b0NGRGF0YShtaW1lVHlwZSwgcXVhbGl0eSwgc2NhbGVCZWhhdmlvcikp
CiAgICAgICAgIHJldHVybiBkYXRhVVJMKGRhdGEuZ2V0KCksIG1pbWVUeXBlKTsKICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJkYXRhOiwiKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVm
ZmVyOjp0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHF1YWxpdHkpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8gZGF0YSA9IHRvQ0ZEYXRhKG1pbWVUeXBl
LCBxdWFsaXR5KSkKKyAgICBpZiAoYXV0byBkYXRhID0gdG9DRkRhdGEobWltZVR5cGUsIHF1YWxp
dHksIFNjYWxlZCkpCiAgICAgICAgIHJldHVybiBkYXRhVmVjdG9yKGRhdGEuZ2V0KCkpOwogICAg
IHJldHVybiB7IH07CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyOjp0b0NG
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyOjp0b0NGRGF0YShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgU2NhbGVC
ZWhhdmlvciBzY2FsZUJlaGF2aW9yKSBjb25zdAogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwogCkBA
IC01NDcsNyArNTQ3LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXI6OnRvQ0ZE
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWwKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGxv
Z2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBs
b2dpY2FsU2l6ZSgpLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVP
cmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIuZ2V0
KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0gICAgfSBlbHNlIGlm
IChtX3Jlc29sdXRpb25TY2FsZSA9PSAxKSB7CisgICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25T
Y2FsZSA9PSAxIHx8IHNjYWxlQmVoYXZpb3IgPT0gVW5zY2FsZWQpIHsKICAgICAgICAgaW1hZ2Ug
PSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGltYWdlID0gY3Jl
YXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSgpKTsK
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKaW5kZXggOGNmMGRlNWMxNjkzNWZkMTJiMTI1ODk5
MDQ5NDY2NTA1ZTMyNTQ5NS4uZTU0OGY3OGMxMjIzZDM4OGQxODAwNjcxMTc5ZjkzYjNiYTM5NWI4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdl
QnVmZmVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIGVuY29kZUlt
YWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3Rk
OjpvCiAgICAgcmV0dXJuICFlcnJvcjsKIH0KIAotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgU2Nh
bGVCZWhhdmlvcikgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhID0gdG9E
YXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsKICAgICBpZiAoaW1hZ2VEYXRhLmlzRW1wdHkoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJELmNwcAppbmRleCA3Y2ZlNThlYWQ4N2JkYWU0YzdlNWQzZGIzZmRiODVl
MjUyMDA1NmVhLi5mYmVmNTQ0ZjNkNjg1NjliMzJkOGUyN2Q0ZGY0NTZjODY5YTAyZWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQnVmZmVyRGlyZWN0MkQuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBJbWFnZUJ1ZmZl
cjo6cHV0Qnl0ZUFycmF5KGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJl
bXVsdGlwbGkKICAgICBtX2RhdGEucHV0RGF0YShzb3VyY2UsIGJ1ZmZlckZvcm1hdCwgc2NhbGVk
U291cmNlU2l6ZSwgc2NhbGVkU291cmNlUmVjdCwgZGVzdFBvaW50LCBpbnRlcm5hbFNpemUoKSwg
Y29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIDEpOwogfQogCi1TdHJpbmcgSW1hZ2VC
dWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIENv
b3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25z
dCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIFNjYWxlQmVoYXZpb3IpIGNvbnN0CiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkYXRhOiwi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKaW5kZXggNjdmM2JlOTQ2YWY1NDFh
NWNmNDFiNzYzMmQxM2IxZDZmZjZlYzg4Ny4uZGM1NmY5Mzk0MDliYTYxOTgzZjE1NzJjY2RhZjE2
OGRmZjBkNzMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKQEAgLTQxMSwx
NCArNDExLDI2IEBAIFdJLkRPTVRyZWVNYW5hZ2VyID0gY2xhc3MgRE9NVHJlZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHF1ZXJ5U2VsZWN0b3Iobm9k
ZUlkLCBzZWxlY3RvcnMsIGNhbGxiYWNrKQorICAgIHF1ZXJ5U2VsZWN0b3Iobm9kZU9yTm9kZUlk
LCBzZWxlY3RvciwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBET01BZ2VudC5xdWVyeVNlbGVj
dG9yKG5vZGVJZCwgc2VsZWN0b3JzLCB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2sp
KTsKKyAgICAgICAgbGV0IG5vZGVJZCA9IG5vZGVPck5vZGVJZCBpbnN0YW5jZW9mIFdJLkRPTU5v
ZGUgPyBub2RlT3JOb2RlSWQuaWQgOiBub2RlT3JOb2RlSWQ7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBub2RlSWQgPT09ICJudW1iZXIiKTsKKworICAgICAgICBpZiAodHlwZW9mIGNh
bGxiYWNrID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3Rv
cihub2RlSWQsIHNlbGVjdG9yLCB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3Io
bm9kZUlkLCBzZWxlY3RvcikudGhlbigoe25vZGVJZH0pID0+IG5vZGVJZCk7CiAgICAgfQogCi0g
ICAgcXVlcnlTZWxlY3RvckFsbChub2RlSWQsIHNlbGVjdG9ycywgY2FsbGJhY2spCisgICAgcXVl
cnlTZWxlY3RvckFsbChub2RlT3JOb2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjaykKICAgICB7Ci0g
ICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3JBbGwobm9kZUlkLCBzZWxlY3RvcnMsIHRoaXMu
X3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykpOworICAgICAgICBsZXQgbm9kZUlkID0gbm9k
ZU9yTm9kZUlkIGluc3RhbmNlb2YgV0kuRE9NTm9kZSA/IG5vZGVPck5vZGVJZC5pZCA6IG5vZGVP
ck5vZGVJZDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIG5vZGVJZCA9PT0gIm51bWJl
ciIpOworCisgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCisgICAg
ICAgICAgICBET01BZ2VudC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVJZCwgc2VsZWN0b3IsIHRoaXMu
X3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjaykpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm4gRE9NQWdlbnQucXVlcnlTZWxlY3RvckFsbChub2RlSWQsIHNlbGVjdG9yKS50aGVu
KCh7bm9kZUlkc30pID0+IG5vZGVJZHMpOwogICAgIH0KIAogICAgIGhpZ2hsaWdodERPTU5vZGUo
bm9kZUlkLCBtb2RlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQwODZhZTM5N2E3N2NhODY5MWFjNjFjMjdjZDllNTRiYmMw
NWRmNDQuLjY2Y2JkYjg1NmUxOWNjNDgxMzY0OTVhMzlmMTk2NzAyYjI3M2I1NzEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxNy0xMi0xOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYXB0dXJlIEVsZW1lbnQgU2NyZWVuc2hvdCBsb29r
cyBmdXp6eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1NzM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzgwMzM3Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wYWdlL2hpZHBp
LXNuYXBzaG90LXNpemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
cGFnZS9oaWRwaS1zbmFwc2hvdC1zaXplLmh0bWw6IEFkZGVkLgorCiAyMDE3LTEyLTE5ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBU
ZXN0UGFnZS5kZWJ1ZygpIHRvIGluc3BlY3QgZXZhbHVhdGlvbnMgYmVpbmcgc2VudCB0byBJbnNw
ZWN0b3IgcGFnZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2UvaGlkcGkt
c25hcHNob3Qtc2l6ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcGFnZS9o
aWRwaS1zbmFwc2hvdC1zaXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjUyNzA4MzQ3Y2Vl
OWE2ZGNhMmI4Njg0ODZlNzEyNzAzYmFhZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3BhZ2UvaGlkcGktc25hcHNob3Qtc2l6ZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4IEBACitUZXN0IGZvciBET00uc25hcHNob3ROb2RlIG9uIEhpRFBJIHN5c3RlbXMuCisK
KworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBQYWdlLnNuYXBzaG90CistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogUGFnZS5zbmFwc2hvdE5vZGUKK1BBU1M6IFNjcmVlbnNob3QncyB3aWR0aCBpbiBwaXhl
bHMgc2hvdWxkIGJlIChDU1MgcGl4ZWwgd2lkdGgpICogZGV2aWNlUGl4ZWxSYXRpby4KK1BBU1M6
IFNjcmVlbnNob3QncyBoZWlnaHQgaW4gcGl4ZWxzIHNob3VsZCBiZSAoQ1NTIHBpeGVsIGhlaWdo
dCkgKiBkZXZpY2VQaXhlbFJhdGlvLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcGFnZS9oaWRwaS1zbmFwc2hvdC1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cGFnZS9oaWRwaS1zbmFwc2hvdC1zaXplLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUyM2Y0ZmI0MGJmNjA2
NDJmY2JjMWQxOGY5ZGJkYTg2Y2NmZTA1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUuaHRtbApAQCAtMCwwICsxLDYwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBwcmVwYXJlQW5kUnVuVGVzdCgpCit7CisgICAgd2luZG93LnNu
YXBzaG90RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbGVtZW50LXRvLXNuYXBz
aG90Jyk7CisKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIC8v
IFRoaXMgZnVuY3Rpb24gaXMgYWRhcHRlZCBmcm9tIGFuIGFuc3dlciBvbiB0aGUgZm9sbG93aW5n
IHBhZ2U6CisgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTUzMjc5
NTkvZ2V0LWhlaWdodC1hbmQtd2lkdGgtZGltZW5zaW9ucy1mcm9tLWJhc2U2NC1wbmcvNDExNTIz
NzgjNDExNTIzNzgKKyAgICBmdW5jdGlvbiBzaXplT2ZQTkdGcm9tRGF0YVVSTChkYXRhVVJMKSB7
CisgICAgICAgIGxldCBiYXNlNjQgPSBkYXRhVVJMLnN1YnN0cihkYXRhVVJMLmluZGV4T2YoJywn
KSArIDEpOworICAgICAgICBjb25zdCBoZWFkZXIgPSBhdG9iKGJhc2U2NC5zbGljZSgwLCA1MCkp
LnNsaWNlKDE2LCAyNCk7CisgICAgICAgIGNvbnN0IHVpbnQ4ID0gVWludDhBcnJheS5mcm9tKGhl
YWRlciwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpOworICAgICAgICBjb25zdCBkYXRhVmlldyA9IG5l
dyBEYXRhVmlldyh1aW50OC5idWZmZXIpOworCisgICAgICAgIHJldHVybiB7d2lkdGg6IGRhdGFW
aWV3LmdldEludDMyKDApLCBoZWlnaHQ6IGRhdGFWaWV3LmdldEludDMyKDQpfTsKKyAgICB9CisK
KyAgICBsZXQgZG9jdW1lbnROb2RlOworCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJQYWdlLnNuYXBzaG90Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJQYWdlLnNuYXBzaG90Tm9kZSIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiVmVyaWZ5IHRoYXQgYSBub2RlIHNuYXBzaG90IGlzIG5vdCBzY2FsZWQgZG93biB0byBD
U1MgcGl4ZWxzLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGFy
Z2V0RWxlbWVudElkID0gYXdhaXQgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1
bWVudE5vZGUuaWQsICIjZWxlbWVudC10by1zbmFwc2hvdCIpOworICAgICAgICAgICAgbGV0IHtk
YXRhVVJMfSA9IGF3YWl0IFBhZ2VBZ2VudC5zbmFwc2hvdE5vZGUodGFyZ2V0RWxlbWVudElkKTsK
KyAgICAgICAgICAgIGxldCBkZXZpY2VQaXhlbFJhdGlvID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgd2luZG93LmRldmljZVBpeGVsUmF0aW9gKTsKKyAgICAgICAgICAgIGxl
dCBlbGVtZW50Qm91bmRzID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2lu
ZG93LnNuYXBzaG90RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKWApCisgICAgICAgICAg
ICAgICAgLnRoZW4oKG9iamVjdCkgPT4gb2JqZWN0LmZldGNoUHJvcGVydGllcyhbIndpZHRoIiwg
ImhlaWdodCJdKSk7CisKKyAgICAgICAgICAgIC8vIFBlZWsgaW50byB0aGUgZGF0YSBVUkwncyBy
YXcgUE5HIGRhdGEgdG8gZ2V0IHRoZSBzaXplLiBGb3IgdmFyaW91cyByZWFzb25zLAorICAgICAg
ICAgICAgLy8gc2V0dGluZyB0aGUgJ3NyYycgYXR0cmlidXRlIG9mIGFuIDxpbWc+IGVsZW1lbnQg
aXMgdW5yZWxpYWJsZSB1bmRlciBXS1RSLgorICAgICAgICAgICAgbGV0IHNjcmVlbnNob3RTaXpl
ID0gc2l6ZU9mUE5HRnJvbURhdGFVUkwoZGF0YVVSTCk7CisKKyAgICAgICAgICAgIC8vIE9uIGEg
QDJ4IG1hY2hpbmUsIHRoZSBzY3JlZW5zaG90IHNob3VsZCBiZSB0d2ljZSB0aGUgcmVhbCBwaXhl
bCBzaXplIGFzIHRoZSBDU1MgcGl4ZWwgc2l6ZS4KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoc2NyZWVuc2hvdFNpemUud2lkdGgsIGVsZW1lbnRCb3VuZHMud2lkdGggKiBk
ZXZpY2VQaXhlbFJhdGlvLCAiU2NyZWVuc2hvdCdzIHdpZHRoIGluIHBpeGVscyBzaG91bGQgYmUg
KENTUyBwaXhlbCB3aWR0aCkgKiBkZXZpY2VQaXhlbFJhdGlvLiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChzY3JlZW5zaG90U2l6ZS5oZWlnaHQsIGVsZW1lbnRCb3Vu
ZHMuaGVpZ2h0ICogZGV2aWNlUGl4ZWxSYXRpbywgIlNjcmVlbnNob3QncyBoZWlnaHQgaW4gcGl4
ZWxzIHNob3VsZCBiZSAoQ1NTIHBpeGVsIGhlaWdodCkgKiBkZXZpY2VQaXhlbFJhdGlvLiIpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1l
bnQoKG5vZGUpID0+IHsKKyAgICAgICAgZG9jdW1lbnROb2RlID0gbm9kZTsKKyAgICAgICAgc3Vp
dGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icHJlcGFyZUFuZFJ1blRlc3QoKSI+Cis8cCBpZD0iZWxlbWVudC10
by1zbmFwc2hvdCIgc3R5bGU9ImhlaWdodDogMTk4cHg7IHdpZHRoOiAxOThweDsgYm9yZGVyOiAx
cHggc29saWQgYmxhY2s7Ij5UZXN0IGZvciBET00uc25hcHNob3ROb2RlIG9uIEhpRFBJIHN5c3Rl
bXMuPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329846</attachid>
            <date>2017-12-19 15:53:40 -0800</date>
            <delta_ts>2017-12-19 16:30:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175734-20171219155340.patch</filename>
            <type>text/plain</type>
            <size>6985</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
YTgwYzU2NzdmZjJhNDkzOTk4MzlmNzZlYTNmODJlY2E4N2JmN2NmLi5mNzQzNGUwYmZjMTRmNThm
ODA2OWQ5M2ExNzZjMjNkYTNiZWU3ZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0xMi0xOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlIHNob3Vs
ZCByZXR1cm4gYSByZWplY3Rpb24gaWYgYW4gZXJyb3Igd2FzIHRocm93bgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwOTU2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3Qv
RnJvbnRlbmRUZXN0SGFybmVzcy5qczoKKyAgICAgICAgKEZyb250ZW5kVGVzdEhhcm5lc3MucHJv
dG90eXBlLmV2YWx1YXRlSW5QYWdlLnRyYW5zbGF0ZVJlc3VsdCk6wqBSZW5hbWVkLgorICAgICAg
ICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90b3R5cGUuZXZhbHVhdGVJblBhZ2UpOgorICAgICAg
ICBJZiB0aGUgcmVzdWx0IHdhcyB0aHJvd24sIHRoZW4gcmVqZWN0IHdpdGggdGhlIGVycm9yLgor
ICAgICAgICBSZW5hbWUgdGhlIGhlbHBlciBtZXRob2QgdG8gbWF0Y2ggdGhlIHNhbWUgb25lIGlu
IFJlbW90ZU9iamVjdC5wcm90b3R5cGUuZmV0Y2hQcm9wZXJ0aWVzLgorCiAyMDE3LTEyLTE4ICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFk
ZCBSZW1vdGVPYmplY3QuZmV0Y2hQcm9wZXJ0aWVzIGFuZCBzb21lIGJhc2ljIHRlc3RzIGZvciBS
ZW1vdGVPYmplY3QgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9UZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMKaW5kZXggZWE5Yjk4
MGQyNDI4ZjU1NDlmNjAzY2RlYjg1Yjc1M2VmMjk1MDM1Mi4uMDIzMTk1Zjg5ZjdlYjEzZDAyNzcy
MjRjZTQ5MTBhNDQ1MjczNTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVGVzdC9Gcm9udGVuZFRlc3RIYXJuZXNzLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcwpAQCAt
ODksMTcgKzg5LDI0IEBAIEZyb250ZW5kVGVzdEhhcm5lc3MgPSBjbGFzcyBGcm9udGVuZFRlc3RI
YXJuZXNzIGV4dGVuZHMgVGVzdEhhcm5lc3MKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVy
biBwcmltaXRpdmUgdmFsdWVzIGRpcmVjdGx5LCBvdGhlcndpc2UgcmV0dXJuIGEgV0kuUmVtb3Rl
T2JqZWN0IGluc3RhbmNlLgotICAgICAgICBmdW5jdGlvbiByZXN1bHRPYmplY3RUb1JldHVybihy
ZXN1bHQpIHsKKyAgICAgICAgZnVuY3Rpb24gdHJhbnNsYXRlUmVzdWx0KHJlc3VsdCkgewogICAg
ICAgICAgICAgbGV0IHJlbW90ZU9iamVjdCA9IFdJLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChy
ZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuICghcmVtb3RlT2JqZWN0T25seSAmJiByZW1vdGVP
YmplY3QuaGFzVmFsdWUoKSkgPyByZW1vdGVPYmplY3QudmFsdWUgOiByZW1vdGVPYmplY3Q7CiAg
ICAgICAgIH0KIAogICAgICAgICBsZXQgcmVzcG9uc2UgPSBSdW50aW1lQWdlbnQuZXZhbHVhdGUu
aW52b2tlKHtleHByZXNzaW9uLCBvYmplY3RHcm91cDogInRlc3QiLCBpbmNsdWRlQ29tbWFuZExp
bmVBUEk6IGZhbHNlfSkKICAgICAgICAgaWYgKGNhbGxiYWNrICYmIHR5cGVvZiBjYWxsYmFjayA9
PT0gImZ1bmN0aW9uIikgewotICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZS50aGVuKCh7
cmVzdWx0LCB3YXNUaHJvd259KSA9PiBjYWxsYmFjayhudWxsLCByZXN1bHRPYmplY3RUb1JldHVy
bihyZXN1bHQpLCB3YXNUaHJvd24pKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2Uu
dGhlbigoe3Jlc3VsdCwgd2FzVGhyb3dufSkgPT4gY2FsbGJhY2sobnVsbCwgdHJhbnNsYXRlUmVz
dWx0KHJlc3VsdCksIHdhc1Rocm93bikpOwogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25z
ZS5jYXRjaCgoZXJyb3IpID0+IGNhbGxiYWNrKGVycm9yLCBudWxsLCBmYWxzZSkpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50aGVuKCh7cmVzdWx0fSkgPT4g
cmVzdWx0T2JqZWN0VG9SZXR1cm4ocmVzdWx0KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBUdXJuIGEgdGhyb3duIEVycm9yIHJlc3VsdCBpbnRvIGEgcHJvbWlzZSByZWplY3Rp
b24uCisgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UudGhlbigoe3Jlc3VsdCwgd2FzVGhyb3du
fSkgPT4geworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRyYW5zbGF0ZVJlc3VsdChyZXN1bHQp
OworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgd2FzVGhyb3duKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKHJlc3VsdC5kZXNjcmlwdGlv
bikpOworICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgZGVidWcoKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ5
MzY5MDFjMzVjZGQyNDNlZjE0ZWQzYTEyYTQyMzk0NmU4MTkyOGQuLmVhYWRiZmZjZjczNjQ5MTVi
NzNjZDkzOWM0Yzk2N2IxMDM2OTgyMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0xMi0x
OCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlIHNob3VsZCByZXR1cm4gYSByZWplY3Rpb24g
aWYgYW4gZXJyb3Igd2FzIHRocm93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwOTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvdW5pdC10ZXN0cy90ZXN0LWhhcm5lc3MtZXZhbHVh
dGUtaW4tcGFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMv
dGVzdC1oYXJuZXNzLWV2YWx1YXRlLWluLXBhZ2UuaHRtbDoKKyAgICAgICAgVXBkYXRlIHRlc3Qg
Y2FzZSB0byBleHBlY3QgYW4gZXhjZXB0aW9uIHdoZW4gYW4gZXJyb3Igd2FzIHRocm93biBpbiBv
dXIgZXZhbHVhdGlvbi4KKwogMjAxNy0xMi0xOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgUmVtb3RlT2JqZWN0LmZldGNoUHJvcGVy
dGllcyBhbmQgc29tZSBiYXNpYyB0ZXN0cyBmb3IgUmVtb3RlT2JqZWN0IEFQSQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGVzdC1oYXJuZXNzLWV2YWx1YXRl
LWluLXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMv
dGVzdC1oYXJuZXNzLWV2YWx1YXRlLWluLXBhZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGRmMmExOTIy
YWZkMjBlYjA2NzYwODcyMDAwZDkxNzRmNzMwZmYwZjUuLjkzYTJmZGZhZGE3YTQ0MDZkMWZjZjIz
ZGFkMjdjMWFlMDdkNWI5MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0
LXRlc3RzL3Rlc3QtaGFybmVzcy1ldmFsdWF0ZS1pbi1wYWdlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy90ZXN0LWhhcm5lc3MtZXZhbHVhdGUtaW4t
cGFnZS1leHBlY3RlZC50eHQKQEAgLTE0Miw5ICsxNDIsNyBAQCBQQVNTOiBUeXBlIG9mIGV2YWx1
YXRpb24gcmVzdWx0IHNob3VsZCBiZSAnb2JqZWN0Jy4KIFBBU1M6IFN1YnR5cGUgb2YgZXZhbHVh
dGlvbiByZXN1bHQgc2hvdWxkIGJlICdlcnJvcicuCiAKIENoZWNraW5nIHJlc3VsdCBvZiBldmFs
dWF0aW5nIHN0cmluZzogdGhyb3cgbmV3IEVycm9yKDQyKQotUEFTUzogUmV0dXJuZWQgcmVzdWx0
IHNob3VsZCBiZSBhIFdJLlJlbW90ZU9iamVjdC4KLVBBU1M6IE5vbi1wcmltaXRpdmUgZXZhbHVh
dGlvbiByZXN1bHRzIHNob3VsZCBub3QgaGF2ZSBhIG1hcnNoYWxsZWQgdmFsdWUuCi1QQVNTOiBU
eXBlIG9mIGV2YWx1YXRpb24gcmVzdWx0IHNob3VsZCBiZSAnb2JqZWN0Jy4KLVBBU1M6IFN1YnR5
cGUgb2YgZXZhbHVhdGlvbiByZXN1bHQgc2hvdWxkIGJlICdlcnJvcicuCitQQVNTOiBTaG91bGQg
cHJvZHVjZSBhbiBleGNlcHRpb24uCitFcnJvcjogRXJyb3I6IDQyCiAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGVzdC1oYXJuZXNzLWV2YWx1YXRlLWlu
LXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3Rlc3QtaGFybmVz
cy1ldmFsdWF0ZS1pbi1wYWdlLmh0bWwKaW5kZXggN2ViZTgyYTE3NmI1YjI1NTJhOTJkYTAwOGVj
MjA1OGQ4NTNmZmNiOC4uNTc1MjJkYWM0YTJkOWViNTRjNDU3MDNhZTJmMzMwNTI2NTBlODcwNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvdGVzdC1oYXJuZXNz
LWV2YWx1YXRlLWluLXBhZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10
ZXN0cy90ZXN0LWhhcm5lc3MtZXZhbHVhdGUtaW4tcGFnZS5odG1sCkBAIC0xMDQsNiArMTA0LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBpbnB1dDogYHRocm93IG5ldyBFcnJvcig0
MilgLAogICAgICAgICAgICAgdHlwZTogIm9iamVjdCIsCiAgICAgICAgICAgICBzdWJ0eXBlOiAi
ZXJyb3IiLAorICAgICAgICAgICAgdGhyb3duOiB0cnVlLAogICAgICAgICB9LAogICAgIF07CiAK
QEAgLTEzOSwxMiArMTQwLDIwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBuYW1lOiAiZXZh
bHVhdGVJblBhZ2UuUmVtb3RlT2JqZWN0cyIsCiAgICAgICAgIGFzeW5jIHRlc3QoKSB7CiAgICAg
ICAgICAgICBmb3IgKGxldCB7aW5wdXQsIHR5cGUsIHN1YnR5cGUsIHRocm93bn0gb2YgY29tcGxl
eENhc2VzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoaW5wdXQpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKGBDaGVja2luZyByZXN1bHQgb2YgZXZhbHVhdGluZyBzdHJpbmc6ICR7aW5wdXR9YCk7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHJlc3VsdCBpbnN0YW5jZW9m
IFdJLlJlbW90ZU9iamVjdCwgIlJldHVybmVkIHJlc3VsdCBzaG91bGQgYmUgYSBXSS5SZW1vdGVP
YmplY3QuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShyZXN1
bHQuaGFzVmFsdWUoKSwgIk5vbi1wcmltaXRpdmUgZXZhbHVhdGlvbiByZXN1bHRzIHNob3VsZCBu
b3QgaGF2ZSBhIG1hcnNoYWxsZWQgdmFsdWUuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChyZXN1bHQudHlwZSwgdHlwZSwgYFR5cGUgb2YgZXZhbHVhdGlvbiBy
ZXN1bHQgc2hvdWxkIGJlICcke3R5cGV9Jy5gKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHJlc3VsdC5zdWJ0eXBlLCBzdWJ0eXBlLCBgU3VidHlwZSBvZiBldmFs
dWF0aW9uIHJlc3VsdCBzaG91bGQgYmUgJyR7c3VidHlwZX0nLmApOworCisgICAgICAgICAgICAg
ICAgaWYgKHRocm93bikgeworICAgICAgICAgICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0
LmV4cGVjdEV4Y2VwdGlvbihhc3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBh
d2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGlucHV0KTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoaW5wdXQpOwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocmVzdWx0IGluc3Rh
bmNlb2YgV0kuUmVtb3RlT2JqZWN0LCAiUmV0dXJuZWQgcmVzdWx0IHNob3VsZCBiZSBhIFdJLlJl
bW90ZU9iamVjdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RG
YWxzZShyZXN1bHQuaGFzVmFsdWUoKSwgIk5vbi1wcmltaXRpdmUgZXZhbHVhdGlvbiByZXN1bHRz
IHNob3VsZCBub3QgaGF2ZSBhIG1hcnNoYWxsZWQgdmFsdWUuIik7CisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LnR5cGUsIHR5cGUsIGBUeXBlIG9m
IGV2YWx1YXRpb24gcmVzdWx0IHNob3VsZCBiZSAnJHt0eXBlfScuYCk7CisgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LnN1YnR5cGUsIHN1YnR5cGUs
IGBTdWJ0eXBlIG9mIGV2YWx1YXRpb24gcmVzdWx0IHNob3VsZCBiZSAnJHtzdWJ0eXBlfScuYCk7
CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330491</attachid>
            <date>2018-01-04 15:16:56 -0800</date>
            <delta_ts>2021-03-17 15:06:56 -0700</delta_ts>
            <desc>Proposed Fix (review feedback applied)</desc>
            <filename>bug-175734-20180104151655.patch</filename>
            <type>text/plain</type>
            <size>28522</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhjYjBhYWUxNGI1ZjFm
ZjJhNDQ5ZmRkMzY4MDkyMjEyZWQ5NTE2Ny4uNjJmZjk1OWEyNTBkYmY0Yjc5NjljY2Q3Zjc2Yzk4
YmNiNmNjMDg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAxLTA0ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhcHR1
cmUgRWxlbWVudCBTY3JlZW5zaG90IGxvb2tzIGZ1enp5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMzODAzMzc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNjcmVlbnNob3RzIHRha2VuIGJ5IFdlYiBJbnNwZWN0b3Igd2VyZSBiZWluZyBkb3duc2Nh
bGVkIGZyb20gdGhlCisgICAgICAgIGludGVybmFsIHNpemUgdG8gdGhlIGxvZ2ljYWwgc2l6ZSwg
Y2F1c2luZyB0aGVtIHRvIGJlIGJsdXJyeSB3aGVuCisgICAgICAgIGxhdGVyIHVwc2NhbGVkIHRv
IHRoZSBpbnRlcm5hbCBzaXplLgorCisgICAgICAgIFJlcGxhY2UgU2NhbGVCZWhhdmlvciB7IFNj
YWxlZCwgVW5zY2FsZWQgfSB3aXRoIFByZXNlcnZlUmVzb2x1dGlvbiB7IE5vLCBZZXMgfS4KKyAg
ICAgICAgVGhpcyBpcyBhIGxvdCBsZXNzIGNvbmZ1c2luZyB0byByZWFkIGJvdGggaW5zaWRlIElt
YWdlQnVmZmVyIGFuZCBhdCBpdHMgdXNlIHNpdGVzLgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQg
Q29vcmRpbmF0ZVN5c3RlbSBhcmd1bWVudCBmb3IgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCwKKyAg
ICAgICAgYW5kIHJlcGxhY2UgaXQgd2l0aCBQcmVzZXJ2ZVJlc29sdXRpb24uIFBsdW1iIFByZXNl
cnZlUmVzb2x1dGlvbiBpbnRvIHRvQ0ZEYXRhCisgICAgICAgIHNvIHRoYXQgUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMgd2lsbCBwcmVzZXJ2ZSB0aGUgaW50ZXJuYWwgc2l6ZSBvZgorICAgICAgICB0
aGUgaW1hZ2UgYnVmZmVyLCBqdXN0IGFzIGl0IGRvZXMgaW4gb3RoZXIgbWV0aG9kcyB0aGF0IHRh
a2UgUHJlc2VydmVSZXNvbHV0aW9uLgorCisgICAgICAgIEF0IHRoZSB1c2Ugc2l0ZSBpbiBJbnNw
ZWN0b3JQYWdlQWdlbnQsIGFsd2F5cyByZXF1ZXN0IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzIHNu
YXBzaG90cworICAgICAgICB3aGVuIHRha2luZyBhbiBlbGVtZW50IHNjcmVlbnNob3QuIEZvciBu
b3csIGtlZXAgdXNpbmcgZG93bnNjYWxlZCAoc21hbGxlcikKKyAgICAgICAgc25hcHNob3RzIHdo
ZW4gY2FwdHVyaW5nIGNhbnZhcyBwcmV2aWV3cywgYXMgdGhlIHByZXZpZXdzIGFyZSBub3QgZnVs
bC1zaXplLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNp
emUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6bWFrZVByZXNlbnRhdGlvbkNvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNvcGllZEltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRl
cm4pOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0KToKKyAgICAg
ICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGFrZVNuYXBz
aG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFw
SW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzaW5r
SW50b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFV
UkwgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorCiAyMDE4LTAx
LTA0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Jh
Z2UgQWNjZXNzIEFQSTogVHVybiBmZWF0dXJlIG9uIGJ5IGRlZmF1bHQgaW4gU2V0dGluZ3MueWFt
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggODU4YWIxNWQ3MzMxZGFiM2ExODBjM2YxM2Vi
ZTM5MmYxNGYxMTJmYy4uMzVkNmFlOTNhMzdhM2U4MGUwNmY1YjAzZmJlNGY5N2QwZDdhZThmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMDEtMDQgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2Fw
dHVyZSBFbGVtZW50IFNjcmVlbnNob3QgbG9va3MgZnV6enkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTczNAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzM4MDMzNzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3BydWNlIHVwIHRoZXNlIGZ1bmN0aW9ucyBhIGJpdC4gVGhleSBub3cgb3B0aW9uYWxs
eSByZXR1cm4gYSBwcm9taXNlCisgICAgICAgIGlmIG5vIGNhbGxiYWNrIGlzIHN1cHBsaWVkLiBU
aGV5IG5vdyBjYW4gdGFrZSBlaXRoZXIgYSBXSS5ET01Ob2RlIG9yIGEgbm9kZSBpZC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanM6CisgICAg
ICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUucXVlcnlTZWxlY3Rvcik6CisgICAgICAg
IChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbCk6CisKIDIwMTgt
MDEtMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogYWRkIFJlbW90ZU9iamVjdC5mZXRjaFByb3BlcnRpZXMgYW5kIHNvbWUgYmFzaWMgdGVz
dHMgZm9yIFJlbW90ZU9iamVjdCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAKaW5kZXggOWI1ZTI4MjRlNzA4ODZiNWM0ODA5OGIxZGI0MDU1ZmE2MTBiYTQyMC4u
MjAzOGYzMjBlNGYyZWEyYjU1ZTg0ZjQ5YmNiOTk2NjJiOWY2MjI4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIEhU
TUxDYW52YXNFbGVtZW50OjptYWtlUHJlc2VudGF0aW9uQ29weSgpCiB7CiAgICAgaWYgKCFtX3By
ZXNlbnRlZEltYWdlKSB7CiAgICAgICAgIC8vIFRoZSBidWZmZXIgY29udGFpbnMgdGhlIGxhc3Qg
cHJlc2VudGVkIGRhdGEsIHNvIHNhdmUgYSBjb3B5IG9mIGl0LgotICAgICAgICBtX3ByZXNlbnRl
ZEltYWdlID0gYnVmZmVyKCktPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlLCBVbnNjYWxlZCk7
CisgICAgICAgIG1fcHJlc2VudGVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICB9CiB9CiAKQEAgLTEwMjgs
NyArMTAyOCw3IEBAIEltYWdlKiBIVE1MQ2FudmFzRWxlbWVudDo6Y29waWVkSW1hZ2UoKSBjb25z
dAogICAgIGlmICghbV9jb3BpZWRJbWFnZSAmJiBidWZmZXIoKSkgewogICAgICAgICBpZiAobV9j
b250ZXh0KQogICAgICAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcygpOwotICAgICAgICBtX2NvcGllZEltYWdlID0gYnVmZmVyKCktPmNvcHlJbWFnZShDb3B5
QmFja2luZ1N0b3JlLCBVbnNjYWxlZCk7CisgICAgICAgIG1fY29waWVkSW1hZ2UgPSBidWZmZXIo
KS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fY29waWVkSW1hZ2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCmluZGV4IDYxNjlmYTQyMjUyOThjZTQxMDdlZmM1NzM3MDA1YTg4ZTYwMTE4NGEuLmE1
MWQzYzliMjljYTRmNDZhMWFmOTM1NmUwNDAzYzJmMTNiZGRjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCkBAIC0xOTc2LDcgKzE5NzYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0
dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUodmlkZW9FbGVtZW50
KSwgZHJhd2luZ0NvbnRleHQoKSA/IGRyYXdpbmdDb250ZXh0KCktPnJlbmRlcmluZ01vZGUoKSA6
IEFjY2VsZXJhdGVkKTsKICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoaW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSh2
aWRlb0VsZW1lbnQpKSk7CiAgICAgCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7
IENhbnZhc1BhdHRlcm46OmNyZWF0ZShJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3Zl
KGltYWdlQnVmZmVyKSwgVW5zY2FsZWQpLnJlbGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVh
dFksIG9yaWdpbkNsZWFuKSB9OworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBD
YW52YXNQYXR0ZXJuOjpjcmVhdGUoSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShp
bWFnZUJ1ZmZlciksIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKS5yZWxlYXNlTm9uTnVsbCgpLCBy
ZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
aW5kZXggZmRiMTBjMDMxY2NlZjM4ZTc0YTBkMTA3NTEwMGNhNjM1N2ZjZmI5YS4uYjM2Y2M4NTZm
NDA1NGEyZDdlZTcwZmIwYWE3YjQ3ZjFmMzVmOTI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtODI0LDcg
KzgyNCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBTdHJpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICAqb3V0RGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoQVNDSUlMaXRlcmFsKCJp
bWFnZS9wbmciKSk7CisgICAgKm91dERhdGFVUkwgPSBzbmFwc2hvdC0+dG9EYXRhVVJMKEFTQ0lJ
TGl0ZXJhbCgiaW1hZ2UvcG5nIiksIHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNv
bnN0IFN0cmluZyYgY29vcmRpbmF0ZVN5c3RlbSwgU3RyaW5nKiBvdXREYXRhVVJMKQpAQCAtODQz
LDcgKzg0Myw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3QoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgeCwgaW50IHksIGluCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICAqb3V0RGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoQVNDSUlMaXRlcmFs
KCJpbWFnZS9wbmciKSk7CisgICAgKm91dERhdGFVUkwgPSBzbmFwc2hvdC0+dG9EYXRhVVJMKEFT
Q0lJTGl0ZXJhbCgiaW1hZ2UvcG5nIiksIHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9u
OjpZZXMpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXJjaGl2ZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIFN0cmluZyogZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVGV4dEluZGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0
b3IuY3BwCmluZGV4IDNiZmE4OTM1NDMyYjIxOTk4NThiZWI3NmJjMzViNTY3YjczYzRiYzEuLjc5
NTQ2NTExODVkOWUzNWU1ZTJhZWUyZDJlZjg5ZjZmNWMwOGE1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBSZWZQdHI8SW1h
Z2U+IHRha2VTbmFwc2hvdChGcmFtZSYgZnJhbWUsIEludFJlY3QgcmVjdCwgU25hcHNob3RPcHRp
b25zIG9wCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHNj
YWxlRmFjdG9yID0gYnVmZmVyLT5yZXNvbHV0aW9uU2NhbGUoKTsKLSAgICByZXR1cm4gSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShidWZmZXIpLCBVbnNjYWxlZCk7CisgICAgcmV0
dXJuIEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoYnVmZmVyKSwgUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpOwogfQogCiBzdGF0aWMgYm9vbCB0YWtlU25hcHNob3RzKFRleHRJbmRp
Y2F0b3JEYXRhJiBkYXRhLCBGcmFtZSYgZnJhbWUsIEludFJlY3Qgc25hcHNob3RSZWN0LCBjb25z
dCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3JkaW5hdGVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXggZTc5N2NjOTJhNDM0MDFlZjUxYTI4
N2EzOGUwOTM0NTkwMjhhNjI4Yy4uYzhhOTRlMDkzZTc3MjI5YzRhNjExNzI5ZWE5ZGVkYjJkOWU4
ZmRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgc3RhdGljIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmEKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5v
ZGUpOwogI2VuZGlmCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5r
SW50b0ltYWdlKFdURk1vdmUoc25hcHNob3QpLCBVbnNjYWxlZCk7CisgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoc25hcHNob3QpLCBQ
cmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQo
KSwgb3JpZW50YXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCmluZGV4IDk3MTJiNWEzOGRkMzkzMzA5OTI0ODc4YmNkNGM0NDg4MWY2
NzJlNDYuLjQ1OWVhZjNjMjA3OTQxNzE0YjE4ZjQzY2YzNzJkYzBmZWZkYjQzNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTMx
MCw3ICszMTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIHNldEltYWdlT2Jz
ZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2so
KTsKIAotICAgICAgICBtX2NhY2hlZEltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUsIFVuc2NhbGVkKTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGJ1ZmZlci0+
Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7
CiAgICAgICAgIGlmICghbV9jYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRl
eCAxZDViMDczNzJkNmQzMWRkOThiNDIzOWQ2ZGU4ZjJiYmJkYzVjYjUxLi5hM2MwMWY0NTA4YTU3
ODI5Y2Y2MTM3YzRiODJmZDc5ZGRiNmY3MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTU1LDkgKzU1LDkgQEAgZW51bSBCYWNraW5n
U3RvcmVDb3B5IHsKICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdz
IG1heSBhZmZlY3QgdGhlIGNvcHkuCiB9OwogCi1lbnVtIFNjYWxlQmVoYXZpb3IgewotICAgIFNj
YWxlZCwKLSAgICBVbnNjYWxlZAorZW51bSBjbGFzcyBQcmVzZXJ2ZVJlc29sdXRpb24geworICAg
IE5vLAorICAgIFllcywKIH07CiAKIGNsYXNzIEltYWdlQnVmZmVyIHsKQEAgLTkwLDggKzkwLDgg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNjYWxl
ZCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZT4gc2lua0lu
dG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBTY2FsZUJlaGF2aW9yID0gU2Nh
bGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpObykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxJbWFnZT4gc2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBQcmVz
ZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKTsKICAgICAvLyBHaXZlIGhp
bnRzIG9uIHRoZSBmYXN0ZXIgY29weUltYWdlIE1vZGUsIHJldHVybiBEb250Q29weUJhY2tpbmdT
dG9yZSBpZiBpdCBzdXBwb3J0cyB0aGUgRG9udENvcHlCYWNraW5nU3RvcmUgYmVoYXZpb3IKICAg
ICAvLyBvciByZXR1cm4gQ29weUJhY2tpbmdTdG9yZSBpZiBpdCBkb2Vzbid0LiAgCiAgICAgc3Rh
dGljIEJhY2tpbmdTdG9yZUNvcHkgZmFzdENvcHlJbWFnZU1vZGUoKTsKQEAgLTEwNCw4ICsxMDQs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXRCeXRlQXJyYXkoY29uc3QgVWludDhDbGFtcGVkQXJy
YXkmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGJ1ZmZlckZvcm1hdCwgY29uc3QgSW50U2l6ZSYg
c291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKTsKICAg
ICAKICAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKLSAgICAKLSAgICBTdHJpbmcg
dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5ID0gc3RkOjpudWxsb3B0LCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5h
dGVTeXN0ZW0pIGNvbnN0OworCisgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCwgUHJl
c2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Q7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHRvQkdSQURhdGEoKSBjb25zdDsKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBib29sJiBzdWNjZXNzKTsK
ICNpZiBVU0UoQ0cpCiAgICAgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VSZWYsIFJlbmRlcmluZ01vZGUsIGJvb2wmIHN1Y2Nl
c3MpOwotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdDsKKyAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiB0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdDsKICNlbGlmIFVT
RShESVJFQ1QyRCkKICAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCosIGJvb2wmIHN1Y2Nlc3MpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4
IGNkNmQwMWM3OGNmOTQ3OTI3MzBjY2FhOGU1NGY3NTFkOWQ1MWJmYjQuLjFiOWQ4MWJkMTIyN2E3
NjkyNTRlYjk1Y2IxNjk5MTkwN2RmN2RjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0y
NjIsMTIgKzI2MiwxMiBAQCBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVyOjpjb250ZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gKm1fZGF0YS5tX2NvbnRleHQ7CiB9CiAKLVJlZlB0cjxJbWFnZT4g
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlciwgU2NhbGVCZWhhdmlvciBzY2FsZUJlaGF2aW9yKQorUmVmUHRyPEltYWdlPiBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewotICAg
IHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlLCBzY2Fs
ZUJlaGF2aW9yKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotUmVmUHRyPEltYWdlPiBJbWFn
ZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJl
aGF2aW9yKSBjb25zdAorUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CiAg
ICAgLy8gY29weUNhaXJvSW1hZ2VTdXJmYWNlIGluaGVyaXRzIHN1cmZhY2UncyBkZXZpY2Ugc2Nh
bGUgZmFjdG9yLgogICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSkKQEAg
LTU2NCw3ICs1NjQsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3Qq
IGltYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBWZWN0b3I8dQogICAgIHJldHVybiBjYWly
b19zdXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oaW1hZ2UsIHdyaXRlRnVuY3Rpb24sIG91dHB1
dCkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7CiB9CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2Rl
ZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsKICAgICBpZiAoZW5jb2RlZEltYWdl
LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggYjA0MTEyYzhhODdiN2NjNTEzNDUxNWE3OTVmZTVl
OGE0YjQxOGVjZS4uODI0ZjlmNzQwZGQzZTAxYWMyOTY2MGZlY2FjNjhjNzczY2M1NThmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKQEAgLTI0OSw5ICsyNDksOSBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbgogICAg
IHJldHVybiBpbWFnZTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1h
Z2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mJiBpbWFnZSwgSW50
U2l6ZSBpbnRlcm5hbFNpemUsIEludFNpemUgbG9naWNhbFNpemUsIEludFNpemUgYmFja2luZ1N0
b3JlU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBTY2FsZUJlaGF2aW9yIHNjYWxlQmVoYXZp
b3IpCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lm
TmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBJbnRTaXplIGludGVybmFsU2l6
ZSwgSW50U2l6ZSBsb2dpY2FsU2l6ZSwgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7
Ci0gICAgaWYgKHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHNjYWxlQmVoYXZpb3IgPT0gVW5zY2Fs
ZWQpCisgICAgaWYgKHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9
PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKTsKICAgICBlbHNlIHsK
ICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwg
bG9naWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2Fs
U2l6ZS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZExhc3QpKTsKQEAgLTI2OCwyNSArMjY4LDI1IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+
CiAgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpOwogfQogCi1S
ZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5
QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3Igc2NhbGVCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxJbWFn
ZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwg
UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEg
fHwgc2NhbGVCZWhhdmlvciA9PSBVbnNjYWxlZCkKKyAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUg
PT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAg
ICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7CiAgICAgZWxzZQog
ICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAK
LSAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEZNb3Zl
KGltYWdlKSwgaW50ZXJuYWxTaXplKCksIGxvZ2ljYWxTaXplKCksIG1fZGF0YS5iYWNraW5nU3Rv
cmVTaXplLCBtX3Jlc29sdXRpb25TY2FsZSwgc2NhbGVCZWhhdmlvcik7CisgICAgcmV0dXJuIGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoV1RGTW92ZShpbWFnZSksIGludGVy
bmFsU2l6ZSgpLCBsb2dpY2FsU2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgbV9yZXNv
bHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKLVJlZlB0cjxJbWFnZT4gSW1h
Z2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciwgU2NhbGVCZWhhdmlvciBzY2FsZUJlaGF2aW9yKQorUmVmUHRyPEltYWdlPiBJbWFn
ZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdl
QnVmZmVyLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewogICAgIElu
dFNpemUgaW50ZXJuYWxTaXplID0gaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpOwogICAgIElu
dFNpemUgbG9naWNhbFNpemUgPSBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKTsKICAgICBJbnRT
aXplIGJhY2tpbmdTdG9yZVNpemUgPSBpbWFnZUJ1ZmZlci0+bV9kYXRhLmJhY2tpbmdTdG9yZVNp
emU7CiAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gaW1hZ2VCdWZmZXItPm1fcmVzb2x1dGlv
blNjYWxlOwogCi0gICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoc2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSksIGludGVybmFsU2l6
ZSwgbG9naWNhbFNpemUsIGJhY2tpbmdTdG9yZVNpemUsIHJlc29sdXRpb25TY2FsZSwgc2NhbGVC
ZWhhdmlvcik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVk
ZWQoc2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSksIGludGVybmFsU2l6
ZSwgbG9naWNhbFNpemUsIGJhY2tpbmdTdG9yZVNpemUsIHJlc29sdXRpb25TY2FsZSwgcHJlc2Vy
dmVSZXNvbHV0aW9uKTsKIH0KIAogQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENv
cHlJbWFnZU1vZGUoKQpAQCAtNTA4LDIxICs1MDgsMjEgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBkYXRhVmVjdG9yKENGRGF0YVJlZiBjZkRhdGEpCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVN0
cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRp
b24pIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8gZGF0YSA9IHRvQ0ZEYXRhKG1pbWVUeXBlLCBxdWFs
aXR5KSkKKyAgICBpZiAoYXV0byBkYXRhID0gdG9DRkRhdGEobWltZVR5cGUsIHF1YWxpdHksIHBy
ZXNlcnZlUmVzb2x1dGlvbikpCiAgICAgICAgIHJldHVybiBkYXRhVVJMKGRhdGEuZ2V0KCksIG1p
bWVUeXBlKTsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkYXRhOiwiKTsKIH0KIAogVmVjdG9y
PHVpbnQ4X3Q+IEltYWdlQnVmZmVyOjp0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8gZGF0YSA9
IHRvQ0ZEYXRhKG1pbWVUeXBlLCBxdWFsaXR5KSkKKyAgICBpZiAoYXV0byBkYXRhID0gdG9DRkRh
dGEobWltZVR5cGUsIHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pKQogICAgICAgICBy
ZXR1cm4gZGF0YVZlY3RvcihkYXRhLmdldCgpKTsKICAgICByZXR1cm4geyB9OwogfQogCi1SZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0CitSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CiAKQEAgLTU0Nyw3ICs1NDcs
NyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlcjo6dG9DRkRhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobG9naWNhbFNpemUoKS53
aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgNCAqIGxvZ2ljYWxTaXplKCku
d2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8
IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2Us
IGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlv
blNjYWxlID09IDEpIHsKKyAgICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwg
cHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CiAgICAgICAg
IGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpbWFn
ZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBpbnRlcm5hbFNp
emUoKSk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCmluZGV4IDhjZjBkZTVjMTY5MzVmZDEy
YjEyNTg5OTA0OTQ2NjUwNWUzMjU0OTUuLmIyM2U2NDc2OWU5ZDQ3Y2JhNzgxMWQxYzhmMGYxNGQ2
ZjIxNGIyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUJ1ZmZlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCBl
bmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHN0ZDo6bwogICAgIHJldHVybiAhZXJyb3I7CiB9CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6
dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gaW1h
Z2VEYXRhID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsKICAgICBpZiAoaW1hZ2VEYXRhLmlz
RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAppbmRleCA3Y2ZlNThlYWQ4N2JkYWU0Yzdl
NWQzZGIzZmRiODVlMjUyMDA1NmVhLi4yOTc2NTUxOWRhMDU0MzYyNTk0ZGRmZGQ0YTJmYjg1YWNi
MGYyNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCkBAIC0xMzcsMTMgKzEzNywxMyBAQCB2
b2lkIEltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKSBjb25zdAogICAgIGNvbnRleHQoKS5mbHVz
aCgpOwogfQogCi1SZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0
b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3Igc2NhbGVCZWhhdmlvcikgY29uc3QK
K1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNv
cHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZm
ZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
ciwgU2NhbGVCZWhhdmlvciBzY2FsZUJlaGF2aW9yKQorUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZl
cjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
LCBQcmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgSW50U2l6ZSBpbnRlcm5hbFNpemUgPSBpbWFn
ZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7CiAgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSA9IGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVBy
ZW11bHRpcGxpCiAgICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBidWZmZXJGb3JtYXQsIHNjYWxl
ZFNvdXJjZVNpemUsIHNjYWxlZFNvdXJjZVJlY3QsIGRlc3RQb2ludCwgaW50ZXJuYWxTaXplKCks
IGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCAxKTsKIH0KIAotU3RyaW5nIEltYWdl
QnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBD
b29yZGluYXRlU3lzdGVtKSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNv
bnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJk
YXRhOiwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDNk
MTE2MmRjZTQ0MDdhZWZiOTdkZWI2MWU4MzM2ODljNDc3YTkwZmIuLjZjMGQ5ZGVlY2Q4ZTVjYzQ3
ZjgxZDQyOGQxZTY0ZjhjZjVlNjhjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAg
ICAgaWYgKGNvbnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252
ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShidWZmZXIpLCBVbnNjYWxlZCk7CisgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoYnVm
ZmVyKSwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcwppbmRleCA2N2YzYmU5
NDZhZjU0MWE1Y2Y0MWI3NjMyZDEzYjFkNmZmNmVjODg3Li5kYzU2ZjkzOTQwOWJhNjE5ODNmMTU3
MmNjZGFmMTY4ZGZmMGQ3MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcwpA
QCAtNDExLDE0ICs0MTEsMjYgQEAgV0kuRE9NVHJlZU1hbmFnZXIgPSBjbGFzcyBET01UcmVlTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAgICAgfQogCi0gICAgcXVlcnlTZWxl
Y3Rvcihub2RlSWQsIHNlbGVjdG9ycywgY2FsbGJhY2spCisgICAgcXVlcnlTZWxlY3Rvcihub2Rl
T3JOb2RlSWQsIHNlbGVjdG9yLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIERPTUFnZW50LnF1
ZXJ5U2VsZWN0b3Iobm9kZUlkLCBzZWxlY3RvcnMsIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhj
YWxsYmFjaykpOworICAgICAgICBsZXQgbm9kZUlkID0gbm9kZU9yTm9kZUlkIGluc3RhbmNlb2Yg
V0kuRE9NTm9kZSA/IG5vZGVPck5vZGVJZC5pZCA6IG5vZGVPck5vZGVJZDsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZW9mIG5vZGVJZCA9PT0gIm51bWJlciIpOworCisgICAgICAgIGlmICh0
eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICBET01BZ2VudC5xdWVy
eVNlbGVjdG9yKG5vZGVJZCwgc2VsZWN0b3IsIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhjYWxs
YmFjaykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gRE9NQWdlbnQucXVlcnlT
ZWxlY3Rvcihub2RlSWQsIHNlbGVjdG9yKS50aGVuKCh7bm9kZUlkfSkgPT4gbm9kZUlkKTsKICAg
ICB9CiAKLSAgICBxdWVyeVNlbGVjdG9yQWxsKG5vZGVJZCwgc2VsZWN0b3JzLCBjYWxsYmFjaykK
KyAgICBxdWVyeVNlbGVjdG9yQWxsKG5vZGVPck5vZGVJZCwgc2VsZWN0b3IsIGNhbGxiYWNrKQog
ICAgIHsKLSAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3RvckFsbChub2RlSWQsIHNlbGVjdG9y
cywgdGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxiYWNrKSk7CisgICAgICAgIGxldCBub2Rl
SWQgPSBub2RlT3JOb2RlSWQgaW5zdGFuY2VvZiBXSS5ET01Ob2RlID8gbm9kZU9yTm9kZUlkLmlk
IDogbm9kZU9yTm9kZUlkOworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygbm9kZUlkID09
PSAibnVtYmVyIik7CisKKyAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgIERPTUFnZW50LnF1ZXJ5U2VsZWN0b3JBbGwobm9kZUlkLCBzZWxlY3Rv
ciwgdGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxiYWNrKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJldHVybiBET01BZ2VudC5xdWVyeVNlbGVjdG9yQWxsKG5vZGVJZCwgc2VsZWN0
b3IpLnRoZW4oKHtub2RlSWRzfSkgPT4gbm9kZUlkcyk7CiAgICAgfQogCiAgICAgaGlnaGxpZ2h0
RE9NTm9kZShub2RlSWQsIG1vZGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWI4YzUzYTM3YTY5YWY2M2U0Y2I3NTBlNzM2
N2E4Zjc2NDE4YTM2YS4uMTJkYWQxMDE0Y2E3ZGY0MTc3NmZmZTI2MzA1ZjE1MjNhY2VjMjFjOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAxLTA0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhcHR1cmUgRWxlbWVudCBTY3JlZW5z
aG90IGxvb2tzIGZ1enp5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzU3MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzODAzMzc3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3Bh
Z2UvaGlkcGktc25hcHNob3Qtc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUuaHRtbDogQWRkZWQuCisKIDIwMTgtMDEt
MDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogYWRkIFJlbW90ZU9iamVjdC5mZXRjaFByb3BlcnRpZXMgYW5kIHNvbWUgYmFzaWMgdGVzdHMg
Zm9yIFJlbW90ZU9iamVjdCBBUEkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
YWdlL2hpZHBpLXNuYXBzaG90LXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3BhZ2UvaGlkcGktc25hcHNob3Qtc2l6ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTEy
YmZmOTNjNDJkYWVkMTNiZDkxYzE5YTlmYWMzMDUwYTMxNTgyYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCBmb3IgUGFnZS5zbmFwc2hvdE5vZGUgb24gSGlEUEkg
c3lzdGVtcy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFBhZ2Uuc25hcHNob3ROb2RlCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogU25hcHNob3RQcmVzZXJ2ZXNQYWdlUmVzb2x1dGlvbgorUEFT
UzogU2NyZWVuc2hvdCdzIHdpZHRoIGluIHBpeGVscyBzaG91bGQgYmUgKENTUyBwaXhlbCB3aWR0
aCkgKiBkZXZpY2VQaXhlbFJhdGlvLgorUEFTUzogU2NyZWVuc2hvdCdzIGhlaWdodCBpbiBwaXhl
bHMgc2hvdWxkIGJlIChDU1MgcGl4ZWwgaGVpZ2h0KSAqIGRldmljZVBpeGVsUmF0aW8uCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wYWdlL2hpZHBpLXNuYXBzaG90LXNpemUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNTAwYzAxODBjN2UxNDcxMzJiMjU5Y2MzZWIwNTNhZGZiNTZkYmQzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3BhZ2UvaGlkcGktc25hcHNo
b3Qtc2l6ZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHByZXBhcmVB
bmRSdW5UZXN0KCkKK3sKKyAgICB3aW5kb3cuc25hcHNob3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImVsZW1lbnQtdG8tc25hcHNob3QiKTsKKworICAgIHJ1blRlc3QoKTsKK30K
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gQSBQTkcgZmlsZSBzdGFydHMgd2l0aCB0aGUg
Ynl0ZXMgODkgNTAgNEUgNDcgMEQgMDEgMUEgMEEsIGZvbGxvd2VkIGJ5IHRoZQorICAgIC8vIElI
RFIgY2h1bmsgdGhhdCBjb250YWlucyB0aGUgc2l6ZS4gSUhEUuKAmXMgY29udGVudCBzdGFydHMg
d2l0aCBhIDQtYnl0ZSB3aWR0aAorICAgIC8vIGFuZCBhIDQtYnl0ZSBoZWlnaHQsIHNvIGEgUE5H
4oCZcyB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBhbHdheXMgYnl0ZXMgMTYtMjQuCisgICAgZnVuY3Rp
b24gc2l6ZU9mUE5HRnJvbURhdGFVUkwoZGF0YVVSTCkgeworICAgICAgICBsZXQgYmFzZTY0ID0g
ZGF0YVVSTC5zdWJzdHIoZGF0YVVSTC5pbmRleE9mKCcsJykgKyAxKTsKKyAgICAgICAgY29uc3Qg
aGVhZGVyID0gYXRvYihiYXNlNjQuc2xpY2UoMCwgNTApKS5zbGljZSgxNiwgMjQpOworICAgICAg
ICBjb25zdCB1aW50OCA9IFVpbnQ4QXJyYXkuZnJvbShoZWFkZXIsIGMgPT4gYy5jaGFyQ29kZUF0
KDApKTsKKyAgICAgICAgY29uc3QgZGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcodWludDguYnVmZmVy
KTsKKworICAgICAgICByZXR1cm4ge3dpZHRoOiBkYXRhVmlldy5nZXRJbnQzMigwKSwgaGVpZ2h0
OiBkYXRhVmlldy5nZXRJbnQzMig0KX07CisgICAgfQorCisgICAgbGV0IGRvY3VtZW50Tm9kZTsK
KworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiUGFnZS5z
bmFwc2hvdE5vZGUiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IlNuYXBzaG90UHJlc2VydmVzUGFnZVJlc29sdXRpb24iLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlZlcmlmeSB0aGF0IGEgbm9kZSBzbmFwc2hvdCBpcyBub3Qgc2NhbGVkIGRvd24gdG8gQ1NTIHBp
eGVscy4iLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRhcmdldEVs
ZW1lbnRJZCA9IGF3YWl0IFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2VsZWN0b3IoZG9jdW1lbnRO
b2RlLmlkLCAiI2VsZW1lbnQtdG8tc25hcHNob3QiKTsKKyAgICAgICAgICAgIGxldCB7ZGF0YVVS
TH0gPSBhd2FpdCBQYWdlQWdlbnQuc25hcHNob3ROb2RlKHRhcmdldEVsZW1lbnRJZCk7CisgICAg
ICAgICAgICBsZXQgZGV2aWNlUGl4ZWxSYXRpbyA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvYCk7CisgICAgICAgICAgICBsZXQgZWxl
bWVudEJvdW5kcyA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdpbmRvdy5z
bmFwc2hvdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClgKQorICAgICAgICAgICAgICAg
IC50aGVuKChvYmplY3QpID0+IG9iamVjdC5mZXRjaFByb3BlcnRpZXMoWyJ3aWR0aCIsICJoZWln
aHQiXSkpOworCisgICAgICAgICAgICAvLyBQZWVrIGludG8gdGhlIGRhdGEgVVJMJ3MgcmF3IFBO
RyBkYXRhIHRvIGdldCB0aGUgc2l6ZS4gRm9yIHZhcmlvdXMgcmVhc29ucywKKyAgICAgICAgICAg
IC8vIHNldHRpbmcgdGhlICdzcmMnIGF0dHJpYnV0ZSBvZiBhbiA8aW1nPiBlbGVtZW50IGlzIHVu
cmVsaWFibGUgdW5kZXIgV0tUUi4KKyAgICAgICAgICAgIGxldCBzY3JlZW5zaG90U2l6ZSA9IHNp
emVPZlBOR0Zyb21EYXRhVVJMKGRhdGFVUkwpOworCisgICAgICAgICAgICAvLyBPbiBhIEAyeCBt
YWNoaW5lLCB0aGUgc2NyZWVuc2hvdCBzaG91bGQgYmUgdHdpY2UgdGhlIHJlYWwgcGl4ZWwgc2l6
ZSBhcyB0aGUgQ1NTIHBpeGVsIHNpemUuCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHNjcmVlbnNob3RTaXplLndpZHRoLCBlbGVtZW50Qm91bmRzLndpZHRoICogZGV2aWNl
UGl4ZWxSYXRpbywgIlNjcmVlbnNob3QncyB3aWR0aCBpbiBwaXhlbHMgc2hvdWxkIGJlIChDU1Mg
cGl4ZWwgd2lkdGgpICogZGV2aWNlUGl4ZWxSYXRpby4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoc2NyZWVuc2hvdFNpemUuaGVpZ2h0LCBlbGVtZW50Qm91bmRzLmhl
aWdodCAqIGRldmljZVBpeGVsUmF0aW8sICJTY3JlZW5zaG90J3MgaGVpZ2h0IGluIHBpeGVscyBz
aG91bGQgYmUgKENTUyBwaXhlbCBoZWlnaHQpICogZGV2aWNlUGl4ZWxSYXRpby4iKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChu
b2RlKSA9PiB7CisgICAgICAgIGRvY3VtZW50Tm9kZSA9IG5vZGU7CisgICAgICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOworICAgIH0pOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InByZXBhcmVBbmRSdW5UZXN0KCkiPgorPHAgaWQ9ImVsZW1lbnQtdG8tc25h
cHNob3QiIHN0eWxlPSJoZWlnaHQ6IDE5OHB4OyB3aWR0aDogMTk4cHg7IGJvcmRlcjogMXB4IHNv
bGlkIGJsYWNrOyI+VGVzdCBmb3IgUGFnZS5zbmFwc2hvdE5vZGUgb24gSGlEUEkgc3lzdGVtcy48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>