<?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>56330</bug_id>
          
          <creation_ts>2011-03-14 13:49:01 -0700</creation_ts>
          <short_desc>[chromium] Implement glue between DataTransferItems and the pasteboard.</short_desc>
          <delta_ts>2011-03-21 17:32:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>dimich</cc>
    
    <cc>levin</cc>
    
    <cc>simonjam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367193</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-03-14 13:49:01 -0700</bug_when>
    <thetext>[chromium] Implement glue between DataTransferItems and the pasteboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367194</commentid>
    <comment_count>1</comment_count>
      <attachid>85715</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-03-14 13:49:27 -0700</bug_when>
    <thetext>Created attachment 85715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367196</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-14 13:51:31 -0700</bug_when>
    <thetext>Attachment 85715 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:48:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:116:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367576</commentid>
    <comment_count>3</comment_count>
      <attachid>85715</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-03-15 02:20:21 -0700</bug_when>
    <thetext>Comment on attachment 85715
Patch

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

&gt; Source/WebCore/ChangeLog:5
&gt; +        Need a short description and bug URL (OOPS!)

This needs to be filled out.

&gt; Source/WebCore/ChangeLog:7
&gt; +        No new tests. (OOPS!)

We need tests for this change!

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:47
&gt;  PassRefPtr&lt;DataTransferItemChromium&gt; DataTransferItemChromium::create(PassRefPtr&lt;Clipboard&gt; owner,
&gt;                                                                        ScriptExecutionContext* context,
&gt; +                                                                      FromPasteboardType,
&gt; +                                                                      const String&amp; type) {

This should all be on one line.

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:49
&gt; +    if (type == mimeTypeTextPlain ||
&gt; +        type == mimeTypeTextHTML) {

We&apos;d usually just put these on one line.

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:51
&gt; +    }

We don&apos;t need these braces.

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:108
&gt; +    if (m_type == mimeTypeTextPlain) {
&gt; +        callback-&gt;scheduleCallback(m_context, PlatformBridge::clipboardReadPlainText(PasteboardPrivate::StandardBuffer));
&gt; +    } else if (m_type == mimeTypeTextHTML) {

No braces for one-line if bodies.  Also, prefer early return.

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:120
&gt; +    if ((m_owner-&gt;policy() != ClipboardReadable &amp;&amp; m_owner-&gt;policy() != ClipboardWritable)
&gt; +        || m_kind != kindFile)
&gt; +        return 0;
&gt; +    return 0;

Why are we returning zero in both cases?  That seems wrong...

&gt; Source/WebKit/chromium/ChangeLog:5
&gt; +        Need a short description and bug URL (OOPS!)

This needs to be filled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370082</commentid>
    <comment_count>4</comment_count>
      <attachid>86254</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-03-18 19:42:49 -0700</bug_when>
    <thetext>Created attachment 86254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370453</commentid>
    <comment_count>5</comment_count>
      <attachid>86254</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-21 10:34:26 -0700</bug_when>
    <thetext>Comment on attachment 86254
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Support retrieving clipboard data in a paste through DataTransferItems.
&gt; +

There should be a &quot;Test: editing/pasteboard/data-transfer-items.html&quot; line there (normally prepare-ChangeLog does that for you, but you&apos;re probably just editing the previous message).

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:112
&gt;  }

Should there be a NOTREACHED here?

&gt; Source/WebCore/platform/chromium/DataTransferItemChromium.h:49
&gt; +    enum FromPasteboardType {
&gt; +        FromPasteboard,
&gt; +    };

I&apos;m confused as to what this is for.

&gt; Source/WebCore/platform/chromium/PlatformBridge.h:102
&gt; +    static PassRefPtr&lt;SharedBuffer&gt; clipboardReadImage(PasteboardPrivate::ClipboardBuffer);

Where is this implemented?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370807</commentid>
    <comment_count>6</comment_count>
      <attachid>86347</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-03-21 11:59:29 -0700</bug_when>
    <thetext>Created attachment 86347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370809</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-03-21 12:00:49 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 86254 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86254&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Support retrieving clipboard data in a paste through DataTransferItems.
&gt; &gt; +
&gt; 
&gt; There should be a &quot;Test: editing/pasteboard/data-transfer-items.html&quot; line there (normally prepare-ChangeLog does that for you, but you&apos;re probably just editing the previous message).

Done. For some reason, it&apos;s not emitting that line. I added it manually.

&gt; 
&gt; &gt; Source/WebCore/platform/chromium/DataTransferItemChromium.cpp:112
&gt; &gt;  }
&gt; 
&gt; Should there be a NOTREACHED here?
&gt; 

Done.

&gt; &gt; Source/WebCore/platform/chromium/DataTransferItemChromium.h:49
&gt; &gt; +    enum FromPasteboardType {
&gt; &gt; +        FromPasteboard,
&gt; &gt; +    };
&gt; 
&gt; I&apos;m confused as to what this is for.
&gt; 

It&apos;s just a marker to distinguish the overloads of DataTransferItem::create().

&gt; &gt; Source/WebCore/platform/chromium/PlatformBridge.h:102
&gt; &gt; +    static PassRefPtr&lt;SharedBuffer&gt; clipboardReadImage(PasteboardPrivate::ClipboardBuffer);
&gt; 
&gt; Where is this implemented?

I missed reverting this change. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370932</commentid>
    <comment_count>8</comment_count>
      <attachid>86347</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-21 15:01:16 -0700</bug_when>
    <thetext>Comment on attachment 86347
Patch

