<?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>39962</bug_id>
          
          <creation_ts>2010-05-31 10:28:56 -0700</creation_ts>
          <short_desc>Remove hand-rolled JSC bindings for CanvasRenderingContext2D</short_desc>
          <delta_ts>2010-06-29 04:51:42 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>39243</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>39960</dependson>
    
    <dependson>40057</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yaar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232448</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-31 10:28:56 -0700</bug_when>
    <thetext>CodeGeneratorJS.pm supports overloading now, so we can get rid of most of JSCanvasRenderingContext2DCustom.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232452</commentid>
    <comment_count>1</comment_count>
      <attachid>57479</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-31 10:33:07 -0700</bug_when>
    <thetext>Created attachment 57479
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232453</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-31 10:33:57 -0700</bug_when>
    <thetext>Note that this won&apos;t compile until bug 39960 is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232455</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-05-31 10:45:18 -0700</bug_when>
    <thetext>Attachment 57479 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/2777014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232463</commentid>
    <comment_count>4</comment_count>
      <attachid>57479</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-31 10:58:33 -0700</bug_when>
    <thetext>Comment on attachment 57479
Proposed patch

Great change!

&gt; +        No new tests as there is no new functionality.

Are there tests for each of these overload cases? If not, then I think we do need tests, even though these code paths are not new. It looks to me like some of these hand-written bindings have different handling for things like too many arguments. It would be straightforward to write some tests that cover all these cases, and I&apos;d like to see that to provde that the hand-rolled code did not behave any differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232477</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 11:31:16 -0700</bug_when>
    <thetext>Attachment 57479 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/2752009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232481</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 11:38:09 -0700</bug_when>
    <thetext>Attachment 57479 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/2825014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233258</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-02 07:29:59 -0700</bug_when>
    <thetext>I looked into how functions should behave when called with the wrong number of arguments, and opened bug 40057 to make WebKit do the right thing bottom-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233322</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-02 10:38:12 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 21257 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233324</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-02 10:38:37 -0700</bug_when>
    <thetext>Oops, did this to the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237339</commentid>
    <comment_count>10</comment_count>
      <attachid>58566</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-12 14:56:46 -0700</bug_when>
    <thetext>Created attachment 58566
Proposed patch v2

I wasn&apos;t sure what to do with this, so I test for the previous behavior, and expect the new behavior which won&apos;t match in many cases.
That said, the discrepancies look fairly harmless to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237377</commentid>
    <comment_count>11</comment_count>
      <attachid>58566</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-12 17:48:19 -0700</bug_when>
    <thetext>Comment on attachment 58566
Proposed patch v2

The way I see it we have two separate issues:

    1) Hand-generation vs. auto-generation.

    2) Handling of missing arguments.

I would like to see a patch that only changes use from hand-generation to auto-generation, and then a separate patch to change handling of missing arguments. The former patch should be done right away! The latter, requires some though about how to keep existing code working. I believe there is quite a bit of code that depends on the current behavior, although mainly in Apple-specific products. Longer term it would be best to match other browsers, but the path from here to there may require some sort of compatibility mode.

I can’t tell from this patch whether it does or does not change the handling of missing arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237385</commentid>
    <comment_count>12</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-12 18:00:53 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I would like to see a patch that only changes use from hand-generation to auto-generation, and then a separate patch to change handling of missing arguments.

And how should we do this without custom bindings? I doubt we&apos;d want to specialize CodeGeneratorJS.pm for the idiosyncratic behaviors formerly found in  JSCanvasRenderingContext2DCustom.cpp

&gt; The former patch should be done right away!

So you&apos;d be OK with an intermediate state (auto-generated code that behaves slightly differently) while we think up a better solution for missing arguments?

&gt; Longer term it would be best to match other browsers, but the path from here to there may require some sort of compatibility mode.

I like the sound of that. And count bug 21257 in as well, please ;-)

&gt; I can’t tell from this patch whether it does or does not change the handling of missing arguments.

It does, implicitly, since generated bindings handle things differently than the hand-rolled code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237398</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-12 18:48:57 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; I would like to see a patch that only changes use from hand-generation to auto-generation, and then a separate patch to change handling of missing arguments.
&gt; 
&gt; And how should we do this without custom bindings? I doubt we&apos;d want to specialize CodeGeneratorJS.pm for the idiosyncratic behaviors formerly found in  JSCanvasRenderingContext2DCustom.cpp

I think we can get 99% of the behavior by having many arguments optional. Maybe you can give me examples of old behavior we can&apos;t reproduce with that alone. Those may be changes we can live with.

&gt; &gt; The former patch should be done right away!
&gt; 
&gt; So you&apos;d be OK with an intermediate state (auto-generated code that behaves slightly differently) while we think up a better solution for missing arguments?

No.

&gt; &gt; Longer term it would be best to match other browsers, but the path from here to there may require some sort of compatibility mode.
&gt; 
&gt; I like the sound of that. And count bug 21257 in as well, please ;-)

I wish we could just wave a magic wad and do it the way that seems cleanest now. But keeping compatible does end up being hard work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237428</commentid>
    <comment_count>14</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-12 19:11:10 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I think we can get 99% of the behavior by having many arguments optional. Maybe you can give me examples of old behavior we can&apos;t reproduce with that alone. Those may be changes we can live with.

Right, I&apos;ll sort this tomorrow (4AM here..) Thanks for your input thus far.

&gt; I wish we could just wave a magic wad and do it the way that seems cleanest now. But keeping compatible does end up being hard work.

Absolutely. A compatibility mode is a fair compromise IMO. And I&apos;m not at all opposed to doing said work myself, though I may need some spiritual guidance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237561</commentid>
    <comment_count>15</comment_count>
      <attachid>58593</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-13 08:18:24 -0700</bug_when>
    <thetext>Created attachment 58593
Patch to replace hand-rolled overloads with autogenerated ones

Part 1 of 2 - handling of missing arguments coming soon..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237597</commentid>
    <comment_count>16</comment_count>
      <attachid>58601</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-13 12:22:25 -0700</bug_when>
    <thetext>Created attachment 58601
Patch to ignore superfluous arguments to IDL overloads

Part 2 of X (!) - make auto-generated overloads behave as the current custom code - ignore any extra arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237598</commentid>
    <comment_count>17</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-13 12:35:32 -0700</bug_when>
    <thetext>Remaining failures from original test:

