<?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>86923</bug_id>
          
          <creation_ts>2012-05-18 16:38:48 -0700</creation_ts>
          <short_desc>[Chromium-Android] Run DumpRenderTree as an apk (python part)</short_desc>
          <delta_ts>2012-05-22 19:00:41 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>86862</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>jnd</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zhenghao</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>628249</commentid>
    <comment_count>0</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-18 16:38:48 -0700</bug_when>
    <thetext>Python part of patch for bug 86862.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628264</commentid>
    <comment_count>1</comment_count>
      <attachid>142822</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-18 16:54:02 -0700</bug_when>
    <thetext>Created attachment 142822
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628742</commentid>
    <comment_count>2</comment_count>
      <attachid>142822</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-20 20:53:39 -0700</bug_when>
    <thetext>Comment on attachment 142822
patch

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

Ok.  This is mostly a rubber stamp, but this looks plausible.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:481
&gt; +            if seconds == DRT_START_STOP_TIMEOUT_SECS:

Should we use &gt;= instead of == ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630633</commentid>
    <comment_count>3</comment_count>
      <attachid>142822</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-22 12:06:53 -0700</bug_when>
    <thetext>Comment on attachment 142822
patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:481
&gt;&gt; +            if seconds == DRT_START_STOP_TIMEOUT_SECS:
&gt; 
&gt; Should we use &gt;= instead of == ?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630637</commentid>
    <comment_count>4</comment_count>
      <attachid>143347</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-22 12:08:14 -0700</bug_when>
    <thetext>Created attachment 143347
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630661</commentid>
    <comment_count>5</comment_count>
      <attachid>143347</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-22 12:24:11 -0700</bug_when>
    <thetext>Comment on attachment 143347
patch for landing

If you&apos;d like me to commit-queue+ this patch, you can mark it commit-queue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630693</commentid>
    <comment_count>6</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-22 13:21:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 143347 [details])
&gt; If you&apos;d like me to commit-queue+ this patch, you can mark it commit-queue?

Thanks. I didn&apos;t mark it commit-queue? because I&apos;m preparing the patch for landing of the related bug 86922. I&apos;ll commit them when both are ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630890</commentid>
    <comment_count>7</comment_count>
      <attachid>143347</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-22 16:20:32 -0700</bug_when>
    <thetext>Comment on attachment 143347
patch for landing

commit-queue+ after commit-queue+ of bug 86922.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630984</commentid>
    <comment_count>8</comment_count>
      <attachid>143347</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 17:40:20 -0700</bug_when>
    <thetext>Comment on attachment 143347
patch for landing

Clearing flags on attachment: 143347

Committed r118089: &lt;http://trac.webkit.org/changeset/118089&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630985</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 17:40:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631017</commentid>
    <comment_count>10</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-22 18:11:02 -0700</bug_when>
    <thetext>This appears to have broken Python tests: http://build.webkit.org/builders/EFL%20Linux%20Debug/builds/2234/steps/webkitpy-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631041</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-22 18:29:41 -0700</bug_when>
    <thetext>@wangxianzhu: Please run test-webkitpy before landing changes to webkitpy.

Do you think you&apos;ll be able to fix this soon, or should we roll it out and try relanding it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631070</commentid>
    <comment_count>12</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-05-22 19:00:41 -0700</bug_when>
    <thetext>I&apos;ll disable chromium_android_unittest.py first, then update the tests. Sorry I didn&apos;t see the tests in downstream.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142822</attachid>
            <date>2012-05-18 16:54:02 -0700</date>
            <delta_ts>2012-05-22 12:08:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>86923</filename>
            <type>text/plain</type>
            <size>28358</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExNzY1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQxIEBACisyMDEyLTA1LTE4ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFJ1biBEdW1wUmVuZGVyVHJlZSBh
