<?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>92912</bug_id>
          
          <creation_ts>2012-08-01 15:03:14 -0700</creation_ts>
          <short_desc>Generalize SheriffIRCBot to prepare for PerfBot</short_desc>
          <delta_ts>2012-08-01 18:03:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>92913</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>684619</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-01 15:03:14 -0700</bug_when>
    <thetext>Generalize SheriffIRCBot to prepare for PerfBot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684624</commentid>
    <comment_count>1</comment_count>
      <attachid>155896</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-01 15:07:53 -0700</bug_when>
    <thetext>Created attachment 155896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684629</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 15:10:31 -0700</bug_when>
    <thetext>Attachment 155896 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/tool/bot/ircbot_unittest.py:6:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/bot/ircbot_unittest.py:16:  trailing whitespace  [pep8/W291] [5]
Total errors found: 2 in 5 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>684635</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-01 15:12:50 -0700</bug_when>
    <thetext>Thank you.  I&apos;ve wanted to do that for ages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684640</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-01 15:16:15 -0700</bug_when>
    <thetext>Committed r124373: &lt;http://trac.webkit.org/changeset/124373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684828</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-08-01 18:00:30 -0700</bug_when>
    <thetext>what do you imagine a PerfBot will do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684830</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-01 18:03:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; what do you imagine a PerfBot will do?