&gt; ctx.fillText() should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.fillText(&apos;moo&apos;) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.fillText(&apos;moo&apos;,0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.fillText(&apos;moo&apos;,0,0,0,0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.strokeText() should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.strokeText(&apos;moo&apos;) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.strokeText(&apos;moo&apos;,0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.strokeText(&apos;moo&apos;,0,0,0,0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.setStrokeColor(0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.setStrokeColor(0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.setFillColor(0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.setFillColor(0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.drawImage(imageElement, 0, 0) should be undefined. Threw exception Error: INDEX_SIZE_ERR: DOM Exception 1
&gt; ctx.drawImage(canvasElement, 0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.drawImage(canvasElement, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0) should throw Error: INDEX_SIZE_ERR: DOM Exception 1. Was undefined.
&gt; ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.drawImage(canvasElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Was undefined.
&gt; ctx.createImageData(0, 0, 0) should be null. Threw exception Error: INDEX_SIZE_ERR: DOM Exception 1

Auto-generated code is more permissive than custom bindings.

&gt; ctx.setStrokeColor() should throw SyntaxError: Syntax error. Threw exception TypeError: Type error.
&gt; ctx.setFillColor() should throw SyntaxError: Syntax error. Threw exception TypeError: Type error.
&gt; ctx.createImageData(0) should throw Error: NOT_SUPPORTED_ERR: DOM Exception 9. Threw exception TypeError: Type error.
&gt; ctx.drawImage(imageElement) should throw SyntaxError: Syntax error. Threw exception TypeError: Type error.
&gt; ctx.drawImage(imageElement, 0) should throw SyntaxError: Syntax error. Threw exception TypeError: Type error.
&gt; ctx.drawImage(imageElement, 0, 0, 0) should throw SyntaxError: Syntax error. Threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
&gt; ctx.drawImage(imageElement, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
&gt; ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
&gt; ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
&gt; ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
&gt; ctx.drawImage(imageElement, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) should throw SyntaxError: Syntax error. Threw exception Error: INDEX_SIZE_ERR: DOM Exception 1.
&gt; ctx.drawImage(canvasElement) should throw SyntaxError: Syntax error. Threw exception TypeError: Type error.
&gt; ctx.drawImage(canvasElement, 0) should throw SyntaxError: Syntax error. Threw exception TypeError: Type error.
&gt; ctx.createPattern(imageElement) should throw Error: SYNTAX_ERR: DOM Exception 12. Threw exception TypeError: Type error.
&gt; ctx.createPattern(canvasElement) should throw Error: SYNTAX_ERR: DOM Exception 12. Threw exception TypeError: Type error.

Auto-generated and custom bindings both throw, but different exceptions.

&gt; ctx.createImageData() should be null. Threw exception TypeError: Type error

This one would need some finagling with making the first argument optional etc.

&gt; ctx.putImageData(imageData, 0, 0, 0) should be undefined. Threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9
&gt; ctx.putImageData(imageData, 0, 0, 0, 0) should be undefined. Threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9
&gt; ctx.putImageData(imageData, 0, 0, 0, 0, 0) should be undefined. Threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9

Missing arguments become NaN instead of 0, hence the NOT_SUPPORTED_ERR.
I guess we could add some custom IDL attribute like [PassZeroForMissingArguments].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237599</commentid>
    <comment_count>18</comment_count>
      <attachid>58602</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-13 12:43:29 -0700</bug_when>
    <thetext>Created attachment 58602
Patch that just adds the LayoutTest

Part 3 of X - The LayoutTest. should*() values are the old behavior, -expected.txt is the new behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244206</commentid>
    <comment_count>19</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-29 04:51:09 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 39243 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57479</attachid>
            <date>2010-05-31 10:33:07 -0700</date>
            <delta_ts>2010-06-12 14:56:46 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-39962.diff</filename>
            <type>text/plain</type>
            <size>21655</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWVkOWY3ZS4uN2YxYjFlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNS0zMSAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBoYW5kLXJvbGxlZCBvdmVybG9hZHMgaW4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEIEpTQyBiaW5kaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTYyCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGFzIHRoZXJlIGlzIG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBSZW1vdmUgb3ZlcmxvYWRz
CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6IEdlbmVyYXRlTmF0aXZlQ29u
dmVydGVyCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbDogR2VuZXJhdGVOYXRp
dmVDb252ZXJ0ZXIKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOiBHZW5lcmF0
ZU5hdGl2ZUNvbnZlcnRlcgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5pZGw6IFJlbW92ZSBvdmVybG9hZHMKKwogMjAxMC0wNS0zMSAgU3RldmUgQmxvY2sg
IDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjYwMDY5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAppbmRleCA0MTZmOTc2Li4zZWZjNjFhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3VzdG9tLmNwcApAQCAtMjYsMTUgKzI2LDkgQEAKICNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSAiSlNDYW52YXNHcmFkaWVudC5oIgogI2luY2x1ZGUgIkpTQ2FudmFzUGF0dGVybi5o
IgotI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxJbWFn
ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJK
U0ltYWdlRGF0YS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KIApAQCAtODksMzQ4ICs4
Myw0IEBAIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgY29udGV4dC0+c2V0RmlsbFN0eWxlKHRv
SFRNTENhbnZhc1N0eWxlKGV4ZWMsIHZhbHVlKSk7CiB9CiAKLUpTVmFsdWUgSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKj4oaW1wbCgpKTsKLQotICAgIC8vIHN0cmluZyBhcmcgPSBuYW1lZCBjb2xv
cgotICAgIC8vIG51bWJlciBhcmcgPSBncmF5IGNvbG9yCi0gICAgLy8gc3RyaW5nIGFyZywgbnVt
YmVyIGFyZyA9IG5hbWVkIGNvbG9yLCBhbHBoYQotICAgIC8vIG51bWJlciBhcmcsIG51bWJlciBh
cmcgPSBncmF5IGNvbG9yLCBhbHBoYQotICAgIC8vIDQgYXJncyA9IHIsIGcsIGIsIGEKLSAgICAv
LyA1IGFyZ3MgPSBjLCBtLCB5LCBrLCBhCi0gICAgc3dpdGNoIChleGVjLT5hcmd1bWVudENvdW50
KCkpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDAp
LmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHVzdHJp
bmdUb1N0cmluZyhhc1N0cmluZyhleGVjLT5hcmd1bWVudCgwKSktPnZhbHVlKGV4ZWMpKSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGV4
ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudCgwKS5pc1N0cmluZygp
KQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih1c3RyaW5nVG9TdHJpbmco
YXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkpLT52YWx1ZShleGVjKSksIGV4ZWMtPmFyZ3VtZW50
KDEpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVj
LT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIDQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZXhlYy0+YXJndW1l
bnQoMCkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0
KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
ZXhlYy0+YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9h
dChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVu
dCgyKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLCBleGVj
LT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJy
b3IpOwotICAgIH0KLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0gICAgCi0KLUpTVmFsdWUg
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKEV4ZWNTdGF0ZSogZXhl
YykKLXsgCi0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4oaW1wbCgpKTsKLQotICAgIC8vIHN0cmluZyBh
cmcgPSBuYW1lZCBjb2xvcgotICAgIC8vIG51bWJlciBhcmcgPSBncmF5IGNvbG9yCi0gICAgLy8g
c3RyaW5nIGFyZywgbnVtYmVyIGFyZyA9IG5hbWVkIGNvbG9yLCBhbHBoYQotICAgIC8vIG51bWJl
ciBhcmcsIG51bWJlciBhcmcgPSBncmF5IGNvbG9yLCBhbHBoYQotICAgIC8vIDQgYXJncyA9IHIs
IGcsIGIsIGEKLSAgICAvLyA1IGFyZ3MgPSBjLCBtLCB5LCBrLCBhCi0gICAgc3dpdGNoIChleGVj
LT5hcmd1bWVudENvdW50KCkpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IodXN0cmluZ1RvU3RyaW5nKGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApKS0+
dmFsdWUoZXhlYykpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VDb2xvcihleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoZXhlYy0+YXJn
dW1lbnQoMCkuaXNTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VD
b2xvcih1c3RyaW5nVG9TdHJpbmcoYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkpLT52YWx1ZShl
eGVjKSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGV4ZWMtPmFyZ3VtZW50
KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYykpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3Vt
ZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgzKS50b0Zs
b2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDU6Ci0gICAgICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4
ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoMykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoNCkudG9GbG9hdChleGVj
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnN0cm9rZVJlY3QoRXhlY1N0YXRlKiBleGVjKQoteyAKLSAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQq
PihpbXBsKCkpOwotICAgIAotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gNCkKLSAg
ICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMp
LCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMp
LnRvRmxvYXQoZXhlYykpOwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChl
eGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0
KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRv
RmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3Vt
ZW50KDQpLnRvRmxvYXQoZXhlYykpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7ICAgIAot
fQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoRXhlY1N0
YXRlKiBleGVjKQoteyAKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBz
dGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgLy8g
RHJhd0ltYWdlIGhhcyB0aHJlZSB2YXJpYW50czoKLSAgICAvLyAgICAgZHJhd0ltYWdlKGltZywg
ZHgsIGR5KQotICAgIC8vICAgICBkcmF3SW1hZ2UoaW1nLCBkeCwgZHksIGR3LCBkaCkKLSAgICAv
LyAgICAgZHJhd0ltYWdlKGltZywgc3gsIHN5LCBzdywgc2gsIGR4LCBkeSwgZHcsIGRoKQotICAg
IC8vIENvbXBvc2l0ZSBvcGVyYXRpb24gaXMgc3BlY2lmaWVkIHdpdGggZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0aW9uLgotICAgIC8vIFRoZSBpbWcgcGFyYW1ldGVyIGNhbiBiZSBhIDxpbWc+IG9yIDxj
YW52YXM+IGVsZW1lbnQuCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwot
ICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgVHlwZUVycm9yKTsKLSAgICBKU09iamVjdCogbyA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICAK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoby0+aW5oZXJpdHMoJkpTSFRNTElt
YWdlRWxlbWVudDo6c19pbmZvKSkgewotICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWdFbHQg
PSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVu
dCo+KG8pLT5pbXBsKCkpOwotICAgICAgICBzd2l0Y2ggKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkg
ewotICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShpbWdFbHQsIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50
KDIpLnRvRmxvYXQoZXhlYyksIGVjKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgNToKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1nRWx0LCBl
eGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0
KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVu
dCgzKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLCBlYyk7
Ci0gICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3SW1hZ2UoaW1nRWx0LCBGbG9hdFJlY3QoZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChl
eGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMykudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoNCkudG9GbG9hdChleGVjKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZsb2F0UmVjdChleGVjLT5hcmd1bWVudCg1KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5h
cmd1bWVudCg2KS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGVjLT5hcmd1bWVudCg3KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg4KS50
b0Zsb2F0KGV4ZWMpKSwgZWMpOwotICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKLSAgICAg
ICAgfQotICAgIH0gZWxzZSBpZiAoby0+aW5oZXJpdHMoJkpTSFRNTENhbnZhc0VsZW1lbnQ6OnNf
aW5mbykpIHsKLSAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IHN0YXRpY19jYXN0
PEhUTUxDYW52YXNFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KG8pLT5pbXBs
KCkpOwotICAgICAgICBzd2l0Y2ggKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICAg
ICAgY2FzZSAzOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShjYW52YXMsIGV4
ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQo
ZXhlYyksIGVjKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgNToK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoY2FudmFzLCBleGVjLT5hcmd1bWVu
dCgxKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0
KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0gICAgICAgICAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
Y2FudmFzLCBGbG9hdFJlY3QoZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+YXJndW1lbnQoMykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoNCku
dG9GbG9hdChleGVjKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0
UmVjdChleGVjLT5hcmd1bWVudCg1KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg2KS50
b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5h
cmd1bWVudCg3KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg4KS50b0Zsb2F0KGV4ZWMp
KSwgZWMpOwotICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKLSAgICAgICAgfQotI2lmIEVO
QUJMRShWSURFTykKLSAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRzKCZKU0hUTUxWaWRlb0VsZW1l
bnQ6OnNfaW5mbykpIHsKLSAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvID0gc3Rh
dGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTEVsZW1lbnQqPihv
KS0+aW1wbCgpKTsKLSAgICAgICAgICAgIHN3aXRjaCAoZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5k
cmF3SW1hZ2UodmlkZW8sIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFy
Z3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGVjKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5k
cmF3SW1hZ2UodmlkZW8sIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFy
Z3VtZW50KDIpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg0
KS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgOToKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHZpZGVvLCBG
bG9hdFJlY3QoZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQo
MikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxv
YXQoZXhlYykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRS
ZWN0KGV4ZWMtPmFyZ3VtZW50KDUpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDYpLnRv
RmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT5hcmd1bWVudCg3KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg4KS50b0Zsb2F0KGV4
ZWMpKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7
Ci0gICAgICAgIH0KLSNlbmRpZgotICAgIH0gZWxzZSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOyAgICAKLX0KLQotSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZHJhd0ltYWdlRnJvbVJlY3QoRXhlY1N0YXRlKiBleGVjKQoteyAKLSAgICBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQqPihpbXBsKCkpOwotICAgIAotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNPYmplY3QqIG8gPSBhc09iamVjdCh2YWx1ZSk7Ci0g
ICAgCi0gICAgaWYgKCFvLT5pbmhlcml0cygmSlNIVE1MSW1hZ2VFbGVtZW50OjpzX2luZm8pKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIGNvbnRleHQt
PmRyYXdJbWFnZUZyb21SZWN0KHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihzdGF0aWNf
Y2FzdDxKU0hUTUxFbGVtZW50Kj4obyktPmltcGwoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQo
MikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5h
cmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDUpLnRvRmxv
YXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDYpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoNykudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoOCkudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoOSkudG9TdHJpbmcoZXhlYykpKTsgICAg
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coRXhlY1N0YXRlKiBleGVjKQoteyAKLSAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgc3dpdGNoIChleGVjLT5hcmd1bWVudENvdW50
KCkpIHsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4
ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQo
ZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMiku
dG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAg
ICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDMpLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYyksIGV4
ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIHVzdHJpbmdUb1N0cmlu
Zyhhc1N0cmluZyhleGVjLT5hcmd1bWVudCgzKSktPnZhbHVlKGV4ZWMpKSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50
KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQo
ZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgNToKLSAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudCgzKS5p
c1N0cmluZygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhleGVjLT5hcmd1
bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zs
b2F0KGV4ZWMpLCB1c3RyaW5nVG9TdHJpbmcoYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMykpLT52
YWx1ZShleGVjKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFy
Z3VtZW50KDQpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnNldFNoYWRvdyhleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBl
eGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVu
dCgzKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIDc6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coZXhlYy0+YXJndW1l
bnQoMCkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4
ZWMpLCBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3Vt
ZW50KDUpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Yy0+YXJndW1lbnQoNikudG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSA4OgotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50
KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVj
KSwgZXhlYy0+YXJndW1lbnQoMykudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVu
dCg1KS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMt
PmFyZ3VtZW50KDYpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDcpLnRvRmxvYXQoZXhl
YykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOyAgICAKLX0KLQotSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Y3JlYXRlUGF0dGVybihFeGVjU3RhdGUqIGV4ZWMpCi17IAotICAgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCo+KGltcGwoKSk7Ci0KLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7Ci0gICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTT2JqZWN0KiBvID0gYXNPYmplY3QodmFsdWUpOwot
Ci0gICAgaWYgKG8tPmluaGVyaXRzKCZKU0hUTUxJbWFnZUVsZW1lbnQ6OnNfaW5mbykpIHsKLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgSlNWYWx1ZSBwYXR0ZXJuID0gdG9KUyhl
eGVjLAotICAgICAgICAgICAgY29udGV4dC0+Y3JlYXRlUGF0dGVybihzdGF0aWNfY2FzdDxIVE1M
SW1hZ2VFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KG8pLT5pbXBsKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVRvU3RyaW5nV2l0aE51bGxD
aGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgxKSksIGVjKS5nZXQoKSk7Ci0gICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgIHJldHVybiBwYXR0ZXJuOwotICAgIH0KLSAg
ICBpZiAoby0+aW5oZXJpdHMoJkpTSFRNTENhbnZhc0VsZW1lbnQ6OnNfaW5mbykpIHsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgSlNWYWx1ZSBwYXR0ZXJuID0gdG9KUyhleGVj
LAotICAgICAgICAgICAgY29udGV4dC0+Y3JlYXRlUGF0dGVybihzdGF0aWNfY2FzdDxIVE1MQ2Fu
dmFzRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTEVsZW1lbnQqPihvKS0+aW1wbCgpKSwKLSAg
ICAgICAgICAgICAgICB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1
bWVudCgxKSksIGVjKS5nZXQoKSk7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
Ci0gICAgICAgIHJldHVybiBwYXR0ZXJuOwotICAgIH0KLSAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1K
U1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVJbWFnZURhdGEoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIC8vIGNyZWF0ZUltYWdlRGF0YSBoYXMgdHdvIHZhcmlhbnRzCi0g
ICAgLy8gY3JlYXRlSW1hZ2VEYXRhKEltYWdlRGF0YSkKLSAgICAvLyBjcmVhdGVJbWFnZURhdGEo
d2lkdGgsIGhlaWdodCkKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBz
dGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotICAgIFJlZlB0
cjxJbWFnZURhdGE+IGltYWdlRGF0YSA9IDA7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpCi0gICAgICAgIGltYWdlRGF0YSA9
IGNvbnRleHQtPmNyZWF0ZUltYWdlRGF0YSh0b0ltYWdlRGF0YShleGVjLT5hcmd1bWVudCgwKSks
IGVjKTsKLSAgICBlbHNlIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMikKLSAgICAgICAg
aW1hZ2VEYXRhID0gY29udGV4dC0+Y3JlYXRlSW1hZ2VEYXRhKGV4ZWMtPmFyZ3VtZW50KDApLnRv
RmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGVjKTsKLQotICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKGltYWdlRGF0YSkpOwotfQotCi1KU1ZhbHVlIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpwdXRJbWFnZURhdGEoRXhlY1N0YXRlKiBleGVjKQotewotICAg
IC8vIHB1dEltYWdlRGF0YSBoYXMgdHdvIHZhcmlhbnRzCi0gICAgLy8gcHV0SW1hZ2VEYXRhKElt
YWdlRGF0YSwgeCwgeSkKLSAgICAvLyBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhLCB4LCB5LCBkaXJ0
eVgsIGRpcnR5WSwgZGlydHlXaWR0aCwgZGlydHlIZWlnaHQpCi0gICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Kj4oaW1wbCgpKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPj0gNykKLSAgICAgICAgY29udGV4dC0+cHV0SW1hZ2VEYXRhKHRvSW1h
Z2VEYXRhKGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVj
KSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVu
dCg0KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg1KS50b0Zsb2F0KGV4ZWMpLCBleGVj
LT5hcmd1bWVudCg2KS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0gICAgZWxzZQotICAgICAgICBjb250
ZXh0LT5wdXRJbWFnZURhdGEodG9JbWFnZURhdGEoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLT5h
cmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMp
LCBlYyk7Ci0KLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxs
VGV4dChFeGVjU3RhdGUqIGV4ZWMpCi17IAotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCog
Y29udGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+KGltcGwoKSk7
Ci0KLSAgICAvLyBzdHJpbmcgYXJnID0gdGV4dCB0byBkcmF3Ci0gICAgLy8gbnVtYmVyIGFyZyA9
IHgKLSAgICAvLyBudW1iZXIgYXJnID0geQotICAgIC8vIG9wdGlvbmFsIG51bWJlciBhcmcgPSBt
YXhXaWR0aAotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzIHx8IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA+IDQpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVy
cm9yKTsKLSAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDQpCi0gICAgICAg
IGNvbnRleHQtPmZpbGxUZXh0KHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3Vt
ZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwot
ICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+ZmlsbFRleHQodXN0cmluZ1RvU3RyaW5nKGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChl
eGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSk7Ci0gICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9r
ZVRleHQoRXhlY1N0YXRlKiBleGVjKQoteyAKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQq
IGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkp
OwotCi0gICAgLy8gc3RyaW5nIGFyZyA9IHRleHQgdG8gZHJhdwotICAgIC8vIG51bWJlciBhcmcg
PSB4Ci0gICAgLy8gbnVtYmVyIGFyZyA9IHkKLSAgICAvLyBvcHRpb25hbCBudW1iZXIgYXJnID0g
bWF4V2lkdGgKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMyB8fCBleGVjLT5hcmd1
bWVudENvdW50KCkgPiA0KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhF
cnJvcik7Ci0gICAgCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSA0KQotICAgICAg
ICBjb250ZXh0LT5zdHJva2VUZXh0KHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFy
Z3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykp
OwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlVGV4dCh1c3RyaW5nVG9TdHJpbmco
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zs
b2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5pZGwKaW5kZXggZWE3Zjk4Mi4uOGM1ODhmYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaWRsCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRl
cmZhY2UgWwotICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24KKyAgICAgICAgQ3VzdG9tTWFya0Z1
bmN0aW9uLAorICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlcgogICAgIF0gSFRNTENhbnZh
c0VsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKICAgICAgICAgYXR0cmlidXRlIGxvbmcgd2lkdGg7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwgYi9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKaW5kZXggMzg2MjUzOS4uYTVhNDY4ZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmlkbApAQCAtMjAsNyArMjAsOSBAQAogCiBtb2R1bGUgaHRtbCB7
CiAKLSAgICBpbnRlcmZhY2UgSFRNTEltYWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKKyAgICBp
bnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlcgorICAgIF0gSFRNTElt
YWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERP
TVN0cmluZyBhbGlnbjsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3RyaW5nIGFsdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmlkbAppbmRleCAxYjIxYzU0Li45NTNlNDQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRs
CkBAIC0yNCw3ICsyNCwxMCBAQAogICovCiAKIG1vZHVsZSBodG1sIHsKLSAgICBpbnRlcmZhY2Ug
W0NvbmRpdGlvbmFsPVZJREVPXSBIVE1MVmlkZW9FbGVtZW50IDogSFRNTE1lZGlhRWxlbWVudCB7
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAgICAgIEdl
bmVyYXRlTmF0aXZlQ29udmVydGVyCisgICAgXSBIVE1MVmlkZW9FbGVtZW50IDogSFRNTE1lZGlh
RWxlbWVudCB7CiAgICAgICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgICAg
ICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIHZpZGVvV2lkdGg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgYi9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKaW5kZXggZGE0ZGQ3Mi4uMjRjZTNjMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRs
CisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApA
QCAtOTcsNyArOTcsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgdm9pZCBjbGVhclNoYWRv
dygpOwogCi0jaWYgZGVmaW5lZChWOF9CSU5ESU5HKSAmJiBWOF9CSU5ESU5HCiAgICAgICAgIHZv
aWQgZmlsbFRleHQoaW4gRE9NU3RyaW5nIHRleHQsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGlu
IFtPcHRpb25hbF0gZmxvYXQgbWF4V2lkdGgpOwogICAgICAgICB2b2lkIHN0cm9rZVRleHQoaW4g
RE9NU3RyaW5nIHRleHQsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIFtPcHRpb25hbF0gZmxv
YXQgbWF4V2lkdGgpOwogCkBAIC0xNTIsMjAgKzE1MSw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgSW1hZ2VEYXRhIGNyZWF0ZUlt
YWdlRGF0YShpbiBmbG9hdCBzdywgaW4gZmxvYXQgc2gpCiAgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7Ci0jZWxzZQotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlICdlbHNlJyBvbmNl
IEpTQyBzdXBwb3J0cyBvdmVybG9hZHMgdG9vLgotICAgICAgICBbQ3VzdG9tXSB2b2lkIGZpbGxU
ZXh0KC8qIDQgKi8pOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHN0cm9rZVRleHQoLyogNCAqLyk7
Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0U3Ryb2tlQ29sb3IoLyogMSAgKi8pOwotICAgICAg
ICBbQ3VzdG9tXSB2b2lkIHNldEZpbGxDb2xvcigvKiAxICovKTsKLSAgICAgICAgW0N1c3RvbV0g
dm9pZCBzdHJva2VSZWN0KC8qIDQgKi8pOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGRyYXdJbWFn
ZSgvKiAzICovKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBkcmF3SW1hZ2VGcm9tUmVjdCgvKiAx
MCAqLyk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0U2hhZG93KC8qIDMgKi8pOwotICAgICAg
ICBbQ3VzdG9tXSB2b2lkIGNyZWF0ZVBhdHRlcm4oLyogMiAqLyk7Ci0gICAgICAgIFtDdXN0b21d
IHZvaWQgcHV0SW1hZ2VEYXRhKC8qIGluIEltYWdlRGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4
LCBpbiBmbG9hdCBkeSBbLCBpbiBmbG9hdCBkaXJ0eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxv
YXQgZGlydHlXaWR0aCwgaW4gZmxvYXQgZGlydHlIZWlnaHRdICovKTsKLSAgICAgICAgW0N1c3Rv
bV0gSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YSgvKiAzICovKTsKLSNlbmRpZiAvLyBkZWZpbmVk
KFY4X0JJTkRJTkcpCiAKICAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIGN1c3RvbSBzdHJva2VT
dHlsZTsKICAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIGN1c3RvbSBmaWxsU3R5bGU7Cg==
</data>
<flag name="review"
          id="42072"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58566</attachid>
            <date>2010-06-12 14:56:46 -0700</date>
            <delta_ts>2010-06-13 08:18:24 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-39962-v3.diff</filename>
            <type>text/plain</type>
            <size>36106</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMWU2Y2QyLi4yNjE5MGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDYt
MTIgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgaGFuZC1yb2xsZWQg
b3ZlcmxvYWRzIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBKU0MgYmluZGluZ3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk2MgorCisgICAg
ICAgIEFkZGVkIGEgdGVzdCB0aGF0IGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGJlaGF2aW9yIG9m
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBvdmVybG9hZHMKKyAgICAgICAgcmU6IGZ1bmN0aW9u
IGFyZ3VtZW50IGNvdW50cyAod2hpY2ggd29uJ3QgYmUgbWF0Y2hlZCBpbiBtYW55IGNhc2VzLikK
KyAgICAgICAgTmVpdGhlciBiZWhhdmlvciBpcyBuZWNlc3NhcmlseSBjb3JyZWN0IGFjY29yZGlu
ZyB0byBXZWJJREwvSFRNTDUgdGhvdWdoLgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFz
LWNvbnRleHQtb3ZlcmxvYWRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWNvbnRleHQtb3ZlcmxvYWRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMuanM6IEFkZGVk
LgorCiAyMDEwLTA2LTEyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1jb250ZXh0LW92ZXJsb2Fkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYmYzNjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOTMgQEAKK1Rlc3QgdGhhdCB0aGUgdmFyaW91cyBvdmVybG9hZHMg
aW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGJlaGF2ZSBhcyB0aGV5J3ZlIGRvbmUgYmVmb3Jl
LiBOZWl0aGVyIHJlc3VsdCBzZXQgaXMgbmVjZXNzYXJpbHkgY29ycmVjdCwgYnV0IHRoaXMgdGVz
dCBpbGx1c3RyYXRlcyB0aGUgZGlzY3JlcGFuY3kuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitGQUlMIGN0eC5maWxsVGV4dCgpIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3lu
dGF4IGVycm9yLiBXYXMgdW5kZWZpbmVkLgorRkFJTCBjdHguZmlsbFRleHQoJ21vbycpIHNob3Vs
ZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLiBXYXMgdW5kZWZpbmVkLgorRkFJTCBj
dHguZmlsbFRleHQoJ21vbycsMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJy
b3IuIFdhcyB1bmRlZmluZWQuCitQQVNTIGN0eC5maWxsVGV4dCgnbW9vJywwLDApIGlzIHVuZGVm
aW5lZAorUEFTUyBjdHguZmlsbFRleHQoJ21vbycsMCwwLDApIGlzIHVuZGVmaW5lZAorRkFJTCBj
dHguZmlsbFRleHQoJ21vbycsMCwwLDAsMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50
YXggZXJyb3IuIFdhcyB1bmRlZmluZWQuCitGQUlMIGN0eC5zdHJva2VUZXh0KCkgc2hvdWxkIHRo
cm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFdhcyB1bmRlZmluZWQuCitGQUlMIGN0eC5z
dHJva2VUZXh0KCdtb28nKSBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4g
V2FzIHVuZGVmaW5lZC4KK0ZBSUwgY3R4LnN0cm9rZVRleHQoJ21vbycsMCkgc2hvdWxkIHRocm93
IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFdhcyB1bmRlZmluZWQuCitQQVNTIGN0eC5zdHJv
a2VUZXh0KCdtb28nLDAsMCkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5zdHJva2VUZXh0KCdtb28n
LDAsMCwwKSBpcyB1bmRlZmluZWQKK0ZBSUwgY3R4LnN0cm9rZVRleHQoJ21vbycsMCwwLDAsMCkg
c2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFdhcyB1bmRlZmluZWQuCitG
QUlMIGN0eC5zZXRTdHJva2VDb2xvcigpIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4
IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjdHgu
c2V0U3Ryb2tlQ29sb3IoJ3JlZCcpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc2V0U3Ryb2tlQ29s
b3IoMCkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcigwLCAwKSBpcyB1bmRl
ZmluZWQKK0ZBSUwgY3R4LnNldFN0cm9rZUNvbG9yKDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50
YXhFcnJvcjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoMCwgMCwgMCwgMCkgaXMgdW5kZWZpbmVkCitQ
QVNTIGN0eC5zZXRTdHJva2VDb2xvcigwLCAwLCAwLCAwLCAwKSBpcyB1bmRlZmluZWQKK0ZBSUwg
Y3R4LnNldFN0cm9rZUNvbG9yKDAsIDAsIDAsIDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50YXhF
cnJvcjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorRkFJTCBjdHguc2V0RmlsbENvbG9yKCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50
YXggZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGN0
eC5zZXRGaWxsQ29sb3IoJ3JlZCcpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc2V0RmlsbENvbG9y
KDApIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc2V0RmlsbENvbG9yKDAsIDApIGlzIHVuZGVmaW5l
ZAorRkFJTCBjdHguc2V0RmlsbENvbG9yKDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJv
cjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgor
UEFTUyBjdHguc2V0RmlsbENvbG9yKDAsIDAsIDAsIDApIGlzIHVuZGVmaW5lZAorUEFTUyBjdHgu
c2V0RmlsbENvbG9yKDAsIDAsIDAsIDAsIDApIGlzIHVuZGVmaW5lZAorRkFJTCBjdHguc2V0Rmls
bENvbG9yKDAsIDAsIDAsIDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4
IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjdHgu
c3Ryb2tlUmVjdCgpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc3Ryb2tlUmVjdCgwKSBpcyB1bmRl
ZmluZWQKK1BBU1MgY3R4LnN0cm9rZVJlY3QoMCwgMCkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5z
dHJva2VSZWN0KDAsIDAsIDApIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc3Ryb2tlUmVjdCgwLCAw
LCAwLCAwKSBpcyB1bmRlZmluZWQKK1BBU1MgY3R4LnN0cm9rZVJlY3QoMCwgMCwgMCwgMCwgMCkg
aXMgdW5kZWZpbmVkCitGQUlMIGN0eC5jcmVhdGVJbWFnZURhdGEoKSBzaG91bGQgYmUgbnVsbC4g
VGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorRkFJTCBjdHguY3JlYXRlSW1h
Z2VEYXRhKDApIHNob3VsZCB0aHJvdyBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNl
cHRpb24gOS4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY3R4
LmNyZWF0ZUltYWdlRGF0YSgwLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVf
RVJSOiBET00gRXhjZXB0aW9uIDEuCitGQUlMIGN0eC5jcmVhdGVJbWFnZURhdGEoMCwgMCwgMCkg
c2hvdWxkIGJlIG51bGwuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BB
U1MgY3R4LmdldEltYWdlRGF0YSgpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRF
RF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmdldEltYWdlRGF0YSgwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNT
IGN0eC5nZXRJbWFnZURhdGEoMCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9S
VEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDAp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4K
K1BBU1MgY3R4LmdldEltYWdlRGF0YSgwLCAwLCAwLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGN0eC5nZXRJbWFnZURhdGEo
MCwgMCwgMCwgMCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9N
IEV4Y2VwdGlvbiAxLgorUEFTUyBjdHgucHV0SW1hZ2VEYXRhKCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY3R4LnB1dElt
YWdlRGF0YShpbWFnZURhdGEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9F
UlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24g
OS4KK1BBU1MgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDApIGlzIHVuZGVmaW5lZAor
RkFJTCBjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCwgMCkgc2hvdWxkIGJlIHVuZGVm
aW5lZC4gVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2Vw
dGlvbiA5CitGQUlMIGN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwLCAwLCAwKSBzaG91
bGQgYmUgdW5kZWZpbmVkLiBUaHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJS
OiBET00gRXhjZXB0aW9uIDkKK0ZBSUwgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDAs
IDAsIDAsIDApIHNob3VsZCBiZSB1bmRlZmluZWQuIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9U
X1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOQorUEFTUyBjdHgucHV0SW1hZ2VEYXRhKGlt
YWdlRGF0YSwgMCwgMCwgMCwgMCwgMCwgMCkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5wdXRJbWFn
ZURhdGEoaW1hZ2VEYXRhLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSBpcyB1bmRlZmluZWQKK1BBU1Mg
Y3R4LmRyYXdJbWFnZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitG
QUlMIGN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50KSBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3I6
IFN5bnRheCBlcnJvci4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK0ZB
SUwgY3R4LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJv
cjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgor
RkFJTCBjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCkgc2hvdWxkIGJlIHVuZGVmaW5l
ZC4gVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAx
CitGQUlMIGN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwLCAwKSBzaG91bGQgdGhyb3cg
U3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgY3R4LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDAsIDAsIDAsIDApIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK0ZB
SUwgY3R4LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDAsIDAsIDAsIDAsIDApIHNob3VsZCB0aHJv
dyBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgorRkFJTCBjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCwgMCwgMCwg
MCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitGQUlMIGN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVt
ZW50LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRh
eCBlcnJvci4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY3R4
LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK0ZBSUwgY3R4
LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIHNob3Vs
ZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgorRkFJTCBjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXgg
ZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitGQUlMIGN0eC5k
cmF3SW1hZ2UoY2FudmFzRWxlbWVudCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXgg
ZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitGQUlMIGN0eC5k
cmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50
YXggZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGN0
eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCkgaXMgdW5kZWZpbmVkCitGQUlMIGN0eC5k
cmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9y
OiBTeW50YXggZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQ
QVNTIGN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwgMCwgMCkgaXMgdW5kZWZpbmVk
CitGQUlMIGN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwgMCwgMCwgMCkgc2hvdWxk
IHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitGQUlMIGN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwg
MCwgMCwgMCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitGQUlMIGN0eC5kcmF3SW1hZ2UoY2Fu
dmFzRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9y
OiBTeW50YXggZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQ
QVNTIGN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgor
RkFJTCBjdHguZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorRkFJTCBjdHguZHJhd0ltYWdlKGNhbnZhc0VsZW1l
bnQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJv
cjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgor
UEFTUyBjdHguY3JlYXRlUGF0dGVybigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIGN0eC5jcmVhdGVQYXR0ZXJuKDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitGQUlMIGN0eC5jcmVhdGVQYXR0ZXJuKGltYWdlRWxlbWVudCkgc2hv
dWxkIHRocm93IEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLiBUaHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorRkFJTCBjdHguY3JlYXRlUGF0dGVybihjYW52
YXNFbGVtZW50KSBzaG91bGQgdGhyb3cgRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24g
MTIuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHN0cmluZ2lm
eShjdHguY3JlYXRlUGF0dGVybihpbWFnZUVsZW1lbnQsICdyZXBlYXQnKSkgaXMgJ1tvYmplY3Qg
Q2FudmFzUGF0dGVybl0nCitQQVNTIHN0cmluZ2lmeShjdHguY3JlYXRlUGF0dGVybihjYW52YXNF
bGVtZW50LCAncmVwZWF0JykpIGlzICdbb2JqZWN0IENhbnZhc1BhdHRlcm5dJworRkFJTCBzdHJp
bmdpZnkoY3R4LmNyZWF0ZVBhdHRlcm4oaW1hZ2VFbGVtZW50LCAncmVwZWF0JywgMCkpIHNob3Vs
ZCBiZSBbb2JqZWN0IENhbnZhc1BhdHRlcm5dLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yCitGQUlMIHN0cmluZ2lmeShjdHguY3JlYXRlUGF0dGVybihjYW52YXNFbGVtZW50
LCAncmVwZWF0JywgMCkpIHNob3VsZCBiZSBbb2JqZWN0IENhbnZhc1BhdHRlcm5dLiBUaHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWNvbnRleHQtb3ZlcmxvYWRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5lMzNjZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLWNvbnRleHQtb3ZlcmxvYWRzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52
YXMtY29udGV4dC1vdmVybG9hZHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb250
ZXh0LW92ZXJsb2Fkcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtY29udGV4dC1vdmVybG9hZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjQ4NjhlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMuanMKQEAgLTAsMCArMSwxMDYg
QEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgdGhlIHZhcmlvdXMgb3ZlcmxvYWRzIGluIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCBiZWhhdmUgYXMgdGhleSd2ZSBkb25lIGJlZm9yZS4gTmVpdGhl
ciByZXN1bHQgc2V0IGlzIG5lY2Vzc2FyaWx5IGNvcnJlY3QsIGJ1dCB0aGlzIHRlc3QgaWxsdXN0
cmF0ZXMgdGhlIGRpc2NyZXBhbmN5LiIpOworCit2YXIgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKwordmFyIFN5bnRheEVycm9yID0gIlN5
bnRheEVycm9yOiBTeW50YXggZXJyb3IiOwordmFyIFR5cGVFcnJvciA9ICJUeXBlRXJyb3I6IFR5
cGUgZXJyb3IiOworCitzaG91bGRUaHJvdygiY3R4LmZpbGxUZXh0KCkiLCAiU3ludGF4RXJyb3Ii
KTsKK3Nob3VsZFRocm93KCJjdHguZmlsbFRleHQoJ21vbycpIiwgIlN5bnRheEVycm9yIik7Citz
aG91bGRUaHJvdygiY3R4LmZpbGxUZXh0KCdtb28nLDApIiwgIlN5bnRheEVycm9yIik7CitzaG91
bGRCZSgiY3R4LmZpbGxUZXh0KCdtb28nLDAsMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgi
Y3R4LmZpbGxUZXh0KCdtb28nLDAsMCwwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZFRocm93KCJj
dHguZmlsbFRleHQoJ21vbycsMCwwLDAsMCkiLCAiU3ludGF4RXJyb3IiKTsKKworc2hvdWxkVGhy
b3coImN0eC5zdHJva2VUZXh0KCkiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHgu
c3Ryb2tlVGV4dCgnbW9vJykiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguc3Ry
b2tlVGV4dCgnbW9vJywwKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkQmUoImN0eC5zdHJva2VU
ZXh0KCdtb28nLDAsMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVRleHQo
J21vbycsMCwwLDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxkVGhyb3coImN0eC5zdHJva2VUZXh0
KCdtb28nLDAsMCwwLDApIiwgIlN5bnRheEVycm9yIik7CisKK3Nob3VsZFRocm93KCJjdHguc2V0
U3Ryb2tlQ29sb3IoKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VD
b2xvcigncmVkJykiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9y
KDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcigwLCAwKSIs
ICJ1bmRlZmluZWQiKTsKK3Nob3VsZFRocm93KCJjdHguc2V0U3Ryb2tlQ29sb3IoMCwgMCwgMCki
LCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoMCwgMCwgMCwg
MCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9yKDAsIDAsIDAs
IDAsIDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxkVGhyb3coImN0eC5zZXRTdHJva2VDb2xvcigw
LCAwLCAwLCAwLCAwLCAwKSIsICJTeW50YXhFcnJvciIpOworCitzaG91bGRUaHJvdygiY3R4LnNl
dEZpbGxDb2xvcigpIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xv
cigncmVkJykiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcigwKSIs
ICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKDAsIDApIiwgInVuZGVm
aW5lZCIpOworc2hvdWxkVGhyb3coImN0eC5zZXRGaWxsQ29sb3IoMCwgMCwgMCkiLCAiU3ludGF4
RXJyb3IiKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKDAsIDAsIDAsIDApIiwgInVuZGVm
aW5lZCIpOworc2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoMCwgMCwgMCwgMCwgMCkiLCAidW5k
ZWZpbmVkIik7CitzaG91bGRUaHJvdygiY3R4LnNldEZpbGxDb2xvcigwLCAwLCAwLCAwLCAwLCAw
KSIsICJTeW50YXhFcnJvciIpOworCitzaG91bGRCZSgiY3R4LnN0cm9rZVJlY3QoKSIsICJ1bmRl
ZmluZWQiKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlUmVjdCgwKSIsICJ1bmRlZmluZWQiKTsKK3No
b3VsZEJlKCJjdHguc3Ryb2tlUmVjdCgwLCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJj
dHguc3Ryb2tlUmVjdCgwLCAwLCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJjdHguc3Ry
b2tlUmVjdCgwLCAwLCAwLCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tl
UmVjdCgwLCAwLCAwLCAwLCAwKSIsICJ1bmRlZmluZWQiKTsKKworc2hvdWxkQmUoImN0eC5jcmVh
dGVJbWFnZURhdGEoKSIsICJudWxsIik7CitzaG91bGRUaHJvdygiY3R4LmNyZWF0ZUltYWdlRGF0
YSgwKSIsICInRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDknIik7Citz
aG91bGRUaHJvdygiY3R4LmNyZWF0ZUltYWdlRGF0YSgwLCAwKSIsICInRXJyb3I6IElOREVYX1NJ
WkVfRVJSOiBET00gRXhjZXB0aW9uIDEnIik7CitzaG91bGRCZSgiY3R4LmNyZWF0ZUltYWdlRGF0
YSgwLCAwLCAwKSIsICJudWxsIik7CisKK3Nob3VsZFRocm93KCJjdHguZ2V0SW1hZ2VEYXRhKCki
LCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxk
VGhyb3coImN0eC5nZXRJbWFnZURhdGEoMCkiLCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjog
RE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxkVGhyb3coImN0eC5nZXRJbWFnZURhdGEoMCwgMCki
LCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxk
VGhyb3coImN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMCkiLCAiJ0Vycm9yOiBJTkRFWF9TSVpFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxJyIpOworc2hvdWxkVGhyb3coImN0eC5nZXRJbWFnZURhdGEoMCwg
MCwgMCwgMCkiLCAiJ0Vycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxJyIpOwor
c2hvdWxkVGhyb3coImN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMCwgMCwgMCkiLCAiJ0Vycm9yOiBJ
TkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxJyIpOworCit2YXIgaW1hZ2VEYXRhID0gY3R4
LmNyZWF0ZUltYWdlRGF0YSgxMDAsIDEwMCk7CitzaG91bGRUaHJvdygiY3R4LnB1dEltYWdlRGF0
YSgpIiwgIidFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcnIik7Citz
aG91bGRUaHJvdygiY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEpIiwgIidFcnJvcjogTk9UX1NV
UFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsKK3Nob3VsZFRocm93KCJjdHgucHV0SW1h
Z2VEYXRhKGltYWdlRGF0YSwgMCkiLCAiJ0Vycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4
Y2VwdGlvbiA5JyIpOworc2hvdWxkQmUoImN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAw
KSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwg
MCwgMCwgMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnB1dEltYWdlRGF0YShpbWFn
ZURhdGEsIDAsIDAsIDAsIDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5wdXRJbWFn
ZURhdGEoaW1hZ2VEYXRhLCAwLCAwLCAwLCAwLCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJl
KCJjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCwgMCwgMCwgMCwgMCkiLCAidW5kZWZp
bmVkIik7CitzaG91bGRCZSgiY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDAsIDAsIDAs
IDAsIDAsIDApIiwgInVuZGVmaW5lZCIpOworCit2YXIgaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CitzaG91bGRUaHJvdygiY3R4LmRyYXdJbWFnZSgpIiwgIlR5
cGVFcnJvciIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50KSIsICJT
eW50YXhFcnJvciIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAw
KSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkQmUoImN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50
LCAwLCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGltYWdl
RWxlbWVudCwgMCwgMCwgMCkiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguZHJh
d0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCwgMCwgMCkiLCAiJ0Vycm9yOiBJTkRFWF9TSVpFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxJyIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoaW1hZ2VF
bGVtZW50LCAwLCAwLCAwLCAwLCAwKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkVGhyb3coImN0
eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwKSIsICJTeW50YXhFcnJv
ciIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2Uo
aW1hZ2VFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSIsICInRXJyb3I6IElOREVYX1NJ
WkVfRVJSOiBET00gRXhjZXB0aW9uIDEnIik7CitzaG91bGRUaHJvdygiY3R4LmRyYXdJbWFnZShp
bWFnZUVsZW1lbnQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIiwgIlN5bnRheEVycm9yIik7
CitzaG91bGRUaHJvdygiY3R4LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApIiwgIlN5bnRheEVycm9yIik7CisKK3ZhciBjYW52YXNFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CitzaG91bGRUaHJvdygiY3R4LmRyYXdJ
bWFnZShjYW52YXNFbGVtZW50KSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkVGhyb3coImN0eC5k
cmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCkiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZEJlKCJj
dHguZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAsIDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxk
VGhyb3coImN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwgMCkiLCAiU3ludGF4RXJy
b3IiKTsKK3Nob3VsZEJlKCJjdHguZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAsIDAsIDAsIDAp
IiwgInVuZGVmaW5lZCIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVu
dCwgMCwgMCwgMCwgMCwgMCkiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguZHJh
d0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAsIDAsIDAsIDAsIDAsIDApIiwgIlN5bnRheEVycm9yIik7
CitzaG91bGRUaHJvdygiY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50LCAwLCAwLCAwLCAwLCAw
LCAwLCAwKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoY2Fu
dmFzRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkiLCAiJ0Vycm9yOiBJTkRFWF9TSVpF
X0VSUjogRE9NIEV4Y2VwdGlvbiAxJyIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoY2Fu
dmFzRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkiLCAiU3ludGF4RXJyb3IiKTsK
K3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDApIiwgIlN5bnRheEVycm9yIik7CisKK3Nob3VsZFRocm93KCJjdHguY3Jl
YXRlUGF0dGVybigpIiwgIlR5cGVFcnJvciIpOworc2hvdWxkVGhyb3coImN0eC5jcmVhdGVQYXR0
ZXJuKDApIiwgIlR5cGVFcnJvciIpOworc2hvdWxkVGhyb3coImN0eC5jcmVhdGVQYXR0ZXJuKGlt
YWdlRWxlbWVudCkiLCAiJ0Vycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyJyIpOwor
c2hvdWxkVGhyb3coImN0eC5jcmVhdGVQYXR0ZXJuKGNhbnZhc0VsZW1lbnQpIiwgIidFcnJvcjog
U1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKK3Nob3VsZEJlKCJzdHJpbmdpZnkoY3R4
LmNyZWF0ZVBhdHRlcm4oaW1hZ2VFbGVtZW50LCAncmVwZWF0JykpIiwgIidbb2JqZWN0IENhbnZh
c1BhdHRlcm5dJyIpOworc2hvdWxkQmUoInN0cmluZ2lmeShjdHguY3JlYXRlUGF0dGVybihjYW52
YXNFbGVtZW50LCAncmVwZWF0JykpIiwgIidbb2JqZWN0IENhbnZhc1BhdHRlcm5dJyIpOworc2hv
dWxkQmUoInN0cmluZ2lmeShjdHguY3JlYXRlUGF0dGVybihpbWFnZUVsZW1lbnQsICdyZXBlYXQn
LCAwKSkiLCAiJ1tvYmplY3QgQ2FudmFzUGF0dGVybl0nIik7CitzaG91bGRCZSgic3RyaW5naWZ5
KGN0eC5jcmVhdGVQYXR0ZXJuKGNhbnZhc0VsZW1lbnQsICdyZXBlYXQnLCAwKSkiLCAiJ1tvYmpl
Y3QgQ2FudmFzUGF0dGVybl0nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3
MjUzZjg1Li5lNDQwZjI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA2LTEyICBBbmRyZWFzIEtsaW5n
ICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGhhbmQtcm9sbGVkIG92ZXJsb2FkcyBpbiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQgSlNDIGJpbmRpbmdzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5NjIKKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMuaHRtbAorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBSZW1vdmUgY3VzdG9tIG92
ZXJsb2Fkcy4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aWRsOiBSZW1vdmUgY3VzdG9tIG92ZXJsb2Fkcy4KKwogMjAxMC0wNi0xMiAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwCmluZGV4IDkxNGRlYTAuLjNlZmM2MWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBA
IC0yNiwxNSArMjYsOSBAQAogI2luY2x1ZGUgIkNhbnZhc1N0eWxlLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkhUTUxDYW52
YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJKU0Nh
bnZhc0dyYWRpZW50LmgiCiAjaW5jbHVkZSAiSlNDYW52YXNQYXR0ZXJuLmgiCi0jaW5jbHVkZSAi
SlNIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTEltYWdlRWxlbWVudC5oIgot
I2luY2x1ZGUgIkpTSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSW1hZ2VEYXRhLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogCkBAIC04OSwzNDggKzgzLDQgQEAgdm9pZCBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKICAgICBjb250ZXh0LT5zZXRGaWxsU3R5bGUodG9IVE1MQ2FudmFzU3R5
bGUoZXhlYywgdmFsdWUpKTsKIH0KIAotSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0RmlsbENvbG9yKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQq
PihpbXBsKCkpOwotCi0gICAgLy8gc3RyaW5nIGFyZyA9IG5hbWVkIGNvbG9yCi0gICAgLy8gbnVt
YmVyIGFyZyA9IGdyYXkgY29sb3IKLSAgICAvLyBzdHJpbmcgYXJnLCBudW1iZXIgYXJnID0gbmFt
ZWQgY29sb3IsIGFscGhhCi0gICAgLy8gbnVtYmVyIGFyZywgbnVtYmVyIGFyZyA9IGdyYXkgY29s
b3IsIGFscGhhCi0gICAgLy8gNCBhcmdzID0gciwgZywgYiwgYQotICAgIC8vIDUgYXJncyA9IGMs
IG0sIHksIGssIGEKLSAgICBzd2l0Y2ggKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAg
ICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCkuaXNTdHJpbmcoKSkK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodXN0cmluZ1RvU3RyaW5nKGFz
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApKS0+dmFsdWUoZXhlYykpKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZXhlYy0+YXJndW1lbnQo
MCkudG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgot
ICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkpCi0gICAgICAgICAg
ICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyhleGVj
LT5hcmd1bWVudCgwKSktPnZhbHVlKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChl
eGVjKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0Rmls
bENvbG9yKGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEp
LnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDoKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0
KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMt
PmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgNToKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihleGVjLT5hcmd1bWVu
dCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQo
ZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDQp
LnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci19ICAgIAotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTdHJva2VDb2xvcihFeGVjU3RhdGUqIGV4ZWMpCi17IAotICAgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCo+KGltcGwoKSk7Ci0KLSAgICAvLyBzdHJpbmcgYXJnID0gbmFtZWQgY29sb3IKLSAg
ICAvLyBudW1iZXIgYXJnID0gZ3JheSBjb2xvcgotICAgIC8vIHN0cmluZyBhcmcsIG51bWJlciBh
cmcgPSBuYW1lZCBjb2xvciwgYWxwaGEKLSAgICAvLyBudW1iZXIgYXJnLCBudW1iZXIgYXJnID0g
Z3JheSBjb2xvciwgYWxwaGEKLSAgICAvLyA0IGFyZ3MgPSByLCBnLCBiLCBhCi0gICAgLy8gNSBh
cmdzID0gYywgbSwgeSwgaywgYQotICAgIHN3aXRjaCAoZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7
Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudCgwKS5pc1N0
cmluZygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHVzdHJpbmdU
b1N0cmluZyhhc1N0cmluZyhleGVjLT5hcmd1bWVudCgwKSktPnZhbHVlKGV4ZWMpKSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoZXhl
Yy0+YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkp
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IodXN0cmluZ1RvU3RyaW5n
KGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApKS0+dmFsdWUoZXhlYykpLCBleGVjLT5hcmd1bWVu
dCgxKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRTdHJva2VDb2xvcihleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBl
eGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihleGVjLT5h
cmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMiku
dG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMykudG9GbG9hdChleGVjKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoZXhlYy0+YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQo
MSkudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQo
ZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJv
cihleGVjKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpT
VmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QoRXhlY1N0YXRlKiBl
eGVjKQoteyAKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotICAgIAotICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPD0gNCkKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChl
eGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0
KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRv
RmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwotICAgIGVsc2UK
LSAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4
ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50
KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYykpOwotCi0g
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoRXhlY1N0YXRlKiBleGVjKQoteyAKLSAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgLy8gRHJhd0ltYWdlIGhhcyB0aHJlZSB2YXJpYW50
czoKLSAgICAvLyAgICAgZHJhd0ltYWdlKGltZywgZHgsIGR5KQotICAgIC8vICAgICBkcmF3SW1h
Z2UoaW1nLCBkeCwgZHksIGR3LCBkaCkKLSAgICAvLyAgICAgZHJhd0ltYWdlKGltZywgc3gsIHN5
LCBzdywgc2gsIGR4LCBkeSwgZHcsIGRoKQotICAgIC8vIENvbXBvc2l0ZSBvcGVyYXRpb24gaXMg
c3BlY2lmaWVkIHdpdGggZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uLgotICAgIC8vIFRoZSBpbWcg
cGFyYW1ldGVyIGNhbiBiZSBhIDxpbWc+IG9yIDxjYW52YXM+IGVsZW1lbnQuCi0gICAgSlNWYWx1
ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgIEpTT2JqZWN0KiBvID0g
YXNPYmplY3QodmFsdWUpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlm
IChvLT5pbmhlcml0cygmSlNIVE1MSW1hZ2VFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgIEhU
TUxJbWFnZUVsZW1lbnQqIGltZ0VsdCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihz
dGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4obyktPmltcGwoKSk7Ci0gICAgICAgIHN3aXRjaCAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltZ0VsdCwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9h
dChleGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgZWMpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShpbWdFbHQsIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4
ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50
KDQpLnRvRmxvYXQoZXhlYyksIGVjKTsKLSAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA5Ogot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWdFbHQsIEZsb2F0UmVjdChleGVj
LT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4
ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgz
KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0KGV4ZWMtPmFyZ3VtZW50KDUp
LnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDYpLnRvRmxvYXQoZXhlYyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDcpLnRvRmxvYXQoZXhl
YyksIGV4ZWMtPmFyZ3VtZW50KDgpLnRvRmxvYXQoZXhlYykpLCBlYyk7Ci0gICAgICAgICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJy
b3IoZXhlYyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRzKCZKU0hUTUxD
YW52YXNFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52
YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTEVs
ZW1lbnQqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgc3dpdGNoIChleGVjLT5hcmd1bWVudENvdW50
KCkpIHsKLSAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3
SW1hZ2UoY2FudmFzLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1
bWVudCgyKS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGNhbnZh
cywgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9G
bG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJn
dW1lbnQoMykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoNCkudG9GbG9hdChleGVjKSwg
ZWMpOwotICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDk6Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGNhbnZhcywgRmxvYXRSZWN0KGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxv
YXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4
ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYykpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGbG9hdFJlY3QoZXhlYy0+YXJndW1lbnQoNSkudG9GbG9hdChleGVjKSwgZXhl
Yy0+YXJndW1lbnQoNikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhlYy0+YXJndW1lbnQoNykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQo
OCkudG9GbG9hdChleGVjKSksIGVjKTsKLSAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKLSAgICAgICAg
fQotI2lmIEVOQUJMRShWSURFTykKLSAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRzKCZKU0hUTUxW
aWRlb0VsZW1lbnQ6OnNfaW5mbykpIHsKLSAgICAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZp
ZGVvID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTEVs
ZW1lbnQqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgICAgIHN3aXRjaCAoZXhlYy0+YXJndW1lbnRD
b3VudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3SW1hZ2UodmlkZW8sIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyks
IGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGVjKTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3SW1hZ2UodmlkZW8sIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyks
IGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5h
cmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
KHZpZGVvLCBGbG9hdFJlY3QoZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50
KDQpLnRvRmxvYXQoZXhlYykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmxvYXRSZWN0KGV4ZWMtPmFyZ3VtZW50KDUpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3Vt
ZW50KDYpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGVjLT5hcmd1bWVudCg3KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg4KS50
b0Zsb2F0KGV4ZWMpKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVj
KTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfSBlbHNlIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3SW1hZ2VGcm9tUmVjdChFeGVjU3RhdGUqIGV4ZWMpCi17IAotICAgIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCogY29udGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRCo+KGltcGwoKSk7Ci0gICAgCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDApOwotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGV4ZWMpOwotICAgIEpTT2JqZWN0KiBvID0gYXNPYmplY3QodmFsdWUpOwotICAgIAot
ICAgIGlmICghby0+aW5oZXJpdHMoJkpTSFRNTEltYWdlRWxlbWVudDo6c19pbmZvKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZUZy
b21SZWN0KHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxF
bGVtZW50Kj4obyktPmltcGwoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Yy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChl
eGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgzKS50
b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDUpLnRvRmxvYXQoZXhlYyksIGV4
ZWMtPmFyZ3VtZW50KDYpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+YXJndW1lbnQoNykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoOCku
dG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c3RyaW5nVG9T
dHJpbmcoZXhlYy0+YXJndW1lbnQoOSkudG9TdHJpbmcoZXhlYykpKTsgICAgCi0gICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3coRXhlY1N0YXRlKiBleGVjKQoteyAKLSAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQq
PihpbXBsKCkpOwotCi0gICAgc3dpdGNoIChleGVjLT5hcmd1bWVudENvdW50KCkpIHsKLSAgICAg
ICAgY2FzZSAzOgotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50
KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVj
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50KDMpLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+
c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50
KDEpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyhl
eGVjLT5hcmd1bWVudCgzKSktPnZhbHVlKGV4ZWMpKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQo
ZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMt
PmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgNToKLSAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudCgzKS5pc1N0cmluZygpKQot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhleGVjLT5hcmd1bWVudCgwKS50b0Zs
b2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpLCB1
c3RyaW5nVG9TdHJpbmcoYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMykpLT52YWx1ZShleGVjKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDQpLnRv
RmxvYXQoZXhlYykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNldFNoYWRvdyhleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVu
dCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0
KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVu
dCg0KS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDc6
Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coZXhlYy0+YXJndW1lbnQoMCkudG9GbG9h
dChleGVjKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5h
cmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDUpLnRvRmxv
YXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQo
NikudG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA4Ogot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQo
ZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgZXhlYy0+YXJn
dW1lbnQoMykudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg1KS50b0Zsb2F0
KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDYp
LnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDcpLnRvRmxvYXQoZXhlYykpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dT
eW50YXhFcnJvcihleGVjKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0
ZXJuKEV4ZWNTdGF0ZSogZXhlYykKLXsgCi0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4oaW1wbCgpKTsK
LQotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKLSAgICBK
U09iamVjdCogbyA9IGFzT2JqZWN0KHZhbHVlKTsKLQotICAgIGlmIChvLT5pbmhlcml0cygmSlNI
VE1MSW1hZ2VFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0g
ICAgICAgIEpTVmFsdWUgcGF0dGVybiA9IHRvSlMoZXhlYywKLSAgICAgICAgICAgIGNvbnRleHQt
PmNyZWF0ZVBhdHRlcm4oc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KHN0YXRpY19jYXN0
PEpTSFRNTEVsZW1lbnQqPihvKS0+aW1wbCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQo
MSkpLCBlYykuZ2V0KCkpOwotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAg
ICAgICByZXR1cm4gcGF0dGVybjsKLSAgICB9Ci0gICAgaWYgKG8tPmluaGVyaXRzKCZKU0hUTUxD
YW52YXNFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAg
ICAgIEpTVmFsdWUgcGF0dGVybiA9IHRvSlMoZXhlYywKLSAgICAgICAgICAgIGNvbnRleHQtPmNy
ZWF0ZVBhdHRlcm4oc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihzdGF0aWNfY2FzdDxK
U0hUTUxFbGVtZW50Kj4obyktPmltcGwoKSksCi0gICAgICAgICAgICAgICAgdmFsdWVUb1N0cmlu
Z1dpdGhOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpLCBlYykuZ2V0KCkpOwotICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgICAgICByZXR1cm4gcGF0dGVybjsK
LSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Y3JlYXRlSW1hZ2VEYXRhKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICAvLyBjcmVh
dGVJbWFnZURhdGEgaGFzIHR3byB2YXJpYW50cwotICAgIC8vIGNyZWF0ZUltYWdlRGF0YShJbWFn
ZURhdGEpCi0gICAgLy8gY3JlYXRlSW1hZ2VEYXRhKHdpZHRoLCBoZWlnaHQpCi0gICAgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEKj4oaW1wbCgpKTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSAw
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA9PSAxKQotICAgICAgICBpbWFnZURhdGEgPSBjb250ZXh0LT5jcmVhdGVJbWFnZURhdGEo
dG9JbWFnZURhdGEoZXhlYy0+YXJndW1lbnQoMCkpLCBlYyk7Ci0gICAgZWxzZSBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpID09IDIpCi0gICAgICAgIGltYWdlRGF0YSA9IGNvbnRleHQtPmNyZWF0
ZUltYWdlRGF0YShleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVu
dCgxKS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0KLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OwotICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbWFn
ZURhdGEpKTsKLX0KLQotSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1h
Z2VEYXRhKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICAvLyBwdXRJbWFnZURhdGEgaGFzIHR3byB2
YXJpYW50cwotICAgIC8vIHB1dEltYWdlRGF0YShJbWFnZURhdGEsIHgsIHkpCi0gICAgLy8gcHV0
SW1hZ2VEYXRhKEltYWdlRGF0YSwgeCwgeSwgZGlydHlYLCBkaXJ0eVksIGRpcnR5V2lkdGgsIGRp
cnR5SGVpZ2h0KQotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IHN0YXRp
Y19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+KGltcGwoKSk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDcpCi0gICAg
ICAgIGNvbnRleHQtPnB1dEltYWdlRGF0YSh0b0ltYWdlRGF0YShleGVjLT5hcmd1bWVudCgwKSks
IGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxv
YXQoZXhlYyksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQo
MykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoNCkudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoNSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoNikudG9GbG9hdChleGVj
KSwgZWMpOwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+cHV0SW1hZ2VEYXRhKHRvSW1hZ2VE
YXRhKGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwg
ZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgZWMpOwotCi0gICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoRXhlY1N0YXRlKiBleGVjKQoteyAK
LSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgLy8gc3RyaW5nIGFyZyA9IHRl
eHQgdG8gZHJhdwotICAgIC8vIG51bWJlciBhcmcgPSB4Ci0gICAgLy8gbnVtYmVyIGFyZyA9IHkK
LSAgICAvLyBvcHRpb25hbCBudW1iZXIgYXJnID0gbWF4V2lkdGgKLSAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMyB8fCBleGVjLT5hcmd1bWVudENvdW50KCkgPiA0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKLSAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpID09IDQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxUZXh0KHVzdHJpbmdUb1N0cmlu
ZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRv
RmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3Vt
ZW50KDMpLnRvRmxvYXQoZXhlYykpOwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+ZmlsbFRl
eHQodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSwgZXhl
Yy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChl
eGVjKSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoRXhlY1N0YXRlKiBleGVjKQoteyAKLSAgICBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgLy8gc3RyaW5nIGFyZyA9IHRleHQgdG8g
ZHJhdwotICAgIC8vIG51bWJlciBhcmcgPSB4Ci0gICAgLy8gbnVtYmVyIGFyZyA9IHkKLSAgICAv
LyBvcHRpb25hbCBudW1iZXIgYXJnID0gbWF4V2lkdGgKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMyB8fCBleGVjLT5hcmd1bWVudENvdW50KCkgPiA0KQotICAgICAgICByZXR1cm4g
dGhyb3dTeW50YXhFcnJvcihleGVjKTsKLSAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpID09IDQpCi0gICAgICAgIGNvbnRleHQtPnN0cm9rZVRleHQodXN0cmluZ1RvU3RyaW5nKGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9h
dChleGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQo
MykudG9GbG9hdChleGVjKSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zdHJva2VUZXh0
KHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSksIGV4ZWMt
PmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhl
YykpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5pZGwgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5p
ZGwKaW5kZXggMjNhZmMxMS4uMGRhNmQ2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAtOTksNyArOTksNiBAQCBtb2R1bGUgaHRt
bCB7CiAKICAgICAgICAgdm9pZCBjbGVhclNoYWRvdygpOwogCi0jaWYgZGVmaW5lZChWOF9CSU5E
SU5HKSAmJiBWOF9CSU5ESU5HCiAgICAgICAgIHZvaWQgZmlsbFRleHQoaW4gRE9NU3RyaW5nIHRl
eHQsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIFtPcHRpb25hbF0gZmxvYXQgbWF4V2lkdGgp
OwogICAgICAgICB2b2lkIHN0cm9rZVRleHQoaW4gRE9NU3RyaW5nIHRleHQsIGluIGZsb2F0IHgs
IGluIGZsb2F0IHksIGluIFtPcHRpb25hbF0gZmxvYXQgbWF4V2lkdGgpOwogCkBAIC0xNTQsMjAg
KzE1Myw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShpbiBmbG9hdCBzdywgaW4gZmxv
YXQgc2gpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0jZWxzZQotICAgICAg
ICAvLyBGSVhNRTogUmVtb3ZlICdlbHNlJyBvbmNlIEpTQyBzdXBwb3J0cyBvdmVybG9hZHMgdG9v
LgotICAgICAgICBbQ3VzdG9tXSB2b2lkIGZpbGxUZXh0KC8qIDQgKi8pOwotICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHN0cm9rZVRleHQoLyogNCAqLyk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0
U3Ryb2tlQ29sb3IoLyogMSAgKi8pOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldEZpbGxDb2xv
cigvKiAxICovKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzdHJva2VSZWN0KC8qIDQgKi8pOwot
ICAgICAgICBbQ3VzdG9tXSB2b2lkIGRyYXdJbWFnZSgvKiAzICovKTsKLSAgICAgICAgW0N1c3Rv
bV0gdm9pZCBkcmF3SW1hZ2VGcm9tUmVjdCgvKiAxMCAqLyk7Ci0gICAgICAgIFtDdXN0b21dIHZv
aWQgc2V0U2hhZG93KC8qIDMgKi8pOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGNyZWF0ZVBhdHRl
cm4oLyogMiAqLyk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgcHV0SW1hZ2VEYXRhKC8qIGluIElt
YWdlRGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSBbLCBpbiBmbG9hdCBk
aXJ0eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxvYXQgZGlydHlXaWR0aCwgaW4gZmxvYXQgZGly
dHlIZWlnaHRdICovKTsKLSAgICAgICAgW0N1c3RvbV0gSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0
YSgvKiAzICovKTsKLSNlbmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCiAKICAgICAgICAgYXR0
cmlidXRlIFtDdXN0b21dIGN1c3RvbSBzdHJva2VTdHlsZTsKICAgICAgICAgYXR0cmlidXRlIFtD
dXN0b21dIGN1c3RvbSBmaWxsU3R5bGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58593</attachid>
            <date>2010-06-13 08:18:24 -0700</date>
            <delta_ts>2010-06-29 04:51:39 -0700</delta_ts>
            <desc>Patch to replace hand-rolled overloads with autogenerated ones</desc>
            <filename>bug-39962-part1-v1.diff</filename>
            <type>text/plain</type>
            <size>19699</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDZiZDhlNC4uZTAwNDUwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNi0xMyAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBoYW5kLXJvbGxlZCBvdmVybG9hZHMgaW4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEIEpTQyBiaW5kaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTYyCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbDoKKwogMjAxMC0wNi0xMyAgQW5kcmFz
IEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwCmluZGV4IDkxNGRlYTAuLjNlZmM2MWEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0
b20uY3BwCkBAIC0yNiwxNSArMjYsOSBAQAogI2luY2x1ZGUgIkNhbnZhc1N0eWxlLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUg
IkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNs
dWRlICJKU0NhbnZhc0dyYWRpZW50LmgiCiAjaW5jbHVkZSAiSlNDYW52YXNQYXR0ZXJuLmgiCi0j
aW5jbHVkZSAiSlNIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTEltYWdlRWxl
bWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSW1h
Z2VEYXRhLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogCkBAIC04OSwzNDggKzgzLDQg
QEAgdm9pZCBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBjb250ZXh0LT5zZXRGaWxsU3R5bGUodG9IVE1M
Q2FudmFzU3R5bGUoZXhlYywgdmFsdWUpKTsKIH0KIAotSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgLy8gc3RyaW5nIGFyZyA9IG5hbWVkIGNvbG9yCi0g
ICAgLy8gbnVtYmVyIGFyZyA9IGdyYXkgY29sb3IKLSAgICAvLyBzdHJpbmcgYXJnLCBudW1iZXIg
YXJnID0gbmFtZWQgY29sb3IsIGFscGhhCi0gICAgLy8gbnVtYmVyIGFyZywgbnVtYmVyIGFyZyA9
IGdyYXkgY29sb3IsIGFscGhhCi0gICAgLy8gNCBhcmdzID0gciwgZywgYiwgYQotICAgIC8vIDUg
YXJncyA9IGMsIG0sIHksIGssIGEKLSAgICBzd2l0Y2ggKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSkg
ewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCkuaXNT
dHJpbmcoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodXN0cmluZ1Rv
U3RyaW5nKGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApKS0+dmFsdWUoZXhlYykpKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZXhlYy0+
YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkpCi0g
ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHVzdHJpbmdUb1N0cmluZyhhc1N0
cmluZyhleGVjLT5hcmd1bWVudCgwKSktPnZhbHVlKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMSku
dG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFy
Z3VtZW50KDEpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgNDoKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihleGVjLT5hcmd1bWVudCgw
KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhl
YyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgNToKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihleGVj
LT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4
ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIp
LnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFy
Z3VtZW50KDQpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19ICAgIAotCi1KU1ZhbHVlIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcihFeGVjU3RhdGUqIGV4ZWMpCi17IAotICAg
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCo+KGltcGwoKSk7Ci0KLSAgICAvLyBzdHJpbmcgYXJnID0gbmFtZWQg
Y29sb3IKLSAgICAvLyBudW1iZXIgYXJnID0gZ3JheSBjb2xvcgotICAgIC8vIHN0cmluZyBhcmcs
IG51bWJlciBhcmcgPSBuYW1lZCBjb2xvciwgYWxwaGEKLSAgICAvLyBudW1iZXIgYXJnLCBudW1i
ZXIgYXJnID0gZ3JheSBjb2xvciwgYWxwaGEKLSAgICAvLyA0IGFyZ3MgPSByLCBnLCBiLCBhCi0g
ICAgLy8gNSBhcmdzID0gYywgbSwgeSwgaywgYQotICAgIHN3aXRjaCAoZXhlYy0+YXJndW1lbnRD
b3VudCgpKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVu
dCgwKS5pc1N0cmluZygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyhleGVjLT5hcmd1bWVudCgwKSktPnZhbHVlKGV4ZWMp
KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoZXhlYy0+YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmlz
U3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IodXN0cmlu
Z1RvU3RyaW5nKGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApKS0+dmFsdWUoZXhlYykpLCBleGVj
LT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0
KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cihleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zs
b2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJn
dW1lbnQoMikudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMykudG9GbG9hdChleGVjKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoZXhlYy0+YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMp
LnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYykpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dT
eW50YXhFcnJvcihleGVjKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci19Ci0KLUpTVmFsdWUgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QoRXhl
Y1N0YXRlKiBleGVjKQoteyAKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotICAgIAot
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gNCkKLSAgICAgICAgY29udGV4dC0+c3Ry
b2tlUmVjdChleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgx
KS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3Vt
ZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwot
ICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChleGVjLT5hcmd1bWVudCgwKS50
b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4ZWMt
PmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhl
YykpOwotCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoRXhlY1N0YXRlKiBleGVjKQoteyAKLSAg
ICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgLy8gRHJhd0ltYWdlIGhhcyB0aHJl
ZSB2YXJpYW50czoKLSAgICAvLyAgICAgZHJhd0ltYWdlKGltZywgZHgsIGR5KQotICAgIC8vICAg
ICBkcmF3SW1hZ2UoaW1nLCBkeCwgZHksIGR3LCBkaCkKLSAgICAvLyAgICAgZHJhd0ltYWdlKGlt
Zywgc3gsIHN5LCBzdywgc2gsIGR4LCBkeSwgZHcsIGRoKQotICAgIC8vIENvbXBvc2l0ZSBvcGVy
YXRpb24gaXMgc3BlY2lmaWVkIHdpdGggZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uLgotICAgIC8v
IFRoZSBpbWcgcGFyYW1ldGVyIGNhbiBiZSBhIDxpbWc+IG9yIDxjYW52YXM+IGVsZW1lbnQuCi0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmICghdmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgIEpTT2Jq
ZWN0KiBvID0gYXNPYmplY3QodmFsdWUpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGlmIChvLT5pbmhlcml0cygmSlNIVE1MSW1hZ2VFbGVtZW50OjpzX2luZm8pKSB7Ci0g
ICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltZ0VsdCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVs
ZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4obyktPmltcGwoKSk7Ci0gICAgICAg
IHN3aXRjaCAoZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIDM6Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltZ0VsdCwgZXhlYy0+YXJndW1lbnQo
MSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgZWMpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWdFbHQsIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQo
ZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMt
PmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYyksIGVjKTsKLSAgICAgICAgICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSA5OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWdFbHQsIEZsb2F0
UmVjdChleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgyKS50
b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5h
cmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0KGV4ZWMtPmFy
Z3VtZW50KDUpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDYpLnRvRmxvYXQoZXhlYyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDcpLnRv
RmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDgpLnRvRmxvYXQoZXhlYykpLCBlYyk7Ci0gICAg
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93
U3ludGF4RXJyb3IoZXhlYyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRz
KCZKU0hUTUxDYW52YXNFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgIEhUTUxDYW52YXNFbGVt
ZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHN0YXRpY19jYXN0
PEpTSFRNTEVsZW1lbnQqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgc3dpdGNoIChleGVjLT5hcmd1
bWVudENvdW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3SW1hZ2UoY2FudmFzLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLCBl
eGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKGNhbnZhcywgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1l
bnQoMikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlYy0+YXJndW1lbnQoMykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoNCkudG9GbG9h
dChleGVjKSwgZWMpOwotICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDk6Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGNhbnZhcywgRmxvYXRSZWN0KGV4ZWMtPmFyZ3VtZW50
KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQo
ZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYykpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QoZXhlYy0+YXJndW1lbnQoNSkudG9GbG9hdChl
eGVjKSwgZXhlYy0+YXJndW1lbnQoNikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoNykudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoOCkudG9GbG9hdChleGVjKSksIGVjKTsKLSAgICAgICAgICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsK
LSAgICAgICAgfQotI2lmIEVOQUJMRShWSURFTykKLSAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRz
KCZKU0hUTUxWaWRlb0VsZW1lbnQ6OnNfaW5mbykpIHsKLSAgICAgICAgICAgIEhUTUxWaWRlb0Vs
ZW1lbnQqIHZpZGVvID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHN0YXRpY19jYXN0
PEpTSFRNTEVsZW1lbnQqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgICAgIHN3aXRjaCAoZXhlYy0+
YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UodmlkZW8sIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxv
YXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGVjKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UodmlkZW8sIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxv
YXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMp
LCBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0gICAgICAgICAgICAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgOToKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0ltYWdlKHZpZGVvLCBGbG9hdFJlY3QoZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVj
KSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYyksIGV4ZWMt
PmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmxvYXRSZWN0KGV4ZWMtPmFyZ3VtZW50KDUpLnRvRmxvYXQoZXhlYyksIGV4
ZWMtPmFyZ3VtZW50KDYpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCg3KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1
bWVudCg4KS50b0Zsb2F0KGV4ZWMpKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhF
cnJvcihleGVjKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfSBlbHNlIHsKLSAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3SW1hZ2VGcm9tUmVjdChFeGVjU3RhdGUqIGV4ZWMpCi17IAotICAgIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCo+KGltcGwoKSk7Ci0gICAgCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMt
PmFyZ3VtZW50KDApOwotICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgIEpTT2JqZWN0KiBvID0gYXNPYmplY3QodmFsdWUp
OwotICAgIAotICAgIGlmICghby0+aW5oZXJpdHMoJkpTSFRNTEltYWdlRWxlbWVudDo6c19pbmZv
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgIGNvbnRleHQtPmRy
YXdJbWFnZUZyb21SZWN0KHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2Fz
dDxKU0hUTUxFbGVtZW50Kj4obyktPmltcGwoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMiku
dG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1
bWVudCgzKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDUpLnRvRmxvYXQo
ZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDYpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoNykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJn
dW1lbnQoOCkudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoOSkudG9TdHJpbmcoZXhlYykpKTsgICAgCi0g
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3coRXhlY1N0YXRlKiBleGVjKQoteyAKLSAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgc3dpdGNoIChleGVjLT5hcmd1bWVudENvdW50KCkp
IHsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMt
PmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhl
YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMikudG9G
bG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAg
ICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDMpLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAg
Y29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYyksIGV4ZWMt
PmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIHVzdHJpbmdUb1N0cmluZyhh
c1N0cmluZyhleGVjLT5hcmd1bWVudCgzKSktPnZhbHVlKGV4ZWMpKSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50KDAp
LnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhl
YyksIGV4ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgNToKLSAgICAgICAgICAgIGlmIChleGVjLT5hcmd1bWVudCgzKS5pc1N0
cmluZygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhleGVjLT5hcmd1bWVu
dCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0
KGV4ZWMpLCB1c3RyaW5nVG9TdHJpbmcoYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMykpLT52YWx1
ZShleGVjKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFyZ3Vt
ZW50KDQpLnRvRmxvYXQoZXhlYykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGNvbnRleHQtPnNldFNoYWRvdyhleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVj
LT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCgz
KS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIDc6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coZXhlYy0+YXJndW1lbnQo
MCkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5hcmd1bWVudCgyKS50b0Zsb2F0KGV4ZWMp
LCBleGVjLT5hcmd1bWVudCgzKS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50
KDUpLnRvRmxvYXQoZXhlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+
YXJndW1lbnQoNikudG9GbG9hdChleGVjKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSA4OgotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KGV4ZWMtPmFyZ3VtZW50KDAp
LnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwg
ZXhlYy0+YXJndW1lbnQoMykudG9GbG9hdChleGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5hcmd1bWVudCg0KS50b0Zsb2F0KGV4ZWMpLCBleGVjLT5hcmd1bWVudCg1
KS50b0Zsb2F0KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmFy
Z3VtZW50KDYpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDcpLnRvRmxvYXQoZXhlYykp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1
cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7ICAgIAotfQotCi1KU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
cmVhdGVQYXR0ZXJuKEV4ZWNTdGF0ZSogZXhlYykKLXsgCi0gICAgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4o
aW1wbCgpKTsKLQotICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBp
ZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
KTsKLSAgICBKU09iamVjdCogbyA9IGFzT2JqZWN0KHZhbHVlKTsKLQotICAgIGlmIChvLT5pbmhl
cml0cygmSlNIVE1MSW1hZ2VFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICAgICAgIEpTVmFsdWUgcGF0dGVybiA9IHRvSlMoZXhlYywKLSAgICAgICAgICAg
IGNvbnRleHQtPmNyZWF0ZVBhdHRlcm4oc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KHN0
YXRpY19jYXN0PEpTSFRNTEVsZW1lbnQqPihvKS0+aW1wbCgpKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgZXhlYy0+
YXJndW1lbnQoMSkpLCBlYykuZ2V0KCkpOwotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOwotICAgICAgICByZXR1cm4gcGF0dGVybjsKLSAgICB9Ci0gICAgaWYgKG8tPmluaGVyaXRz
KCZKU0hUTUxDYW52YXNFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7Ci0gICAgICAgIEpTVmFsdWUgcGF0dGVybiA9IHRvSlMoZXhlYywKLSAgICAgICAgICAgIGNv
bnRleHQtPmNyZWF0ZVBhdHRlcm4oc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihzdGF0
aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4obyktPmltcGwoKSksCi0gICAgICAgICAgICAgICAgdmFs
dWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpLCBlYykuZ2V0
KCkpOwotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgICAgICByZXR1cm4g
cGF0dGVybjsKLSAgICB9Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hf
RVJSKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlSW1hZ2VEYXRhKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAg
ICAvLyBjcmVhdGVJbWFnZURhdGEgaGFzIHR3byB2YXJpYW50cwotICAgIC8vIGNyZWF0ZUltYWdl
RGF0YShJbWFnZURhdGEpCi0gICAgLy8gY3JlYXRlSW1hZ2VEYXRhKHdpZHRoLCBoZWlnaHQpCi0g
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEKj4oaW1wbCgpKTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFn
ZURhdGEgPSAwOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA9PSAxKQotICAgICAgICBpbWFnZURhdGEgPSBjb250ZXh0LT5jcmVhdGVJ
bWFnZURhdGEodG9JbWFnZURhdGEoZXhlYy0+YXJndW1lbnQoMCkpLCBlYyk7Ci0gICAgZWxzZSBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDIpCi0gICAgICAgIGltYWdlRGF0YSA9IGNvbnRl
eHQtPmNyZWF0ZUltYWdlRGF0YShleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpLCBleGVj
LT5hcmd1bWVudCgxKS50b0Zsb2F0KGV4ZWMpLCBlYyk7Ci0KLSAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbWFnZURhdGEpKTsKLX0KLQotSlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cHV0SW1hZ2VEYXRhKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICAvLyBwdXRJbWFnZURhdGEg
aGFzIHR3byB2YXJpYW50cwotICAgIC8vIHB1dEltYWdlRGF0YShJbWFnZURhdGEsIHgsIHkpCi0g
ICAgLy8gcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSwgeCwgeSwgZGlydHlYLCBkaXJ0eVksIGRpcnR5
V2lkdGgsIGRpcnR5SGVpZ2h0KQotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4
dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+KGltcGwoKSk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDcpCi0gICAgICAgIGNvbnRleHQtPnB1dEltYWdlRGF0YSh0b0ltYWdlRGF0YShleGVjLT5hcmd1
bWVudCgwKSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50
KDIpLnRvRmxvYXQoZXhlYyksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+
YXJndW1lbnQoMykudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoNCkudG9GbG9hdChleGVj
KSwgZXhlYy0+YXJndW1lbnQoNSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoNikudG9G
bG9hdChleGVjKSwgZWMpOwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+cHV0SW1hZ2VEYXRh
KHRvSW1hZ2VEYXRhKGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9h
dChleGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgZWMpOwotCi0gICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQot
SlNWYWx1ZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoRXhlY1N0YXRlKiBl
eGVjKQoteyAKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgLy8gc3RyaW5n
IGFyZyA9IHRleHQgdG8gZHJhdwotICAgIC8vIG51bWJlciBhcmcgPSB4Ci0gICAgLy8gbnVtYmVy
IGFyZyA9IHkKLSAgICAvLyBvcHRpb25hbCBudW1iZXIgYXJnID0gbWF4V2lkdGgKLSAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMyB8fCBleGVjLT5hcmd1bWVudENvdW50KCkgPiA0KQot
ICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKLSAgICAKLSAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpID09IDQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxUZXh0KHVzdHJp
bmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSksIGV4ZWMtPmFyZ3Vt
ZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvRmxvYXQoZXhlYyksIGV4
ZWMtPmFyZ3VtZW50KDMpLnRvRmxvYXQoZXhlYykpOwotICAgIGVsc2UKLSAgICAgICAgY29udGV4
dC0+ZmlsbFRleHQodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4
ZWMpKSwgZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMiku
dG9GbG9hdChleGVjKSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUg
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoRXhlY1N0YXRlKiBleGVjKQot
eyAKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwotCi0gICAgLy8gc3RyaW5nIGFyZyA9
IHRleHQgdG8gZHJhdwotICAgIC8vIG51bWJlciBhcmcgPSB4Ci0gICAgLy8gbnVtYmVyIGFyZyA9
IHkKLSAgICAvLyBvcHRpb25hbCBudW1iZXIgYXJnID0gbWF4V2lkdGgKLSAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMyB8fCBleGVjLT5hcmd1bWVudENvdW50KCkgPiA0KQotICAgICAg
ICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKLSAgICAKLSAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpID09IDQpCi0gICAgICAgIGNvbnRleHQtPnN0cm9rZVRleHQodXN0cmluZ1Rv
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQo
MSkudG9GbG9hdChleGVjKSwgZXhlYy0+YXJndW1lbnQoMikudG9GbG9hdChleGVjKSwgZXhlYy0+
YXJndW1lbnQoMykudG9GbG9hdChleGVjKSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0LT5z
dHJva2VUZXh0KHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KSksIGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyksIGV4ZWMtPmFyZ3VtZW50KDIpLnRv
RmxvYXQoZXhlYykpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5pZGwgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5pZGwKaW5kZXggMjNhZmMxMS4uMGRhNmQ2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCisrKyBiL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAtOTksNyArOTksNiBAQCBt
b2R1bGUgaHRtbCB7CiAKICAgICAgICAgdm9pZCBjbGVhclNoYWRvdygpOwogCi0jaWYgZGVmaW5l
ZChWOF9CSU5ESU5HKSAmJiBWOF9CSU5ESU5HCiAgICAgICAgIHZvaWQgZmlsbFRleHQoaW4gRE9N
U3RyaW5nIHRleHQsIGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIFtPcHRpb25hbF0gZmxvYXQg
bWF4V2lkdGgpOwogICAgICAgICB2b2lkIHN0cm9rZVRleHQoaW4gRE9NU3RyaW5nIHRleHQsIGlu
IGZsb2F0IHgsIGluIGZsb2F0IHksIGluIFtPcHRpb25hbF0gZmxvYXQgbWF4V2lkdGgpOwogCkBA
IC0xNTQsMjAgKzE1Myw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKICAgICAgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShpbiBmbG9hdCBz
dywgaW4gZmxvYXQgc2gpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0jZWxz
ZQotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlICdlbHNlJyBvbmNlIEpTQyBzdXBwb3J0cyBvdmVy
bG9hZHMgdG9vLgotICAgICAgICBbQ3VzdG9tXSB2b2lkIGZpbGxUZXh0KC8qIDQgKi8pOwotICAg
ICAgICBbQ3VzdG9tXSB2b2lkIHN0cm9rZVRleHQoLyogNCAqLyk7Ci0gICAgICAgIFtDdXN0b21d
IHZvaWQgc2V0U3Ryb2tlQ29sb3IoLyogMSAgKi8pOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNl
dEZpbGxDb2xvcigvKiAxICovKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzdHJva2VSZWN0KC8q
IDQgKi8pOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGRyYXdJbWFnZSgvKiAzICovKTsKLSAgICAg
ICAgW0N1c3RvbV0gdm9pZCBkcmF3SW1hZ2VGcm9tUmVjdCgvKiAxMCAqLyk7Ci0gICAgICAgIFtD
dXN0b21dIHZvaWQgc2V0U2hhZG93KC8qIDMgKi8pOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGNy
ZWF0ZVBhdHRlcm4oLyogMiAqLyk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgcHV0SW1hZ2VEYXRh
KC8qIGluIEltYWdlRGF0YSBpbWFnZWRhdGEsIGluIGZsb2F0IGR4LCBpbiBmbG9hdCBkeSBbLCBp
biBmbG9hdCBkaXJ0eVgsIGluIGZsb2F0IGRpcnR5WSwgaW4gZmxvYXQgZGlydHlXaWR0aCwgaW4g
ZmxvYXQgZGlydHlIZWlnaHRdICovKTsKLSAgICAgICAgW0N1c3RvbV0gSW1hZ2VEYXRhIGNyZWF0
ZUltYWdlRGF0YSgvKiAzICovKTsKLSNlbmRpZiAvLyBkZWZpbmVkKFY4X0JJTkRJTkcpCiAKICAg
ICAgICAgYXR0cmlidXRlIFtDdXN0b21dIGN1c3RvbSBzdHJva2VTdHlsZTsKICAgICAgICAgYXR0
cmlidXRlIFtDdXN0b21dIGN1c3RvbSBmaWxsU3R5bGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58601</attachid>
            <date>2010-06-13 12:22:25 -0700</date>
            <delta_ts>2010-06-29 04:51:42 -0700</delta_ts>
            <desc>Patch to ignore superfluous arguments to IDL overloads</desc>
            <filename>bug-39962-part2-v1.diff</filename>
            <type>text/plain</type>
            <size>6094</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">Y29tbWl0IGE0ZWVkMmM3MjAzYTE4MTI2MjM2Mjc0ZjFjNGUwNGQ1MmZiMjliYzUKQXV0aG9yOiBB
bmRyZWFzIEtsaW5nIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KRGF0ZTogICBTdW4gSnVuIDEz
IDIxOjE2OjUzIDIwMTAgKzAyMDAKCiAgICBQYXJ0IDIgLSBpZ25vcmUgc3VwZXJmbHVvdXMgYXJn
cy4KCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGUwMDQ1MGUuLmM1ZjllOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjQgQEAKIAogICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBSZW1vdmUgaGFuZC1yb2xsZWQgSlNDIGJpbmRp
bmdzIGZvciBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTYyCisKKyAgICAgICAgU2lsZW50bHkgaWdub3Jl
IHN1cGVyZmx1b3VzIGFyZ3VtZW50cyB0byBnZW5lcmF0ZWQgb3ZlcmxvYWRzLgorICAgICAgICBU
aGlzIGlzIG9ubHkgdG8ga2VlcCBvbGQgY29kZSB3b3JraW5nLgorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZCk6CisKKzIwMTAtMDYtMTMgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBS
ZW1vdmUgaGFuZC1yb2xsZWQgb3ZlcmxvYWRzIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBK
U0MgYmluZGluZ3MuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTk2MgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCBjNWUwMTJiLi4xYWM2ZDA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTExMDMsNyArMTEwMyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVja0V4cHJlc3Npb24KICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKIAogICAgIG15
IEBhbmRFeHByZXNzaW9uID0gKCk7Ci0gICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgImV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA9PSAkbnVtUGFyYW1ldGVycyIpOworICAgIHB1c2goQGFuZEV4cHJlc3Np
b24sICJleGVjLT5hcmd1bWVudENvdW50KCkgPj0gJG51bVBhcmFtZXRlcnMiKTsKICAgICBteSAk
cGFyYW1ldGVySW5kZXggPSAwOwogICAgIGZvcmVhY2ggJHBhcmFtZXRlciAoQHskZnVuY3Rpb24t
PnBhcmFtZXRlcnN9KSB7CiAgICAgICAgIGxhc3QgaWYgJHBhcmFtZXRlckluZGV4ID49ICRudW1Q
YXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKaW5kZXggMDNmMzIxNS4uZWFjNmE4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC04MzgsNyArODM4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
b25PcHRpb25hbEFyZ0EKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9i
ajo6c19pbmZvKSkKQEAgLTg1Miw3ICs4NTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoRXhlY1N0YQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMihFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQpAQCAt
ODczLDcgKzg3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMihFeGVjU3RhCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QzKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCkBAIC04ODYsNyArODg2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QzKEV4ZWNTdGEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoRXhlY1N0YXRlKiBleGVjKQorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
JkpTVGVzdE9iajo6c19pbmZvKSkKQEAgLTkwMSwxNSArOTAxLDE1IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
NChFeGVjU3RhCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAo
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyICYmIChleGVjLT5hcmd1bWVudCgwKS5pc051bGwo
KSB8fCBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNf
aW5mbykpICYmIChleGVjLT5hcmd1bWVudCgxKS5pc051bGwoKSB8fCBleGVjLT5hcmd1bWVudCgx
KS5pc1VuZGVmaW5lZCgpIHx8IGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkgfHwgZXhlYy0+
YXJndW1lbnQoMSkuaXNPYmplY3QoKSkpKQorICAgIGlmICgoZXhlYy0+YXJndW1lbnRDb3VudCgp
ID49IDIgJiYgKGV4ZWMtPmFyZ3VtZW50KDApLmlzTnVsbCgpIHx8IGV4ZWMtPmFyZ3VtZW50KDAp
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5pbmhlcml0cygmSlNU
ZXN0T2JqOjpzX2luZm8pKSAmJiAoZXhlYy0+YXJndW1lbnQoMSkuaXNOdWxsKCkgfHwgZXhlYy0+
YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSB8fCBleGVjLT5hcmd1bWVudCgxKS5pc1N0cmluZygp
IHx8IGV4ZWMtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpKSkKICAgICAgICAgcmV0dXJuIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoZXhlYyk7Ci0gICAgaWYgKChl
eGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSAmJiAoZXhlYy0+YXJndW1lbnQoMCkuaXNOdWxsKCkg
fHwgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2lu
Zm8pKSkgfHwgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyICYmIChleGVjLT5hcmd1bWVudCgw
KS5pc051bGwoKSB8fCBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPmluaGVyaXRzKCZKU1Rl
c3RPYmo6OnNfaW5mbykpKSkKKyAgICBpZiAoKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxICYm
IChleGVjLT5hcmd1bWVudCgwKS5pc051bGwoKSB8fCBleGVjLT5hcmd1bWVudCgwKS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+aW5oZXJpdHMoJkpTVGVzdE9iajo6
c19pbmZvKSkpIHx8IChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMiAmJiAoZXhlYy0+YXJndW1l
bnQoMCkuaXNOdWxsKCkgfHwgZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSAmJiBhc09iamVj
dChleGVjLT5hcmd1bWVudCgwKSktPmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpKSkKICAg
ICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIo
ZXhlYyk7Ci0gICAgaWYgKChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSAmJiAoZXhlYy0+YXJn
dW1lbnQoMCkuaXNOdWxsKCkgfHwgZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSB8fCBl
eGVjLT5hcmd1bWVudCgwKS5pc1N0cmluZygpIHx8IGV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpKSkKKyAgICBpZiAoKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxICYmIChleGVjLT5hcmd1
bWVudCgwKS5pc051bGwoKSB8fCBleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpIHx8IGV4
ZWMtPmFyZ3VtZW50KDApLmlzU3RyaW5nKCkgfHwgZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3Qo
KSkpKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMyhleGVjKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpCisgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKQogICAgICAgICByZXR1cm4ganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNChleGVjKTsKLSAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjKSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T2JqKiBvYmplY3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58602</attachid>
            <date>2010-06-13 12:43:29 -0700</date>
            <delta_ts>2010-06-13 12:43:29 -0700</delta_ts>
            <desc>Patch that just adds the LayoutTest</desc>
            <filename>bug-39962-part3-v1.diff</filename>
            <type>text/plain</type>
            <size>15945</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZDVlMDQwLi5lMmJmM2I3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYt
MTMgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgaGFuZC1yb2xsZWQg
b3ZlcmxvYWRzIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBKU0MgYmluZGluZ3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk2MgorCisgICAg
ICAgIEFkZCBhIHRlc3QgZm9yIHRoZSBiZWhhdmlvciBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQncyB2YXJpb3VzIG92ZXJsb2FkZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogZmFzdC9jYW52
YXMvY2FudmFzLWNvbnRleHQtb3ZlcmxvYWRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jYW52YXMvY2FudmFzLWNvbnRleHQtb3ZlcmxvYWRzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMu
anM6IEFkZGVkLgorCiAyMDEwLTA2LTA4ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb250ZXh0LW92ZXJsb2Fkcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMDc4ZmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29udGV4dC1vdmVy
bG9hZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTMgQEAKK1Rlc3QgdGhhdCB0aGUgdmFyaW91
cyBvdmVybG9hZHMgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGJlaGF2ZSBhcyB0aGV5J3Zl
IGRvbmUgYmVmb3JlLiBOZWl0aGVyIHJlc3VsdCBzZXQgaXMgbmVjZXNzYXJpbHkgY29ycmVjdCwg
YnV0IHRoaXMgdGVzdCBpbGx1c3RyYXRlcyB0aGUgZGlzY3JlcGFuY3kuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitGQUlMIGN0eC5maWxsVGV4dCgpIHNob3VsZCB0aHJvdyBTeW50
YXhFcnJvcjogU3ludGF4IGVycm9yLiBXYXMgdW5kZWZpbmVkLgorRkFJTCBjdHguZmlsbFRleHQo
J21vbycpIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLiBXYXMgdW5kZWZp
bmVkLgorRkFJTCBjdHguZmlsbFRleHQoJ21vbycsMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9y
OiBTeW50YXggZXJyb3IuIFdhcyB1bmRlZmluZWQuCitQQVNTIGN0eC5maWxsVGV4dCgnbW9vJyww
LDApIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguZmlsbFRleHQoJ21vbycsMCwwLDApIGlzIHVuZGVm
aW5lZAorRkFJTCBjdHguZmlsbFRleHQoJ21vbycsMCwwLDAsMCkgc2hvdWxkIHRocm93IFN5bnRh
eEVycm9yOiBTeW50YXggZXJyb3IuIFdhcyB1bmRlZmluZWQuCitGQUlMIGN0eC5zdHJva2VUZXh0
KCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFdhcyB1bmRlZmluZWQu
CitGQUlMIGN0eC5zdHJva2VUZXh0KCdtb28nKSBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5
bnRheCBlcnJvci4gV2FzIHVuZGVmaW5lZC4KK0ZBSUwgY3R4LnN0cm9rZVRleHQoJ21vbycsMCkg
c2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFdhcyB1bmRlZmluZWQuCitQ
QVNTIGN0eC5zdHJva2VUZXh0KCdtb28nLDAsMCkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5zdHJv
a2VUZXh0KCdtb28nLDAsMCwwKSBpcyB1bmRlZmluZWQKK0ZBSUwgY3R4LnN0cm9rZVRleHQoJ21v
bycsMCwwLDAsMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFdhcyB1
bmRlZmluZWQuCitGQUlMIGN0eC5zZXRTdHJva2VDb2xvcigpIHNob3VsZCB0aHJvdyBTeW50YXhF
cnJvcjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJ3JlZCcpIGlzIHVuZGVmaW5lZAorUEFTUyBjdHgu
c2V0U3Ryb2tlQ29sb3IoMCkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcigw
LCAwKSBpcyB1bmRlZmluZWQKK0ZBSUwgY3R4LnNldFN0cm9rZUNvbG9yKDAsIDAsIDApIHNob3Vs
ZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLiBXYXMgdW5kZWZpbmVkLgorUEFTUyBj
dHguc2V0U3Ryb2tlQ29sb3IoMCwgMCwgMCwgMCkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5zZXRT
dHJva2VDb2xvcigwLCAwLCAwLCAwLCAwKSBpcyB1bmRlZmluZWQKK0ZBSUwgY3R4LnNldFN0cm9r
ZUNvbG9yKDAsIDAsIDAsIDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4
IGVycm9yLiBXYXMgdW5kZWZpbmVkLgorRkFJTCBjdHguc2V0RmlsbENvbG9yKCkgc2hvdWxkIHRo
cm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitQQVNTIGN0eC5zZXRGaWxsQ29sb3IoJ3JlZCcpIGlzIHVuZGVmaW5lZAor
UEFTUyBjdHguc2V0RmlsbENvbG9yKDApIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc2V0RmlsbENv
bG9yKDAsIDApIGlzIHVuZGVmaW5lZAorRkFJTCBjdHguc2V0RmlsbENvbG9yKDAsIDAsIDApIHNo
b3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLiBXYXMgdW5kZWZpbmVkLgorUEFT
UyBjdHguc2V0RmlsbENvbG9yKDAsIDAsIDAsIDApIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguc2V0
RmlsbENvbG9yKDAsIDAsIDAsIDAsIDApIGlzIHVuZGVmaW5lZAorRkFJTCBjdHguc2V0RmlsbENv
bG9yKDAsIDAsIDAsIDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVy
cm9yLiBXYXMgdW5kZWZpbmVkLgorUEFTUyBjdHguc3Ryb2tlUmVjdCgpIGlzIHVuZGVmaW5lZAor
UEFTUyBjdHguc3Ryb2tlUmVjdCgwKSBpcyB1bmRlZmluZWQKK1BBU1MgY3R4LnN0cm9rZVJlY3Qo
MCwgMCkgaXMgdW5kZWZpbmVkCitQQVNTIGN0eC5zdHJva2VSZWN0KDAsIDAsIDApIGlzIHVuZGVm
aW5lZAorUEFTUyBjdHguc3Ryb2tlUmVjdCgwLCAwLCAwLCAwKSBpcyB1bmRlZmluZWQKK1BBU1Mg
Y3R4LnN0cm9rZVJlY3QoMCwgMCwgMCwgMCwgMCkgaXMgdW5kZWZpbmVkCitGQUlMIGN0eC5jcmVh
dGVJbWFnZURhdGEoKSBzaG91bGQgYmUgbnVsbC4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvcgorRkFJTCBjdHguY3JlYXRlSW1hZ2VEYXRhKDApIHNob3VsZCB0aHJvdyBFcnJv
cjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4gVGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY3R4LmNyZWF0ZUltYWdlRGF0YSgwLCAwKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitGQUlM
IGN0eC5jcmVhdGVJbWFnZURhdGEoMCwgMCwgMCkgc2hvdWxkIGJlIG51bGwuIFRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMQorUEFTUyBjdHguZ2V0
SW1hZ2VEYXRhKCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9N
IEV4Y2VwdGlvbiA5LgorUEFTUyBjdHguZ2V0SW1hZ2VEYXRhKDApIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgY3R4LmdldElt
YWdlRGF0YSgwLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDkuCitQQVNTIGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorUEFTUyBjdHgu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDAsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0la
RV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK1BBU1MgY3R4LmdldEltYWdlRGF0YSgwLCAwLCAwLCAw
LCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9u
IDEuCitQQVNTIGN0eC5wdXRJbWFnZURhdGEoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjdHgucHV0SW1hZ2VEYXRhKGlt
YWdlRGF0YSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4
Y2VwdGlvbiA5LgorUEFTUyBjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBj
dHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCkgaXMgdW5kZWZpbmVkCitGQUlMIGN0eC5w
dXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwLCAwKSBzaG91bGQgYmUgdW5kZWZpbmVkLiBUaHJl
dyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkKK0ZB
SUwgY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDAsIDAsIDApIHNob3VsZCBiZSB1bmRl
ZmluZWQuIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNl
cHRpb24gOQorRkFJTCBjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCwgMCwgMCwgMCkg
c2hvdWxkIGJlIHVuZGVmaW5lZC4gVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVE
X0VSUjogRE9NIEV4Y2VwdGlvbiA5CitQQVNTIGN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAw
LCAwLCAwLCAwLCAwLCAwKSBpcyB1bmRlZmluZWQKK1BBU1MgY3R4LnB1dEltYWdlRGF0YShpbWFn
ZURhdGEsIDAsIDAsIDAsIDAsIDAsIDAsIDApIGlzIHVuZGVmaW5lZAorUEFTUyBjdHguZHJhd0lt
YWdlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK0ZBSUwgY3R4LmRy
YXdJbWFnZShpbWFnZUVsZW1lbnQpIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVy
cm9yLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorRkFJTCBjdHguZHJh
d0ltYWdlKGltYWdlRWxlbWVudCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXgg
ZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitGQUlMIGN0eC5k
cmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwKSBzaG91bGQgYmUgdW5kZWZpbmVkLiBUaHJldyBl
eGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEKK0ZBSUwgY3R4
LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJv
cjogU3ludGF4IGVycm9yLiBUaHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBE
T00gRXhjZXB0aW9uIDEuCitQQVNTIGN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwLCAw
LCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9u
IDEuCitGQUlMIGN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwLCAwLCAwLCAwKSBzaG91
bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gVGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorRkFJTCBjdHguZHJhd0ltYWdlKGlt
YWdlRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBT
eW50YXggZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBF
eGNlcHRpb24gMS4KK0ZBSUwgY3R4LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDAsIDAsIDAsIDAs
IDAsIDAsIDApIHNob3VsZCB0aHJvdyBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLiBUaHJldyBl
eGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitQQVNTIGN0
eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuCitGQUlMIGN0
eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSBzaG91
bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gVGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlvbiAxLgorRkFJTCBjdHguZHJhd0ltYWdlKGlt
YWdlRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkgc2hvdWxkIHRocm93IFN5
bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5ERVhfU0la
RV9FUlI6IERPTSBFeGNlcHRpb24gMS4KK0ZBSUwgY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50
KSBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gVGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK0ZBSUwgY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50
LCAwKSBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gVGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY3R4LmRyYXdJbWFnZShjYW52YXNFbGVt
ZW50LCAwLCAwKSBpcyB1bmRlZmluZWQKK0ZBSUwgY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50
LCAwLCAwLCAwKSBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gV2FzIHVu
ZGVmaW5lZC4KK1BBU1MgY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50LCAwLCAwLCAwLCAwKSBp
cyB1bmRlZmluZWQKK0ZBSUwgY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50LCAwLCAwLCAwLCAw
LCAwKSBzaG91bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gV2FzIHVuZGVmaW5l
ZC4KK0ZBSUwgY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwKSBz
aG91bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gV2FzIHVuZGVmaW5lZC4KK0ZB
SUwgY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSBzaG91
bGQgdGhyb3cgU3ludGF4RXJyb3I6IFN5bnRheCBlcnJvci4gV2FzIHVuZGVmaW5lZC4KK0ZBSUwg
Y3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSBzaG91
bGQgdGhyb3cgRXJyb3I6IElOREVYX1NJWkVfRVJSOiBET00gRXhjZXB0aW9uIDEuIFdhcyB1bmRl
ZmluZWQuCitGQUlMIGN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuIFdhcyB1
bmRlZmluZWQuCitGQUlMIGN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCkgc2hvdWxkIHRocm93IFN5bnRheEVycm9yOiBTeW50YXggZXJyb3Iu
IFdhcyB1bmRlZmluZWQuCitQQVNTIGN0eC5jcmVhdGVQYXR0ZXJuKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY3R4LmNyZWF0ZVBhdHRlcm4oMCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK0ZBSUwgY3R4LmNyZWF0ZVBhdHRlcm4o
aW1hZ2VFbGVtZW50KSBzaG91bGQgdGhyb3cgRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRp
b24gMTIuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitGQUlMIGN0eC5j
cmVhdGVQYXR0ZXJuKGNhbnZhc0VsZW1lbnQpIHNob3VsZCB0aHJvdyBFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMi4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KK1BBU1Mgc3RyaW5naWZ5KGN0eC5jcmVhdGVQYXR0ZXJuKGltYWdlRWxlbWVudCwgJ3JlcGVh
dCcpKSBpcyAnW29iamVjdCBDYW52YXNQYXR0ZXJuXScKK1BBU1Mgc3RyaW5naWZ5KGN0eC5jcmVh
dGVQYXR0ZXJuKGNhbnZhc0VsZW1lbnQsICdyZXBlYXQnKSkgaXMgJ1tvYmplY3QgQ2FudmFzUGF0
dGVybl0nCitQQVNTIHN0cmluZ2lmeShjdHguY3JlYXRlUGF0dGVybihpbWFnZUVsZW1lbnQsICdy
ZXBlYXQnLCAwKSkgaXMgJ1tvYmplY3QgQ2FudmFzUGF0dGVybl0nCitQQVNTIHN0cmluZ2lmeShj
dHguY3JlYXRlUGF0dGVybihjYW52YXNFbGVtZW50LCAncmVwZWF0JywgMCkpIGlzICdbb2JqZWN0
IENhbnZhc1BhdHRlcm5dJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1j
b250ZXh0LW92ZXJsb2Fkcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bnRleHQtb3ZlcmxvYWRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZTMzY2RkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1jb250ZXh0LW92ZXJsb2Fkcy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWNvbnRleHQtb3Zl
cmxvYWRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29udGV4dC1vdmVybG9hZHMu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbnRleHQt
b3ZlcmxvYWRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ODY4ZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLWNvbnRleHQtb3ZlcmxvYWRzLmpzCkBAIC0wLDAgKzEsMTA2IEBACitkZXNjcmlwdGlv
bigiVGVzdCB0aGF0IHRoZSB2YXJpb3VzIG92ZXJsb2FkcyBpbiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQgYmVoYXZlIGFzIHRoZXkndmUgZG9uZSBiZWZvcmUuIE5laXRoZXIgcmVzdWx0IHNldCBp
cyBuZWNlc3NhcmlseSBjb3JyZWN0LCBidXQgdGhpcyB0ZXN0IGlsbHVzdHJhdGVzIHRoZSBkaXNj
cmVwYW5jeS4iKTsKKwordmFyIGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycp
LmdldENvbnRleHQoJzJkJyk7CisKK3ZhciBTeW50YXhFcnJvciA9ICJTeW50YXhFcnJvcjogU3lu
dGF4IGVycm9yIjsKK3ZhciBUeXBlRXJyb3IgPSAiVHlwZUVycm9yOiBUeXBlIGVycm9yIjsKKwor
c2hvdWxkVGhyb3coImN0eC5maWxsVGV4dCgpIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRUaHJv
dygiY3R4LmZpbGxUZXh0KCdtb28nKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkVGhyb3coImN0
eC5maWxsVGV4dCgnbW9vJywwKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkQmUoImN0eC5maWxs
VGV4dCgnbW9vJywwLDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5maWxsVGV4dCgn
bW9vJywwLDAsMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRUaHJvdygiY3R4LmZpbGxUZXh0KCdt
b28nLDAsMCwwLDApIiwgIlN5bnRheEVycm9yIik7CisKK3Nob3VsZFRocm93KCJjdHguc3Ryb2tl
VGV4dCgpIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRUaHJvdygiY3R4LnN0cm9rZVRleHQoJ21v
bycpIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRUaHJvdygiY3R4LnN0cm9rZVRleHQoJ21vbycs
MCkiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlVGV4dCgnbW9vJywwLDAp
IiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5zdHJva2VUZXh0KCdtb28nLDAsMCwwKSIs
ICJ1bmRlZmluZWQiKTsKK3Nob3VsZFRocm93KCJjdHguc3Ryb2tlVGV4dCgnbW9vJywwLDAsMCww
KSIsICJTeW50YXhFcnJvciIpOworCitzaG91bGRUaHJvdygiY3R4LnNldFN0cm9rZUNvbG9yKCki
LCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJ3JlZCcpIiwg
InVuZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcigwKSIsICJ1bmRlZmlu
ZWQiKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoMCwgMCkiLCAidW5kZWZpbmVkIik7
CitzaG91bGRUaHJvdygiY3R4LnNldFN0cm9rZUNvbG9yKDAsIDAsIDApIiwgIlN5bnRheEVycm9y
Iik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9yKDAsIDAsIDAsIDApIiwgInVuZGVmaW5l
ZCIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcigwLCAwLCAwLCAwLCAwKSIsICJ1bmRl
ZmluZWQiKTsKK3Nob3VsZFRocm93KCJjdHguc2V0U3Ryb2tlQ29sb3IoMCwgMCwgMCwgMCwgMCwg
MCkiLCAiU3ludGF4RXJyb3IiKTsKKworc2hvdWxkVGhyb3coImN0eC5zZXRGaWxsQ29sb3IoKSIs
ICJTeW50YXhFcnJvciIpOworc2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoJ3JlZCcpIiwgInVu
ZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoMCkiLCAidW5kZWZpbmVkIik7
CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcigwLCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3Vs
ZFRocm93KCJjdHguc2V0RmlsbENvbG9yKDAsIDAsIDApIiwgIlN5bnRheEVycm9yIik7CitzaG91
bGRCZSgiY3R4LnNldEZpbGxDb2xvcigwLCAwLCAwLCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3Vs
ZEJlKCJjdHguc2V0RmlsbENvbG9yKDAsIDAsIDAsIDAsIDApIiwgInVuZGVmaW5lZCIpOworc2hv
dWxkVGhyb3coImN0eC5zZXRGaWxsQ29sb3IoMCwgMCwgMCwgMCwgMCwgMCkiLCAiU3ludGF4RXJy
b3IiKTsKKworc2hvdWxkQmUoImN0eC5zdHJva2VSZWN0KCkiLCAidW5kZWZpbmVkIik7CitzaG91
bGRCZSgiY3R4LnN0cm9rZVJlY3QoMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnN0
cm9rZVJlY3QoMCwgMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVJlY3Qo
MCwgMCwgMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVJlY3QoMCwgMCwg
MCwgMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVJlY3QoMCwgMCwgMCwg
MCwgMCkiLCAidW5kZWZpbmVkIik7CisKK3Nob3VsZEJlKCJjdHguY3JlYXRlSW1hZ2VEYXRhKCki
LCAibnVsbCIpOworc2hvdWxkVGhyb3coImN0eC5jcmVhdGVJbWFnZURhdGEoMCkiLCAiJ0Vycm9y
OiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5JyIpOworc2hvdWxkVGhyb3coImN0
eC5jcmVhdGVJbWFnZURhdGEoMCwgMCkiLCAiJ0Vycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4
Y2VwdGlvbiAxJyIpOworc2hvdWxkQmUoImN0eC5jcmVhdGVJbWFnZURhdGEoMCwgMCwgMCkiLCAi
bnVsbCIpOworCitzaG91bGRUaHJvdygiY3R4LmdldEltYWdlRGF0YSgpIiwgIidFcnJvcjogTk9U
X1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsKK3Nob3VsZFRocm93KCJjdHguZ2V0
SW1hZ2VEYXRhKDApIiwgIidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24g
OSciKTsKK3Nob3VsZFRocm93KCJjdHguZ2V0SW1hZ2VEYXRhKDAsIDApIiwgIidFcnJvcjogTk9U
X1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsKK3Nob3VsZFRocm93KCJjdHguZ2V0
SW1hZ2VEYXRhKDAsIDAsIDApIiwgIidFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRp
b24gMSciKTsKK3Nob3VsZFRocm93KCJjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDAsIDApIiwgIidF
cnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMSciKTsKK3Nob3VsZFRocm93KCJj
dHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDAsIDAsIDApIiwgIidFcnJvcjogSU5ERVhfU0laRV9FUlI6
IERPTSBFeGNlcHRpb24gMSciKTsKKwordmFyIGltYWdlRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURh
dGEoMTAwLCAxMDApOworc2hvdWxkVGhyb3coImN0eC5wdXRJbWFnZURhdGEoKSIsICInRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3JyIpOworc2hvdWxkVGhyb3coImN0
eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhKSIsICInRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDknIik7CitzaG91bGRUaHJvdygiY3R4LnB1dEltYWdlRGF0YShpbWFnZURh
dGEsIDApIiwgIidFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOSciKTsK
K3Nob3VsZEJlKCJjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCkiLCAidW5kZWZpbmVk
Iik7CitzaG91bGRCZSgiY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDAsIDApIiwgInVu
ZGVmaW5lZCIpOworc2hvdWxkQmUoImN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwLCAw
LCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJjdHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0
YSwgMCwgMCwgMCwgMCwgMCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiY3R4LnB1dEltYWdl
RGF0YShpbWFnZURhdGEsIDAsIDAsIDAsIDAsIDAsIDApIiwgInVuZGVmaW5lZCIpOworc2hvdWxk
QmUoImN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSIsICJ1
bmRlZmluZWQiKTsKKwordmFyIGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImltZyIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoKSIsICJUeXBlRXJyb3IiKTsKK3No
b3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCkiLCAiU3ludGF4RXJyb3IiKTsK
K3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCkiLCAiU3ludGF4RXJy
b3IiKTsKK3Nob3VsZEJlKCJjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCkiLCAidW5k
ZWZpbmVkIik7CitzaG91bGRUaHJvdygiY3R4LmRyYXdJbWFnZShpbWFnZUVsZW1lbnQsIDAsIDAs
IDApIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRUaHJvdygiY3R4LmRyYXdJbWFnZShpbWFnZUVs
ZW1lbnQsIDAsIDAsIDAsIDApIiwgIidFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRp
b24gMSciKTsKK3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCwg
MCwgMCwgMCkiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGlt
YWdlRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCkiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZFRo
cm93KCJjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkiLCAi
U3ludGF4RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGltYWdlRWxlbWVudCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkiLCAiJ0Vycm9yOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4
Y2VwdGlvbiAxJyIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkVGhyb3co
ImN0eC5kcmF3SW1hZ2UoaW1hZ2VFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSIsICJTeW50YXhFcnJvciIpOworCit2YXIgY2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpOworc2hvdWxkVGhyb3coImN0eC5kcmF3SW1hZ2UoY2FudmFzRWxl
bWVudCkiLCAiU3ludGF4RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGNhbnZh
c0VsZW1lbnQsIDApIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRCZSgiY3R4LmRyYXdJbWFnZShj
YW52YXNFbGVtZW50LCAwLCAwKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZFRocm93KCJjdHguZHJh
d0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAsIDAsIDApIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRC
ZSgiY3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50LCAwLCAwLCAwLCAwKSIsICJ1bmRlZmluZWQi
KTsKK3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAsIDAsIDAsIDAs
IDApIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRUaHJvdygiY3R4LmRyYXdJbWFnZShjYW52YXNF
bGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwKSIsICJTeW50YXhFcnJvciIpOworc2hvdWxkVGhyb3co
ImN0eC5kcmF3SW1hZ2UoY2FudmFzRWxlbWVudCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkiLCAiU3lu
dGF4RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDApIiwgIidFcnJvcjogSU5ERVhfU0laRV9FUlI6IERPTSBFeGNl
cHRpb24gMSciKTsKK3Nob3VsZFRocm93KCJjdHguZHJhd0ltYWdlKGNhbnZhc0VsZW1lbnQsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApIiwgIlN5bnRheEVycm9yIik7CitzaG91bGRUaHJvdygi
Y3R4LmRyYXdJbWFnZShjYW52YXNFbGVtZW50LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
KSIsICJTeW50YXhFcnJvciIpOworCitzaG91bGRUaHJvdygiY3R4LmNyZWF0ZVBhdHRlcm4oKSIs
ICJUeXBlRXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguY3JlYXRlUGF0dGVybigwKSIsICJUeXBl
RXJyb3IiKTsKK3Nob3VsZFRocm93KCJjdHguY3JlYXRlUGF0dGVybihpbWFnZUVsZW1lbnQpIiwg
IidFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMiciKTsKK3Nob3VsZFRocm93KCJj
dHguY3JlYXRlUGF0dGVybihjYW52YXNFbGVtZW50KSIsICInRXJyb3I6IFNZTlRBWF9FUlI6IERP
TSBFeGNlcHRpb24gMTInIik7CitzaG91bGRCZSgic3RyaW5naWZ5KGN0eC5jcmVhdGVQYXR0ZXJu
KGltYWdlRWxlbWVudCwgJ3JlcGVhdCcpKSIsICInW29iamVjdCBDYW52YXNQYXR0ZXJuXSciKTsK
K3Nob3VsZEJlKCJzdHJpbmdpZnkoY3R4LmNyZWF0ZVBhdHRlcm4oY2FudmFzRWxlbWVudCwgJ3Jl
cGVhdCcpKSIsICInW29iamVjdCBDYW52YXNQYXR0ZXJuXSciKTsKK3Nob3VsZEJlKCJzdHJpbmdp
ZnkoY3R4LmNyZWF0ZVBhdHRlcm4oaW1hZ2VFbGVtZW50LCAncmVwZWF0JywgMCkpIiwgIidbb2Jq
ZWN0IENhbnZhc1BhdHRlcm5dJyIpOworc2hvdWxkQmUoInN0cmluZ2lmeShjdHguY3JlYXRlUGF0
dGVybihjYW52YXNFbGVtZW50LCAncmVwZWF0JywgMCkpIiwgIidbb2JqZWN0IENhbnZhc1BhdHRl
cm5dJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>