cyBhbiBhcGsgKHB5dGhvbiBwYXJ0KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODY5MjMKKworICAgICAgICBjaHJvbWl1bV9hbmRyb2lkLnB5IGlzIG1v
ZGlmaWVkIHRvIHN1cHBvcnQgcnVubmluZyBEdW1wUmVuZGVyVHJlZSBhcworICAgICAgICBhbiBh
cGssIHNvIHRoYXQgd2UgY2FuIHJ1biB0aGUgdGVzdHMgKGUuZy4gdmlkZW8pIHJlcXVpcmluZyBm
ZWF0dXJlcworICAgICAgICBpbXBsZW1lbnRlZCBpbiBKYXZhIG9uIEFuZHJvaWQuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJv
bWl1bUFuZHJvaWRQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQu
ZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5j
aGVja193ZGlmZik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LmNoZWNrX2J1aWxkKToK
KyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuc3RhcnRfaGVscGVyKToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZFBvcnQuc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAoQ2hyb21p
dW1BbmRyb2lkUG9ydCk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9wYXRoX3RvX2Ry
aXZlcik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9nZXRfY3Jhc2hfbG9nKToKKyAg
ICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3B1c2hfZXhlY3V0YWJsZSk6CisgICAgICAgIChD
aHJvbWl1bUFuZHJvaWRQb3J0Ll9ydW5fYWRiX2NvbW1hbmQpOgorICAgICAgICAoQ2hyb21pdW1B
bmRyb2lkUG9ydC5fZ2V0X2xhc3Rfc3RhY2t0cmFjZSk6CisgICAgICAgIChDaHJvbWl1bUFuZHJv
aWRQb3J0Ll9nZXRfbG9nY2F0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlcik6Cisg
ICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX19pbml0X18pOgorICAgICAgICAoQ2hyb21p
dW1BbmRyb2lkRHJpdmVyLl9jb21tYW5kX3dyYXBwZXIpOgorICAgICAgICAoQ2hyb21pdW1BbmRy
b2lkRHJpdmVyLmNtZF9saW5lKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fZmls
ZV9leGlzdHNfb25fZGV2aWNlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fdGlt
ZW91dF9raWxsZXIpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zdGFydCk6Cisg
ICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAoQ2hyb21p
dW1BbmRyb2lkRHJpdmVyLnN0b3ApOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl93
cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJp
dmVyLl9vdXRwdXRfaW1hZ2UpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9nZXRf
c3RkZXJyKToKKwogMjAxMi0wNS0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBzY20uYWRkKCkgZG9lc24ndCB3b3JrIHByb3Blcmx5IHdpdGggc3ZuIDEu
NwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9hbmRyb2lkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQkocmV2aXNpb24gMTE3NjM5KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTQgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1w
b3J0IGxvZ2dpbmcKK2ltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc2lnbmFsCitpbXBvcnQg
c2hsZXgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKLWZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNocm9taXVtCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5CiAKQEAgLTQ1LDEzICs0OCwxNyBAQCBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAjIFRoaXMgcGF0aCBpcyBkZWZpbmVkIGluIGJhc2Uv
YmFzZV9wYXRoc19hbmRyb2lkLmNjIGFuZAogIyB3ZWJraXQvc3VwcG9ydC9wbGF0Zm9ybV9zdXBw
b3J0X2FuZHJvaWQuY2MuCiBERVZJQ0VfU09VUkNFX1JPT1RfRElSID0gJy9kYXRhL2xvY2FsL3Rt
cC8nCitDT01NQU5EX0xJTkVfRklMRSA9IERFVklDRV9TT1VSQ0VfUk9PVF9ESVIgKyAnY2hyb21l
LW5hdGl2ZS10ZXN0cy1jb21tYW5kLWxpbmUnCiAKKyMgVGhlIGRpcmVjdG9yeSB0byBwdXQgdG9v
bHMgYW5kIHJlc291cmNlcyBvZiBEdW1wUmVuZGVyVHJlZS4KIERFVklDRV9EUlRfRElSID0gJy9k
YXRhL2RydC8nCi1ERVZJQ0VfRFJUX1BBVEggPSBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVy
VHJlZScKLURFVklDRV9EUlRfU1RERVJSID0gREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRy
ZWUuc3RkZXJyJwogREVWSUNFX0ZPUldBUkRFUl9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnZm9y
d2FyZGVyJwogREVWSUNFX0RSVF9TVEFNUF9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJl
bmRlclRyZWUuc3RhbXAnCiAKK0RSVF9BUFBfUEFDS0FHRSA9ICdvcmcuY2hyb21pdW0ubmF0aXZl
X3Rlc3QnCitEUlRfQUNUSVZJVFlfRlVMTF9OQU1FID0gRFJUX0FQUF9QQUNLQUdFICsgJy8uQ2hy
b21lTmF0aXZlVGVzdEFjdGl2aXR5JworRFJUX0FQUF9GSUxFX0RJUiA9ICcvZGF0YS91c2VyLzAv
JyArIERSVF9BUFBfUEFDS0FHRSArICcvZmlsZXMvJworCiAjIFRoaXMgb25seSB3b3JrcyBmb3Ig
c2luZ2xlIGNvcmUgZGV2aWNlcyBzbyBmYXIuCiAjIEZJWE1FOiBGaW5kIGEgc29sdXRpb24gZm9y
IG11bHRpLWNvcmUgZGV2aWNlcy4KIFNDQUxJTkdfR09WRVJOT1IgPSAiL3N5cy9kZXZpY2VzL3N5
c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3NjYWxpbmdfZ292ZXJub3IiCkBAIC02OSw2ICs3Niw5IEBA
IEZPUldBUkRfUE9SVFMgPSAnODAwMCA4MDgwIDg0NDMgODg4MCA5MzIKIAogTVNfVFJVRVRZUEVf
Rk9OVFNfRElSID0gJy91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250cy8nCiAK
KyMgVGltZW91dCBpbiBzZWNvbmRzIHRvIHdhaXQgZm9yIHN0YXJ0L3N0b3Agb2YgRHVtcFJlbmRl
clRyZWUuCitEUlRfU1RBUlRfU1RPUF9USU1FT1VUX1NFQ1MgPSAxMAorCiAjIExpc3Qgb2YgZm9u
dHMgdGhhdCBsYXlvdXQgdGVzdHMgZXhwZWN0LCBjb3BpZWQgZnJvbSBEdW1wUmVuZGVyVHJlZS9n
dGsvVGVzdFNoZWxsR3RrLmNwcC4KIEhPU1RfRk9OVF9GSUxFUyA9IFsKICAgICBbTVNfVFJVRVRZ
UEVfRk9OVFNfRElSLCAnQXJpYWwudHRmJ10sCkBAIC0xNDksNiArMTU5LDcgQEAgY2xhc3MgQ2hy
b21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbQogICAgICAgICBzZWxmLl92ZXJzaW9uID0g
J2ljZWNyZWFtc2FuZHdpY2gnCiAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9yID0gTm9u
ZQogICAgICAgICBzZWxmLl9hbmRyb2lkX2Jhc2VfZGlyID0gTm9uZQorICAgICAgICBzZWxmLl9y
ZWFkX2ZpZm9fcHJvYyA9IE5vbmUKIAogICAgICAgICBzZWxmLl9ob3N0X3BvcnQgPSBmYWN0b3J5
LlBvcnRGYWN0b3J5KGhvc3QpLmdldCgnY2hyb21pdW0nLCAqKmt3YXJncykKIApAQCAtMTY1LDE1
ICsxNzYsMjQgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbQogICAg
ICAgICByZXR1cm4gMTAgKiAxMDAwCiAKICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMo
c2VsZik6Ci0gICAgICAgICMgQ3VycmVudGx5IHdlIG9ubHkgdXNlIG9uZSBwcm9jZXNzLCBidXQg
aXQgbWlnaHQgYmUgaGVscGZ1bCB0byB1c2UKLSAgICAgICAgIyBtb3JlIHRoYXQgb25lIHByb2Nl
c3MgaW4gdGhlIGZ1dHVyZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgorICAgICAgICAjIEJlY2F1
c2Ugb2YgdGhlIG5hdHVyZSBvZiBhcGssIHdlIGRvbid0IHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBw
cm9jZXNzLgogICAgICAgICByZXR1cm4gMQogCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRo
KHNlbGYpOgogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBz
ZWxmLkZBTExCQUNLX1BBVEhTKQogCisgICAgZGVmIGNoZWNrX3dkaWZmKHNlbGYsIGxvZ2dpbmc9
VHJ1ZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuY2hlY2tfd2RpZmYobG9nZ2lu
ZykKKwogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2hvc3RfcG9ydC5jaGVja19idWlsZChuZWVkc19odHRwKQorICAgICAgICByZXN1
bHQgPSBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCkK
KyAgICAgICAgcmVzdWx0ID0gc2VsZi5jaGVja193ZGlmZigpIGFuZCByZXN1bHQKKyAgICAgICAg
aWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZvciBjb21wbGV0ZSBBbmRy
b2lkIGJ1aWxkIHJlcXVpcmVtZW50cywgcGxlYXNlIHNlZTonKQorICAgICAgICAgICAgX2xvZy5l
cnJvcignJykKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgICBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vd2lraS9BbmRyb2lkQnVpbGRJbnN0cnVjdGlvbnMnKQorCisgICAgICAg
IHJldHVybiByZXN1bHQKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRw
KToKICAgICAgICAgZm9yIChmb250X2RpciwgZm9udF9maWxlKSBpbiBIT1NUX0ZPTlRfRklMRVM6
CkBAIC0yMDIsMTEgKzIyMiwxNCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVt
LkNocm9tCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBzdGFydF9oZWxwZXIoc2VsZik6CisgICAg
ICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3Jvb3QnXSkKICAgICAgICAgc2VsZi5fc2V0dXBf
cGVyZm9ybWFuY2UoKQogICAgICAgICAjIFJlcXVpcmVkIGJ5IHdlYmtpdF9zdXBwb3J0OjpHZXRX
ZWJLaXRSb290RGlyRmlsZVBhdGgoKS4KICAgICAgICAgIyBPdGhlciBkaXJlY3RvcmllcyB3aWxs
IGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBieSBhZGIgcHVzaC4KLSAgICAgICAgc2VsZi5fcnVu
X2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnbWtkaXInLCAnLXAnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERFVklDRV9TT1VSQ0VfUk9PVF9ESVIgKyAnY2hyb21lJ10pCisgICAgICAg
IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ21rZGlyJywgJy1wJywgREVWSUNFX1NP
VVJDRV9ST09UX0RJUiArICdjaHJvbWUnXSkKKyAgICAgICAgIyBBbGxvdyB0aGUgRHVtcFJlbmRl
clRyZWUgYXBwIHRvIGZ1bGx5IGFjY2VzcyB0aGUgZGlyZWN0b3J5LgorICAgICAgICAjIFRoZSBu
YXRpdmUgY29kZSBuZWVkcyB0aGUgcGVybWlzc2lvbiB0byB3cml0ZSB0ZW1wb3JhcnkgZmlsZXMg
aGVyZS4KKyAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnY2htb2QnLCAn
Nzc3JywgREVWSUNFX1NPVVJDRV9ST09UX0RJUl0pCiAKICAgICAgICAgc2VsZi5fcHVzaF9leGVj
dXRhYmxlKCkKICAgICAgICAgc2VsZi5fcHVzaF9mb250cygpCkBAIC0yMjMsMTMgKzI0NiwxNSBA
QCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9tCiAgICAgICAgICMgdXNl
ZnVsIGZvciBkZWJ1Z2dpbmcgYW5kIGRvIG5vIGhhcm0gdG8gc3Vic2VxdWVudCB0ZXN0cy4KICAg
ICAgICAgc2VsZi5fdGVhcmRvd25fcGVyZm9ybWFuY2UoKQogCi0gICAgZGVmIHNraXBwZWRfdGVz
dHMoc2VsZiwgdGVzdF9saXN0KToKLSAgICAgICAgcmV0dXJuIGJhc2UuUG9ydC5fcmVhbF90ZXN0
cyhzZWxmLCBbCisgICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYsIHRlc3RfbGlzdCk6
CisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3Rlc3RzKFsKICAgICAgICAgICAgICMgQ2FudmFz
IHRlc3RzIGFyZSBydW4gYXMgdmlydHVhbCBncHUgdGVzdHMuCiAgICAgICAgICAgICAnZmFzdC9j
YW52YXMnLAogICAgICAgICAgICAgJ2NhbnZhcy9waGlsaXAnLAogICAgICAgICBdKQogCisgICAg
IyBPdmVycmlkZGVuIHByaXZhdGUgZnVuY3Rpb25zLgorCiAgICAgZGVmIF9idWlsZF9wYXRoKHNl
bGYsICpjb21wcyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX2J1aWxkX3BhdGgo
KmNvbXBzKQogCkBAIC0yNDAsMTAgKzI2NSw5IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQo
Y2hyb21pdW0uQ2hyb20KICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fcGF0aF90b19h
cGFjaGVfY29uZmlnX2ZpbGUoKQogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25m
aWd1cmF0aW9uPU5vbmUpOgotICAgICAgICAjIFJldHVybnMgdGhlIGhvc3QgcGF0aCB0byBkcml2
ZXIgd2hpY2ggd2lsbCBiZSBwdXNoZWQgdG8gdGhlIGRldmljZS4KICAgICAgICAgaWYgbm90IGNv
bmZpZ3VyYXRpb246CiAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJykKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmln
dXJhdGlvbiwgJ0R1bXBSZW5kZXJUcmVlJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3Bh
dGgoY29uZmlndXJhdGlvbiwgJ0R1bXBSZW5kZXJUcmVlX2Fway9DaHJvbWVOYXRpdmVUZXN0cy1k
ZWJ1Zy5hcGsnKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdm
b3J3YXJkZXInKQpAQCAtMjY5LDIzICsyOTMsMzUgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9y
dChjaHJvbWl1bS5DaHJvbQogICAgIGRlZiBfZHJpdmVyX2NsYXNzKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gQ2hyb21pdW1BbmRyb2lkRHJpdmVyCiAKKyAgICBkZWYgX2dldF9jcmFzaF9sb2coc2Vs
ZiwgbmFtZSwgcGlkLCBzdGRvdXQsIHN0ZGVyciwgbmV3ZXJfdGhhbik6CisgICAgICAgIGlmIG5v
dCBzdGRvdXQ6CisgICAgICAgICAgICBzdGRvdXQgPSAnJworICAgICAgICBzdGRvdXQgKz0gJyoq
KioqKioqKiBMb2djYXQ6XG4nICsgc2VsZi5fZ2V0X2xvZ2NhdCgpCisgICAgICAgIGlmIG5vdCBz
dGRlcnI6CisgICAgICAgICAgICBzdGRlcnIgPSAnJworICAgICAgICBzdGRlcnIgKz0gJyoqKioq
KioqKiBUb21ic3RvbmUgZmlsZTpcbicgKyBzZWxmLl9nZXRfbGFzdF9zdGFja3RyYWNlKCkKKyAg
ICAgICAgcmV0dXJuIGNocm9taXVtLkNocm9taXVtUG9ydC5fZ2V0X2NyYXNoX2xvZyhzZWxmLCBu
YW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdlcl90aGFuKQorCisgICAgIyBMb2NhbCBwcml2
YXRlIGZ1bmN0aW9ucy4KKwogICAgIGRlZiBfcHVzaF9leGVjdXRhYmxlKHNlbGYpOgogICAgICAg
ICBkcnRfaG9zdF9wYXRoID0gc2VsZi5fcGF0aF90b19kcml2ZXIoKQogICAgICAgICBmb3J3YXJk
ZXJfaG9zdF9wYXRoID0gc2VsZi5fcGF0aF90b19oZWxwZXIoKQotICAgICAgICBkcnRfamFyX2hv
c3RfcGF0aCA9IGRydF9ob3N0X3BhdGggKyAnLmphcicKICAgICAgICAgaG9zdF9zdGFtcCA9IGlu
dChmbG9hdChtYXgob3Muc3RhdChkcnRfaG9zdF9wYXRoKS5zdF9tdGltZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9t
dGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChkcnRfamFy
X2hvc3RfcGF0aCkuc3RfbXRpbWUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3Muc3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9tdGltZSkpKQogICAgICAgICBkZXZp
Y2Vfc3RhbXAgPSBpbnQoZmxvYXQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsKICAgICAgICAgICAg
ICdzaGVsbCcsICdjYXQgJXMgMj4vZGV2L251bGwgfHwgZWNobyAwJyAlIERFVklDRV9EUlRfU1RB
TVBfUEFUSF0pKSkKICAgICAgICAgaWYgZGV2aWNlX3N0YW1wIDwgaG9zdF9zdGFtcDoKICAgICAg
ICAgICAgIF9sb2cuZGVidWcoJ1B1c2hpbmcgZXhlY3V0YWJsZScpCi0gICAgICAgICAgICBzZWxm
Ll9raWxsX2RldmljZV9wcm9jZXNzKERFVklDRV9GT1JXQVJERVJfUEFUSCkKICAgICAgICAgICAg
IHNlbGYuX3B1c2hfdG9fZGV2aWNlKGZvcndhcmRlcl9ob3N0X3BhdGgsIERFVklDRV9GT1JXQVJE
RVJfUEFUSCkKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGRydF9ob3N0X3BhdGgs
IERFVklDRV9EUlRfUEFUSCkKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGRydF9o
b3N0X3BhdGggKyAnLnBhaycsIERFVklDRV9EUlRfUEFUSCArICcucGFrJykKLSAgICAgICAgICAg
IHNlbGYuX3B1c2hfdG9fZGV2aWNlKGRydF9ob3N0X3BhdGggKyAnX3Jlc291cmNlcycsIERFVklD
RV9EUlRfUEFUSCArICdfcmVzb3VyY2VzJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2
aWNlKGRydF9qYXJfaG9zdF9wYXRoLCBERVZJQ0VfRFJUX1BBVEggKyAnLmphcicpCisgICAgICAg
ICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd1bmluc3RhbGwnLCBEUlRfQVBQX1BBQ0tBR0Vd
KQorICAgICAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydp
bnN0YWxsJywgZHJ0X2hvc3RfcGF0aF0pCisgICAgICAgICAgICBpZiBpbnN0YWxsX3Jlc3VsdC5m
aW5kKCdTdWNjZXNzJykgPT0gLTE6CisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJy
b3IoJ0ZhaWxlZCB0byBpbnN0YWxsICVzIG9udG8gZGV2aWNlOiAlcycgJSAoZHJ0X2hvc3RfcGF0
aCwgaW5zdGFsbF9yZXN1bHQpKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2Vs
Zi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ0R1bXBSZW5k
ZXJUcmVlLnBhaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNFX0RS
VF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9f
ZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyks
ICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpCiAgICAg
ICAgICAgICAjIFZlcnNpb24gY29udHJvbCBvZiB0ZXN0IHJlc291cmNlcyBpcyBkZXBlbmRlbnQg
b24gZXhlY3V0YWJsZXMsCiAgICAgICAgICAgICAjIGJlY2F1c2Ugd2Ugd2lsbCBhbHdheXMgcmVi
dWlsZCBleGVjdXRhYmxlcyB3aGVuIHJlc291cmNlcyBhcmUKICAgICAgICAgICAgICMgdXBkYXRl
ZC4KQEAgLTMyOSwxMSArMzY1LDE0IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21p
dW0uQ2hyb20KICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnZWNobyAl
ZCA+ICVzVkVSU0lPTicgJSAodmVyc2lvbiwgZGlyKV0pCiAKICAgICBkZWYgX3J1bl9hZGJfY29t
bWFuZChzZWxmLCBjbWQsIGlnbm9yZV9lcnJvcj1GYWxzZSk6CisgICAgICAgIF9sb2cuZGVidWco
J1J1biBhZGIgY29tbWFuZDogJyArIHN0cihjbWQpKQogICAgICAgICBpZiBpZ25vcmVfZXJyb3I6
CiAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gc2VsZi5fZXhlY3V0aXZlLmlnbm9yZV9lcnJv
cgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IE5vbmUKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChzZWxmLl9hZGJfY29tbWFuZCAr
IGNtZCwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyKQorICAgICAgICByZXN1bHQgPSBzZWxm
Ll9leGVjdXRpdmUucnVuX2NvbW1hbmQoc2VsZi5fYWRiX2NvbW1hbmQgKyBjbWQsIGVycm9yX2hh
bmRsZXI9ZXJyb3JfaGFuZGxlcikKKyAgICAgICAgX2xvZy5kZWJ1ZygnUnVuIGFkYiByZXN1bHQ6
XG4nICsgcmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgX2NvcHlfZGV2
aWNlX2ZpbGUoc2VsZiwgZnJvbV9maWxlLCB0b19maWxlLCBpZ25vcmVfZXJyb3I9RmFsc2UpOgog
ICAgICAgICAjICdjcCcgaXMgdW5hdmFpbGFibGUgb24gQW5kcm9pZCwgc28gdXNlICdkZCcgaW5z
dGVhZC4KQEAgLTM0NSwxNyArMzg0LDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJv
bWl1bS5DaHJvbQogICAgIGRlZiBfcHVsbF9mcm9tX2RldmljZShzZWxmLCBkZXZpY2VfcGF0aCwg
aG9zdF9wYXRoLCBpZ25vcmVfZXJyb3I9RmFsc2UpOgogICAgICAgICByZXR1cm4gc2VsZi5fcnVu
X2FkYl9jb21tYW5kKFsncHVsbCcsIGRldmljZV9wYXRoLCBob3N0X3BhdGhdLCBpZ25vcmVfZXJy
b3IpCiAKLSAgICBkZWYgX2tpbGxfZGV2aWNlX3Byb2Nlc3Moc2VsZiwgbmFtZSk6Ci0gICAgICAg
IHBzX3Jlc3VsdCA9IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ3BzJ10pLnNwbGl0
KCdcbicpCi0gICAgICAgIGZvciBsaW5lIGluIHBzX3Jlc3VsdDoKLSAgICAgICAgICAgIGlmIGxp
bmUuZmluZChuYW1lKSA+IDA6Ci0gICAgICAgICAgICAgICAgcGlkID0gbGluZS5zcGxpdCgpWzFd
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAna2lsbCcs
IHBpZF0pCi0KLSAgICBkZWYgZ2V0X3N0ZGVycihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2NhdCcsIERFVklDRV9EUlRfU1RERVJSXSwgaWdu
b3JlX2Vycm9yPVRydWUpCi0KLSAgICBkZWYgZ2V0X2xhc3Rfc3RhY2t0cmFjZShzZWxmKToKKyAg
ICBkZWYgX2dldF9sYXN0X3N0YWNrdHJhY2Uoc2VsZik6CiAgICAgICAgIHRvbWJzdG9uZXMgPSBz
ZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdscycsICctbicsICcvZGF0YS90b21ic3Rv
bmVzJ10pCiAgICAgICAgIGlmIG5vdCB0b21ic3RvbmVzIG9yIHRvbWJzdG9uZXMuc3RhcnRzd2l0
aCgnL2RhdGEvdG9tYnN0b25lczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScpOgogICAgICAg
ICAgICAgX2xvZy5lcnJvcignRFJUIGNyYXNoZWQsIGJ1dCBubyB0b21ic3RvbmUgZm91bmQhJykK
QEAgLTM3Niw3ICs0MDUsMTEgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5D
aHJvbQogICAgICAgICAjIFVzZSBBbmRyb2lkIHRvb2wgdmVuZG9yL2dvb2dsZS90b29scy9zdGFj
ayB0byBjb252ZXJ0IHRoZSByYXcKICAgICAgICAgIyBzdGFjayB0cmFjZSBpbnRvIGEgaHVtYW4g
cmVhZGFibGUgZm9ybWF0LCBpZiBuZWVkZWQuCiAgICAgICAgICMgSXQgdGFrZXMgYSBsb25nIHRp
bWUsIHNvIGRvbid0IGRvIGl0IGhlcmUuCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW5fYWRiX2Nv
bW1hbmQoWydzaGVsbCcsICdjYXQnLCAnL2RhdGEvdG9tYnN0b25lcy8nICsgbGFzdF90b21ic3Rv
bmVbNl1dKQorICAgICAgICByZXR1cm4gJyVzXG4lcycgJSAoJyAnLmpvaW4obGFzdF90b21ic3Rv
bmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsn
c2hlbGwnLCAnY2F0JywgJy9kYXRhL3RvbWJzdG9uZXMvJyArIGxhc3RfdG9tYnN0b25lWzZdXSkp
CisKKyAgICBkZWYgX2dldF9sb2djYXQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5f
YWRiX2NvbW1hbmQoWydsb2djYXQnLCAnLWQnXSkKIAogICAgIGRlZiBfc2V0dXBfcGVyZm9ybWFu
Y2Uoc2VsZik6CiAgICAgICAgICMgRGlzYWJsZSBDUFUgc2NhbGluZyBhbmQgZHJvcCByYW0gY2Fj
aGUgdG8gcmVkdWNlIG5vaXNlIGluIHRlc3RzCkBAIC0zOTEsMTE5ICs0MjQsMTYyIEBAIGNsYXNz
IENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb20KIAogCiBjbGFzcyBDaHJvbWl1bUFu
ZHJvaWREcml2ZXIoY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIpOgorICAgICMgVGhlIGNvbnRyb2xs
ZXIgbWF5IHN0YXJ0IG11bHRpcGxlIGRyaXZlcnMgZHVyaW5nIHRlc3QsIGJ1dCBmb3Igbm93IHdl
CisgICAgIyBkb24ndCBzdXBwb3J0IG11bHRpcGxlIEFuZHJvaWQgYWN0aXZpdGllcywgc28gb25s
eSBvbmUgZHJpdmVyIGNhbiBiZQorICAgICMgc3RhcnRlZCBhdCBhIHRpbWUuCisgICAgX3N0YXJ0
ZWRfZHJpdmVyID0gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9u
dW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0PUZhbHNlKToKICAgICAgICAgY2hyb21pdW0u
Q2hyb21pdW1Ecml2ZXIuX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxf
dGVzdHMsIG5vX3RpbWVvdXQpCi0gICAgICAgIHNlbGYuX2RldmljZV9pbWFnZV9wYXRoID0gTm9u
ZQotICAgICAgICBzZWxmLl9kcnRfcmV0dXJuX3BhcnNlciA9IHJlLmNvbXBpbGUoJyNEUlRfUkVU
VVJOIChcZCspJykKKyAgICAgICAgc2VsZi5faW5fZmlmb19wYXRoID0gRFJUX0FQUF9GSUxFX0RJ
UiArICdEdW1wUmVuZGVyVHJlZS5pbicKKyAgICAgICAgc2VsZi5fb3V0X2ZpZm9fcGF0aCA9IERS
VF9BUFBfRklMRV9ESVIgKyAnRHVtcFJlbmRlclRyZWUub3V0JworICAgICAgICBzZWxmLl9lcnJf
ZmlsZV9wYXRoID0gRFJUX0FQUF9GSUxFX0RJUiArICdEdW1wUmVuZGVyVHJlZS5lcnInCisgICAg
ICAgIHNlbGYuX3Jlc3RhcnRfYWZ0ZXJfa2lsbGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcmVh
ZF9maWZvX3Byb2MgPSBOb25lCisKKyAgICBkZWYgX2NvbW1hbmRfd3JhcHBlcihjbHMsIHdyYXBw
ZXJfb3B0aW9uKToKKyAgICAgICAgIyBJZ25vcmUgY29tbWFuZCB3cmFwcGVyIHdoaWNoIGlzIG5v
dCBhcHBsaWNhYmxlIG9uIEFuZHJvaWQuCisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIGNt
ZF9saW5lKHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKKyAgICAgICAgb3JpZ2lu
YWxfY21kID0gY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIuY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVz
dHMsIHBlcl90ZXN0X2FyZ3MpCisgICAgICAgIGNtZCA9IFtdCisgICAgICAgIGZvciBwYXJhbSBp
biBvcmlnaW5hbF9jbWQ6CisgICAgICAgICAgICBpZiBwYXJhbS5zdGFydHN3aXRoKCctLXBpeGVs
LXRlc3RzPScpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RldmljZV9pbWFnZV9wYXRoID0gRFJU
X0FQUF9GSUxFX0RJUiArIHNlbGYuX3BvcnQuaG9zdC5maWxlc3lzdGVtLmJhc2VuYW1lKHNlbGYu
X2ltYWdlX3BhdGgpCisgICAgICAgICAgICAgICAgcGFyYW0gPSAnLS1waXhlbC10ZXN0cz0nICsg
c2VsZi5fZGV2aWNlX2ltYWdlX3BhdGgKKyAgICAgICAgICAgIGNtZC5hcHBlbmQocGFyYW0pCisK
KyAgICAgICAgY21kLmFwcGVuZCgnLS1pbi1maWZvPScgKyBzZWxmLl9pbl9maWZvX3BhdGgpCisg
ICAgICAgIGNtZC5hcHBlbmQoJy0tb3V0LWZpZm89JyArIHNlbGYuX291dF9maWZvX3BhdGgpCisg
ICAgICAgIGNtZC5hcHBlbmQoJy0tZXJyLWZpbGU9JyArIHNlbGYuX2Vycl9maWxlX3BhdGgpCisg
ICAgICAgIHJldHVybiBjbWQKKworICAgIGRlZiBfZmlsZV9leGlzdHNfb25fZGV2aWNlKHNlbGYs
IGZ1bGxfZmlsZV9wYXRoKToKKyAgICAgICAgYXNzZXJ0IGZ1bGxfZmlsZV9wYXRoLnN0YXJ0c3dp
dGgoJy8nKQorICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5fcnVuX2FkYl9jb21tYW5kKFsnc2hl
bGwnLCAnbHMnLCBmdWxsX2ZpbGVfcGF0aF0pLnN0cmlwKCkgPT0gZnVsbF9maWxlX3BhdGgKKwor
ICAgIGRlZiBfdGltZW91dF9raWxsZXIoc2VsZiwgcGlkcywgc3RvcF9ldmVudCk6CisgICAgICAg
IHRpbWUuc2xlZXAoRFJUX1NUQVJUX1NUT1BfVElNRU9VVF9TRUNTKQorICAgICAgICBpZiBub3Qg
c3RvcF9ldmVudC5pc19zZXQoKToKKyAgICAgICAgICAgIGZvciBpIGluIHBpZHM6CisgICAgICAg
ICAgICAgICAgc2VsZi5fcG9ydC5fZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhpKQogCiAgICAgZGVm
IF9zdGFydChzZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6Ci0gICAgICAgICMgQ29u
dmVydCB0aGUgb3JpZ2luYWwgY29tbWFuZCBsaW5lIGludG8gdG8gdHdvIHBhcnRzOgotICAgICAg
ICAjIC0gdGhlICdhZGIgc2hlbGwnIGNvbW1hbmQgbGluZSB0byBzdGFydCBhbiBpbnRlcmFjdGl2
ZSBhZGIgc2hlbGw7Ci0gICAgICAgICMgLSB0aGUgRHVtcFJlbmRlclRyZWUgY29tbWFuZCBsaW5l
IHRvIHNlbmQgdG8gdGhlIGFkYiBzaGVsbC4KLSAgICAgICAgb3JpZ2luYWxfY21kID0gc2VsZi5j
bWRfbGluZShwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncykKLSAgICAgICAgc2hlbGxfY21kID0g
W10KLSAgICAgICAgZHJ0X2FyZ3MgPSBbXQotICAgICAgICBwYXRoX3RvX2RyaXZlciA9IHNlbGYu
X3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkKLSAgICAgICAgcmVhZGluZ19hcmdzX2JlZm9yZV9kcml2
ZXIgPSBUcnVlCi0gICAgICAgIGZvciBwYXJhbSBpbiBvcmlnaW5hbF9jbWQ6Ci0gICAgICAgICAg
ICBpZiByZWFkaW5nX2FyZ3NfYmVmb3JlX2RyaXZlcjoKLSAgICAgICAgICAgICAgICBpZiBwYXJh
bSA9PSBwYXRoX3RvX2RyaXZlcjoKLSAgICAgICAgICAgICAgICAgICAgcmVhZGluZ19hcmdzX2Jl
Zm9yZV9kcml2ZXIgPSBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgICAgIHNoZWxsX2NtZC5hcHBlbmQocGFyYW0pCisgICAgICAgIGlmIENocm9taXVtQW5kcm9p
ZERyaXZlci5fc3RhcnRlZF9kcml2ZXI6CisgICAgICAgICAgICBDaHJvbWl1bUFuZHJvaWREcml2
ZXIuX3N0YXJ0ZWRfZHJpdmVyLnN0b3AoKQorCisgICAgICAgIENocm9taXVtQW5kcm9pZERyaXZl
ci5fc3RhcnRlZF9kcml2ZXIgPSBzZWxmCisKKyAgICAgICAgc2VsZi5fcG9ydC5fcnVuX2FkYl9j
b21tYW5kKFsnbG9nY2F0JywgJy1jJ10pCisgICAgICAgIHNlbGYuX3BvcnQuX3J1bl9hZGJfY29t
bWFuZChbJ3NoZWxsJywgJ2VjaG8nXSArIHNlbGYuY21kX2xpbmUocGl4ZWxfdGVzdHMsIHBlcl90
ZXN0X2FyZ3MpICsgWyc+JywgQ09NTUFORF9MSU5FX0ZJTEVdKQorICAgICAgICBzZWxmLl9wb3J0
Ll9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdhbScsICdzdGFydCcsICctbicsIERSVF9BQ1RJ
VklUWV9GVUxMX05BTUVdKQorICAgICAgICBzZWNvbmRzID0gMAorICAgICAgICB3aGlsZSBub3Qg
c2VsZi5fZmlsZV9leGlzdHNfb25fZGV2aWNlKHNlbGYuX2luX2ZpZm9fcGF0aCkgb3Igbm90IHNl
bGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShzZWxmLl9vdXRfZmlmb19wYXRoKToKKyAgICAgICAg
ICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgIHNlY29uZHMgKz0gMQorICAgICAgICAgICAg
aWYgc2Vjb25kcyA9PSBEUlRfU1RBUlRfU1RPUF9USU1FT1VUX1NFQ1M6CisgICAgICAgICAgICAg
ICAgX2xvZy5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24u
IExvZzpcbicgKyBzZWxmLl9wb3J0Ll9nZXRfbG9nY2F0KCkpCisgICAgICAgICAgICAgICAgcmFp
c2UgQXNzZXJ0aW9uRXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBEdW1wUmVuZGVyVHJlZSBhcHBsaWNh
dGlvbi4nKQorCisgICAgICAgIHNoZWxsX2NtZCA9IHNlbGYuX3BvcnQuX2FkYl9jb21tYW5kICsg
WydzaGVsbCddCisgICAgICAgIGV4ZWN1dGl2ZSA9IHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZQorICAg
ICAgICAjIFN0YXJ0IGEgcHJvY2VzcyB0byBzZW5kIGNvbW1hbmQgdGhyb3VnaCB0aGUgaW5wdXQg
ZmlmbyBvZiB0aGUgRHVtcFJlbmRlclRyZWUgYXBwLgorICAgICAgICAjIFRoaXMgcHJvY2VzcyBt
dXN0IGJlIHJ1biBhcyBhbiBpbnRlcmFjdGl2ZSBhZGIgc2hlbGwgYmVjYXVzZSB0aGUgbm9ybWFs
IGFkYiBzaGVsbCBkb2Vzbid0IHN1cHBvcnQgc3RkaW4uCisgICAgICAgIHNlbGYuX3Byb2MgPSBl
eGVjdXRpdmUucG9wZW4oc2hlbGxfY21kLCBzdGRpbj1leGVjdXRpdmUuUElQRSwgc3Rkb3V0PWV4
ZWN1dGl2ZS5QSVBFLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICAgICAgIyBSZWFkIGJh
Y2sgdGhlIHNoZWxsIHByb21wdCB0byBlbnN1cmUgYWRiIHNoZWxsIHJlYWR5LgorICAgICAgICBz
ZWxmLl9yZWFkX3Byb21wdCgpCisgICAgICAgIF9sb2cuZGVidWcoJ0ludGVyYWN0aXZlIHNoZWxs
IHN0YXJ0ZWQnKQorCisgICAgICAgICMgU3RhcnQgYSBwcm9jZXNzIHRvIHJlYWQgZnJvbSB0aGUg
b3V0cHV0IGZpZm8gb2YgdGhlIER1bXBSZW5kZXJUcmVlIGFwcCBhbmQgcHJpbnQgdG8gc3Rkb3V0
LgorICAgICAgICBfbG9nLmRlYnVnKCdSZWRpcmVjdGluZyBzdGRvdXQgdG8gJyArIHNlbGYuX291
dF9maWZvX3BhdGgpCisgICAgICAgIHNlbGYuX3JlYWRfZmlmb19wcm9jID0gZXhlY3V0aXZlLnBv
cGVuKHNoZWxsX2NtZCArIFsnY2F0Jywgc2VsZi5fb3V0X2ZpZm9fcGF0aF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1leGVjdXRpdmUuUElQ
RSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisKKyAgICAgICAgX2xvZy5kZWJ1ZygnUmVkaXJl
Y3Rpbmcgc3RkaW4gdG8gJyArIHNlbGYuX2luX2ZpZm9fcGF0aCkKKyAgICAgICAgKGxpbmUsIGNy
YXNoKSA9IHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRfbGluZSgnY2F0ID4lc1xuJyAlIHNl
bGYuX2luX2ZpZm9fcGF0aCkKKworICAgICAgICAjIENvbWJpbmUgdGhlIHR3byB1bmlkaXJlY3Rp
b25hbCBwaXBlcyBpbnRvIG9uZSBiaWRpcmVjdGlvbmFsIHBpcGUgdG8gbWFrZSBfd3JpdGVfY29t
bWFuZF9hbmRfcmVhZF9saW5lKCkgZXRjCisgICAgICAgICMgd29yayB3aXRoIHNlbGYuX3Byb2Mu
CisgICAgICAgIHNlbGYuX3Byb2Muc3Rkb3V0LmNsb3NlKCkKKyAgICAgICAgc2VsZi5fcHJvYy5z
dGRvdXQgPSBzZWxmLl9yZWFkX2ZpZm9fcHJvYy5zdGRvdXQKKworICAgICAgICAjIFN0YXJ0IGEg
dGhyZWFkIHRvIGtpbGwgdGhlIHBpcGUgcmVhZGVyIGFuZCB3cml0ZXIgcHJvY2Vzc2VzIG9uIGRl
YWRsb2NrIG9mIHRoZSBmaWZvcyBkdXJpbmcgc3RhcnR1cC4KKyAgICAgICAgc3RvcF9raWxsZXJf
ZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBraWxsZXJfdGhyZWFkID0gdGhyZWFk
aW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fdGltZW91dF9raWxsZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KFtzZWxmLl9wcm9jLnBpZCwgc2VsZi5fcmVh
ZF9maWZvX3Byb2MucGlkXSwgc3RvcF9raWxsZXJfZXZlbnQpKQorICAgICAgICBraWxsZXJfdGhy
ZWFkLnN0YXJ0KCkKKworICAgICAgICBvdXRwdXQgPSAnJworICAgICAgICB3aGlsZSBub3QgY3Jh
c2ggYW5kIGxpbmUucnN0cmlwKCkgIT0gJyNSRUFEWSc6CisgICAgICAgICAgICBpZiBsaW5lID09
ICcnOiAgIyBFT0Ygb3IgY3Jhc2hlZAorICAgICAgICAgICAgICAgIGNyYXNoID0gVHJ1ZQogICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBwYXJhbS5zdGFydHN3aXRoKCctLXBp
eGVsLXRlc3RzPScpOgotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZGV2aWNlX2lt
YWdlX3BhdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZXZpY2VfaW1hZ2VfcGF0
aCA9IERFVklDRV9EUlRfRElSICsgc2VsZi5fcG9ydC5ob3N0LmZpbGVzeXN0ZW0uYmFzZW5hbWUo
c2VsZi5faW1hZ2VfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSAnLS1waXhlbC10
ZXN0cz0nICsgc2VsZi5fZGV2aWNlX2ltYWdlX3BhdGgKLSAgICAgICAgICAgICAgICBkcnRfYXJn
cy5hcHBlbmQocGFyYW0pCi0KLSAgICAgICAgc2hlbGxfY21kICs9IHNlbGYuX3BvcnQuX2FkYl9j
b21tYW5kCi0gICAgICAgIHNoZWxsX2NtZC5hcHBlbmQoJ3NoZWxsJykKLSAgICAgICAgcmV0cmll
cyA9IDAKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0
aW5nIGFkYiBzaGVsbCBmb3IgRHVtcFJlbmRlclRyZWU6ICcgKyAnICcuam9pbihzaGVsbF9jbWQp
KQotICAgICAgICAgICAgZXhlY3V0aXZlID0gc2VsZi5fcG9ydC5ob3N0LmV4ZWN1dGl2ZQotICAg
ICAgICAgICAgc2VsZi5fcHJvYyA9IGV4ZWN1dGl2ZS5wb3BlbihzaGVsbF9jbWQsIHN0ZGluPWV4
ZWN1dGl2ZS5QSVBFLCBzdGRvdXQ9ZXhlY3V0aXZlLlBJUEUsIHN0ZGVycj1leGVjdXRpdmUuU1RE
T1VULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9
VHJ1ZSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCi0gICAgICAgICAgICAjIFJlYWQgYmFjayB0
aGUgc2hlbGwgcHJvbXB0IHRvIGVuc3VyZSBhZGIgc2hlbGwgcmVhZHkuCi0gICAgICAgICAgICBz
ZWxmLl9yZWFkX3Byb21wdCgpCi0gICAgICAgICAgICAjIFNvbWUgdGVzdHMgcmVseSBvbiB0aGlz
IHRvIHByb2R1Y2UgcHJvcGVyIG51bWJlciBmb3JtYXQgZXRjLiwKLSAgICAgICAgICAgICMgZS5n
LiBmYXN0L3NwZWVjaC9pbnB1dC1hcHBlYXJhbmNlLW51bWJlcmFuZHNwZWVjaC5odG1sLgotICAg
ICAgICAgICAgc2VsZi5fd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKCJleHBvcnQgTENfQ1RZ
UEU9J2VuX1VTJ1xuIikKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRf
bGluZSgiZXhwb3J0IENMQVNTUEFUSD0nL2RhdGEvZHJ0L0R1bXBSZW5kZXJUcmVlLmphcidcbiIp
Ci0KLSAgICAgICAgICAgICMgV2hlbiBEdW1wUmVuZGVyVHJlZSBjcmFzaGVzLCB0aGUgQW5kcm9p
ZCBkZWJ1Z2dlcmQgd2lsbCBzdG9wIHRoZQotICAgICAgICAgICAgIyBwcm9jZXNzIGJlZm9yZSBk
dW1waW5nIHN0YWNrIHRvIGxvZy90b21ic3RvbmUgZmlsZSBhbmQgdGVybWluYXRpbmcKLSAgICAg
ICAgICAgICMgdGhlIHByb2Nlc3MuIFNsZWVwIDEgc2Vjb25kIChsb25nIGVub3VnaCBmb3IgZGVi
dWdnZXJkIHRvIGR1bXAKLSAgICAgICAgICAgICMgc3RhY2spIGJlZm9yZSBleGl0aW5nIHRoZSBz
aGVsbCB0byBlbnN1cmUgdGhlIHByb2Nlc3MgaGFzIHF1aXQsCi0gICAgICAgICAgICAjIG90aGVy
d2lzZSB0aGUgZXhpdCB3aWxsIGZhaWwgYmVjYXVzZSAiWW91IGhhdmUgc3RvcHBlZCBqb2JzIi4K
LSAgICAgICAgICAgIGRydF9jbWQgPSAnJXMgJXMgMj4lcztlY2hvICIjRFJUX1JFVFVSTiAkPyI7
c2xlZXAgMTtleGl0XG4nICUgKERFVklDRV9EUlRfUEFUSCwgJyAnLmpvaW4oZHJ0X2FyZ3MpLCBE
RVZJQ0VfRFJUX1NUREVSUikKLSAgICAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5nIER1bXBS
ZW5kZXJUcmVlOiAnICsgZHJ0X2NtZCkKLQotICAgICAgICAgICAgIyBXYWl0IHVudGlsIERSVCBl
Y2hvcyAnI1JFQURZJy4KLSAgICAgICAgICAgIG91dHB1dCA9ICcnCi0gICAgICAgICAgICAobGlu
ZSwgY3Jhc2gpID0gc2VsZi5fd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKGRydF9jbWQpCi0g
ICAgICAgICAgICB3aGlsZSBub3QgY3Jhc2ggYW5kIGxpbmUucnN0cmlwKCkgIT0gJyNSRUFEWSc6
Ci0gICAgICAgICAgICAgICAgaWYgbGluZSA9PSAnJzogICMgRU9GIG9yIGNyYXNoZWQKLSAgICAg
ICAgICAgICAgICAgICAgY3Jhc2ggPSBUcnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgb3V0cHV0ICs9IGxpbmUKLSAgICAgICAgICAgICAgICAgICAgKGxpbmUs
IGNyYXNoKSA9IHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRfbGluZSgpCisgICAgICAgICAg
ICAgICAgb3V0cHV0ICs9IGxpbmUKKyAgICAgICAgICAgICAgICAobGluZSwgY3Jhc2gpID0gc2Vs
Zi5fd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKCkKIAogICAgICAgICAgICAgaWYgY3Jhc2g6
Ci0gICAgICAgICAgICAgICAgIyBTb21ldGltZXMgdGhlIGRldmljZSBpcyBpbiB1bnN0YWJsZSBz
dGF0ZSAobWF5IGJlIG91dCBvZgotICAgICAgICAgICAgICAgICMgbWVtb3J5PykgYW5kIGtpbGxz
IER1bXBSZW5kZXJUcmVlIGp1c3QgYWZ0ZXIgaXQgaXMgc3RhcnRlZC4KLSAgICAgICAgICAgICAg
ICAjIFRyeSB0byBzdG9wIGFuZCBzdGFydCBpdCBhZ2Fpbi4KLSAgICAgICAgICAgICAgICBfbG9n
LmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgRHVtcFJlbmRlclRyZWU6IFxuJXNcbiVzXG4nICUgKG91
dHB1dCwgc2VsZi5fcG9ydC5nZXRfc3RkZXJyKCkpKQorICAgICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJ0ZhaWxlZCB0byBzdGFydCBEdW1wUmVuZGVyVHJlZTogXG4lc1xuTG9nOlxuJXMnICUgKG91
dHB1dCwgc2VsZi5fcG9ydC5fZ2V0X2xvZ2NhdCgpKSkKICAgICAgICAgICAgICAgICBzZWxmLnN0
b3AoKQotICAgICAgICAgICAgICAgIHJldHJpZXMgKz0gMQotICAgICAgICAgICAgICAgIGlmIHJl
dHJpZXMgPiAyOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRmFp
bGVkIG11bHRpcGxlIHRpbWVzIHRvIHN0YXJ0IER1bXBSZW5kZXJUcmVlJykKKyAgICAgICAgICAg
ICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRmFpbGVkIHRvIHN0YXJ0IER1bXBSZW5kZXJUcmVl
IGFwcGxpY2F0aW9uJykKICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBTdGFy
dHVwIHN1Y2NlZWRlZC4KKyAgICAgICAgICAgICAgICBzdG9wX2tpbGxlcl9ldmVudC5zZXQoKQog
ICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIGRyaXZlcl9p
bnB1dCk6CiAgICAgICAgIGRyaXZlcl9vdXRwdXQgPSBjaHJvbWl1bS5DaHJvbWl1bURyaXZlci5y
dW5fdGVzdChzZWxmLCBkcml2ZXJfaW5wdXQpCi0KLSAgICAgICAgZHJ0X3JldHVybiA9IHNlbGYu
X2dldF9kcnRfcmV0dXJuX3ZhbHVlKGRyaXZlcl9vdXRwdXQuZXJyb3IpCi0gICAgICAgIGlmIGRy
dF9yZXR1cm4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCdEdW1wUmVuZGVy
VHJlZSByZXR1cm4gdmFsdWU6ICVkJyAlIGRydF9yZXR1cm4pCi0gICAgICAgICMgRklYTUU6IFJl
dHJpZXZlIHN0ZGVyciBmcm9tIHRoZSB0YXJnZXQuCiAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQu
Y3Jhc2g6Ci0gICAgICAgICAgICAjIFdoZW4gQW5kcm9pZCBpcyBPT00sIGl0IHNlbmRzIGEgU0lH
S0lMTCBzaWduYWwgdG8gRFJULiBEUlQKLSAgICAgICAgICAgICMgaXMgc3RvcHBlZCBzaWxlbnRs
eSBhbmQgcmVnYXJkZWQgYXMgY3Jhc2hlZC4gUmUtcnVuIHRoZSB0ZXN0IGZvcgorICAgICAgICAg
ICAgIyBXaGVuIEFuZHJvaWQgaXMgT09NLCBEUlQgcHJvY2VzcyBtYXkgYmUga2lsbGVkIGJ5IEFj
dGl2aXR5TWFuYWdlciBvciBzeXN0ZW0gT09NLgorICAgICAgICAgICAgIyBJdCBsb29rcyBsaWtl
IGEgY3Jhc2ggYnV0IHRoZXJlIGlzIG5vIGZhdGFsIHNpZ25hbCBsb2dnZWQuIFJlLXJ1biB0aGUg
dGVzdCBmb3IKICAgICAgICAgICAgICMgc3VjaCBjcmFzaC4KLSAgICAgICAgICAgIGlmIGRydF9y
ZXR1cm4gPT0gMTI4ICsgc2lnbmFsLlNJR0tJTEw6CisgICAgICAgICAgICAjIFRvIHRlc3Q6IGFk
YiBzaGVsbCBhbSBmb3JjZS1zdG9wIG9yZy5jaHJvbWl1bS5uYXRpdmVfdGVzdCwKKyAgICAgICAg
ICAgICMgb3Iga2lsbCAtMTEgcGlkIHR3aWNlIG9yIHRocmVlIHRpbWVzIHRvIHNpbXVsYXRlIGEg
ZmF0YWwgY3Jhc2guCisgICAgICAgICAgICBpZiBzZWxmLl9wb3J0Ll9nZXRfbG9nY2F0KCkuZmlu
ZCgnRmF0YWwgc2lnbmFsJykgPT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVzdGFydF9h
ZnRlcl9raWxsZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5fZHJ0X3JldHJ5
X2FmdGVyX2tpbGxlZCArPSAxCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcG9ydC5fZHJ0X3Jl
dHJ5X2FmdGVyX2tpbGxlZCA+IDEwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRp
b25FcnJvcignRHVtcFJlbmRlclRyZWUgaXMga2lsbGVkIGJ5IEFuZHJvaWQgZm9yIHRvbyBtYW55
IHRpbWVzIScpCi0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRHVtcFJlbmRlclRyZWUgaXMg
a2lsbGVkIGJ5IFNJR0tJTEwuIFJldHJ5IHRoZSB0ZXN0ICglZCkuJyAlIHNlbGYuX3BvcnQuX2Ry
dF9yZXRyeV9hZnRlcl9raWxsZWQpCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRHVtcFJl
bmRlclRyZWUgaXMga2lsbGVkIGJ5IHN5c3RlbSAoJWQpLicgJSBzZWxmLl9wb3J0Ll9kcnRfcmV0
cnlfYWZ0ZXJfa2lsbGVkKQogICAgICAgICAgICAgICAgIHNlbGYuc3RvcCgpCiAgICAgICAgICAg
ICAgICAgIyBTbGVlcCAxMCBzZWNvbmRzIHRvIGxldCBzeXN0ZW0gcmVjb3Zlci4KICAgICAgICAg
ICAgICAgICB0aW1lLnNsZWVwKDEwKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bl90
ZXN0KGRyaXZlcl9pbnB1dCkKLSAgICAgICAgICAgICMgRmV0Y2ggdGhlIHN0YWNrIHRyYWNlIGZy
b20gdGhlIHRvbWJzdG9uZSBmaWxlLgotICAgICAgICAgICAgIyBGSVhNRTogc29tZXRpbWVzIHRo
ZSBjcmFzaCBkb2Vzbid0IHJlYWxseSBoYXBwZW4gc28gdGhhdCBubwotICAgICAgICAgICAgIyB0
b21ic3RvbmUgaXMgZ2VuZXJhdGVkLiBJbiB0aGF0IGNhc2Ugd2UgZmV0Y2ggdGhlIHdyb25nIHN0
YWNrCi0gICAgICAgICAgICAjIHRyYWNlLgotICAgICAgICAgICAgZHJpdmVyX291dHB1dC5lcnJv
ciArPSBzZWxmLl9wb3J0LmdldF9sYXN0X3N0YWNrdHJhY2UoKS5lbmNvZGUoJ2FzY2lpJywgJ2ln
bm9yZScpCi0gICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmVycm9yICs9IHNlbGYuX3BvcnQuX3J1
bl9hZGJfY29tbWFuZChbJ2xvZ2NhdCcsICctZCddKS5lbmNvZGUoJ2FzY2lpJywgJ2lnbm9yZScp
CisKKyAgICAgICAgc2VsZi5fcmVzdGFydF9hZnRlcl9raWxsZWQgPSBGYWxzZQorICAgICAgICBk
cml2ZXJfb3V0cHV0LmVycm9yICs9IHNlbGYuX2dldF9zdGRlcnIoKQogICAgICAgICByZXR1cm4g
ZHJpdmVyX291dHB1dAogCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIF9sb2cuZGVidWco
J1N0b3BwaW5nIER1bXBSZW5kZXJUcmVlJykKKyAgICAgICAgaWYgQ2hyb21pdW1BbmRyb2lkRHJp
dmVyLl9zdGFydGVkX2RyaXZlciAhPSBzZWxmIG9yIG5vdCBzZWxmLl9wcm9jOgorICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIENocm9taXVtQW5kcm9pZERyaXZlci5fc3RhcnRlZF9kcml2ZXIg
PSBOb25lCisKKyAgICAgICAgc2VsZi5fcG9ydC5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAn
YW0nLCAnZm9yY2Utc3RvcCcsIERSVF9BUFBfUEFDS0FHRV0pCisgICAgICAgIHNlY29uZHMgPSAw
CisgICAgICAgIHdoaWxlIHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShzZWxmLl9pbl9maWZv
X3BhdGgpIG9yIHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShzZWxmLl9vdXRfZmlmb19wYXRo
KToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuX3J1
bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ3JtJywgc2VsZi5faW5fZmlmb19wYXRoXSkKKyAgICAg
ICAgICAgIHNlbGYuX3BvcnQuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ3JtJywgc2VsZi5f
b3V0X2ZpZm9fcGF0aF0pCisgICAgICAgICAgICBzZWNvbmRzICs9IDEKKyAgICAgICAgICAgIGlm
IHNlY29uZHMgPT0gRFJUX1NUQVJUX1NUT1BfVElNRU9VVF9TRUNTOgorICAgICAgICAgICAgICAg
IHJhaXNlIEFzc2VydGlvbkVycm9yKCdGYWlsZWQgdG8gcmVtb3ZlIGZpZm8gZmlsZXMuIE1heSBi
ZSBsb2NrZWQuJykKKworICAgICAgICBpZiBzZWxmLl9yZWFkX2ZpZm9fcHJvYzoKKyAgICAgICAg
ICAgIHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcmVhZF9maWZvX3By
b2MucGlkKQorICAgICAgICAgICAgc2VsZi5fcmVhZF9maWZvX3Byb2MgPSBOb25lCisKKyAgICAg
ICAgIyBIZXJlIGR1cGxpY2F0ZSBzb21lIGxvZ2ljIGluIENocm9taXVtRHJpdmVyLnN0b3AoKSBp
bnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmcgaXQsCisgICAgICAgICMgYmVjYXVzZSBvdXIgRHVt
cFJlbmRlclRyZWUgYXBwIHByb2Nlc3Mgd29uJ3QgcXVpdCBieSBpdHNlbGYgb24gY2xvc2Ugb2Yg
dGhlIHBpcGVzLgogICAgICAgICBpZiBzZWxmLl9wcm9jOgotICAgICAgICAgICAgIyBTZW5kIGFu
IGV4cGxpY2l0IFFVSVQgY29tbWFuZCBiZWNhdXNlIGNsb3NpbmcgdGhlIHBpcGUgY2FuJ3QgbGV0
Ci0gICAgICAgICAgICAjIER1bXBSZW5kZXJUcmVlIG9uIEFuZHJvaWQgcXVpdCBpbW1lZGlhdGVs
eS4KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLndy
aXRlKCdRVUlUXG4nKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAg
ICAgIyBUaGUgcGlwZSBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZCwgaW5kaWNhdGluZyBhYm5vcm1h
bAotICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycmVkLiBXYWl0IGEgd2hpbGUgdG8g
YWxsb3cgdGhlIGRldmljZSB0bwotICAgICAgICAgICAgICAgICMgcmVjb3Zlci4gKmZpbmdlcnMg
Y3Jvc3NlZCoKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgIGNocm9taXVt
LkNocm9taXVtRHJpdmVyLnN0b3Aoc2VsZikKKyAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4u
Y2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRvdXQuY2xvc2UoKQorICAgICAgICAg
ICAgaWYgc2VsZi5fcHJvYy5zdGRlcnI6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRl
cnIuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fcG9ydC5fZXhlY3V0aXZlLmtpbGxfcHJvY2Vz
cyhzZWxmLl9wcm9jLnBpZCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlzIG5v
dCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Mud2FpdCgpCisgICAgICAgICAgICBz
ZWxmLl9wcm9jID0gTm9uZQogCiAgICAgZGVmIF90ZXN0X3NoZWxsX2NvbW1hbmQoc2VsZiwgdXJp
LCB0aW1lb3V0X21zLCBjaGVja3N1bSk6CiAgICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCdmaWxl
Oi8vLycpOgpAQCAtNTE3LDMwICs1OTMsMjUgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVy
KGNocm9taXVtLkNocgogICAgIGRlZiBfd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKHNlbGYs
IGlucHV0PU5vbmUpOgogICAgICAgICAobGluZSwgY3Jhc2gpID0gY2hyb21pdW0uQ2hyb21pdW1E
cml2ZXIuX3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRfbGluZShzZWxmLCBpbnB1dCkKICAgICAgICAg
dXJsX21hcmtlciA9ICcjVVJMOicKLSAgICAgICAgaWYgbm90IGNyYXNoIGFuZCBsaW5lLnN0YXJ0
c3dpdGgodXJsX21hcmtlcikgYW5kIGxpbmUuZmluZChGSUxFX1RFU1RfVVJJX1BSRUZJWCkgPT0g
bGVuKHVybF9tYXJrZXIpOgotICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBkZXZpY2UgdGVzdCB1
cmkgYmFjayB0byBob3N0IHVyaSBvdGhlcndpc2UKLSAgICAgICAgICAgICMgY2hyb21pdW0uQ2hy
b21pdW1Ecml2ZXIucnVuX3Rlc3QoKSB3aWxsIGNvbXBsYWluLgotICAgICAgICAgICAgbGluZSA9
ICcjVVJMOmZpbGU6Ly8lcy8lcycgJSAoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIGxp
bmVbbGVuKHVybF9tYXJrZXIpICsgbGVuKEZJTEVfVEVTVF9VUklfUFJFRklYKTpdKQotICAgICAg
ICBpZiBub3QgY3Jhc2ggYW5kIHNlbGYuX2hhc19jcmFzaF9oaW50KGxpbmUpOgotICAgICAgICAg
ICAgY3Jhc2ggPSBUcnVlCisgICAgICAgIGlmIG5vdCBjcmFzaDoKKyAgICAgICAgICAgIGlmIGxp
bmUuc3RhcnRzd2l0aCh1cmxfbWFya2VyKSBhbmQgbGluZS5maW5kKEZJTEVfVEVTVF9VUklfUFJF
RklYKSA9PSBsZW4odXJsX21hcmtlcik6CisgICAgICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBk
ZXZpY2UgdGVzdCB1cmkgYmFjayB0byBob3N0IHVyaSBvdGhlcndpc2UKKyAgICAgICAgICAgICAg
ICAjIGNocm9taXVtLkNocm9taXVtRHJpdmVyLnJ1bl90ZXN0KCkgd2lsbCBjb21wbGFpbi4KKyAg
ICAgICAgICAgICAgICBsaW5lID0gJyNVUkw6ZmlsZTovLyVzLyVzJyAlIChzZWxmLl9wb3J0Lmxh
eW91dF90ZXN0c19kaXIoKSwgbGluZVtsZW4odXJsX21hcmtlcikgKyBsZW4oRklMRV9URVNUX1VS
SV9QUkVGSVgpOl0pCisgICAgICAgICAgICAjIGNocm9taXVtLnB5IHVzZXMgImxpbmUgPT0gJycg
YW5kIHNlbGYuX3Byb2MucG9sbCgpIGlzIG5vdCBOb25lIiB0byBkZXRlY3QgY3Jhc2gsCisgICAg
ICAgICAgICAjIGJ1dCB3ZSBoYXZlIGV2ZXIgc2VlbiAibGluZSA9PSAnJyBhbmQgc2VsZi5fcHJv
Yy5wb2xsKCkgaXMgTm9uZSIgd2hlbiB0aGUgYXBwIGNyYXNoZXMuCisgICAgICAgICAgICBpZiBs
aW5lID09ICcnOgorICAgICAgICAgICAgICAgIGNyYXNoID0gVHJ1ZQogICAgICAgICByZXR1cm4g
KGxpbmUsIGNyYXNoKQogCiAgICAgZGVmIF9vdXRwdXRfaW1hZ2Uoc2VsZik6CiAgICAgICAgIGlm
IHNlbGYuX2ltYWdlX3BhdGg6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCdwdWxsaW5nIGZyb20g
ZGV2aWNlOiAlcyB0byAlcycgJSAoc2VsZi5fZGV2aWNlX2ltYWdlX3BhdGgsIHNlbGYuX2ltYWdl
X3BhdGgpKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygnUHVsbGluZyBmcm9tIGRldmljZTogJXMg
dG8gJXMnICUgKHNlbGYuX2RldmljZV9pbWFnZV9wYXRoLCBzZWxmLl9pbWFnZV9wYXRoKSkKICAg
ICAgICAgICAgIHNlbGYuX3BvcnQuX3B1bGxfZnJvbV9kZXZpY2Uoc2VsZi5fZGV2aWNlX2ltYWdl
X3BhdGgsIHNlbGYuX2ltYWdlX3BhdGgsIGlnbm9yZV9lcnJvcj1UcnVlKQogICAgICAgICByZXR1
cm4gY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIuX291dHB1dF9pbWFnZShzZWxmKQogCi0gICAgZGVm
IF9oYXNfY3Jhc2hfaGludChzZWxmLCBsaW5lKToKLSAgICAgICAgIyBXaGVuIERSVCBjcmFzaGVz
LCBpdCBzZW5kcyBhIHNpZ25hbCB0byBBbmRyb2lkIERlYnVnZ2VyZCwgbGlrZQotICAgICAgICAj
IFNJR1NFR1YsIFNJR0ZQRSwgZXRjLiBXaGVuIERlYnVnZ2VyZCByZWNlaXZlcyB0aGUgc2lnbmFs
LCBpdCBzdG9wcyBEUlQKLSAgICAgICAgIyAod2hpY2ggY2F1c2VzIFNoZWxsIHRvIG91dHB1dCBh
IG1lc3NhZ2UpLCBhbmQgZHVtcHMgdGhlIHN0YWNrIHN0cmFjZS4KLSAgICAgICAgIyBXZSB1c2Ug
dGhlIFNoZWxsIG91dHB1dCBhcyBhIGNyYXNoIGhpbnQuCi0gICAgICAgIHJldHVybiBsaW5lIGlz
IG5vdCBOb25lIGFuZCBsaW5lLmZpbmQoJ1sxXSArIFN0b3BwZWQgKHNpZ25hbCknKSA+PSAwCi0K
LSAgICBkZWYgX2dldF9kcnRfcmV0dXJuX3ZhbHVlKHNlbGYsIGVycm9yKToKLSAgICAgICAgcmV0
dXJuX21hdGNoID0gc2VsZi5fZHJ0X3JldHVybl9wYXJzZXIuc2VhcmNoKGVycm9yKQotICAgICAg
ICByZXR1cm4gTm9uZSBpZiAocmV0dXJuX21hdGNoIGlzIE5vbmUpIGVsc2UgaW50KHJldHVybl9t
YXRjaC5ncm91cCgxKSkKKyAgICBkZWYgX2dldF9zdGRlcnIoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9wb3J0Ll9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdjYXQnLCBzZWxmLl9lcnJf
ZmlsZV9wYXRoXSwgaWdub3JlX2Vycm9yPVRydWUpCiAKICAgICBkZWYgX3JlYWRfcHJvbXB0KHNl
bGYpOgogICAgICAgICBsYXN0X2NoYXIgPSAnJwo=
</data>
<flag name="review"
          id="149240"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143347</attachid>
            <date>2012-05-22 12:08:14 -0700</date>
            <delta_ts>2012-05-22 17:40:20 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>86923a</filename>
            <type>text/plain</type>
            <size>29701</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExODAxNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQyIEBACisyMDEyLTA1LTIyICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFJ1biBEdW1wUmVuZGVyVHJlZSBh