(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 86254 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86254&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; &gt; +        Support retrieving clipboard data in a paste through DataTransferItems.
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; There should be a &quot;Test: editing/pasteboard/data-transfer-items.html&quot; line there (normally prepare-ChangeLog does that for you, but you&apos;re probably just editing the previous message).
&gt; 
&gt; Done. For some reason, it&apos;s not emitting that line. I added it manually.

Hmm, maybe it only adds it for new tests.  Anyway, it&apos;s nice to have either way.

&gt; &gt; &gt; Source/WebCore/platform/chromium/DataTransferItemChromium.h:49
&gt; &gt; &gt; +    enum FromPasteboardType {
&gt; &gt; &gt; +        FromPasteboard,
&gt; &gt; &gt; +    };
&gt; &gt; 
&gt; &gt; I&apos;m confused as to what this is for.
&gt; &gt; 
&gt; 
&gt; It&apos;s just a marker to distinguish the overloads of DataTransferItem::create().

It seems like it would be a bit clearer to name the method createFromPasteboard.  I would probably also just have a single constructor that takes DataSource as a parameter (so you don&apos;t have to keep 2 sets of constructor initializer lists in sync).


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

&gt; Source/WebCore/platform/chromium/DataTransferItemsChromium.h:60
&gt; +    friend class ClipboardChromium;

What is this for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371007</commentid>
    <comment_count>9</comment_count>
      <attachid>86385</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-03-21 16:40:13 -0700</bug_when>
    <thetext>Created attachment 86385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371011</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-03-21 16:42:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 86347 [details])
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (From update of attachment 86254 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86254&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; &gt; &gt; +        Support retrieving clipboard data in a paste through DataTransferItems.
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; 
&gt; &gt; &gt; There should be a &quot;Test: editing/pasteboard/data-transfer-items.html&quot; line there (normally prepare-ChangeLog does that for you, but you&apos;re probably just editing the previous message).
&gt; &gt; 
&gt; &gt; Done. For some reason, it&apos;s not emitting that line. I added it manually.
&gt; 
&gt; Hmm, maybe it only adds it for new tests.  Anyway, it&apos;s nice to have either way.
&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/chromium/DataTransferItemChromium.h:49
&gt; &gt; &gt; &gt; +    enum FromPasteboardType {
&gt; &gt; &gt; &gt; +        FromPasteboard,
&gt; &gt; &gt; &gt; +    };
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m confused as to what this is for.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; It&apos;s just a marker to distinguish the overloads of DataTransferItem::create().
&gt; 
&gt; It seems like it would be a bit clearer to name the method createFromPasteboard.  I would probably also just have a single constructor that takes DataSource as a parameter (so you don&apos;t have to keep 2 sets of constructor initializer lists in sync).
&gt; 
&gt; 

Done.

&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86347&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/DataTransferItemsChromium.h:60
&gt; &gt; +    friend class ClipboardChromium;
&gt; 
&gt; What is this for?

addPasteboardItem is only exposed to ClipboardChromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371029</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-03-21 17:03:26 -0700</bug_when>
    <thetext>Committed r81620: &lt;http://trac.webkit.org/changeset/81620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371062</commentid>
    <comment_count>12</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2011-03-21 17:32:37 -0700</bug_when>
    <thetext>The new test is failing on the Chrome bots:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;group=%40ToT%20-%20chromium.org&amp;tests=editing%2Fpasteboard%2Fdata-transfer-items.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85715</attachid>
            <date>2011-03-14 13:49:27 -0700</date>
            <delta_ts>2011-03-18 19:42:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56330-20110314134926.patch</filename>
            <type>text/plain</type>
            <size>9623</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA5NzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NDY5OTJhODhlYjllZTAz
N2RiNjQ0ZGJmMmNjMDhiZmFmMTljMGYyLi5jNTdiMzQ0ZWU0N2YxZTBmM2Q0YWE3ODFiZTMxY2Fh
MmJjY2JjODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTQgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcg
VVJMIChPT1BTISkKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAq
IGRvbS9EYXRhVHJhbnNmZXJJdGVtLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
aWRsOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OkRhdGFUcmFu
c2Zlckl0ZW1DaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtQ2hy
b21pdW06OmdldEFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1D
aHJvbWl1bTo6Z2V0QXNGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJh
bnNmZXJJdGVtQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bUJyaWRnZS5oOgorCiAyMDExLTAzLTEzICBKZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaAppbmRleCA3YjU4ODZhZjU3OGUzOWU3NjZhNjM5NjVi
NTY1NTUwOTQ4YTBhNmNlLi5kNjQ4YzU2ODE1MmUwZTc2YzM0OGU0NTNjMzNhNmRhNzgzYWZkZmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmgKQEAgLTM4LDYgKzM4LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCbG9iOwogY2xhc3MgU3RyaW5nQ2FsbGJh
Y2s7CiAKIGNsYXNzIERhdGFUcmFuc2Zlckl0ZW0gOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhVHJh
bnNmZXJJdGVtPiB7CkBAIC01MSw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyB0eXBlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFzU3RyaW5nKFBhc3NS
ZWZQdHI8U3RyaW5nQ2FsbGJhY2s+KSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJsb2I+
IGdldEFzRmlsZSgpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbAppbmRleCBhMmM5OTQyNjQ2NmI0MjY2YTRiZWE2
MzIwNDE1MmYyNWZjZjg4ZGU2Li5hY2NhZjUwMDY0ZmM1OGFlOWI3MDg3OTBiYjc1ODBiYzY5NGRh
MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0uaWRsCkBAIC0zNyw2ICsz
Nyw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB0eXBlOwogCiAgICAgICAgIHZvaWQgZ2V0QXNTdHJpbmcoaW4gW0NhbGxiYWNrXSBTdHJpbmdD
YWxsYmFjayBjYWxsYmFjayk7CisgICAgICAgIEJsb2IgZ2V0QXNGaWxlKCk7CiAgICAgfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5z
ZmVySXRlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Rh
dGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5jcHAKaW5kZXggMjFiMGIzMzlhNWU5ZGIwNjZlM2JiNTBm
ZDY3NmRkNjhiNjBkZjhhYi4uZDVkNGZmM2M4ZGJmYzEwMmZkZjA3ZDE0ZmZkM2UxZmRkZjdmYTIz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5z
ZmVySXRlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uY3BwCkBAIC0zMywyNSArMzMsNDkgQEAKIAogI2lm
IEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQogCisjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1
ZGUgIkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkNsaXBib2FyZE1pbWVUeXBlcy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ2FsbGJhY2suaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bT4g
RGF0YVRyYW5zZmVySXRlbUNocm9taXVtOjpjcmVhdGUoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93
bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRnJvbVBhc3RlYm9hcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
dHlwZSkgeworICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dFBsYWluIHx8CisgICAgICAgIHR5
cGUgPT0gbWltZVR5cGVUZXh0SFRNTCkgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERh
dGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShvd25lciwgY29udGV4dCwgRnJvbVBhc3RlYm9hcmQsIERh
dGFUcmFuc2Zlckl0ZW06OmtpbmRTdHJpbmcsIHR5cGUpKTsKKyAgICB9CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0ob3duZXIsIGNvbnRleHQsIEZyb21Q
YXN0ZWJvYXJkLCBEYXRhVHJhbnNmZXJJdGVtOjpraW5kRmlsZSwgdHlwZSkpOworfQorCitQYXNz
UmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bT4gRGF0YVRyYW5zZmVySXRlbUNocm9taXVt
OjpjcmVhdGUoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBk
YXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShvd25lciwgY29udGV4dCwgZGF0YSwg
dHlwZSkpOwogfQogCitEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OkRhdGFUcmFuc2Zlckl0ZW1D
aHJvbWl1bShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEZyb21QYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25z
dCBTdHJpbmcmIHR5cGUpCisgICAgOiBtX293bmVyKG93bmVyKQorICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCisgICAgLCBtX3NvdXJjZShQYXN0ZWJvYXJkU291cmNlKQorICAgICwgbV9raW5kKGtp
bmQpCisgICAgLCBtX3R5cGUodHlwZSkKK3sKK30KKwogRGF0YVRyYW5zZmVySXRlbUNocm9taXVt
OjpEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0oUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0
IFN0cmluZyYgdHlwZSkKICAgICA6IG1fb3duZXIob3duZXIpCiAgICAgLCBtX2NvbnRleHQoY29u
dGV4dCkKKyAgICAsIG1fc291cmNlKEludGVybmFsU291cmNlKQogICAgICwgbV9raW5kKGtpbmRT
dHJpbmcpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAgICwgbV9kYXRhKGRhdGEpCisgICAgLCBt
X2RhdGEoZGF0YSkKIHsKIH0KIApAQCAtNzQsNyArOTgsMjYgQEAgdm9pZCBEYXRhVHJhbnNmZXJJ
dGVtQ2hyb21pdW06OmdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxi
YWNrKQogICAgIGlmICgobV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgJiYg
bV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCiAgICAgICAgIHx8IG1fa2lu
ZCAhPSBraW5kU3RyaW5nKQogICAgICAgICByZXR1cm47Ci0gICAgY2FsbGJhY2stPnNjaGVkdWxl
Q2FsbGJhY2sobV9jb250ZXh0LCBtX2RhdGEpOworICAgIGlmIChtX3NvdXJjZSA9PSBJbnRlcm5h
bFNvdXJjZSkgeworICAgICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhtX2NvbnRleHQs
IG1fZGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gVGhpcyBpcyB1Z2x5IGJ1
dCB0aGVyZSdzIG5vIHJlYWwgYWx0ZXJuYXRpdmUuCisgICAgaWYgKG1fdHlwZSA9PSBtaW1lVHlw
ZVRleHRQbGFpbikgeworICAgICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhtX2NvbnRl
eHQsIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KFBhc3RlYm9hcmRQcml2
YXRlOjpTdGFuZGFyZEJ1ZmZlcikpOworICAgIH0gZWxzZSBpZiAobV90eXBlID09IG1pbWVUeXBl
VGV4dEhUTUwpIHsKKyAgICAgICAgU3RyaW5nIGh0bWw7CisgICAgICAgIEtVUkwgaWdub3JlZFNv
dXJjZVVSTDsKKyAgICAgICAgUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRIVE1MKFBhc3Rl
Ym9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlciwgJmh0bWwsICZpZ25vcmVkU291cmNlVVJMKTsK
KyAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LCBodG1sKTsKKyAg
ICB9Cit9CisKK1Bhc3NSZWZQdHI8QmxvYj4gRGF0YVRyYW5zZmVySXRlbUNocm9taXVtOjpnZXRB
c0ZpbGUoKSB7CisgICAgaWYgKChtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRSZWFkYWJs
ZSAmJiBtX293bmVyLT5wb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICAgICAgfHwg
bV9raW5kICE9IGtpbmRGaWxlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaAppbmRleCA2Y2U3
ZjA2M2U3NjE1ZGNiNWI4NWY4NWRiOGU0OTlkMzJhOGY4YWU2Li4wYzFiNzlkZjlkMmZkZmNiYWM5
N2U2YzAyZWE2MjhmZGQ5YjM5ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaApAQCAtNDQsMTgg
KzQ0LDMxIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIERhdGFUcmFu
c2Zlckl0ZW1DaHJvbWl1bSA6IHB1YmxpYyBEYXRhVHJhbnNmZXJJdGVtIHsKIHB1YmxpYzoKKyAg
ICBlbnVtIEZyb21QYXN0ZWJvYXJkVHlwZSB7CisgICAgICAgIEZyb21QYXN0ZWJvYXJkLAorICAg
IH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0+IGNy
ZWF0ZShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBGcm9tUGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbUNocm9taXVtPiBjcmVhdGUoUGFzc1JlZlB0cjxDbGlw
Ym9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRh
LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogCiAgICAgdmlydHVhbCBTdHJpbmcga2luZCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBn
ZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPik7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEJsb2I+IGdldEFzRmlsZSgpOwogCiBwcml2YXRlOgorICAgIGVudW0gRGF0YVNvdXJj
ZSB7CisgICAgICAgIFBhc3RlYm9hcmRTb3VyY2UsCisgICAgICAgIEludGVybmFsU291cmNlLAor
ICAgIH07CisKKyAgICBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0oUGFzc1JlZlB0cjxDbGlwYm9h
cmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRnJvbVBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgRGF0YVRyYW5zZmVy
SXRlbUNocm9taXVtKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKIAogICAg
IGNvbnN0IFJlZlB0cjxDbGlwYm9hcmQ+IG1fb3duZXI7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogbV9jb250ZXh0OworICAgIGNvbnN0IERhdGFTb3VyY2UgbV9zb3VyY2U7CiAgICAgY29u
c3QgU3RyaW5nIG1fa2luZDsKICAgICBjb25zdCBTdHJpbmcgbV90eXBlOwogICAgIGNvbnN0IFN0
cmluZyBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybUJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1CcmlkZ2UuaAppbmRleCAxYzNjY2JkMGI4MDVmMmNiYmZiMDgxYzg1YTVhNzUyZGZlOTFj
N2U5Li5hYWRkNzY4MzkyM2VmN2VkMTA4M2Y2MWQ1OTEzMDEzZWZlYjc2OTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQnJpZGdlLmgKQEAgLTgw
LDYgKzgwLDcgQEAgY2xhc3MgSURCS2V5OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEtVUkw7CiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBX
aWRnZXQ7CiAKIHN0cnVjdCBDb29raWU7CkBAIC05OCw2ICs5OSw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBTdHJpbmcgY2xpcGJvYXJkUmVhZFBsYWluVGV4dChQYXN0ZWJvYXJkUHJpdmF0ZTo6
Q2xpcGJvYXJkQnVmZmVyKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwYm9hcmRSZWFkSFRNTChQYXN0
ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyLCBTdHJpbmcqLCBLVVJMKik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbGlwYm9hcmRSZWFkSW1hZ2UoUGFzdGVib2Fy
ZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlcik7CiAKICAgICAvLyBPbmx5IHRoZSBjbGlwYm9hcmRS
ZWFkIGZ1bmN0aW9ucyB0YWtlIGEgYnVmZmVyIGFyZ3VtZW50IGJlY2F1c2UKICAgICAvLyBDaHJv
bWl1bSBjdXJyZW50bHkgdXNlcyBhIGRpZmZlcmVudCB0ZWNobmlxdWUgdG8gd3JpdGUgdG8gYWx0
ZXJuYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGIxZTM5NjQ2MjY3MWQxNTYyOWFj
MjBjNGQwMjU3OTY2ZTlkMDZmZDQuLmUwZDk2OGY5YzYzZTUzOTkxNTM1ODk5ZjhhNDA1NmM3MWFm
MzU0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEt
MDMtMTQgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0
aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICAqIHNyYy9QbGF0Zm9ybUJyaWRnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEltYWdl
KToKKwogMjAxMS0wMy0xMSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUm9sbG91dCB0aGUgY2hyb21pdW0gZGVwcyByb2xsIGFzIGl0IGFkZHMgYSBkZXBlbmRl
bmN5IG9uIGEgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybUJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUJy
aWRnZS5jcHAKaW5kZXggZDgyNWQyNGFlZjZjOTA4OWUzMGM2MTY1ZWQ4YWQzYjY2ODkzMmJiZS4u
MWRmMGYzMTY1OTM2NzkzM2ViZDdmOTJmM2NiNjQ3ODI2NjVhNmU4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNwcApAQCAtMTc4LDYgKzE3OCwxMyBA
QCB2b2lkIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkSFRNTCgKICAgICAqc291cmNlVVJM
ID0gdXJsOwogfQogCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1CcmlkZ2U6OmNs
aXBib2FyZFJlYWRJbWFnZSgKKyAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVy
IGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmNsaXBib2FyZCgpLT5yZWFk
SW1hZ2UoCisgICAgICAgIHN0YXRpY19jYXN0PFdlYkNsaXBib2FyZDo6QnVmZmVyPihidWZmZXIp
KTsKK30KKwogdm9pZCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkV3JpdGVTZWxlY3Rpb24oY29u
c3QgU3RyaW5nJiBodG1sVGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEtVUkwmIHNvdXJjZVVSTCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86254</attachid>
            <date>2011-03-18 19:42:49 -0700</date>
            <delta_ts>2011-03-21 11:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56330-20110318194248.patch</filename>
            <type>text/plain</type>
            <size>19622</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZjg5YzFkNTJkMjNmMTBkZjIxYWEz
ZTdiNTc2YmNlNWE4ZTIwZDlkLi5jZDdkNTNmZWRjMDU5OTU0MjRjMTMxZWQ4YTA4NDcyNDlkYjhj
OGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMTggIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgZ2x1ZSBiZXR3ZWVuIERhdGFUcmFuc2Zl
ckl0ZW1zIGFuZCB0aGUgcGFzdGVib2FyZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2MzMwCisKKyAgICAgICAgVXBkYXRlIHRoZSBsYXlvdXQgdGVz
dCB0byB0YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIGNs
aXBib2FyZAorICAgICAgICBhcmUgZXhwb3NlZCBpbiBhIHBhc3RlIHZpYSBEYXRhVHJhbnNmZXJJ
dGVtcyBub3cuCisgICAgICAgIEFsc28gZml4IHRoZSBmbGFraW5lc3MgaW4gdGhlIGxheW91dCB0
ZXN0LgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW1zLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDExLTAzLTE4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkLCBzdXBwcmVzcyBlZGl0aW5n
L2RlbGV0aW5nLzUyMDYzMTEtMS5odG1sIGNyYXNoZXMgb24gTWFjIERlYnVnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtcy1leHBlY3RlZC50eHQKaW5kZXggZGEyN2Q1MTYyMTBhYTkxZTNkZDBjNzM2N2VhZDM5ODRi
YTE1ZmJiYi4uYjEwYmFmNDUwNjgyYjM5NjExYTdlMjg4YjRlMmE0YTg3MmZhY2QwMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dApAQCAtMSwxOCArMSwyNCBAQAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE5OiBQb3B1bGF0aW5nIERhdGFUcmFuc2Zlckl0ZW1zLi4uCi1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjc6IENhdWdodCBleGNlcHRpb24gIkVycm9yOiBJTlZBTElEX1NUQVRFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMSIgYXMgZXhwZWN0ZWQuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
MzE6IFZlcmlmeWluZyBjb250ZW50cyBvZiBEYXRhVHJhbnNmZXJJdGVtcy4uLgotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDMyOiBpdGVtcy5sZW5ndGg6IDIKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAz
MzogaXRlbXNbMF0ua2luZDogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6IGl0ZW1z
WzBdLnR5cGU6IHRleHQvcGxhaW4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzNTogaXRlbXNbMV0u
a2luZDogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzY6IGl0ZW1zWzFdLnR5cGU6IHRl
eHQvaHRtbAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQwOiBDaGVja2luZyBpZiBpdGVtcyBwYXN0
IHRoZSBlbmQgb2YgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGluZGV4ZWQ6Ci1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgNDE6IGl0ZW1zWzJdOiB1bmRlZmluZWQKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA1
MTogQ2hlY2tpbmcgdGhhdCBhIHJlYWQtb25seSBEYXRhVHJhbnNmZXJJdGVtcyBjYW5ub3QgYmUg
bXV0YXRlZC4uLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU0OiBpdGVtcy5sZW5ndGg6IDAKLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA1NTogaXRlbXNbMF06IHVuZGVmaW5lZAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDY4OiBUZXN0aW5nIGlmIERhdGFUcmFuc2Zlckl0ZW1zIGNhbiBiZSBhY2Nlc3Nl
ZCBvdXRzaWRlIGFuIGV2ZW50IGhhbmRsZXIuLi4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMzog
aXRlbXNbMF0gdmFsdWU6IEhlbGxvIFdvcmxkIQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBp
dGVtc1sxXSB2YWx1ZTogPGI+SGVsbG8gV29ybGQhCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgOTk6
IFBBU1NFRAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OiBQb3B1bGF0aW5nIERhdGFUcmFuc2Zl
ckl0ZW1zLi4uCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzI6IENhdWdodCBleGNlcHRpb24gIkVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMSIgYXMgZXhwZWN0ZWQuCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMzY6IFZlcmlmeWluZyBjb250ZW50cyBvZiBEYXRhVHJhbnNm
ZXJJdGVtcy4uLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3OiBpdGVtcy5sZW5ndGg6IDIKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAzODogaXRlbXNbMF0ua2luZDogc3RyaW5nCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMzk6IGl0ZW1zWzBdLnR5cGU6IHRleHQvcGxhaW4KK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA0MDogaXRlbXNbMV0ua2luZDogc3RyaW5nCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NDE6IGl0ZW1zWzFdLnR5cGU6IHRleHQvaHRtbAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ3OiBD
aGVja2luZyBpZiBpdGVtcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGlu
ZGV4ZWQ6CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDg6IGl0ZW1zWzJdIGlzIHVuZGVmaW5lZDog
dW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjA6IENoZWNraW5nIHRoYXQgYSByZWFk
LW9ubHkgRGF0YVRyYW5zZmVySXRlbXMgY2Fubm90IGJlIG11dGF0ZWQuLi4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA2MzogaXRlbXMubGVuZ3RoOiAyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjQ6
IGl0ZW1zWzBdLmtpbmQ6IHN0cmluZworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY1OiBpdGVtc1sw
XS50eXBlOiB0ZXh0L2h0bWwKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2ODogaXRlbXNbMV0ua2lu
ZDogc3RyaW5nCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjk6IGl0ZW1zWzFdLnR5cGU6IHRleHQv
cGxhaW4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3MjogaXRlbXNbMl0gaXMgdW5kZWZpbmVkOiB1
bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4OTogVGVzdGluZyBpZiBEYXRhVHJhbnNm
ZXJJdGVtcyBjYW4gYmUgYWNjZXNzZWQgb3V0c2lkZSBhbiBldmVudCBoYW5kbGVyLi4uCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgOTg6IERhdGFUcmFuc2Zlckl0ZW0gYWNjZXNzZWQgb3V0c2lkZSBl
dmVudCBoYW5kbGVyIQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBjb3B5OiBpdGVtc1swXSB2
YWx1ZTogSGVsbG8gV29ybGQhCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IGNvcHk6IGl0ZW1z
WzFdIHZhbHVlOiA8Yj5IZWxsbyBXb3JsZCEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogcGFz
dGU6IGl0ZW1zWzBdIHZhbHVlOiA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9
ImJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFt
aWx5OiBUaW1lczsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9u
dC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5v
cm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogLXdlYmtpdC1hdXRvOyB0ZXh0LWluZGVudDog
MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAy
OyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nOiAw
cHg7IC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LWRl
Y29yYXRpb25zLWluLWVmZmVjdDogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRv
OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IGZvbnQtc2l6ZTogbWVkaXVtOyAiPlRo
aXMgZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQgcHJvcGVydGllcyBvZiBE
YXRhVHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC48L3NwYW4+CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMTU6IHBhc3RlOiBpdGVtc1sxXSB2YWx1ZTogVGhpcyBmaWxlIHRlc3Rz
IHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0
ZW1zLiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULgogVGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBm
dW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRl
c3QgcmVxdWlyZXMgRFJULgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLmh0bWwKaW5kZXggMDc0OGU4NWQ5MDY2YjhlMzM3YmQx
ODY0NTU0Zjg2M2UwODA0NWNmZS4uMzgzNDJkYjk0ZTAyMzk2MjE3NzRiYjNmMTlkNjE4NmQ3NDUz
NGZjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtcy5odG1sCkBAIC01LDEyICs1LDE3IEBACiAKIDxzY3JpcHQgc3JjPSIu
Li9lZGl0aW5nLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Cit2YXIgdW5kZWZpbmVkOwordmFyIHBl
bmRpbmdDYWxsYmFja3MgPSAwOwogdmFyIHNhdmVkRGF0YVRyYW5zZmVySXRlbXMgPSBudWxsOwog
dmFyIHNhdmVkRGF0YVRyYW5zZmVySXRlbSA9IG51bGw7CiAKIGZ1bmN0aW9uIGhhbmRsZUV2ZW50
KGRhdGEpCiB7CiAgICAgY29uc29sZS5sb2coZGF0YSk7CisgICAgaWYgKC0tcGVuZGluZ0NhbGxi
YWNrcyA9PSAwKSB7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgfQogfQogCiBmdW5jdGlvbiBjb3B5KGV2KQpAQCAtMzQsMjUgKzM5LDM3IEBA
IGZ1bmN0aW9uIGNvcHkoZXYpCiAgICAgY29uc29sZS5sb2coJ2l0ZW1zWzBdLnR5cGU6ICcgKyBp
dGVtc1swXS50eXBlKTsKICAgICBjb25zb2xlLmxvZygnaXRlbXNbMV0ua2luZDogJyArIGl0ZW1z
WzFdLmtpbmQpOwogICAgIGNvbnNvbGUubG9nKCdpdGVtc1sxXS50eXBlOiAnICsgaXRlbXNbMV0u
dHlwZSk7Ci0gICAgaXRlbXNbMF0uZ2V0QXNTdHJpbmcoZnVuY3Rpb24gKGRhdGEpIHsgaGFuZGxl
RXZlbnQoJ2l0ZW1zWzBdIHZhbHVlOiAnICsgZGF0YSk7IH0pOwotICAgIGl0ZW1zWzFdLmdldEFz
U3RyaW5nKGZ1bmN0aW9uIChkYXRhKSB7IGhhbmRsZUV2ZW50KCdpdGVtc1sxXSB2YWx1ZTogJyAr
IGRhdGEpOyB9KTsKKyAgICBpdGVtc1swXS5nZXRBc1N0cmluZyhmdW5jdGlvbiAoZGF0YSkgeyBo
YW5kbGVFdmVudCgnY29weTogaXRlbXNbMF0gdmFsdWU6ICcgKyBkYXRhKTsgfSk7CisgICAgcGVu
ZGluZ0NhbGxiYWNrcysrOworICAgIGl0ZW1zWzFdLmdldEFzU3RyaW5nKGZ1bmN0aW9uIChkYXRh
KSB7IGhhbmRsZUV2ZW50KCdjb3B5OiBpdGVtc1sxXSB2YWx1ZTogJyArIGRhdGEpOyB9KTsKKyAg
ICBwZW5kaW5nQ2FsbGJhY2tzKys7CiAKICAgICBjb25zb2xlLmxvZygnQ2hlY2tpbmcgaWYgaXRl
bXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBjb2xsZWN0aW9uIGNhbiBiZSBpbmRleGVkOicpOwotICAg
IGNvbnNvbGUubG9nKCdpdGVtc1syXTogJyArIGl0ZW1zWzJdKTsKLQotICAgIHNhdmVkRGF0YVRy
YW5zZmVySXRlbXMgPSBpdGVtczsKLSAgICBzYXZlZERhdGFUcmFuc2Zlckl0ZW0gPSBpdGVtc1sw
XTsKKyAgICBjb25zb2xlLmxvZygnaXRlbXNbMl0gaXMgdW5kZWZpbmVkOiAnICsgdHlwZW9mIGl0
ZW1zWzJdKTsKIH0KIAogZnVuY3Rpb24gcGFzdGUoZXYpCiB7CiAgICAgdmFyIGl0ZW1zID0gZXZl
bnQuY2xpcGJvYXJkRGF0YS5pdGVtczsKKworICAgIC8vIENhY2hlIHJlZmVyZW5jZXMgdG8gbWFr
ZSBzdXJlIHRoZXkgYXJlbid0IGFjY2Vzc2libGUgb3V0c2lkZSB0aGUgZXZlbnQgaGFuZGxlci4K
KyAgICBzYXZlZERhdGFUcmFuc2Zlckl0ZW1zID0gaXRlbXM7CisgICAgc2F2ZWREYXRhVHJhbnNm
ZXJJdGVtID0gaXRlbXNbMF07CisKICAgICB2YXIgb3JpZ2luYWxMZW5ndGggPSBpdGVtcy5sZW5n
dGg7CiAgICAgY29uc29sZS5sb2coJ0NoZWNraW5nIHRoYXQgYSByZWFkLW9ubHkgRGF0YVRyYW5z
ZmVySXRlbXMgY2Fubm90IGJlIG11dGF0ZWQuLi4nKTsKICAgICAvLyBTaG91bGQgYmUgaW1tdXRh
YmxlLgogICAgIGl0ZW1zLmFkZCgnSGVsbG8gV29ybGQhJywgJ3RleHQvcGxhaW4nKTsKICAgICBj
b25zb2xlLmxvZygnaXRlbXMubGVuZ3RoOiAnICsgaXRlbXMubGVuZ3RoKTsKLSAgICBjb25zb2xl
LmxvZygnaXRlbXNbMF06ICcgKyBpdGVtc1swXSk7IC8vIFNob3VsZG4ndCBleGlzdC4KKyAgICBj
b25zb2xlLmxvZygnaXRlbXNbMF0ua2luZDogJyArIGl0ZW1zWzBdLmtpbmQpOworICAgIGNvbnNv
bGUubG9nKCdpdGVtc1swXS50eXBlOiAnICsgaXRlbXNbMF0udHlwZSk7CisgICAgaXRlbXNbMF0u
Z2V0QXNTdHJpbmcoZnVuY3Rpb24gKGRhdGEpIHsgaGFuZGxlRXZlbnQoJ3Bhc3RlOiBpdGVtc1sw
XSB2YWx1ZTogJyArIGRhdGEpOyB9KTsKKyAgICBwZW5kaW5nQ2FsbGJhY2tzKys7CisgICAgY29u
c29sZS5sb2coJ2l0ZW1zWzFdLmtpbmQ6ICcgKyBpdGVtc1sxXS5raW5kKTsKKyAgICBjb25zb2xl
LmxvZygnaXRlbXNbMV0udHlwZTogJyArIGl0ZW1zWzFdLnR5cGUpOworICAgIGl0ZW1zWzFdLmdl
dEFzU3RyaW5nKGZ1bmN0aW9uIChkYXRhKSB7IGhhbmRsZUV2ZW50KCdwYXN0ZTogaXRlbXNbMV0g
dmFsdWU6ICcgKyBkYXRhKTsgfSk7CisgICAgcGVuZGluZ0NhbGxiYWNrcysrOworICAgIGNvbnNv
bGUubG9nKCdpdGVtc1syXSBpcyB1bmRlZmluZWQ6ICcgKyB0eXBlb2YgaXRlbXNbMl0pOwogfQog
CiBmdW5jdGlvbiBydW5UZXN0KCkgewpAQCAtNjEsNDQgKzc4LDI4IEBAIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKIAorICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKDAsIDApOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgfQogICAgIGNvcHlDb21tYW5kKCk7CiAgICAgcGFzdGVDb21tYW5kKCk7CiAKLSAgICB2
YXIgZmFpbGVkID0gZmFsc2U7CiAgICAgY29uc29sZS5sb2coJ1Rlc3RpbmcgaWYgRGF0YVRyYW5z
ZmVySXRlbXMgY2FuIGJlIGFjY2Vzc2VkIG91dHNpZGUgYW4gZXZlbnQgaGFuZGxlci4uLicpOwog
ICAgIGlmIChzYXZlZERhdGFUcmFuc2Zlckl0ZW1zLmxlbmd0aCAhPSAwKSB7Ci0gICAgICAgIGZh
aWxlZCA9IHRydWU7CiAgICAgICAgIGNvbnNvbGUubG9nKCdEYXRhVHJhbnNmZXJJdGVtcy5sZW5n
dGggbm9uLXplcm8gb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwogICAgIH0KICAgICBzYXZlZERh
dGFUcmFuc2Zlckl0ZW1zLmFkZCgnU2VjdXJpdHk/JywgJ3RleHQvZm9vJyk7CiAgICAgaWYgKHNh
dmVkRGF0YVRyYW5zZmVySXRlbXMubGVuZ3RoICE9IDApIHsKLSAgICAgICAgZmFpbGVkID0gdHJ1
ZTsKICAgICAgICAgY29uc29sZS5sb2coJ0RhdGFUcmFuc2Zlckl0ZW1zIG11dGF0ZWQgb3V0c2lk
ZSBldmVudCBoYW5kbGVyIScpOwogICAgIH0KLSAgICBpZiAoc2F2ZWREYXRhVHJhbnNmZXJJdGVt
c1swXSkgewotICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgIGlmICh0eXBlb2Ygc2F2ZWREYXRh
VHJhbnNmZXJJdGVtc1swXSA9PSAndW5kZWZpbmVkJykgewogICAgICAgICBjb25zb2xlLmxvZygn
RGF0YVRyYW5zZmVySXRlbSBhY2Nlc3NlZCBvdXRzaWRlIGV2ZW50IGhhbmRsZXIhJyk7CiAgICAg
fQotICAgIGlmIChzYXZlZERhdGFUcmFuc2Zlckl0ZW0ua2luZCAhPSAnJykgewotICAgICAgICBm
YWlsZWQgPSB0cnVlOwotICAgICAgICBjb25zb2xlLmxvZygnRGF0YVRyYW5zZmVySXRlbS5raW5k
IGFjY2Vzc2libGUgb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwotICAgIH0KLSAgICBpZiAoc2F2
ZWREYXRhVHJhbnNmZXJJdGVtLnR5cGUgIT0gJycpIHsKLSAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
LSAgICAgICAgY29uc29sZS5sb2coJ0RhdGFUcmFuc2Zlckl0ZW0udHlwZSBhY2Nlc3NpYmxlIG91
dHNpZGUgZXZlbnQgaGFuZGxlciEnKTsKKyAgICBpZiAodHlwZW9mIHNhdmVkRGF0YVRyYW5zZmVy
SXRlbSA9PSAndW5kZWZpbmVkJykgeworICAgICAgICBjb25zb2xlLmxvZygnRGF0YVRyYW5zZmVy
SXRlbSBhY2Nlc3NlZCBvdXRzaWRlIGV2ZW50IGhhbmRsZXIhJyk7CiAgICAgfQotICAgIHNhdmVk
RGF0YVRyYW5zZmVySXRlbS5nZXRBc1N0cmluZyhmdW5jdGlvbiAoZGF0YSkgewotICAgICAgICBm
YWlsZWQgPSB0cnVlOwotICAgICAgICBjb25zb2xlLmxvZygnZ2V0QXNTdHJpbmcgY2FsbGVkIGJh
Y2sgb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwotICAgIH0pOwotCi0gICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAoZmFpbGVkKQotICAgICAgICAgICAgY29u
c29sZS5sb2coJ0ZBSUxFRCcpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb25zb2xlLmxv
ZygnUEFTU0VEJyk7Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgMCk7CiB9CiAKIHJ1blRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhYWNjZDdiZWU5
YmJkNmI2NjdjMDZlMjVhYzJmNmM3ZDA1OGUzMmUxLi5mY2MxY2EyODNmNjQ5YWVlMDI0N2ZkZGRj
NGZkY2NmMjkyNGQzMWMwIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xMTEsOCArMTExLDYgQEAgQlVHV0s1NTkxMyBE
RUJVRyA6IGpxdWVyeS9tYW5pcHVsYXRpb24uaHRtbCA9IFRJTUVPVVQgUEFTUwogQlVHV0s1NTkx
MyBERUJVRyBTTE9XIDoganF1ZXJ5L29mZnNldC5odG1sID0gUEFTUwogQlVHV0s1NTkxMyBERUJV
RyBTTE9XIDoganF1ZXJ5L3RyYXZlcnNpbmcuaHRtbCA9IFBBU1MKIAotQlVHQ1I3NjU0MyBXSU4g
TUFDIDogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbCA9IFBBU1Mg
VEVYVAotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gU0tJUFBFRCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwZGM5OGY1NTMxOTcyZGJhNGZiZWJkYmQzNTM3YTkzNzFjODRhMTg3Li44MTJmNGEz
YjdjMWJkY2FjZTMxMDZmYTg1MmRiY2ViY2IxNDdlMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMTEtMDMtMTggIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVt
XSBJbXBsZW1lbnQgZ2x1ZSBiZXR3ZWVuIERhdGFUcmFuc2Zlckl0ZW1zIGFuZCB0aGUgcGFzdGVi
b2FyZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzMwCisKKyAgICAgICAgU3VwcG9ydCByZXRyaWV2aW5nIGNsaXBib2FyZCBkYXRhIGluIGEgcGFz
dGUgdGhyb3VnaCBEYXRhVHJhbnNmZXJJdGVtcy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENo
cm9taXVtOjppdGVtcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVy
SXRlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1DaHJv
bWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1
bTo6RGF0YVRyYW5zZmVySXRlbUNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlckl0ZW1DaHJvbWl1bTo6Z2V0QXNTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0RhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YVRyYW5zZmVySXRlbXNDaHJvbWl1bTo6YWRkUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oOgorCiAyMDExLTAzLTE4ICBKYXJra28g
U2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggZWFkYjY4
NzZkZjEzNjNjMTY0OTg2ZDgyNDJkMWEwMDAzMTNjOGE5My4uNjc1NjMxMzM0ODk4ZTlkYzZkNWFk
ZTA1OTRmYjI5MjVlZjgzMGQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcApAQCAtMzQ2LDcgKzM0NiwxOCBAQCBi
b29sIENsaXBib2FyZENocm9taXVtOjpoYXNEYXRhKCkKICNpZiBFTkFCTEUoREFUQV9UUkFOU0ZF
Ul9JVEVNUykKIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbXM+IENsaXBib2FyZENocm9taXVt
OjppdGVtcygpCiB7Ci0gICAgcmV0dXJuIERhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW06OmNyZWF0
ZSh0aGlzLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwor
ICAgIFJlZlB0cjxEYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtPiBpdGVtcyA9IERhdGFUcmFuc2Zl
ckl0ZW1zQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworCisgICAgaWYgKCFtX2RhdGFPYmplY3QpCisgICAgICAgIHJl
dHVybiBpdGVtczsKKworICAgIGlmIChpc0ZvckNvcHlBbmRQYXN0ZSgpICYmIHBvbGljeSgpID09
IENsaXBib2FyZFJlYWRhYmxlKSB7CisgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdHlw
ZXMgYW5kIGFkZCB0aGVtLgorICAgICAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMgPSBtX2RhdGFP
YmplY3QtPnR5cGVzKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHR5cGVzLmJlZ2luKCk7IGl0ICE9IHR5cGVzLmVuZCgpOyArK2l0KQorICAgICAg
ICAgICAgaXRlbXMtPmFkZFBhc3RlYm9hcmRJdGVtKCppdCk7CisgICAgfQorICAgIHJldHVybiBp
dGVtczsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmNwcAppbmRleCAyMWIwYjMz
OWE1ZTlkYjA2NmUzYmI1MGZkNjc2ZGQ2OGI2MGRmOGFiLi5kNzQ5MDE4ZWIzZThlMGEzZDI5MjA4
ZTc4ZmE2MmQyYTMyM2M0YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5jcHAKQEAgLTM0LDEw
ICszNCwxOSBAQAogI2lmIEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQogCiAjaW5jbHVkZSAi
Q2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkTWltZVR5cGVzLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1CcmlkZ2UuaCIKICNpbmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbUNocm9taXVtPiBEYXRh
VHJhbnNmZXJJdGVtQ2hyb21pdW06OmNyZWF0ZShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZyb21QYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dFBsYWluIHx8
IHR5cGUgPT0gbWltZVR5cGVUZXh0SFRNTCkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
YXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0ob3duZXIsIGNvbnRleHQsIEZyb21QYXN0ZWJvYXJkLCBE
YXRhVHJhbnNmZXJJdGVtOjpraW5kU3RyaW5nLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0ob3duZXIsIGNvbnRleHQsIEZyb21QYXN0ZWJv
YXJkLCBEYXRhVHJhbnNmZXJJdGVtOjpraW5kRmlsZSwgdHlwZSkpOworfQorCiBQYXNzUmVmUHRy
PERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bT4gRGF0YVRyYW5zZmVySXRlbUNocm9taXVtOjpjcmVh
dGUoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhLApA
QCAtNDYsMTIgKzU1LDIyIEBAIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbUNocm9taXVtPiBE
YXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmNyZWF0ZShQYXNzUmVmUHRyCiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0ob3duZXIsIGNvbnRleHQsIGRhdGEs
IHR5cGUpKTsKIH0KIAorRGF0YVRyYW5zZmVySXRlbUNocm9taXVtOjpEYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW0oUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBGcm9tUGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiB0eXBlKQorICAgIDogbV9vd25lcihvd25lcikKKyAgICAsIG1fY29udGV4dChj
b250ZXh0KQorICAgICwgbV9zb3VyY2UoUGFzdGVib2FyZFNvdXJjZSkKKyAgICAsIG1fa2luZChr
aW5kKQorICAgICwgbV90eXBlKHR5cGUpCit7Cit9CisKIERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1
bTo6RGF0YVRyYW5zZmVySXRlbUNocm9taXVtKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHR5cGUpCiAgICAgOiBtX293bmVyKG93bmVyKQogICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCisgICAgLCBtX3NvdXJjZShJbnRlcm5hbFNvdXJjZSkKICAgICAsIG1fa2luZChraW5k
U3RyaW5nKQogICAgICwgbV90eXBlKHR5cGUpCi0gICAgICAsIG1fZGF0YShkYXRhKQorICAgICwg
bV9kYXRhKGRhdGEpCiB7CiB9CiAKQEAgLTc0LDcgKzkzLDIyIEBAIHZvaWQgRGF0YVRyYW5zZmVy
SXRlbUNocm9taXVtOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxs
YmFjaykKICAgICBpZiAoKG1fb3duZXItPnBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYm
IG1fb3duZXItPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQogICAgICAgICB8fCBtX2tp
bmQgIT0ga2luZFN0cmluZykKICAgICAgICAgcmV0dXJuOwotICAgIGNhbGxiYWNrLT5zY2hlZHVs
ZUNhbGxiYWNrKG1fY29udGV4dCwgbV9kYXRhKTsKKyAgICBpZiAobV9zb3VyY2UgPT0gSW50ZXJu
YWxTb3VyY2UpIHsKKyAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0
LCBtX2RhdGEpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFRoaXMgaXMgdWdseSBi
dXQgdGhlcmUncyBubyByZWFsIGFsdGVybmF0aXZlLgorICAgIGlmIChtX3R5cGUgPT0gbWltZVR5
cGVUZXh0UGxhaW4pIHsKKyAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250
ZXh0LCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZFBsYWluVGV4dChQYXN0ZWJvYXJkUHJp
dmF0ZTo6U3RhbmRhcmRCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
bV90eXBlID09IG1pbWVUeXBlVGV4dEhUTUwpIHsKKyAgICAgICAgU3RyaW5nIGh0bWw7CisgICAg
ICAgIEtVUkwgaWdub3JlZFNvdXJjZVVSTDsKKyAgICAgICAgUGxhdGZvcm1CcmlkZ2U6OmNsaXBi
b2FyZFJlYWRIVE1MKFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlciwgJmh0bWwsICZp
Z25vcmVkU291cmNlVVJMKTsKKyAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2sobV9j
b250ZXh0LCBodG1sKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
RGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaAppbmRleCA2Y2U3ZjA2M2U3NjE1ZGNiNWI4
NWY4NWRiOGU0OTlkMzJhOGY4YWU2Li5kYTc4ODEyYmYzNDNiYmE3MWYzNGY1ODMwZWVkZGI2ODZm
N2VmZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRh
VHJhbnNmZXJJdGVtQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaApAQCAtNDQsNiArNDQsMTEgQEAgY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgRGF0YVRyYW5zZmVySXRlbUNocm9taXVt
IDogcHVibGljIERhdGFUcmFuc2Zlckl0ZW0gewogcHVibGljOgorICAgIGVudW0gRnJvbVBhc3Rl
Ym9hcmRUeXBlIHsKKyAgICAgICAgRnJvbVBhc3RlYm9hcmQsCisgICAgfTsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bT4gY3JlYXRlKFBhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZyb21QYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhVHJh
bnNmZXJJdGVtQ2hyb21pdW0+IGNyZWF0ZShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYg
dHlwZSk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBraW5kKCkgY29uc3Q7CkBAIC01MiwxMCArNTcs
MTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0
cmluZ0NhbGxiYWNrPik7CiAKIHByaXZhdGU6CisgICAgZW51bSBEYXRhU291cmNlIHsKKyAgICAg
ICAgUGFzdGVib2FyZFNvdXJjZSwKKyAgICAgICAgSW50ZXJuYWxTb3VyY2UsCisgICAgfTsKKwor
ICAgIERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGcm9tUGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYga2luZCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBEYXRhVHJhbnNmZXJJdGVtQ2hyb21p
dW0oUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpOwogCiAgICAgY29uc3QgUmVm
UHRyPENsaXBib2FyZD4gbV9vd25lcjsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2Nv
bnRleHQ7CisgICAgY29uc3QgRGF0YVNvdXJjZSBtX3NvdXJjZTsKICAgICBjb25zdCBTdHJpbmcg
bV9raW5kOwogICAgIGNvbnN0IFN0cmluZyBtX3R5cGU7CiAgICAgY29uc3QgU3RyaW5nIG1fZGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFu
c2Zlckl0ZW1zQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
RGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bS5jcHAKaW5kZXggNjljOTExMmNjYzRjM2VlMTJmZmFi
NWU3MGYzYjFhY2FkM2FhZjY3NC4uMjYxMWEyZDMzODMwNTEzYzdhZGNmOWJhMWMxZThhN2Y3MmI1
ZTZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRy
YW5zZmVySXRlbXNDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vRGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bS5jcHAKQEAgLTEwMSw2ICsxMDEsMTEgQEAg
dm9pZCBEYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtOjphZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUsIEV4Y2UKICAgICBtX2l0ZW1zLmFwcGVuZChEYXRhVHJhbnNmZXJJ
dGVtQ2hyb21pdW06OmNyZWF0ZShtX293bmVyLCBtX2NvbnRleHQsIGRhdGEsIHR5cGUpKTsKIH0K
IAordm9pZCBEYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtOjphZGRQYXN0ZWJvYXJkSXRlbShjb25z
dCBTdHJpbmcmIHR5cGUpCit7CisgICAgbV9pdGVtcy5hcHBlbmQoRGF0YVRyYW5zZmVySXRlbUNo
cm9taXVtOjpjcmVhdGUobV9vd25lciwgbV9jb250ZXh0LCBEYXRhVHJhbnNmZXJJdGVtQ2hyb21p
dW06OkZyb21QYXN0ZWJvYXJkLCB0eXBlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbXNDaHJv
bWl1bS5oCmluZGV4IDA5Y2JlOThlY2EzMjk5OTE4Yjk3ZWRiYjg3ODUwNWM2MTRlOWRkZWQuLjUx
YzRmZGJmYzc1YTM3MmQ2NmY2ZTE2MWVlOGNjMGZjNTU1NTY4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0No
cm9taXVtLmgKQEAgLTU3LDggKzU3LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWRk
KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJik7
CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENsaXBib2FyZENocm9taXVtOworCiAgICAg
RGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bShQYXNzUmVmUHRyPENsaXBib2FyZD4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhZGRQYXN0ZWJvYXJkSXRlbShj
b25zdCBTdHJpbmcmIHR5cGUpOworCiAgICAgUmVmUHRyPENsaXBib2FyZD4gbV9vd25lcjsKICAg
ICAvLyBJbmRpcmVjdGx5IG93bmVkIGJ5IG91ciBwYXJlbnQuCiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtQnJpZGdlLmgKaW5kZXggMWMzY2NiZDBiODA1ZjJjYmJmYjA4MWM4NWE1YTc1
MmRmZTkxYzdlOS4uYWFkZDc2ODM5MjNlZjdlZDEwODNmNjFkNTkxMzAxM2VmZWI3Njk2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5o
CkBAIC04MCw2ICs4MCw3IEBAIGNsYXNzIElEQktleTsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBL
VVJMOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgV2lkZ2V0OwogCiBzdHJ1Y3QgQ29va2llOwpAQCAtOTgsNiArOTksNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgU3RyaW5nIGNsaXBib2FyZFJlYWRQbGFpblRleHQoUGFzdGVib2FyZFBy
aXZhdGU6OkNsaXBib2FyZEJ1ZmZlcik7CiAgICAgc3RhdGljIHZvaWQgY2xpcGJvYXJkUmVhZEhU
TUwoUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgU3RyaW5nKiwgS1VSTCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xpcGJvYXJkUmVhZEltYWdlKFBh
c3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIpOwogCiAgICAgLy8gT25seSB0aGUgY2xp
cGJvYXJkUmVhZCBmdW5jdGlvbnMgdGFrZSBhIGJ1ZmZlciBhcmd1bWVudCBiZWNhdXNlCiAgICAg
Ly8gQ2hyb21pdW0gY3VycmVudGx5IHVzZXMgYSBkaWZmZXJlbnQgdGVjaG5pcXVlIHRvIHdyaXRl
IHRvIGFsdGVybmF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86347</attachid>
            <date>2011-03-21 11:59:29 -0700</date>
            <delta_ts>2011-03-21 16:40:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56330-20110321115927.patch</filename>
            <type>text/plain</type>
            <size>18757</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZjg5YzFkNTJkMjNmMTBkZjIxYWEz
ZTdiNTc2YmNlNWE4ZTIwZDlkLi4yOWNkY2Q2ZjJmYTIzMzFkOWUyNGY3MjllOWU5ZWQyNGJhYWVi
MzhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMjEgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgZ2x1ZSBiZXR3ZWVuIERhdGFUcmFuc2Zl
ckl0ZW1zIGFuZCB0aGUgcGFzdGVib2FyZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2MzMwCisKKyAgICAgICAgVXBkYXRlIHRoZSBsYXlvdXQgdGVz
dCB0byB0YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIGNs
aXBib2FyZAorICAgICAgICBhcmUgZXhwb3NlZCBpbiBhIHBhc3RlIHZpYSBEYXRhVHJhbnNmZXJJ
dGVtcyBub3cuCisgICAgICAgIEFsc28gZml4IHRoZSBmbGFraW5lc3MgaW4gdGhlIGxheW91dCB0
ZXN0LgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW1zLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDExLTAzLTE4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkLCBzdXBwcmVzcyBlZGl0aW5n
L2RlbGV0aW5nLzUyMDYzMTEtMS5odG1sIGNyYXNoZXMgb24gTWFjIERlYnVnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtcy1leHBlY3RlZC50eHQKaW5kZXggZGEyN2Q1MTYyMTBhYTkxZTNkZDBjNzM2N2VhZDM5ODRi
YTE1ZmJiYi4uYjEwYmFmNDUwNjgyYjM5NjExYTdlMjg4YjRlMmE0YTg3MmZhY2QwMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dApAQCAtMSwxOCArMSwyNCBAQAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE5OiBQb3B1bGF0aW5nIERhdGFUcmFuc2Zlckl0ZW1zLi4uCi1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjc6IENhdWdodCBleGNlcHRpb24gIkVycm9yOiBJTlZBTElEX1NUQVRFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMSIgYXMgZXhwZWN0ZWQuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
MzE6IFZlcmlmeWluZyBjb250ZW50cyBvZiBEYXRhVHJhbnNmZXJJdGVtcy4uLgotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDMyOiBpdGVtcy5sZW5ndGg6IDIKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAz
MzogaXRlbXNbMF0ua2luZDogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6IGl0ZW1z
WzBdLnR5cGU6IHRleHQvcGxhaW4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzNTogaXRlbXNbMV0u
a2luZDogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzY6IGl0ZW1zWzFdLnR5cGU6IHRl
eHQvaHRtbAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQwOiBDaGVja2luZyBpZiBpdGVtcyBwYXN0
IHRoZSBlbmQgb2YgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGluZGV4ZWQ6Ci1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgNDE6IGl0ZW1zWzJdOiB1bmRlZmluZWQKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA1
MTogQ2hlY2tpbmcgdGhhdCBhIHJlYWQtb25seSBEYXRhVHJhbnNmZXJJdGVtcyBjYW5ub3QgYmUg
bXV0YXRlZC4uLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU0OiBpdGVtcy5sZW5ndGg6IDAKLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA1NTogaXRlbXNbMF06IHVuZGVmaW5lZAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDY4OiBUZXN0aW5nIGlmIERhdGFUcmFuc2Zlckl0ZW1zIGNhbiBiZSBhY2Nlc3Nl
ZCBvdXRzaWRlIGFuIGV2ZW50IGhhbmRsZXIuLi4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMzog
aXRlbXNbMF0gdmFsdWU6IEhlbGxvIFdvcmxkIQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBp
dGVtc1sxXSB2YWx1ZTogPGI+SGVsbG8gV29ybGQhCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgOTk6
IFBBU1NFRAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OiBQb3B1bGF0aW5nIERhdGFUcmFuc2Zl
ckl0ZW1zLi4uCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzI6IENhdWdodCBleGNlcHRpb24gIkVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMSIgYXMgZXhwZWN0ZWQuCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMzY6IFZlcmlmeWluZyBjb250ZW50cyBvZiBEYXRhVHJhbnNm
ZXJJdGVtcy4uLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3OiBpdGVtcy5sZW5ndGg6IDIKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAzODogaXRlbXNbMF0ua2luZDogc3RyaW5nCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMzk6IGl0ZW1zWzBdLnR5cGU6IHRleHQvcGxhaW4KK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA0MDogaXRlbXNbMV0ua2luZDogc3RyaW5nCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NDE6IGl0ZW1zWzFdLnR5cGU6IHRleHQvaHRtbAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ3OiBD
aGVja2luZyBpZiBpdGVtcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGlu
ZGV4ZWQ6CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDg6IGl0ZW1zWzJdIGlzIHVuZGVmaW5lZDog
dW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjA6IENoZWNraW5nIHRoYXQgYSByZWFk
LW9ubHkgRGF0YVRyYW5zZmVySXRlbXMgY2Fubm90IGJlIG11dGF0ZWQuLi4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA2MzogaXRlbXMubGVuZ3RoOiAyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjQ6
IGl0ZW1zWzBdLmtpbmQ6IHN0cmluZworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY1OiBpdGVtc1sw
XS50eXBlOiB0ZXh0L2h0bWwKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2ODogaXRlbXNbMV0ua2lu
ZDogc3RyaW5nCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjk6IGl0ZW1zWzFdLnR5cGU6IHRleHQv
cGxhaW4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3MjogaXRlbXNbMl0gaXMgdW5kZWZpbmVkOiB1
bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4OTogVGVzdGluZyBpZiBEYXRhVHJhbnNm
ZXJJdGVtcyBjYW4gYmUgYWNjZXNzZWQgb3V0c2lkZSBhbiBldmVudCBoYW5kbGVyLi4uCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgOTg6IERhdGFUcmFuc2Zlckl0ZW0gYWNjZXNzZWQgb3V0c2lkZSBl
dmVudCBoYW5kbGVyIQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBjb3B5OiBpdGVtc1swXSB2
YWx1ZTogSGVsbG8gV29ybGQhCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IGNvcHk6IGl0ZW1z
WzFdIHZhbHVlOiA8Yj5IZWxsbyBXb3JsZCEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogcGFz
dGU6IGl0ZW1zWzBdIHZhbHVlOiA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9
ImJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFt
aWx5OiBUaW1lczsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9u
dC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5v
cm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogLXdlYmtpdC1hdXRvOyB0ZXh0LWluZGVudDog
MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAy
OyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nOiAw
cHg7IC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LWRl
Y29yYXRpb25zLWluLWVmZmVjdDogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRv
OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IGZvbnQtc2l6ZTogbWVkaXVtOyAiPlRo
aXMgZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQgcHJvcGVydGllcyBvZiBE
YXRhVHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC48L3NwYW4+CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMTU6IHBhc3RlOiBpdGVtc1sxXSB2YWx1ZTogVGhpcyBmaWxlIHRlc3Rz
IHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0
ZW1zLiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULgogVGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBm
dW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRl
c3QgcmVxdWlyZXMgRFJULgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLmh0bWwKaW5kZXggMDc0OGU4NWQ5MDY2YjhlMzM3YmQx
ODY0NTU0Zjg2M2UwODA0NWNmZS4uMzgzNDJkYjk0ZTAyMzk2MjE3NzRiYjNmMTlkNjE4NmQ3NDUz
NGZjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtcy5odG1sCkBAIC01LDEyICs1LDE3IEBACiAKIDxzY3JpcHQgc3JjPSIu
Li9lZGl0aW5nLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Cit2YXIgdW5kZWZpbmVkOwordmFyIHBl
bmRpbmdDYWxsYmFja3MgPSAwOwogdmFyIHNhdmVkRGF0YVRyYW5zZmVySXRlbXMgPSBudWxsOwog
dmFyIHNhdmVkRGF0YVRyYW5zZmVySXRlbSA9IG51bGw7CiAKIGZ1bmN0aW9uIGhhbmRsZUV2ZW50
KGRhdGEpCiB7CiAgICAgY29uc29sZS5sb2coZGF0YSk7CisgICAgaWYgKC0tcGVuZGluZ0NhbGxi
YWNrcyA9PSAwKSB7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgfQogfQogCiBmdW5jdGlvbiBjb3B5KGV2KQpAQCAtMzQsMjUgKzM5LDM3IEBA
IGZ1bmN0aW9uIGNvcHkoZXYpCiAgICAgY29uc29sZS5sb2coJ2l0ZW1zWzBdLnR5cGU6ICcgKyBp
dGVtc1swXS50eXBlKTsKICAgICBjb25zb2xlLmxvZygnaXRlbXNbMV0ua2luZDogJyArIGl0ZW1z
WzFdLmtpbmQpOwogICAgIGNvbnNvbGUubG9nKCdpdGVtc1sxXS50eXBlOiAnICsgaXRlbXNbMV0u
dHlwZSk7Ci0gICAgaXRlbXNbMF0uZ2V0QXNTdHJpbmcoZnVuY3Rpb24gKGRhdGEpIHsgaGFuZGxl
RXZlbnQoJ2l0ZW1zWzBdIHZhbHVlOiAnICsgZGF0YSk7IH0pOwotICAgIGl0ZW1zWzFdLmdldEFz
U3RyaW5nKGZ1bmN0aW9uIChkYXRhKSB7IGhhbmRsZUV2ZW50KCdpdGVtc1sxXSB2YWx1ZTogJyAr
IGRhdGEpOyB9KTsKKyAgICBpdGVtc1swXS5nZXRBc1N0cmluZyhmdW5jdGlvbiAoZGF0YSkgeyBo
YW5kbGVFdmVudCgnY29weTogaXRlbXNbMF0gdmFsdWU6ICcgKyBkYXRhKTsgfSk7CisgICAgcGVu
ZGluZ0NhbGxiYWNrcysrOworICAgIGl0ZW1zWzFdLmdldEFzU3RyaW5nKGZ1bmN0aW9uIChkYXRh
KSB7IGhhbmRsZUV2ZW50KCdjb3B5OiBpdGVtc1sxXSB2YWx1ZTogJyArIGRhdGEpOyB9KTsKKyAg
ICBwZW5kaW5nQ2FsbGJhY2tzKys7CiAKICAgICBjb25zb2xlLmxvZygnQ2hlY2tpbmcgaWYgaXRl
bXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBjb2xsZWN0aW9uIGNhbiBiZSBpbmRleGVkOicpOwotICAg
IGNvbnNvbGUubG9nKCdpdGVtc1syXTogJyArIGl0ZW1zWzJdKTsKLQotICAgIHNhdmVkRGF0YVRy
YW5zZmVySXRlbXMgPSBpdGVtczsKLSAgICBzYXZlZERhdGFUcmFuc2Zlckl0ZW0gPSBpdGVtc1sw
XTsKKyAgICBjb25zb2xlLmxvZygnaXRlbXNbMl0gaXMgdW5kZWZpbmVkOiAnICsgdHlwZW9mIGl0
ZW1zWzJdKTsKIH0KIAogZnVuY3Rpb24gcGFzdGUoZXYpCiB7CiAgICAgdmFyIGl0ZW1zID0gZXZl
bnQuY2xpcGJvYXJkRGF0YS5pdGVtczsKKworICAgIC8vIENhY2hlIHJlZmVyZW5jZXMgdG8gbWFr
ZSBzdXJlIHRoZXkgYXJlbid0IGFjY2Vzc2libGUgb3V0c2lkZSB0aGUgZXZlbnQgaGFuZGxlci4K
KyAgICBzYXZlZERhdGFUcmFuc2Zlckl0ZW1zID0gaXRlbXM7CisgICAgc2F2ZWREYXRhVHJhbnNm
ZXJJdGVtID0gaXRlbXNbMF07CisKICAgICB2YXIgb3JpZ2luYWxMZW5ndGggPSBpdGVtcy5sZW5n
dGg7CiAgICAgY29uc29sZS5sb2coJ0NoZWNraW5nIHRoYXQgYSByZWFkLW9ubHkgRGF0YVRyYW5z
ZmVySXRlbXMgY2Fubm90IGJlIG11dGF0ZWQuLi4nKTsKICAgICAvLyBTaG91bGQgYmUgaW1tdXRh
YmxlLgogICAgIGl0ZW1zLmFkZCgnSGVsbG8gV29ybGQhJywgJ3RleHQvcGxhaW4nKTsKICAgICBj
b25zb2xlLmxvZygnaXRlbXMubGVuZ3RoOiAnICsgaXRlbXMubGVuZ3RoKTsKLSAgICBjb25zb2xl
LmxvZygnaXRlbXNbMF06ICcgKyBpdGVtc1swXSk7IC8vIFNob3VsZG4ndCBleGlzdC4KKyAgICBj
b25zb2xlLmxvZygnaXRlbXNbMF0ua2luZDogJyArIGl0ZW1zWzBdLmtpbmQpOworICAgIGNvbnNv
bGUubG9nKCdpdGVtc1swXS50eXBlOiAnICsgaXRlbXNbMF0udHlwZSk7CisgICAgaXRlbXNbMF0u
Z2V0QXNTdHJpbmcoZnVuY3Rpb24gKGRhdGEpIHsgaGFuZGxlRXZlbnQoJ3Bhc3RlOiBpdGVtc1sw
XSB2YWx1ZTogJyArIGRhdGEpOyB9KTsKKyAgICBwZW5kaW5nQ2FsbGJhY2tzKys7CisgICAgY29u
c29sZS5sb2coJ2l0ZW1zWzFdLmtpbmQ6ICcgKyBpdGVtc1sxXS5raW5kKTsKKyAgICBjb25zb2xl
LmxvZygnaXRlbXNbMV0udHlwZTogJyArIGl0ZW1zWzFdLnR5cGUpOworICAgIGl0ZW1zWzFdLmdl
dEFzU3RyaW5nKGZ1bmN0aW9uIChkYXRhKSB7IGhhbmRsZUV2ZW50KCdwYXN0ZTogaXRlbXNbMV0g
dmFsdWU6ICcgKyBkYXRhKTsgfSk7CisgICAgcGVuZGluZ0NhbGxiYWNrcysrOworICAgIGNvbnNv
bGUubG9nKCdpdGVtc1syXSBpcyB1bmRlZmluZWQ6ICcgKyB0eXBlb2YgaXRlbXNbMl0pOwogfQog
CiBmdW5jdGlvbiBydW5UZXN0KCkgewpAQCAtNjEsNDQgKzc4LDI4IEBAIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKIAorICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKDAsIDApOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgfQogICAgIGNvcHlDb21tYW5kKCk7CiAgICAgcGFzdGVDb21tYW5kKCk7CiAKLSAgICB2
YXIgZmFpbGVkID0gZmFsc2U7CiAgICAgY29uc29sZS5sb2coJ1Rlc3RpbmcgaWYgRGF0YVRyYW5z
ZmVySXRlbXMgY2FuIGJlIGFjY2Vzc2VkIG91dHNpZGUgYW4gZXZlbnQgaGFuZGxlci4uLicpOwog
ICAgIGlmIChzYXZlZERhdGFUcmFuc2Zlckl0ZW1zLmxlbmd0aCAhPSAwKSB7Ci0gICAgICAgIGZh
aWxlZCA9IHRydWU7CiAgICAgICAgIGNvbnNvbGUubG9nKCdEYXRhVHJhbnNmZXJJdGVtcy5sZW5n
dGggbm9uLXplcm8gb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwogICAgIH0KICAgICBzYXZlZERh
dGFUcmFuc2Zlckl0ZW1zLmFkZCgnU2VjdXJpdHk/JywgJ3RleHQvZm9vJyk7CiAgICAgaWYgKHNh
dmVkRGF0YVRyYW5zZmVySXRlbXMubGVuZ3RoICE9IDApIHsKLSAgICAgICAgZmFpbGVkID0gdHJ1
ZTsKICAgICAgICAgY29uc29sZS5sb2coJ0RhdGFUcmFuc2Zlckl0ZW1zIG11dGF0ZWQgb3V0c2lk
ZSBldmVudCBoYW5kbGVyIScpOwogICAgIH0KLSAgICBpZiAoc2F2ZWREYXRhVHJhbnNmZXJJdGVt
c1swXSkgewotICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgIGlmICh0eXBlb2Ygc2F2ZWREYXRh
VHJhbnNmZXJJdGVtc1swXSA9PSAndW5kZWZpbmVkJykgewogICAgICAgICBjb25zb2xlLmxvZygn
RGF0YVRyYW5zZmVySXRlbSBhY2Nlc3NlZCBvdXRzaWRlIGV2ZW50IGhhbmRsZXIhJyk7CiAgICAg
fQotICAgIGlmIChzYXZlZERhdGFUcmFuc2Zlckl0ZW0ua2luZCAhPSAnJykgewotICAgICAgICBm
YWlsZWQgPSB0cnVlOwotICAgICAgICBjb25zb2xlLmxvZygnRGF0YVRyYW5zZmVySXRlbS5raW5k
IGFjY2Vzc2libGUgb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwotICAgIH0KLSAgICBpZiAoc2F2
ZWREYXRhVHJhbnNmZXJJdGVtLnR5cGUgIT0gJycpIHsKLSAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
LSAgICAgICAgY29uc29sZS5sb2coJ0RhdGFUcmFuc2Zlckl0ZW0udHlwZSBhY2Nlc3NpYmxlIG91
dHNpZGUgZXZlbnQgaGFuZGxlciEnKTsKKyAgICBpZiAodHlwZW9mIHNhdmVkRGF0YVRyYW5zZmVy
SXRlbSA9PSAndW5kZWZpbmVkJykgeworICAgICAgICBjb25zb2xlLmxvZygnRGF0YVRyYW5zZmVy
SXRlbSBhY2Nlc3NlZCBvdXRzaWRlIGV2ZW50IGhhbmRsZXIhJyk7CiAgICAgfQotICAgIHNhdmVk
RGF0YVRyYW5zZmVySXRlbS5nZXRBc1N0cmluZyhmdW5jdGlvbiAoZGF0YSkgewotICAgICAgICBm
YWlsZWQgPSB0cnVlOwotICAgICAgICBjb25zb2xlLmxvZygnZ2V0QXNTdHJpbmcgY2FsbGVkIGJh
Y2sgb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwotICAgIH0pOwotCi0gICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAoZmFpbGVkKQotICAgICAgICAgICAgY29u
c29sZS5sb2coJ0ZBSUxFRCcpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb25zb2xlLmxv
ZygnUEFTU0VEJyk7Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgMCk7CiB9CiAKIHJ1blRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhYWNjZDdiZWU5
YmJkNmI2NjdjMDZlMjVhYzJmNmM3ZDA1OGUzMmUxLi5mY2MxY2EyODNmNjQ5YWVlMDI0N2ZkZGRj
NGZkY2NmMjkyNGQzMWMwIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xMTEsOCArMTExLDYgQEAgQlVHV0s1NTkxMyBE
RUJVRyA6IGpxdWVyeS9tYW5pcHVsYXRpb24uaHRtbCA9IFRJTUVPVVQgUEFTUwogQlVHV0s1NTkx
MyBERUJVRyBTTE9XIDoganF1ZXJ5L29mZnNldC5odG1sID0gUEFTUwogQlVHV0s1NTkxMyBERUJV
RyBTTE9XIDoganF1ZXJ5L3RyYXZlcnNpbmcuaHRtbCA9IFBBU1MKIAotQlVHQ1I3NjU0MyBXSU4g
TUFDIDogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbCA9IFBBU1Mg
VEVYVAotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gU0tJUFBFRCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwZGM5OGY1NTMxOTcyZGJhNGZiZWJkYmQzNTM3YTkzNzFjODRhMTg3Li5iMjhkMzEx
M2IyN2NmMGY5YmJhNjIyMzE4ZGY3NGJmMjA3ZDJmODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTEtMDMtMjEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVt
XSBJbXBsZW1lbnQgZ2x1ZSBiZXR3ZWVuIERhdGFUcmFuc2Zlckl0ZW1zIGFuZCB0aGUgcGFzdGVi
b2FyZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzMwCisKKyAgICAgICAgU3VwcG9ydCByZXRyaWV2aW5nIGNsaXBib2FyZCBkYXRhIGluIGEgcGFz
dGUgdGhyb3VnaCBEYXRhVHJhbnNmZXJJdGVtcy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRDaHJvbWl1bTo6aXRlbXMpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFu
c2Zlckl0ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtQ2hy
b21pdW06OkRhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXJJdGVtQ2hyb21pdW06OmdldEFzU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW06OmFkZFBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmg6CisKIDIwMTEt
MDMtMTggIEphcmtrbyBTYWtraW5lbiAgPGphcmtrby5qLnNha2tpbmVuQGdtYWlsLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNw
cAppbmRleCBlYWRiNjg3NmRmMTM2M2MxNjQ5ODZkODI0MmQxYTAwMDMxM2M4YTkzLi42NzU2MzEz
MzQ4OThlOWRjNmQ1YWRlMDU5NGZiMjkyNWVmODMwZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC0zNDYs
NyArMzQ2LDE4IEBAIGJvb2wgQ2xpcGJvYXJkQ2hyb21pdW06Omhhc0RhdGEoKQogI2lmIEVOQUJM
RShEQVRBX1RSQU5TRkVSX0lURU1TKQogUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtcz4gQ2xp
cGJvYXJkQ2hyb21pdW06Oml0ZW1zKCkKIHsKLSAgICByZXR1cm4gRGF0YVRyYW5zZmVySXRlbXND
aHJvbWl1bTo6Y3JlYXRlKHRoaXMsIG1fZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0+IGl0ZW1z
ID0gRGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICBpZiAoIW1fZGF0YU9iamVj
dCkKKyAgICAgICAgcmV0dXJuIGl0ZW1zOworCisgICAgaWYgKGlzRm9yQ29weUFuZFBhc3RlKCkg
JiYgcG9saWN5KCkgPT0gQ2xpcGJvYXJkUmVhZGFibGUpIHsKKyAgICAgICAgLy8gSXRlcmF0ZSB0
aHJvdWdoIHRoZSB0eXBlcyBhbmQgYWRkIHRoZW0uCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiB0
eXBlcyA9IG1fZGF0YU9iamVjdC0+dHlwZXMoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdHlwZXMuYmVnaW4oKTsgaXQgIT0gdHlwZXMuZW5kKCk7
ICsraXQpCisgICAgICAgICAgICBpdGVtcy0+YWRkUGFzdGVib2FyZEl0ZW0oKml0KTsKKyAgICB9
CisgICAgcmV0dXJuIGl0ZW1zOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uY3Bw
CmluZGV4IDIxYjBiMzM5YTVlOWRiMDY2ZTNiYjUwZmQ2NzZkZDY4YjYwZGY4YWIuLjlkM2M0Y2My
NWNhNmExODA5MzlhZTdiOTdhMTYyNzlhNTc1MjhmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVt
LmNwcApAQCAtMzQsMTAgKzM0LDE5IEBACiAjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMp
CiAKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKKyNpbmNsdWRlICJDbGlwYm9hcmRNaW1lVHlwZXMu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIlN0cmluZ0NhbGxiYWNr
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW0+IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6Y3JlYXRlKFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRnJvbVBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gbWltZVR5
cGVUZXh0UGxhaW4gfHwgdHlwZSA9PSBtaW1lVHlwZVRleHRIVE1MKQorICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShvd25lciwgY29udGV4dCwgRnJv
bVBhc3RlYm9hcmQsIERhdGFUcmFuc2Zlckl0ZW06OmtpbmRTdHJpbmcsIHR5cGUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShvd25lciwgY29udGV4
dCwgRnJvbVBhc3RlYm9hcmQsIERhdGFUcmFuc2Zlckl0ZW06OmtpbmRGaWxlLCB0eXBlKSk7Cit9
CisKIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbUNocm9taXVtPiBEYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW06OmNyZWF0ZShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIGRhdGEsCkBAIC00NiwxMiArNTUsMjIgQEAgUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJ
dGVtQ2hyb21pdW0+IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6Y3JlYXRlKFBhc3NSZWZQdHIK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShvd25lciwg
Y29udGV4dCwgZGF0YSwgdHlwZSkpOwogfQogCitEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OkRh
dGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZyb21QYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgOiBtX293bmVyKG93bmVyKQorICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3NvdXJjZShQYXN0ZWJvYXJkU291cmNlKQor
ICAgICwgbV9raW5kKGtpbmQpCisgICAgLCBtX3R5cGUodHlwZSkKK3sKK30KKwogRGF0YVRyYW5z
ZmVySXRlbUNocm9taXVtOjpEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0oUGFzc1JlZlB0cjxDbGlw
Ym9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICA6IG1fb3duZXIob3duZXIpCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fc291cmNlKEludGVybmFsU291cmNlKQogICAg
ICwgbV9raW5kKGtpbmRTdHJpbmcpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAgICwgbV9kYXRh
KGRhdGEpCisgICAgLCBtX2RhdGEoZGF0YSkKIHsKIH0KIApAQCAtNzQsNyArOTMsMjMgQEAgdm9p
ZCBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5n
Q2FsbGJhY2s+IGNhbGxiYWNrKQogICAgIGlmICgobV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJv
YXJkUmVhZGFibGUgJiYgbV9vd25lci0+cG9saWN5KCkgIT0gQ2xpcGJvYXJkV3JpdGFibGUpCiAg
ICAgICAgIHx8IG1fa2luZCAhPSBraW5kU3RyaW5nKQogICAgICAgICByZXR1cm47Ci0gICAgY2Fs
bGJhY2stPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LCBtX2RhdGEpOworICAgIGlmIChtX3Nv
dXJjZSA9PSBJbnRlcm5hbFNvdXJjZSkgeworICAgICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxs
YmFjayhtX2NvbnRleHQsIG1fZGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8g
VGhpcyBpcyB1Z2x5IGJ1dCB0aGVyZSdzIG5vIHJlYWwgYWx0ZXJuYXRpdmUuCisgICAgaWYgKG1f
dHlwZSA9PSBtaW1lVHlwZVRleHRQbGFpbikgeworICAgICAgICBjYWxsYmFjay0+c2NoZWR1bGVD
YWxsYmFjayhtX2NvbnRleHQsIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0
KFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlcikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChtX3R5cGUgPT0gbWltZVR5cGVUZXh0SFRNTCkgeworICAgICAgICBTdHJp
bmcgaHRtbDsKKyAgICAgICAgS1VSTCBpZ25vcmVkU291cmNlVVJMOworICAgICAgICBQbGF0Zm9y
bUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEhUTUwoUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJkQnVm
ZmVyLCAmaHRtbCwgJmlnbm9yZWRTb3VyY2VVUkwpOworICAgICAgICBjYWxsYmFjay0+c2NoZWR1
bGVDYWxsYmFjayhtX2NvbnRleHQsIGh0bWwpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zl
ckl0ZW1DaHJvbWl1bS5oCmluZGV4IDZjZTdmMDYzZTc2MTVkY2I1Yjg1Zjg1ZGI4ZTQ5OWQzMmE4
ZjhhZTYuLmRhNzg4MTJiZjM0M2JiYTcxZjM0ZjU4MzBlZWRkYjY4NmY3ZWZlMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zl
ckl0ZW1DaHJvbWl1bS5oCkBAIC00NCw2ICs0NCwxMSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogCiBjbGFzcyBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0gOiBwdWJsaWMgRGF0YVRy
YW5zZmVySXRlbSB7CiBwdWJsaWM6CisgICAgZW51bSBGcm9tUGFzdGVib2FyZFR5cGUgeworICAg
ICAgICBGcm9tUGFzdGVib2FyZCwKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0
YVRyYW5zZmVySXRlbUNocm9taXVtPiBjcmVhdGUoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRnJvbVBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHR5cGUpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1
bT4gY3JlYXRlKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKTsKIAogICAgIHZp
cnR1YWwgU3RyaW5nIGtpbmQoKSBjb25zdDsKQEAgLTUyLDEwICs1NywxNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGdldEFzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+KTsK
IAogcHJpdmF0ZToKKyAgICBlbnVtIERhdGFTb3VyY2UgeworICAgICAgICBQYXN0ZWJvYXJkU291
cmNlLAorICAgICAgICBJbnRlcm5hbFNvdXJjZSwKKyAgICB9OworCisgICAgRGF0YVRyYW5zZmVy
SXRlbUNocm9taXVtKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEZyb21QYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBT
dHJpbmcmIHR5cGUpOwogICAgIERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShQYXNzUmVmUHRyPENs
aXBib2FyZD4gb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKICAgICBjb25zdCBSZWZQdHI8Q2xpcGJvYXJkPiBt
X293bmVyOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICBjb25z
dCBEYXRhU291cmNlIG1fc291cmNlOwogICAgIGNvbnN0IFN0cmluZyBtX2tpbmQ7CiAgICAgY29u
c3QgU3RyaW5nIG1fdHlwZTsKICAgICBjb25zdCBTdHJpbmcgbV9kYXRhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVt
c0Nocm9taXVtLmNwcAppbmRleCA2OWM5MTEyY2NjNGMzZWUxMmZmYWI1ZTcwZjNiMWFjYWQzYWFm
Njc0Li4yNjExYTJkMzM4MzA1MTNjN2FkY2Y5YmExYzFlOGE3ZjcyYjVlNmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNm
ZXJJdGVtc0Nocm9taXVtLmNwcApAQCAtMTAxLDYgKzEwMSwxMSBAQCB2b2lkIERhdGFUcmFuc2Zl
ckl0ZW1zQ2hyb21pdW06OmFkZChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgRXhjZQogICAgIG1faXRlbXMuYXBwZW5kKERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6Y3Jl
YXRlKG1fb3duZXIsIG1fY29udGV4dCwgZGF0YSwgdHlwZSkpOwogfQogCit2b2lkIERhdGFUcmFu
c2Zlckl0ZW1zQ2hyb21pdW06OmFkZFBhc3RlYm9hcmRJdGVtKGNvbnN0IFN0cmluZyYgdHlwZSkK
K3sKKyAgICBtX2l0ZW1zLmFwcGVuZChEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmNyZWF0ZSht
X293bmVyLCBtX2NvbnRleHQsIERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6RnJvbVBhc3RlYm9h
cmQsIHR5cGUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmgKaW5kZXggMDlj
YmU5OGVjYTMyOTk5MThiOTdlZGJiODc4NTA1YzYxNGU5ZGRlZC4uNTFjNGZkYmZjNzVhMzcyZDY2
ZjZlMTYxZWU4Y2MwZmM1NTU1NjgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0uaApAQCAtNTcs
OCArNTcsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgQ2xpcGJvYXJkQ2hyb21pdW07CisKICAgICBEYXRhVHJhbnNmZXJJdGVt
c0Nocm9taXVtKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogCisgICAgdmlydHVhbCB2b2lkIGFkZFBhc3RlYm9hcmRJdGVtKGNvbnN0IFN0cmluZyYgdHlw
ZSk7CisKICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBtX293bmVyOwogICAgIC8vIEluZGlyZWN0bHkg
b3duZWQgYnkgb3VyIHBhcmVudC4KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRl
eHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86385</attachid>
            <date>2011-03-21 16:40:13 -0700</date>
            <delta_ts>2011-03-21 16:49:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56330-20110321164011.patch</filename>
            <type>text/plain</type>
            <size>18762</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZjg5YzFkNTJkMjNmMTBkZjIxYWEz
ZTdiNTc2YmNlNWE4ZTIwZDlkLi4yOWNkY2Q2ZjJmYTIzMzFkOWUyNGY3MjllOWU5ZWQyNGJhYWVi
MzhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDMtMjEgIERhbmllbCBDaGVuZyAgPGRj
aGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgZ2x1ZSBiZXR3ZWVuIERhdGFUcmFuc2Zl
ckl0ZW1zIGFuZCB0aGUgcGFzdGVib2FyZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2MzMwCisKKyAgICAgICAgVXBkYXRlIHRoZSBsYXlvdXQgdGVz
dCB0byB0YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIGNs
aXBib2FyZAorICAgICAgICBhcmUgZXhwb3NlZCBpbiBhIHBhc3RlIHZpYSBEYXRhVHJhbnNmZXJJ
dGVtcyBub3cuCisgICAgICAgIEFsc28gZml4IHRoZSBmbGFraW5lc3MgaW4gdGhlIGxheW91dCB0
ZXN0LgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW1zLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDExLTAzLTE4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkLCBzdXBwcmVzcyBlZGl0aW5n
L2RlbGV0aW5nLzUyMDYzMTEtMS5odG1sIGNyYXNoZXMgb24gTWFjIERlYnVnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtcy1leHBlY3RlZC50eHQKaW5kZXggZGEyN2Q1MTYyMTBhYTkxZTNkZDBjNzM2N2VhZDM5ODRi
YTE1ZmJiYi4uYjEwYmFmNDUwNjgyYjM5NjExYTdlMjg4YjRlMmE0YTg3MmZhY2QwMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRy
YW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dApAQCAtMSwxOCArMSwyNCBAQAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE5OiBQb3B1bGF0aW5nIERhdGFUcmFuc2Zlckl0ZW1zLi4uCi1DT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjc6IENhdWdodCBleGNlcHRpb24gIkVycm9yOiBJTlZBTElEX1NUQVRFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMSIgYXMgZXhwZWN0ZWQuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
MzE6IFZlcmlmeWluZyBjb250ZW50cyBvZiBEYXRhVHJhbnNmZXJJdGVtcy4uLgotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDMyOiBpdGVtcy5sZW5ndGg6IDIKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAz
MzogaXRlbXNbMF0ua2luZDogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6IGl0ZW1z
WzBdLnR5cGU6IHRleHQvcGxhaW4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzNTogaXRlbXNbMV0u
a2luZDogc3RyaW5nCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMzY6IGl0ZW1zWzFdLnR5cGU6IHRl
eHQvaHRtbAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQwOiBDaGVja2luZyBpZiBpdGVtcyBwYXN0
IHRoZSBlbmQgb2YgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGluZGV4ZWQ6Ci1DT05TT0xFIE1FU1NB
R0U6IGxpbmUgNDE6IGl0ZW1zWzJdOiB1bmRlZmluZWQKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA1
MTogQ2hlY2tpbmcgdGhhdCBhIHJlYWQtb25seSBEYXRhVHJhbnNmZXJJdGVtcyBjYW5ub3QgYmUg
bXV0YXRlZC4uLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU0OiBpdGVtcy5sZW5ndGg6IDAKLUNP
TlNPTEUgTUVTU0FHRTogbGluZSA1NTogaXRlbXNbMF06IHVuZGVmaW5lZAotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDY4OiBUZXN0aW5nIGlmIERhdGFUcmFuc2Zlckl0ZW1zIGNhbiBiZSBhY2Nlc3Nl
ZCBvdXRzaWRlIGFuIGV2ZW50IGhhbmRsZXIuLi4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMzog
aXRlbXNbMF0gdmFsdWU6IEhlbGxvIFdvcmxkIQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBp
dGVtc1sxXSB2YWx1ZTogPGI+SGVsbG8gV29ybGQhCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgOTk6
IFBBU1NFRAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI0OiBQb3B1bGF0aW5nIERhdGFUcmFuc2Zl
ckl0ZW1zLi4uCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzI6IENhdWdodCBleGNlcHRpb24gIkVy
cm9yOiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMSIgYXMgZXhwZWN0ZWQuCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMzY6IFZlcmlmeWluZyBjb250ZW50cyBvZiBEYXRhVHJhbnNm
ZXJJdGVtcy4uLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3OiBpdGVtcy5sZW5ndGg6IDIKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAzODogaXRlbXNbMF0ua2luZDogc3RyaW5nCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMzk6IGl0ZW1zWzBdLnR5cGU6IHRleHQvcGxhaW4KK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA0MDogaXRlbXNbMV0ua2luZDogc3RyaW5nCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NDE6IGl0ZW1zWzFdLnR5cGU6IHRleHQvaHRtbAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ3OiBD
aGVja2luZyBpZiBpdGVtcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGlu
ZGV4ZWQ6CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDg6IGl0ZW1zWzJdIGlzIHVuZGVmaW5lZDog
dW5kZWZpbmVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjA6IENoZWNraW5nIHRoYXQgYSByZWFk
LW9ubHkgRGF0YVRyYW5zZmVySXRlbXMgY2Fubm90IGJlIG11dGF0ZWQuLi4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA2MzogaXRlbXMubGVuZ3RoOiAyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjQ6
IGl0ZW1zWzBdLmtpbmQ6IHN0cmluZworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY1OiBpdGVtc1sw
XS50eXBlOiB0ZXh0L2h0bWwKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2ODogaXRlbXNbMV0ua2lu
ZDogc3RyaW5nCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjk6IGl0ZW1zWzFdLnR5cGU6IHRleHQv
cGxhaW4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA3MjogaXRlbXNbMl0gaXMgdW5kZWZpbmVkOiB1
bmRlZmluZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4OTogVGVzdGluZyBpZiBEYXRhVHJhbnNm
ZXJJdGVtcyBjYW4gYmUgYWNjZXNzZWQgb3V0c2lkZSBhbiBldmVudCBoYW5kbGVyLi4uCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgOTg6IERhdGFUcmFuc2Zlckl0ZW0gYWNjZXNzZWQgb3V0c2lkZSBl
dmVudCBoYW5kbGVyIQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBjb3B5OiBpdGVtc1swXSB2
YWx1ZTogSGVsbG8gV29ybGQhCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IGNvcHk6IGl0ZW1z
WzFdIHZhbHVlOiA8Yj5IZWxsbyBXb3JsZCEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogcGFz
dGU6IGl0ZW1zWzBdIHZhbHVlOiA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9
ImJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFt
aWx5OiBUaW1lczsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9u
dC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5v
cm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogLXdlYmtpdC1hdXRvOyB0ZXh0LWluZGVudDog
MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAy
OyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nOiAw
cHg7IC13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LWRl
Y29yYXRpb25zLWluLWVmZmVjdDogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRv
OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IGZvbnQtc2l6ZTogbWVkaXVtOyAiPlRo
aXMgZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQgcHJvcGVydGllcyBvZiBE
YXRhVHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC48L3NwYW4+CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMTU6IHBhc3RlOiBpdGVtc1sxXSB2YWx1ZTogVGhpcyBmaWxlIHRlc3Rz
IHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0
ZW1zLiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULgogVGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBm
dW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRl
c3QgcmVxdWlyZXMgRFJULgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLmh0bWwKaW5kZXggMDc0OGU4NWQ5MDY2YjhlMzM3YmQx
ODY0NTU0Zjg2M2UwODA0NWNmZS4uMzgzNDJkYjk0ZTAyMzk2MjE3NzRiYjNmMTlkNjE4NmQ3NDUz
NGZjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtcy5odG1sCkBAIC01LDEyICs1LDE3IEBACiAKIDxzY3JpcHQgc3JjPSIu
Li9lZGl0aW5nLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Cit2YXIgdW5kZWZpbmVkOwordmFyIHBl
bmRpbmdDYWxsYmFja3MgPSAwOwogdmFyIHNhdmVkRGF0YVRyYW5zZmVySXRlbXMgPSBudWxsOwog
dmFyIHNhdmVkRGF0YVRyYW5zZmVySXRlbSA9IG51bGw7CiAKIGZ1bmN0aW9uIGhhbmRsZUV2ZW50
KGRhdGEpCiB7CiAgICAgY29uc29sZS5sb2coZGF0YSk7CisgICAgaWYgKC0tcGVuZGluZ0NhbGxi
YWNrcyA9PSAwKSB7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgfQogfQogCiBmdW5jdGlvbiBjb3B5KGV2KQpAQCAtMzQsMjUgKzM5LDM3IEBA
IGZ1bmN0aW9uIGNvcHkoZXYpCiAgICAgY29uc29sZS5sb2coJ2l0ZW1zWzBdLnR5cGU6ICcgKyBp
dGVtc1swXS50eXBlKTsKICAgICBjb25zb2xlLmxvZygnaXRlbXNbMV0ua2luZDogJyArIGl0ZW1z
WzFdLmtpbmQpOwogICAgIGNvbnNvbGUubG9nKCdpdGVtc1sxXS50eXBlOiAnICsgaXRlbXNbMV0u
dHlwZSk7Ci0gICAgaXRlbXNbMF0uZ2V0QXNTdHJpbmcoZnVuY3Rpb24gKGRhdGEpIHsgaGFuZGxl
RXZlbnQoJ2l0ZW1zWzBdIHZhbHVlOiAnICsgZGF0YSk7IH0pOwotICAgIGl0ZW1zWzFdLmdldEFz
U3RyaW5nKGZ1bmN0aW9uIChkYXRhKSB7IGhhbmRsZUV2ZW50KCdpdGVtc1sxXSB2YWx1ZTogJyAr
IGRhdGEpOyB9KTsKKyAgICBpdGVtc1swXS5nZXRBc1N0cmluZyhmdW5jdGlvbiAoZGF0YSkgeyBo
YW5kbGVFdmVudCgnY29weTogaXRlbXNbMF0gdmFsdWU6ICcgKyBkYXRhKTsgfSk7CisgICAgcGVu
ZGluZ0NhbGxiYWNrcysrOworICAgIGl0ZW1zWzFdLmdldEFzU3RyaW5nKGZ1bmN0aW9uIChkYXRh
KSB7IGhhbmRsZUV2ZW50KCdjb3B5OiBpdGVtc1sxXSB2YWx1ZTogJyArIGRhdGEpOyB9KTsKKyAg
ICBwZW5kaW5nQ2FsbGJhY2tzKys7CiAKICAgICBjb25zb2xlLmxvZygnQ2hlY2tpbmcgaWYgaXRl
bXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBjb2xsZWN0aW9uIGNhbiBiZSBpbmRleGVkOicpOwotICAg
IGNvbnNvbGUubG9nKCdpdGVtc1syXTogJyArIGl0ZW1zWzJdKTsKLQotICAgIHNhdmVkRGF0YVRy
YW5zZmVySXRlbXMgPSBpdGVtczsKLSAgICBzYXZlZERhdGFUcmFuc2Zlckl0ZW0gPSBpdGVtc1sw
XTsKKyAgICBjb25zb2xlLmxvZygnaXRlbXNbMl0gaXMgdW5kZWZpbmVkOiAnICsgdHlwZW9mIGl0
ZW1zWzJdKTsKIH0KIAogZnVuY3Rpb24gcGFzdGUoZXYpCiB7CiAgICAgdmFyIGl0ZW1zID0gZXZl
bnQuY2xpcGJvYXJkRGF0YS5pdGVtczsKKworICAgIC8vIENhY2hlIHJlZmVyZW5jZXMgdG8gbWFr
ZSBzdXJlIHRoZXkgYXJlbid0IGFjY2Vzc2libGUgb3V0c2lkZSB0aGUgZXZlbnQgaGFuZGxlci4K
KyAgICBzYXZlZERhdGFUcmFuc2Zlckl0ZW1zID0gaXRlbXM7CisgICAgc2F2ZWREYXRhVHJhbnNm
ZXJJdGVtID0gaXRlbXNbMF07CisKICAgICB2YXIgb3JpZ2luYWxMZW5ndGggPSBpdGVtcy5sZW5n
dGg7CiAgICAgY29uc29sZS5sb2coJ0NoZWNraW5nIHRoYXQgYSByZWFkLW9ubHkgRGF0YVRyYW5z
ZmVySXRlbXMgY2Fubm90IGJlIG11dGF0ZWQuLi4nKTsKICAgICAvLyBTaG91bGQgYmUgaW1tdXRh
YmxlLgogICAgIGl0ZW1zLmFkZCgnSGVsbG8gV29ybGQhJywgJ3RleHQvcGxhaW4nKTsKICAgICBj
b25zb2xlLmxvZygnaXRlbXMubGVuZ3RoOiAnICsgaXRlbXMubGVuZ3RoKTsKLSAgICBjb25zb2xl
LmxvZygnaXRlbXNbMF06ICcgKyBpdGVtc1swXSk7IC8vIFNob3VsZG4ndCBleGlzdC4KKyAgICBj
b25zb2xlLmxvZygnaXRlbXNbMF0ua2luZDogJyArIGl0ZW1zWzBdLmtpbmQpOworICAgIGNvbnNv
bGUubG9nKCdpdGVtc1swXS50eXBlOiAnICsgaXRlbXNbMF0udHlwZSk7CisgICAgaXRlbXNbMF0u
Z2V0QXNTdHJpbmcoZnVuY3Rpb24gKGRhdGEpIHsgaGFuZGxlRXZlbnQoJ3Bhc3RlOiBpdGVtc1sw
XSB2YWx1ZTogJyArIGRhdGEpOyB9KTsKKyAgICBwZW5kaW5nQ2FsbGJhY2tzKys7CisgICAgY29u
c29sZS5sb2coJ2l0ZW1zWzFdLmtpbmQ6ICcgKyBpdGVtc1sxXS5raW5kKTsKKyAgICBjb25zb2xl
LmxvZygnaXRlbXNbMV0udHlwZTogJyArIGl0ZW1zWzFdLnR5cGUpOworICAgIGl0ZW1zWzFdLmdl
dEFzU3RyaW5nKGZ1bmN0aW9uIChkYXRhKSB7IGhhbmRsZUV2ZW50KCdwYXN0ZTogaXRlbXNbMV0g
dmFsdWU6ICcgKyBkYXRhKTsgfSk7CisgICAgcGVuZGluZ0NhbGxiYWNrcysrOworICAgIGNvbnNv
bGUubG9nKCdpdGVtc1syXSBpcyB1bmRlZmluZWQ6ICcgKyB0eXBlb2YgaXRlbXNbMl0pOwogfQog
CiBmdW5jdGlvbiBydW5UZXN0KCkgewpAQCAtNjEsNDQgKzc4LDI4IEBAIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKIAorICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKDAsIDApOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgfQogICAgIGNvcHlDb21tYW5kKCk7CiAgICAgcGFzdGVDb21tYW5kKCk7CiAKLSAgICB2
YXIgZmFpbGVkID0gZmFsc2U7CiAgICAgY29uc29sZS5sb2coJ1Rlc3RpbmcgaWYgRGF0YVRyYW5z
ZmVySXRlbXMgY2FuIGJlIGFjY2Vzc2VkIG91dHNpZGUgYW4gZXZlbnQgaGFuZGxlci4uLicpOwog
ICAgIGlmIChzYXZlZERhdGFUcmFuc2Zlckl0ZW1zLmxlbmd0aCAhPSAwKSB7Ci0gICAgICAgIGZh
aWxlZCA9IHRydWU7CiAgICAgICAgIGNvbnNvbGUubG9nKCdEYXRhVHJhbnNmZXJJdGVtcy5sZW5n
dGggbm9uLXplcm8gb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwogICAgIH0KICAgICBzYXZlZERh
dGFUcmFuc2Zlckl0ZW1zLmFkZCgnU2VjdXJpdHk/JywgJ3RleHQvZm9vJyk7CiAgICAgaWYgKHNh
dmVkRGF0YVRyYW5zZmVySXRlbXMubGVuZ3RoICE9IDApIHsKLSAgICAgICAgZmFpbGVkID0gdHJ1
ZTsKICAgICAgICAgY29uc29sZS5sb2coJ0RhdGFUcmFuc2Zlckl0ZW1zIG11dGF0ZWQgb3V0c2lk
ZSBldmVudCBoYW5kbGVyIScpOwogICAgIH0KLSAgICBpZiAoc2F2ZWREYXRhVHJhbnNmZXJJdGVt
c1swXSkgewotICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgIGlmICh0eXBlb2Ygc2F2ZWREYXRh
VHJhbnNmZXJJdGVtc1swXSA9PSAndW5kZWZpbmVkJykgewogICAgICAgICBjb25zb2xlLmxvZygn
RGF0YVRyYW5zZmVySXRlbSBhY2Nlc3NlZCBvdXRzaWRlIGV2ZW50IGhhbmRsZXIhJyk7CiAgICAg
fQotICAgIGlmIChzYXZlZERhdGFUcmFuc2Zlckl0ZW0ua2luZCAhPSAnJykgewotICAgICAgICBm
YWlsZWQgPSB0cnVlOwotICAgICAgICBjb25zb2xlLmxvZygnRGF0YVRyYW5zZmVySXRlbS5raW5k
IGFjY2Vzc2libGUgb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwotICAgIH0KLSAgICBpZiAoc2F2
ZWREYXRhVHJhbnNmZXJJdGVtLnR5cGUgIT0gJycpIHsKLSAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
LSAgICAgICAgY29uc29sZS5sb2coJ0RhdGFUcmFuc2Zlckl0ZW0udHlwZSBhY2Nlc3NpYmxlIG91
dHNpZGUgZXZlbnQgaGFuZGxlciEnKTsKKyAgICBpZiAodHlwZW9mIHNhdmVkRGF0YVRyYW5zZmVy
SXRlbSA9PSAndW5kZWZpbmVkJykgeworICAgICAgICBjb25zb2xlLmxvZygnRGF0YVRyYW5zZmVy
SXRlbSBhY2Nlc3NlZCBvdXRzaWRlIGV2ZW50IGhhbmRsZXIhJyk7CiAgICAgfQotICAgIHNhdmVk
RGF0YVRyYW5zZmVySXRlbS5nZXRBc1N0cmluZyhmdW5jdGlvbiAoZGF0YSkgewotICAgICAgICBm
YWlsZWQgPSB0cnVlOwotICAgICAgICBjb25zb2xlLmxvZygnZ2V0QXNTdHJpbmcgY2FsbGVkIGJh
Y2sgb3V0c2lkZSBldmVudCBoYW5kbGVyIScpOwotICAgIH0pOwotCi0gICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICBpZiAoZmFpbGVkKQotICAgICAgICAgICAgY29u
c29sZS5sb2coJ0ZBSUxFRCcpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb25zb2xlLmxv
ZygnUEFTU0VEJyk7Ci0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgMCk7CiB9CiAKIHJ1blRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhYWNjZDdiZWU5
YmJkNmI2NjdjMDZlMjVhYzJmNmM3ZDA1OGUzMmUxLi5mY2MxY2EyODNmNjQ5YWVlMDI0N2ZkZGRj
NGZkY2NmMjkyNGQzMWMwIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xMTEsOCArMTExLDYgQEAgQlVHV0s1NTkxMyBE
RUJVRyA6IGpxdWVyeS9tYW5pcHVsYXRpb24uaHRtbCA9IFRJTUVPVVQgUEFTUwogQlVHV0s1NTkx
MyBERUJVRyBTTE9XIDoganF1ZXJ5L29mZnNldC5odG1sID0gUEFTUwogQlVHV0s1NTkxMyBERUJV
RyBTTE9XIDoganF1ZXJ5L3RyYXZlcnNpbmcuaHRtbCA9IFBBU1MKIAotQlVHQ1I3NjU0MyBXSU4g
TUFDIDogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbCA9IFBBU1Mg
VEVYVAotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gU0tJUFBFRCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwZGM5OGY1NTMxOTcyZGJhNGZiZWJkYmQzNTM3YTkzNzFjODRhMTg3Li5iNDYzNmM1
MTE0NmIzZWI5ZWMwMzMxYjU1NzU5NjBjMjIyYWQ1OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTEtMDMtMjEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVt
XSBJbXBsZW1lbnQgZ2x1ZSBiZXR3ZWVuIERhdGFUcmFuc2Zlckl0ZW1zIGFuZCB0aGUgcGFzdGVi
b2FyZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MzMwCisKKyAgICAgICAgU3VwcG9ydCByZXRyaWV2aW5nIGNsaXBib2FyZCBkYXRhIGluIGEgcGFz
dGUgdGhyb3VnaCBEYXRhVHJhbnNmZXJJdGVtcy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRDaHJvbWl1bTo6aXRlbXMpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFu
c2Zlckl0ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVt
Q2hyb21pdW06OmNyZWF0ZUZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlckl0ZW1DaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFu
c2Zlckl0ZW1DaHJvbWl1bTo6RGF0YVRyYW5zZmVySXRlbUNocm9taXVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6Z2V0QXNTdHJpbmcpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bTo6YWRkUGFzdGVib2FyZEl0ZW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0u
aDoKKwogMjAxMS0wMy0xOCAgSmFya2tvIFNha2tpbmVuICA8amFya2tvLmouc2Fra2luZW5AZ21h
aWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwCmluZGV4IGVhZGI2ODc2ZGYxMzYzYzE2NDk4NmQ4MjQyZDFhMDAwMzEzYzhh
OTMuLjY3NTYzMTMzNDg5OGU5ZGM2ZDVhZGUwNTk0ZmIyOTI1ZWY4MzBkODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAKQEAgLTM0Niw3ICszNDYsMTggQEAgYm9vbCBDbGlwYm9hcmRDaHJvbWl1bTo6aGFzRGF0YSgp
CiAjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCiBQYXNzUmVmUHRyPERhdGFUcmFuc2Zl
ckl0ZW1zPiBDbGlwYm9hcmRDaHJvbWl1bTo6aXRlbXMoKQogewotICAgIHJldHVybiBEYXRhVHJh
bnNmZXJJdGVtc0Nocm9taXVtOjpjcmVhdGUodGhpcywgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBSZWZQdHI8RGF0YVRyYW5zZmVySXRlbXNDaHJv
bWl1bT4gaXRlbXMgPSBEYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtOjpjcmVhdGUodGhpcywgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIGlmICgh
bV9kYXRhT2JqZWN0KQorICAgICAgICByZXR1cm4gaXRlbXM7CisKKyAgICBpZiAoaXNGb3JDb3B5
QW5kUGFzdGUoKSAmJiBwb2xpY3koKSA9PSBDbGlwYm9hcmRSZWFkYWJsZSkgeworICAgICAgICAv
LyBJdGVyYXRlIHRocm91Z2ggdGhlIHR5cGVzIGFuZCBhZGQgdGhlbS4KKyAgICAgICAgSGFzaFNl
dDxTdHJpbmc+IHR5cGVzID0gbV9kYXRhT2JqZWN0LT50eXBlcygpOworICAgICAgICBmb3IgKEhh
c2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAhPSB0
eXBlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIGl0ZW1zLT5hZGRQYXN0ZWJvYXJkSXRlbSgq
aXQpOworICAgIH0KKyAgICByZXR1cm4gaXRlbXM7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1D
aHJvbWl1bS5jcHAKaW5kZXggMjFiMGIzMzlhNWU5ZGIwNjZlM2JiNTBmZDY3NmRkNjhiNjBkZjhh
Yi4uNzg1NzMzNjY1YjZjZjAwMTFmZTZjOGM3YTBjMmEwZTQ3MjljZjI1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJ
dGVtQ2hyb21pdW0uY3BwCkBAIC0zNCwyNCArMzQsMzQgQEAKICNpZiBFTkFCTEUoREFUQV9UUkFO
U0ZFUl9JVEVNUykKIAogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkNsaXBib2Fy
ZE1pbWVUeXBlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAiU3Ry
aW5nQ2FsbGJhY2suaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQYXNzUmVmUHRyPERhdGFU
cmFuc2Zlckl0ZW1DaHJvbWl1bT4gRGF0YVRyYW5zZmVySXRlbUNocm9taXVtOjpjcmVhdGVGcm9t
UGFzdGVib2FyZChQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSBt
aW1lVHlwZVRleHRQbGFpbiB8fCB0eXBlID09IG1pbWVUeXBlVGV4dEhUTUwpCisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRGF0YVRyYW5zZmVySXRlbUNocm9taXVtKG93bmVyLCBjb250ZXh0
LCBQYXN0ZWJvYXJkU291cmNlLCBEYXRhVHJhbnNmZXJJdGVtOjpraW5kU3RyaW5nLCB0eXBlLCAi
IikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YVRyYW5zZmVySXRlbUNocm9taXVtKG93
bmVyLCBjb250ZXh0LCBQYXN0ZWJvYXJkU291cmNlLCBEYXRhVHJhbnNmZXJJdGVtOjpraW5kRmls
ZSwgdHlwZSwgIiIpKTsKK30KKwogUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0+
IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6Y3JlYXRlKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBv
d25lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhVHJhbnNmZXJJdGVtQ2hyb21p
dW0ob3duZXIsIGNvbnRleHQsIGRhdGEsIHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bShvd25lciwgY29udGV4dCwgSW50ZXJuYWxTb3VyY2Us
IERhdGFUcmFuc2Zlckl0ZW06OmtpbmRTdHJpbmcsIHR5cGUsIGRhdGEpKTsKIH0KIAotRGF0YVRy
YW5zZmVySXRlbUNocm9taXVtOjpEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0oUGFzc1JlZlB0cjxD
bGlwYm9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0RhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1
bTo6RGF0YVRyYW5zZmVySXRlbUNocm9taXVtKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRGF0YVNvdXJjZSBzb3VyY2UsIGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAg
ICAgOiBtX293bmVyKG93bmVyKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2tp
bmQoa2luZFN0cmluZykKKyAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAsIG1fa2luZChraW5k
KQogICAgICwgbV90eXBlKHR5cGUpCi0gICAgICAsIG1fZGF0YShkYXRhKQorICAgICwgbV9kYXRh
KGRhdGEpCiB7CiB9CiAKQEAgLTc0LDcgKzg0LDIzIEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUNo
cm9taXVtOjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjaykK
ICAgICBpZiAoKG1fb3duZXItPnBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlICYmIG1fb3du
ZXItPnBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQogICAgICAgICB8fCBtX2tpbmQgIT0g
a2luZFN0cmluZykKICAgICAgICAgcmV0dXJuOwotICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxi
YWNrKG1fY29udGV4dCwgbV9kYXRhKTsKKyAgICBpZiAobV9zb3VyY2UgPT0gSW50ZXJuYWxTb3Vy
Y2UpIHsKKyAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LCBtX2Rh
dGEpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIFRoaXMgaXMgdWdseSBidXQgdGhl
cmUncyBubyByZWFsIGFsdGVybmF0aXZlLgorICAgIGlmIChtX3R5cGUgPT0gbWltZVR5cGVUZXh0
UGxhaW4pIHsKKyAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0LCBQ
bGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZFBsYWluVGV4dChQYXN0ZWJvYXJkUHJpdmF0ZTo6
U3RhbmRhcmRCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV90eXBl
ID09IG1pbWVUeXBlVGV4dEhUTUwpIHsKKyAgICAgICAgU3RyaW5nIGh0bWw7CisgICAgICAgIEtV
UkwgaWdub3JlZFNvdXJjZVVSTDsKKyAgICAgICAgUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJl
YWRIVE1MKFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlciwgJmh0bWwsICZpZ25vcmVk
U291cmNlVVJMKTsKKyAgICAgICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2sobV9jb250ZXh0
LCBodG1sKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbUNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaAppbmRl
eCA2Y2U3ZjA2M2U3NjE1ZGNiNWI4NWY4NWRiOGU0OTlkMzJhOGY4YWU2Li43N2Y3NGYyZWNmMTM2
MzRjYzY2ZTMxY2NlYTZkZDE2MDE5MDE2NjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0uaApAQCAt
NDQsNiArNDQsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBEYXRh
VHJhbnNmZXJJdGVtQ2hyb21pdW0gOiBwdWJsaWMgRGF0YVRyYW5zZmVySXRlbSB7CiBwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbUNocm9taXVtPiBjcmVhdGVG
cm9tUGFzdGVib2FyZChQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERh
dGFUcmFuc2Zlckl0ZW1DaHJvbWl1bT4gY3JlYXRlKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25l
ciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3Ry
aW5nJiB0eXBlKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGtpbmQoKSBjb25zdDsKQEAgLTUyLDEw
ICs1MywxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEFzU3RyaW5nKFBhc3NSZWZQ
dHI8U3RyaW5nQ2FsbGJhY2s+KTsKIAogcHJpdmF0ZToKLSAgICBEYXRhVHJhbnNmZXJJdGVtQ2hy
b21pdW0oUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIGVudW0gRGF0
YVNvdXJjZSB7CisgICAgICAgIFBhc3RlYm9hcmRTb3VyY2UsCisgICAgICAgIEludGVybmFsU291
cmNlLAorICAgIH07CisKKyAgICBEYXRhVHJhbnNmZXJJdGVtQ2hyb21pdW0oUGFzc1JlZlB0cjxD
bGlwYm9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YVNvdXJjZSwgY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7
CiAKICAgICBjb25zdCBSZWZQdHI8Q2xpcGJvYXJkPiBtX293bmVyOwogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICBjb25zdCBEYXRhU291cmNlIG1fc291cmNlOwog
ICAgIGNvbnN0IFN0cmluZyBtX2tpbmQ7CiAgICAgY29uc3QgU3RyaW5nIG1fdHlwZTsKICAgICBj
b25zdCBTdHJpbmcgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmNwcAppbmRleCA2OWM5
MTEyY2NjNGMzZWUxMmZmYWI1ZTcwZjNiMWFjYWQzYWFmNjc0Li40MThiOGI1YjkxODdhM2UxYTE1
MTZiOWNhODI5M2VlZDcyM2VjZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmNwcApAQCAt
MTAxLDYgKzEwMSwxMSBAQCB2b2lkIERhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW06OmFkZChjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZQogICAgIG1faXRlbXMuYXBw
ZW5kKERhdGFUcmFuc2Zlckl0ZW1DaHJvbWl1bTo6Y3JlYXRlKG1fb3duZXIsIG1fY29udGV4dCwg
ZGF0YSwgdHlwZSkpOwogfQogCit2b2lkIERhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW06OmFkZFBh
c3RlYm9hcmRJdGVtKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBtX2l0ZW1zLmFwcGVuZChE
YXRhVHJhbnNmZXJJdGVtQ2hyb21pdW06OmNyZWF0ZUZyb21QYXN0ZWJvYXJkKG1fb3duZXIsIG1f
Y29udGV4dCwgdHlwZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoREFUQV9UUkFOU0ZFUl9JVEVNUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RhdGFUcmFuc2Zlckl0ZW1zQ2hyb21pdW0uaAppbmRl
eCAwOWNiZTk4ZWNhMzI5OTkxOGI5N2VkYmI4Nzg1MDVjNjE0ZTlkZGVkLi41MWM0ZmRiZmM3NWEz
NzJkNjZmNmUxNjFlZThjYzBmYzU1NTU2ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9EYXRhVHJhbnNmZXJJdGVtc0Nocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRGF0YVRyYW5zZmVySXRlbXNDaHJvbWl1bS5oCkBA
IC01Nyw4ICs1NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBDbGlwYm9hcmRDaHJvbWl1bTsKKwogICAgIERhdGFUcmFuc2Zl
ckl0ZW1zQ2hyb21pdW0oUGFzc1JlZlB0cjxDbGlwYm9hcmQ+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGFzdGVib2FyZEl0ZW0oY29uc3QgU3RyaW5n
JiB0eXBlKTsKKwogICAgIFJlZlB0cjxDbGlwYm9hcmQ+IG1fb3duZXI7CiAgICAgLy8gSW5kaXJl
Y3RseSBvd25lZCBieSBvdXIgcGFyZW50LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1f
Y29udGV4dDsK
</data>
<flag name="review"
          id="78637"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>