I&apos;ll run performance tests as asked on IRC and report the results.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155896</attachid>
            <date>2012-08-01 15:07:53 -0700</date>
            <delta_ts>2012-08-01 15:12:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92912-20120801150735.patch</filename>
            <type>text/plain</type>
            <size>40254</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyNDM3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM4IEBACisyMDEyLTA4LTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEdlbmVyYWxpemUgU2hlcmlmZklSQ0JvdCB0byBwcmVwYXJlIGZvciBQZXJmQm90
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjkxMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZWQg
U2hlcmlmZklSQ0JvdCB0byBJUkNCb3QgYW5kIGdlbmVyYWxpemVkIHRvIHN1cHBvcnQgbm9uLXNo
ZXJpZmZib3QgSVJDIGJvdCBpbiB0aGUgZnV0dXJlLgorICAgICAgICBUaGlzIHdpbGwgYmUgdXNl
ZnVsIHdoZW4gSSBhZGQgYSBwZXJmIElSQyBib3QuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5OgorICAgICAgICAoV2hvaXMuZXhlY3V0ZSk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5w
eToKKyAgICAgICAgKElSQ0NvbW1hbmRUZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2lyY2JvdC5weTogTW92ZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L3NoZXJpZmZpcmNib3QucHkuCisgICAgICAgIChFbGl6YSk6IE1vdmVkIGZyb20gaXJj
X2NvbW1hbmQuCisgICAgICAgIChFbGl6YS5fX2luaXRfXyk6CisgICAgICAgIChFbGl6YS5leGVj
dXRlKToKKyAgICAgICAgKElSQ0JvdCk6CisgICAgICAgIChJUkNCb3QuX19pbml0X18pOgorICAg
ICAgICAoSVJDQm90LmlyY19kZWxlZ2F0ZSk6CisgICAgICAgIChJUkNCb3QuX3BhcnNlX2NvbW1h
bmRfYW5kX2FyZ3MpOgorICAgICAgICAoSVJDQm90LnByb2Nlc3NfbWVzc2FnZSk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNib3RfdW5pdHRlc3QucHk6IE1vdmVkIGZy
b20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9zaGVyaWZmaXJjYm90X3VuaXR0ZXN0
LnB5LgorICAgICAgICAocnVuKToKKyAgICAgICAgKElSQ0JvdFRlc3QpOgorICAgICAgICAoSVJD
Qm90VGVzdC50ZXN0X2VsaXphKTogTW92ZWQgZnJvbSBJUkNDb21tYW5kVGVzdC4KKyAgICAgICAg
KElSQ0JvdFRlc3QudGVzdF9wYXJzZV9jb21tYW5kX2FuZF9hcmdzKToKKyAgICAgICAgKElSQ0Jv
dFRlc3QudGVzdF9leGNlcHRpb25fZHVyaW5nX2NvbW1hbmQpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3Qvc2hlcmlmZmlyY2JvdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3NoZXJpZmZpcmNib3RfdW5pdHRlc3QucHk6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3NoZXJpZmZib3Qu
cHk6CisgICAgICAgIChTaGVyaWZmQm90LmJlZ2luX3dvcmtfcXVldWUpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvd2Via2l0cHkucHlwcm9qOgorCiAyMDEyLTA4LTAxICBEaXJrIFByYW5r
ZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIG5yd3Q6IHJlZW5hYmxlIHRoZSB0
ZXN0IGZvciAtLXZlcmJvc2Ugd29ya2luZyBpbiBjaGlsZCBwcm9jZXNzZXMKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvd2Via2l0cHkucHlwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvd2Via2l0cHkucHlwcm9qCShyZXZpc2lvbiAxMjQzMzgpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3dlYmtpdHB5LnB5cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc4
LDE0ICszNzgsMTQgQEAKICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0b29sXGJvdFxmbGFreXRlc3Ry
ZXBvcnRlcl91bml0dGVzdC5weSIgLz4KICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0b29sXGJvdFxp
cmNfY29tbWFuZC5weSIgLz4KICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0b29sXGJvdFxpcmNfY29t
bWFuZF91bml0dGVzdC5weSIgLz4KKyAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0b29sXGJvdFxpcmNi
b3QucHkiIC8+CisgICAgPENvbXBpbGUgSW5jbHVkZT0idG9vbFxib3RcaXJjYm90X3VuaXR0ZXN0
LnB5IiAvPgogICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xcYm90XGxheW91dHRlc3RyZXN1bHRz
cmVhZGVyLnB5IiAvPgogICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xcYm90XGxheW91dHRlc3Ry
ZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5IiAvPgogICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xc
Ym90XHBhdGNoYW5hbHlzaXN0YXNrLnB5IiAvPgogICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xc
Ym90XHF1ZXVlZW5naW5lLnB5IiAvPgogICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xcYm90XHF1
ZXVlZW5naW5lX3VuaXR0ZXN0LnB5IiAvPgogICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xcYm90
XHNoZXJpZmYucHkiIC8+Ci0gICAgPENvbXBpbGUgSW5jbHVkZT0idG9vbFxib3Rcc2hlcmlmZmly
Y2JvdC5weSIgLz4KLSAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0b29sXGJvdFxzaGVyaWZmaXJjYm90
X3VuaXR0ZXN0LnB5IiAvPgogICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xcYm90XHNoZXJpZmZf
dW5pdHRlc3QucHkiIC8+CiAgICAgPENvbXBpbGUgSW5jbHVkZT0idG9vbFxib3Rcc3R5bGVxdWV1
ZXRhc2sucHkiIC8+CiAgICAgPENvbXBpbGUgSW5jbHVkZT0idG9vbFxib3RcX19pbml0X18ucHki
IC8+CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1h
bmQucHkJKHJldmlzaW9uIDEyNDMzOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvaXJjX2NvbW1hbmQucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwxOCArMjEwLDYgQEAgY2xh
c3MgV2hvaXMoSVJDQ29tbWFuZCk6CiAgICAgICAgIHJldHVybiAiJXM6IEknbSBub3Qgc3VyZSB3
aG8geW91IG1lYW4/ICAlcyBjb3VsZCBiZSAnJXMnLiIgJSAobmljaywgY29udHJpYnV0b3JzX3N0
cmluZywgc2VhcmNoX3N0cmluZykKIAogCi1jbGFzcyBFbGl6YShJUkNDb21tYW5kKToKLSAgICB0
aGVyYXBpc3QgPSBOb25lCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIGlmIG5v
dCBzZWxmLnRoZXJhcGlzdDoKLSAgICAgICAgICAgIGltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5
LmF1dG9pbnN0YWxsZWQuZWxpemEgYXMgZWxpemEKLSAgICAgICAgICAgIEVsaXphLnRoZXJhcGlz
dCA9IGVsaXphLmVsaXphKCkKLQotICAgIGRlZiBleGVjdXRlKHNlbGYsIG5pY2ssIGFyZ3MsIHRv
b2wsIHNoZXJpZmYpOgotICAgICAgICByZXR1cm4gIiVzOiAlcyIgJSAobmljaywgc2VsZi50aGVy
YXBpc3QucmVzcG9uZCgiICIuam9pbihhcmdzKSkpCi0KLQogY2xhc3MgQ3JlYXRlQnVnKElSQ0Nv
bW1hbmQpOgogICAgIGRlZiBleGVjdXRlKHNlbGYsIG5pY2ssIGFyZ3MsIHRvb2wsIHNoZXJpZmYp
OgogICAgICAgICBpZiBub3QgYXJnczoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvaXJjX2NvbW1hbmRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0dGVzdC5weQkocmV2aXNpb24gMTI0
MzM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZF91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDYgQEAgZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tbwogCiAKIGNsYXNzIElSQ0NvbW1hbmRUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9lbGl6YShzZWxmKToKLSAgICAgICAgZWxpemEg
PSBFbGl6YSgpCi0gICAgICAgIGVsaXphLmV4ZWN1dGUoInRvbSIsICJoaSIsIE5vbmUsIE5vbmUp
Ci0gICAgICAgIGVsaXphLmV4ZWN1dGUoInRvbSIsICJieWUiLCBOb25lLCBOb25lKQotCiAgICAg
ZGVmIHRlc3Rfd2hvaXMoc2VsZik6CiAgICAgICAgIHdob2lzID0gV2hvaXMoKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygidG9tOiBVc2FnZTogd2hvaXMgU0VBUkNIX1NUUklORyIsCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY2JvdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY2JvdC5weQkocmV2aXNpb24gMTI0
MzM4KQkoZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3NoZXJpZmZpcmNib3Qu
cHk6MTI0MzM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNib3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20g
d2Via2l0cHkudG9vbC5ib3QgaW1wb3J0IGlyY19jb21tYW5kCitmcm9tIHdlYmtpdHB5LnRvb2wu
Ym90LnF1ZXVlZW5naW5lIGltcG9ydCBUZXJtaW5hdGVRdWV1ZQorZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0LmlyYy5pcmNib3QgaW1wb3J0IElSQ0JvdERlbGVnYXRlCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi50aHJlYWQudGhyZWFkZWRtZXNzYWdlcXVldWUgaW1wb3J0IFRocmVhZGVkTWVzc2FnZVF1
ZXVlCisKKworY2xhc3MgX0lSQ1RocmVhZFRlYXJvZmYoSVJDQm90RGVsZWdhdGUpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwYXNzd29yZCwgbWVzc2FnZV9xdWV1ZSwgd2FrZXVwX2V2ZW50KToK
KyAgICAgICAgc2VsZi5fcGFzc3dvcmQgPSBwYXNzd29yZAorICAgICAgICBzZWxmLl9tZXNzYWdl
X3F1ZXVlID0gbWVzc2FnZV9xdWV1ZQorICAgICAgICBzZWxmLl93YWtldXBfZXZlbnQgPSB3YWtl
dXBfZXZlbnQKKworICAgICMgSVJDQm90RGVsZWdhdGUgbWV0aG9kcworCisgICAgZGVmIGlyY19t
ZXNzYWdlX3JlY2VpdmVkKHNlbGYsIG5pY2ssIG1lc3NhZ2UpOgorICAgICAgICBzZWxmLl9tZXNz
YWdlX3F1ZXVlLnBvc3QoW25pY2ssIG1lc3NhZ2VdKQorICAgICAgICBzZWxmLl93YWtldXBfZXZl
bnQuc2V0KCkKKworICAgIGRlZiBpcmNfbmlja25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAi
c2hlcmlmZmJvdCIKKworICAgIGRlZiBpcmNfcGFzc3dvcmQoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9wYXNzd29yZAorCisKK2NsYXNzIFNoZXJpZmZJUkNCb3Qob2JqZWN0KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgdG9vbCwgc2hlcmlmZik6CisgICAgICAgIHNlbGYuX3Rvb2wgPSB0
b29sCisgICAgICAgIHNlbGYuX3NoZXJpZmYgPSBzaGVyaWZmCisgICAgICAgIHNlbGYuX21lc3Nh
Z2VfcXVldWUgPSBUaHJlYWRlZE1lc3NhZ2VRdWV1ZSgpCisKKyAgICBkZWYgaXJjX2RlbGVnYXRl
KHNlbGYpOgorICAgICAgICByZXR1cm4gX0lSQ1RocmVhZFRlYXJvZmYoc2VsZi5fdG9vbC5pcmNf
cGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tZXNzYWdl
X3F1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdG9vbC53YWtl
dXBfZXZlbnQpCisKKyAgICBkZWYgX3BhcnNlX2NvbW1hbmRfYW5kX2FyZ3Moc2VsZiwgcmVxdWVz
dCk6CisgICAgICAgIHRva2VuaXplZF9yZXF1ZXN0ID0gcmVxdWVzdC5zdHJpcCgpLnNwbGl0KCIg
IikKKyAgICAgICAgY29tbWFuZCA9IGlyY19jb21tYW5kLmNvbW1hbmRzLmdldCh0b2tlbml6ZWRf
cmVxdWVzdFswXSkKKyAgICAgICAgYXJncyA9IHRva2VuaXplZF9yZXF1ZXN0WzE6XQorICAgICAg
ICBpZiBub3QgY29tbWFuZDoKKyAgICAgICAgICAgICMgR2l2ZSB0aGUgcGVvcGxlcyBzb21lb25l
IHRvIHRhbGsgd2l0aC4KKyAgICAgICAgICAgIGNvbW1hbmQgPSBpcmNfY29tbWFuZC5FbGl6YQor
ICAgICAgICAgICAgYXJncyA9IHRva2VuaXplZF9yZXF1ZXN0CisgICAgICAgIHJldHVybiAoY29t
bWFuZCwgYXJncykKKworICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcmVxdWVzdGVyX25p
Y2ssIHJlcXVlc3QpOgorICAgICAgICBjb21tYW5kLCBhcmdzID0gc2VsZi5fcGFyc2VfY29tbWFu
ZF9hbmRfYXJncyhyZXF1ZXN0KQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwb25zZSA9
IGNvbW1hbmQoKS5leGVjdXRlKHJlcXVlc3Rlcl9uaWNrLCBhcmdzLCBzZWxmLl90b29sLCBzZWxm
Ll9zaGVyaWZmKQorICAgICAgICAgICAgaWYgcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fdG9vbC5pcmMoKS5wb3N0KHJlc3BvbnNlKQorICAgICAgICBleGNlcHQgVGVybWluYXRlUXVl
dWU6CisgICAgICAgICAgICByYWlzZQorICAgICAgICAjIFRoaXMgd2lsbCBjYXRjaCBldmVyeXRo
aW5nIGVsc2UuIFN5c3RlbUV4aXQgYW5kIEtleWJvYXJkSW50ZXJydXB0IGFyZSBub3Qgc3ViY2xh
c3NlcyBvZiBFeGNlcHRpb24sIHNvIHdlIHdvbid0IGNhdGNoIHRob3NlLgorICAgICAgICBleGNl
cHQgRXhjZXB0aW9uLCBlOgorICAgICAgICAgICAgc2VsZi5fdG9vbC5pcmMoKS5wb3N0KCJFeGNl
cHRpb24gZXhlY3V0aW5nIGNvbW1hbmQ6ICVzIiAlIGUpCisKKyAgICBkZWYgcHJvY2Vzc19wZW5k
aW5nX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICAobWVzc2FnZXMsIGlzX3J1bm5pbmcpID0gc2Vs
Zi5fbWVzc2FnZV9xdWV1ZS50YWtlX2FsbCgpCisgICAgICAgIGZvciBtZXNzYWdlIGluIG1lc3Nh
Z2VzOgorICAgICAgICAgICAgKG5pY2ssIHJlcXVlc3QpID0gbWVzc2FnZQorICAgICAgICAgICAg
c2VsZi5wcm9jZXNzX21lc3NhZ2UobmljaywgcmVxdWVzdCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvaXJjYm90LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvaXJjYm90LnB5CShyZXZpc2lvbiAxMjQzMzgpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY2JvdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjYs
OCArMjYsOCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotZnJvbSB3ZWJraXRw
eS50b29sLmJvdCBpbXBvcnQgaXJjX2NvbW1hbmQKIGZyb20gd2Via2l0cHkudG9vbC5ib3QucXVl
dWVlbmdpbmUgaW1wb3J0IFRlcm1pbmF0ZVF1ZXVlCitmcm9tIHdlYmtpdHB5LnRvb2wuYm90Lmly
Y19jb21tYW5kIGltcG9ydCBJUkNDb21tYW5kCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuaXJj
LmlyY2JvdCBpbXBvcnQgSVJDQm90RGVsZWdhdGUKIGZyb20gd2Via2l0cHkuY29tbW9uLnRocmVh
ZC50aHJlYWRlZG1lc3NhZ2VxdWV1ZSBpbXBvcnQgVGhyZWFkZWRNZXNzYWdlUXVldWUKIApAQCAt
NTEsMzEgKzUxLDQ0IEBAIGNsYXNzIF9JUkNUaHJlYWRUZWFyb2ZmKElSQ0JvdERlbGVnYXRlKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX3Bhc3N3b3JkCiAKIAotY2xhc3MgU2hlcmlmZklSQ0JvdChv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b29sLCBzaGVyaWZmKToKK2NsYXNzIEVs
aXphKElSQ0NvbW1hbmQpOgorICAgIHRoZXJhcGlzdCA9IE5vbmUKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYudGhlcmFwaXN0OgorICAgICAgICAgICAgaW1w
b3J0IHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5lbGl6YSBhcyBlbGl6YQorICAg
ICAgICAgICAgRWxpemEudGhlcmFwaXN0ID0gZWxpemEuZWxpemEoKQorCisgICAgZGVmIGV4ZWN1
dGUoc2VsZiwgbmljaywgYXJncywgdG9vbCwgc2hlcmlmZik6CisgICAgICAgIHJldHVybiAiJXM6
ICVzIiAlIChuaWNrLCBzZWxmLnRoZXJhcGlzdC5yZXNwb25kKCIgIi5qb2luKGFyZ3MpKSkKKwor
CitjbGFzcyBJUkNCb3Qob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdG9v
bCwgYWdlbnQsIGNvbW1hbmRzKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICAg
c2VsZi5fdG9vbCA9IHRvb2wKLSAgICAgICAgc2VsZi5fc2hlcmlmZiA9IHNoZXJpZmYKKyAgICAg
ICAgc2VsZi5fYWdlbnQgPSBhZ2VudAogICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlID0gVGhy
ZWFkZWRNZXNzYWdlUXVldWUoKQorICAgICAgICBzZWxmLl9jb21tYW5kcyA9IGNvbW1hbmRzCiAK
ICAgICBkZWYgaXJjX2RlbGVnYXRlKHNlbGYpOgotICAgICAgICByZXR1cm4gX0lSQ1RocmVhZFRl
YXJvZmYoc2VsZi5fdG9vbC5pcmNfcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fdG9vbC53YWtldXBfZXZlbnQpCisgICAgICAgIHJldHVybiBfSVJDVGhyZWFk
VGVhcm9mZihzZWxmLl9uYW1lLCBzZWxmLl90b29sLmlyY19wYXNzd29yZCwKKyAgICAgICAgICAg
IHNlbGYuX21lc3NhZ2VfcXVldWUsIHNlbGYuX3Rvb2wud2FrZXVwX2V2ZW50KQogCiAgICAgZGVm
IF9wYXJzZV9jb21tYW5kX2FuZF9hcmdzKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICB0b2tlbml6
ZWRfcmVxdWVzdCA9IHJlcXVlc3Quc3RyaXAoKS5zcGxpdCgiICIpCi0gICAgICAgIGNvbW1hbmQg
PSBpcmNfY29tbWFuZC5jb21tYW5kcy5nZXQodG9rZW5pemVkX3JlcXVlc3RbMF0pCisgICAgICAg
IGNvbW1hbmQgPSBzZWxmLl9jb21tYW5kcy5nZXQodG9rZW5pemVkX3JlcXVlc3RbMF0pCiAgICAg
ICAgIGFyZ3MgPSB0b2tlbml6ZWRfcmVxdWVzdFsxOl0KICAgICAgICAgaWYgbm90IGNvbW1hbmQ6
CiAgICAgICAgICAgICAjIEdpdmUgdGhlIHBlb3BsZXMgc29tZW9uZSB0byB0YWxrIHdpdGguCi0g
ICAgICAgICAgICBjb21tYW5kID0gaXJjX2NvbW1hbmQuRWxpemEKKyAgICAgICAgICAgIGNvbW1h
bmQgPSBFbGl6YQogICAgICAgICAgICAgYXJncyA9IHRva2VuaXplZF9yZXF1ZXN0CiAgICAgICAg
IHJldHVybiAoY29tbWFuZCwgYXJncykKIAogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwg
cmVxdWVzdGVyX25pY2ssIHJlcXVlc3QpOgogICAgICAgICBjb21tYW5kLCBhcmdzID0gc2VsZi5f
cGFyc2VfY29tbWFuZF9hbmRfYXJncyhyZXF1ZXN0KQogICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICByZXNwb25zZSA9IGNvbW1hbmQoKS5leGVjdXRlKHJlcXVlc3Rlcl9uaWNrLCBhcmdzLCBzZWxm
Ll90b29sLCBzZWxmLl9zaGVyaWZmKQorICAgICAgICAgICAgcmVzcG9uc2UgPSBjb21tYW5kKCku
ZXhlY3V0ZShyZXF1ZXN0ZXJfbmljaywgYXJncywgc2VsZi5fdG9vbCwgc2VsZi5fYWdlbnQpCiAg
ICAgICAgICAgICBpZiByZXNwb25zZToKICAgICAgICAgICAgICAgICBzZWxmLl90b29sLmlyYygp
LnBvc3QocmVzcG9uc2UpCiAgICAgICAgIGV4Y2VwdCBUZXJtaW5hdGVRdWV1ZToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjYm90X3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjYm90X3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAxMjQzMzgpCShmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
c2hlcmlmZmlyY2JvdF91bml0dGVzdC5weToxMjQzMzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2lyY2JvdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE1NyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgcmFu
ZG9tCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBP
dXRwdXRDYXB0dXJlCitmcm9tIHdlYmtpdHB5LnRvb2wuYm90IGltcG9ydCBpcmNfY29tbWFuZAor
ZnJvbSB3ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgVGVybWluYXRlUXVldWUK
K2Zyb20gd2Via2l0cHkudG9vbC5ib3Quc2hlcmlmZiBpbXBvcnQgU2hlcmlmZgorZnJvbSB3ZWJr
aXRweS50b29sLmJvdC5zaGVyaWZmaXJjYm90IGltcG9ydCBTaGVyaWZmSVJDQm90Citmcm9tIHdl
YmtpdHB5LnRvb2wuYm90LnNoZXJpZmZfdW5pdHRlc3QgaW1wb3J0IE1vY2tTaGVyaWZmQm90Citm
cm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCisKKworZGVmIHJ1biht
ZXNzYWdlKToKKyAgICB0b29sID0gTW9ja1Rvb2woKQorICAgIHRvb2wuZW5zdXJlX2lyY19jb25u
ZWN0ZWQoTm9uZSkKKyAgICBib3QgPSBTaGVyaWZmSVJDQm90KHRvb2wsIFNoZXJpZmYodG9vbCwg
TW9ja1NoZXJpZmZCb3QoKSkpCisgICAgYm90Ll9tZXNzYWdlX3F1ZXVlLnBvc3QoWyJtb2NrX25p
Y2siLCBtZXNzYWdlXSkKKyAgICBib3QucHJvY2Vzc19wZW5kaW5nX21lc3NhZ2VzKCkKKworCitj
bGFzcyBTaGVyaWZmSVJDQm90VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rf
cGFyc2VfY29tbWFuZF9hbmRfYXJncyhzZWxmKToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkK
KyAgICAgICAgYm90ID0gU2hlcmlmZklSQ0JvdCh0b29sLCBTaGVyaWZmKHRvb2wsIE1vY2tTaGVy
aWZmQm90KCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvdC5fcGFyc2VfY29tbWFuZF9h
bmRfYXJncygiIiksIChpcmNfY29tbWFuZC5FbGl6YSwgWyIiXSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYm90Ll9wYXJzZV9jb21tYW5kX2FuZF9hcmdzKCIgICAiKSwgKGlyY19jb21tYW5k
LkVsaXphLCBbIiJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib3QuX3BhcnNlX2NvbW1h
bmRfYW5kX2FyZ3MoIiBoaSAiKSwgKGlyY19jb21tYW5kLkhpLCBbXSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYm90Ll9wYXJzZV9jb21tYW5kX2FuZF9hcmdzKCIgaGkgdGhlcmUgIiksIChp
cmNfY29tbWFuZC5IaSwgWyJ0aGVyZSJdKSkKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9kdXJp
bmdfY29tbWFuZChzZWxmKToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9v
bC5lbnN1cmVfaXJjX2Nvbm5lY3RlZChOb25lKQorICAgICAgICBib3QgPSBTaGVyaWZmSVJDQm90
KHRvb2wsIFNoZXJpZmYodG9vbCwgTW9ja1NoZXJpZmZCb3QoKSkpCisKKyAgICAgICAgY2xhc3Mg
Q29tbWFuZFdpdGhFeGNlcHRpb24ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBleGVjdXRlKHNl
bGYsIG5pY2ssIGFyZ3MsIHRvb2wsIHNoZXJpZmYpOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigibW9ja19leGNlcHRpb24iKQorCisgICAgICAgIGJvdC5fcGFyc2VfY29tbWFuZF9h
bmRfYXJncyA9IGxhbWJkYSByZXF1ZXN0OiAoQ29tbWFuZFdpdGhFeGNlcHRpb24sIFtdKQorICAg
ICAgICBleHBlY3RlZF9zdGRlcnIgPSAnTU9DSzogaXJjLnBvc3Q6IEV4Y2VwdGlvbiBleGVjdXRp
bmcgY29tbWFuZDogbW9ja19leGNlcHRpb25cbicKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFz
c2VydF9vdXRwdXRzKHNlbGYsIGJvdC5wcm9jZXNzX21lc3NhZ2UsIGFyZ3M9WyJtb2NrX25pY2si
LCAiaWdub3JlZCBtZXNzYWdlIl0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisK
KyAgICAgICAgY2xhc3MgQ29tbWFuZFdpdGhFeGNlcHRpb24ob2JqZWN0KToKKyAgICAgICAgICAg
IGRlZiBleGVjdXRlKHNlbGYsIG5pY2ssIGFyZ3MsIHRvb2wsIHNoZXJpZmYpOgorICAgICAgICAg
ICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0KCkKKworICAgICAgICBib3QuX3BhcnNlX2Nv
bW1hbmRfYW5kX2FyZ3MgPSBsYW1iZGEgcmVxdWVzdDogKENvbW1hbmRXaXRoRXhjZXB0aW9uLCBb
XSkKKyAgICAgICAgIyBLZXlib2FyZEludGVycnVwdCBhbmQgU3lzdGVtRXhpdCBhcmUgbm90IHN1
YmNsYXNzZXMgb2YgRXhjZXB0aW9uIGFuZCB0aHVzIGNvcnJlY3RseSB3aWxsIG5vdCBiZSBjYXVn
aHQuCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBib3QucHJv
Y2Vzc19tZXNzYWdlLCBhcmdzPVsibW9ja19uaWNrIiwgImlnbm9yZWQgbWVzc2FnZSJdLCBleHBl
Y3RlZF9leGNlcHRpb249S2V5Ym9hcmRJbnRlcnJ1cHQpCisKKyAgICBkZWYgdGVzdF9oaShzZWxm
KToKKyAgICAgICAgcmFuZG9tLnNlZWQoMjMzMjQpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9
ICdNT0NLOiBpcmMucG9zdDogIk9ubHkgeW91IGNhbiBwcmV2ZW50IGZvcmVzdCBmaXJlcy4iIC0t
IFNtb2tleSB0aGUgQmVhclxuJworICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1
dHMoc2VsZiwgcnVuLCBhcmdzPVsiaGkiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVy
cikKKworICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6CisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9
ICJNT0NLOiBpcmMucG9zdDogbW9ja19uaWNrOiBBdmFpbGFibGUgY29tbWFuZHM6IGNyZWF0ZS1i
dWcsIGhlbHAsIGhpLCByZXN0YXJ0LCByb2xsLWNocm9taXVtLWRlcHMsIHJvbGxvdXQsIHdob2lz
XG4iCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sIGFy
Z3M9WyJoZWxwIl0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKKyAgICBkZWYg
dGVzdF9yZXN0YXJ0KHNlbGYpOgorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSzogaXJj
LnBvc3Q6IFJlc3RhcnRpbmcuLi5cbiIKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9v
dXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJlc3RhcnQiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVj
dGVkX3N0ZGVyciwgZXhwZWN0ZWRfZXhjZXB0aW9uPVRlcm1pbmF0ZVF1ZXVlKQorCisgICAgZGVm
IHRlc3Rfcm9sbG91dChzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0s6IGly
Yy5wb3N0OiBtb2NrX25pY2s6IFByZXBhcmluZyByb2xsb3V0IGZvciBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8yMTY1NCAuLi5cbk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2ssIGFi
YXJ0aCwgZGFyaW4sIGVzZWlkZWw6IENyZWF0ZWQgcm9sbG91dDogaHR0cDovL2V4YW1wbGUuY29t
LzM2OTM2XG4iCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBy
dW4sIGFyZ3M9WyJyb2xsb3V0IDIxNjU0IFRoaXMgcGF0Y2ggYnJva2UgdGhlIHdvcmxkIl0sIGV4
cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKKyAgICBkZWYgdGVzdF9yZXZlcnQoc2Vs
Zik6CisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLOiBpcmMucG9zdDogbW9ja19uaWNr
OiBQcmVwYXJpbmcgcm9sbG91dCBmb3IgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MjE2NTQgLi4uXG5NT0NLOiBpcmMucG9zdDogbW9ja19uaWNrLCBhYmFydGgsIGRhcmluLCBlc2Vp
ZGVsOiBDcmVhdGVkIHJvbGxvdXQ6IGh0dHA6Ly9leGFtcGxlLmNvbS8zNjkzNlxuIgorICAgICAg
ICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcnVuLCBhcmdzPVsicmV2ZXJ0
IDIxNjU0IFRoaXMgcGF0Y2ggYnJva2UgdGhlIHdvcmxkIl0sIGV4cGVjdGVkX3N0ZGVycj1leHBl
Y3RlZF9zdGRlcnIpCisKKyAgICBkZWYgdGVzdF9yb2xsX2Nocm9taXVtX2RlcHMoc2VsZik6Cisg
ICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLOiBpcmMucG9zdDogbW9ja19uaWNrOiBSb2xs
aW5nIENocm9taXVtIERFUFMgdG8gcjIxNjU0XG5NT0NLOiBpcmMucG9zdDogbW9ja19uaWNrOiBD
cmVhdGVkIERFUFMgcm9sbDogaHR0cDovL2V4YW1wbGUuY29tLzM2OTM2XG4iCisgICAgICAgIE91
dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sIGFyZ3M9WyJyb2xsLWNocm9t
aXVtLWRlcHMgMjE2NTQiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAg
IGRlZiB0ZXN0X3JvbGxfY2hyb21pdW1fZGVwc190b19sa2dyKHNlbGYpOgorICAgICAgICBleHBl
Y3RlZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUm9sbGluZyBDaHJvbWl1
bSBERVBTIHRvIGxhc3Qta25vd24gZ29vZCByZXZpc2lvblxuTU9DSzogaXJjLnBvc3Q6IG1vY2tf
bmljazogQ3JlYXRlZCBERVBTIHJvbGw6IGh0dHA6Ly9leGFtcGxlLmNvbS8zNjkzNlxuIgorICAg
ICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcnVuLCBhcmdzPVsicm9s
bC1jaHJvbWl1bS1kZXBzIl0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKKyAg
ICBkZWYgdGVzdF9tdWx0aV9yb2xsb3V0KHNlbGYpOgorICAgICAgICBleHBlY3RlZF9zdGRlcnIg
PSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJvbGxvdXQgZm9yIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU0LCBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8yMTY1NSwgYW5kIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIx
NjU2IC4uLlxuTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljaywgYWJhcnRoLCBkYXJpbiwgZXNlaWRl
bDogQ3JlYXRlZCByb2xsb3V0OiBodHRwOi8vZXhhbXBsZS5jb20vMzY5MzZcbiIKKyAgICAgICAg
T3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJvbGxvdXQg
MjE2NTQgMjE2NTUgMjE2NTYgVGhpcyAyMTY1NCBwYXRjaCBicm9rZSB0aGUgd29ybGQiXSwgZXhw
ZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAgIGRlZiB0ZXN0X3JvbGxvdXRfd2l0
aF9yX2luX3N2bl9yZXZpc2lvbihzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1P
Q0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFByZXBhcmluZyByb2xsb3V0IGZvciBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NCAuLi5cbk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25p
Y2ssIGFiYXJ0aCwgZGFyaW4sIGVzZWlkZWw6IENyZWF0ZWQgcm9sbG91dDogaHR0cDovL2V4YW1w
bGUuY29tLzM2OTM2XG4iCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhz
ZWxmLCBydW4sIGFyZ3M9WyJyb2xsb3V0IHIyMTY1NCBUaGlzIHBhdGNoIGJyb2tlIHRoZSB3b3Js
ZCJdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIHRlc3RfbXVs
dGlfcm9sbG91dF93aXRoX3JfaW5fc3ZuX3JldmlzaW9uKHNlbGYpOgorICAgICAgICBleHBlY3Rl
ZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJvbGxvdXQg
Zm9yIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU0LCBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NSwgYW5kIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzIxNjU2IC4uLlxuTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljaywgYWJhcnRoLCBkYXJp
biwgZXNlaWRlbDogQ3JlYXRlZCByb2xsb3V0OiBodHRwOi8vZXhhbXBsZS5jb20vMzY5MzZcbiIK
KyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1b
InJvbGxvdXQgcjIxNjU0IDIxNjU1IHIyMTY1NiBUaGlzIHIyMTY1NCBwYXRjaCBicm9rZSB0aGUg
d29ybGQiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAgIGRlZiB0ZXN0
X3JvbGxvdXRfYmFuYW5hcyhzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0s6
IGlyYy5wb3N0OiBtb2NrX25pY2s6IFVzYWdlOiByb2xsb3V0IFNWTl9SRVZJU0lPTiBbU1ZOX1JF
VklTSU9OU10gUkVBU09OXG4iCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0
cyhzZWxmLCBydW4sIGFyZ3M9WyJyb2xsb3V0IGJhbmFuYXMiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4
cGVjdGVkX3N0ZGVycikKKworICAgIGRlZiB0ZXN0X3JvbGxvdXRfaW52YWxpZGF0ZV9yZXZpc2lv
bihzZWxmKToKKyAgICAgICAgIyBXaGVuIGZvbGtzIHBhc3MganVuayBhcmd1bWVudHMsIHdlIHNo
b3VsZCBqdXN0IHNwaXQgdGhlIHVzYWdlIGJhY2sgYXQgdGhlbS4KKyAgICAgICAgZXhwZWN0ZWRf
c3RkZXJyID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFVzYWdlOiByb2xsb3V0IFNWTl9S
RVZJU0lPTiBbU1ZOX1JFVklTSU9OU10gUkVBU09OXG4iCisgICAgICAgIE91dHB1dENhcHR1cmUo
KS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcmdzPVsicm9sbG91dCAtLWNvbXBvbmVudD1Ub29scyAyMTY1NCJdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyPWV4cGVj
dGVkX3N0ZGVycikKKworICAgIGRlZiB0ZXN0X3JvbGxvdXRfaW52YWxpZGF0ZV9yZWFzb24oc2Vs
Zik6CisgICAgICAgICMgRklYTUU6IEknbSBzbGlnaHRseSBjb25mdXNlZCBhcyB0byB3aHkgdGhp
cyBkb2Vzbid0IHJldHVybiB0aGUgVVNBR0UgbWVzc2FnZS4KKyAgICAgICAgZXhwZWN0ZWRfc3Rk
ZXJyID0gIiIiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJvbGxvdXQgZm9y
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU0IC4uLgorTU9DSzogaXJjLnBv
c3Q6IG1vY2tfbmljaywgYWJhcnRoLCBkYXJpbiwgZXNlaWRlbDogRmFpbGVkIHRvIGNyZWF0ZSBy
b2xsb3V0IHBhdGNoOgorTU9DSzogaXJjLnBvc3Q6IFRoZSByb2xsb3V0IHJlYXNvbiBtYXkgbm90
IGJlZ2luIHdpdGggLSAoXCItYmFkIChSZXF1ZXN0ZWQgYnkgbW9ja19uaWNrIG9uICN3ZWJraXQp
LlwiKS4KKyIiIgorICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwg
cnVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1bInJvbGxv
dXQgMjE2NTQgLWJhZCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAgIGRlZiB0ZXN0X211bHRpX3Jv
bGxvdXRfaW52YWxpZGF0ZV9yZWFzb24oc2VsZik6CisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9
ICIiIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFByZXBhcmluZyByb2xsb3V0IGZvciBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NCwgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMjE2NTUsIGFuZCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8y
MTY1NiAuLi4KK01PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2ssIGFiYXJ0aCwgZGFyaW4sIGVzZWlk
ZWw6IEZhaWxlZCB0byBjcmVhdGUgcm9sbG91dCBwYXRjaDoKK01PQ0s6IGlyYy5wb3N0OiBUaGUg
cm9sbG91dCByZWFzb24gbWF5IG5vdCBiZWdpbiB3aXRoIC0gKFwiLWJhZCAoUmVxdWVzdGVkIGJ5
IG1vY2tfbmljayBvbiAjd2Via2l0KS5cIikuCisiIiIKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgp
LmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3M9WyJyb2xsb3V0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIyMTY1NCAyMTY1NSByMjE2NTYgLWJhZCJdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVy
cikKKworICAgIGRlZiB0ZXN0X3JvbGxvdXRfbm9fcmVhc29uKHNlbGYpOgorICAgICAgICBleHBl
Y3RlZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogVXNhZ2U6IHJvbGxvdXQg
U1ZOX1JFVklTSU9OIFtTVk5fUkVWSVNJT05TXSBSRUFTT05cbiIKKyAgICAgICAgT3V0cHV0Q2Fw
dHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJvbGxvdXQgMjE2NTQiXSwg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworICAgIGRlZiB0ZXN0X211bHRpX3Jv
bGxvdXRfbm9fcmVhc29uKHNlbGYpOgorICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSzog
aXJjLnBvc3Q6IG1vY2tfbmljazogVXNhZ2U6IHJvbGxvdXQgU1ZOX1JFVklTSU9OIFtTVk5fUkVW
SVNJT05TXSBSRUFTT05cbiIKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRz
KHNlbGYsIHJ1biwgYXJncz1bInJvbGxvdXQgMjE2NTQgMjE2NTUgcjIxNjU2Il0sIGV4cGVjdGVk
X3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2lyY2JvdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2lyY2JvdF91bml0dGVzdC5weQkocmV2aXNpb24gMTI0MzM4KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNib3RfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDggQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91
dHB1dGNhcHR1cgogZnJvbSB3ZWJraXRweS50b29sLmJvdCBpbXBvcnQgaXJjX2NvbW1hbmQKIGZy
b20gd2Via2l0cHkudG9vbC5ib3QucXVldWVlbmdpbmUgaW1wb3J0IFRlcm1pbmF0ZVF1ZXVlCiBm
cm9tIHdlYmtpdHB5LnRvb2wuYm90LnNoZXJpZmYgaW1wb3J0IFNoZXJpZmYKLWZyb20gd2Via2l0
cHkudG9vbC5ib3Quc2hlcmlmZmlyY2JvdCBpbXBvcnQgU2hlcmlmZklSQ0JvdAorZnJvbSB3ZWJr
aXRweS50b29sLmJvdC5pcmNib3QgaW1wb3J0IElSQ0JvdAorZnJvbSB3ZWJraXRweS50b29sLmJv
dC5pcmNib3QgaW1wb3J0IEVsaXphCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LnNoZXJpZmZfdW5p
dHRlc3QgaW1wb3J0IE1vY2tTaGVyaWZmQm90CiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wg
aW1wb3J0IE1vY2tUb29sCiAKQEAgLTQxLDI0ICs0MiwyOSBAQCBmcm9tIHdlYmtpdHB5LnRvb2wu
bW9ja3Rvb2wgaW1wb3J0IE1vY2tUCiBkZWYgcnVuKG1lc3NhZ2UpOgogICAgIHRvb2wgPSBNb2Nr
VG9vbCgpCiAgICAgdG9vbC5lbnN1cmVfaXJjX2Nvbm5lY3RlZChOb25lKQotICAgIGJvdCA9IFNo
ZXJpZmZJUkNCb3QodG9vbCwgU2hlcmlmZih0b29sLCBNb2NrU2hlcmlmZkJvdCgpKSkKKyAgICBi
b3QgPSBJUkNCb3QoInNoZXJpZmZib3QiLCB0b29sLCBTaGVyaWZmKHRvb2wsIE1vY2tTaGVyaWZm
Qm90KCkpLCBpcmNfY29tbWFuZC5jb21tYW5kcykKICAgICBib3QuX21lc3NhZ2VfcXVldWUucG9z
dChbIm1vY2tfbmljayIsIG1lc3NhZ2VdKQogICAgIGJvdC5wcm9jZXNzX3BlbmRpbmdfbWVzc2Fn
ZXMoKQogCiAKLWNsYXNzIFNoZXJpZmZJUkNCb3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2Ns
YXNzIElSQ0JvdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2VsaXphKHNl
bGYpOgorICAgICAgICBlbGl6YSA9IEVsaXphKCkKKyAgICAgICAgZWxpemEuZXhlY3V0ZSgidG9t
IiwgImhpIiwgTm9uZSwgTm9uZSkKKyAgICAgICAgZWxpemEuZXhlY3V0ZSgidG9tIiwgImJ5ZSIs
IE5vbmUsIE5vbmUpCisKICAgICBkZWYgdGVzdF9wYXJzZV9jb21tYW5kX2FuZF9hcmdzKHNlbGYp
OgogICAgICAgICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICBib3QgPSBTaGVyaWZmSVJDQm90
KHRvb2wsIFNoZXJpZmYodG9vbCwgTW9ja1NoZXJpZmZCb3QoKSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYm90Ll9wYXJzZV9jb21tYW5kX2FuZF9hcmdzKCIiKSwgKGlyY19jb21tYW5kLkVs
aXphLCBbIiJdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib3QuX3BhcnNlX2NvbW1hbmRf
YW5kX2FyZ3MoIiAgICIpLCAoaXJjX2NvbW1hbmQuRWxpemEsIFsiIl0pKQorICAgICAgICBib3Qg
PSBJUkNCb3QoInNoZXJpZmZib3QiLCB0b29sLCBTaGVyaWZmKHRvb2wsIE1vY2tTaGVyaWZmQm90
KCkpLCBpcmNfY29tbWFuZC5jb21tYW5kcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib3Qu
X3BhcnNlX2NvbW1hbmRfYW5kX2FyZ3MoIiIpLCAoRWxpemEsIFsiIl0pKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJvdC5fcGFyc2VfY29tbWFuZF9hbmRfYXJncygiICAgIiksIChFbGl6YSwg
WyIiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm90Ll9wYXJzZV9jb21tYW5kX2FuZF9h
cmdzKCIgaGkgIiksIChpcmNfY29tbWFuZC5IaSwgW10pKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJvdC5fcGFyc2VfY29tbWFuZF9hbmRfYXJncygiIGhpIHRoZXJlICIpLCAoaXJjX2NvbW1h
bmQuSGksIFsidGhlcmUiXSkpCiAKICAgICBkZWYgdGVzdF9leGNlcHRpb25fZHVyaW5nX2NvbW1h
bmQoc2VsZik6CiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCiAgICAgICAgIHRvb2wuZW5zdXJl
X2lyY19jb25uZWN0ZWQoTm9uZSkKLSAgICAgICAgYm90ID0gU2hlcmlmZklSQ0JvdCh0b29sLCBT
aGVyaWZmKHRvb2wsIE1vY2tTaGVyaWZmQm90KCkpKQorICAgICAgICBib3QgPSBJUkNCb3QoInNo
ZXJpZmZib3QiLCB0b29sLCBTaGVyaWZmKHRvb2wsIE1vY2tTaGVyaWZmQm90KCkpLCBpcmNfY29t
bWFuZC5jb21tYW5kcykKIAogICAgICAgICBjbGFzcyBDb21tYW5kV2l0aEV4Y2VwdGlvbihvYmpl
Y3QpOgogICAgICAgICAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgbmljaywgYXJncywgdG9vbCwgc2hl
cmlmZik6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3NoZXJpZmZpcmNi
b3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9zaGVy
aWZmaXJjYm90LnB5CShyZXZpc2lvbiAxMjQzMzgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L3NoZXJpZmZpcmNib3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsOTEgKzAsMCBA
QAotIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gd2Via2l0cHkudG9vbC5ib3QgaW1wb3J0IGlyY19j
b21tYW5kCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnF1ZXVlZW5naW5lIGltcG9ydCBUZXJtaW5h
dGVRdWV1ZQotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmlyYy5pcmNib3QgaW1wb3J0IElSQ0Jv
dERlbGVnYXRlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi50aHJlYWQudGhyZWFkZWRtZXNzYWdlcXVl
dWUgaW1wb3J0IFRocmVhZGVkTWVzc2FnZVF1ZXVlCi0KLQotY2xhc3MgX0lSQ1RocmVhZFRlYXJv
ZmYoSVJDQm90RGVsZWdhdGUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXNzd29yZCwgbWVz
c2FnZV9xdWV1ZSwgd2FrZXVwX2V2ZW50KToKLSAgICAgICAgc2VsZi5fcGFzc3dvcmQgPSBwYXNz
d29yZAotICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlID0gbWVzc2FnZV9xdWV1ZQotICAgICAg
ICBzZWxmLl93YWtldXBfZXZlbnQgPSB3YWtldXBfZXZlbnQKLQotICAgICMgSVJDQm90RGVsZWdh
dGUgbWV0aG9kcwotCi0gICAgZGVmIGlyY19tZXNzYWdlX3JlY2VpdmVkKHNlbGYsIG5pY2ssIG1l
c3NhZ2UpOgotICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlLnBvc3QoW25pY2ssIG1lc3NhZ2Vd
KQotICAgICAgICBzZWxmLl93YWtldXBfZXZlbnQuc2V0KCkKLQotICAgIGRlZiBpcmNfbmlja25h
bWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAic2hlcmlmZmJvdCIKLQotICAgIGRlZiBpcmNfcGFz
c3dvcmQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9wYXNzd29yZAotCi0KLWNsYXNzIFNo
ZXJpZmZJUkNCb3Qob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdG9vbCwgc2hlcmlm
Zik6Ci0gICAgICAgIHNlbGYuX3Rvb2wgPSB0b29sCi0gICAgICAgIHNlbGYuX3NoZXJpZmYgPSBz
aGVyaWZmCi0gICAgICAgIHNlbGYuX21lc3NhZ2VfcXVldWUgPSBUaHJlYWRlZE1lc3NhZ2VRdWV1
ZSgpCi0KLSAgICBkZWYgaXJjX2RlbGVnYXRlKHNlbGYpOgotICAgICAgICByZXR1cm4gX0lSQ1Ro
cmVhZFRlYXJvZmYoc2VsZi5fdG9vbC5pcmNfcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9tZXNzYWdlX3F1ZXVlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fdG9vbC53YWtldXBfZXZlbnQpCi0KLSAgICBkZWYgX3BhcnNlX2Nv
bW1hbmRfYW5kX2FyZ3Moc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHRva2VuaXplZF9yZXF1ZXN0
ID0gcmVxdWVzdC5zdHJpcCgpLnNwbGl0KCIgIikKLSAgICAgICAgY29tbWFuZCA9IGlyY19jb21t
YW5kLmNvbW1hbmRzLmdldCh0b2tlbml6ZWRfcmVxdWVzdFswXSkKLSAgICAgICAgYXJncyA9IHRv
a2VuaXplZF9yZXF1ZXN0WzE6XQotICAgICAgICBpZiBub3QgY29tbWFuZDoKLSAgICAgICAgICAg
ICMgR2l2ZSB0aGUgcGVvcGxlcyBzb21lb25lIHRvIHRhbGsgd2l0aC4KLSAgICAgICAgICAgIGNv
bW1hbmQgPSBpcmNfY29tbWFuZC5FbGl6YQotICAgICAgICAgICAgYXJncyA9IHRva2VuaXplZF9y
ZXF1ZXN0Ci0gICAgICAgIHJldHVybiAoY29tbWFuZCwgYXJncykKLQotICAgIGRlZiBwcm9jZXNz
X21lc3NhZ2Uoc2VsZiwgcmVxdWVzdGVyX25pY2ssIHJlcXVlc3QpOgotICAgICAgICBjb21tYW5k
LCBhcmdzID0gc2VsZi5fcGFyc2VfY29tbWFuZF9hbmRfYXJncyhyZXF1ZXN0KQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IGNvbW1hbmQoKS5leGVjdXRlKHJlcXVlc3Rlcl9u
aWNrLCBhcmdzLCBzZWxmLl90b29sLCBzZWxmLl9zaGVyaWZmKQotICAgICAgICAgICAgaWYgcmVz
cG9uc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5pcmMoKS5wb3N0KHJlc3BvbnNlKQot
ICAgICAgICBleGNlcHQgVGVybWluYXRlUXVldWU6Ci0gICAgICAgICAgICByYWlzZQotICAgICAg
ICAjIFRoaXMgd2lsbCBjYXRjaCBldmVyeXRoaW5nIGVsc2UuIFN5c3RlbUV4aXQgYW5kIEtleWJv
YXJkSW50ZXJydXB0IGFyZSBub3Qgc3ViY2xhc3NlcyBvZiBFeGNlcHRpb24sIHNvIHdlIHdvbid0
IGNhdGNoIHRob3NlLgotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
c2VsZi5fdG9vbC5pcmMoKS5wb3N0KCJFeGNlcHRpb24gZXhlY3V0aW5nIGNvbW1hbmQ6ICVzIiAl
IGUpCi0KLSAgICBkZWYgcHJvY2Vzc19wZW5kaW5nX21lc3NhZ2VzKHNlbGYpOgotICAgICAgICAo
bWVzc2FnZXMsIGlzX3J1bm5pbmcpID0gc2VsZi5fbWVzc2FnZV9xdWV1ZS50YWtlX2FsbCgpCi0g
ICAgICAgIGZvciBtZXNzYWdlIGluIG1lc3NhZ2VzOgotICAgICAgICAgICAgKG5pY2ssIHJlcXVl
c3QpID0gbWVzc2FnZQotICAgICAgICAgICAgc2VsZi5wcm9jZXNzX21lc3NhZ2UobmljaywgcmVx
dWVzdCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvc2hlcmlmZmlyY2Jv
dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L3NoZXJpZmZpcmNib3RfdW5pdHRlc3QucHkJKHJldmlzaW9uIDEyNDMzOCkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvc2hlcmlmZmlyY2JvdF91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMSwxNTcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMg
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0
IHVuaXR0ZXN0Ci1pbXBvcnQgcmFuZG9tCi0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHB5LnRvb2wuYm90
IGltcG9ydCBpcmNfY29tbWFuZAotZnJvbSB3ZWJraXRweS50b29sLmJvdC5xdWV1ZWVuZ2luZSBp
bXBvcnQgVGVybWluYXRlUXVldWUKLWZyb20gd2Via2l0cHkudG9vbC5ib3Quc2hlcmlmZiBpbXBv
cnQgU2hlcmlmZgotZnJvbSB3ZWJraXRweS50b29sLmJvdC5zaGVyaWZmaXJjYm90IGltcG9ydCBT
aGVyaWZmSVJDQm90Ci1mcm9tIHdlYmtpdHB5LnRvb2wuYm90LnNoZXJpZmZfdW5pdHRlc3QgaW1w
b3J0IE1vY2tTaGVyaWZmQm90Ci1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1v
Y2tUb29sCi0KLQotZGVmIHJ1bihtZXNzYWdlKToKLSAgICB0b29sID0gTW9ja1Rvb2woKQotICAg
IHRvb2wuZW5zdXJlX2lyY19jb25uZWN0ZWQoTm9uZSkKLSAgICBib3QgPSBTaGVyaWZmSVJDQm90
KHRvb2wsIFNoZXJpZmYodG9vbCwgTW9ja1NoZXJpZmZCb3QoKSkpCi0gICAgYm90Ll9tZXNzYWdl
X3F1ZXVlLnBvc3QoWyJtb2NrX25pY2siLCBtZXNzYWdlXSkKLSAgICBib3QucHJvY2Vzc19wZW5k
aW5nX21lc3NhZ2VzKCkKLQotCi1jbGFzcyBTaGVyaWZmSVJDQm90VGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcGFyc2VfY29tbWFuZF9hbmRfYXJncyhzZWxmKToKLSAgICAg
ICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgYm90ID0gU2hlcmlmZklSQ0JvdCh0b29sLCBT
aGVyaWZmKHRvb2wsIE1vY2tTaGVyaWZmQm90KCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJvdC5fcGFyc2VfY29tbWFuZF9hbmRfYXJncygiIiksIChpcmNfY29tbWFuZC5FbGl6YSwgWyIi
XSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm90Ll9wYXJzZV9jb21tYW5kX2FuZF9hcmdz
KCIgICAiKSwgKGlyY19jb21tYW5kLkVsaXphLCBbIiJdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChib3QuX3BhcnNlX2NvbW1hbmRfYW5kX2FyZ3MoIiBoaSAiKSwgKGlyY19jb21tYW5kLkhp
LCBbXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm90Ll9wYXJzZV9jb21tYW5kX2FuZF9h
cmdzKCIgaGkgdGhlcmUgIiksIChpcmNfY29tbWFuZC5IaSwgWyJ0aGVyZSJdKSkKLQotICAgIGRl
ZiB0ZXN0X2V4Y2VwdGlvbl9kdXJpbmdfY29tbWFuZChzZWxmKToKLSAgICAgICAgdG9vbCA9IE1v
Y2tUb29sKCkKLSAgICAgICAgdG9vbC5lbnN1cmVfaXJjX2Nvbm5lY3RlZChOb25lKQotICAgICAg
ICBib3QgPSBTaGVyaWZmSVJDQm90KHRvb2wsIFNoZXJpZmYodG9vbCwgTW9ja1NoZXJpZmZCb3Qo
KSkpCi0KLSAgICAgICAgY2xhc3MgQ29tbWFuZFdpdGhFeGNlcHRpb24ob2JqZWN0KToKLSAgICAg
ICAgICAgIGRlZiBleGVjdXRlKHNlbGYsIG5pY2ssIGFyZ3MsIHRvb2wsIHNoZXJpZmYpOgotICAg
ICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigibW9ja19leGNlcHRpb24iKQotCi0gICAgICAg
IGJvdC5fcGFyc2VfY29tbWFuZF9hbmRfYXJncyA9IGxhbWJkYSByZXF1ZXN0OiAoQ29tbWFuZFdp
dGhFeGNlcHRpb24sIFtdKQotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAnTU9DSzogaXJjLnBv
c3Q6IEV4Y2VwdGlvbiBleGVjdXRpbmcgY29tbWFuZDogbW9ja19leGNlcHRpb25cbicKLSAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGJvdC5wcm9jZXNzX21lc3Nh
Z2UsIGFyZ3M9WyJtb2NrX25pY2siLCAiaWdub3JlZCBtZXNzYWdlIl0sIGV4cGVjdGVkX3N0ZGVy
cj1leHBlY3RlZF9zdGRlcnIpCi0KLSAgICAgICAgY2xhc3MgQ29tbWFuZFdpdGhFeGNlcHRpb24o
b2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBleGVjdXRlKHNlbGYsIG5pY2ssIGFyZ3MsIHRvb2ws
IHNoZXJpZmYpOgotICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0KCkKLQot
ICAgICAgICBib3QuX3BhcnNlX2NvbW1hbmRfYW5kX2FyZ3MgPSBsYW1iZGEgcmVxdWVzdDogKENv
bW1hbmRXaXRoRXhjZXB0aW9uLCBbXSkKLSAgICAgICAgIyBLZXlib2FyZEludGVycnVwdCBhbmQg
U3lzdGVtRXhpdCBhcmUgbm90IHN1YmNsYXNzZXMgb2YgRXhjZXB0aW9uIGFuZCB0aHVzIGNvcnJl
Y3RseSB3aWxsIG5vdCBiZSBjYXVnaHQuCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRf
b3V0cHV0cyhzZWxmLCBib3QucHJvY2Vzc19tZXNzYWdlLCBhcmdzPVsibW9ja19uaWNrIiwgImln
bm9yZWQgbWVzc2FnZSJdLCBleHBlY3RlZF9leGNlcHRpb249S2V5Ym9hcmRJbnRlcnJ1cHQpCi0K
LSAgICBkZWYgdGVzdF9oaShzZWxmKToKLSAgICAgICAgcmFuZG9tLnNlZWQoMjMzMjQpCi0gICAg
ICAgIGV4cGVjdGVkX3N0ZGVyciA9ICdNT0NLOiBpcmMucG9zdDogIk9ubHkgeW91IGNhbiBwcmV2
ZW50IGZvcmVzdCBmaXJlcy4iIC0tIFNtb2tleSB0aGUgQmVhclxuJwotICAgICAgICBPdXRwdXRD
YXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcnVuLCBhcmdzPVsiaGkiXSwgZXhwZWN0ZWRf
c3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLQotICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6Ci0gICAg
ICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLOiBpcmMucG9zdDogbW9ja19uaWNrOiBBdmFpbGFi
bGUgY29tbWFuZHM6IGNyZWF0ZS1idWcsIGhlbHAsIGhpLCByZXN0YXJ0LCByb2xsLWNocm9taXVt
LWRlcHMsIHJvbGxvdXQsIHdob2lzXG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRf
b3V0cHV0cyhzZWxmLCBydW4sIGFyZ3M9WyJoZWxwIl0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3Rl
ZF9zdGRlcnIpCi0KLSAgICBkZWYgdGVzdF9yZXN0YXJ0KHNlbGYpOgotICAgICAgICBleHBlY3Rl
ZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IFJlc3RhcnRpbmcuLi5cbiIKLSAgICAgICAgT3V0
cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJlc3RhcnQiXSwg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRfZXhjZXB0aW9uPVRlcm1p
bmF0ZVF1ZXVlKQotCi0gICAgZGVmIHRlc3Rfcm9sbG91dChzZWxmKToKLSAgICAgICAgZXhwZWN0
ZWRfc3RkZXJyID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFByZXBhcmluZyByb2xsb3V0
IGZvciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NCAuLi5cbk1PQ0s6IGly
Yy5wb3N0OiBtb2NrX25pY2ssIGFiYXJ0aCwgZGFyaW4sIGVzZWlkZWw6IENyZWF0ZWQgcm9sbG91
dDogaHR0cDovL2V4YW1wbGUuY29tLzM2OTM2XG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5h
c3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sIGFyZ3M9WyJyb2xsb3V0IDIxNjU0IFRoaXMgcGF0Y2gg
YnJva2UgdGhlIHdvcmxkIl0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCi0KLSAg
ICBkZWYgdGVzdF9yZXZlcnQoc2VsZik6Ci0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NL
OiBpcmMucG9zdDogbW9ja19uaWNrOiBQcmVwYXJpbmcgcm9sbG91dCBmb3IgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2NTQgLi4uXG5NT0NLOiBpcmMucG9zdDogbW9ja19uaWNr
LCBhYmFydGgsIGRhcmluLCBlc2VpZGVsOiBDcmVhdGVkIHJvbGxvdXQ6IGh0dHA6Ly9leGFtcGxl
LmNvbS8zNjkzNlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2Vs
ZiwgcnVuLCBhcmdzPVsicmV2ZXJ0IDIxNjU0IFRoaXMgcGF0Y2ggYnJva2UgdGhlIHdvcmxkIl0s
IGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCi0KLSAgICBkZWYgdGVzdF9yb2xsX2No
cm9taXVtX2RlcHMoc2VsZik6Ci0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJNT0NLOiBpcmMu
cG9zdDogbW9ja19uaWNrOiBSb2xsaW5nIENocm9taXVtIERFUFMgdG8gcjIxNjU0XG5NT0NLOiBp
cmMucG9zdDogbW9ja19uaWNrOiBDcmVhdGVkIERFUFMgcm9sbDogaHR0cDovL2V4YW1wbGUuY29t
LzM2OTM2XG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBy
dW4sIGFyZ3M9WyJyb2xsLWNocm9taXVtLWRlcHMgMjE2NTQiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4
cGVjdGVkX3N0ZGVycikKLQotICAgIGRlZiB0ZXN0X3JvbGxfY2hyb21pdW1fZGVwc190b19sa2dy
KHNlbGYpOgotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tf
bmljazogUm9sbGluZyBDaHJvbWl1bSBERVBTIHRvIGxhc3Qta25vd24gZ29vZCByZXZpc2lvblxu
TU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogQ3JlYXRlZCBERVBTIHJvbGw6IGh0dHA6Ly9leGFt
cGxlLmNvbS8zNjkzNlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgcnVuLCBhcmdzPVsicm9sbC1jaHJvbWl1bS1kZXBzIl0sIGV4cGVjdGVkX3N0ZGVycj1l
eHBlY3RlZF9zdGRlcnIpCi0KLSAgICBkZWYgdGVzdF9tdWx0aV9yb2xsb3V0KHNlbGYpOgotICAg
ICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUHJlcGFy
aW5nIHJvbGxvdXQgZm9yIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU0LCBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NSwgYW5kIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU2IC4uLlxuTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljaywg
YWJhcnRoLCBkYXJpbiwgZXNlaWRlbDogQ3JlYXRlZCByb2xsb3V0OiBodHRwOi8vZXhhbXBsZS5j
b20vMzY5MzZcbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYs
IHJ1biwgYXJncz1bInJvbGxvdXQgMjE2NTQgMjE2NTUgMjE2NTYgVGhpcyAyMTY1NCBwYXRjaCBi
cm9rZSB0aGUgd29ybGQiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLQotICAg
IGRlZiB0ZXN0X3JvbGxvdXRfd2l0aF9yX2luX3N2bl9yZXZpc2lvbihzZWxmKToKLSAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFByZXBhcmluZyBy
b2xsb3V0IGZvciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NCAuLi5cbk1P
Q0s6IGlyYy5wb3N0OiBtb2NrX25pY2ssIGFiYXJ0aCwgZGFyaW4sIGVzZWlkZWw6IENyZWF0ZWQg
cm9sbG91dDogaHR0cDovL2V4YW1wbGUuY29tLzM2OTM2XG4iCi0gICAgICAgIE91dHB1dENhcHR1
cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sIGFyZ3M9WyJyb2xsb3V0IHIyMTY1NCBUaGlz
IHBhdGNoIGJyb2tlIHRoZSB3b3JsZCJdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJy
KQotCi0gICAgZGVmIHRlc3RfbXVsdGlfcm9sbG91dF93aXRoX3JfaW5fc3ZuX3JldmlzaW9uKHNl
bGYpOgotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmlj
azogUHJlcGFyaW5nIHJvbGxvdXQgZm9yIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzIxNjU0LCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NSwgYW5kIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU2IC4uLlxuTU9DSzogaXJjLnBvc3Q6IG1v
Y2tfbmljaywgYWJhcnRoLCBkYXJpbiwgZXNlaWRlbDogQ3JlYXRlZCByb2xsb3V0OiBodHRwOi8v
ZXhhbXBsZS5jb20vMzY5MzZcbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRw
dXRzKHNlbGYsIHJ1biwgYXJncz1bInJvbGxvdXQgcjIxNjU0IDIxNjU1IHIyMTY1NiBUaGlzIHIy
MTY1NCBwYXRjaCBicm9rZSB0aGUgd29ybGQiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0
ZGVycikKLQotICAgIGRlZiB0ZXN0X3JvbGxvdXRfYmFuYW5hcyhzZWxmKToKLSAgICAgICAgZXhw
ZWN0ZWRfc3RkZXJyID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFVzYWdlOiByb2xsb3V0
IFNWTl9SRVZJU0lPTiBbU1ZOX1JFVklTSU9OU10gUkVBU09OXG4iCi0gICAgICAgIE91dHB1dENh
cHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sIGFyZ3M9WyJyb2xsb3V0IGJhbmFuYXMi
XSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLQotICAgIGRlZiB0ZXN0X3JvbGxv
dXRfaW52YWxpZGF0ZV9yZXZpc2lvbihzZWxmKToKLSAgICAgICAgIyBXaGVuIGZvbGtzIHBhc3Mg
anVuayBhcmd1bWVudHMsIHdlIHNob3VsZCBqdXN0IHNwaXQgdGhlIHVzYWdlIGJhY2sgYXQgdGhl
bS4KLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6
IFVzYWdlOiByb2xsb3V0IFNWTl9SRVZJU0lPTiBbU1ZOX1JFVklTSU9OU10gUkVBU09OXG4iCi0g
ICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPVsicm9sbG91dCAtLWNvbXBvbmVu
dD1Ub29scyAyMTY1NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLQotICAgIGRlZiB0ZXN0X3JvbGxvdXRf
aW52YWxpZGF0ZV9yZWFzb24oc2VsZik6Ci0gICAgICAgICMgRklYTUU6IEknbSBzbGlnaHRseSBj
b25mdXNlZCBhcyB0byB3aHkgdGhpcyBkb2Vzbid0IHJldHVybiB0aGUgVVNBR0UgbWVzc2FnZS4K
LSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIiIiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazog
UHJlcGFyaW5nIHJvbGxvdXQgZm9yIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIx
NjU0IC4uLgotTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljaywgYWJhcnRoLCBkYXJpbiwgZXNlaWRl
bDogRmFpbGVkIHRvIGNyZWF0ZSByb2xsb3V0IHBhdGNoOgotTU9DSzogaXJjLnBvc3Q6IFRoZSBy
b2xsb3V0IHJlYXNvbiBtYXkgbm90IGJlZ2luIHdpdGggLSAoXCItYmFkIChSZXF1ZXN0ZWQgYnkg
bW9ja19uaWNrIG9uICN3ZWJraXQpLlwiKS4KLSIiIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCku
YXNzZXJ0X291dHB1dHMoc2VsZiwgcnVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJncz1bInJvbGxvdXQgMjE2NTQgLWJhZCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLQot
ICAgIGRlZiB0ZXN0X211bHRpX3JvbGxvdXRfaW52YWxpZGF0ZV9yZWFzb24oc2VsZik6Ci0gICAg
ICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFByZXBh
cmluZyByb2xsb3V0IGZvciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NCwg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2NTUsIGFuZCBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NiAuLi4KLU1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2ss
IGFiYXJ0aCwgZGFyaW4sIGVzZWlkZWw6IEZhaWxlZCB0byBjcmVhdGUgcm9sbG91dCBwYXRjaDoK
LU1PQ0s6IGlyYy5wb3N0OiBUaGUgcm9sbG91dCByZWFzb24gbWF5IG5vdCBiZWdpbiB3aXRoIC0g
KFwiLWJhZCAoUmVxdWVzdGVkIGJ5IG1vY2tfbmljayBvbiAjd2Via2l0KS5cIikuCi0iIiIKLSAg
ICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9WyJyb2xsb3V0ICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMTY1NCAyMTY1NSByMjE2NTYg
LWJhZCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
c3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLQotICAgIGRlZiB0ZXN0X3JvbGxvdXRfbm9fcmVhc29u
KHNlbGYpOgotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tf
bmljazogVXNhZ2U6IHJvbGxvdXQgU1ZOX1JFVklTSU9OIFtTVk5fUkVWSVNJT05TXSBSRUFTT05c
biIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJn
cz1bInJvbGxvdXQgMjE2NTQiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKLQot
ICAgIGRlZiB0ZXN0X211bHRpX3JvbGxvdXRfbm9fcmVhc29uKHNlbGYpOgotICAgICAgICBleHBl
Y3RlZF9zdGRlcnIgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogVXNhZ2U6IHJvbGxvdXQg
U1ZOX1JFVklTSU9OIFtTVk5fUkVWSVNJT05TXSBSRUFTT05cbiIKLSAgICAgICAgT3V0cHV0Q2Fw
dHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJvbGxvdXQgMjE2NTQgMjE2
NTUgcjIxNjU2Il0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc2hlcmlmZmJvdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc2hlcmlmZmJvdC5weQko
cmV2aXNpb24gMTI0MzM4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3NoZXJpZmZib3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDggQEAKIAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9t
IHdlYmtpdHB5LnRvb2wuYm90LnNoZXJpZmYgaW1wb3J0IFNoZXJpZmYKLWZyb20gd2Via2l0cHku
dG9vbC5ib3Quc2hlcmlmZmlyY2JvdCBpbXBvcnQgU2hlcmlmZklSQ0JvdAorZnJvbSB3ZWJraXRw
eS50b29sLmJvdC5pcmNfY29tbWFuZCBpbXBvcnQgY29tbWFuZHMgYXMgaXJjX2NvbW1hbmRzCitm
cm9tIHdlYmtpdHB5LnRvb2wuYm90LmlyY2JvdCBpbXBvcnQgSVJDQm90CiBmcm9tIHdlYmtpdHB5
LnRvb2wuY29tbWFuZHMucXVldWVzIGltcG9ydCBBYnN0cmFjdFF1ZXVlCiBmcm9tIHdlYmtpdHB5
LnRvb2wuY29tbWFuZHMuc3RlcHNlcXVlbmNlIGltcG9ydCBTdGVwU2VxdWVuY2VFcnJvckhhbmRs
ZXIKIApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBTaGVyaWZmQm90KEFic3RyYWN0UXVldWUsIFN0
ZXBTZXF1CiAgICAgZGVmIGJlZ2luX3dvcmtfcXVldWUoc2VsZik6CiAgICAgICAgIEFic3RyYWN0
UXVldWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQogICAgICAgICBzZWxmLl9zaGVyaWZmID0gU2hl
cmlmZihzZWxmLl90b29sLCBzZWxmKQotICAgICAgICBzZWxmLl9pcmNfYm90ID0gU2hlcmlmZklS
Q0JvdChzZWxmLl90b29sLCBzZWxmLl9zaGVyaWZmKQorICAgICAgICBzZWxmLl9pcmNfYm90ID0g
SVJDQm90KCJzaGVyaWZmYm90Iiwgc2VsZi5fdG9vbCwgc2VsZi5fc2hlcmlmZiwgaXJjX2NvbW1h
bmRzKQogICAgICAgICBzZWxmLl90b29sLmVuc3VyZV9pcmNfY29ubmVjdGVkKHNlbGYuX2lyY19i
b3QuaXJjX2RlbGVnYXRlKCkpCiAKICAgICBkZWYgd29ya19pdGVtX2xvZ19wYXRoKHNlbGYsIGZh
aWx1cmVfbWFwKToK
</data>
<flag name="review"
          id="165455"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>