cyBhbiBhcGsgKHB5dGhvbiBwYXJ0KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODY5MjMKKworICAgICAgICBjaHJvbWl1bV9hbmRyb2lkLnB5IGlzIG1v
ZGlmaWVkIHRvIHN1cHBvcnQgcnVubmluZyBEdW1wUmVuZGVyVHJlZSBhcworICAgICAgICBhbiBh
cGssIHNvIHRoYXQgd2UgY2FuIHJ1biB0aGUgdGVzdHMgKGUuZy4gdmlkZW8pIHJlcXVpcmluZyBm
ZWF0dXJlcworICAgICAgICBpbXBsZW1lbnRlZCBpbiBKYXZhIG9uIEFuZHJvaWQuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weToKKyAgICAgICAgKENocm9taXVt
QW5kcm9pZFBvcnQuX19pbml0X18pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5kZWZh
dWx0X2NoaWxkX3Byb2Nlc3Nlcyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LmNoZWNr
X3dkaWZmKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuY2hlY2tfYnVpbGQpOgorICAg
ICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5zdGFydF9oZWxwZXIpOgorICAgICAgICAoQ2hyb21p
dW1BbmRyb2lkUG9ydC5za2lwcGVkX2xheW91dF90ZXN0cyk6CisgICAgICAgIChDaHJvbWl1bUFu
ZHJvaWRQb3J0KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3BhdGhfdG9fZHJpdmVy
KToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX2dldF9jcmFzaF9sb2cpOgorICAgICAg
ICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcHVzaF9leGVjdXRhYmxlKToKKyAgICAgICAgKENocm9t
aXVtQW5kcm9pZFBvcnQuX3J1bl9hZGJfY29tbWFuZCk6CisgICAgICAgIChDaHJvbWl1bUFuZHJv
aWRQb3J0Ll9nZXRfbGFzdF9zdGFja3RyYWNlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQuX2dldF9sb2djYXQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fc2V0dXBfcGVy
Zm9ybWFuY2UpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyKToKKyAgICAgICAgKENo
cm9taXVtQW5kcm9pZERyaXZlci5fX2luaXRfXyk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRE
cml2ZXIuX2NvbW1hbmRfd3JhcHBlcik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIu
Y21kX2xpbmUpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9maWxlX2V4aXN0c19v
bl9kZXZpY2UpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9kZWFkbG9ja19kZXRl
Y3Rvcik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3N0YXJ0KToKKyAgICAgICAg
KENocm9taXVtQW5kcm9pZERyaXZlci5ydW5fdGVzdCk6CisgICAgICAgIChDaHJvbWl1bUFuZHJv
aWREcml2ZXIuc3RvcCk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3dyaXRlX2Nv
bW1hbmRfYW5kX3JlYWRfbGluZSk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX291
dHB1dF9pbWFnZSk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIuX2dldF9zdGRlcnIp
OgorCiAyMDEyLTA1LTIyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4K
IAogICAgICAgICBGaXggYSBzbWFsbCBzeW50YXggZXJyb3IgaW4gdGhlIEdUSysgQVBJIHRlc3Qg
cnVubmVyLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQkocmV2aXNpb24gMTE4MDEwKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRy
b2lkLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsMTQgQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc2lnbmFsCitp
bXBvcnQgc2hsZXgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1l
CiAKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNocm9taXVtCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5CiAKQEAgLTQ1LDEzICs0OCwxNyBAQCBfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAjIFRoaXMgcGF0aCBpcyBkZWZpbmVkIGlu
IGJhc2UvYmFzZV9wYXRoc19hbmRyb2lkLmNjIGFuZAogIyB3ZWJraXQvc3VwcG9ydC9wbGF0Zm9y
bV9zdXBwb3J0X2FuZHJvaWQuY2MuCiBERVZJQ0VfU09VUkNFX1JPT1RfRElSID0gJy9kYXRhL2xv
Y2FsL3RtcC8nCitDT01NQU5EX0xJTkVfRklMRSA9IERFVklDRV9TT1VSQ0VfUk9PVF9ESVIgKyAn
Y2hyb21lLW5hdGl2ZS10ZXN0cy1jb21tYW5kLWxpbmUnCiAKKyMgVGhlIGRpcmVjdG9yeSB0byBw
dXQgdG9vbHMgYW5kIHJlc291cmNlcyBvZiBEdW1wUmVuZGVyVHJlZS4KIERFVklDRV9EUlRfRElS
ID0gJy9kYXRhL2RydC8nCi1ERVZJQ0VfRFJUX1BBVEggPSBERVZJQ0VfRFJUX0RJUiArICdEdW1w
UmVuZGVyVHJlZScKLURFVklDRV9EUlRfU1RERVJSID0gREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJl
bmRlclRyZWUuc3RkZXJyJwogREVWSUNFX0ZPUldBUkRFUl9QQVRIID0gREVWSUNFX0RSVF9ESVIg
KyAnZm9yd2FyZGVyJwogREVWSUNFX0RSVF9TVEFNUF9QQVRIID0gREVWSUNFX0RSVF9ESVIgKyAn
RHVtcFJlbmRlclRyZWUuc3RhbXAnCiAKK0RSVF9BUFBfUEFDS0FHRSA9ICdvcmcuY2hyb21pdW0u
bmF0aXZlX3Rlc3QnCitEUlRfQUNUSVZJVFlfRlVMTF9OQU1FID0gRFJUX0FQUF9QQUNLQUdFICsg
Jy8uQ2hyb21lTmF0aXZlVGVzdEFjdGl2aXR5JworRFJUX0FQUF9GSUxFX0RJUiA9ICcvZGF0YS91
c2VyLzAvJyArIERSVF9BUFBfUEFDS0FHRSArICcvZmlsZXMvJworCiAjIFRoaXMgb25seSB3b3Jr
cyBmb3Igc2luZ2xlIGNvcmUgZGV2aWNlcyBzbyBmYXIuCiAjIEZJWE1FOiBGaW5kIGEgc29sdXRp
b24gZm9yIG11bHRpLWNvcmUgZGV2aWNlcy4KIFNDQUxJTkdfR09WRVJOT1IgPSAiL3N5cy9kZXZp
Y2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3NjYWxpbmdfZ292ZXJub3IiCkBAIC02OSw2ICs3
Niw5IEBAIEZPUldBUkRfUE9SVFMgPSAnODAwMCA4MDgwIDg0NDMgODg4MCA5MzIKIAogTVNfVFJV
RVRZUEVfRk9OVFNfRElSID0gJy91c3Ivc2hhcmUvZm9udHMvdHJ1ZXR5cGUvbXN0dGNvcmVmb250
cy8nCiAKKyMgVGltZW91dCBpbiBzZWNvbmRzIHRvIHdhaXQgZm9yIHN0YXJ0L3N0b3Agb2YgRHVt
cFJlbmRlclRyZWUuCitEUlRfU1RBUlRfU1RPUF9USU1FT1VUX1NFQ1MgPSAxMAorCiAjIExpc3Qg
b2YgZm9udHMgdGhhdCBsYXlvdXQgdGVzdHMgZXhwZWN0LCBjb3BpZWQgZnJvbSBEdW1wUmVuZGVy
VHJlZS9ndGsvVGVzdFNoZWxsR3RrLmNwcC4KIEhPU1RfRk9OVF9GSUxFUyA9IFsKICAgICBbTVNf
VFJVRVRZUEVfRk9OVFNfRElSLCAnQXJpYWwudHRmJ10sCkBAIC0xNDksNiArMTU5LDcgQEAgY2xh
c3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbQogICAgICAgICBzZWxmLl92ZXJz
aW9uID0gJ2ljZWNyZWFtc2FuZHdpY2gnCiAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9y
ID0gTm9uZQogICAgICAgICBzZWxmLl9hbmRyb2lkX2Jhc2VfZGlyID0gTm9uZQorICAgICAgICBz
ZWxmLl9yZWFkX2ZpZm9fcHJvYyA9IE5vbmUKIAogICAgICAgICBzZWxmLl9ob3N0X3BvcnQgPSBm
YWN0b3J5LlBvcnRGYWN0b3J5KGhvc3QpLmdldCgnY2hyb21pdW0nLCAqKmt3YXJncykKIApAQCAt
MTY1LDE1ICsxNzYsMjQgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJv
bQogICAgICAgICByZXR1cm4gMTAgKiAxMDAwCiAKICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9j
ZXNzZXMoc2VsZik6Ci0gICAgICAgICMgQ3VycmVudGx5IHdlIG9ubHkgdXNlIG9uZSBwcm9jZXNz
LCBidXQgaXQgbWlnaHQgYmUgaGVscGZ1bCB0byB1c2UKLSAgICAgICAgIyBtb3JlIHRoYXQgb25l
IHByb2Nlc3MgaW4gdGhlIGZ1dHVyZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgorICAgICAgICAj
IEJlY2F1c2Ugb2YgdGhlIG5hdHVyZSBvZiBhcGssIHdlIGRvbid0IHN1cHBvcnQgbW9yZSB0aGFu
IG9uZSBwcm9jZXNzLgogICAgICAgICByZXR1cm4gMQogCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJj
aF9wYXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9w
YXRoLCBzZWxmLkZBTExCQUNLX1BBVEhTKQogCisgICAgZGVmIGNoZWNrX3dkaWZmKHNlbGYsIGxv
Z2dpbmc9VHJ1ZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuY2hlY2tfd2RpZmYo
bG9nZ2luZykKKwogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5jaGVja19idWlsZChuZWVkc19odHRwKQorICAgICAg
ICByZXN1bHQgPSBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNf
aHR0cCkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5jaGVja193ZGlmZigpIGFuZCByZXN1bHQKKyAg
ICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZvciBjb21wbGV0
ZSBBbmRyb2lkIGJ1aWxkIHJlcXVpcmVtZW50cywgcGxlYXNlIHNlZTonKQorICAgICAgICAgICAg
X2xvZy5lcnJvcignJykKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgICBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvY2hyb21pdW0vd2lraS9BbmRyb2lkQnVpbGRJbnN0cnVjdGlvbnMnKQorCisg
ICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVk
c19odHRwKToKICAgICAgICAgZm9yIChmb250X2RpciwgZm9udF9maWxlKSBpbiBIT1NUX0ZPTlRf
RklMRVM6CkBAIC0yMDIsMTEgKzIyMiwxNCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNo
cm9taXVtLkNocm9tCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBzdGFydF9oZWxwZXIoc2VsZik6
CisgICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3Jvb3QnXSkKICAgICAgICAgc2VsZi5f
c2V0dXBfcGVyZm9ybWFuY2UoKQogICAgICAgICAjIFJlcXVpcmVkIGJ5IHdlYmtpdF9zdXBwb3J0
OjpHZXRXZWJLaXRSb290RGlyRmlsZVBhdGgoKS4KICAgICAgICAgIyBPdGhlciBkaXJlY3Rvcmll
cyB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBieSBhZGIgcHVzaC4KLSAgICAgICAgc2Vs
Zi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnbWtkaXInLCAnLXAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERFVklDRV9TT1VSQ0VfUk9PVF9ESVIgKyAnY2hyb21lJ10pCisg
ICAgICAgIHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ21rZGlyJywgJy1wJywgREVW
SUNFX1NPVVJDRV9ST09UX0RJUiArICdjaHJvbWUnXSkKKyAgICAgICAgIyBBbGxvdyB0aGUgRHVt
cFJlbmRlclRyZWUgYXBwIHRvIGZ1bGx5IGFjY2VzcyB0aGUgZGlyZWN0b3J5LgorICAgICAgICAj
IFRoZSBuYXRpdmUgY29kZSBuZWVkcyB0aGUgcGVybWlzc2lvbiB0byB3cml0ZSB0ZW1wb3Jhcnkg
ZmlsZXMgaGVyZS4KKyAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnY2ht
b2QnLCAnNzc3JywgREVWSUNFX1NPVVJDRV9ST09UX0RJUl0pCiAKICAgICAgICAgc2VsZi5fcHVz
aF9leGVjdXRhYmxlKCkKICAgICAgICAgc2VsZi5fcHVzaF9mb250cygpCkBAIC0yMjMsMTMgKzI0
NiwxNSBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9tCiAgICAgICAg
ICMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgYW5kIGRvIG5vIGhhcm0gdG8gc3Vic2VxdWVudCB0ZXN0
cy4KICAgICAgICAgc2VsZi5fdGVhcmRvd25fcGVyZm9ybWFuY2UoKQogCi0gICAgZGVmIHNraXBw
ZWRfdGVzdHMoc2VsZiwgdGVzdF9saXN0KToKLSAgICAgICAgcmV0dXJuIGJhc2UuUG9ydC5fcmVh
bF90ZXN0cyhzZWxmLCBbCisgICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3RzKHNlbGYsIHRlc3Rf
bGlzdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3Rlc3RzKFsKICAgICAgICAgICAgICMg
Q2FudmFzIHRlc3RzIGFyZSBydW4gYXMgdmlydHVhbCBncHUgdGVzdHMuCiAgICAgICAgICAgICAn
ZmFzdC9jYW52YXMnLAogICAgICAgICAgICAgJ2NhbnZhcy9waGlsaXAnLAogICAgICAgICBdKQog
CisgICAgIyBPdmVycmlkZGVuIHByaXZhdGUgZnVuY3Rpb25zLgorCiAgICAgZGVmIF9idWlsZF9w
YXRoKHNlbGYsICpjb21wcyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX2J1aWxk
X3BhdGgoKmNvbXBzKQogCkBAIC0yNDAsMTAgKzI2NSw5IEBAIGNsYXNzIENocm9taXVtQW5kcm9p
ZFBvcnQoY2hyb21pdW0uQ2hyb20KICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fcGF0
aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoKQogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxm
LCBjb25maWd1cmF0aW9uPU5vbmUpOgotICAgICAgICAjIFJldHVybnMgdGhlIGhvc3QgcGF0aCB0
byBkcml2ZXIgd2hpY2ggd2lsbCBiZSBwdXNoZWQgdG8gdGhlIGRldmljZS4KICAgICAgICAgaWYg
bm90IGNvbmZpZ3VyYXRpb246CiAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRf
b3B0aW9uKCdjb25maWd1cmF0aW9uJykKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgo
Y29uZmlndXJhdGlvbiwgJ0R1bXBSZW5kZXJUcmVlJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgJ0R1bXBSZW5kZXJUcmVlX2Fway9DaHJvbWVOYXRpdmVU
ZXN0cy1kZWJ1Zy5hcGsnKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9u
JyksICdmb3J3YXJkZXInKQpAQCAtMjY5LDIzICsyOTMsMzUgQEAgY2xhc3MgQ2hyb21pdW1BbmRy
b2lkUG9ydChjaHJvbWl1bS5DaHJvbQogICAgIGRlZiBfZHJpdmVyX2NsYXNzKHNlbGYpOgogICAg
ICAgICByZXR1cm4gQ2hyb21pdW1BbmRyb2lkRHJpdmVyCiAKKyAgICBkZWYgX2dldF9jcmFzaF9s
b2coc2VsZiwgbmFtZSwgcGlkLCBzdGRvdXQsIHN0ZGVyciwgbmV3ZXJfdGhhbik6CisgICAgICAg
IGlmIG5vdCBzdGRvdXQ6CisgICAgICAgICAgICBzdGRvdXQgPSAnJworICAgICAgICBzdGRvdXQg
Kz0gJyoqKioqKioqKiBMb2djYXQ6XG4nICsgc2VsZi5fZ2V0X2xvZ2NhdCgpCisgICAgICAgIGlm
IG5vdCBzdGRlcnI6CisgICAgICAgICAgICBzdGRlcnIgPSAnJworICAgICAgICBzdGRlcnIgKz0g
JyoqKioqKioqKiBUb21ic3RvbmUgZmlsZTpcbicgKyBzZWxmLl9nZXRfbGFzdF9zdGFja3RyYWNl
KCkKKyAgICAgICAgcmV0dXJuIGNocm9taXVtLkNocm9taXVtUG9ydC5fZ2V0X2NyYXNoX2xvZyhz
ZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdlcl90aGFuKQorCisgICAgIyBMb2Nh
bCBwcml2YXRlIGZ1bmN0aW9ucy4KKwogICAgIGRlZiBfcHVzaF9leGVjdXRhYmxlKHNlbGYpOgog
ICAgICAgICBkcnRfaG9zdF9wYXRoID0gc2VsZi5fcGF0aF90b19kcml2ZXIoKQogICAgICAgICBm
b3J3YXJkZXJfaG9zdF9wYXRoID0gc2VsZi5fcGF0aF90b19oZWxwZXIoKQotICAgICAgICBkcnRf
amFyX2hvc3RfcGF0aCA9IGRydF9ob3N0X3BhdGggKyAnLmphcicKICAgICAgICAgaG9zdF9zdGFt
cCA9IGludChmbG9hdChtYXgob3Muc3RhdChkcnRfaG9zdF9wYXRoKS5zdF9tdGltZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChmb3J3YXJkZXJfaG9zdF9wYXRo
KS5zdF9tdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChk
cnRfamFyX2hvc3RfcGF0aCkuc3RfbXRpbWUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3Muc3RhdChmb3J3YXJkZXJfaG9zdF9wYXRoKS5zdF9tdGltZSkpKQogICAgICAg
ICBkZXZpY2Vfc3RhbXAgPSBpbnQoZmxvYXQoc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsKICAgICAg
ICAgICAgICdzaGVsbCcsICdjYXQgJXMgMj4vZGV2L251bGwgfHwgZWNobyAwJyAlIERFVklDRV9E
UlRfU1RBTVBfUEFUSF0pKSkKICAgICAgICAgaWYgZGV2aWNlX3N0YW1wIDwgaG9zdF9zdGFtcDoK
ICAgICAgICAgICAgIF9sb2cuZGVidWcoJ1B1c2hpbmcgZXhlY3V0YWJsZScpCi0gICAgICAgICAg
ICBzZWxmLl9raWxsX2RldmljZV9wcm9jZXNzKERFVklDRV9GT1JXQVJERVJfUEFUSCkKICAgICAg
ICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGZvcndhcmRlcl9ob3N0X3BhdGgsIERFVklDRV9G
T1JXQVJERVJfUEFUSCkKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGRydF9ob3N0
X3BhdGgsIERFVklDRV9EUlRfUEFUSCkKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNl
KGRydF9ob3N0X3BhdGggKyAnLnBhaycsIERFVklDRV9EUlRfUEFUSCArICcucGFrJykKLSAgICAg
ICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGRydF9ob3N0X3BhdGggKyAnX3Jlc291cmNlcycs
IERFVklDRV9EUlRfUEFUSCArICdfcmVzb3VyY2VzJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hf
dG9fZGV2aWNlKGRydF9qYXJfaG9zdF9wYXRoLCBERVZJQ0VfRFJUX1BBVEggKyAnLmphcicpCisg
ICAgICAgICAgICBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWyd1bmluc3RhbGwnLCBEUlRfQVBQX1BB
Q0tBR0VdKQorICAgICAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1h
bmQoWydpbnN0YWxsJywgZHJ0X2hvc3RfcGF0aF0pCisgICAgICAgICAgICBpZiBpbnN0YWxsX3Jl
c3VsdC5maW5kKCdTdWNjZXNzJykgPT0gLTE6CisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsICVzIG9udG8gZGV2aWNlOiAlcycgJSAoZHJ0X2hv
c3RfcGF0aCwgaW5zdGFsbF9yZXN1bHQpKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZp
Y2Uoc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ0R1
bXBSZW5kZXJUcmVlLnBhaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVW
SUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykKKyAgICAgICAgICAgIHNlbGYuX3B1
c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0
aW9uJyksICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycp
CiAgICAgICAgICAgICAjIFZlcnNpb24gY29udHJvbCBvZiB0ZXN0IHJlc291cmNlcyBpcyBkZXBl
bmRlbnQgb24gZXhlY3V0YWJsZXMsCiAgICAgICAgICAgICAjIGJlY2F1c2Ugd2Ugd2lsbCBhbHdh
eXMgcmVidWlsZCBleGVjdXRhYmxlcyB3aGVuIHJlc291cmNlcyBhcmUKICAgICAgICAgICAgICMg
dXBkYXRlZC4KQEAgLTMyOSwxMSArMzY1LDE0IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQo
Y2hyb21pdW0uQ2hyb20KICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAn
ZWNobyAlZCA+ICVzVkVSU0lPTicgJSAodmVyc2lvbiwgZGlyKV0pCiAKICAgICBkZWYgX3J1bl9h
ZGJfY29tbWFuZChzZWxmLCBjbWQsIGlnbm9yZV9lcnJvcj1GYWxzZSk6CisgICAgICAgIF9sb2cu
ZGVidWcoJ1J1biBhZGIgY29tbWFuZDogJyArIHN0cihjbWQpKQogICAgICAgICBpZiBpZ25vcmVf
ZXJyb3I6CiAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gc2VsZi5fZXhlY3V0aXZlLmlnbm9y
ZV9lcnJvcgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IE5vbmUK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChzZWxmLl9hZGJfY29t
bWFuZCArIGNtZCwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyKQorICAgICAgICByZXN1bHQg
PSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoc2VsZi5fYWRiX2NvbW1hbmQgKyBjbWQsIGVy
cm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlcikKKyAgICAgICAgX2xvZy5kZWJ1ZygnUnVuIGFkYiBy
ZXN1bHQ6XG4nICsgcmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgX2Nv
cHlfZGV2aWNlX2ZpbGUoc2VsZiwgZnJvbV9maWxlLCB0b19maWxlLCBpZ25vcmVfZXJyb3I9RmFs
c2UpOgogICAgICAgICAjICdjcCcgaXMgdW5hdmFpbGFibGUgb24gQW5kcm9pZCwgc28gdXNlICdk
ZCcgaW5zdGVhZC4KQEAgLTM0NSwxNyArMzg0LDcgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9y
dChjaHJvbWl1bS5DaHJvbQogICAgIGRlZiBfcHVsbF9mcm9tX2RldmljZShzZWxmLCBkZXZpY2Vf
cGF0aCwgaG9zdF9wYXRoLCBpZ25vcmVfZXJyb3I9RmFsc2UpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5fcnVuX2FkYl9jb21tYW5kKFsncHVsbCcsIGRldmljZV9wYXRoLCBob3N0X3BhdGhdLCBpZ25v
cmVfZXJyb3IpCiAKLSAgICBkZWYgX2tpbGxfZGV2aWNlX3Byb2Nlc3Moc2VsZiwgbmFtZSk6Ci0g
ICAgICAgIHBzX3Jlc3VsdCA9IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ3BzJ10p
LnNwbGl0KCdcbicpCi0gICAgICAgIGZvciBsaW5lIGluIHBzX3Jlc3VsdDoKLSAgICAgICAgICAg
IGlmIGxpbmUuZmluZChuYW1lKSA+IDA6Ci0gICAgICAgICAgICAgICAgcGlkID0gbGluZS5zcGxp
dCgpWzFdCi0gICAgICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAn
a2lsbCcsIHBpZF0pCi0KLSAgICBkZWYgZ2V0X3N0ZGVycihzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2NhdCcsIERFVklDRV9EUlRfU1RERVJS
XSwgaWdub3JlX2Vycm9yPVRydWUpCi0KLSAgICBkZWYgZ2V0X2xhc3Rfc3RhY2t0cmFjZShzZWxm
KToKKyAgICBkZWYgX2dldF9sYXN0X3N0YWNrdHJhY2Uoc2VsZik6CiAgICAgICAgIHRvbWJzdG9u
ZXMgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdscycsICctbicsICcvZGF0YS90
b21ic3RvbmVzJ10pCiAgICAgICAgIGlmIG5vdCB0b21ic3RvbmVzIG9yIHRvbWJzdG9uZXMuc3Rh
cnRzd2l0aCgnL2RhdGEvdG9tYnN0b25lczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScpOgog
ICAgICAgICAgICAgX2xvZy5lcnJvcignRFJUIGNyYXNoZWQsIGJ1dCBubyB0b21ic3RvbmUgZm91
bmQhJykKQEAgLTM3NiwxMyArNDA1LDE4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hy
b21pdW0uQ2hyb20KICAgICAgICAgIyBVc2UgQW5kcm9pZCB0b29sIHZlbmRvci9nb29nbGUvdG9v
bHMvc3RhY2sgdG8gY29udmVydCB0aGUgcmF3CiAgICAgICAgICMgc3RhY2sgdHJhY2UgaW50byBh
IGh1bWFuIHJlYWRhYmxlIGZvcm1hdCwgaWYgbmVlZGVkLgogICAgICAgICAjIEl0IHRha2VzIGEg
bG9uZyB0aW1lLCBzbyBkb24ndCBkbyBpdCBoZXJlLgotICAgICAgICByZXR1cm4gc2VsZi5fcnVu
X2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnY2F0JywgJy9kYXRhL3RvbWJzdG9uZXMvJyArIGxhc3Rf
dG9tYnN0b25lWzZdXSkKKyAgICAgICAgcmV0dXJuICclc1xuJXMnICUgKCcgJy5qb2luKGxhc3Rf
dG9tYnN0b25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29t
bWFuZChbJ3NoZWxsJywgJ2NhdCcsICcvZGF0YS90b21ic3RvbmVzLycgKyBsYXN0X3RvbWJzdG9u
ZVs2XV0pKQorCisgICAgZGVmIF9nZXRfbG9nY2F0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fcnVuX2FkYl9jb21tYW5kKFsnbG9nY2F0JywgJy1kJ10pCiAKICAgICBkZWYgX3NldHVwX3Bl
cmZvcm1hbmNlKHNlbGYpOgogICAgICAgICAjIERpc2FibGUgQ1BVIHNjYWxpbmcgYW5kIGRyb3Ag
cmFtIGNhY2hlIHRvIHJlZHVjZSBub2lzZSBpbiB0ZXN0cwogICAgICAgICBpZiBub3Qgc2VsZi5f
b3JpZ2luYWxfZ292ZXJub3I6Ci0gICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9nb3Zlcm5vciA9
IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2NhdCcsIFNDQUxJTkdfR09WRVJOT1Jd
KQotICAgICAgICAgICAgc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAnZWNobycsICdw
ZXJmb3JtYW5jZScsICc+JywgU0NBTElOR19HT1ZFUk5PUl0pCisgICAgICAgICAgICBzZWxmLl9v
cmlnaW5hbF9nb3Zlcm5vciA9IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ2NhdCcs
IFNDQUxJTkdfR09WRVJOT1JdLCBpZ25vcmVfZXJyb3I9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHNl
bGYuX29yaWdpbmFsX2dvdmVybm9yOgorICAgICAgICAgICAgICAgIHNlbGYuX3J1bl9hZGJfY29t
bWFuZChbJ3NoZWxsJywgJ2VjaG8nLCAncGVyZm9ybWFuY2UnLCAnPicsIFNDQUxJTkdfR09WRVJO
T1JdKQogCiAgICAgZGVmIF90ZWFyZG93bl9wZXJmb3JtYW5jZShzZWxmKToKICAgICAgICAgaWYg
c2VsZi5fb3JpZ2luYWxfZ292ZXJub3I6CkBAIC0zOTEsMTE5ICs0MjUsMTY5IEBAIGNsYXNzIENo
cm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb20KIAogCiBjbGFzcyBDaHJvbWl1bUFuZHJv
aWREcml2ZXIoY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIpOgorICAgICMgVGhlIGNvbnRyb2xsZXIg
bWF5IHN0YXJ0IG11bHRpcGxlIGRyaXZlcnMgZHVyaW5nIHRlc3QsIGJ1dCBmb3Igbm93IHdlCisg
ICAgIyBkb24ndCBzdXBwb3J0IG11bHRpcGxlIEFuZHJvaWQgYWN0aXZpdGllcywgc28gb25seSBv
bmUgZHJpdmVyIGNhbiBiZQorICAgICMgc3RhcnRlZCBhdCBhIHRpbWUuCisgICAgX3N0YXJ0ZWRf
ZHJpdmVyID0gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1i
ZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0PUZhbHNlKToKICAgICAgICAgY2hyb21pdW0uQ2hy
b21pdW1Ecml2ZXIuX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVz
dHMsIG5vX3RpbWVvdXQpCi0gICAgICAgIHNlbGYuX2RldmljZV9pbWFnZV9wYXRoID0gTm9uZQot
ICAgICAgICBzZWxmLl9kcnRfcmV0dXJuX3BhcnNlciA9IHJlLmNvbXBpbGUoJyNEUlRfUkVUVVJO
IChcZCspJykKKyAgICAgICAgc2VsZi5faW5fZmlmb19wYXRoID0gRFJUX0FQUF9GSUxFX0RJUiAr
ICdEdW1wUmVuZGVyVHJlZS5pbicKKyAgICAgICAgc2VsZi5fb3V0X2ZpZm9fcGF0aCA9IERSVF9B
UFBfRklMRV9ESVIgKyAnRHVtcFJlbmRlclRyZWUub3V0JworICAgICAgICBzZWxmLl9lcnJfZmls
ZV9wYXRoID0gRFJUX0FQUF9GSUxFX0RJUiArICdEdW1wUmVuZGVyVHJlZS5lcnInCisgICAgICAg
IHNlbGYuX3Jlc3RhcnRfYWZ0ZXJfa2lsbGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcmVhZF9m
aWZvX3Byb2MgPSBOb25lCisKKyAgICBkZWYgX2NvbW1hbmRfd3JhcHBlcihjbHMsIHdyYXBwZXJf
b3B0aW9uKToKKyAgICAgICAgIyBJZ25vcmUgY29tbWFuZCB3cmFwcGVyIHdoaWNoIGlzIG5vdCBh
cHBsaWNhYmxlIG9uIEFuZHJvaWQuCisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIGNtZF9s
aW5lKHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKKyAgICAgICAgb3JpZ2luYWxf
Y21kID0gY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIuY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMs
IHBlcl90ZXN0X2FyZ3MpCisgICAgICAgIGNtZCA9IFtdCisgICAgICAgIGZvciBwYXJhbSBpbiBv
cmlnaW5hbF9jbWQ6CisgICAgICAgICAgICBpZiBwYXJhbS5zdGFydHN3aXRoKCctLXBpeGVsLXRl
c3RzPScpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RldmljZV9pbWFnZV9wYXRoID0gRFJUX0FQ
UF9GSUxFX0RJUiArIHNlbGYuX3BvcnQuaG9zdC5maWxlc3lzdGVtLmJhc2VuYW1lKHNlbGYuX2lt
YWdlX3BhdGgpCisgICAgICAgICAgICAgICAgcGFyYW0gPSAnLS1waXhlbC10ZXN0cz0nICsgc2Vs
Zi5fZGV2aWNlX2ltYWdlX3BhdGgKKyAgICAgICAgICAgIGNtZC5hcHBlbmQocGFyYW0pCisKKyAg
ICAgICAgY21kLmFwcGVuZCgnLS1pbi1maWZvPScgKyBzZWxmLl9pbl9maWZvX3BhdGgpCisgICAg
ICAgIGNtZC5hcHBlbmQoJy0tb3V0LWZpZm89JyArIHNlbGYuX291dF9maWZvX3BhdGgpCisgICAg
ICAgIGNtZC5hcHBlbmQoJy0tZXJyLWZpbGU9JyArIHNlbGYuX2Vycl9maWxlX3BhdGgpCisgICAg
ICAgIHJldHVybiBjbWQKKworICAgIGRlZiBfZmlsZV9leGlzdHNfb25fZGV2aWNlKHNlbGYsIGZ1
bGxfZmlsZV9wYXRoKToKKyAgICAgICAgYXNzZXJ0IGZ1bGxfZmlsZV9wYXRoLnN0YXJ0c3dpdGgo
Jy8nKQorICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwn
LCAnbHMnLCBmdWxsX2ZpbGVfcGF0aF0pLnN0cmlwKCkgPT0gZnVsbF9maWxlX3BhdGgKKworICAg
IGRlZiBfZGVhZGxvY2tfZGV0ZWN0b3Ioc2VsZiwgcGlkcywgbm9ybWFsX3N0YXJ0dXBfZXZlbnQp
OgorICAgICAgICB0aW1lLnNsZWVwKERSVF9TVEFSVF9TVE9QX1RJTUVPVVRfU0VDUykKKyAgICAg
ICAgaWYgbm90IG5vcm1hbF9zdGFydHVwX2V2ZW50LmlzX3NldCgpOgorICAgICAgICAgICAgIyBJ
ZiBub3JtYWxfc3RhcnR1cF9ldmVudCBpcyBub3Qgc2V0IGluIHRpbWUsIHRoZSBtYWluIHRocmVh
ZCBtdXN0IGJlIGJsb2NrZWQgYXQKKyAgICAgICAgICAgICMgcmVhZGluZy93cml0aW5nIHRoZSBm
aWZvLiBLaWxsIHRoZSBmaWZvIHJlYWRpbmcvd3JpdGluZyBwcm9jZXNzZXMgdG8gbGV0IHRoZQor
ICAgICAgICAgICAgIyBtYWluIHRocmVhZCBlc2NhcGUgZnJvbSB0aGUgZGVhZGxvY2tlZCBzdGF0
ZS4gQWZ0ZXIgdGhhdCwgdGhlIG1haW4gdGhyZWFkIHdpbGwKKyAgICAgICAgICAgICMgdHJlYXQg
dGhpcyBhcyBhIGNyYXNoLgorICAgICAgICAgICAgZm9yIGkgaW4gcGlkczoKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0Ll9leGVjdXRpdmUua2lsbF9wcm9jZXNzKGkpCisgICAgICAgICMgT3Ro
ZXJ3aXNlIHRoZSBtYWluIHRocmVhZCBoYXMgYmVlbiBwcm9jZWVkZWQgbm9ybWFsbHkuIFRoaXMg
dGhyZWFkIGp1c3QgZXhpdHMgc2lsZW50bHkuCiAKICAgICBkZWYgX3N0YXJ0KHNlbGYsIHBpeGVs
X3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKLSAgICAgICAgIyBDb252ZXJ0IHRoZSBvcmlnaW5hbCBj
b21tYW5kIGxpbmUgaW50byB0byB0d28gcGFydHM6Ci0gICAgICAgICMgLSB0aGUgJ2FkYiBzaGVs
bCcgY29tbWFuZCBsaW5lIHRvIHN0YXJ0IGFuIGludGVyYWN0aXZlIGFkYiBzaGVsbDsKLSAgICAg
ICAgIyAtIHRoZSBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUgdG8gc2VuZCB0byB0aGUgYWRi
IHNoZWxsLgotICAgICAgICBvcmlnaW5hbF9jbWQgPSBzZWxmLmNtZF9saW5lKHBpeGVsX3Rlc3Rz
LCBwZXJfdGVzdF9hcmdzKQotICAgICAgICBzaGVsbF9jbWQgPSBbXQotICAgICAgICBkcnRfYXJn
cyA9IFtdCi0gICAgICAgIHBhdGhfdG9fZHJpdmVyID0gc2VsZi5fcG9ydC5fcGF0aF90b19kcml2
ZXIoKQotICAgICAgICByZWFkaW5nX2FyZ3NfYmVmb3JlX2RyaXZlciA9IFRydWUKLSAgICAgICAg
Zm9yIHBhcmFtIGluIG9yaWdpbmFsX2NtZDoKLSAgICAgICAgICAgIGlmIHJlYWRpbmdfYXJnc19i
ZWZvcmVfZHJpdmVyOgotICAgICAgICAgICAgICAgIGlmIHBhcmFtID09IHBhdGhfdG9fZHJpdmVy
OgotICAgICAgICAgICAgICAgICAgICByZWFkaW5nX2FyZ3NfYmVmb3JlX2RyaXZlciA9IEZhbHNl
Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2hlbGxfY21kLmFw
cGVuZChwYXJhbSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgcGFyYW0u
c3RhcnRzd2l0aCgnLS1waXhlbC10ZXN0cz0nKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2RldmljZV9pbWFnZV9wYXRoOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
ZGV2aWNlX2ltYWdlX3BhdGggPSBERVZJQ0VfRFJUX0RJUiArIHNlbGYuX3BvcnQuaG9zdC5maWxl
c3lzdGVtLmJhc2VuYW1lKHNlbGYuX2ltYWdlX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgIHBh
cmFtID0gJy0tcGl4ZWwtdGVzdHM9JyArIHNlbGYuX2RldmljZV9pbWFnZV9wYXRoCi0gICAgICAg
ICAgICAgICAgZHJ0X2FyZ3MuYXBwZW5kKHBhcmFtKQotCi0gICAgICAgIHNoZWxsX2NtZCArPSBz
ZWxmLl9wb3J0Ll9hZGJfY29tbWFuZAotICAgICAgICBzaGVsbF9jbWQuYXBwZW5kKCdzaGVsbCcp
Ci0gICAgICAgIHJldHJpZXMgPSAwCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBf
bG9nLmRlYnVnKCdTdGFydGluZyBhZGIgc2hlbGwgZm9yIER1bXBSZW5kZXJUcmVlOiAnICsgJyAn
LmpvaW4oc2hlbGxfY21kKSkKLSAgICAgICAgICAgIGV4ZWN1dGl2ZSA9IHNlbGYuX3BvcnQuaG9z
dC5leGVjdXRpdmUKLSAgICAgICAgICAgIHNlbGYuX3Byb2MgPSBleGVjdXRpdmUucG9wZW4oc2hl
bGxfY21kLCBzdGRpbj1leGVjdXRpdmUuUElQRSwgc3Rkb3V0PWV4ZWN1dGl2ZS5QSVBFLCBzdGRl
cnI9ZXhlY3V0aXZlLlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xvc2VfZmRzPVRydWUsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQotICAgICAgICAg
ICAgIyBSZWFkIGJhY2sgdGhlIHNoZWxsIHByb21wdCB0byBlbnN1cmUgYWRiIHNoZWxsIHJlYWR5
LgotICAgICAgICAgICAgc2VsZi5fcmVhZF9wcm9tcHQoKQotICAgICAgICAgICAgIyBTb21lIHRl
c3RzIHJlbHkgb24gdGhpcyB0byBwcm9kdWNlIHByb3BlciBudW1iZXIgZm9ybWF0IGV0Yy4sCi0g
ICAgICAgICAgICAjIGUuZy4gZmFzdC9zcGVlY2gvaW5wdXQtYXBwZWFyYW5jZS1udW1iZXJhbmRz
cGVlY2guaHRtbC4KLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRfbGlu
ZSgiZXhwb3J0IExDX0NUWVBFPSdlbl9VUydcbiIpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9j
b21tYW5kX2FuZF9yZWFkX2xpbmUoImV4cG9ydCBDTEFTU1BBVEg9Jy9kYXRhL2RydC9EdW1wUmVu
ZGVyVHJlZS5qYXInXG4iKQotCi0gICAgICAgICAgICAjIFdoZW4gRHVtcFJlbmRlclRyZWUgY3Jh
c2hlcywgdGhlIEFuZHJvaWQgZGVidWdnZXJkIHdpbGwgc3RvcCB0aGUKLSAgICAgICAgICAgICMg
cHJvY2VzcyBiZWZvcmUgZHVtcGluZyBzdGFjayB0byBsb2cvdG9tYnN0b25lIGZpbGUgYW5kIHRl
cm1pbmF0aW5nCi0gICAgICAgICAgICAjIHRoZSBwcm9jZXNzLiBTbGVlcCAxIHNlY29uZCAobG9u
ZyBlbm91Z2ggZm9yIGRlYnVnZ2VyZCB0byBkdW1wCi0gICAgICAgICAgICAjIHN0YWNrKSBiZWZv
cmUgZXhpdGluZyB0aGUgc2hlbGwgdG8gZW5zdXJlIHRoZSBwcm9jZXNzIGhhcyBxdWl0LAotICAg
ICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGV4aXQgd2lsbCBmYWlsIGJlY2F1c2UgIllvdSBoYXZl
IHN0b3BwZWQgam9icyIuCi0gICAgICAgICAgICBkcnRfY21kID0gJyVzICVzIDI+JXM7ZWNobyAi
I0RSVF9SRVRVUk4gJD8iO3NsZWVwIDE7ZXhpdFxuJyAlIChERVZJQ0VfRFJUX1BBVEgsICcgJy5q
b2luKGRydF9hcmdzKSwgREVWSUNFX0RSVF9TVERFUlIpCi0gICAgICAgICAgICBfbG9nLmRlYnVn
KCdTdGFydGluZyBEdW1wUmVuZGVyVHJlZTogJyArIGRydF9jbWQpCi0KLSAgICAgICAgICAgICMg
V2FpdCB1bnRpbCBEUlQgZWNob3MgJyNSRUFEWScuCi0gICAgICAgICAgICBvdXRwdXQgPSAnJwot
ICAgICAgICAgICAgKGxpbmUsIGNyYXNoKSA9IHNlbGYuX3dyaXRlX2NvbW1hbmRfYW5kX3JlYWRf
bGluZShkcnRfY21kKQotICAgICAgICAgICAgd2hpbGUgbm90IGNyYXNoIGFuZCBsaW5lLnJzdHJp
cCgpICE9ICcjUkVBRFknOgotICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gJyc6ICAjIEVPRiBv
ciBjcmFzaGVkCi0gICAgICAgICAgICAgICAgICAgIGNyYXNoID0gVHJ1ZQotICAgICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBsaW5lCi0gICAgICAgICAg
ICAgICAgICAgIChsaW5lLCBjcmFzaCkgPSBzZWxmLl93cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xp
bmUoKQotCi0gICAgICAgICAgICBpZiBjcmFzaDoKLSAgICAgICAgICAgICAgICAjIFNvbWV0aW1l
cyB0aGUgZGV2aWNlIGlzIGluIHVuc3RhYmxlIHN0YXRlIChtYXkgYmUgb3V0IG9mCi0gICAgICAg
ICAgICAgICAgIyBtZW1vcnk/KSBhbmQga2lsbHMgRHVtcFJlbmRlclRyZWUganVzdCBhZnRlciBp
dCBpcyBzdGFydGVkLgotICAgICAgICAgICAgICAgICMgVHJ5IHRvIHN0b3AgYW5kIHN0YXJ0IGl0
IGFnYWluLgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBEdW1w
UmVuZGVyVHJlZTogXG4lc1xuJXNcbicgJSAob3V0cHV0LCBzZWxmLl9wb3J0LmdldF9zdGRlcnIo
KSkpCi0gICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgICAgICByZXRyaWVz
ICs9IDEKLSAgICAgICAgICAgICAgICBpZiByZXRyaWVzID4gMjoKLSAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0ZhaWxlZCBtdWx0aXBsZSB0aW1lcyB0byBzdGFydCBE
dW1wUmVuZGVyVHJlZScpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBpZiBDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3N0YXJ0ZWRfZHJpdmVyOgorICAg
ICAgICAgICAgQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zdGFydGVkX2RyaXZlci5zdG9wKCkKKwor
ICAgICAgICBDaHJvbWl1bUFuZHJvaWREcml2ZXIuX3N0YXJ0ZWRfZHJpdmVyID0gc2VsZgorCisg
ICAgICAgIHNlbGYuX3BvcnQuX3J1bl9hZGJfY29tbWFuZChbJ2xvZ2NhdCcsICctYyddKQorICAg
ICAgICBzZWxmLl9wb3J0Ll9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdlY2hvJ10gKyBzZWxm
LmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKSArIFsnPicsIENPTU1BTkRfTElO
RV9GSUxFXSkKKyAgICAgICAgc2VsZi5fcG9ydC5fcnVuX2FkYl9jb21tYW5kKFsnc2hlbGwnLCAn
YW0nLCAnc3RhcnQnLCAnLW4nLCBEUlRfQUNUSVZJVFlfRlVMTF9OQU1FXSkKKyAgICAgICAgc2Vj
b25kcyA9IDAKKyAgICAgICAgd2hpbGUgKG5vdCBzZWxmLl9maWxlX2V4aXN0c19vbl9kZXZpY2Uo
c2VsZi5faW5fZmlmb19wYXRoKSBvcgorICAgICAgICAgICAgICAgbm90IHNlbGYuX2ZpbGVfZXhp
c3RzX29uX2RldmljZShzZWxmLl9vdXRfZmlmb19wYXRoKSBvcgorICAgICAgICAgICAgICAgbm90
IHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShzZWxmLl9lcnJfZmlsZV9wYXRoKSk6CisgICAg
ICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICBzZWNvbmRzICs9IDEKKyAgICAgICAg
ICAgIGlmIHNlY29uZHMgPj0gRFJUX1NUQVJUX1NUT1BfVElNRU9VVF9TRUNTOgorICAgICAgICAg
ICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBEdW1wUmVuZGVyVHJlZUFwcGxpY2F0
aW9uLiBMb2c6XG4nICsgc2VsZi5fcG9ydC5fZ2V0X2xvZ2NhdCgpKQorICAgICAgICAgICAgICAg
IHJhaXNlIEFzc2VydGlvbkVycm9yKCdGYWlsZWQgdG8gc3RhcnQgRHVtcFJlbmRlclRyZWUgYXBw
bGljYXRpb24uJykKKworICAgICAgICBzaGVsbF9jbWQgPSBzZWxmLl9wb3J0Ll9hZGJfY29tbWFu
ZCArIFsnc2hlbGwnXQorICAgICAgICBleGVjdXRpdmUgPSBzZWxmLl9wb3J0Ll9leGVjdXRpdmUK
KyAgICAgICAgIyBTdGFydCBhIHByb2Nlc3MgdG8gc2VuZCBjb21tYW5kIHRocm91Z2ggdGhlIGlu
cHV0IGZpZm8gb2YgdGhlIER1bXBSZW5kZXJUcmVlIGFwcC4KKyAgICAgICAgIyBUaGlzIHByb2Nl
c3MgbXVzdCBiZSBydW4gYXMgYW4gaW50ZXJhY3RpdmUgYWRiIHNoZWxsIGJlY2F1c2UgdGhlIG5v
cm1hbCBhZGIgc2hlbGwgZG9lc24ndCBzdXBwb3J0IHN0ZGluLgorICAgICAgICBzZWxmLl9wcm9j
ID0gZXhlY3V0aXZlLnBvcGVuKHNoZWxsX2NtZCwgc3RkaW49ZXhlY3V0aXZlLlBJUEUsIHN0ZG91
dD1leGVjdXRpdmUuUElQRSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgICMgUmVh
ZCBiYWNrIHRoZSBzaGVsbCBwcm9tcHQgdG8gZW5zdXJlIGFkYiBzaGVsbCByZWFkeS4KKyAgICAg
ICAgc2VsZi5fcmVhZF9wcm9tcHQoKQorICAgICAgICBfbG9nLmRlYnVnKCdJbnRlcmFjdGl2ZSBz
aGVsbCBzdGFydGVkJykKKworICAgICAgICAjIFN0YXJ0IGEgcHJvY2VzcyB0byByZWFkIGZyb20g
dGhlIG91dHB1dCBmaWZvIG9mIHRoZSBEdW1wUmVuZGVyVHJlZSBhcHAgYW5kIHByaW50IHRvIHN0
ZG91dC4KKyAgICAgICAgX2xvZy5kZWJ1ZygnUmVkaXJlY3Rpbmcgc3Rkb3V0IHRvICcgKyBzZWxm
Ll9vdXRfZmlmb19wYXRoKQorICAgICAgICBzZWxmLl9yZWFkX2ZpZm9fcHJvYyA9IGV4ZWN1dGl2
ZS5wb3BlbihzaGVsbF9jbWQgKyBbJ2NhdCcsIHNlbGYuX291dF9maWZvX3BhdGhdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9ZXhlY3V0aXZl
LlBJUEUsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorCisgICAgICAgIF9sb2cuZGVidWcoJ1Jl
ZGlyZWN0aW5nIHN0ZGluIHRvICcgKyBzZWxmLl9pbl9maWZvX3BhdGgpCisgICAgICAgIChsaW5l
LCBjcmFzaCkgPSBzZWxmLl93cml0ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUoJ2NhdCA+JXNcbicg
JSBzZWxmLl9pbl9maWZvX3BhdGgpCisKKyAgICAgICAgIyBDb21iaW5lIHRoZSB0d28gdW5pZGly
ZWN0aW9uYWwgcGlwZXMgaW50byBvbmUgYmlkaXJlY3Rpb25hbCBwaXBlIHRvIG1ha2UgX3dyaXRl
X2NvbW1hbmRfYW5kX3JlYWRfbGluZSgpIGV0YworICAgICAgICAjIHdvcmsgd2l0aCBzZWxmLl9w
cm9jLgorICAgICAgICBzZWxmLl9wcm9jLnN0ZG91dC5jbG9zZSgpCisgICAgICAgIHNlbGYuX3By
b2Muc3Rkb3V0ID0gc2VsZi5fcmVhZF9maWZvX3Byb2Muc3Rkb3V0CisKKyAgICAgICAgIyBTdGFy
dCBhIHRocmVhZCB0byBraWxsIHRoZSBwaXBlIHJlYWRpbmcvd3JpdGluZyBwcm9jZXNzZXMgb24g
ZGVhZGxvY2sgb2YgdGhlIGZpZm9zIGR1cmluZyBzdGFydHVwLgorICAgICAgICBub3JtYWxfc3Rh
cnR1cF9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHRocmVhZGluZy5UaHJlYWQo
dGFyZ2V0PXNlbGYuX2RlYWRsb2NrX2RldGVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3M9KFtzZWxmLl9wcm9jLnBpZCwgc2VsZi5fcmVhZF9maWZvX3Byb2MucGlkXSwgbm9ybWFs
X3N0YXJ0dXBfZXZlbnQpKS5zdGFydCgpCisKKyAgICAgICAgb3V0cHV0ID0gJycKKyAgICAgICAg
d2hpbGUgbm90IGNyYXNoIGFuZCBsaW5lLnJzdHJpcCgpICE9ICcjUkVBRFknOgorICAgICAgICAg
ICAgb3V0cHV0ICs9IGxpbmUKKyAgICAgICAgICAgIChsaW5lLCBjcmFzaCkgPSBzZWxmLl93cml0
ZV9jb21tYW5kX2FuZF9yZWFkX2xpbmUoKQorCisgICAgICAgIGlmIGNyYXNoOgorICAgICAgICAg
ICAgIyBEdW1wUmVuZGVyVHJlZSBjcmFzaGVzIGR1cmluZyBzdGFydHVwLCBvciB3aGVuIHRoZSBk
ZWFkbG9jayBkZXRlY3RvciBkZXRlY3RlZAorICAgICAgICAgICAgIyBkZWFkbG9jayBhbmQga2ls
bGVkIHRoZSBmaWZvIHJlYWRpbmcvd3JpdGluZyBwcm9jZXNzZXMuCisgICAgICAgICAgICBfbG9n
LmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgRHVtcFJlbmRlclRyZWU6IFxuJXNcbkxvZzpcbiVzJyAl
IChvdXRwdXQsIHNlbGYuX3BvcnQuX2dldF9sb2djYXQoKSkpCisgICAgICAgICAgICBzZWxmLnN0
b3AoKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBE
dW1wUmVuZGVyVHJlZSBhcHBsaWNhdGlvbicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAj
IEluZm9ybSB0aGUgZGVhZGxvY2sgZGV0ZWN0b3IgdGhhdCB0aGUgc3RhcnR1cCBpcyBzdWNjZXNz
ZnVsIHdpdGhvdXQgZGVhZGxvY2suCisgICAgICAgICAgICBub3JtYWxfc3RhcnR1cF9ldmVudC5z
ZXQoKQorICAgICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgZHJpdmVy
X2lucHV0KToKICAgICAgICAgZHJpdmVyX291dHB1dCA9IGNocm9taXVtLkNocm9taXVtRHJpdmVy
LnJ1bl90ZXN0KHNlbGYsIGRyaXZlcl9pbnB1dCkKLQotICAgICAgICBkcnRfcmV0dXJuID0gc2Vs
Zi5fZ2V0X2RydF9yZXR1cm5fdmFsdWUoZHJpdmVyX291dHB1dC5lcnJvcikKLSAgICAgICAgaWYg
ZHJ0X3JldHVybiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoJ0R1bXBSZW5k
ZXJUcmVlIHJldHVybiB2YWx1ZTogJWQnICUgZHJ0X3JldHVybikKLSAgICAgICAgIyBGSVhNRTog
UmV0cmlldmUgc3RkZXJyIGZyb20gdGhlIHRhcmdldC4KICAgICAgICAgaWYgZHJpdmVyX291dHB1
dC5jcmFzaDoKLSAgICAgICAgICAgICMgV2hlbiBBbmRyb2lkIGlzIE9PTSwgaXQgc2VuZHMgYSBT
SUdLSUxMIHNpZ25hbCB0byBEUlQuIERSVAotICAgICAgICAgICAgIyBpcyBzdG9wcGVkIHNpbGVu
dGx5IGFuZCByZWdhcmRlZCBhcyBjcmFzaGVkLiBSZS1ydW4gdGhlIHRlc3QgZm9yCisgICAgICAg
ICAgICAjIFdoZW4gQW5kcm9pZCBpcyBPT00sIERSVCBwcm9jZXNzIG1heSBiZSBraWxsZWQgYnkg
QWN0aXZpdHlNYW5hZ2VyIG9yIHN5c3RlbSBPT00uCisgICAgICAgICAgICAjIEl0IGxvb2tzIGxp
a2UgYSBjcmFzaCBidXQgdGhlcmUgaXMgbm8gZmF0YWwgc2lnbmFsIGxvZ2dlZC4gUmUtcnVuIHRo
ZSB0ZXN0IGZvcgogICAgICAgICAgICAgIyBzdWNoIGNyYXNoLgotICAgICAgICAgICAgaWYgZHJ0
X3JldHVybiA9PSAxMjggKyBzaWduYWwuU0lHS0lMTDoKKyAgICAgICAgICAgICMgVG8gdGVzdDog
YWRiIHNoZWxsIGFtIGZvcmNlLXN0b3Agb3JnLmNocm9taXVtLm5hdGl2ZV90ZXN0LAorICAgICAg
ICAgICAgIyBvciBraWxsIC0xMSBwaWQgdHdpY2Ugb3IgdGhyZWUgdGltZXMgdG8gc2ltdWxhdGUg
YSBmYXRhbCBjcmFzaC4KKyAgICAgICAgICAgIGlmIHNlbGYuX3BvcnQuX2dldF9sb2djYXQoKS5m
aW5kKCdGYXRhbCBzaWduYWwnKSA9PSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXN0YXJ0
X2FmdGVyX2tpbGxlZCA9IFRydWUKICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0Ll9kcnRfcmV0
cnlfYWZ0ZXJfa2lsbGVkICs9IDEKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9wb3J0Ll9kcnRf
cmV0cnlfYWZ0ZXJfa2lsbGVkID4gMTA6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2Vy
dGlvbkVycm9yKCdEdW1wUmVuZGVyVHJlZSBpcyBraWxsZWQgYnkgQW5kcm9pZCBmb3IgdG9vIG1h
bnkgdGltZXMhJykKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdEdW1wUmVuZGVyVHJlZSBp
cyBraWxsZWQgYnkgU0lHS0lMTC4gUmV0cnkgdGhlIHRlc3QgKCVkKS4nICUgc2VsZi5fcG9ydC5f
ZHJ0X3JldHJ5X2FmdGVyX2tpbGxlZCkKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdEdW1w
UmVuZGVyVHJlZSBpcyBraWxsZWQgYnkgc3lzdGVtICglZCkuJyAlIHNlbGYuX3BvcnQuX2RydF9y
ZXRyeV9hZnRlcl9raWxsZWQpCiAgICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICAg
ICAgICAgICAjIFNsZWVwIDEwIHNlY29uZHMgdG8gbGV0IHN5c3RlbSByZWNvdmVyLgogICAgICAg
ICAgICAgICAgIHRpbWUuc2xlZXAoMTApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVu
X3Rlc3QoZHJpdmVyX2lucHV0KQotICAgICAgICAgICAgIyBGZXRjaCB0aGUgc3RhY2sgdHJhY2Ug
ZnJvbSB0aGUgdG9tYnN0b25lIGZpbGUuCi0gICAgICAgICAgICAjIEZJWE1FOiBzb21ldGltZXMg
dGhlIGNyYXNoIGRvZXNuJ3QgcmVhbGx5IGhhcHBlbiBzbyB0aGF0IG5vCi0gICAgICAgICAgICAj
IHRvbWJzdG9uZSBpcyBnZW5lcmF0ZWQuIEluIHRoYXQgY2FzZSB3ZSBmZXRjaCB0aGUgd3Jvbmcg
c3RhY2sKLSAgICAgICAgICAgICMgdHJhY2UuCi0gICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmVy
cm9yICs9IHNlbGYuX3BvcnQuZ2V0X2xhc3Rfc3RhY2t0cmFjZSgpLmVuY29kZSgnYXNjaWknLCAn
aWdub3JlJykKLSAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQuZXJyb3IgKz0gc2VsZi5fcG9ydC5f
cnVuX2FkYl9jb21tYW5kKFsnbG9nY2F0JywgJy1kJ10pLmVuY29kZSgnYXNjaWknLCAnaWdub3Jl
JykKKworICAgICAgICBzZWxmLl9yZXN0YXJ0X2FmdGVyX2tpbGxlZCA9IEZhbHNlCisgICAgICAg
IGRyaXZlcl9vdXRwdXQuZXJyb3IgKz0gc2VsZi5fZ2V0X3N0ZGVycigpCiAgICAgICAgIHJldHVy
biBkcml2ZXJfb3V0cHV0CiAKICAgICBkZWYgc3RvcChzZWxmKToKLSAgICAgICAgX2xvZy5kZWJ1
ZygnU3RvcHBpbmcgRHVtcFJlbmRlclRyZWUnKQorICAgICAgICBpZiBDaHJvbWl1bUFuZHJvaWRE
cml2ZXIuX3N0YXJ0ZWRfZHJpdmVyICE9IHNlbGY6CisgICAgICAgICAgICByZXR1cm4KKyAgICAg
ICAgQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9zdGFydGVkX2RyaXZlciA9IE5vbmUKKworICAgICAg
ICBzZWxmLl9wb3J0Ll9ydW5fYWRiX2NvbW1hbmQoWydzaGVsbCcsICdhbScsICdmb3JjZS1zdG9w
JywgRFJUX0FQUF9QQUNLQUdFXSkKKworICAgICAgICBpZiBzZWxmLl9yZWFkX2ZpZm9fcHJvYzoK
KyAgICAgICAgICAgIHNlbGYuX3BvcnQuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcmVh
ZF9maWZvX3Byb2MucGlkKQorICAgICAgICAgICAgc2VsZi5fcmVhZF9maWZvX3Byb2MgPSBOb25l
CisKKyAgICAgICAgIyBIZXJlIGR1cGxpY2F0ZSBzb21lIGxvZ2ljIGluIENocm9taXVtRHJpdmVy
LnN0b3AoKSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmcgaXQsCisgICAgICAgICMgYmVjYXVz
ZSBvdXIgcGlwZSByZWFkaW5nL3dyaXRpbmcgcHJvY2Vzc2VzIHdvbid0IHF1aXQgYnkgaXRzZWxm
IG9uIGNsb3NlIG9mIHRoZSBwaXBlcy4KICAgICAgICAgaWYgc2VsZi5fcHJvYzoKLSAgICAgICAg
ICAgICMgU2VuZCBhbiBleHBsaWNpdCBRVUlUIGNvbW1hbmQgYmVjYXVzZSBjbG9zaW5nIHRoZSBw
aXBlIGNhbid0IGxldAotICAgICAgICAgICAgIyBEdW1wUmVuZGVyVHJlZSBvbiBBbmRyb2lkIHF1
aXQgaW1tZWRpYXRlbHkuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
cHJvYy5zdGRpbi53cml0ZSgnUVVJVFxuJykKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgot
ICAgICAgICAgICAgICAgICMgVGhlIHBpcGUgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQsIGluZGlj
YXRpbmcgYWJub3JtYWwKLSAgICAgICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnJlZC4gV2Fp
dCBhIHdoaWxlIHRvIGFsbG93IHRoZSBkZXZpY2UgdG8KLSAgICAgICAgICAgICAgICAjIHJlY292
ZXIuICpmaW5nZXJzIGNyb3NzZWQqCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKQotICAg
ICAgICBjaHJvbWl1bS5DaHJvbWl1bURyaXZlci5zdG9wKHNlbGYpCisgICAgICAgICAgICBzZWxm
Ll9wcm9jLnN0ZGluLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Muc3Rkb3V0LmNsb3Nl
KCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Byb2Muc3RkZXJyOgorICAgICAgICAgICAgICAgIHNl
bGYuX3Byb2Muc3RkZXJyLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuX2V4ZWN1dGl2
ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCisgICAgICAgICAgICBpZiBzZWxmLl9wcm9j
LnBvbGwoKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jLndhaXQoKQor
ICAgICAgICAgICAgc2VsZi5fcHJvYyA9IE5vbmUKKworICAgICAgICBzZWNvbmRzID0gMAorICAg
ICAgICB3aGlsZSAoc2VsZi5fZmlsZV9leGlzdHNfb25fZGV2aWNlKHNlbGYuX2luX2ZpZm9fcGF0
aCkgb3IKKyAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVfZXhpc3RzX29uX2RldmljZShzZWxmLl9v
dXRfZmlmb19wYXRoKSBvcgorICAgICAgICAgICAgICAgc2VsZi5fZmlsZV9leGlzdHNfb25fZGV2
aWNlKHNlbGYuX2Vycl9maWxlX3BhdGgpKToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAg
ICAgICAgICAgIHNlbGYuX3BvcnQuX3J1bl9hZGJfY29tbWFuZChbJ3NoZWxsJywgJ3JtJywgc2Vs
Zi5faW5fZmlmb19wYXRoLCBzZWxmLl9vdXRfZmlmb19wYXRoLCBzZWxmLl9lcnJfZmlsZV9wYXRo
XSkKKyAgICAgICAgICAgIHNlY29uZHMgKz0gMQorICAgICAgICAgICAgaWYgc2Vjb25kcyA+PSBE
UlRfU1RBUlRfU1RPUF9USU1FT1VUX1NFQ1M6CisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0
aW9uRXJyb3IoJ0ZhaWxlZCB0byByZW1vdmUgZmlmbyBmaWxlcy4gTWF5IGJlIGxvY2tlZC4nKQog
CiAgICAgZGVmIF90ZXN0X3NoZWxsX2NvbW1hbmQoc2VsZiwgdXJpLCB0aW1lb3V0X21zLCBjaGVj
a3N1bSk6CiAgICAgICAgIGlmIHVyaS5zdGFydHN3aXRoKCdmaWxlOi8vLycpOgpAQCAtNTE3LDMw
ICs2MDEsMjUgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGNocm9taXVtLkNocgogICAg
IGRlZiBfd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5lKHNlbGYsIGlucHV0PU5vbmUpOgogICAg
ICAgICAobGluZSwgY3Jhc2gpID0gY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIuX3dyaXRlX2NvbW1h
bmRfYW5kX3JlYWRfbGluZShzZWxmLCBpbnB1dCkKICAgICAgICAgdXJsX21hcmtlciA9ICcjVVJM
OicKLSAgICAgICAgaWYgbm90IGNyYXNoIGFuZCBsaW5lLnN0YXJ0c3dpdGgodXJsX21hcmtlcikg
YW5kIGxpbmUuZmluZChGSUxFX1RFU1RfVVJJX1BSRUZJWCkgPT0gbGVuKHVybF9tYXJrZXIpOgot
ICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBkZXZpY2UgdGVzdCB1cmkgYmFjayB0byBob3N0IHVy
aSBvdGhlcndpc2UKLSAgICAgICAgICAgICMgY2hyb21pdW0uQ2hyb21pdW1Ecml2ZXIucnVuX3Rl
c3QoKSB3aWxsIGNvbXBsYWluLgotICAgICAgICAgICAgbGluZSA9ICcjVVJMOmZpbGU6Ly8lcy8l
cycgJSAoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIGxpbmVbbGVuKHVybF9tYXJrZXIp
ICsgbGVuKEZJTEVfVEVTVF9VUklfUFJFRklYKTpdKQotICAgICAgICBpZiBub3QgY3Jhc2ggYW5k
IHNlbGYuX2hhc19jcmFzaF9oaW50KGxpbmUpOgotICAgICAgICAgICAgY3Jhc2ggPSBUcnVlCisg
ICAgICAgIGlmIG5vdCBjcmFzaDoKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCh1cmxf
bWFya2VyKSBhbmQgbGluZS5maW5kKEZJTEVfVEVTVF9VUklfUFJFRklYKSA9PSBsZW4odXJsX21h
cmtlcik6CisgICAgICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBkZXZpY2UgdGVzdCB1cmkgYmFj
ayB0byBob3N0IHVyaSBvdGhlcndpc2UKKyAgICAgICAgICAgICAgICAjIGNocm9taXVtLkNocm9t
aXVtRHJpdmVyLnJ1bl90ZXN0KCkgd2lsbCBjb21wbGFpbi4KKyAgICAgICAgICAgICAgICBsaW5l
ID0gJyNVUkw6ZmlsZTovLyVzLyVzJyAlIChzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwg
bGluZVtsZW4odXJsX21hcmtlcikgKyBsZW4oRklMRV9URVNUX1VSSV9QUkVGSVgpOl0pCisgICAg
ICAgICAgICAjIGNocm9taXVtLnB5IHVzZXMgImxpbmUgPT0gJycgYW5kIHNlbGYuX3Byb2MucG9s
bCgpIGlzIG5vdCBOb25lIiB0byBkZXRlY3QgY3Jhc2gsCisgICAgICAgICAgICAjIGJ1dCBvbiBB
bmRyb2lkICJub3QgbGluZSIgaXMgZW5vdWdoIGJlY2F1c2Ugc2VsZi5fcHJvYy5wb2xsKCkgc2Vl
bXMgbm90IHJlbGlhYmxlLgorICAgICAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICAg
ICAgY3Jhc2ggPSBUcnVlCiAgICAgICAgIHJldHVybiAobGluZSwgY3Jhc2gpCiAKICAgICBkZWYg
X291dHB1dF9pbWFnZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5faW1hZ2VfcGF0aDoKLSAgICAg
ICAgICAgIF9sb2cuZGVidWcoJ3B1bGxpbmcgZnJvbSBkZXZpY2U6ICVzIHRvICVzJyAlIChzZWxm
Ll9kZXZpY2VfaW1hZ2VfcGF0aCwgc2VsZi5faW1hZ2VfcGF0aCkpCisgICAgICAgICAgICBfbG9n
LmRlYnVnKCdQdWxsaW5nIGZyb20gZGV2aWNlOiAlcyB0byAlcycgJSAoc2VsZi5fZGV2aWNlX2lt
YWdlX3BhdGgsIHNlbGYuX2ltYWdlX3BhdGgpKQogICAgICAgICAgICAgc2VsZi5fcG9ydC5fcHVs
bF9mcm9tX2RldmljZShzZWxmLl9kZXZpY2VfaW1hZ2VfcGF0aCwgc2VsZi5faW1hZ2VfcGF0aCwg
aWdub3JlX2Vycm9yPVRydWUpCiAgICAgICAgIHJldHVybiBjaHJvbWl1bS5DaHJvbWl1bURyaXZl
ci5fb3V0cHV0X2ltYWdlKHNlbGYpCiAKLSAgICBkZWYgX2hhc19jcmFzaF9oaW50KHNlbGYsIGxp
bmUpOgotICAgICAgICAjIFdoZW4gRFJUIGNyYXNoZXMsIGl0IHNlbmRzIGEgc2lnbmFsIHRvIEFu
ZHJvaWQgRGVidWdnZXJkLCBsaWtlCi0gICAgICAgICMgU0lHU0VHViwgU0lHRlBFLCBldGMuIFdo
ZW4gRGVidWdnZXJkIHJlY2VpdmVzIHRoZSBzaWduYWwsIGl0IHN0b3BzIERSVAotICAgICAgICAj
ICh3aGljaCBjYXVzZXMgU2hlbGwgdG8gb3V0cHV0IGEgbWVzc2FnZSksIGFuZCBkdW1wcyB0aGUg
c3RhY2sgc3RyYWNlLgotICAgICAgICAjIFdlIHVzZSB0aGUgU2hlbGwgb3V0cHV0IGFzIGEgY3Jh
c2ggaGludC4KLSAgICAgICAgcmV0dXJuIGxpbmUgaXMgbm90IE5vbmUgYW5kIGxpbmUuZmluZCgn
WzFdICsgU3RvcHBlZCAoc2lnbmFsKScpID49IDAKLQotICAgIGRlZiBfZ2V0X2RydF9yZXR1cm5f
dmFsdWUoc2VsZiwgZXJyb3IpOgotICAgICAgICByZXR1cm5fbWF0Y2ggPSBzZWxmLl9kcnRfcmV0
dXJuX3BhcnNlci5zZWFyY2goZXJyb3IpCi0gICAgICAgIHJldHVybiBOb25lIGlmIChyZXR1cm5f
bWF0Y2ggaXMgTm9uZSkgZWxzZSBpbnQocmV0dXJuX21hdGNoLmdyb3VwKDEpKQorICAgIGRlZiBf
Z2V0X3N0ZGVycihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuX3J1bl9hZGJfY29t
bWFuZChbJ3NoZWxsJywgJ2NhdCcsIHNlbGYuX2Vycl9maWxlX3BhdGhdLCBpZ25vcmVfZXJyb3I9
VHJ1ZSkKIAogICAgIGRlZiBfcmVhZF9wcm9tcHQoc2VsZik6CiAgICAgICAgIGxhc3RfY2hhciA9
ICcnCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>