<?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>35680</bug_id>
          
          <creation_ts>2010-03-03 06:51:18 -0800</creation_ts>
          <short_desc>Web Inspector: Popup for Timeline panel will work in a tooltip mode</short_desc>
          <delta_ts>2010-03-04 09:36:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pfeldman</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195516</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-03 06:51:18 -0800</bug_when>
    <thetext>Just %subj%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195527</commentid>
    <comment_count>1</comment_count>
      <attachid>49902</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-03 07:05:07 -0800</bug_when>
    <thetext>Created attachment 49902
Popup for record bar was implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195560</commentid>
    <comment_count>2</comment_count>
      <attachid>49904</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-03 07:19:13 -0800</bug_when>
    <thetext>Created attachment 49904
initial version of patch

1) Now popup for Timeline works as a tooltip:
  a) hide after timeout;
  b) keep open if mouse over popup content;
  c) keep open if moved over anchor element;
2) arrow position was adjusted;
3) title split line now thinner;
4) content is selectable.

Some methods were extracted from TimelinePanel and TimelineRecordListRow and inserted into new FormattedRow class.
Autohide functionality was implemented in Popover class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195614</commentid>
    <comment_count>3</comment_count>
      <attachid>49904</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-03 07:54:55 -0800</bug_when>
    <thetext>Comment on attachment 49904
initial version of patch

Great job, looks good overall. Couple of nits that need to be fixed prior to landing. r- for passing panel instance into items.

&gt; +    this.sendRequestRecords = {};
&gt; +    this.timerRecords = {};

these are private within the file, should remain _*

&gt; +WebInspector.TimelinePanel.showDetailsDelay = 2000;

Should be 1.5s

&gt; +WebInspector.TimelinePanel.hideDetailsDelay = 5000;

Should be infinity (or 10s)

&gt; +    get recordStyles()
&gt; +    {

_getRecordStyles?
&gt; +        var formattedRecord = new WebInspector.TimelinePanel.FormattedRecord(record, this);

passing panel instance seems to be too much.

&gt; -                listRowElement = new WebInspector.TimelineRecordListRow().element;

ditto.

&gt; +                graphRowElement = new WebInspector.TimelineRecordGraphRow(this, this._itemsGraphsElement, scheduleRefreshCallback, rowHeight).element;

ditto.

&gt; +WebInspector.TimelinePanel.FormattedRecord.prototype = {
&gt; +_createCell: function(content, styleName)


Here and below - poor indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195760</commentid>
    <comment_count>4</comment_count>
      <attachid>49948</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-03 14:20:56 -0800</bug_when>
    <thetext>Created attachment 49948
second iteration. Just fixed the comments from the first one.

1) private members were returned back;
2) timeouts for popover were adjusted;
3) recordStyles renamed to private one but I think it should be getter;
4) panel is not passed to FormattedRecord, TimelineListRow and TimelineGraphRow ;
5) idents were fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195893</commentid>
    <comment_count>5</comment_count>
      <attachid>49948</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-03 22:16:26 -0800</bug_when>
    <thetext>Comment on attachment 49948
second iteration. Just fixed the comments from the first one.

Although entries are no longer aware of panel, they still are too much involved into the tooltip business. It would be better if they were entirely decoupled. Panel is interested in providing tooltips. It adds a listener to itself and whenever mouse is hovered over some interesting element, it launches its tooltip routines. You can detect interesting elements by styles, you can put a reference to a GraphRow / Bar into the dom elements for fast access. It would allow us to minimize the number of listeners and make the tooltip code more localizer.

I am in fact thinking of a generic popover tooltipping support where one would tell some helper method that he wants a tooltip within some element (panel/view). Would provide toggle filter function and cancel filter function. I think that code can be easily extracted from SourceFrame. Otherwise your change introduces &apos;another version&apos; of this stuff in popover.

&gt; +    this.contentDiv.className = &quot;content&quot;;

Nit: this one cold be private.

&gt;      this._containerElement.addEventListener(&quot;scroll&quot;, this._onScroll.bind(this), false);
&gt; +    this._containerElement.addEventListener(&quot;mousemove&quot;, this._mouseOverBackground.bind(this));

_mouseOverBackground sounds too specific. It is in fact a &quot;_mouseMove&quot; called on all mouse move events.

&gt;      this._expandElement.addEventListener(&quot;click&quot;, this._onClick.bind(this));
&gt; -    this._refreshCallback = refreshCallback;
&gt; +    this._barElement.addEventListener(&quot;click&quot;, this._onBarElementClick.bind(this));
&gt; +    this._barElement.addEventListener(&quot;mousemove&quot;, this._mouseOverAnchor.bind(this));
&gt;      this._rowHeight = rowHeight;

Adding a listener per entry does not seem right to me. We could just have a listener on a panel that would handle tooltips for the sake of performance. All you do is dispatch this call back to panel. Event infrastructure would do it for you on the DOM level.

&gt;  }
&gt;  
&gt; @@ -736,7 +662,19 @@ WebInspector.TimelineRecordGraphRow.prototype = {
&gt;      _onClick: function(event)
&gt;      {
&gt;          this._record.collapsed = !this._record.collapsed;
&gt; -        this._refreshCallback();
&gt; +        this._callbacks._scheduleRefresh();
&gt; +        this._callbacks._closeRecordDetails();

I can see that _closeRecordDetails is being called from here only. Sounds like you should have closed record details from within scheduleRefreshCallback in the old code instead. No need in fine grained _closeRecordDetails event and graph row&apos;s being aware of record details as a whole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196061</commentid>
    <comment_count>6</comment_count>
      <attachid>50018</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-04 07:23:19 -0800</bug_when>
    <thetext>Created attachment 50018
third iteration. recent comments from pfeldman were fixed.

Recent comment about listeners and style were fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196076</commentid>
    <comment_count>7</comment_count>
      <attachid>50022</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-04 07:37:32 -0800</bug_when>
    <thetext>Created attachment 50022
Rebased version of third patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196103</commentid>
    <comment_count>8</comment_count>
      <attachid>50030</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-04 09:35:23 -0800</bug_when>
    <thetext>Created attachment 50030
[PATCH] Variation of patch with extracted popover helper and fixed changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196104</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-04 09:36:11 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/Popover.js
	M	WebCore/inspector/front-end/TimelineOverviewPane.js
	M	WebCore/inspector/front-end/TimelinePanel.js
	M	WebCore/inspector/front-end/inspector.css
Committed r55530</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>49902</attachid>
            <date>2010-03-03 07:05:07 -0800</date>
            <delta_ts>2010-03-03 07:05:07 -0800</delta_ts>
            <desc>Popup for record bar was implemented.</desc>
            <filename>Picture 5.png</filename>
            <type>image/png</type>
            <size>45309</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAApIAAACvCAIAAADBkalrAAAPVWlDQ1BJQ0MgUHJvZmlsZQAAeAGt
WHk4lF/7P7MY2xhj3xlkzxqy75R9XyZlm7Fv09iVLElEJMnXlhJlKSRZKmWLSFIhIcq+RRFpkfcZ
6vv9Ldd7vf+857rmOZ/zOfdynnOf57nnfgBg4nUnkQLgAIDAoFCyzSE9nBP+CI56BMABGtACbsDq
Tggh6VpZmUEi/6ZtDgEYZeq1NMXWhSubflXUeIUvCfht3pyFkn+j9IfGkCGHAMD2QwSr9x7WoWCP
PWxHwRGhpFBIxoeCCT7uRAifhPB+sp2NPoTLIIzx3sONFOyxh59ScDjBm6I7DACKOYjoGwQA9TKE
tYieIQRomuKXSAwhBEL4AgBwrcDAYMg+th/ixQkkMqSL3YLwPsq+QD3UgqoBULWEbMb8w7m8A+Bu
M2T7zT+chAkALIwAdPf/w63b7O4VjP1FiNcBhV1zMLQeAFTjOzvropD+RQC2M3d2fhTv7GxfBwAx
BkBLACGMHL4rCzmFPQfgP4337vm3BgIKDiXAGuAVzBm2Ak9BqCF2kENU7ahO6mGaTTpRehd0JUaZ
8Q1TNAs/6xN2Mqcg1xjPJT5rAXbckFDhPqKojNigRJQU1/4qGV3ZDnl9hbuK3EqRyr0qHKpH1fLV
BzSRWnLaR3SSdev0PhhgDDWMvA9lHW4xXjJlN9Mx97NItrxh1WE9YfPNjsVe0kHH0caJgA85Euuc
evTysQKXy67n3RLcwzx8CHjiYU9FL5w3nfcXnzHfdr8K/wsBpEDrILlgxuAVUu/xCvLZEI9QrTCu
sPXw5xFlkfFRjtEyJ1AnPpxsiSk+lRIbHucXT0wgnvZLDD2TmJRztj55KGUjlTXtwHnr9MCMlAvF
mQ8vDmQtZyMuc+fI/qWba5tHzA8rOFN46cr1ojtXH1/rLX57fbZkrfTXTdoylnL+CqlK9VtWt/2q
0qrv1SzUitz1q6urp2lwa2xu6r8/9eBLM/wR+jFzC0srQxu87VP7247mJwWdEV0WT8W6Ud1LPX3P
Knvjn1v1cfS9eXGu/2D/+5dxrwRftb4+NaAzCBtsG0p8YzRMPdz9NnXEfJRx9OVY1jv7cfbxoYnL
7x0/cH0Ynbw65TUtM/1tpnM2e857Xn0BuzC3WL7kvyyzvPqxZoW0Kre6+un2Z/81ibXZ9eIvrhs8
G282s75abtFvdX07/V37+48f934GbYttj/+6tGOyswPFXxHUw9RhjXAj+DTiEtKRShLFRE1PQ0/L
QydLfxTdglFirGASZy5hFWer4VDh7ObG86zwpQgI4JqFHIWHRZxEX4gbSFRJse0nSbfJYuTM5ZMU
Gg5MK9Eryx5UVzmsaqvmou6nEaoZo5Wkna5zWbdQr1S/0qDGsM7o3qHawzXGt03KTUvMisxzLDIs
z1rFWofa+Nu62TnYGzgccBRywjpt4xeODDg/OnrjWLpLiCveTdMd577jMUSoIMZ4WnoJeq17d/hc
8iX4KfgD/+cB+YG+QUpBv4K7SBnHncg48nxIdWhEmGY4Irwn4kKkQxRv1IfoGycCTirFgJgXp4pj
o+Pw8VoJEqe5ExnP0CZRn6VJZkhhOceZypcmdF40XTJD5oJ85oGLSlnKl1SyVS6r5Cj/pZirkCef
L1+gUKh8Rb3I4KrltaPFgdfjSi6VVt54enOmHFEhAJ0Px9vkqvPVZTWtd0Zrv9Qx3BOp12ywa/Rr
ir1/6cHNh43NnY/6Hw+2vGkdbOtrb++of1LSmdYV8tS5W69H4hn22dfe8ecdfZUvMvsjXh57pf9a
fAA9sDr4eqj+Te5wzFv3EaNRqTHs2Ma7sfH2iYr3BR/KJpumOqa7oTPxaK5m/spC8uLxJadl7Y9i
K9iV76uznybW4OuiX4w3/DdTv97e6v+28YP/p8V2wq/m3fgLgQiwCXOEdcH14d0IVyQK2UgVhTKk
ZqNepRmhXaNnRaszeGOyGTuw35nlWPxYy9gWOKQ5Q7ke8MB5lfn8+PMFunHrQuzCB/YZiziKuokR
xYkSrpKOUqb7ZaUZpT/JvJS9I5chH6hgekBMEaY4qlSnfP6gl4q2KlZ1Uu2ueqKGvaaY5pbWU+1c
HT9dDT2M3nv9uwZnDO2MhI3WDrUezjA+ZiJpsmnaapZm7mCBs1iwvGt1wlrXBmXTY5thZ2vPbj/s
kOd41InX6R2+8MgxZ17nEej9Ye1C79LhGuOm5LbkXuzhREATWoghniKew14p3qre8z45voa+637F
/lb+PwPKAx2DEEE1wUdJtKS6465kGvKdEOdQZOitMPuwn+ElEaYRa5G5UdpRs9FpJ+RPDJ+Mi5GK
GT11PvZwHE3ci/iCBNJp00SpM4xntpJmz75J7kppPHczNSct6XxYOiHD+oJW5v6LXFmorLVLI9mt
l2/mpP5FyrXLU8sXLKAv2CqcvzJW9Ppq37X+4s8lHKVaN4g3z5VVlw9UfLvFd1u3ilidXFN5p6/2
Ux32nly9VUNwY0ZTzf2XD9aaWR8dfOzcEtd6o623ffOJdKd/V0036Dny7OFz6b6yfrmXra9dBhFD
tcM+I/tGZ99VTSR8yJiansXPTy1dWLH/LPOF6yvDd+Q2oMR/L/dRcgJKGYDSKQAcrgFg7QzATSkA
REuhPDcDgBUDAHaqAK6XAWBvcwHsUBX4kz8YgBgwAl7gLCgD3WAJhoHJw+xh0bBC2EPYKOwnnA+u
DfeAJ8Er4C/gXxA8CF2ED+ICogkxiaRHKiHdkGnIRuQ0FTOVNlUQ1TWqQRQdShcViapFLVOLU3tT
36ReoJGhCaN5TEtPe4T2Fh2Mzomulh5DH0T/Cq2CvspAw0BmGMeYYJoYxRnzsAzYeOxXpmCmeWYC
8wSLB8scayDrJls8O4a9kEOWo53TmXODK5Nbnvs1TwQvH28/31l+PQEg0Io7I2guxCU0L/xgX6aI
n6iRmIg4WnxDYlLylVTH/vvSd2VqZKvlauUbFVoOPFMcV/p8EKnCpiqsJq0uryGnKamF02bWgeus
6o7qPdYvNkg2DDZyOqR3WNaY34TRFGG6ZfbJfNFixnLS6oP1tM2S7brdtgOtI4eTGF71iLkz4eiJ
Y9kuNa59bh89MIQDRLxnrNd17yc+U77b/swBgoGSQTLB0iSJ40Jk9hDakO+hC+HcEeaRiVGPo3+d
NIzJOrUUZx7/4LRiYlOS8dmplLOpgmlV6ToZ7zMzs5yyNXOMcyPyn1zhuYophl//Vrp2c6V8uXL5
9mr1xp3tOpp6nkbZ+wYP8Y98W8LbTnXEdcY8De8J6HXrS+1vfLU4KPjm2Nui0dlx+ffxk4MzUnPJ
C3PLh1YqPmPXT2x83PL6PrdN2n1/MAIZYA3CQB54DKZh9DAF6N9EIqwc9gy2CmeFq8Hd4MnwGvhb
BAIhjcAjziDuICaQDEgNpD8yH/kc+YtKnopIVQDFnRFlhkpBPaWmozanvkg9QiNCQ6Zpo2WnDaDt
pBOmS6CboTehv4+WQhcxsDGkYVCYBEbAGI9FYJOZMEw5zELM1Sw6LIOsgWwotmJ2XfZJjiROac4h
rnhuOe73PFm8h/mQfG38pwWMcGjckGCxUIiw0T7+fVsiQ6INYlfFcyQyJdOl0vdflM6TuSF7T+6p
/LjCV0U2JTVlwsF0lWbVVXURDVfNfK1RHX5dol61/g9DQ6PUQ8+MqUwOmnqYJZnfsGi1HLH6ZIO0
ZbeTtNdxwDuGOGXgq470OX8+xu6i6erllun+yGOFKOzp5JXh3emz7afo7xtwJfBlMJykcNyNnB7y
IHQ+nDHiYKRbVGp044m5GI5TxrExcbXxi6eFE4+dyUsaTuZIwZ+7kjp9Xjo9MqMzk/NicFZvttzl
/L8wuSn56ILsK2JFXdd8r6NLam8cKUOW11S63sZWtddE1srenb93s8G3Sfr+2sP7jxJazNo42qee
1HSd7DZ5xtXb32f/Yupl9Gv+gb6h1GHbEdEx2LvJic4PlVMZM+Q52wWexaJlsY93VrU+9a25rq9u
xH1l3Mr9zv+jaJv7V8Zu/DmALiCBIvAC7ECx94Llwp7A1uFCcBt4IrwBvowQRDhBz3s3EoHUQkYj
G5AbVEpU4VTNKCqUJSoftUitTn2Bep7GgKaEloaWRDtGZ0bXQn8QirQeupcBz7CIOcXIxliDtcR+
ZrrMrMW8wFLIasvGwNbDnsJhxsnMOcJVyk3m0eVl4V3i6+QvEUjC+QvaCekKK+wTExEQ5RHjFsdJ
SEmqQtnIXfqkTJ5ss9y0AuaAhiJZqUp5VUVJNV7tlYa4ZqLWrI6ZboO+lEGJkeCh68YSJvfMDMyH
LUnWaJsaO2foeW3GhzsrHt1yaXE77+FCVPZCe7/1zfM3DlgIigr+eTyUPBNqFXY3gimSHDVwQu3k
tVP0sZFxcwlOp3vP6CXdT1ZMqU/VTOtOx2csZZ7KYrpUfFk2pylXK+9xgUZhfRHVVbNr2cUTJZKl
ETeelLGVe1Xcv4W5Tax6WMN2h1T7rE783rn6j43WTQ0P+B8mNa88dmxpbZNqz+7Y6fTrGujW6ans
ZX8e0tfTz/PS59Wt14uDwkOObxKGy972jMyM/nyHHReYkHqv9EFtUmtKZ1pnRmtWbe7gvPyC5KLQ
EmZpYbnpY8SK0sryaukn/Ge6zw/XvNax641fjm6AjeJNvc3Jr7FbvFtN3+y/ffqe9kPsR9tPl59b
21m/ZH917xAp8d+rlyj5A9DpBwcEk3Fm+ga7w//eJTAgDKrJdhszdEUHeVhAdRag4HlSqBWlFmSH
ft9Dwm0NoR4LlUNYL18j498YR3Q3MIUwL8TLRfvoW0AYDWEzL7KRDYQhOzAnP3cTKwhjIOznGWRv
+5uPJAXs1rgUmXOkUD2KPCeECzxDDP/I1EX72Dn+1u0kh9nYQ3gfJDPgH2xKkaf42iJ6GvxeGxwZ
FGBhBvHQmuGsvqHGlPWzQlgSyqPugAy8gSeQBmZAHxj8vuIgHgeNg6FZTxACyU3vyv2Rctgd+/4f
LWkoK1Pshe/q+INZCAe6+iaQIVt71rsBAeLcQdAfRq5SbkHu55/RrseAXa9/NEyh0f9m9iztrW5v
xhcQIak/POGPBsVzYK1X+F/BUWoOPkhRpAKU//WQUJmIVAU4JDuSG0gjFZEqSF2kNlIdmlPtW25Y
/nste3vj8fc9mkLr8ITyDmVHgv5m/59X4At9w9it3aFdBijobBRA9TMATyLDIyn9/2yhnpFQXQ+A
fjApiuzr7ROK04W+XHjuxxkHEWT24xTk5OXAvwBLEl9tWAiEswAAAAlwSFlzAAALEwAACxMBAJqc
GAAAIABJREFUeAHsXQlgTFcXvpklM8lksu+TCBJZLEGInQqqlhJUVIuWUpSGWor4lVpDLbXUWloq
WiVFokgVsRMhCBGJJJLIIrJnMpOZzJL/3PdmXl4miyyiSftu0zfnnnvuufd+73nnnbvqpaXFqFQq
tVoNV/glrpqLUokJJfFDp2Nj40f6TUfVB6lUmvPqpfjRD61kv3fpMRCZd0VcU5R35+HNk8+4Hwo7
fGlpbWtoaIgVyB992nbl4uhgp7QD3vP1I89MEsgf+bdd9Xn0cee0w97DlmAZd/9Tx5a4CiRnlrl+
/RtacTbeO27j+/N+RKjXON/8YyEep56svz/atXRj/KR26PdhJCHAGWlBEqfVj5kSjZhL0uS23y+K
/qmtQPL7cFfFd/ET2wniD/mtQ8sPftpBlRu1sduIXwglS0PjJ5YL0/RiUnxuur9w1Y99bLkvLm5f
/3s2Qi/sB82cM66HEBIVKQdnr4gkc3T6dMssH54sce+c1TkilJHuOGnZoh4thPL08PkrD5EicP1o
xZ4+Iv7Lm9tXZ727c7QHxf/XE/duXpo4cWItm5mZmWlnZ1dL4SYr9i9oRZNtQlBQUF0fp6Kiohc3
t3DzLvFYUnhmZGpDpfkAx17zjY2Nm+wjRFWsyd4Iqoa1If4drQgODvbbwl80p0NrOwN1mV6JQu9W
osLCzNDczMTcEgmNkMAYyYrRlZWTfH19ExMfe3i4stlsDodDXOFSgcZxTWDBL4vF0msMsw2WXiIu
ysrK5GaFmpREeFs/Y/NM7qRZ5/O7K2xG2tjYCYTGUMXX30WlTCJXCQTlNlgukXEEfDZCKrkM8TAh
kcgEAv7rVdVXQiKRcHgCXo2VVRfc91+UuHrfWHO1QiqRIS7fkM+toUCFTCJTIL5QUK1QwaPZix59
u+djK1YNav5tSYzZbo53tMm+Z+thtuHFBS5HQUGBXC6He8Hj8UxNTcHBqNXL6p++eU32RtQJmH9H
K0iz/fWcDq1sDcrUSK5mRSQrrUyNTE2NzMwQfAQamSGZBF1cVk+zXaM5qhPeNGH4IjA0ElqXoQJ9
vwzxe8dL5UiK9G15RkJja1NzSAIBmnj1JIcvqFhBntZCs3kaU92oNhtqRv9oqK6iLNPOWwJFpWqE
WFxDYbW2mMrO5Qu4NX5pqPXtV2/tYP5fstkUOAzBIPBPIQDmGRzrZuFb/1MQMeXWHgEuG4HNLkN6
KnWZUqlWliE1/CHgIKUSKUprr0lXsqJV1E2tZ1xPTw/+AQiEQi6PZ2ZmDn3toAj8f44+T19fH5JA
oJ6qm2o2noU1783VjWVoYf7mtDGaGAQYBBgEGATeNgKqMj2kVqpQWRlbBWZbCSPOSKlApUrEB9MN
f/UNjWK2oTJgmLlEAHe1vnVj8jEIMAgwCDAIMAg0SwTASEMHLNLDBlqtx1KCz61G4MJCVKFAcpxa
z9BYZrue1WGyMQgwCDAIvCEEYHib1FT7uWlvqGRGDYMAONnQO65WlUHPuB5Mm1CrgcLetkKFFNBX
3oAe53qabZioxdwWBoE3jkBxcXEtdcITWHvhWup8+2L/glY02SaMGjUKbuipU6fgStpvklPlXW6y
raiytlUy/wVNgHb9O1pB3iA98K3LwHjryVUsFdBqBMPbmIBuc5hVjYeO6xnqabbrWRqTjUGAQYBB
4O0iUIO1frsVYUr7jyEA89HUZdAfDsurFUp1qUKlLFWqyjjkCLe8AVPSmMnK/7EniWkugwCDAIMA
g0DjIwDLpUrB3dZDMCtNhcD3ZivKWKXQQ65EsOwIUuodGLNdb+iYjAwCDAIMAgwCDAJVI6BWqcG+
KmBIu6wMLLcCzyQHbxvPSoMozCevd2jETnKoa1xkSGzUxdRnUVC/Fm28PLwGunn7vs3VX/LCPLXQ
3KAZfZyopflilplJjcu66323mYwMAgwCDAIMAm8FgTIWC7H09MFIc/RgDTeHrcflsLh6iMNFPH2k
bsA7vrHMNuyWGnFmx8u7O9dOa4UsBmOUcm/+b/9f+Vkp3Yf7w/ZsGtzkMcu9R5/TREYevr3Jndjz
VMOo3Y9KJUdsXuUNXNSF0QHL4pZu8zOonZ4mIcWSXV22s9XK/3kym600ifvBVOJfggC8kaprSfnr
iJAoST0rTTqlLIiFGNfMg99ylKHTsOryMnwGgWoRAAsNC7fLEBub7zJ9NuKysNmGDbnYZUhfawOr
zV59QqOYbfgXkhB5Muf+zrVzByLHccjMC1cgv9/aucdW/LAzwdrBxXs09U8lG7n9ePlkJxME2wlW
YXurr7o2RR7SuUPx7/c/8dBZIC6+smzX6ICtlg1AR1vE2/w1H7bsncUrzq3aMdzobRbLlMUg8O9F
AN5Iv/zyC8xSrtxEMzOzjz/+mOIXxRywKTho3mI48uiPlCVIlqF+EZhdnGncbiolwxAMArVBQI/D
0oP/wMaWIq4+l82FHcdwFJxWcLhVTW1KGpw/kvT4wpBO0DtQhF5dQvfn4D8glEXAhCQQoDXb1MiE
g9gcHpvz+OdZgX+nEknKq9/NOhorUeXFbBnr6u3punDvNby7vzwucOrCX46sA4731B/T5Cj57OZA
hHZ82Hn58RiaTqTOiz2NhnS0h54IWdTR3SEXzmzynznf/0hSRkIIJmaGxxdgeXn6+R04Ot//p2d5
CmBk3jh+7QUuSpF1a9OPt/DexMXPQ9YTMmQUqdPuHiey7I7JkUH6q4jjP504f5yQuZWYGnUUC/90
IY74vJfGhO0mhGdei8+Dc0eu7dgSlYMLQurss+uPQBOKX9wh6jbzfGw2sLk2nYeg009IGSzHBAYB
BoEGIQBOQp8+fapU0b9/fzq/JPkUsvbBnKKnSJKESvNYVr0xkwkMAnVFQA9vtcLSA1ebBfucwh8L
lXHYSJ+L2Hr4r96hUVxRpUJZmPYARt3TEyJRWjDKj8J/acEQBSZOgrl02iBAEb/s3Ll/+5YTN1Jb
dGl3YsFfRZAkfbA7SNzJiXP269EFn12IjL5sv3Nq6DP4WFbmRobuuNP69OXTkyM3hsUVtnxv8gyE
Ju8OWzLSTasS/yrggBVXG7J7XJn98EpIwfjA9ZN9kn4I3OS4aN3Xn/Y9fSUWFr5H/bI6us28wB27
vv6Ut3vFGShaVZJTQqyoU5eWZESXgKrMhyev2E/fsGPXqnEdoX9DkRWx5VDpkm17vp1leWD/HbDr
KmXO4/ATzp+s/3rqwONb1yW6LP024LPHITeyFCjn7tEDD5yXbtm1NuCzkzuWPi0UtGgjCbqbAmpL
Uu9cQI5W3JfHvvtpwIodW9bMCtt1OA0bdL6lJ5KUEKYdYkxgEGAQaDACLi4uLVq00FHj7u5ub29f
gakoQKX5SPwUFT5CRU+QJBmVpOspiU/8CnJMhEHgdQjo6bHxHxu8bmyn2SwOC47wwvusgPEGS17v
0DhmW6nU55YVleD5clkFquwCeb5Ynl+sgigwIQkm1NFr7OLh0c6zk6O1kXG7oUPRxgd5KPvG0YSJ
0915Wc8iUfbd4F/2Ho0Ep7cE55Kg7j8Hjrc1b2nnij9bENvE3BUJzW0MK57SVfgi2cWzBXmsh1yC
Riz6wMHI1MpCYO+71MvR3NLeDkWXKBWvHkSjAd3a8BDLzqu/C3qUj51rbdDCairqhCL3nbrwQGFo
CHgVv0pDKOvu+fPXIy+idBm41CplCVZrb2ppbYHQuJFdWxhb2bqgglK17NmtO12GdLbksgzsO/uJ
UGq+zLHre+hMBHwfJF09/Y6vJzcv4zFCibfOn796FxoHi/HB37Zr2zE2NV9bD+aXQYBB4A0g0K9f
P/pZXnA+Qs+ePavQK01Bcuj3ggU6ZXJJDjjceHcrJjAI1BGBMr0yFhyzCQabhX1rcLVhhBtGu7lc
PObNbYDtbZyx7TK1pciDpXcDtmAlp7mzlNBRgAfnIUASbPlGIQBmuNuAAe4aG2k+Zppb0LlLGZdC
FyxZiZTJGQh16dnTy4LreXCgZUsBlQvc7gpDAzT3nZQxsXdICM9SI5EWHFwitS8NWTwLqaCP21Br
nmnKManNiAxaDvh2kWX4qV2rQ/ou2TJBlZeDXN3c3dugNgvb+ZjTTxApb5VWl1KCjHjkxwNmAcWy
9BiCfnoY6/EssuPQj0wVL+FDvqNb27ZGyO3LDgbWWFadl/jQpd+nWh3ML4MAg8AbQMDExMTLy+vO
nTukLrDZcCinjt4yjilSlxYWSUwMEZyuW4zPB4YdMkx1xJgog8DrEQCTjZ1sxFLD2VpsmEkOp2ix
udiy6IHP3dQ6yaEr36pVD2kpMjVExgbI0c5M5OBkxEemAvwvAZJAgNbmAplECR4rOeDtMWLKlQ0z
N0fOHdhGgHgt3/FG914Ztvfq2smrnZXOKZ5aFaXxSAyOfMXAMhCiyEy681wxnYhxLTuI0L3nryBS
khqXgEQG2GrmhD3NQijv+i/HkCv+rJEXF/AcPX1nLrZHScVqZOneDsWnsq1btXZ2cbIV0ltCKKVf
+K16iq5EJuH+bmlabDoyMYIChJ0mdju5a1/e4AF2sBLA1q09eljItgRtrVvY8bA62atIJGxOq9bo
TWZoBoGmiwCYbTDeUD9ra+t27dpVrmiZzWC5TAKThnLEhM3mIoiqbYi1MJWlGQ6DQPUIgJcKnips
lIaNN14DBt3kiAUTy2GGOQfPSqt3aBRvG3qijFq+Jyt5npx9okuPgci8K+KaCs3uPLx5UmE7BpLo
XVVWKO7zPm3JBgT8cX9Mmz4wVp26eqgVZgmGbTz+rL+f9wYcWfD7/fGt4VdIVlrfBCboQRD0WD/Z
b3KPrG9Or/IrH97mWrYfgr5+kDW4pw0i5LE9BL/akAJLBGzDHtP9n634dj7WIxq/6CtrFipq1Rtt
3TD/jKhnb1cEXWVgwB/+tvHoQyDsfT6z48GUsT5zJ2ZtWzwTp7l+HOjfr5JanAIB+A69Zo6I/2ax
P472nLjUyxIXb92uuz2606+bE+ZyReMWfLpn89cncaTj/E1f2IsfnkYjvrVpwLI+rIoJDAIMAroI
wJvznXfe+fPPP2EmWpUbSAjcPo27K+YXXeGx8LzU3BJDuck7Nm5M15cukkz8tQg03nnbemlpMSqV
ChZIwBV+iavmAju6QMAbu+BrOR0bGz9w2IQaKg1ZJMXi7FcvDXLPmsnvdrdNYPNMbqda5ep3LbEY
ZmVtKzAS0i13DarIJKlUwuYJalgeppJKlJUEYN32wmVJ3+wYZfaaAtQK2B+Wx6cMuloBnQJ8Wt82
whw1m0dnKWRyHU71pSgU0BnPhyGN6oNCLldxeXwWKjjrv8Rh5a7/4Lrtpw8jar999MuXL21tbavH
s3mk/Ata0cSbAEeJVH6okpOTW7ZsSX9EqFbAu0sqlRYWFsrluKuOx+OBdw596XV6X9E1vzWaasJb
K7ExCvp3tCIsLMxvC3/pnPYO1nw47wssxc1ncksLobmpiZkZEpogY1MkE6Orqyf5+vomJj728HCF
D0p4xogrXCrQOK4JMKMNRsvxmrI3H0C1QGCErGwK9UeliAfGQ3e5FPHM9QVCoZWJGSSBQJ1KNTSk
j2pXkZVtKKiskWXiGbjSDh+RVmNHNiSDvaQrZXH59BFrSKrMQZVk6Bp0aC63gn6dVCLK1XwTqPW7
rdxqyey1UhVGDI9B4I0goGOz6Trh1WlMBDqToRkE6oFAMztvG3qf4GsBXGqwRSam5uCnQ5vBVHNh
7iZXH5Kq7J6qBy6vzcIzt9IxwK/N8g8LsAwtzf/hKjDFMwgwCDAIMAg0EIEmd972a9sDhpnD5cIf
ep2j/FpVjACDAIMAgwCDAINA80KAOW+7ed0vprYMAgwC/zkE4PCkf7DN+Jypf7QCb6TtdWrFW+u1
rWfTGu287XqObQsErxlsrmc7mWz/bQSMjGq7ETs8gbUXbrKg/gta0fSb8NrnBEwFTDpr7u+0pn8j
avPP8B9pRSOZf5huRZy3rQfLk9/sedv1NNu1uQGMDIMAgwCDQBNEoH5eaf1yvbXm18lPfWu1qmtB
b7YVtbTHOne2lrle2zTyvG05Pm8bbxiqPW9bH6Z6QbSJnrf92lYxAgwCDAIMAm8TAZ0XtE7RNadS
wm9WjFLbQAIW8UJooJJ/PHvNrailQaXEar5TlJhOq8lc1aXqCNcQbX7nbdfQGCaJQYBBgEHgLSNQ
3Ruc5MOVIqBiJF1zDWsjU7OG2qTWvpSaDV5tympUmVpaQWhvDU2uIYmsPFlKzWKkDFzpYpWrR6ZW
5tcBpeZ13jbZMGh2zK0/Ht85/zwuEjit3LzbdxvcrucHDQKiDpjVR5Q4kZfN5/HZVYweKFNjojkt
Pe0FSEvoCskLclXGFvi8kaYSVNmpyWzrlub8ysvaq66i9FVKLtvG0eK1C82rzs5wGQSaGgL0tzNV
NzoTaAiUqwo0JUYndPg6UbpkdXQ9slSnqjK/iZvtyhWukoN39SIWDENqPSyFThadKFki3AXgk/eC
FKCilQuli1VZ4RqYzey8bWgJPENXT25+cGLuyiFPfln1LvwBAVFgUv88cIPljxY7i9pq/vyfVHGM
fQ2wUElKuVxzpNiTfYPa7ntEJdSekKRc/tZZBMd4T/B07uAmCoqpXBX53yNHhODDQymignp1wf35
i/6isomfhuy9iA/orG8oOLdyXzI+zhv2aNPdcb3WOhUP1qyOyCS0VMxTXfVy769Yfyu9oiwTYxBo
rghUtpTAoZhAwOuIYJRfxEmn08KmJP3WHf7S/5pSmHAaZMCWkMJAk4HKoGWU/xKmp4pLuUQlqgrp
OrJAZR1zNAnxSkiUM6qrX7mElqryXgATNGhFyn8pYYqANKDJR5xk6jzuVKoO/zXRRjtvW9dffE09
apcMKDy9dTwz4vu1cwcix3HIzAvny++3du6xFT98/9TG0b2nH+zQRirLQh6H74R1MUGwl2DFszdr
VxhY0bhDnYeh+4lTYWcV5w9/v87BRwXULcifLhkwQbz42P3pvUGJJDe9kFPFNi1GbqiY2KCUImil
iC8u2jZ2xR4rTbNUyXfvuvq8RxOoI1mQEGXUZgA4veqUwNn7P9m52rGmvVGrVW4gQiVVeNrVV4/j
bk9u4l6tSiaBQaB5IFD5bUtx6G9nkiavedE/mmX/ZCgaWtamN1KWIFmmKmFNdmG6uedUqs2UEopD
ETpJOlFKrDJRe8nKeUkOaeSqS22yfB2HGGwHNKTK2upI6kTpWSonURwgAGoyqsMk+SSTkqHUVuZQ
SdUSxHnbcHQIhzi4U+e8bUUVr+VqNekkNEp/Luzr++xB2JBOMGGuCL26hO7PwX9AKIuACUkgQKuH
mYEJnIfC4cGpKEhycv630YTHmvTH4sW/PQWxpD++9d+0a/0E7JTvvppMZCwM3+dP+uhB9x8FDluO
0PLOzthZT7/w3fYwQkbydDeRpa2zf0Q6djer0kMoQ+hVxKmL6PN1hM0GlsBCZG/Ckaefn0x2A0zY
lUocJUYdFUoRmvxgW3NjTqH3vUTavmV17uOrjm52OJp889fZ0yfD3/V0mfj52bVBd/GBYPiEkl8P
Xk2Rv7y+bVfw38c2gMC2Px+RSZCaHR9l6e3OQ4r7v+7PQC/Wz558PVUmf3l72+aDwbtA299SRcpv
B64T9ZJFHtgAyuHosMig7aEXz27DxW1/lI2VEQr14UyEcysnhz8T44Ih0KoHL6a/sUKc5QXdLZel
ndtM8vfF5WI14ufX1xIN2Xs1DaLy9PDfyO4ERdpvKw/ivIq04M3bQ49tnz39G7KfAJfFBAaBpoEA
vHmhInAlA0VTjhjwC5+dUFv0w05awVN18XOVLK/MvHthwgnK84N3F0XrEGQSda1ZElLpQUfVfydK
B4Gkq2s7lQoEyJDXKoWrTCLvMsiTXwZwr+n3HaLU80DRDXxsm9l524BaXmqU0gSlJ0SKLKKQHuHT
591Jz4XjORFOUiphn1MSFCG6ef74yef6pYbO/X068SVZqaTpkhUnxckxqSxNvbj7x6V/3Pkz98f3
p5ydkDirIHTZ7A3o8NUn7Y1kEo6FLGjhsYnozzvTnQQoTpz4oLQIDNiZBQP/6nEs8kj39ND/jeq3
9XLiksp6jLW3pSD9HvKdbKGNan45LRZdetLWSbbb2evv2AlTO9XUM6GAjeHdbKnDexWvYq538voQ
PooUKSEHz88M/LGDQCZlcw0VLujq4ZQxXV0MJfd2nndaMQapkuIf/Mmf+M26VUVLlx9LH9ShJbb1
isS7L7z8rGFP2Pbvj7O/emzkqkXu1nx1Zkl83GXRtJXrJ9sYqtKL0orI79LitFh4kEFYlRX111U0
L3DrgItf7YlK3fmeCHQZsIseBS3403PBjjZCsmnl1UOKyCMBp9Cnq7f34cskbH2EDzHFQRH507Io
t8VbFrjm3jm8NiBk3T7f2BP7W8/+7n8djcVS4kNRVfKqhPz8Ur1KzyJqosqNi4p2nLl6cwdT7QcM
qY65Mgi8ZQTIly9VKPUupghIApoM5BscaJU8H5tqZTFSwGsEhzK2ADNVKtJRwxxthyqRXh7V4ZOp
leUpPp2oLi9dpmaatGQ1yzTBVMrlJetWZSt0ZKhWUHyKIJPIKFxJVIGAQM8FUUgi2PgCdx+ulACl
hJSh+DpRil8t0WjnbddkiqqtzesSlEqFPresqASvTssqULH0VBziPQ9RYEISCNB1yMTFxTwxrGuj
MylaWSp2XRw2sZNIHucITDaS3Pr9hOvysC4i6Aw3wX3a5tj+2lhQp4nAGbnJYX+jz7/pLkAc12FT
us378qVkCUdXD1UCQRhydbDg2bjbxkWc+e1eBEKDXtdBnZ/y3LXTMEoqO+ZRn94TcFcG19zTDe35
4ci0T0Z0biVE3FbDOr2IfFbg4pQA3vk68M7TodUTJvdz5ilSXJF2sxFFxsMHHn6zMGpcgbERMjK1
EHJZMI6AhUd0c8I9+NgzpgoEGgd424xaNt3Fgp9h4WGvxA0yMEKHVy5AbhM2LuhAda2UV0+RFRUB
WXqa87mIb0roIC7Af4AGf+jKQ2z7roNc9+/Nl4217eRxeOcOyxmT+3dxLpesSMmQx5LRPcx161VR
iIkxCLxdBMjXN1zpBBWFtzbQ2itSFaeiMlUZCz/EckkelyeHT2IwJ2SVSQ1AVyaoNlFJVBawCnQm
naZyNZAAXwhCA5X849l1WkHipmNTdaJQZ4pTmSBbRI3JkgIQBYIKEIU7QkZJbeQNAg7Jrx8s4L9r
z9uGQzqa/Hnb8A/A2rEdS++qUq1ZVM5SIpYebgMESAIBCggx6jXys0ltNTazkOLrGFHg0x/JeMIR
p4QrEQroDoau9yoDXQ8pYGTWGv0WlbtmMLi3VIje5zd+Q7t9f7zrTrGqJ8wcHOL/fqlGDoRplMRd
z+44n/TehT7ztlqGn90TuKDPtMCPutm5vPv+/r8j27+Mcp04Ab47iF5uXb3ytJicQZ3pR4rgl0YV
tpD8+mFDCtkoIo7fL5p3DKU4LrtAhgw1HjC9eoSgrjRWAF8F1HcQqablwPlLLC+f2Ln6VL8vt07s
SunG54rTQjVVpUkwJINAIyNAt4skDVc6QUapK7yRNIFtolKWFoqlQn6ZTIkkMmTOUaqASUxJg1qT
SqokqDZRBVEciqCyU5zqiNpLkhoURKhOWxPhgyGsuSZgtqEdIFOlJMmsnERxdAgqCjeXLBc4EABb
uJLGG66QClF6xUgZshqkMJlKp+nyVdKNd9425YBVWW49mQCErUtvOK7T1BAZGyBHOzORg5MRH5kK
EBxkDUkgQFetLLddHHT7rzvPClVZl9etummqMy1MY28Fnce8hzZcScJD4LKiQhnC+eUVTA+vxSB3
dPp+MkgUPb5xB3kY0VVVstv2fT/shnYs2neZnAcuSX8an5UbveGm/9F5fTq1BCXy183SYhkYI3II
HaSlqTfTuzqSHdJqWaFE0GHgx0s+cLz+SgqJwpY9vB8c2fNH8ZDODhCtMrx48KgDlaoCF7oYPoAq
h5z0WxlSVPj07G/p1davpBh9tGLrnKHn184JySNV0KvHtenohu48iMV3QCaRUp0gXEtPEbqTiLvM
pSmx8ciRr68SF8gcO747a9k4dPUVKRgfGidFirizR+OhJ75y/WD8Pj29iEBbXpj1KpcYOVcWZsBg
SVXCDI9B4I0jQBo/uNIJMqo11BUmYJdZD5CWSEAgqxAVShCbhSRSidqyP+kF1nwlDWdpaSlpe+jC
VBJJ1HCF7GSoQabKJLLQKpOaDlPbuNLqqkS1AiRJGR0YIVplEl2sBho+vyoH6kkgHwzyCo8inajP
k6kqA18VioNBFZVSDSPy0BsCHc2wPxoeZiGc2PqoRdW+7eunTZOLw+GaOA8TS5OSs3/v0mMgMu+K
uKZCszsPb54sc/wQkkCgmgJ4Hsvfm/RB2x3ovXHvomRCCHxmjf3m6CN3PBvM9YPAFTe83vfcBPTA
NRd3jBwwDg3s4RwbHL0DhE3woLmJ374jEf3eaYs1eKwN/b01B8VX0oMTySDw2n725/8Nm+C9QcNY
ez6+1/efvz8eatJrnK/H5pFL+j5ZT4zGYxeeIjTS4AlbdXwf+Ue9HNbHlit+HoNGdtYMI6uyji5Y
EY3lPCavsMW/XIeeQx0j84a31kggJNJ0C2iHgwuenENth2qT+aLB/V58/9Xkj1bs8YbsWmHEt+jV
CfNRp/6eWC/Ro64l2FwD0gEHoBVI4DZ650eZs78JEoGXLKNXD/G7TV/6fMG6+edwTiiiFTjZuDqC
Pl8uiA8ImI3ZjpOWLbJlKW7/6n/4AY77TFsDo/hqMxdPtO7r6cc8B/WHryOcgAPdfktO9uuGQuOn
thMk/u41Vn76ib+XJDF40DD57cRZ1MQCMhtzZRB4UwjA27ZKVfSXMrypIUpdgYDXK1yNXD9OvFPI
LrzO1SsBJblSA4VJLzuXcWAJqJc46YpRUSCo4kiaziGTdDiUGOXVURrqTZBGrt7Z/9k924NSAAAg
AElEQVSMJA5whVYA1PTKAJMeBZrk0PkUBwgIJLwkTealHEW4xUCDAClG8SEKNJlKFQdMiqYIMi8V
rYEg2sFCethAq/VYSnUZeF/gsUAUOhS0a5ZrUFBtkl5aWgz5vBLfIBU+PMkpkwAiJNHp2Nj4kX7T
q1UJHbZKpURclJWVyc0KNSmJ8LZ+xuaZ3Emzzud3V9iMtLGxEwiN4Tj66jTIJRIkENDd4yolsRiH
x9MsGlNKJEqBQGv4NBmUcom8Nqq0+pVF8IENSk00pavkMgRbr8DwuURWSbk2k/YX1m37L0pcvW90
4q6pBe/vebcFVRlQo2DxYfS4VkGde9s/QLxl37t0BBQyBZsPo9s6AWvm8amCdFKrjKoidasHYkQN
9SsXoIJyEa3mCplMDbvRUC1RK+SlLAKhKsuqG/PezUsTJ06sZZ7MzEw7O7taCjdZsX9BK5pgE8i3
Ntx0IIKCgiZMmAAEPcDbGaLklXz7QSusrKyAA54c7LlUUFAgl+MeKJg5CyeRGBgYsNlsyEI+SHSC
pOlXsly6JCVPMukCNXCopFoS2dnZ0IRaCjcdMR3TCK2wtqaPVeKakjKUpA5BperwyYwkU8c8Q5QM
cFtBAGiKIKNw1QlUNegE0FWG4OBgvy38r7/wcLIXlKrLFEq9K/GlluZCC3MzE2NkbIYMjZCiBEWs
m+Tr65uY+NjDwxUqADaRuMKlAo3jmoDrCbWt1nZWWZtaMkG1oZHQugwV6PtliN87XipHUqRvyzMS
GlubmkMSCNSgile748UqinEEhJNYUS2HVwWzokiFGMfYpMKabzZPYxFfa7NBDcu085ZAUala7fju
N+4OdFMKampqb4UqQETf4etVZnSbDTxu1Ua/jppxSZWrB8zq9LC5FWvO1flEYHG1CGHVTGAQaIII
UFYTCAiUzQaCHkj7DfUHIw3eACSRbQECcoEXCFFCAb6QSSShEyXFdK50eSqJZFJXSg/FqRMBNYRv
jjpl+ceFwTTq1IHeCnoqSdOvkJESqMwHDp0Jpo4siLTWpJ0mAacngQxE4Y6TTFIDiJGETlVfG21m
521DI+HDQSAUcnk8MzNzYm0Sgg8Jjj4Pvl4hqX4ovBamf1yAZ2EN5lbYxrkhNWEJHVpqO8gboqea
vFzbhlWvGrUMm0Gg6SIAb156IC0xXCGQ1prsUwSajJJXaA+Zi2wYCEOUpHX4VMtJAUoMspBK4I1H
MUkOpYfKW0uCroeeBboHyB4COvOfouvxhiezwJcH/eODxI1MouwrGSWvZAPpSRQfiMp84JAOK8AI
BHUl9UAWuGUgQ4JMXoEJBKW2DpA2tfO2X1t1aCSXCNBH/VphRoBBgEGAQeDNIkB/84JmKgoEBLp5
xra64vYdpDnXyUXaYB0mqKI4lY00mUoJkAQwSRtApdIFgK5foPup9dPwj+Sim0OgoRUymQwICGR9
dAiIUgCSVpkUgCsZIBcQZF4Q0GGCqYbbRBps0AOETqupJMhIFUQSVFQnS3VRUM2ct10dOAyfQYBB
gEFAgwC8WyksSBqGt4GAMH78eLjCW5seKIOtncSjBLMhFotJzxXkgU8pbMoEDMlD335TrmFt6gbI
g7tXG8k6yVBdvACRUCjk8/n4gSACpYc09tQVHhKw+uSVbsJBHvKRYlTeKokmd942cVJWlVVlmAwC
9UeguLi4lpnhCay9cC11vn2xf0ErmloT4JVK3kfypQxTfoAg7TSYBCDATpNRuFKmGp4leLNDNC8v
T0+vpHVrgTUe70LQjWpoaAg+G9DE8KjuWOzbf2aqL5G2XVL1Qk0+5Q22Au47bi4MbkilcNvxvXv1
Sp6UlFdWZmBubg53HAK419QV7DQZgKkl8S8YaSqQAEKUJGq4Mudt1wAOk8QgwCDAIFABAdJ4k5a7
8pU026T9hisEMNhg1CE4OrI6dLDkwOEPTGj2CMDYNm4DmF1jY80NNTPjODsbPHokfvHiFbjdEECA
NMnwGJAthqjOM0Pn18Zgk/Kw9ItDbDIGq/9ZemX6bMRlsbh6eN8sdhnSb8Aj1igzyTWVZn4YBBgE
GAT+aQToJpw02MChLDdhtVXQJV5cXNS7t5kdcfzPP11lpvxGRAC+yTp3NrG1ld24kQ0d8rBwgDTb
1BWeDZKmnpw6mGpaxZvfedu0yjMkgwCDAIPA20aAfOeSpcKLGKL0ABzSYJNX8LM7dBAyNvtt36R/
rjy41x06GBcVFdEfgyqfE6qO8PxQdK2I5nXeNtkkaOSTyy+e3UlNe5IDHIe2lm26tWjb37F+Xy61
gkkrJC/MUwvNDarqhVDDBiIKxDXkV0hUyEoUsLEKX7u6Ty2XlyKWPq/yBifaImr/q5DL1LqqFCVS
BQe2MWGxSgrzWCbmzX4mSe3hYCQZBN4WApSdhgKBhpcy+V4mCfIKb+2SkhIeT9WmDWz9x4T/EAJt
2hgkJeXCDERwuGEAm3oqwEIBTTrcAAf5FAFRZ8vVaOdtN1YnOTT79tHYxydzBg3pP2iqAbT51bOS
C7suF2aKe4z3AIw0T4c8Zrn3aGJjTfTOtPWLZ4+x0pmQL3nwUc9lS2/92aGqdWQquZKt2SVNow9+
1IXRAcvilm7z4+TFnTpy7FZ8+uhFW/o64n+TmTd+2nj0jj1CGch16gr/dpZ4yuKrR2fW7ztt74oy
4jvO3fSFEyv1p/nrHotEKD3dZfCsz0d41nJeo6JScVCXpCt7fwh+CKUMmr56WAe8h5E8J/rAyl0J
hH6oWPuCi6tj3DaN99QiAiJMYBBgEGgoAvC2BRXUlU5QL2iw2cCHWXVubiblL6WGlszkbx4IwB1v
3dowMbEYJpbDk0BZbiDoTwv5FIHNBmadLLfmvG0V3tmerYdYqAxGuGHTEpgpD2PeDXEJG8Vsw7+K
p+FpsacKRk1617mXiQVxgnRusszI6t3TQeGmNmnuPg7UP5Js5Pbj9ZMeksj/vffpuf4DP/GssE8Z
EnjsunhIWJXNRqqYid5LVkSedq/gq4qvLNs1OmCrJQup9U16fvCpSeA6agGHTdePN/T+DMzws9Mz
Qx6ktRvUChVGr98X9cWaXW1MWOCIE6dsOUzYtIMHG3gWx80POJYx2JM4JhM/iGppdpbM1E57LKU8
J10sFFlqS2dXKk6RFfFDMG/Jtj3W0oRNAXvaBH7TxigvbOUuF//1s1xNkRq7/VzHUeMv+4clbhzm
3Ih7rDSPf0ZMLRkEGgEB8hUMioGAAG8nigAa3tfgb7VoUfG10wjVYFQ2QQRsbPRjYgrgGQB7TH8w
SCNNVhieljpZ6/Jm4inosBgBsdSw/xibw4arHhzXCB6aHht893LBulKN4uPBerWEOy9bGHkqZerM
GMmtgy/hDwiIAhOSQIBWUVOYf8+z8+rlinlpl3d6e7rC38K91/CmwPLk3Yv3JsPuqM9PfDF3yy/f
TYKkL3CS/OLaJQkobpK364lY2EhcE9R5safRkI72eG9RlpGtg72dUKRNAw5Ps0doqQSZmxJ9AE9v
IJ9xziaqEqmMxSV7zlnYZkNQQfkiA5qvLU27sXHFjhR8jhdCxQk7Vq5+Rp5qRTAqF5f19Ja97yBr
wNjIqbco/VmWWJH1+Aoa0sPVVF4sVbO4xAcXt+2wIRcuxVKHbxHKmAuDAIPAG0CAstCkwQaNJAHv
aPI1DVd4awuFOr18b6BoRkXTRwAW9xEPAv6SIwnyqYCakwQVrUdboLdHe942agbnbasUqpx4sQMq
S44UG1lwWdAjgFB2QklxrgLQgSQQ4HApR7+gRCZJe/xHYDxab8XnGfQ5eX22g/Kad//vnk3q256t
TL0bWwL+srL0bvgewTfHz4bkDvOFpNN9vljkEvzdFyGHurcod8YVsmLkaoMNsiaoKFebYCieXjlz
81bY4/QRq8bj87hwcvj3W8Kh2xwh709XfdLTCI5nyYk5e/bqlciHQ77aiI2uNhi5jlry6ZH1i08t
WeN9Zdkmp6nf9iS+D7Tp8KtTHJXCtnRFN57nDMRHkoXtWx+WkQ5E37mBHzkZsXgmNii3mP4hQ2Vj
CAYBBoG6IgAvGTILRUCUpOFKBuodDTYbOJV3y6proYx8c0RAXx9vmgbPADwA5COhfUDKR1jIhwf4
pM9NEa9tbzM7bxv2M2DpcWSqYjiiTFqglOQp4CorVkEUmJAEAlSbrVDcrP6dR0/7O+Dg5YF2PKs2
7sqESydC/obzIinDTgjDLvnLVvl1tLK36YrwknyesbkpMrW2N+fRPpQLXyS7eLagechUOSTBtnf3
7j/84/bo9MUH2dq0EVN37NmybfU7kYciX+AzodlCUZd+7/oN7hi29WJORS/YuuuE+WMz1y9bXTrx
G79OxEGcWi01/rKgb0QbRO9/sWvLjh1Tfa4dv50GTK55i/bpcXkVC9IKM78MAgwCdUYA3q1UHupF
TBGQRNF0SSoLQ/ynENB5GOhRkqbQqNvT0mjnbdN8SapqDSagx8GqlQlLj6VSlqmVZarSMqVcrVZA
LwT+twRJIEAVQoxtx0dGHx7jBXPF8o5O7eD356vWHTshJK7oKFM5KhBKzRJ5DdPE3iEhJav8o0D3
RHGWsY2odYd+Y6f3vRL2CDrBVSU59r4dzCA3S2gtgh+clcUzdWjp0nPER++gsEcvyT5xjX6o1fN4
PMXsXlxqlRt6VfjUUEgQfHHhIMuKQW1bmCEVfBb0BmywsbaAUQFce3VB1mORs2m5XSdyMBcGAQaB
BiCg88IFTdTrmPSwIQoE+FgNKITJ+m9AgO5nU8+GjoWu/Di9tuXa87ZZYO3e7HnbjWK2YSDevr2Z
Qi3XN2RxDVhmLXi2boYcPkvfkK0qU0ASHqkvDzC2rY1IX2yORLu+Gt/JEfzpAi23ml+VsgAV6GwY
zDIQoshMPCiuCWqw/Qrt9jdqWItF8HOykpAAd6VbufXOCInIwVxZfjriw5w/BKu/CKninGeI5Gh0
gc2+tePrCMeFW3bs+cLs0PIfb5VQKRqiQnFWbd/JCL6JV79JM++ni1rbm/Ks3V3Qsbg8rL8wN97Q
QB8IRVEmEggpDDSamB8GAQaBBiNAvXxJgnz5whXe1CTdhM12aWpCeuqrN3AWJ+yxnpFRkJ0tFssq
ejnl8JZGhZ47GPwEvAplRszBbeduZ7yBcsvV15MqRyDj9o09e26k4s7QNx8os009FdTTQhZGRuta
MHwWqsvUqjIVUuNt+PATB/AqwB4hBVgAug2so+pGMduwn6vIW2DbC0lylU7eQveBZvDXpq+JJEcB
TEgCAXo9yy2WocvqsW6z+rh6Lzk71DVuyuoThKsr0DiirtjIQdAMZRu6fDo27vM+rieelU9J41q2
H4JOP8jCPc7yjKvz/eefTEdhm7/+6UYqcDJu71roP3OT/8wfQiynf9QV5oDzHPtOH/5i3dyZ8/2X
JA/37wpj1Yq0AwtnzV+/en7AJnOSg8vEoSj24v2W/vOHuADdZsSOqcJbDzLKn6PKxfHs+3zhm7PO
f+b8xRtEUz93h2FzXouPZo04uGLWfP+Z+9LHfNQTHHxFzN+nB73nwTjbBMbMhUGg/ghU+XolzTOV
REXJd3SDzLYsfpJeP73yv7kR4vpXXjdn8TOnNh857YnV5dcpLk7ZO2+ugfFwkWiktfVwYwOf7VE6
3YekOmXkN4FTVj8BP0T2MnbKV4FXX9J8n9qXWAmQ1Qej6w8JDYGXEb9/8cXvGbXpgK19bbWSdGtN
Ph5kCvWoaAXLf6nHqZxViWpm522z9TmGQgPHwaW5ZpKkR6qseAN9I3ZBnsy8v8TCmwtJIKBpI6/d
7ujDtPYKhiw/7bNYThxls3aJnG3I4+yJ3oMF2nwSGUwI8tpt0mQB4XifhXKOoXYNFk4XDloza+Gy
M+47RpnZ99uyox+RR3NxeOerDT1kcthZxchQaya57kPmB/YTKxBfw+O2mLlth1wKi8EEBrwKnxfG
HqNmeVD6uO3Gz6ciQPAqFQfd7W0GfRHYS6xgC4y0qsw8hm/a5CNVIEMjQ9BeFHsmSDhrE6wHYwKD
AIPAG0KAeqtSBCgm38JVEg0rdmTI7WE2pcpSxHelzYath86nBzd5TAndFn1hTgd9xG8de28/snSs
hx5tlqylxpMCEfINWL75y64GJYXR1yJLq9lUhtcKXkbEe5k4gIv+StVqq/0vBsQoK+X3bwKXT/ly
+cNAxfe9tW98mhJZ0iSDyUE+C0sujcQrfyoHGgJcHjg9SOO3VZZsGId8MKgrKKMeFVIxRCmiDovB
Gu287QpmqWFtL88NzrSBIc/Uwtiml57t6ELeu+l6PVNtRuVCFJiQpONtl+ckKO3xczyw2TpJlaMg
RJuRhtNZJp6BK3tziX7uSvIsLs/QqNxma9J5hkI6D/Z7NzAS6tjsSqpqy8DKtTabzMMi6kBCz7Xp
vZbZa6W2WDJyDAJ1RoD+CtahSTerzhp1Mvi2G9a9bfe+nn37uppxpMHz5naccQG7mLKkeR37zfs1
Ccinv+7QG7AjOOzcAOyaT/nuUhaho/TawUMdNc76pkcF8WunhAJ/ruegGQeTkPLVLwsCf7n+CkvK
0g8uXUq69aPmhSYSDmw1OgnFxCX7UhjYbDR9+dF1g5ztTe2dnYZMHjvS3VCWcmOUtodg0nc38stz
vCHKt93g7m0HjBy6N+LgdFC5df+FDBUSp2yfMZdowpTvwtKB/ejQr0HwE77JQG/TIxlKCTuk7beY
+11oCq4KHQEcJ0Pptb37CBgByTWQseEBngr6k6DzkEC0fkWAYSLO20YwAUuFwPdmK8pYpdBDrkSl
aqSqp1Zcl0Yx2/A9wuKwDQR8UysTS5GFraMl/AEBUWBCUh0+WOoFGM/cyqhRWlav2tSYycDcqmEf
6DVqZxIZBBgECASodzFJ0K8NRSjkXlBoRGjw5WtPsTnNfX4/+pkU9+YqlM+j0cMcghQXovDjfkOv
fXhkjg9KXDzvGhjLqL3f9ptyAH0VEJ1w+GJIX2O+g+9XzpBv+p6Ni4bbwihfzOXEW9nQWS3eO/6j
KYHXt108nHB14fOtm1x8g2EZjKIqnfS2vHgcB9FtM7rr+rJKg4kXD+YVhZ5b1TloccDFlOoGvOnK
6kTDRlJE4DuNDoAWJca/fLXXd9LcfVYXk09c3GC3eOiyS9mo5Ts9PEHK0+/cvY9gRy6lvtPF6BNF
eYdX+dxf7BuaiGGjECDVEdeM+/1mBoX7LkwvOhN9dYwFLaXeJP1h0HlO6q0TMpLnbSuISRRguRVK
PMIN1hrghmhpAzr8X+/O1q/eYJjZXA78IYOGdbfUr3gmF4MAgwCDQCUEqJcypABNXSsJ1olx/pet
UpSb2XFxq77uVuXvu/KtKUAbjCg7hySvG+mk4h3bHo67o6WR564j1OfnwKEdwK46O4FQSUds5Lx6
dXa20keUHyl+cS4EeroXTh/gxEd283w3TQmJShKPNaxCZ8Vqa6oCXl+FwHdu75Zy9YfAM2lPiiAh
I1eKnHRlKmQgI7L4UQbToCLa0Pl20bbur9nakS1ywi1C0vRz4ZDv/Onf3c0TYSpS4o0k8YCOrcFs
R7dy6e8lAgCEvdqnnLgc+FPmk1yQzMwpQc7agUxticSv0MwXoZCQTbOWS+Z8RkBXIbk+EZ0ngf6Q
1EedNg9z3rYWCeaXQYBBgEGgdgiQr2OQrfK9/KbezmBQz56iRmfJCV9c3IUmLniOEAwZa4OdgzmQ
NU31UsjJ7OCI0YdxSeeqSiNWk04Lp5YIXT9w+P4sL/rQcmnojEG++9CGI1s/bM/bF5IIG1Voa1jj
L9/551cn4MglYlEt1JBnXa3NJobHQVCZ/tPM8wh17uxkeAnr7uPd1dXWs/XFD6c6uRqC+0l09mPX
nK9Mn2fw0VY0+MjFMe0NEkKiiW2mcZZKQeh6qui34J/P7Jq7e+DW3V+FHP9+pE0loTozyIeB/khU
fmbqrLSpnbctEJRvTFbnxjAZGASqQcDICE88qU2AJ7D2wrVR+I/I/Ata0aSaQL1qyaFKclk2XHHn
pEqlUCiAgCuE0tJS2FP577//Bj6cADZu3Oj6PwBFCCZgazuiVXLwYMPvnQgzuDJ0eXQFs61TgmGn
Xp1RyPWFARd2fd0JvcwzbutqaIEN+9N7Cdkt3a0oMy20HuAD/uWxoxFew00SToHD69nBUYiwU1pj
cBo0PAAFBW4NGGsQsHqGtwWSPI2MvKvflv8MNEwc1F+U9MMhUFBYANazWgtMK4FtZmVpRotXS4bE
nI9wNstPDVq8ah90E2yb0dfR/j40ITwzrZj/bk/r3Bep0hIVssbT4NDzlAeJBd7WhQ+hUl/16e3O
2bvmPlj6V2IVwmDoBlnGkz+jOQNnTW1vL/fwO/48s3wZka5o7eJw/BcEfX19mFMFVwhwCDcEeDzg
CrunAQFXOEQDrnj8F+80rge6XzvUy5y3Xbs7wEgxCDAIMAjQEKD8J9Kikykkk+QMGjTIx8eHlqPu
pDG9N1zYa5of9AZPGLrc4eeFE0GZpqe64gRuY1xK90Urjwf0Cd+6ykM0xqPLzhcK5PzOYMiydcqX
1rsTQACkjHF20zl/7F/lmzilh5+1R0CIz8TbF8bZYwVV6MRsKnBE64oOb5veOSQw0LPlGFHLSQP9
theUmvhADaODuoj8/kYu0E29nBhox5mIWpG5y7v6KW11IEJ9e0zrNxRsdp9tIQeD57TFTQg5vGEi
Wuw7zdp6pEeXL2/mKhHHYfy2kSj6eD+XeQ+R47SvnKO3Lm8p2ol6DEbo/uIgPDCvRQBIbWNLMvyG
TjPn+oDNRr5TV49rXYd6VSNKPgn0p4IUpPOryVoju9HO29ZLS4uhvklhyyCgqUB8oWo+VOl0bGz8
SD88Q5AJDAJvEIF7Ny9NnIhfdLUJmZmZdnZ2tZFsyjL/glY0qSZQ71nK26a9zcDTxgH8bNLbBiI0
NBRsdnFx8YgRb3IFplIsLeHyhPxadT4rZVLoeTYwMNTuOqUSi+VcA0N+pXlHMjGsG+UIhfT+81o9
3bDdCt5ohaMvNDMkewWIGhoKYSJYXapaq8JqFCKagAyEhlTjcPOhUXzcKEhFQlxDcb6UCwQlpKtT
JRPDMt76QKGrCaHTpwug345ytUlvG67gZJMBnGwq1NLbDg4O9tvCXzy7fQtbvrKMDff3RoLc0kJo
bmJiZoGEQiQ0QSUSdGvNJF9f38TExx4erlAEFEdccWl0Gsc1AXv84O5XC0zl5jEcBgEGAQaBZo0A
adcbuwkcoWFtOp3JanD42HzSAlso1HqWNC6QfMKkVeTVKsYXCvkVK0TVkCJqpajBQpWbgJuvVQup
JAmfF1pelb/synqqlKs38408J83svG0SLGh5zK0/Ht85/zwuEjit3LzbdxvcrucHrx0SqDfWlTPK
C3JVxhZ4W5PmEtSSvCK2uWmFf8fNpe5MPRkEmg4Cb+TN23Saw9TkH0cAnqi6Ga/mdd424AudVFdP
bn5wYu7KIU9+WfUu/AEBUWBCUvkNkD9a7Cxqq/nzf1Kv6QUqZdU77aoL7s9f9Fe9VJZX8G1TLNml
RWvv577xlZRvux1MeQwCDAIMAv9lBGB9YSOdt90ofigY5qe3jmdGfL927kDkvgS5foX/3JdAFJiQ
RLfcWcjj8J2UJ3Ep9+O+b1uf+emyYDfngzGVrbP44qJtY1eMsWqUJjbe02jhu2rA/oA/iaURjVcK
o5lBgEFAgwD9dcSA8t9EoDH6ZprZedsw7+PZg7AhnWDdXhF6dQndn4P/gFAWAROSQID2cJgJTTiI
w+FxONH7Pvs2LJlIUoav+SwoRqLKfbR+OHbH/XdcxpZZ/vTbCf4HDn2LHfQJu1LlKCl0/UqENo90
XfzbI5pOpM6NOYXeJ9bxyyKDtgf/FbJ2+uTZ0w8mpMcHY2Ly30+JE8Zkaec24+js6fvicvGaxIyr
v4an4qIUL6+v3XUdr7IUJwavJGTIKFK9uPMrkWX7o2y8J8LLm7/uPXb2N0Lm+rOUyCAsvPevWKJX
QfLoz+2E8OTwp7mgK3zzhshsXBBSvwpdeRAO+Ban3ibqNvlczCtgc227vo9OxpAyWI4JDAIMAo2I
AMzxaUTtjOr/LALN67xtsMp5qVGwf1t6QiRKC0b5UfgvLRiiwMRJNLMtRDcPbP1+96b1v19Nbtmt
w7HZZ2HdI5Lc2/az2KslO3TOkPwZN54k3hFtnXAyDqypIvf2ic23nC/cuTj99tozsYWth33uD9sB
/nxl+RgP+uOhkImRmy05sUGVFRX+R/4nm7dOG5T4/cp1Tss2/29a/1OXHsMRapE/LYtyW7xl34H/
TdPfHhBSSJzATfa5q0tLMh7AgkyUcT843OHLrfsOrP+4M6ylVLy8tX5/6Td7Dq6ba7ln1y2w62pl
TvSFYy7Ttv5vxuDfNq5IcF25bsXM6D+uvVSg7DtH9txz+XbngY0rZgZvWfCkwLCVW/HBCNiGAUlT
bv2FnKz1M39ds2fw2h93fjf3z20/wyIQmHpi2QmJS5rCwXl0RBmaQYBBgEGAQaC2CDTeeduNMpMc
tjTQ55YVleCdV7MKVCw9FYdYCgFRYEISCNCb7tq+nRsXcW2Exs4jRqB37uXOahcZFD9ldlvey9Db
KKvV0QMp6DZC75VgH12Meh3dPMleILNzR8VgRTmm5kBY2AkqnjuSn/LctdMwcseCkmI0atl4R1iQ
YWFk/8FK7xYWCrYI7S9RKLKiHqDBH7ryENu+6yDX/XvzZWPLF21oKVNHLxT0Q7DDl+8N6Aqf5QVZ
qQhl3Tl7FmWdR+njYBRapSjBakWmCmSF0IQx3Zx4CuSKrpSqZEnXbnq//50VdJeIunwkQin5sve6
D0f/u1n4vmvqpZM+Y7dycxNgTwbj62dzEJwuUIxPBudyRe29bibnv9uiPmMGdGAZmkGAQaAhCFy7
BruAMKEZINC3b8emVkvtedtlSK0HnuobPG+7Ucw2jBVZO7Zj6V1VqjUbprOUiLDI8BIAACAASURB
VKWHx+chQBJ9MAnMcM9Bg9tqKmIx7guPg3+eTz9/Yuny9UiVlA6bEvTp623B6XR0sFUruhlTVbD8
cKhKxWDm4BD/90s1ctD2f+FJXtREL3JSHBupoI9boDXPFRWUn7Ji2Orddcss/z6+7Zs/+n+zc7I6
Jwe5ubdt54bclnq+a0Gf802ba6dRpihGRsSSRDIOrWRZtXsf7YmKaR8f4TXiE1NFJpwp4OXevr0Q
eczrZGiNly+qcp9FuQ6YqlMfJsogwCDwlhFogsbgLSPAFFdvBBrvvG2tUat31arKCGNFti69paXI
1BAZGyBHOzORg5MRH5kKkEyBIKniYFJ+iUSJYD8Xok+h/ejPL66asu72wsFuAsRrPaAHisgy8PTu
3sXb00ZQ9UeG4ikSVzLbLANjFJFO7cZfVTXBr7X0FKE7iXhEWZoSG48cCQub/WfMSzjI5/L+I8gN
lygXF/BbdB475xt7lFisQlbtOqC4FI6Ns0sb15Z2xjUiyHfp4xh+OwF/YUhTY9KRqRGYZWHnyb2C
t/2QM/Rdey7i2Xl4oqgCjjVoc3Gy42N1spcRCA4lB4oJDAIMAgwCDALNEgHNedtwKqhKoVSXKlTK
UnwCGBg66G6WN2AUtGpD2ECMYDNXE+dhYmlScvbvXXoMROZdEddUaHbn4c2TZY4fQhIIUEXYoNhJ
Xk5kdMXZ+A/d+sNYdfJ3I6wxSzBy++m4biParsKRpaHxE13gV0hWmmtK7sov6PX95++P98xcc3HD
R+5Yjghcq47vI/+ol8P62JK70mMrCP8bUS0WASXo8+WC+ICA2TiL46Rli2xZqLB1P7Rx9exQxz79
PHC/NRjw+7+sDYoCwn7QTHs+TBnr9/XkzI1fTcZpbp9uWeBTSS1OgQB8x37+o+IWfTUdR/tMXulN
bDRs26GnPbo5sCfekRdxHT4OmLY90D8YR7yWbJ8jEt8/hUavs6W78TiNCQwCDAIMAgwCzQUBeP8T
523rwejwmz1vu1E2N4V+fIm4KCsrk5sValIS4W39jM0zuZNmnc/vrrAZaWNjJxAaw+ZttUdfIpFw
eDqD1xVyqyQSZSUBWLftvyhx9b6xVe1IT8+uUkAnAJ9PfUqoiTiPisOkM+Co2LxyEZiZJpPrcOgq
K9IKBbj9fO2xOBXTNDGFXKbi8sHZLgid/pVj4IHOFnDT/1uB2dy0Od7vJru5KYzEQdDZ3JQ4RkRz
lEjjbW7aHO/jf7bO5OamsJsptb8pcZKI5jQRcpNRcmtR6CQmA7npSg1br2g2N/3MzUokgDNTZKXo
crzCwlRgbmZsZqFvLESwM1yJGCX80JQ2N4VGGhoJrctQgb5fhvi946VyOBlW35ZnJDS2NjWHJBCo
01Py2gPH2IIqRqhZpp23BIpKYcC5xo5s8Iq5FXcPZnH5OjvpYw7NiuPKV+ZU3yQu97WuM1fzTaDm
9gzcY/Xfs9nVg8ekMAgwCNQaAZk0X8Exq/u+5ToFiDOylNY2ZjX4VspScYlSd+/0Kkovzc9Xwmal
NWjSKZqMZiTm2DtbVpnUXJiNd972awxa/QCCzxD4SBEIhVY2do4tWjq1coE/ICAKTEiq4TulfiVW
l4tnYS1slCZWV2CD+SyBVYVZbg1WyChgEGAQeLMIKHMuBV8ODr0cDNfgGxFPc96IelnCZV/fvU9f
Mx+npqIyrgXrGQwxNx7UcemNhuzXpMy4YSw6lkcUpcx+snrS3AGjlo4aMGXUvHMZxNxf8aNQPe6g
Pn2GGHD7rQ5NJ+tUuXRlRvQovUHm5kO4HffVtV13fxgzI1ijuaY2N+U04rxtvTLEZsGM7DJ9NuKy
WFw9PGjLLkP6DTBMDchaI15gmKGXAbxkEzNzC0sr+AMCosB8aza7xgoyiQwCDAIMAvVCoCRvjd9y
P99DISHXd/kF9PAY03HeZVgQUo+gzI7/bt6hSxnkGheD1rbUsRp1VyZLmtVv+5HYC2VloRPOBARe
I7aTqrsaWOK6RRSwLXqqMwcpU25wrWd6/G/NpVPrTl36edt7L0RdgqGlQo9BRSVXHz68+urixOW+
t3Dbqyi9NGjil8Ijh8vKrl6dcMtjFSx0rUMYufFglt+yS9l1yNLURLXnbePDubn6XDYc3s3Rg9O7
YHcfmNwFtrzeoQFZ610mk5FBgEGAQaD5IsDF50D77vnm8OFll8qu3t4zGA6K/uFaQWLwPr2OOx6B
uyxLmdex37zgFFhAEjxv7oy9l7dP6jdge7wsJWpGxyl6ev30Oi7dHopTgz6ftnjrgYEin4OPpAiV
JL0knWTVo9DgASCm12/U0nOJhP/99NcdA2aEhh7cB0wgMiqhJ34WFYLmjHCHtSqmQ6d2DjyXCvp/
nbF03neHOmJVm649ip5H6PzuEu4eyI44R/D7jdqbRFemTLm7GE0c2wG2qpIemBLwc0L4WHd58Pbf
Vn93rqT31KvDo449KkUczall0uIi5GtqANtpVC5dlvxLeOd5Y/B0Y++hw1HgfTDB4qfnBozasXoG
BmHGweiIXzdhNEYFE80pODhjLo7qrYkCGDitFwQkbv8bUGq2odHO267riIMGQZgj1myxZCredBGA
k49rWTl4AmsvXEudb1/sX9CKJtUEcmdpuJLz0XSmpMH0NGpKGnnkNtzxEiKAqavr3S+Sa/aK6PhO
F4TOh99/NYqXjKIRnImNuPLn0agoA++MnPv8/r6t932mT53W2QQpi3t+8/WagdZXVn3t5xvqW+bf
Aw6YDwmavmfr4JY8ZXJOaGhMgBLlRxzz9N3tu2FjwqCSz7ssd3lhUHK4v0JcGL5vU3jW1G2r+sxd
vun0l4NmYMtadbBwbYfmxuevcyl9dn3rPvN7r04krfu6n2fokXvHo58e9tweOWfAQHDIe4T89nCk
WXZ+BStQUlSAfBxhGq8y5c7vosBLzuLVHb+2/iHAcd+0488GBnzUYfO55BkdXBPDgr/dcyYoJPFi
3kKYuUPfRUNT+nJPqJwCEviIY+GI0K9J4k/bKhThIcfbHNmf/mWGyPPLfdOXp78audJ62vmnw8aj
W1P2OSYotlnnF3CJTgd718HP0zCGjRrg/sNcK5hGDY8HXOHBoKakAb9+U9I0FdbTY+vhPnIOC7H1
EJyUzWHBgdkIvG/Yf0xRt/ldFTBgvO0KcDARBgEGAQaBuiFAN1lgsnUyFyH0VeD5vZ9+3NeG7+w1
2E38249n/n6YiFAmuNYt3cCeIa9e7e2F8BbHWcFZfh7xCJaLLp/T3dmrL147GnT+CXbCwR33Sz71
6Ry/vhCRK1RwrS5wQQsRinLRhnuzvKws3VoZe27Y/7GXTZsOLVGIBDar9BjVeZ/vsu+Ck4VmWmki
S/q9pz6j3MASi1Mze0xop3x0IXzs1zP6unbp0AcplByH1jYIu//Wnt5fLpgW4IPmrbqhMxxPlU7W
Aa4cvIoGgIAAq5XnbPvY1b6NvQ/qfG/bIHurll6e6FWhim/j5INCx8z+7YnUkJzBK+rhGR1G9jUQ
WZvbRXPeNhhswmyzUBmMcHNgbJuL8LUBtrcBWZsbiEx9GQQYBBgE3hQCxtrdlLOeJ4BOn/bmpPnm
Qpcxwo44dKSTwaeVFenPpoTuEHl+/dxE5NXRGZLAlMGxCISMxnHXZChfx8I2ssCShJAEeTqBEyzG
DmxVAfie+uRHw8vHMSigtZlGCht4Kg9JQH26z9l4L2R4mN9MgxmX6XZX5OkcHpmKK6TPdbIGh16B
iJZK5RIel4eyspCJESQK7Z269+29Ligweusx/FVRuXSFMhfaSFRI9hL64fu31g7cl1cGU0rsUIOY
Wdvz6funGt7u0XLQr4l4L5Ksx/GePk6vXYQDkk00UOdts2CONpvDhqsem4sXNumBzw1Od30DY7br
ixyTj0GAQeA/jMDzp0mJKenXgg+19D0OfvDH/SwtLOwQun7zavTez2eGVIVMbjIYeL8ZH3e1kCZC
OmwOiRTYPqU8z5bRDLetU0vQE3w+XSmO/z0wEfn0cNUaPBAmDTMQOkHYtotv9KY/U8BIi8MP3A8Y
1EJHoGJUlZ0h9Ro59uy9L9C+THxikjZwTUxRUAoYYg5SXI/OV3JR+M3UxEcXeiy/X1DwMiL0trO3
LVJKxUSFsxNTYdMqsM1VlC5sOcvn/t7zeMuqh+HXUEAHOLChhqAUF+QLXed8H7gBocQcbMpfxsZY
WDdjqw17eTfSedsVRjVqwLQeSTDCFBcZEht1MfVZFGRv0cbLw2ugm7dvU55JLpXCmD0H1t1XtbBc
mRb7mNOiva0AaQld9OSFeWqhuUET+hZS57xIYVs7mfFqWydpTmoe29rBrBn/a6nHs8pkYRCoEwJg
RqO3rnLZijP5frVw/fKReN51r24+6PjMgV9ODJjog4KEWnec0uzYuS9C2z2Mj0/8ajAMh684HH9p
uneAJwr0nXRmw/4bQ0EQO7L2Qyae2/BqqO9HgRDx9LsaNAT85jQkQBaUJgSnH5VHSIrvuuviF6KW
Pjj21aqiAbDoWUr47VgSjH35wlJP6BWXn5k1cgrxcfHVkYNavxxn5Tv3XIVGHnv60YyOXcTTw8QP
/UK6bFnwU4+E9P2/Lt55tM/4QC9DcVSwcZftnp4oOhqtOvdbB/y2qFw6mhq09XeRH+FV+sWWeGHt
EHDpZBCQnyBkJUuSw609N+EEz4nRbYUwtB64HC161Voj2wx/Gu+87XrukjZw2ISaYYTJIBFndry8
u3PttFbIohcWzr35v/3PbbvO7j7cH/aa0WSXxyz3Hn1OExl5+PYm92qnWWiEqvpRyuWIR/wjefrz
+5PQhsgp7aoSq4knfXFt2/CpJxByQQg+iRf8fn+8h6BiBskvnp1LgyKneXK0hAldQF0YvXBZ3NJt
fpZE44rjzxzL7PDZOzV/89IV6NAF59efcJv3mRMP9mhTs+o5EiIL9/9KsWDL4Ja6sFZXvbQLM7co
F20Z8g/8a3n6MGLUqFE6KFQXffnypa2tbXWpzYX/L2hFk2pCXaekXbhwoUePHjC3cdw4cJTfRMCb
kLCFeKC6miCTimGPLD6SiaUcIbkJiUoslhto6PJcSpm0RMER1nHjFKVYnC9jW1np/nsv10ujoA4K
rmZOOI2NYN02VxSTXDZdGbzJJcj11amRlR1lqF6+uJQvNIW2UKGK0pXS7PxSoZUpTYoSr0QQW7gI
hbjyYfOmnOy9Zu9YUSWhN8w4dizTyMgIpqGRu6RR89GAqPeUtLCwML8t/KVz2jtY82ESglzNvvlM
bmkhNDc1MTNDQhNkbAoPALq6uintkgY2OyHyZM79nWvnDkSO45AZ8Z2V32/t3GMrftiZYO3g4j2a
stzZyO3Hyyc7meANxnnVP+013Cv5s1/7fICuR38CX22txhw6z6lgTWvIWJ4kj1s+fKpk3qHrU3qC
EmleRhGH+AQsl8CUoI2mi4oiaOniK8t2jQ7YStps6B1JiYpq028gTaCOZGFStMDlHaiFOnXL/EPj
t3zjUF3vWI2K+fDYV4Fq9dXjuNpB9xgTGAQYBOqBAEdfSOvQrkIBH/a1xIFPGCeCBDNfhZXlgGSt
bB2hQ3sBO29VcwW0kvALdaiyBI5976LkltBvbzV2YbLNuc87TkGezkXR2Z8EBU7WTl+H6lnxdatd
Rekcw1p+Q+B6YfQ0vrjHjPVD3G1olW1+pPa8bYR7y/VYSnUZHIkJYxgQhZkA2oUI9WmX1uutT95q
88BE+qTHF4Z0gtkGRejVJXR/Dv4DQlkETEgCAVpmU74JBybJ89hgLSSnA9Y9himTcJpIyPLlx+MI
Yt3C7T9umerq7em6/0YqkbHw6s8LIQp/Rx8+3vLBGoTW9PFc+FSKMsO37iaX+knj9hNZvD0XRmbi
kZLkkMp6CGWwhPHumSto8grCZgPL0Nze1pgjz7z0BVGE99QfyWUIeP4EEShCy0DqvNjTaEhHOGmE
DOrcJzdELsRxICkRx+f7z4S/Wxmy4uTzm45GkdnzHx0/ciNVnnVr14+nwk9sAYFdYTGU5pxnD8y9
4CBwRfSxQxkofcv8mbdeyORZd3btOBLyI2i7VKJIPf7LLdwwJIv6ZQsox8TR3WevnN+Fi9sdk4OV
EUCDwc87v37mtUQ8IRUHWvWQ/GU4VoizVFhtIU8/v4Pk//QsD6sqTr61iWjITzfSISrPuHr8CnE7
FOnH1x/BeRXpITt2nz2xe77/6hSiZrgsJjAIMAg0NwSETiJyHp1T36GnHv4c/OOi8/e2UTb7LbTG
qZnbbIBIe962Cqnx0rI3eN52o5htpUJZmPYAjj1JT4hEacEoPwr/pQVDFJg4iXbOpgBFXDxxOizk
xNXoV2BlJK/SSJMuK37+rBiTytK0K/s32s+9fHz75L1f/AXLCNLOrl7wPfrxr8jr16+/18Z9yv65
CM09fnllG0MkkyQ/ygfjJA8LGHGx26Er0U9+W284672dsNK/sh7q4SvMuI+Gd6EP8OAkjmjumcjI
6OszIjdeiiukhKskFLJi5GpjoE1TZMfe8uxkA+gqUs8EXZy6cseWTRs7WekbWbdGN868wN8l0gf7
LrZoZY1UioTosOc2o79dNivhzAliqSekKpLup3dyswbv3mPoGHskmrpsY1cRH84HT4i/hjovXbWh
l4FaJc4Qq4kSJRnxMhUmldkPLwQnDlm5fqrPwwMP0ohExGeLY44uDWvn39tZ8x1eXj2kiPr929Po
42827Vi75iPifDIykyLql9XRbeYF7tj19ae83SvOFCHFk9OHnKav3rJj67jOUDE4FlyWDdvkE1R2
ehZBqXLjH15AXb4JXOBYRW8FIctcGAQYBJobAhy+fl3OfmpuzYOp3Q2Z2F1Nc5vZedvwZaHPLSsq
QWCkswpU2QXyfLE8v1gFUWBCEgjQWyovlkiLc6UVmZQAjHe4zDs53tPeTuQA/egcJLnzR6jL4imd
7Ex4xtawR72xGVgjobU5dZoIF8mTL4SjT0d6GyKOy3sTuqLwLCmYbR09VAkEYcDV6RrmWbnZyJ6F
HQ+5h5dCVBSuFCt8kezi2YKSynka07NHS/xNxDXr4IoO7DsWnakwgPFpQ6fBnun3EgtQ4VOtdw5Q
jJvQu5WxuakLzDohgyLzcbR7K6LDHcaeDJHAxFxIjG5j4SFdWxhpOrd0qoxUEjRi0ZTW5qbmFq72
ROc4T4COBy49kD1u7Yh21DdaefUUrx5EohFDupnxuAYmpuUT14AfjQZ0a8NDLDuv/i7oUb6ca+Pp
emvfnvAHmTxDqqG6QMiQ6/wR3cyMDKmydCWYOIMAgwCDwH8BgUY7b7tR3q7qMrWlyIOlh6Arv1SJ
4FRMqRwfXgaz4SFAEghQd02Cug/7ZPyYCZ8P8bKnmEDoWiTw7mjJCaC3pqCEGeHQ9V5loOshBYxM
W6HgB3kVpR//PGnwB+dN3Nq3qcivMmZi75CQkqVtlTThVk6HVrDGEoKw7+z1U3vqH9y89Pjdl2DG
Ww8Ycut2VEzkZZfx3tTKTh2d8vSneT6edO+f8KV1pCBKgoBHF8hAxHEtdNsYn1tQ3mtNrx7pJGvz
l/+qoM/dsOKguNM7/vOn9449sGGxtp9fI15RrJqqlqtmKAaBt4BAY/hPb6HaTBFNFoG6PlHwXiTO
28bu65s9b7tRzDZLj2XVqoe0FJkaImMD5GhnJnJwMuIjUwE24ZAEAvR7Q6y3JxkcFHnhbkKhKvva
5g0RptRKATJRY6kFniMHoe+vJ+OuZnlRkZxYr19xgJ/n8I4rOvcgFSSKYiLuIjcjep9tJYtv2/uD
rmjP8p+vYZXQf50Zl5Cd//j7iBkHZ/f0dAIObMJLpFR7YRkIETmEjvO/iEj3csBLOWAUWVYkFbT7
f3tXAhdV9f0vszAww7DKOiCoyKKIiuLyyzS11DKXLMtfWunPMqufaWb6x1wrt3K3zLXsl5UJmUua
UkrmgkiigsQiKqBssjPM8mbjf967M4/HzIAsomD3fvDNueeee+653/e859377jJk4txxsvgSenmk
Q8fIPsn7dx9SPNVTxkhYueSlXOvW0/QSY9ArkUJv7ofpXGV5CQVKVJUZG51Xr32UAk2MWv3WiJOf
zTtK7/gPgWue0CMsCF1KyaR9OgUzVxkBuAg79JChS7fgswVS5WZkIZm90FBdqfbtMeyN+RPQuRIM
YdbR6yqkvR4bk4Xs6/puo57ygvwqxnKq6m5xGfPioK8sLCizVhtT0eSXINBqCDS15W01Q4jiNo3A
fXlODHoD+DmtAdY31IDn1uroL9z6GrpPBdF7dDwbhKeO+2xQsgmJsI+rQ8BIrdeE7GLkFDAcdZ6B
usyUBj6XW4KACUkgUI86UciCJ7dPiRww/IeOzPpDEANRo/8W2KIgOl/guGVRozdNHABT0np8dCJb
7D94AvpsODMlDYSdaGfv9NyW3cr3R8GcteFTopf8uDCAb0UPrQsHcc81P22TbJg+hJmDNmTkmLRq
2wGrp26fGhkZvoAaHbzlpaVZFL320Zbxjyxhyg9uLmwUOnKliJm6lZOGRnfDXhvp78ZEzYIJX+sP
SaaEMxMjhbJ+I2QocmSAUQIhmREN03y2ivRYFOJrmg8q8h72WN7nC+gZbXRxJmEkcukfTvOXna4I
oxPoWwmK4IAZIPgC43d24OhgCvyY9RPDj3zM9JKrueYhu77T5vnHbo2CuWbz5l4pVoP3ldDmiAfM
mEXtXgaWf7ju3KT5Ez14mr/3fwDRBZ8eGPJad9AudOkchg58OGvWGSV3wifXfyuOjHziYCYMfKBb
Pw16JjodCOXNQ2NG/kSzSCAIPAwE7kuL/DAMb60yy7Ock3KNTVBrlcHRq5bblsv5Fl0njsTDJu/X
E2I8b5veHI0Ha7hhlzQhEHCapxCJbJHI1Nw3o7qtsm4b3ikU1fLiu4X2pcdcqL/6e2XxRU4Xct1L
bfuq3J5x9/CSONCnbtdnLgV7nogl3O6xVUlajA9r7bAenVKpF4vNMukoGJ1vhCqTfl1VFTgUgcjR
WLqeWQ8OnkyppCyUmzKZfpl12zcXbxl7a+fblaM2DvVjb4uBojQ8kV29H4RNGvCvoezivKXVq7YM
41ZGS2n5Isu127RmUdPuvyHJ3DwolrFQaGdRgEFLaeD5Yi3XUmoDz07ExiEd7Kr9JF63Jk2MkXXb
TQSsTYi32XXb0MWBwyHwaSJ0L4c5KAII9jQRjUbz22+/NX/dtq7k+P4rthH9h4WY3rBbekNUhxeu
uxDxysoX6BG+BxaSPg3ro86vWWL2kbC2/JTN3cMrC2oW1ysAojmn/Ke9J41L1l2oSu/P4JG+p2vo
NGMbtulS5rsRsB+c8PDCwHGr+PQ+LW6VVadu3y/gam1tOoXXbdva2pqt2wYPBYFdug0rloEGjw4E
9usNeHe8bnv+G6E+MjH9mdhg80e62sNV6uri4uLEkzojiRRp1Ojyp21p3TZUTyJxQO6elbbjc+TD
M2G4XIlErrYSWFPo5AJJINAAvCKxaWZWA0IwOa2OmECMty6ok0UgssKsI1E3InB0rLPmGzwSFrin
zwYxnlP4quXeWoPed9iCIJj1XRt4TfOstrLZi1y4Phs0CWtdZa1eKLNpmumsluYBsz49PGHddwKz
KIJ0M0O51hGaINC2EYCWt4HG9x62q8o+nfxR6ZptV0O63UOyoWR9Usz+mNLgj96MgFWwts5Ozrb1
9mcaUtOSNJG+BzJNy7GmJ3TG9bvGNSPWkhme2Kdq09fUFM5yHG2VAEUVVX1UhuQ8oZQehsw/HDBu
lSqvJhu+/6nlfG4TWa/eB5LQosegfgtN523TH1ktz9vWw2tMc0OrDJIDCnDgGXSpO3h4+fj5d/Tv
DH9AQBSYkNT8/yrNreeDySdydXfgCT26dHJoAa48B5m/p/k+BvfP/paad/8sIZoIAg8IAdzgsM0O
EGxovgXMqdtudlwvW3H4U+YAaZtpC/ck400S0g/HjO9Jn5xt88rvcqQ5tRkLDB7/Zky6HKlTYvtM
/HLVzDnCV36VI72morKC+eapK7+5GR8+3XPhnjNFtJHqm+/1nL398LmFw0Db7O1nSswtVzu9Nyxk
4cJgG5swm55dkorpNkie7j0eovD3in8O85HNksPqSdgTSEvahG1PYcfT6MScXzouOsR80it2fa8n
o228L9ROne5rM9QPH7XrHlLeoxvlxupiiHB7vVSgl7poGZD4sRtFc34t8tEJy+U8O2nbmt/CPg9A
4Epggo3WrVnjYq123nYL3EuDlkNt4bA2sVji5Ozi6tYB/oCAKDBbBESDhZJEggBBgCDAImDZ1ACH
ZWKCjbK5mk0kfLp03ILDa07uuRQ9cNW0/86LyStPiAkdt/nWgHmX0nYdmuhDO0PH7heyD+clf3Ro
x+btcUV2Ad1gT3KExp6cHwnzRfLjY3/Jg5mbFVufnzp7h+TXtG+jRyumDZ7InIilu5V8eea4KPTS
u1PQ5ZnrEvFrAcda3q04wSpVVV5Z9iY3+z7bXJHO8e1Qtz4ns7XarGixNCDKQ2fJYfOrXaKm2R3K
Tqupynqxax2fWpkvunCX9hQpBzw3hpeqav6+u/UuWGvnWfHr4qp6O82imuQlPjY2odtP4Vk8PKjY
xqc72wiDXR27vbndte183jZ7EiCKOSw2QFhyuKnWaea8bT70YXlw8Lb5edu8hkacretjua3lttkC
CEEQIAgQBB46AkxTTHekMMFGz507d+HChfthnvzK8cto6Ly3hnWOeGH0HIR2bL10LSEJod471o6N
CAkaO7abHbIdNimy/Nzvu3/4C0q8ml2JpO5BneDUz+7/6tEBd9vpDqv87qk4NHTT1FEh/uPffA4Y
+49mwxXCnEPRK998bvg4WCHD2bIKp9EnWusvfVbg41I9bVU1WiK5nea0F1EvD6sWCNTPvleJNooL
LDi1vt9ONX4oGje2c8zffBc7szFzY9S3lxLtdZv9qafSVUNb61I9alglI4hZgwAAIABJREFUd7TB
ZAj922N6pkqVkfWnfObwgO9vmHxUVLG25po2u2THTM9LtWVz8z0EmvtIsA8GSzTboNY7b7s+zO9h
qkTSqM/P99BCkgkCdRGAPf3rMuqNwRPYeOF6tTzshEegFm2qCtyjRIDG89HwxDSYjMYGmIyGJ6Y9
88wzQJeXG5dGNuNxYE/dNm39jw+YFrnSfWiYiApX+lxLY9DlvWf/743hE79bHADpjiY2bOoM337N
uq1Ys0BsD5KwNSQEuHbqBLO4YKIsHay33dCHhQS6RBukhV6ZAbrFdKDpGiscnEpf1e/G3gjYKhs3
oNOM73K3v4zLrE0GyqV/Tt4lr8/mdQhY4JCmuh5iZnEdWTDDYCcwdHk8/+uhzqcv27/chaJK0ZoX
ymmzPSnTOiGzPA8ham9vD88wnpKGzxEBGs9Hw1c8GQ3mY+HJaI2ZkmasBnvetoGct/0Q7iwpkiBA
EGhPCEBXCZvL7TOxtCXR7LrBqdvpN/LS4Zqj8u+JUNz+2BvK8pTEJclo6PjwTv4BcHL2R5sTytXK
nBslalXlVegxLx77dJhzMrhh5pBtCvxjaVl2OWeGktQJJrkd2vp7ulqfcvQMSI4f5G20kN1ZwbrF
/Jt54LF5cdsdUJTCr6s8HNn/wfR0r8aJ0TiduwXH6NRBm06YX64Z+27WpTU1O27QvvVukkfMcSfu
ULa82F4aUbjhWH44si0GS3S2ubmiWgEtYM6rXY6ME3Tiq3HI1w9qpx00vWbBdjeaXSaMQzX177Vo
vW6tx7V8HlgOFGpGN94M2F2s/Z233fjqEUmCAEGAINByBKCFxR1urirc7MIVM9koENBzgsAVbhIN
PV84dTuUOXUbhc+rOvvtmluvjAscBUqGzona+3aQj8CXPjl7wQeuC+AY6Xerrj4xfhyaPfGVjUNH
zBiKdizYnvDWpiFvT0ET94a7pl6oWm0q3TMqa9XtwKhQ+73AmbPt87cjpEhdwPbO6T48GzHlwbyJ
gcE0I1yVdrYYSdHhk44BgaGTaRZ14W6BndRgzmF65m6gUefwtofsEC2p/y6Znmd254z7xDnV8ppK
drAg+4B/+Ezao4fPKQ+TouoUb/9wm7KabNjPMWV7cPhMWjDONWzbpcw3IzRJW0P6zIaxcRsQ/r0/
/VIS8XbORyMChDZwEDic0n2LOaUbyIcf8GPAfTCwTSzH0kRIsmSacdrcedtjJ84wM5FECQItRODS
+VNTpkxppJKCggJvb1MXpJF52p7YI1CLtlYFcNs4wAg5BKBhkBwHdpCcu3QbBsmLi4vHjHG+X08H
fYg1EnGP3MYnZ9tLjUu75HIlc1KnRq7mS+3oj760AGRhaI4Z9DncyNp52BwZDql2GWbvtbYqoxts
tiTV0t4VBx1frkL2Un1DHKMoTy7nw2Kt2sFvnVAn0F76tPsAyrhuW6cWqrQGaWPmgev45eVCZKd1
qSPMKy+2RVK1S20ZJjsf0u+RIxXu7u4wMA6BPWybHSSHsXEc2Je8Bnw5W4OYmJiJ7e68bWw9/IdJ
jf/p2sXYWxmJwOkUHBnWb0T3gc835j2FrX8LCaqiVO/o1p7OtTAoyqr4ro07VL6F4JDsBIFHGAHc
vEIrxNaRbXDZ3hUmWIH7QlgeYm12crbpdG1b9jhtWsBK2dbP4bYiyLBs7GXw28exJYvI69MNfB+b
JT4NJDc7qabmWrPz3q+MZs8D+5xw9WMml3NPuvXO2659A7unEU0SgPfcMwfX3z6/YcXrndDkp+i8
pec/3HW0tDD78fFzASajNiplQbdRR4yRCTHJW7o1fa6bXqdGAvM3VVBpqLg8d37asm0vt94iaKPh
9/GHpz41f2OXVct6u5nmXt5H5UQVQeCfhwDbCpsRuLGubYvaOTJtwf+1UwjZJ8HsCWGjzauX6bzt
GmSwgZGetn7eNvjs9PjogoQNK2YPRyH/h4Lm0H8h/wdRYEISCLBAFKHQby/m/J2RczljQzN8NkyA
jAnusifVcpdr+cn5m15YOsHd9IbAlti2CbdxHw3bFfVLm1kc0bbRItYRBCwQwK0tsIEwS2QbYral
BgKYMIpuJkmi/wQE9PoauPtmDwN+SMyqD0zgWE0yk2Sj7e+87etXjo/qBR9tqtDdU+jyu/QfELoq
YEISvHqwdYNlBVI4YlMgEAkEyTv+s+x4NpOki/vkP3tTFfrSlNWjZd26yGZt+YP2zFT6ssmzdn+z
DDjdJm/NpdDNw6uXI7RubNCCH1I4OpGhNPUgejaC3mRUnbh3c8yJQytmTH1nxp6svMwYmpj6W3oF
La++8+s6OvrOjB0ZpfQ0zfw/v4/LpYvSFp5dsfUsvdZCfiNmOSODo0h/++L3TJbNKcX0zkOF57/f
vv/YD4zM2es5iXtp4e0n0ph3E0XKL5sZ4alx6aWgK27dmkR6FiaMBtw9vHzPbTWS515gbJv6a+pd
YAu9+j6Lfk7FMrQcCQQBgkAzEcDtLFxx04yj2FVjDv5yqVDUdiSaWRLJ1g4RUKlq8APAPh742TB7
YCDanMq1r/O2wSuX5SbB2WR5WYnoTgwqT6L/7sRAFJh0EsdtS9H53Rs3fLl29Y9/Zgf067H/nWP0
gkHFpU1fyyMC+IffHVX+5rm/b1yUbZz8cwZ4U23phQPr4rv8fvHkjAsrjqZVdn7mjVkIzfj69JIJ
oVxktWo5CvbCw+P6oqS4n8pfXbfx9SdvbFi+0n/Rug9ff+LgqWtapE38alFS8IL1O3Z/+Lrt5qhD
lTCNUlWiZt68DRpV/hX6qM38yzFxvv/duGP36pd7w1xJbWH86l2axdv2rJzdYdvWePDrBl1J8u/7
A1/f+OGbI374bGlW0PKVS2cm/3SmUIuKL3637VLgsi92f7Z0Zsz69/+uEHcKrt6TcAvUKnPiTyB/
D9uC7z/ZNmLFzi8+nf3Lpq9v0w7drkMvJFdxFoRwK0ZoggBBoIkIsM0ubo7ZRhnaaGi14QyJvDx8
Zm8T9RLxdo5AcbEW7j48A9htY5+Nr7hm7JPTjIrCZ872dN42nLJjK6ypUtGnihZV6IsrqHI5VV6t
hygwIQkEuCgEhXXv0TsiwFPqGDZmDFpxqRTdPbM3c9o73USFGRdQ0cV9u7d8ewE6qiq6jy5H/9q3
7hUftwDvEFAFi/qdXUOQ1M1bYjwKzKi4POdWUK8AekUCnBhdjcYvmuQndfZ0c/B5fnlkRzd3mQxd
UWm1RUlX0IiBQSLE9+n7ZBC6Ws5s22tUYfq47OwXgRI+jzlxWSuRwIi7vCgXgVHHjp2+EIvy6C32
9VoVrVbm7O7ljtDkCf38nTy8g1C5Rq/OOHM+8tm+7kK+WNbn3zKUU67u2H80Onwe3g9unPp56Au9
haV5sC4z6+yxX+Ng4l41M1YnlIVF/J3d/C0gjPaTH4LAPxgB3ODC1TKwbTRurx0dHTMz6c4CCf80
BHJyKLj78DyYeW7LZwaQAWaT8Gm987ZbZUoafLr28OvOs/lTZzAeBs7TIZ4NvfYcAiRxv22DGx74
5IhuRkPcXnwrdM8vsXmxBxYuWY30N/MQ6j/o8Ug3Qa99I9w7caer6et4foud/lx8fTN/KzQgX9On
bboHzX6/wiNifKQHNy0xuWezW2LKiMSdnlq5qMNv0ZsW//TE4i+mGkpKUHBIt+7BKHhh+FNu3IUM
lgNt2mrkYEcfAI4D1JLn3v1ZtC0pNSwzIWLMq87aAnDPESFhsAwy9L1eYg9aVl96PSlo2HRTJvJL
ECAINAcBaGfZmeRAQ+sMURy4ntvOzk6jEd6+rfHzq/2v2pzySJ52hQDccYPBHu4+12ezDwYQXD/N
pRtZS+N52/CtWGBjed62ges5GqnRJMb6JhPjfvxChb0CH4PjOp3FyNEe+Xm7yHz9HeyQswSptQiS
QIBTTrlKoUNwIC4zch723BsnP5q28sK8EcESJOo8bABKKLIPj+zfJzLcU2L9JUObjuQWbptn74gS
8ridZ06JJlLYIVyGLt6gvygrc9IykR/jYYt/SS2Eie9/7PoOBdMlUvIKu469X3h3sQ+6Ua1H7t17
oIwcgWeXwK5BAd6O3JqY9LK/doGD/OIuZNFvGMrc1Dzk7ADtgrT31H/FbPq85Omn4GwBkXdoOEqq
EHiAtkB/bztanbowAUnt63mbYHUTgiBAEKgfAdzOwtVqwK0zbq/hCl2ulBRVeTl3zk39qklK+0cA
7jXccScnJ/YZwI+E1acFmFBjfG1C1W2QAA4Bq0F8HvRaa2z5SMjjCW3onWf5Nci2Qc/RcCnWHWHD
ee6ZKhAInbo8I1fezC7+sc+A4ci1LxI6S10uXj3/c43fS5AEAqwST5T2SoQ/ji49lvlS8BPwrTr7
0zEeNEsydvORjH5jun1ERxYezpwSCL9SbLTQGdHzxZDkXxveeHZSeMEnJ9f8O4RmMEHo3vNZNCup
8JlBXswGvYj2gvDPga2xDCjJoP++nxkV9Q6dxe+VRfO9eKiy82D02cfvHPYbNDgUFdEJpZf/t2Jv
EhA+T870sYMpY4M/mFrw2ZypdFrwa+vfH2qhlk6BAHy/wbPGZ8yfM4OODpq6PNKdrrhXj4E+6Pzw
gZ1ortD35ajXN6+aFUNHIv5v87sy+eWD6LmVXi14GaNVkUAQIAjQCHAbYmiaTf1tei4SpOKRP9iY
Wih0jI8v7dHDzs+P3oWMhEcYgTt3NMnJKhcXN7FYDDurwJOAA/bclv67OVDoEV8sENkK4KQvG72N
k9ROYi+QOvCkEuTogODsBXXTRtzrmGBz504qLH6AZ5fZSAhf8Z5C0PulCZg+xlxr6bS0zIZ3SYMs
CnlVUVGBsOiwkyoh0uM6X+R08Y5HuV1/redYT09vidQRwKpjSIMRhUIhEJl9vK6TQa9Q6CwEYN32
rPk3Pt7xgmsdWcuIXguDAHZ27KuEgYmL2Dj83waOni+qFYGZaWrKjGOp2MTRaqHbb1d7ooCJz/nV
Umq90A462xWHZ8zxW7X7H7hum+ySxnke2g3ZBndJw9ix7hkIaN/YAA0Z0HRzxgTcvuXn57u5uUE7
U1lZaWtLBQSIvLzo///QywLn3uRuVru5e/8IQ+EBgDlDeN+dwkJtdjal0Yignw0niIC3xm7bzHkD
v2EX3vAjQe+StoL/wfu9/L3sNTWI0qBzNzRurk6uTlIXV56TM5I4IGU1urj6lXHjxt24cS00NIhj
Cf0KYbKKpjnB+A2+Cb6z8XcYihE7SD1qUIXtxHz5yGgNhZTI1kvkIHX0cHaFJBBovDaQBHwblufD
DbCQ4Dn3Xr9KpoEPzvcYjuAL627WwhPamb1v0xyOF6eLsuRYGMAyhMJ7dp2FxncCg3Dgqm3uZK8V
FjtCEATuBwJsnxuaY9CHnTqrGFpJCNDOwJdOlUoFM9SuXjVOUgPJuLi4oUOHssL1EU8/LYWeW32p
XL5Goz9x4j5vzVBWVubqeq8eCteINkm3Ui1YLwvDKo6O7i4u9uCD4I5jj4gJq366+SDpUI3OoK9B
eh0CH6TW1lAaHaXVq9U8WwrxhIhiJmexhjWpoFZx22AK/X9AKhWKRC4urtBbB5sAIYGtCPZ9haTm
2dqkimFhkZuHmQNuhpIHmoUncXd7oAWSwggCjxIC0LaAo8U1wjRcIQAHrtA0Qyq+YhmIss03cHDb
Dc4beuQQhVQI4A59fHyAYDlmBETh9M8//ywbMsQN+mkQbSCAzz558q7BQHf4sM4GhBufRFFUuz7K
lrlLNrBdvFQqxTSuO753QGMCrgAapuFmcWWAiflmBI7iJMiCXTVLwN3HNx34mABJINhcOCO+covD
dL1XDew0r9fowHcbYNaWSkWpJCKFSimycxIo4AhVRKlgsxK66Ho11J/QKm4bioNK4m3Zoadcf+kk
hSBAECAItAoC0ATh9p1t5XHLCw0luGRucwl8aLKhvQImDJzDFQLXbUMqrO4FDutlgcABTAcCrp6e
ntBTPHeu8rHHYJZTvW2xVmv4809YPCL18KAPL8F5m1T/+rKA/dApapKq1hPGUDdJP84CtYB3JjYj
MKG+OInVyUatcrhMuI9YFTAxHzjYPcOVJVgmECCGr0wOYy6cF19Z2xogQIMDX51+U+7rK1HqalRa
pNToq5UaIfTvBSqDjT1Vg6oKypgZFWajuA1orU1qLbddWwKhCAIEAYLAQ0IAmlqzdh840KqamYMb
cWBCKnbq2G0DBwjoFUEAGlThgLMDjQVw1MPDAzz3hQvVAwY4WPXc4LPPnauysXHEPhvnYq9YGxtt
KgEvFhCamuvhyls6QvocrrovH6wMJuAKQLE0th/fUK4k0DiKr+wdB4IN2G1DlCVwEpO19gJFYCWN
xwrkO7pQ8WcL7B0FfCe7sipddbXGllfDqzHU6A0woiCoFFRlXQpydgbP3Xi1rGQz3TbM3WBVEIIg
cL8QqK6mD/ptTIAnsPHCjVH4UGQegVq0wSqw/g8TcDULuN8MVzaomcBGMYEfCcgLzTqc7wkEywGC
1QltNE6CKwzwwsoiq31u3M/W68XOzlLuNpFcnZhu3hV0WqptnqoHmcvMI1qthZkMG8UEXAF5uOIA
xgOBq2DJYX0266Gtcoy6OD9mahuGCF7yeofw/j6lOHbsDupgL3C0dXa05fFtDDZIq9Mp1WqY3MUr
TPYJ8YGVhw2rspraTLdtVRdhEgQIAgSBtoMAtLq4QTczCVpqcMxwBT5umXF/C2icZOa2gQmDt6AK
As6CaRzFV1wE0NDnLi0tNetzs/1sd3cXkGQzYgtx3hZewUIILVTysLKzd8qyFpBkZhXmcPksBwgI
GF5M47xAYwJuJQ441RSrHRsHDk7iXiEvq8HMGKtRUPLEQIfkzMqUIvDPCJYuVMJyBj185DaoRRqR
kG9fmdrfBRYsBMP8BqsaGmYSt90wPiSVIEAQaGcIQAvLdaWs9dyWFxpW7LnxFaLguYGGjCCGU3FG
4EAS9J+wTlZzfQTwvby8wHNfvKjo1w9mLPPAZyckKPl8Zzc3+nt2w4FV27CYZSpY2I7cNvdecOsC
tYCAOVjGTBKiAJFZEitjRphFQS3cWWDigGnLqynd/HWBaxXXZksadPr5Ofx7jB79rkwpsUWUnlLp
hUKYQgFvbHy7yr97uBUN6BUcEBDQvFmExG1bYk44BAGCwCOCADTBbCvPErhu0LZiDvbc4JuxMOu8
WQhAEnwJCAMHX60SrDzIwAw18NyXLlWHh9tevkwJBC4QuLlY4foItqD6BMz4lv1UM4G2EAWEGzaD
rYVVScy0TGI5ZgQbZQsFDgSuq2ajTErtBbLgCCZYDY0hQD9UpH/fDr6+quPxFX/lKO5opPpqGyde
dYhYPjAE9Q7t3rFjR2dn5+a9abWi24bHLiPxUFrSydzr9BZjHbtGhEYMD44cB1g0puYPRUaphG/2
ApjZYW1hue5O2jVBxzAvCTIR5uhRlWUGqau9+XyXh1IVXKih5HYO38PfRdRYm5QluWV8D1+X2smc
D9F6UjRBoOUIQIMDbRFudliCqxYaWRxYSa7LZLvjOAubxBJcVVwZ8Nzl5bYXLlQ4OMAKMleuPJe2
zN48DrxYNM8HNK+4VsoFL0/cWrB3hFscvpVcDkuzSSyBk+D+cmUgCgINBBDGqZjg5mXphgkoAubW
hXSVdu3sBhMjYHkefLYXCFwdHDrC92x4h4MN2kAGVi40rMdqqrnjsSrUDCY86wlHtxT+9cWK1zsh
txG0htLzH+46UV6U03/0rFoQqdQlkc/9aixg7LcX1obgszabVqSOopCIOQEs/etnX0FrEqd1b5oC
2DL89plNo6cfQCgQzuNC6P0fL08KNVu6Rp166UXN3sTXwwUmos5nCUNlctSijIWbJuKpgdWZR/cX
9PjPkI5NtcQkXxG7+kDwe//xF8EebQaesPaxMwk05leT8uka7fvrRwSYw1qfeWVXVq7XzV8/qnNj
tBMZgkDbRADaXEvXCEywFviYgCs0U1gSWiQIkIRT4YrrBQROAnfC1pRNZWXMCIiq835XZR+rqcwU
G2oELsFUx6ftfZ9kNVgSZjotBe7JAQu5Rt5Tvo0I4HvBGgMvH5a1MJNhhVk+S+Akq1GWCYRlgIxw
o+EKSfiKCaywGVfIDhWBHiC8hYD/Bhq/V+Eo0KATfDY8gc1Q3ipuG0zJSvy55PIXK2YPR34vIpcI
2rLywStm71/6+RdZHr6Bkc9hjIBdjIJ3/vFzLyd6g3FR7X+NJtSFuv79oOfR2eRXYfVDpwnfxArq
eNNGKaIyloyernjvm7PTBoISZVl+lcDKUgpJV9gcjdbHEhzl8tOLtj4XtbGD0b0acpKSug4ezhFo
Ill5M1kSOASsMOSun/vNpPWLfZs13cROxuyNbl54/eYJgrxRqzwV5iaQOEGgNRGAdpP1hSxt1hZj
Vw1WAB/TOAtcMQFJQEAS60tYvqXtOAmu1Rl73Su+Qx1HIsnjSKeCs4EMhZtK1MXSkFdwrgaUWKpt
JAc8AXYGjZRvm2LYvTVgG76V+D6a3U1uLrMkNgoEpjFhlQY9mM8lzGhuWQ3Q8OSAn6ZX5jH+G2gI
oBz4zNa6zelqQ3HN68M1YCedBBuZ37z2+6hecGJZFbp7Cl1+l/4DQlcFTEgCAY4KZ9g3BvEFIj54
C8WRqJXXmBPrsw8tWRKdAWLZh1bO27xz/fSgyPCgXedymYyVf349D6Lwt+/qtfXPf4LQJ4PC56Ur
UUHcxi9/y6FllBm7mCyR4fMSC+gzR6zpYZTBq8NfR0+jqUsZnw0ssauPl6OAKjj1FlNE5PSdd5hD
S9ijQlnCmB98a1naETSqJ5w0goOh9O9zskDmOJCchOi5s2bCX3y+ujo7du2+JJy9PCX6u3O5VFH8
1p0H4w6sB4Gtx1NZzSXXr7hGwEHg2uT93+SjvPVzZ8bfVlNFF7du+e7QTtB2SqXNjf5fPGOXOul/
60E5vOIn7fvy2OnYrXRxX6aW0MoYoMHhl8Wunnnmhmk/RY55iCqMoxXSWXA1jVWg8mK3YP5X18to
VdXZ8WuZinx1Lg+iVP6f0aeZ26HNi179HZ1Xm3doy5fHDnw5d9bHOYxlRlXkhyDwsBHAzTRYgQnc
LuMGFNrQBgI4EkiFKw7gGk2k+S9Ogit1+yjfcwh8K+crsvjqXL6+QugxUHPnGJsBZMwCm9Rsgmtk
s5U8+IxNxQGqCVnATny1arBlUgP3FyexzwN+PNjn5L48tlgnWxAuqyWaW6VfpdPqKu9c0bmivKxE
mVsSsmFKKbuYV6rX6RGdpNXByAG2W4ISTh44km2rFXcaNDhcpLh7B7t0dfWt6xqa1GnunN615/29
f0SX7Zn41okXk9+oOvbx+xvQzhOJoRJKKXClds0+8DqK/mOqnxhdV2SnaMA5Ucejxpzs983p3ZH5
xz7698gvjiXPtdTDrpirzL+MRk+hZ4xwg0A2+2hiiB+1K3zQqYwXXw1vCCutuhoFebIr57XFafHh
vZ6HlyJt7tG9J6cv39JdolbxbO21ndG5H26PjegsVl7ZcbJj1Bikz85KPm43acGyRfJlnxzIH9od
RsUh283Leb2eg1PQeKFPT/A5d+DpRXOC3O0MheqszDOy1xZ+NNnD3lAgz5fjERZFfqZODyRPV3z1
93Pov8tXq/74v91X7qx/0ht02fHlqfsWHu8+a20XKa5frXlIm/TjsiPo5cVrB9qpFbBTbrERAW3S
/z5O7vreqlldy/764bOlR5dtGZ1+5Bv/GR/P6yGtVjKjInp1sQq/LeqL84oYSl+aefWa7D+LV4U5
WRmtMKomPwSBB4MAtI9m/VqWg1tSSIWAaZYDtgETW8imQptbn82sMCvA11fx9ZWIuoO0xo3NkUAi
MFSBj2FlzAhLJWYC94xiB3ZPsbYmALBzTWpMLcyyQHZLDlcnpOL7iJlYmHvFGrhKuDQ3F1ftQ6Tr
fRZbYhN8e7cV1lSpEDjpogp9cQVVLqfKq2mfDUxIMtsWgKpWKKtLlcx525bl6jTywPd+nhTu4y3z
hXF0AVJc/Olw4IJpvbydRI4eLmKBowt4I6mHK3uaCGzTnv17HHptbKQYCQJHTu6L4oqU4P7N9NQt
yl5o5pZF7sGe6uvHow9dQmBzXWGLWOXt7MDwjqxUSXrqwAEBNLhClx5BaPeO/ckFWnv4Pi32HxGe
d+lGBapMN/XO4dXkxcmPdXJ0dQ5Epq/p2oJrySGdmAF3oVgqRhInVynzdZsWHtW3o4MYd+vNTEZ6
BRozf1pnV2dXtyAf5qxSkQRFr1q4u/jFFWO6sze71jzt3SuJaMyofi4iob2Tc+3ENeAno2H9uooQ
zzviiUCUUk4JPcOD4ndsi7tSIBKzFTUHQo2C5o7p5+IgZssylyBxgsADRMBq+8sygQB/DFc24Cju
GMEVvAimWYJN4mZhmSYC8dW3+dpS2OQU/nTqUr6uAtyTKdXKL3ZX/8CrFSxMrPrQMKXX/tZ3L7AG
kAOClQZhoNksbBQ/lZhv9oQC04zzcKPm7f59scZQY+ggC+XZnNMZENNhhm4gnBOODMwrLCSBAFuQ
AvV/5tVJIcbX0EqWb2kZ9ztAFtbLSpsTOpgRDkPvVgNXDxZwcO6EYq6ULRnmzslw7etXpm0I3bx3
aFcOsz7Sycc3K67IgGSMu1JmxZf0+C8+jUf6+DurXc/8tnvdwoGvLZvY16vzsFF7TiV1K7oSOOkl
6O5bHUum8tLLhoZze/90X9pKoEcj4Ns1VBRTzJUWNa9jZmkFheyNPWCuebiTzKipc9HDmLu4bt/A
f8isua5nDu9Yc+SxGWsmMfMVcJa6YvWYWkc7iRAEHhgCuM01686yDTHuh0EUmnIwCUcthUEAAtdm
Mxluko3QmYc0lXKlkxiOfkIKtY29vR6Y4Dy4Yo2hGyjFLDuYh6tgxm8jUTP06rMKqtAMlFhtjSkF
y5hJmkWbpJAVfmBEq3SKeDY8904DlBrkLEaO9sjP20Xm6+9gh5zzFwPfAAAgAElEQVQl9EMMSSDA
raGu1ncJUOLvf2VV6ovPrFuT4Gy2MT52TUgSPvZJtOFsNv0JnKqqohCdnzImYr0i3yFB6NcruRCr
Sk34CwU7cMds64jSGbwee74v2rbk6zPMV3WkLMjIKi6/tiHhzT3vDAz3BwHNvWZp8eylCH9CB2nl
7YS8CF8HWjMyqKuUku5DJs4dJ4svUQHDoWNkn+T9uw8pnuopYySsXPJSrnXr6WNMMOiVSGF1mUBZ
XkKBElVlxkbn1WsfpUATo1a/NeLkZ/OOwgkGdOCaJ/QIC0KXUjLpO0ApYct7YxB26CFDl27dhagq
NyMLyeyFhupKtW+PYW/Mn4DOlWAIs45eVyHt9diYLGRvtUEqL8ivYl4MqKq7xWXMbdZXFhaUmb9V
mIolvwSBVkKggXYZkthUTIPz4AZgQhQnsVeuAJemBbxGaCjYXwWVViMFhexsEURrvJ5i8zae4Gpu
13Tjq9ywJIAAAvVBYZbXqhiWwY8ZK2/1qYNUq/yHzqynQ9oyu2BGgEPASLXqVnbxgT4DhiPXvkjo
LHW5ePX8z1qvCZAEAvWUIApZ8OQbUyK3oycnDEW014Vl1AgZ/bfAFgVpgBM4blnUhUETB2wCesji
I2tHD56AxgwPz4D1YyDsRDt7p+e27P5r5KhIIFHwkh+/CeDTy7rM9NCJOIh7rvlp20fPTx+ywchY
cujygNVTJ04FS/pPGB285aWl/0pczgwN05azhFEaOB3CRqEPrhSNGOgprM5JQ6N7Yq+N9HdjYJId
LRc0JcqT/hXK+o2QXSofGWCUQEhmRMM0n60iPRaFjDB+h0Yi72GP5X2+YObEqI10D9ckjEQu/cNp
Pgp/PIzWS78JMYpogi+wR4wPBo4OZr6PWT+xcO7H+7yhl0xxzUN2fafNy4laGxVLq4AiAmCePK1F
PGDGrOtLl82l2bJJ8+d48DQX93+wL5mOD3ltMXzFN7h0DkNrP5x1IGzo4/B2RCfQgeu/FUdGPoF+
vPxqqOTWT4Ne0UQnvtlTefPQmOepk8lvsBMLcDZyJQi0NgJsK2y1C8ummpnBCtcnYCYPYg4hr13/
q9pOflrEozsC5Wox5TTEM2QqeBEz4fsYxS7qPip8KKoaU4tG3giu/U3K0iRhbikPjLa5cycVrx5j
5qMb8Kx0fNXBQdkw55v54dJpaZnDn5ncgImQRVEtL75baF96zIX6q79XFl/kdCHXvdS2r8rtGXcP
L4kDnCdv9FWWeijY80Qs4XaPLWWAQ4vR6+KwHp1SqReLzTLpKCXVGFUm/bqqKma7FUdj6XpmPTj0
I5VKykK5KZPpF9Ztz1t0c/GWsbd2vl05auNQP5MXRgaK0vBEdoyzN0nX/2souzhvafWqLcO4ldFS
Wr7Icu02rVkkYguqX2ltiiHJ3DxIYywU2lkUYNBSGsSxXEupDTw7EVsTSAe7aj+J1xbTDCr9asL4
8eMbmbGwsBC2kGykcJsVewRq8QhUARxzw7U4ePBg459MeNigAVQqlZWVlbDJBkShkYKtp2F7jQYa
vZY/og1XoeX6H4yGh1KL++6nz507B8ePQpBIJHCFY77gGYDV27D6C54BKA4C+FY4CgzC9u0bQ0OD
4NMAJDFXuNSh6bgxGD/S1+s7W3KToAiJxAG5e1bajs+RD8+E4XIlErnaSqRSdycXSAKBBvSLxKaZ
WQ0IwX+GOmIC+E9hIS4QWWFaSNUyBI6OddZ8g0fCiff02SDGcwpftdxba9D7DlsQJOO6Ul7TPKut
bPYiF67PBuXCWldZay6U2TTNdFZL84BZnx6esO47gVkUQbqZoVzrCE0QaA8I4GYUrvUZiwXqS2X5
bL8c2l/YCQsCm0SI1kCggVvWGsW1HZ2Wru4+2AZowtsCdKmhUXdydoXXClAKrpreLUZoC0mPKtwi
V3fwYg5dOrUERJ6DzJ8dP2+JIut5hR4tM8+6VsIlCPzjEXi4zRqU/nANuC/3/9GoxX2BogElreK2
oTxAH3bIhT8Yo26geJJEECAIEAQIAgQBgkDjEWgtt914C4gkQYAgQBBo4wjA521sYZM+crfxShHz
2ikCzXTb8KW9nVaYmN2WEWj86bPwBDZeuM1W+RGoxSNQBXg8Gq7FlClT7vkI7d27l5VpjDwrfL+I
hqtwv0ppbT2PRi1aG6Vmuu3WNovoJwgQBAgC7QuBh+Kt2xdExNr7gkArriO8L/YRJQQBggBBgCBA
ECAIsAgQt81CQQiCAEGAIEAQIAi0dQRacZAcVjGmxv907WLsrYxEgKFTcGRYvxHdBz7/IFcpUBWl
eke39nSuhUFRVsV3deYu+27rzxCxjyBAECAIEAQeGAKt5bYNBsOZg+tvn9+w4vVOaPJTdH1Kz3+4
62hpYfbj4+fWbvJHpSzoNuqIsboTYpK3dGv6XDe9To0EdpYbuBgqLs+dn7Zs28viBwZnywviqU/N
39hl1bLebpYVarl2ooEgQBBoXQSg6auvgNp2j5GovnWkKjNGU5YKMZFbd4fAF6Sdx9SXl/AJAiwC
reK24cFNj48uSNiwYvZw5PcicqH30kblg1fM3r/08w3pnn4hAyeyT3ARCv324vE+TvRZWMaNSlnr
GkWoY4K7VB/OnN7dzOHLT87f9MLSbe7t7DuA27iPhs2J+mX1jnGmTckbhQIRIggQBB46AtD0ffXV
V9XV1ZaWuLq6vvrqqyy/7Op21+KdDr6jUfBgpFMhdb7hxvIyeb5rzzdZGUIQBKwi0Co+DbbkvX7l
+KhesDlvFbp7Cl1+l/4DQlcFTEgCAY41LlI4YlMgEAkEyTv+s+x4NpOki/vkP3tTFfrSlNWjZd26
yGZt+QO2C0dU+rLJs3Z/sww43SZvzaXQzcOrlyO0bmzQgh9SODqRoTT1IHo2gt5kVJ24d3PMiUMr
Zkx9Z8aerLzMGJqY+lt6BS2vvvPrOjr6zowdGaX04Rv5f34fl0sXpS08u2LrWXpPYfmNmOWMDI4i
/e2L3zNZNqcUw/mWqPD899v3H/uBkTl7PSdxLy28/UQa89atSPllMyM8NS69FHTFrVuTWMyc8mG4
e3j5nttqJM+9wNg29ddU+sQtoVffZ9HPqVgG4iQQBAgC7QQB6I0MGTLEqrHDhw/n8uVZMchjKM2p
SkeKm0hTxnN/jGaSQBC4FwKt5bbLcpN0epSXlYjuxKDyJPrvTgxEgUkncdy2FJ3fvXHDl2tX//hn
dkC/HvvfOUYfJqW4tOlreUQA//C7o8rfPPf3jYuyjZN/zgBvqi29cGBdfJffL56ccWHF0bTKzs+8
MQuhGV+fXjIhlFtZrVqOgr3w8Li+KCnup/JX1218/ckbG5av9F+07sPXnzh46poWaRO/WpQUvGD9
jt0fvm67OeoQHPetV5WomXMlDRpV/hX6qM38yzFxvv/duGP36pd7wyEa2sL41bs0i7ftWTm7w7at
8eDXDbqS5N/3B76+8cM3R/zw2dKsoOUrl85M/ulMoRYVX/xu26XAZV/s/mzpzJj17/9dIe4UXL0n
4RaoVebEn0D+HrYF33+ybcSKnV98OvuXTV/fph26XYdeSK6izzojgSBAEGhfCHTt2jUgIMDM5m7d
uslkMi6zRlOO4E+ejipTUNXfSJGNVHlIazxclytJaIKAGQKt5La1tsKaKhUCJ11UoS+uoMrlVHm1
HqLAhCSdjulummwJCuveo3dEgKfUMWzMGLTiUim6e2Zv5rR3uokKMy6goov7dm/59gJ0VFV0H12O
/rVv3Ss+bgHeIaAKzqp0dg1BUjdvSd0R9vKcW0G9AvBRVapqNH7RJD+ps6ebg8/zyyM7urnDf6Er
Kq22KOkKGjEwSIT4Pn2fDEJXy+nOsymYPi47+0WghM9jTlzWSiSAl7woF4FRx46dvhCL8lTg4vVa
Fa1W5uzu5Y7Q5An9/J08vINQuUavzjhzPvLZvu5CvljW598ylFOu7th/NDp8Ht4Pbpz6eegLvYWl
eckIZZ099mscTNyrZrZvF8rCIv7OJv+BTTeC/BIE2hUCQ4cO5R72Bac/DRo0yEoNlDmIKkaoBv4o
RQl0uGuAJIEgcC8EWuvbtodfd57NnzoD0jDD4Twd4tkgA/NQQhJ31ga44YFPjuhmNMTtxbdC9/wS
mxd7YOGS1Uh/Mw+h/oMej3QT9No3wr0T9+u1vo7n13JH3elKu/j6Zv5WaEC+phcTugfN9KLpVDxp
hI/04KYlJvdMJ3CCKSMSd3pq5aIOv0VvWvzTE4u/mGooKUHBId26B6PgheFPuXHnfFvORdFWIwc7
+gBwHKCWPPfuz6JtSalhmQkRY1511haAe44ICQuTotD3eok9aFl96fWkoGHTTZnIL0GAINCeEIBj
OiMjI+Pj47HRjz32GJzaaV4BoQsyaCqrFE5ipNaiajUckKtHwCSBIHAvBFjfdC/BpqTDBx6vwMfg
uE5nMXK0R37eLjJffwc75CyhH1BIYuejMVrLVQodHFELJ3tDNOy5N05+NG3lhXkjgiVI1HnYAJRQ
ZB8e2b9PZLinxPpLhjYdyS3cNs/eESXkcTvPVmog7BAuQxdv0F+UlTlpmciP8bDFv6QWwsT3P3Z9
h4LpEil5hV3H3i+8u9gH3ajWI/fuPVBGjsCzS2DXoABvxwYRtAsc5Bd3IYt+w1DmpuYhZwdwy9Le
U/8Vs+nzkqef8hEikXdoOEqqEHiAtkB/bztanbowAUnt63mbgHQSCAIEgbaNQN++fZ2dncFGT0/P
Hj16WBrL83maUit4PFQiZ3y2EEHUxudpS0nCIQiYIWDdEZoJNTUqEAidujwjV97MLv6xz4DhyLUv
EjpLXS5ePf9zjd9LkAQCrE5PlPZKhD+OLj2W+VLwE/CtOvvTMR40SzJ285GMfmO6fURHFh7OnBII
v1JstNCZnnwOMv/a8Mazk8ILPjm55t8hNIMJQveez6JZSYXPDPJCTGG0F4R/DmyNZUBJBv33/cyo
qHfoLH6vLJrvxUOVnQejzz5+57DfoMGhqIhOKL38vxV7k4DweXKmjx1MGRv8wdSCz+ZMpdOCX1v/
/lALtXQKBOD7DZ41PmP+nBl0dNDU5ZHutC1ePQb6oPPDBzLnewp9X456ffOqWcxclIj/2/yuTH75
IHpupRe3G09nJ4EgQBBoLwjAOcXDhg2DA0hgJprVnSqcw17POl8lrDol4imhUqUqsc51mF/Y6+2l
gsTOh4iAzZ07qXAeNoxawxV+mavxAh1gCDB9jLnW0mlpmWMnMo6oHsMhi0JeVVRUICw67KRKiPS4
zhc5XbzjUW7XX+s51tPTWyJ15H77qUdNLVuhUAhEZh+va1OB0isUOgsBWLc9a/6Nj3e84FpH1jKi
18IggJ0d+yphYOIiNg6D6sDR80W1IjAzTU2ZcSwVmzhaLXT77eAU0/qDllLrhXbQ2a44PGOO36rd
/8B125fOn2r8rs4FBQXe3t7149k+Uh6BWjwCVYBnpeW1gKNELJ/eW7duderEvJ1bPI/QSCqVyoqK
Coqiex/w/Rt65zCW3qSGkau15VXgantY9KNRixMnTtgxAU5GgV97e3u4v7a2tkI4zFogwGeKg0PV
MmH79o2hoUHwngdJzBUudWg6bgw8+IWxarbveT9vE6gWO0g9alCF7cR8+choDYWUyNZL5CB19HB2
hSQQaFJ5UPmG5fkSK1+oec6916+SaeCDc4MD2dArFtbdrIUntBPVLY/mmDldS07dLNyYUHjPrrPQ
+E5gEA5ctc2d7LXChY/QBIH2iUB9PhtqA220IxPaZ82I1Q8TgVZx2/A2AQ+lRCoVikQuLq7QW6cf
U3iDsKXfOPDrxoOptMjNw8wBP5hym18KT+Lu1vzcJCdBgCBAECAIPNoItIrbBsjAc8OAAAQ4yfbR
RpDUjiBAECAIEAQIAg8MgXsMHz8wO0hBBAGCAEGAIEAQIAjcE4Fm9rZhjtg9VRMBgkBTEbC6mbNV
JfAENl7Yqoa2wHwEavEIVAGehPtSi4f7QN6XKjz0/xSPRi1aG0bS225thIl+ggBBgCBAECAI3DcE
iNu+b1ASRQQBggBBgCBAEGhtBIjbbm2EiX6CAEGAIEAQIAjcNwSa+W27MeXX1NRkJB5KSzqZe53e
Yqxj14jQiOHBkeOs7hnUGIUPQEaphG/2Algab21hue5O2jVBxzAvCTIR5uhRlWUGqat9G3oXMpTc
zuF7+LuIGmuTsiS3jO/h63LPheYP4G6QIggCBAGCAEHAHIHGtubm+e4Vh23XLvyyOe3o/BWjM7/9
eAT8AQFRYHLPEUFU6pLwoEjj37x0epu/ZgQdRRmPEkn/+tnIr1OboUJ5+8yq8KAhA3pPH9BjQO+g
fWmWc+6oUy+9+MsN4LNEnXIMlclRi06y2aozj351OreORNMiFbGrv8phtm81aC3PKGmkLk3Kp2sS
C6xszV6feWVXVq5PyG+kdiJGECAINBsBVe6x0j9mFB18HP7KTs9Q5hxrtiqS8R+FgHl/8b5UHhxz
VuLPJZe/WDF7OPJ7EblE0GrLB6+YvX/p519kefgGRj7HniZSjIJ3/vFzLyd6g3FR0zZPMxpLXf9+
0PPobPKrsLNKpwnfxAqcmlwLKmPJ6OmK9745O20gKFGW5VcJrGzTIumK8P7mLMEpSH560dbnojZ2
ML4IGXKSkroOHs4RaCJZeTNZEjgErDDkrp/7zaT1i33NtmlrnD47OOTXCqr1mycI8kat8lQ0zl4i
RRD4RyBQlbrbs2KPa8fRKPQJpFMhdb7h9qri6gLH7tP/EfUnlWwBAq3S24aNzG9e+31UL4R0Veju
KXT5XfoPCF0VMCEJBDg2O9s5CRBfIOKDt1AciVp5jelzZx9asiQ6A8SyD62ct3nn+ul0p3zXOdx/
rfzz63m4j77v6rX1z3+C0CeDwunOekHcxi9/y6GVKzN2MVkiw+clFtCdVmt6aEEIxX8dPY2mLmV8
NkTFrj5ejgKq4NRbeBhg+s47TK+XPSqUJZjc9MVQlnYEjeoJJ43gYCj9+5wskDkOJCcheu6smfAX
n6+uzo5duy8JZy9Pif7uXC5VFL9158G4A+tBYOvxVFZzyfUrrhFwELg2ef83+Shv/dyZ8bfVVNHF
rVu+O7QTtJ1SaXOj/xfP2KVO+t96UA5HhyXt+/LY6ditdHFfppbQyhigweGXxa6eeeaG3NI8RBXG
0QrpLLiaRhkqL3YL5n91vYxWVZ0dv5apyFfn8iBK5f8ZjYcTtHnRq7+j82rzDm358tiBL+fO+hiP
ExhVkR+CAEGgLgKq7IPIYyjNq0pHiptw2DbP/TGaSQJB4F4ItIrb1ml1lXeu6PQoLysR3YlB5Un0
350YiAKTTuKcsylBCScPHDl+6MCfyXCApk5x9w526erqW9eraVKnuXN612c+s/+I3jx1+1snqhC6
c+zj9zegnScSz549O7JryLRdsxGaHf3H8q5wcq0iO6UcnBN1PGrMyX7fnE7++4fV4rdHflFsTQ8L
TmX+ZTS6j/lRtwLZ7KOJicln30z87FRGJStsldCqq1GQp70pTVucFh/eyxPQ1eYe3Xty+vIt69d+
1svd1sGjMzp39Db9XqK8suNkx04eSK/NSj5+y/O5ZYvezjp6IJ/xw5Dt5uW8XsEe0LsPfXqCD5JN
X/RZX5kdnA+elXkG9V740Zp/2Rv08nw5Hj1X5Geq9TSpK776e8yNUctXTx96dfeVO9gcO748dd/C
491nPdZFijm15iFt0o/LjqCXF6/dsuKTfzPnkxlFkv73cXLX91Zt2frBa6Ivlx6tQtq/j3zjP+Pj
9Vs2vtgbDIPzW9TFKnyCub44r4ih9KWZV39HfRavet/PymgF1kyuBAGCAPwXr0CaciRPR5UpqOpv
pMhGqjwbXQWBhiBwTwRax23rdLbCmioVAiddVKEvrqDK5VR5tR6iwIQkOP2GaxlVrVBWlyrrMlkB
nUYe+N7Pk8J9vGW+MI4uQIqLPx0OXDCtl7eTyNHDRSxwdAFvJPVwZU8TgaNrs3+PQ6+NjRQjQeDI
yX1RXJES3L+ZHrYEhrAXmg0Ni9yDPdXXj0cfuoTA5rrCFrHK29mB4R1ZqZL01IEDAmhwhS49gtDu
HfuTC7T2Qh4S+48Iz7t0owJVppt65wDFi5Mf6+To6hyITBvBaguuJYd0YgbchWKpGEmcXKWQG/wy
CI/q29FBjLv1ZibDSWhozPxpnV2dXd2CfJjBcZEERa9auLv4xRVjurM3u9Y87d0riWjMqH4uIqG9
k3PtxDXgJ6Nh/bqKEM874olAlFJOCT3Dg+J3bIu7UiASsxU1B0KNguaO6efiIGbLMpcgcYIAQQAj
oMxBFHQoauCPUpRAh7sGSBIIAvdCoFVaV0ONoYMslGeDdAak0SE4FVNJIbUGGZiHEpJAgDVMgfo/
8+qkCZPfGBXhwzKBMPdI0LvjJGeB3oaCDqaGwdC71cDVgwUcnDuhmCtldaWvff3KiOdjnYLDutbl
W405+fhm5RSZaqXMii/p0QmfFyp9/J3V0wfa7lm3MPqvQnDjnYeNir+QlJr4R+CkSEerumCsIC+9
bGg4t/fP9KUtpTEI9NcFHJg4bYV5HTNLK4z9eEjkmoc7ycbsnB89jLmL634U9x8ya+6Mx9J2r1lg
Guc3ytcVq8dUjm5CEgT+8QjUCJyRQVNZWYWoUnV1qVwFvltPM0kgCNwLgVZx2zwbnnunAUoNchYj
R3vk5+0i8/V3sEPOEtqFQxIIcA3T1XoUAUr8/a+sSn3xmXVrEpxtuVJMV5NmSMLHPok2nM2mh5qp
qioK0flNU8lxDpHvkCD065VciFWlJvyFgh24Y7YWHt/rsef7om1Lvj5DqwS3VpCRVVx+bUPCm3ve
GRjuDxyNlbcIRtR04dlLEf6ETue/nZAX4evApBnUVUpJ9yET546TxZfAf03k0DGyT/L+3YcUT/WU
mXKb/+alXOvW0/QSY9ArkYI5RM1crCwvoUCJqjJjo/PqtY9SoIlRq98acfKzeUfLsQKueUKPsCB0
KSWTvgOUUsV+Whd26CFDl27BZwukys3IQjJ7oaG6Uu3bY9gb8yegcyUYwqyj11VIez02JgvZ1/Xd
RlPLC/KrmBcDqupucRlzm/WVhQVl5m8VRnHyQxD4pyBQ4zmCUit4PFQiR9VqBOcCQ9TgOeKfUn9S
zxYgwPbTWqDDIisczekQMFKtupVdfKDPgOHItS8SOktdLl49/7PWawIkgYBFJswQhSx48o0pkdvR
kxOGItrrMt1uo/8W2KIgDXACxy2LujBo4oBNQA9ZfGTt6MET0Jjh4RnfXlgLep1oZ+/03Jbdf40c
FQkkCl7y4zcBfJSFkJkeOhEHcc81P2376PnpQzYYGUsOXR6weurEqWBJ/wmjg7e8tPRficuZoWHa
cpYwSgOnQ9go9MGVohEDPYXVOWlodE/stZH+bgxMsqPlgqZEedK/Qlm/EbJL5SMDjBIIyYxomOaz
VaTHopARxu/QSOQ97LG8zxfMnBi1kZ6RbxJGIpf+4TQfhT8eRuul34QYRTTBF9gjxgcDR4ckXces
n1g49+N93msmRVBc85Bd32nzcqLWRsXSKqCIAHgtorWIB8yYdX3psrk0WzZp/hwPnubi/g/2JdPx
Ia8thq/4BpfOYWjth7MOhA19HN6O6AQ6cP234sjIJ9CPl18Nldz6adArmujEN3sqbx4a8zx1MvmN
+kYasBZyJQg82ghIgl/L+EtuV3VaxKM7C6UqMeU0xDP4tUe71qR29wUBmzt3UvV6PSzZgiv8Mlfj
RQcHZcOcb+aHS6elZQ5/ZnIDxUMWRbW8+G6hfekxF+qv/l5ZfJHThVz3Utu+Krdn3D28JA7S+j03
9PoUSCzhdo+tlkWL8WFnFOzzdEqlXiw2y6SjYHS+EapM+nVVVTC4LhA5GkvXUxSCrVeg/6ykLJSb
Mpl+Yd32vEU3F28Ze2vn25WjNg71M3lhZKAoDU9kxzh7k3T9v4ayi/OWVq/aMoxbGS2l5YuYr9t1
MtKaRSK2oDpp9UQMSebmgSBjodDOogCDltIgjuVaSm3g2UHPwBggHeyq/SRu4jfrN/1qwvjx4xuZ
tbCw0MvLq5HCbVbsEajFI1AFeDxaXouDBw82/umFEqGRVCqVlZWVFDQyMGdHJHJychKLxQ00jA0/
xi2vQsP6H0zqo1GLc+fO2TFBIpHAr729PdxfW1tbOMka7i9sOAYBfKuWCdu3bwwNDeLz+ZDEXOFS
h6bjxsCDX1g7jX3efb4joFoicUDunpW243PkwzNhuFyJRK62EqnU3ckFkkCggSJFYtPMrAaE4EGv
IyaAB95CXCCywrSQqmUIHB3rrPkGj4QT7+mzQYznFL5qubfWoPcdtiAIZn3XBl7TPKutbPYiF67P
Bk3CWldZqxfKbJpmOqulecCsTw9PWPedwCyKIN3MUK51hCYIEATqQQDaaEcm1JNO2ASBehGwdHX1
ijY+AV4l4G0ButTQqDs5u8JrBeQFVy2k3zdsIQkEGq+tHUmKXN3Bizl06dQSm3kOMn92/Lwliqzn
FXq0zDzrWgmXIEAQIAgQBB4IAq3itsFycMwCGBAQCmGM+oFUhBRCECAIEAQIAgSBRx+B1nLbjz5y
pIYEAYIAQYCDAHzexrEmfeTmKCAkQaBRCDTTbcOX9kapJ0IEgaYg4ODQ2M8D8AQ2XrgpJjxQ2Ueg
Fo9AFeCWt7wWU6ZMeaCPjkVhLa+ChcqmMfbu3ctmaDYaD70WbBXaMtFMt92Wq0RsIwgQBAgCBIEH
j0CzvfWDN7Vdl0iv8SWBIEAQIAgQBAgCBIF2gQBx2+3iNhEjCQIEAYIAQYAgQCPQioPkNTU1qfE/
XbsYeysjEUrqFBwZ1m9E94HPP8jVX1RFqd7RrT2da2FQlFXxXZ25y77Jk0oQIAgQBAgCBAEjAq3l
tmHbtTMH198+v2HF653Q5Kfo0krPf7jraGlh9uPj58I+L3SWtG8AAAESSURBVMbyqZQF3UYdMUYm
xCRv6db0uW56nRoJ7Cw3cDFUXJ47P23ZtpfFRv3t4YenPjV/Y5dVy3q7WVaoPdhPbCQIEAT+2QhA
418fALUtPyNRfetIVWaMpiwVYiK37g6BLyD7vvXlJXwWgVZx23Db0uOjCxI2rJg9HPm9iFzovbRR
+eAVs/cv/XxDuqdfyMCJ7P0rQqHfXjzexwnBFn/GjUpZ6xpFqGOCu1Qfzpze3czhy0/O3/TC0m3u
pjeERil7+EJu4z4aNifql9U7xpk2JX/4NhELCAIEAYJAYxCAxv+rr76qrq62FHZ1dX311VdZftnV
7a7FOx18R6PgwUinQup8w43lJaIXkfd8VoYQVhH4fzx1xoI4F8dOAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49904</attachid>
            <date>2010-03-03 07:19:13 -0800</date>
            <delta_ts>2010-03-03 14:20:56 -0800</delta_ts>
            <desc>initial version of patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>39777</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKaW5kZXggODY2Y2IyNC4uNWIyMzcx
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKQEAgLTM4LDYgKzM4LDkg
QEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBmdW5jdGlvbihjb250ZW50RWxlbWVudCkKICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQpOwogCiAgICAg
dGhpcy5jb250ZW50RWxlbWVudCA9IGNvbnRlbnRFbGVtZW50OworICAgIHRoaXMuY29udGVudERp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHRoaXMuY29udGVudERpdi5j
bGFzc05hbWUgPSAiY29udGVudCI7CisgICAgdGhpcy5jb250ZW50RGl2LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlT3ZlckNvbnRlbnQuYmluZCh0aGlzKSk7CiB9CiAK
IFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKQEAgLTU0LDE4ICs1NywzMCBAQCBX
ZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBwcmVmZXJyZWRX
aWR0aCA9IHByZWZlcnJlZFdpZHRoIHx8IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lkdGg7
CiAgICAgICAgIHZhciBwcmVmZXJyZWRIZWlnaHQgPSBwcmVmZXJyZWRIZWlnaHQgfHwgdGhpcy5j
b250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CiAKLSAgICAgICAgdmFyIGNvbnRlbnREaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudERpdi5jbGFzc05h
bWUgPSAiY29udGVudCI7Ci0gICAgICAgIGNvbnRlbnREaXYuYXBwZW5kQ2hpbGQodGhpcy5jb250
ZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50RGl2
KTsKKyAgICAgICAgdGhpcy5jb250ZW50RGl2LmFwcGVuZENoaWxkKHRoaXMuY29udGVudEVsZW1l
bnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50RGl2KTsK
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpOwogICAgICAg
ICB0aGlzLl9wb3NpdGlvbkVsZW1lbnQoYW5jaG9yLCBwcmVmZXJyZWRXaWR0aCwgcHJlZmVycmVk
SGVpZ2h0KTsKICAgICB9LAogCisgICAgX21vdXNlT3ZlckNvbnRlbnQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy5raWxsSGlkZVRpbWVyKCk7CisgICAgICAgIGV2ZW50LnN0
b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKICAgICBoaWRlOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLlBvcG92ZXIuX3BvcG92ZXJFbGVtZW50OwotICAg
ICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRo
aXMua2lsbEhpZGVUaW1lcigpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBvcG92ZXIuX3Bv
cG92ZXJFbGVtZW50KSB7CisgICAgICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLlBvcG92ZXIu
X3BvcG92ZXJFbGVtZW50OworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0
aGlzLmVsZW1lbnQpOworICAgICAgICB9CisgICAgfSwKKworICAgIGdldCBpc1Zpc2libGUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVu
dCA/IHRydWUgOiBmYWxzZTsKICAgICB9LAogCiAgICAgaGlkZVdoZW5DbGlja2VkOiBmdW5jdGlv
bigpCkBAIC03MywxNCArODgsMzYgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmhp
ZGUuYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIGhpZGVBZnRlckRlbGF5OiBmdW5jdGlvbih0
aW1lb3V0KQorICAgIHsKKyAgICAgICAgdGhpcy5raWxsSGlkZVRpbWVyKCk7CisgICAgICAgIHRo
aXMuaGlkZURlbGF5ID0gdGltZW91dDsKKyAgICAgICAgdGhpcy5faGlkZVRpbWVyID0gc2V0VGlt
ZW91dCh0aGlzLmhpZGUuYmluZCh0aGlzKSwgdGltZW91dCk7CisgICAgfSwKKworICAgIGtpbGxI
aWRlVGltZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9oaWRlVGltZXIp
IHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZXIpOworICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuX2hpZGVUaW1lcjsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmhpZGVE
ZWxheTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBnZXQgaXNIaWRlQWZ0ZXJEZWxheSgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5faGlkZVRpbWVyID8gdHJ1ZSA6IGZhbHNlOworICAg
IH0sCisKICAgICBfcG9zaXRpb25FbGVtZW50OiBmdW5jdGlvbihhbmNob3JFbGVtZW50LCBwcmVm
ZXJyZWRXaWR0aCwgcHJlZmVycmVkSGVpZ2h0KQogICAgIHsKICAgICAgICAgY29uc3QgYm9yZGVy
V2lkdGggPSAyNTsKICAgICAgICAgY29uc3Qgc2Nyb2xsZXJXaWR0aCA9IDExOwogICAgICAgICBj
b25zdCBhcnJvd0hlaWdodCA9IDE1OwotICAgICAgICBjb25zdCBhcnJvd09mZnNldCA9IDE1Owor
ICAgICAgICBjb25zdCBhcnJvd0xlZnRPZmZzZXQgPSAxMDsKKyAgICAgICAgY29uc3QgYXJyb3dS
aWdodE9mZnNldCA9IDU7CiAgICAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IDEwOwotICAgICAg
ICAKKwogICAgICAgICAvLyBTa2lubnkgdG9vbHRpcHMgYXJlIG5vdCBwcmV0dHksIHRoZWlyIGFy
cm93IGxvY2F0aW9uIGlzIG5vdCBuaWNlLgogICAgICAgICBwcmVmZXJyZWRXaWR0aCA9IE1hdGgu
bWF4KHByZWZlcnJlZFdpZHRoLCA1MCk7CiAgICAgICAgIGNvbnN0IHRvdGFsV2lkdGggPSB3aW5k
b3cuaW5uZXJXaWR0aDsKQEAgLTEyMSwyMiArMTU4LDI1IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVy
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgaG9yaXpvbnRhbEFsaWdubWVudDsKICAgICAg
ICAgaWYgKGFuY2hvckJveC54ICsgbmV3RWxlbWVudFBvc2l0aW9uLndpZHRoIDwgdG90YWxXaWR0
aCkgewotICAgICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSBNYXRoLm1heChib3JkZXJS
YWRpdXMsIGFuY2hvckJveC54IC0gYXJyb3dPZmZzZXQpOworICAgICAgICAgICAgbmV3RWxlbWVu
dFBvc2l0aW9uLnggPSBNYXRoLm1heChib3JkZXJSYWRpdXMsIGFuY2hvckJveC54IC0gYm9yZGVy
UmFkaXVzIC0gYXJyb3dMZWZ0T2Zmc2V0KTsKICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbm1l
bnQgPSAibGVmdCI7CiAgICAgICAgIH0gZWxzZSBpZiAobmV3RWxlbWVudFBvc2l0aW9uLndpZHRo
ICsgYm9yZGVyUmFkaXVzICogMiA8IHRvdGFsV2lkdGgpIHsKICAgICAgICAgICAgIG5ld0VsZW1l
bnRQb3NpdGlvbi54ID0gdG90YWxXaWR0aCAtIG5ld0VsZW1lbnRQb3NpdGlvbi53aWR0aCAtIGJv
cmRlclJhZGl1czsKICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQgPSAicmlnaHQiOwog
ICAgICAgICAgICAgLy8gUG9zaXRpb24gYXJyb3cgYWNjdXJhdGVseS4KLSAgICAgICAgICAgIHRo
aXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLnJpZ2h0ID0gdG90YWxXaWR0aCAtIGFuY2hvckJv
eC54IC0gYW5jaG9yQm94LndpZHRoIC0gYm9yZGVyUmFkaXVzICsgInB4IjsKKyAgICAgICAgICAg
IHZhciBhcnJvd1JpZ2h0UG9zaXRpb24gPSBNYXRoLm1heCgwLCB0b3RhbFdpZHRoIC0gYW5jaG9y
Qm94LnggLSBhbmNob3JCb3gud2lkdGggLSBib3JkZXJSYWRpdXMgLSBhcnJvd1JpZ2h0T2Zmc2V0
KTsKKyAgICAgICAgICAgIGFycm93UmlnaHRQb3NpdGlvbiArPSBhbmNob3JCb3gud2lkdGggLyAy
OworICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUucmlnaHQgPSBhcnJv
d1JpZ2h0UG9zaXRpb24gKyAicHgiOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbmV3
RWxlbWVudFBvc2l0aW9uLnggPSBib3JkZXJSYWRpdXM7Ci0gICAgICAgICAgICBuZXdFbGVtZW50
UG9zaXRpb24ud2lkdGggPSB0b3RhbFdpZHRoIC0gc2Nyb2xsZXJXaWR0aCAtIGJvcmRlclJhZGl1
cyAqIDI7CisgICAgICAgICAgICBuZXdFbGVtZW50UG9zaXRpb24ud2lkdGggPSB0b3RhbFdpZHRo
IC0gYm9yZGVyUmFkaXVzICogMjsKICAgICAgICAgICAgIG5ld0VsZW1lbnRQb3NpdGlvbi5oZWln
aHQgKz0gc2Nyb2xsZXJXaWR0aDsKICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQgPSAi
bGVmdCI7CiAgICAgICAgICAgICBpZiAodmVydGljYWxBbGlnbm1lbnQgPT09ICJib3R0b20iKQog
ICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRQb3NpdGlvbi55IC09IHNjcm9sbGVyV2lkdGg7CiAg
ICAgICAgICAgICAvLyBQb3NpdGlvbiBhcnJvdyBhY2N1cmF0ZWx5LgotICAgICAgICAgICAgdGhp
cy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCA9IGFuY2hvckJveC54ICsgInB4IjsKKyAg
ICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQgPSBNYXRoLm1heCgw
LCBhbmNob3JCb3gueCAtIGJvcmRlclJhZGl1cyAqIDIgLSBhcnJvd0xlZnRPZmZzZXQpICsgInB4
IjsKKyAgICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQgKz0gYW5j
aG9yQm94LndpZHRoIC8gMjsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c05hbWUgPSAicG9wb3ZlciAiICsgdmVydGljYWxBbGlnbm1lbnQgKyAiLSIgKyBob3Jpem9udGFs
QWxpZ25tZW50ICsgIi1hcnJvdyI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzCmluZGV4IDIxYTc2YWYuLjJmM2FiNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBAIC00NSw2ICs0NSw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2NvbnRhaW5lckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9jb250YWluZXJF
bGVtZW50LmlkID0gInRpbWVsaW5lLWNvbnRhaW5lciI7CiAgICAgdGhpcy5fY29udGFpbmVyRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9vblNjcm9sbC5iaW5kKHRoaXMp
LCBmYWxzZSk7CisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW1vdmUiLCB0aGlzLl9tb3VzZU92ZXJCYWNrZ3JvdW5kLmJpbmQodGhpcykpOwogICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKIAogICAgIHRo
aXMuY3JlYXRlU2lkZWJhcih0aGlzLl9jb250YWluZXJFbGVtZW50LCB0aGlzLl9jb250YWluZXJF
bGVtZW50KTsKQEAgLTc4LDE0ICs3OSwxOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9
IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9jcmVhdGVTdGF0dXNiYXJCdXR0b25zKCk7CiAKICAgICB0
aGlzLl9yZWNvcmRzID0gW107Ci0gICAgdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzID0ge307Ci0g
ICAgdGhpcy5fdGltZXJSZWNvcmRzID0ge307CisgICAgdGhpcy5zZW5kUmVxdWVzdFJlY29yZHMg
PSB7fTsKKyAgICB0aGlzLnRpbWVyUmVjb3JkcyA9IHt9OwogCiAgICAgdGhpcy5fY2FsY3VsYXRv
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yKCk7CiAgICAgdGhpcy5fYm91
bmRhcmllc0FyZVZhbGlkID0gdHJ1ZTsKICAgICB0aGlzLl9zY3JvbGxUb3AgPSAwOwogfQogCitX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5zaG93RGV0YWlsc0RlbGF5ID0gMjAwMDsKK1dlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLmhpZGVEZXRhaWxzRGVsYXkgPSA1MDAwOworV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwuaGlkZURldGFpbHNJZk1vdXNlTW92ZWREZWxheSA9IDMwMDsKKwog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgIHRvb2xiYXJJdGVt
Q2xhc3M6ICJ0aW1lbGluZSIsCiAKQEAgLTExMSw2ICsxMTYsMzIgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcmll
czsKICAgICB9LAogCisgICAgZ2V0IHJlY29yZFN0eWxlcygpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuX3JlY29yZFN0eWxlcykgeworICAgICAgICAgICAgdmFyIHJlY29yZFR5cGVzID0gV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZTsKKyAgICAgICAgICAgIHZhciByZWNv
cmRTdHlsZXMgPSB7fTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmVu
dERpc3BhdGNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZlbnQiKSwgY2F0
ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5MYXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMYXlvdXQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5yZW5kZXJpbmcgfTsKKyAgICAg
ICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5
OiB0aGlzLmNhdGVnb3JpZXMucmVuZGVyaW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuUGFpbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYWlu
dCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnJlbmRlcmluZyB9OworICAgICAgICAgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9
OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVySW5zdGFsbF0gPSB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluc3RhbGwgVGltZXIiKSwgY2F0ZWdvcnk6
IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1ty
ZWNvcmRUeXBlcy5UaW1lclJlbW92ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlbW92ZSBUaW1lciIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9Owor
ICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyRmlyZV0gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIEZpcmVkIiksIGNhdGVnb3J5OiB0aGlzLmNh
dGVnb3JpZXMuc2NyaXB0aW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlw
ZXMuWEhSUmVhZHlTdGF0ZUNoYW5nZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlhIUiBSZWFkeSBTdGF0ZSBDaGFuZ2UiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3Jp
cHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9
IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IHRo
aXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNv
cmRUeXBlcy5FdmFsdWF0ZVNjcmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkV2YWx1YXRlIFNjcmlwdCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9
OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtUaW1lbGluZV0gPSB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1hcmsiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0
ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5SZXNvdXJjZVNlbmRSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2VuZCBSZXF1ZXN0IiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OworICAg
ICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNl
XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBSZXNwb25zZSIpLCBj
YXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLmxvYWRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZUZpbmlzaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkZpbmlzaCBMb2FkaW5nIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9h
ZGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZ1bmN0aW9uQ2Fs
bF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwgY2F0
ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHRoaXMuX3Jl
Y29yZFN0eWxlcyA9IHJlY29yZFN0eWxlczsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhp
cy5fcmVjb3JkU3R5bGVzOworICAgIH0sCisKICAgICBfY3JlYXRlU3RhdHVzYmFyQnV0dG9uczog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy50b2dnbGVUaW1lbGluZUJ1dHRvbiA9IG5l
dyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAicmVjb3JkLXByb2ZpbGUtc3RhdHVz
LWJhci1pdGVtIik7CkBAIC0xNDYsNyArMTc3LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgX2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZTogZnVuY3Rp
b24ocmVjb3JkLCBjb2xsZWN0aW9uKQogICAgIHsKLSAgICAgICAgdmFyIGZvcm1hdHRlZFJlY29y
ZCA9IHRoaXMuX2Zvcm1hdFJlY29yZChyZWNvcmQpOworICAgICAgICB2YXIgZm9ybWF0dGVkUmVj
b3JkID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZChyZWNv
cmQsIHRoaXMpOwogCiAgICAgICAgIC8vIEdsdWUgc3Vic2VxdWVudCByZWNvcmRzIHdpdGggc2Ft
ZSBjYXRlZ29yeSBhbmQgdGl0bGUgdG9nZXRoZXIgaWYgdGhleSBhcmUgY2xvc2VyIHRoYW4gMTAw
bXMgdG8gZWFjaCBvdGhlci4KICAgICAgICAgaWYgKHRoaXMuX2xhc3RSZWNvcmQgJiYgKCFyZWNv
cmQuY2hpbGRyZW4gfHwgIXJlY29yZC5jaGlsZHJlbi5sZW5ndGgpICYmCkBAIC0xNzEsMTEyICsy
MDIsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiBmb3JtYXR0ZWRSZWNvcmQ7CiAgICAgfSwKIAotICAgIF9mb3JtYXRSZWNvcmQ6IGZ1
bmN0aW9uKHJlY29yZCkKLSAgICB7Ci0gICAgICAgIHZhciByZWNvcmRUeXBlcyA9IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGU7Ci0gICAgICAgIGlmICghdGhpcy5fcmVjb3Jk
U3R5bGVzKSB7Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXMgPSB7fTsKLSAgICAgICAg
ICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXSA9IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZlbnQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdv
cmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRU
eXBlcy5MYXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQiKSwg
Y2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5yZW5kZXJpbmcgfTsKLSAgICAgICAgICAgIHRoaXMu
X3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5OiB0aGlz
LmNhdGVnb3JpZXMucmVuZGVyaW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNb
cmVjb3JkVHlwZXMuUGFpbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYWlu
dCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnJlbmRlcmluZyB9OwotICAgICAgICAgICAg
dGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9h
ZGluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVy
SW5zdGFsbF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluc3RhbGwgVGltZXIi
KSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRo
aXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lclJlbW92ZV0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1lciIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29y
aWVzLnNjcmlwdGluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5
cGVzLlRpbWVyRmlyZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIEZp
cmVkIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAg
ICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSUmVhZHlTdGF0ZUNoYW5nZV0gPSB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiBSZWFkeSBTdGF0ZSBDaGFuZ2UiKSwg
Y2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMu
X3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRp
bmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmFsdWF0
ZVNjcmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIFNjcmlw
dCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OwotICAgICAgICAgICAg
dGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtUaW1lbGluZV0gPSB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1hcmsiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5z
Y3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5S
ZXNvdXJjZVNlbmRSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vu
ZCBSZXF1ZXN0IiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OwotICAgICAg
ICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3Bv
bnNlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBSZXNwb25zZSIp
LCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLmxvYWRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMu
X3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZUZpbmlzaF0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkZpbmlzaCBMb2FkaW5nIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVn
b3JpZXMubG9hZGluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5
cGVzLkZ1bmN0aW9uQ2FsbF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0
aW9uIENhbGwiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBzdHlsZSA9IHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmQudHlw
ZV07Ci0gICAgICAgIGlmICghc3R5bGUpCi0gICAgICAgICAgICBzdHlsZSA9IHRoaXMuX3JlY29y
ZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXTsKLQotICAgICAgICB2YXIgZm9ybWF0
dGVkUmVjb3JkID0ge307Ci0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYXRlZ29yeSA9IHN0eWxl
LmNhdGVnb3J5OwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudGl0bGUgPSBzdHlsZS50aXRsZTsK
LSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZSA9IHJlY29yZC5zdGFydFRpbWUgLyAx
MDAwOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuZGF0YSA9IHJlY29yZC5kYXRhOwotICAgICAg
ICBmb3JtYXR0ZWRSZWNvcmQuY291bnQgPSAxOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudHlw
ZSA9IHJlY29yZC50eXBlOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSA9ICh0eXBl
b2YgcmVjb3JkLmVuZFRpbWUgIT09ICJ1bmRlZmluZWQiKSA/IHJlY29yZC5lbmRUaW1lIC8gMTAw
MCA6IGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWU7Ci0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5v
cmlnaW5hbFJlY29yZEZvclRlc3RzID0gcmVjb3JkOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQu
Y2FsbGVyU2NyaXB0TmFtZSA9IHJlY29yZC5jYWxsZXJTY3JpcHROYW1lOwotICAgICAgICBmb3Jt
YXR0ZWRSZWNvcmQuY2FsbGVyU2NyaXB0TGluZSA9IHJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwot
Ci0gICAgICAgIC8vIE1ha2UgcmVzb3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1
ZXN0IHdhcyBzZW50OyBtYWtlIGZpbmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNwb25zZSByZWNl
aXZlZC4KLSAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIHRoaXMu
X3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YS5pZGVudGlmaWVyXSA9IGZvcm1hdHRlZFJl
Y29yZDsKLSAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSkgewotICAgICAg
ICAgICAgdmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3Jl
Y29yZC5kYXRhLmlkZW50aWZpZXJdOwotICAgICAgICAgICAgaWYgKHNlbmRSZXF1ZXN0UmVjb3Jk
KSB7IC8vIEZhbHNlIGlmIHdlIHN0YXJ0ZWQgaW5zdHJ1bWVudGF0aW9uIGluIHRoZSBtaWRkbGUg
b2YgcmVxdWVzdC4KLSAgICAgICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVzcG9uc2VS
ZWNlaXZlZEZvcm1hdHRlZFRpbWUgPSBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lOwotICAgICAg
ICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5z
dGFydFRpbWU7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmRldGFpbHMgPSB0aGlz
Ll9nZXRSZWNvcmREZXRhaWxzKHNlbmRSZXF1ZXN0UmVjb3JkKTsKLSAgICAgICAgICAgICAgICBm
b3JtYXR0ZWRSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxl
clNjcmlwdE5hbWU7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGxlclNjcmlw
dExpbmUgPSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlRmluaXNoKSB7Ci0gICAgICAgICAgICB2YXIgc2Vu
ZFJlcXVlc3RSZWNvcmQgPSB0aGlzLl9zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRl
bnRpZmllcl07Ci0gICAgICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIHsvLyBGYWxzZSBm
b3IgbWFpbiByZXNvdXJjZS4KLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRU
aW1lID0gc2VuZFJlcXVlc3RSZWNvcmQuX3Jlc3BvbnNlUmVjZWl2ZWRGb3JtYXR0ZWRUaW1lOwot
ICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYWxsZXJTY3JpcHROYW1lID0gc2VuZFJl
cXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRS
ZWNvcmQuY2FsbGVyU2NyaXB0TGluZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNjcmlwdExp
bmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFdl
Ykluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJJbnN0YWxsKSB7Ci0gICAg
ICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudGltZW91dCA9IHJlY29yZC5kYXRhLnRpbWVvdXQ7Ci0g
ICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc2luZ2xlU2hvdCA9IHJlY29yZC5kYXRhLnNpbmds
ZVNob3Q7Ci0gICAgICAgICAgICB0aGlzLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGEudGltZXJJ
ZF0gPSBmb3JtYXR0ZWRSZWNvcmQ7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJGaXJlIHx8Ci0gICAg
ICAgICAgICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50
LlJlY29yZFR5cGUuVGltZXJSZW1vdmUpIHsKLSAgICAgICAgICAgIHZhciB0aW1lckluc3RhbGxl
ZFJlY29yZCA9IHRoaXMuX3RpbWVyUmVjb3Jkc1tyZWNvcmQuZGF0YS50aW1lcklkXTsKLSAgICAg
ICAgICAgIGlmICh0aW1lckluc3RhbGxlZFJlY29yZCkgewotICAgICAgICAgICAgICAgIGZvcm1h
dHRlZFJlY29yZC5jYWxsU2l0ZVNjcmlwdE5hbWUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxs
ZXJTY3JpcHROYW1lOwotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYWxsU2l0ZVNj
cmlwdExpbmUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwotICAgICAg
ICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC50aW1lb3V0ID0gdGltZXJJbnN0YWxsZWRSZWNvcmQu
dGltZW91dDsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc2luZ2xlU2hvdCA9IHRp
bWVySW5zdGFsbGVkUmVjb3JkLnNpbmdsZVNob3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmRldGFpbHMgPSB0aGlzLl9nZXRSZWNvcmREZXRhaWxz
KHJlY29yZCk7Ci0KLSAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlY29yZDsKLSAgICB9LAotCi0g
ICAgX2dldFJlY29yZERldGFpbHM6IGZ1bmN0aW9uKHJlY29yZCkKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAocmVjb3JkLnR5cGUpIHsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwocmVjb3JkLmRhdGEuc2NyaXB0TmFtZSArICI6IiArIHJl
Y29yZC5kYXRhLnNjcmlwdExpbmUpOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZUFnZW50LlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKLSAgICAgICAgICAgIHJldHVybiByZWNv
cmQuZGF0YSA/IHJlY29yZC5kYXRhLnR5cGUgOiAiIjsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlBhaW50OgotICAgICAgICAgICAgcmV0dXJuIHJl
Y29yZC5kYXRhLndpZHRoICsgIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyByZWNvcmQuZGF0YS5oZWln
aHQ7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5U
aW1lckluc3RhbGw6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVj
b3JkVHlwZS5UaW1lclJlbW92ZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlRpbWVyRmlyZToKLSAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0
YS50aW1lcklkOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuWEhSUmVhZHlTdGF0ZUNoYW5nZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlhIUkxvYWQ6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdDoKLSAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3Q6
Ci0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHJlY29y
ZC5kYXRhLnVybCk7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVj
b3JkVHlwZS5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlRmluaXNoOgotICAgICAgICAgICAg
dmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5k
YXRhLmlkZW50aWZpZXJdOwotICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXF1ZXN0UmVjb3JkID8g
V2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNlbmRSZXF1ZXN0UmVjb3JkLmRhdGEudXJs
KSA6ICIiOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5
cGUuTWFya1RpbWVsaW5lOgotICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5kYXRhLm1lc3NhZ2U7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICAgIH0KLSAg
ICB9LAotCiAgICAgc2V0U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRoLmNhbGwodGhp
cywgd2lkdGgpOwpAQCAtMjkyLDcgKzIxNyw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgcmVzaXplOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdGhpcy5fY2xvc2VSZWNvcmREZXRhaWxzKCk7CisgICAgICAgIHRoaXMuY2xvc2VSZWNvcmRE
ZXRhaWxzKCk7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCgpOwogICAgIH0sCiAKQEAg
LTMwNiwxNyArMjMxLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9vdmVydmlld1BhbmUucmVzZXQoKTsKICAgICAgICAgdGhpcy5fYWRq
dXN0U2Nyb2xsUG9zaXRpb24oMCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2goKTsKLSAgICAgICAg
dGhpcy5fY2xvc2VSZWNvcmREZXRhaWxzKCk7Ci0gICAgfSwKLQotICAgIF9jbG9zZVJlY29yZERl
dGFpbHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBkZXRhaWxzID0gV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWlsczsKLSAgICAgICAgaWYgKGRldGFpbHMpIHsK
LSAgICAgICAgICAgIGRldGFpbHMuaGlkZSgpOwotICAgICAgICAgICAgZGVsZXRlIGRldGFpbHM7
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yZWNvcmREZXRhaWxzID0g
bnVsbDsKLSAgICAgICAgfQorICAgICAgICB0aGlzLmNsb3NlUmVjb3JkRGV0YWlscygpOwogICAg
IH0sCiAKICAgICBzaG93OiBmdW5jdGlvbigpCkBAIC0zMjksNyArMjQ0LDcgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX29uU2Nyb2xsOiBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWlscygpOworICAg
ICAgICB0aGlzLmNsb3NlUmVjb3JkRGV0YWlscygpOwogICAgICAgICB2YXIgc2Nyb2xsVG9wID0g
dGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3A7CiAgICAgICAgIHZhciBkaXZpZGVyc1Rv
cCA9IE1hdGgubWF4KDAsIHNjcm9sbFRvcCk7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lR3JpZC5z
ZXRTY3JvbGxBbmREaXZpZGVyVG9wKHNjcm9sbFRvcCwgZGl2aWRlcnNUb3ApOwpAQCAtMzM4LDcg
KzI1Myw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
IF93aW5kb3dDaGFuZ2VkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9jbG9zZVJl
Y29yZERldGFpbHMoKTsKKyAgICAgICAgdGhpcy5jbG9zZVJlY29yZERldGFpbHMoKTsKICAgICAg
ICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKCk7CiAgICAgfSwKIApAQCAtNDI2LDExICszNDEsMTEg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dmFyIGlzRXZlbiA9ICEoaSAlIDIpOwogCiAgICAgICAgICAgICBpZiAoIWxpc3RSb3dFbGVtZW50
KSB7Ci0gICAgICAgICAgICAgICAgbGlzdFJvd0VsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkTGlzdFJvdygpLmVsZW1lbnQ7CisgICAgICAgICAgICAgICAgbGlzdFJvd0Vs
ZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdyh0aGlzKS5lbGVt
ZW50OwogICAgICAgICAgICAgICAgIHRoaXMuX3NpZGViYXJMaXN0RWxlbWVudC5hcHBlbmRDaGls
ZChsaXN0Um93RWxlbWVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWdyYXBo
Um93RWxlbWVudCkgewotICAgICAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdyh0aGlzLl9pdGVtc0dyYXBoc0VsZW1lbnQs
IHNjaGVkdWxlUmVmcmVzaENhbGxiYWNrLCByb3dIZWlnaHQpLmVsZW1lbnQ7CisgICAgICAgICAg
ICAgICAgZ3JhcGhSb3dFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEdy
YXBoUm93KHRoaXMsIHRoaXMuX2l0ZW1zR3JhcGhzRWxlbWVudCwgc2NoZWR1bGVSZWZyZXNoQ2Fs
bGJhY2ssIHJvd0hlaWdodCkuZWxlbWVudDsKICAgICAgICAgICAgICAgICB0aGlzLl9ncmFwaFJv
d3NFbGVtZW50LmFwcGVuZENoaWxkKGdyYXBoUm93RWxlbWVudCk7CiAgICAgICAgICAgICB9CiAK
QEAgLTQ3NywxMiArMzkyLDczIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgLy8gUHJldmVudCB0aGUgY29udGFpbmVyIGZyb20gYmVpbmcgc2Nyb2xs
ZWQgb2ZmIHRoZSBlbmQuCiAgICAgICAgIGlmICgodGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3Jv
bGxUb3AgKyB0aGlzLl9jb250YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodCkgPiB0b3RhbEhlaWdo
dCArIDEpCiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9ICh0
b3RhbEhlaWdodCAtIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0KTsKKyAgICB9
LAorCisgICAgX21vdXNlT3ZlckJhY2tncm91bmQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHMpCisgICAg
ICAgICAgICB0aGlzLnNldHVwSGlkZURldGFpbHNUaW1lcigpOworICAgICAgICBpZiAodGhpcy5f
c2hvd1JlY29yZERldGFpbHNUaW1lcikKKyAgICAgICAgICAgIHRoaXMua2lsbFNob3dEZXRhaWxz
VGltZXIoKTsKKyAgICB9LAorCisgICAgc2V0dXBIaWRlRGV0YWlsc1RpbWVyOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB2YXIgZGV0YWlscyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LnJlY29yZERldGFpbHM7CisgICAgICAgIGlmIChkZXRhaWxzICYmIGRldGFpbHMuaXNWaXNpYmxl
ICYmICghZGV0YWlscy5oaWRlRGVsYXkgfHwgZGV0YWlscy5oaWRlRGVsYXkgPiBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5oaWRlRGV0YWlsc0lmTW91c2VNb3ZlZERlbGF5KSkKKyAgICAgICAg
ICAgIGRldGFpbHMuaGlkZUFmdGVyRGVsYXkoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuaGlk
ZURldGFpbHNJZk1vdXNlTW92ZWREZWxheSk7CisgICAgfSwKKworICAgIHNldHVwU2hvd0RldGFp
bHNUaW1lcjogZnVuY3Rpb24ocmVjb3JkLCBhbmNob3IsIHRpbWVvdXQpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5fYW5jaG9yRm9yRGV0YWlsc1RpbWVyICE9IGFuY2hvcikgeworICAgICAgICAg
ICAgdGhpcy5raWxsU2hvd0RldGFpbHNUaW1lcigpOworICAgICAgICAgICAgdGhpcy5fYW5jaG9y
Rm9yRGV0YWlsc1RpbWVyID0gYW5jaG9yOworICAgICAgICAgICAgdGhpcy5fcmVjb3JkRm9yRGV0
YWlsc1RpbWVyID0gcmVjb3JkOworICAgICAgICAgICAgdGhpcy5fc2hvd1JlY29yZERldGFpbHNU
aW1lciA9IHNldFRpbWVvdXQodGhpcy5zaG93UmVjb3JkRGV0YWlsc1dyYXBwZXIuYmluZCh0aGlz
KSwgdGltZW91dCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAga2lsbFNob3dEZXRhaWxzVGlt
ZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zaG93UmVjb3JkRGV0YWls
c1RpbWVyKSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1JlY29yZERldGFp
bHNUaW1lcik7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2hvd1JlY29yZERldGFpbHNUaW1l
cjsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9hbmNob3JGb3JEZXRhaWxzVGltZXI7CisgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fcmVjb3JkRm9yRGV0YWlsc1RpbWVyOworICAgICAgICB9Cisg
ICAgfSwKKyAgICAKKyAgICBzaG93UmVjb3JkRGV0YWlsc1dyYXBwZXI6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuc2hvd1JlY29yZERldGFpbHModGhpcy5fcmVjb3JkRm9yRGV0YWls
c1RpbWVyLCB0aGlzLl9hbmNob3JGb3JEZXRhaWxzVGltZXIpOworICAgIH0sCisKKyAgICBzaG93
UmVjb3JkRGV0YWlsczogZnVuY3Rpb24ocmVjb3JkLCBhbmNob3IpCisgICAgeworICAgICAgICB0
aGlzLmNsb3NlUmVjb3JkRGV0YWlscygpOworICAgICAgICB0aGlzLmtpbGxTaG93RGV0YWlsc1Rp
bWVyKCk7CisgICAgICAgIGlmIChyZWNvcmQpIHsKKyAgICAgICAgICAgIHZhciBkZXRhaWxzID0g
bmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHJlY29yZC5nZW5lcmF0ZVBvcHVwQ29udGVudCh0aGlz
Ll9jYWxjdWxhdG9yKSk7CisgICAgICAgICAgICBkZXRhaWxzLmhpZGVXaGVuQ2xpY2tlZCgpOwor
ICAgICAgICAgICAgZGV0YWlscy5oaWRlQWZ0ZXJEZWxheShXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5oaWRlRGV0YWlsc0RlbGF5KTsKKyAgICAgICAgICAgIGRldGFpbHMuc2hvdyhhbmNob3Ip
OworICAgICAgICAgICAgZGV0YWlscy5hbmNob3IgPSBhbmNob3I7CisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yZWNvcmREZXRhaWxzID0gZGV0YWlsczsKKyAgICAgICAg
fQorICAgIH0sCisKKyAgICBjbG9zZVJlY29yZERldGFpbHM6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yZWNvcmREZXRhaWxzKSB7Cisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yZWNvcmREZXRhaWxzLmhpZGUo
KTsKKyAgICAgICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yZWNvcmRE
ZXRhaWxzOworICAgICAgICB9CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKIAot
CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSA9IGZ1bmN0aW9uKG5hbWUsIHRpdGxlLCBj
b2xvcikKIHsKICAgICB0aGlzLm5hbWUgPSBuYW1lOwpAQCAtNDkwLDcgKzQ2Niw2IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5ID0gZnVuY3Rpb24obmFtZSwgdGl0bGUsIGNvbG9yKQog
ICAgIHRoaXMuY29sb3IgPSBjb2xvcjsKIH0KIAotCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxj
dWxhdG9yID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMucmVzZXQoKTsKQEAgLTUzOCw4ICs1MTMs
OSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIH0KIAog
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93ID0gZnVuY3Rpb24oKQorV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdyA9IGZ1bmN0aW9uKHBhbmVsKQogeworICAgIHRo
aXMuX3BhbmVsID0gcGFuZWw7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICAgdGhpcy5lbGVtZW50Lmxpc3RSb3cgPSB0aGlzOwogICAgIHRoaXMu
ZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CkBAIC01NjUsNiArNTQxLDcgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUVsZW1lbnQpOwogICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9yZXBlYXRDb3VudEVsZW1lbnQpOwogICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xpY2suYmluZCh0aGlzKSk7CisgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlT3Zl
clJlY29yZC5iaW5kKHRoaXMpLCB0cnVlKTsKIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkTGlzdFJvdy5wcm90b3R5cGUgPSB7CkBAIC01NzcsMTMgKzU1NCwxMCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS10cmVlLWl0ZW0gdGltZWxpbmUtY2F0ZWdvcnktIiAr
IHJlY29yZC5jYXRlZ29yeS5uYW1lICsgKGlzRXZlbiA/ICIgZXZlbiIgOiAiIik7CiAgICAgICAg
IHRoaXMuX3R5cGVFbGVtZW50LnRleHRDb250ZW50ID0gcmVjb3JkLnRpdGxlOwogCi0gICAgICAg
IGlmIChyZWNvcmQuZGV0YWlscykgeworICAgICAgICBpZiAocmVjb3JkLmRldGFpbHMpCiAgICAg
ICAgICAgICB0aGlzLl9kYXRhRWxlbWVudC50ZXh0Q29udGVudCA9ICIoIiArIHJlY29yZC5kZXRh
aWxzICsgIikiOwotICAgICAgICAgICAgdGhpcy5fZGF0YUVsZW1lbnQudGl0bGUgPSByZWNvcmQu
ZGV0YWlsczsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhp
cy5fZGF0YUVsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFF
bGVtZW50LnRpdGxlID0gIiI7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAocmVjb3JkLmNvdW50
ID4gMSkKICAgICAgICAgICAgIHRoaXMuX3JlcGVhdENvdW50RWxlbWVudC50ZXh0Q29udGVudCA9
ICJcdTIwMDlcdTAwZDdcdTIwMDkiICsgcmVjb3JkLmNvdW50OwpAQCAtNTkxLDg0ICs1NjUsMjMg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9yZXBlYXRDb3VudEVsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKICAgICB9
LAogCi0gICAgX2NyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbnRlbnQsIHN0eWxlTmFtZSkKLSAgICB7
Ci0gICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKLSAg
ICAgICAgdGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7
Ci0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAg
ICAgY2VsbC5jbGFzc05hbWUgPSAidGltZWxpbmUtZGV0YWlscyI7Ci0gICAgICAgIGlmIChzdHls
ZU5hbWUpCi0gICAgICAgICAgICAgY2VsbC5jbGFzc05hbWUgKz0gIiAiICsgc3R5bGVOYW1lOwot
ICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcmV0dXJuIGNlbGw7
Ci0gICAgfSwKLQotICAgIF9jcmVhdGVSb3c6IGZ1bmN0aW9uKHRpdGxlLCBjb250ZW50KQotICAg
IHsKLSAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAg
ICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0
YWlscy1yb3ctdGl0bGUiKSk7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVD
ZWxsKGNvbnRlbnQsICJ0aW1lbGluZS1kZXRhaWxzLXJvdy1kYXRhIikpOwotICAgICAgICByZXR1
cm4gcm93OwotICAgIH0sCi0KLSAgICBfY3JlYXRlTGlua1JvdzogZnVuY3Rpb24odGl0bGUsIGNv
bnRlbnQpCi0gICAgewotICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dHIiKTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0
aW1lbGluZS1kZXRhaWxzLXJvdy10aXRsZSIpKTsKLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGNvbnRlbnQp
OwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0gICAgICAgIHJldHVybiByb3c7Ci0g
ICAgfSwKLQotICAgIF9nZW5lcmF0ZUJ1YmJsZUNvbnRlbnQ6IGZ1bmN0aW9uKCkKKyAgICBfb25D
bGljazogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgYnViYmxlQ29udGVudFRh
YmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKLSAgICAgICAgdmFyIHRpdGxl
Q2VsbCA9IHRoaXMuX2NyZWF0ZUNlbGwoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAtIERldGFp
bHMiLCB0aGlzLl9yZWNvcmQudGl0bGUpLCAidGltZWxpbmUtZGV0YWlscy10aXRsZSIpOwotICAg
ICAgICB0aXRsZUNlbGwuY29sU3BhbiA9IDI7Ci0gICAgICAgIHRpdGxlQ2VsbC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJociIpKTsKLSAgICAgICAgdmFyIHRpdGxlUm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICAgICAgdGl0bGVSb3cuYXBwZW5kQ2hp
bGQodGl0bGVDZWxsKTsKLSAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRp
dGxlUm93KTsKLSAgICAgICAgdmFyIHRleHQgPSBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMu
X3JlY29yZC5lbmRUaW1lIC0gdGhpcy5fcmVjb3JkLnN0YXJ0VGltZSkgKyAiIChAIiArCi0gICAg
ICAgICAgICB0aGlzLl9jYWxjdWxhdG9yLmZvcm1hdFZhbHVlKHRoaXMuX3JlY29yZC5zdGFydFRp
bWUgLSB0aGlzLl9jYWxjdWxhdG9yLm1pbmltdW1Cb3VuZGFyeSkgKyAiKSI7Ci0gICAgICAgIGJ1
YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJEdXJhdGlvbiIpLCB0ZXh0KSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3JlY29y
ZC5kZXRhaWxzKSB7Ci0gICAgICAgICAgICBpZiAoIHRoaXMuX3JlY29yZC50eXBlID09IFdlYklu
c3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJJbnN0YWxsIHx8Ci0gICAgICAg
ICAgICAgICAgIHRoaXMuX3JlY29yZC50eXBlID09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50
LlJlY29yZFR5cGUuVGltZXJGaXJlIHx8Ci0gICAgICAgICAgICAgICAgIHRoaXMuX3JlY29yZC50
eXBlID09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJSZW1vdmUp
IHsKLSAgICAgICAgICAgICAgICBidWJibGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZXJJZCIpLCB0aGlzLl9yZWNvcmQu
ZGF0YS50aW1lcklkKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3JlY29yZC50aW1lb3V0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0
aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lb3V0IiksIHRoaXMuX3Jl
Y29yZC50aW1lb3V0KSk7Ci0gICAgICAgICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5h
cHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXRz
IiksICF0aGlzLl9yZWNvcmQuc2luZ2xlU2hvdCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAodGhpcy5fcmVjb3JkLmNhbGxTaXRlU2NyaXB0TGluZSkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VBc05v
ZGUodGhpcy5fcmVjb3JkLmNhbGxTaXRlU2NyaXB0TmFtZSwgInNjcmlwdHMiLCB0aGlzLl9yZWNv
cmQuY2FsbFNpdGVTY3JpcHRMaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgYnViYmxlQ29udGVu
dFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUxpbmtSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDYWxsIFNpdGUiKSwgbGluaykpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoIHRoaXMuX3JlY29yZC50eXBlID09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFn
ZW50LlJlY29yZFR5cGUuRnVuY3Rpb25DYWxsICkgewotICAgICAgICAgICAgICAgIHZhciBsaW5r
ID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJjZUFzTm9kZSh0aGlzLl9yZWNvcmQuZGF0YS5z
Y3JpcHROYW1lLCAic2NyaXB0cyIsIHRoaXMuX3JlY29yZC5kYXRhLnNjcmlwdExpbmUpOwotICAg
ICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVM
aW5rUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRpb24iKSwgbGluaykpOwotICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENo
aWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRldGFpbHMiKSwgdGhp
cy5fcmVjb3JkLmRldGFpbHMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9yZWNv
cmQuY2FsbGVyU2NyaXB0TmFtZSkgewotICAgICAgICAgICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0
b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuX3JlY29yZC5jYWxsZXJTY3JpcHROYW1lLCAi
c2NyaXB0cyIsIHRoaXMuX3JlY29yZC5jYWxsZXJTY3JpcHRMaW5lKTsKLSAgICAgICAgICAgIGJ1
YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVMaW5rUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ2FsbGVyIiksIGxpbmspKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gYnViYmxlQ29udGVudFRhYmxlOworICAgICAgICB0aGlzLl9wYW5lbC5zaG93UmVjb3JkRGV0
YWlscyh0aGlzLl9yZWNvcmQsIHRoaXMuZWxlbWVudCk7CiAgICAgfSwKIAotICAgIF9vbkNsaWNr
OiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VPdmVyUmVjb3JkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZWNvcmQpIHsKLSAgICAgICAgICAgIHZhciBkZXRh
aWxzID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMuX2dlbmVyYXRlQnViYmxlQ29udGVu
dCgpKTsKLSAgICAgICAgICAgIGRldGFpbHMuaGlkZVdoZW5DbGlja2VkKCk7Ci0gICAgICAgICAg
ICBkZXRhaWxzLnNob3codGhpcy5lbGVtZW50KTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsLnJlY29yZERldGFpbHMgPSBkZXRhaWxzOworICAgICAgICB2YXIgZGV0YWls
cyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHM7CisgICAgICAgIGlm
ICghKGRldGFpbHMgJiYgZGV0YWlscy5pc1Zpc2libGUpKQorICAgICAgICAgICAgdGhpcy5fcGFu
ZWwuc2V0dXBTaG93RGV0YWlsc1RpbWVyKHRoaXMuX3JlY29yZCwgdGhpcy5lbGVtZW50LCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5zaG93RGV0YWlsc0RlbGF5KTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBpZiAoZGV0YWlscy5hbmNob3IgPT09IHRoaXMpCisgICAgICAgICAgICAg
ICAgZGV0YWlscy5raWxsSGlkZVRpbWVyKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGhpcy5fcGFuZWwuc2V0dXBIaWRlRGV0YWlsc1RpbWVyKCk7CiAgICAgICAgIH0KKyAg
ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgfSwKIAogICAgIGRpc3Bvc2U6IGZ1
bmN0aW9uKCkKQEAgLTY3Nyw4ICs1OTAsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRM
aXN0Um93LnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZEdyYXBoUm93ID0gZnVuY3Rpb24oZ3JhcGhDb250YWluZXIsIHJlZnJlc2hDYWxsYmFjaywg
cm93SGVpZ2h0KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cgPSBmdW5jdGlv
bihwYW5lbCwgZ3JhcGhDb250YWluZXIsIHJlZnJlc2hDYWxsYmFjaywgcm93SGVpZ2h0KQogewor
ICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5lbGVtZW50LmdyYXBoUm93ID0gdGhpczsKIApA
QCAtNjk5LDYgKzYxMyw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0g
ZnVuY3Rpb24oZ3JhcGhDb250YWluZXIsIHJlZnJlc2hDYWxsYmFjaywKICAgICB0aGlzLl9leHBh
bmRFbGVtZW50LmFwcGVuZENoaWxkKGxlZnRCb3JkZXIpOwogCiAgICAgdGhpcy5fZXhwYW5kRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xpY2suYmluZCh0aGlzKSk7
CisgICAgdGhpcy5fYmFyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29u
QmFyRWxlbWVudENsaWNrLmJpbmQodGhpcykpOworICAgIHRoaXMuX2JhckVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VPdmVyQmFyRWxlbWVudC5iaW5kKHRo
aXMpKTsKICAgICB0aGlzLl9yZWZyZXNoQ2FsbGJhY2sgPSByZWZyZXNoQ2FsbGJhY2s7CiAgICAg
dGhpcy5fcm93SGVpZ2h0ID0gcm93SGVpZ2h0OwogfQpAQCAtNzM3LDYgKzY1MywyNiBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdy5wcm90b3R5cGUgPSB7CiAgICAgewogICAg
ICAgICB0aGlzLl9yZWNvcmQuY29sbGFwc2VkID0gIXRoaXMuX3JlY29yZC5jb2xsYXBzZWQ7CiAg
ICAgICAgIHRoaXMuX3JlZnJlc2hDYWxsYmFjaygpOworICAgICAgICB0aGlzLl9wYW5lbC5jbG9z
ZVJlY29yZERldGFpbHMoKTsKKyAgICB9LAorCisgICAgX29uQmFyRWxlbWVudENsaWNrOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhbmVsLnNob3dSZWNvcmREZXRhaWxz
KHRoaXMuX3JlY29yZCwgdGhpcy5fYmFyRWxlbWVudCk7CisgICAgfSwKKworICAgIF9tb3VzZU92
ZXJCYXJFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZGV0YWlscyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHM7CisgICAgICAgIGlmICghKGRl
dGFpbHMgJiYgZGV0YWlscy5pc1Zpc2libGUpKQorICAgICAgICAgICAgdGhpcy5fcGFuZWwuc2V0
dXBTaG93RGV0YWlsc1RpbWVyKHRoaXMuX3JlY29yZCwgdGhpcy5fYmFyRWxlbWVudCwgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuc2hvd0RldGFpbHNEZWxheSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGRldGFpbHMuYW5jaG9yID09PSB0aGlzLl9iYXJFbGVtZW50KQorICAg
ICAgICAgICAgICAgIGRldGFpbHMua2lsbEhpZGVUaW1lcigpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVsLnNldHVwSGlkZURldGFpbHNUaW1lcigpOworICAg
ICAgICB9CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgIH0sCiAKICAgICBk
aXNwb3NlOiBmdW5jdGlvbigpCkBAIC03NDUsMyArNjgxLDE1NSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRHcmFwaFJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2V4cGFuZEVs
ZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9leHBhbmRFbGVtZW50KTsKICAg
ICB9CiB9CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZCA9IGZ1
bmN0aW9uKHJlY29yZCwgdGltZWxpbmVQYW5lbCkKK3sKKyAgICB2YXIgcmVjb3JkVHlwZXMgPSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlOworICAgIHZhciBzdHlsZSA9IHRp
bWVsaW5lUGFuZWwucmVjb3JkU3R5bGVzW3JlY29yZC50eXBlXTsKKyAgICAKKyAgICB0aGlzLmNh
dGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7CisgICAgdGhpcy50aXRsZSA9IHN0eWxlLnRpdGxlOwor
ICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZSAvIDEwMDA7CisgICAgdGhpcy5k
YXRhID0gcmVjb3JkLmRhdGE7CisgICAgdGhpcy5jb3VudCA9IDE7CisgICAgdGhpcy50eXBlID0g
cmVjb3JkLnR5cGU7CisgICAgdGhpcy5lbmRUaW1lID0gKHR5cGVvZiByZWNvcmQuZW5kVGltZSAh
PT0gInVuZGVmaW5lZCIpID8gcmVjb3JkLmVuZFRpbWUgLyAxMDAwIDogdGhpcy5zdGFydFRpbWU7
CisgICAgdGhpcy5vcmlnaW5hbFJlY29yZEZvclRlc3RzID0gcmVjb3JkOworICAgIHRoaXMuY2Fs
bGVyU2NyaXB0TmFtZSA9IHJlY29yZC5jYWxsZXJTY3JpcHROYW1lOworICAgIHRoaXMuY2FsbGVy
U2NyaXB0TGluZSA9IHJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOworICAgIAorICAgIC8vIE1ha2Ug
cmVzb3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1ZXN0IHdhcyBzZW50OyBtYWtl
IGZpbmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNwb25zZSByZWNlaXZlZC4KKyAgICBpZiAocmVj
b3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKKyAgICAgICAg
dGltZWxpbmVQYW5lbC5zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl0g
PSB0aGlzOworICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291
cmNlUmVjZWl2ZVJlc3BvbnNlKSB7CisgICAgICAgIHZhciBzZW5kUmVxdWVzdFJlY29yZCA9IHRp
bWVsaW5lUGFuZWwuc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhLmlkZW50aWZpZXJdOwor
ICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIHsgLy8gRmFsc2UgaWYgd2Ugc3RhcnRlZCBp
bnN0cnVtZW50YXRpb24gaW4gdGhlIG1pZGRsZSBvZiByZXF1ZXN0LgorICAgICAgICAgICAgc2Vu
ZFJlcXVlc3RSZWNvcmQuX3Jlc3BvbnNlUmVjZWl2ZWRGb3JtYXR0ZWRUaW1lID0gdGhpcy5zdGFy
dFRpbWU7CisgICAgICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLnN0
YXJ0VGltZTsKKyAgICAgICAgICAgIHRoaXMuZGV0YWlscyA9IHRoaXMuX2dldFJlY29yZERldGFp
bHMoc2VuZFJlcXVlc3RSZWNvcmQpOworICAgICAgICAgICAgdGhpcy5jYWxsZXJTY3JpcHROYW1l
ID0gc2VuZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKKyAgICAgICAgICAgIHRoaXMu
Y2FsbGVyU2NyaXB0TGluZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNjcmlwdExpbmU7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNv
dXJjZUZpbmlzaCkgeworICAgICAgICB2YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSB0aW1lbGluZVBh
bmVsLnNlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YS5pZGVudGlmaWVyXTsKKyAgICAgICAg
aWYgKHNlbmRSZXF1ZXN0UmVjb3JkKSB7Ly8gRmFsc2UgZm9yIG1haW4gcmVzb3VyY2UuCisgICAg
ICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLl9yZXNwb25zZVJlY2Vp
dmVkRm9ybWF0dGVkVGltZTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGVyU2NyaXB0TmFtZSA9IHNl
bmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNjcmlwdE5hbWU7CisgICAgICAgICAgICB0aGlzLmNhbGxl
clNjcmlwdExpbmUgPSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOworICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuVGltZXJJbnN0
YWxsKSB7CisgICAgICAgIHRoaXMudGltZW91dCA9IHJlY29yZC5kYXRhLnRpbWVvdXQ7CisgICAg
ICAgIHRoaXMuc2luZ2xlU2hvdCA9IHJlY29yZC5kYXRhLnNpbmdsZVNob3Q7CisgICAgICAgIHRp
bWVsaW5lUGFuZWwudGltZXJSZWNvcmRzW3JlY29yZC5kYXRhLnRpbWVySWRdID0gdGhpczsKKyAg
ICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lckZpcmUpIHsKKyAg
ICAgICAgdmFyIHRpbWVySW5zdGFsbGVkUmVjb3JkID0gdGltZWxpbmVQYW5lbC50aW1lclJlY29y
ZHNbcmVjb3JkLmRhdGEudGltZXJJZF07CisgICAgICAgIGlmICh0aW1lckluc3RhbGxlZFJlY29y
ZCkgeworICAgICAgICAgICAgdGhpcy5jYWxsU2l0ZVNjcmlwdE5hbWUgPSB0aW1lckluc3RhbGxl
ZFJlY29yZC5jYWxsZXJTY3JpcHROYW1lOworICAgICAgICAgICAgdGhpcy5jYWxsU2l0ZVNjcmlw
dExpbmUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOworICAgICAgICAg
ICAgdGhpcy50aW1lb3V0ID0gdGltZXJJbnN0YWxsZWRSZWNvcmQudGltZW91dDsKKyAgICAgICAg
ICAgIHRoaXMuc2luZ2xlU2hvdCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnNpbmdsZVNob3Q7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgdGhpcy5kZXRhaWxzID0gdGhpcy5fZ2V0UmVjb3JkRGV0YWls
cyhyZWNvcmQpOworfQorCitXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNv
cmQucHJvdG90eXBlID0geworX2NyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbnRlbnQsIHN0eWxlTmFt
ZSkKKyAgICB7CisgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFi
ZWwiKTsKKyAgICAgICAgdGV4dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShj
b250ZW50KSk7CisgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQi
KTsKKyAgICAgICAgY2VsbC5jbGFzc05hbWUgPSAidGltZWxpbmUtZGV0YWlscyI7CisgICAgICAg
IGlmIChzdHlsZU5hbWUpCisgICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSArPSAiICIgKyBzdHls
ZU5hbWU7CisgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb250ZW50OworICAgICAgICByZXR1
cm4gY2VsbDsKKyAgICB9LAorICAgIAorX2NyZWF0ZVJvdzogZnVuY3Rpb24odGl0bGUsIGNvbnRl
bnQpCisgICAgeworICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIi
KTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0aW1l
bGluZS1kZXRhaWxzLXJvdy10aXRsZSIpKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMu
X2NyZWF0ZUNlbGwoY29udGVudCwgInRpbWVsaW5lLWRldGFpbHMtcm93LWRhdGEiKSk7CisgICAg
ICAgIHJldHVybiByb3c7CisgICAgfSwKKyAgICAKK19jcmVhdGVMaW5rUm93OiBmdW5jdGlvbih0
aXRsZSwgY29udGVudCkKKyAgICB7CisgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0ciIpOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2VsbCh0
aXRsZSwgInRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIikpOworICAgICAgICB2YXIgY2VsbCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQo
Y29udGVudCk7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKKyAgICAgICAgcmV0dXJu
IHJvdzsKKyAgICB9LAorICAgIAorZ2VuZXJhdGVQb3B1cENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGN1
bGF0b3IpCisgICAgeworICAgICAgICB2YXIgcmVjb3JkQ29udGVudFRhYmxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGFibGUiKTsKKyAgICAgICAgdmFyIHRpdGxlQ2VsbCA9IHRoaXMuX2Ny
ZWF0ZUNlbGwoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAtIERldGFpbHMiLCB0aGlzLnRpdGxl
KSwgInRpbWVsaW5lLWRldGFpbHMtdGl0bGUiKTsKKyAgICAgICAgdGl0bGVDZWxsLmNvbFNwYW4g
PSAyOworICAgICAgICB2YXIgdGl0bGVSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIp
OworICAgICAgICB0aXRsZVJvdy5hcHBlbmRDaGlsZCh0aXRsZUNlbGwpOworICAgICAgICByZWNv
cmRDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGl0bGVSb3cpOworICAgICAgICB2YXIgdGV4dCA9
IE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5lbmRUaW1lIC0gdGhpcy5zdGFydFRpbWUpICsg
IiAoQCIgKworICAgICAgICBjYWxjdWxhdG9yLmZvcm1hdFZhbHVlKHRoaXMuc3RhcnRUaW1lIC0g
Y2FsY3VsYXRvci5taW5pbXVtQm91bmRhcnkpICsgIikiOworICAgICAgICByZWNvcmRDb250ZW50
VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RHVyYXRpb24iKSwgdGV4dCkpOworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMuZGV0YWlscykg
eworICAgICAgICAgICAgaWYgKCB0aGlzLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5UaW1lckluc3RhbGwgfHwKKyAgICAgICAgICAgICAgICB0aGlzLnR5cGUg
PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckZpcmUgfHwKKyAg
ICAgICAgICAgICAgICB0aGlzLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVj
b3JkVHlwZS5UaW1lclJlbW92ZSkgeworICAgICAgICAgICAgICAgIHJlY29yZENvbnRlbnRUYWJs
ZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1l
cklkIiksIHRoaXMuZGF0YS50aW1lcklkKSk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMudGlt
ZW91dCkgeworICAgICAgICAgICAgICAgICAgICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5kQ2hp
bGQodGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZW91dCIpLCB0aGlz
LnRpbWVvdXQpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVu
ZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcGVhdHMiKSwg
IXRoaXMuc2luZ2xlU2hvdCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAodGhpcy5jYWxsU2l0ZVNjcmlwdExpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxp
bmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuY2FsbFNpdGVTY3Jp
cHROYW1lLCAic2NyaXB0cyIsIHRoaXMuY2FsbFNpdGVTY3JpcHRMaW5lLCAidGltZWxpbmUtZGV0
YWlscyIpOworICAgICAgICAgICAgICAgICAgICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5kQ2hp
bGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGwgU2l0ZSIp
LCBsaW5rKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICggdGhp
cy50eXBlID09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuRnVuY3Rpb25D
YWxsICkgeworICAgICAgICAgICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlS
ZXNvdXJjZUFzTm9kZSh0aGlzLmRhdGEuc2NyaXB0TmFtZSwgInNjcmlwdHMiLCB0aGlzLmRhdGEu
c2NyaXB0TGluZSwgInRpbWVsaW5lLWRldGFpbHMiKTsKKyAgICAgICAgICAgICAgICByZWNvcmRD
b250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkxvY2F0aW9uIiksIGxpbmspKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZXRhaWxzIiksIHRoaXMuZGV0YWlscykpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5jYWxsZXJTY3JpcHROYW1lKSB7CisgICAg
ICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodGhp
cy5jYWxsZXJTY3JpcHROYW1lLCAic2NyaXB0cyIsIHRoaXMuY2FsbGVyU2NyaXB0TGluZSk7Cisg
ICAgICAgICAgICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlu
a1JvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGxlciIpLCBsaW5rKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHJlY29yZENvbnRlbnRUYWJsZTsKKyAgICB9LAorICAgIAorX2dldFJl
Y29yZERldGFpbHM6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAocmVj
b3JkLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQu
UmVjb3JkVHlwZS5GdW5jdGlvbkNhbGw6CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5kaXNwbGF5TmFtZUZvclVSTChyZWNvcmQuZGF0YS5zY3JpcHROYW1lICsgIjoiICsgcmVj
b3JkLmRhdGEuc2NyaXB0TGluZSk7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZUFnZW50LlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVjb3JkLmRhdGEgPyByZWNvcmQuZGF0YS50eXBlIDogIiI7CisgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuUGFpbnQ6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlY29yZC5kYXRhLndpZHRoICsgIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyBy
ZWNvcmQuZGF0YS5oZWlnaHQ7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZUFnZW50LlJlY29yZFR5cGUuVGltZXJJbnN0YWxsOgorICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlOgorICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyRmlyZToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmRhdGEudGltZXJJZDsKKyAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJSZWFkeVN0YXRlQ2hh
bmdlOgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRU
eXBlLlhIUkxvYWQ6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50
LlJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQ6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuUmVzb3VyY2VTZW5kUmVxdWVzdDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHJlY29yZC5kYXRh
LnVybCk7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuUmVzb3VyY2VGaW5pc2g6CisgICAgICAgICAg
ICAgICAgdmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gcmVjb3JkLl9zZW5kUmVxdWVzdFJlY29yZHNb
cmVjb3JkLmRhdGEuaWRlbnRpZmllcl07CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXF1
ZXN0UmVjb3JkID8gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNlbmRSZXF1ZXN0UmVj
b3JkLmRhdGEudXJsKSA6ICIiOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVBZ2VudC5SZWNvcmRUeXBlLk1hcmtUaW1lbGluZToKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVjb3JkLmRhdGEubWVzc2FnZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGNmNTFiZDguLjcwMWQxYWUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0zNTY3LDcgKzM1NjcsOCBAQCBi
b2R5LmluYWN0aXZlIC5zaWRlYmFyLXRyZWUtaXRlbS5zZWxlY3RlZCAuYnViYmxlLnNlYXJjaC1t
YXRjaGVzIHsKICAgICBtaW4td2lkdGg6IDVweDsKICAgICBvcGFjaXR5OiAwLjg7CiAgICAgLXdl
YmtpdC1ib3JkZXItaW1hZ2U6IHVybChJbWFnZXMvdGltZWxpbmVCYXJHcmF5LnBuZykgNCA0IDUg
NDsKLSAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgICB6LWluZGV4OiAxODA7CisgICAgcG9p
bnRlci1ldmVudHM6IHZpc2libGVGaWxsOwogfQogCiAudGltZWxpbmUtZ3JhcGgtc2lkZS5ldmVu
IHsKQEAgLTM4NDgsNiArMzg0OSwxMCBAQCBvbC5icmVha3BvaW50LWxpc3QgewogICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMTk0KTsKIH0KIAorLnRpbWVsaW5lLWRldGFpbHMg
eworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7Cit9CisKIC50aW1lbGluZS1kZXRhaWxz
LXJvdy10aXRsZSB7CiAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgdGV4dC1hbGlnbjogcmln
aHQ7CkBAIC0zODYxLDQgKzM4NjYsMTAgQEAgb2wuYnJlYWtwb2ludC1saXN0IHsKIC50aW1lbGlu
ZS1kZXRhaWxzLXRpdGxlIHsKICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICB3aGl0ZS1zcGFj
ZTogbm93cmFwOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICB0ZXh0LW92ZXJm
bG93OiBlbGxpcHNpczsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGZvbnQtc2l6ZTogMTFw
eDsKKyAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CisgICAgcGFkZGluZy1ib3R0b206IDVweDsKKyAg
ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE5NCwxOTQsMTQ3KTsKK30K
</data>
<flag name="review"
          id="32891"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49948</attachid>
            <date>2010-03-03 14:20:56 -0800</date>
            <delta_ts>2010-03-04 07:23:19 -0800</delta_ts>
            <desc>second iteration. Just fixed the comments from the first one.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>39391</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKaW5kZXggODY2Y2IyNC4uMDBiMWU0
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKQEAgLTM4LDYgKzM4LDkg
QEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBmdW5jdGlvbihjb250ZW50RWxlbWVudCkKICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQpOwogCiAgICAg
dGhpcy5jb250ZW50RWxlbWVudCA9IGNvbnRlbnRFbGVtZW50OworICAgIHRoaXMuY29udGVudERp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHRoaXMuY29udGVudERpdi5j
bGFzc05hbWUgPSAiY29udGVudCI7CisgICAgdGhpcy5jb250ZW50RGl2LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlT3ZlckNvbnRlbnQuYmluZCh0aGlzKSk7CiB9CiAK
IFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKQEAgLTU0LDE4ICs1NywzMCBAQCBX
ZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBwcmVmZXJyZWRX
aWR0aCA9IHByZWZlcnJlZFdpZHRoIHx8IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lkdGg7
CiAgICAgICAgIHZhciBwcmVmZXJyZWRIZWlnaHQgPSBwcmVmZXJyZWRIZWlnaHQgfHwgdGhpcy5j
b250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CiAKLSAgICAgICAgdmFyIGNvbnRlbnREaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudERpdi5jbGFzc05h
bWUgPSAiY29udGVudCI7Ci0gICAgICAgIGNvbnRlbnREaXYuYXBwZW5kQ2hpbGQodGhpcy5jb250
ZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50RGl2
KTsKKyAgICAgICAgdGhpcy5jb250ZW50RGl2LmFwcGVuZENoaWxkKHRoaXMuY29udGVudEVsZW1l
bnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50RGl2KTsK
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpOwogICAgICAg
ICB0aGlzLl9wb3NpdGlvbkVsZW1lbnQoYW5jaG9yLCBwcmVmZXJyZWRXaWR0aCwgcHJlZmVycmVk
SGVpZ2h0KTsKICAgICB9LAogCisgICAgX21vdXNlT3ZlckNvbnRlbnQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy5raWxsSGlkZVRpbWVyKCk7CisgICAgICAgIGV2ZW50LnN0
b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKICAgICBoaWRlOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLlBvcG92ZXIuX3BvcG92ZXJFbGVtZW50OwotICAg
ICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRo
aXMua2lsbEhpZGVUaW1lcigpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBvcG92ZXIuX3Bv
cG92ZXJFbGVtZW50KSB7CisgICAgICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLlBvcG92ZXIu
X3BvcG92ZXJFbGVtZW50OworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0
aGlzLmVsZW1lbnQpOworICAgICAgICB9CisgICAgfSwKKworICAgIGdldCBpc1Zpc2libGUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qb3BvdmVyLl9wb3BvdmVyRWxlbWVu
dCA/IHRydWUgOiBmYWxzZTsKICAgICB9LAogCiAgICAgaGlkZVdoZW5DbGlja2VkOiBmdW5jdGlv
bigpCkBAIC03MywxNCArODgsMzUgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmhp
ZGUuYmluZCh0aGlzKSk7CiAgICAgfSwKIAorICAgIGhpZGVBZnRlckRlbGF5OiBmdW5jdGlvbih0
aW1lb3V0KQorICAgIHsKKyAgICAgICAgdGhpcy5raWxsSGlkZVRpbWVyKCk7CisgICAgICAgIHRo
aXMuaGlkZURlbGF5ID0gdGltZW91dDsKKyAgICAgICAgdGhpcy5faGlkZVRpbWVyID0gc2V0VGlt
ZW91dCh0aGlzLmhpZGUuYmluZCh0aGlzKSwgdGltZW91dCk7CisgICAgfSwKKworICAgIGtpbGxI
aWRlVGltZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9oaWRlVGltZXIp
IHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZXIpOworICAgICAgICAg
ICAgZGVsZXRlIHRoaXMuX2hpZGVUaW1lcjsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmhpZGVE
ZWxheTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBnZXQgaXNIaWRlQWZ0ZXJEZWxheSgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5faGlkZVRpbWVyID8gdHJ1ZSA6IGZhbHNlOworICAg
IH0sCisKICAgICBfcG9zaXRpb25FbGVtZW50OiBmdW5jdGlvbihhbmNob3JFbGVtZW50LCBwcmVm
ZXJyZWRXaWR0aCwgcHJlZmVycmVkSGVpZ2h0KQogICAgIHsKICAgICAgICAgY29uc3QgYm9yZGVy
V2lkdGggPSAyNTsKICAgICAgICAgY29uc3Qgc2Nyb2xsZXJXaWR0aCA9IDExOwogICAgICAgICBj
b25zdCBhcnJvd0hlaWdodCA9IDE1OwotICAgICAgICBjb25zdCBhcnJvd09mZnNldCA9IDE1Owor
ICAgICAgICBjb25zdCBhcnJvd09mZnNldCA9IDEwOwogICAgICAgICBjb25zdCBib3JkZXJSYWRp
dXMgPSAxMDsKLSAgICAgICAgCisKICAgICAgICAgLy8gU2tpbm55IHRvb2x0aXBzIGFyZSBub3Qg
cHJldHR5LCB0aGVpciBhcnJvdyBsb2NhdGlvbiBpcyBub3QgbmljZS4KICAgICAgICAgcHJlZmVy
cmVkV2lkdGggPSBNYXRoLm1heChwcmVmZXJyZWRXaWR0aCwgNTApOwogICAgICAgICBjb25zdCB0
b3RhbFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7CkBAIC0xMjEsMjIgKzE1NywyNSBAQCBXZWJJ
bnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGhvcml6b250YWxB
bGlnbm1lbnQ7CiAgICAgICAgIGlmIChhbmNob3JCb3gueCArIG5ld0VsZW1lbnRQb3NpdGlvbi53
aWR0aCA8IHRvdGFsV2lkdGgpIHsKLSAgICAgICAgICAgIG5ld0VsZW1lbnRQb3NpdGlvbi54ID0g
TWF0aC5tYXgoYm9yZGVyUmFkaXVzLCBhbmNob3JCb3gueCAtIGFycm93T2Zmc2V0KTsKKyAgICAg
ICAgICAgIG5ld0VsZW1lbnRQb3NpdGlvbi54ID0gTWF0aC5tYXgoYm9yZGVyUmFkaXVzLCBhbmNo
b3JCb3gueCAtIGJvcmRlclJhZGl1cyAtIGFycm93T2Zmc2V0KTsKICAgICAgICAgICAgIGhvcml6
b250YWxBbGlnbm1lbnQgPSAibGVmdCI7CiAgICAgICAgIH0gZWxzZSBpZiAobmV3RWxlbWVudFBv
c2l0aW9uLndpZHRoICsgYm9yZGVyUmFkaXVzICogMiA8IHRvdGFsV2lkdGgpIHsKICAgICAgICAg
ICAgIG5ld0VsZW1lbnRQb3NpdGlvbi54ID0gdG90YWxXaWR0aCAtIG5ld0VsZW1lbnRQb3NpdGlv
bi53aWR0aCAtIGJvcmRlclJhZGl1czsKICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQg
PSAicmlnaHQiOwogICAgICAgICAgICAgLy8gUG9zaXRpb24gYXJyb3cgYWNjdXJhdGVseS4KLSAg
ICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLnJpZ2h0ID0gdG90YWxXaWR0
aCAtIGFuY2hvckJveC54IC0gYW5jaG9yQm94LndpZHRoIC0gYm9yZGVyUmFkaXVzICsgInB4IjsK
KyAgICAgICAgICAgIHZhciBhcnJvd1JpZ2h0UG9zaXRpb24gPSBNYXRoLm1heCgwLCB0b3RhbFdp
ZHRoIC0gYW5jaG9yQm94LnggLSBhbmNob3JCb3gud2lkdGggLSBib3JkZXJSYWRpdXMgLSBhcnJv
d09mZnNldCk7CisgICAgICAgICAgICBhcnJvd1JpZ2h0UG9zaXRpb24gKz0gYW5jaG9yQm94Lndp
ZHRoIC8gMjsKKyAgICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLnJpZ2h0
ID0gYXJyb3dSaWdodFBvc2l0aW9uICsgInB4IjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIG5ld0VsZW1lbnRQb3NpdGlvbi54ID0gYm9yZGVyUmFkaXVzOwotICAgICAgICAgICAgbmV3
RWxlbWVudFBvc2l0aW9uLndpZHRoID0gdG90YWxXaWR0aCAtIHNjcm9sbGVyV2lkdGggLSBib3Jk
ZXJSYWRpdXMgKiAyOworICAgICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLndpZHRoID0gdG90
YWxXaWR0aCAtIGJvcmRlclJhZGl1cyAqIDI7CiAgICAgICAgICAgICBuZXdFbGVtZW50UG9zaXRp
b24uaGVpZ2h0ICs9IHNjcm9sbGVyV2lkdGg7CiAgICAgICAgICAgICBob3Jpem9udGFsQWxpZ25t
ZW50ID0gImxlZnQiOwogICAgICAgICAgICAgaWYgKHZlcnRpY2FsQWxpZ25tZW50ID09PSAiYm90
dG9tIikKICAgICAgICAgICAgICAgICBuZXdFbGVtZW50UG9zaXRpb24ueSAtPSBzY3JvbGxlcldp
ZHRoOwogICAgICAgICAgICAgLy8gUG9zaXRpb24gYXJyb3cgYWNjdXJhdGVseS4KLSAgICAgICAg
ICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQgPSBhbmNob3JCb3gueCArICJw
eCI7CisgICAgICAgICAgICB0aGlzLl9wb3B1cEFycm93RWxlbWVudC5zdHlsZS5sZWZ0ID0gTWF0
aC5tYXgoMCwgYW5jaG9yQm94LnggLSBib3JkZXJSYWRpdXMgKiAyIC0gYXJyb3dPZmZzZXQpICsg
InB4IjsKKyAgICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQgKz0g
YW5jaG9yQm94LndpZHRoIC8gMjsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc05hbWUgPSAicG9wb3ZlciAiICsgdmVydGljYWxBbGlnbm1lbnQgKyAiLSIgKyBob3Jpem9u
dGFsQWxpZ25tZW50ICsgIi1hcnJvdyI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVBhbmVsLmpzCmluZGV4IDIxYTc2YWYuLjYyNjgyNjQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBAIC00NSw2ICs0NSw3IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2NvbnRhaW5lckVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9jb250YWlu
ZXJFbGVtZW50LmlkID0gInRpbWVsaW5lLWNvbnRhaW5lciI7CiAgICAgdGhpcy5fY29udGFpbmVy
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9vblNjcm9sbC5iaW5kKHRo
aXMpLCBmYWxzZSk7CisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZW1vdmUiLCB0aGlzLl9tb3VzZU92ZXJCYWNrZ3JvdW5kLmJpbmQodGhpcykpOwogICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKIAogICAg
IHRoaXMuY3JlYXRlU2lkZWJhcih0aGlzLl9jb250YWluZXJFbGVtZW50LCB0aGlzLl9jb250YWlu
ZXJFbGVtZW50KTsKQEAgLTg0LDggKzg1LDE3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
ID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2NhbGN1bGF0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQ2FsY3VsYXRvcigpOwogICAgIHRoaXMuX2JvdW5kYXJpZXNBcmVWYWxpZCA9IHRydWU7
CiAgICAgdGhpcy5fc2Nyb2xsVG9wID0gMDsKKyAgICB0aGlzLl9jYWxsYmFja3MgPSB7fTsKKyAg
ICB0aGlzLl9jYWxsYmFja3MuX3Nob3dSZWNvcmREZXRhaWxzID0gdGhpcy5fc2hvd1JlY29yZERl
dGFpbHMuYmluZCh0aGlzKTsKKyAgICB0aGlzLl9jYWxsYmFja3MuX21vdXNlT3ZlckFuY2hvciA9
IHRoaXMuX21vdXNlT3ZlckFuY2hvci5iaW5kKHRoaXMpOworICAgIHRoaXMuX2NhbGxiYWNrcy5f
c2NoZWR1bGVSZWZyZXNoID0gdGhpcy5fc2NoZWR1bGVSZWZyZXNoLmJpbmQodGhpcywgdHJ1ZSk7
CisgICAgdGhpcy5fY2FsbGJhY2tzLl9jbG9zZVJlY29yZERldGFpbHMgPSB0aGlzLl9jbG9zZVJl
Y29yZERldGFpbHMuYmluZCh0aGlzKTsKIH0KIAorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
c2hvd0RldGFpbHNEZWxheSA9IDE1MDA7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5oaWRl
RGV0YWlsc0RlbGF5ID0gMTAwMDA7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5oaWRlRGV0
YWlsc0lmTW91c2VNb3ZlZERlbGF5ID0gMzAwOworCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgdG9vbGJhckl0ZW1DbGFzczogInRpbWVsaW5lIiwKIApAQCAt
MTExLDYgKzEyMSwzMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9jYXRlZ29yaWVzOwogICAgIH0sCiAKKyAgICBnZXQgX3Jl
Y29yZFN0eWxlcygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0eWxlc0FycmF5
KSB7CisgICAgICAgICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlOworICAgICAgICAgICAgdmFyIHJlY29yZFN0eWxlcyA9IHt9OworICAg
ICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2ZW50RGlzcGF0Y2hdID0geyB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFdmVudCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29y
aWVzLnNjcmlwdGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkxh
eW91dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheW91dCIpLCBjYXRlZ29y
eTogdGhpcy5jYXRlZ29yaWVzLnJlbmRlcmluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVz
W3JlY29yZFR5cGVzLlJlY2FsY3VsYXRlU3R5bGVzXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVjYWxjdWxhdGUgU3R5bGUiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5y
ZW5kZXJpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5QYWludF0g
PSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhaW50IiksIGNhdGVnb3J5OiB0aGlz
LmNhdGVnb3JpZXMucmVuZGVyaW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3Jk
VHlwZXMuUGFyc2VIVE1MXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFyc2Ui
KSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5sb2FkaW5nIH07CisgICAgICAgICAgICByZWNv
cmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZXJJbnN0YWxsXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSW5zdGFsbCBUaW1lciIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNj
cmlwdGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyUmVt
b3ZlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIFRpbWVyIiksIGNh
dGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07CisgICAgICAgICAgICByZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuVGltZXJGaXJlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiVGltZXIgRmlyZWQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcg
fTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJSZWFkeVN0YXRlQ2hh
bmdlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIFJlYWR5IFN0YXRlIENo
YW5nZSIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OworICAgICAgICAg
ICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUkxvYWRdID0geyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJYSFIgTG9hZCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlw
dGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2YWx1YXRlU2Ny
aXB0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVhdGUgU2NyaXB0Iiks
IGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07CisgICAgICAgICAgICByZWNv
cmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya1RpbWVsaW5lXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTWFyayIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9
OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVl
c3RdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZW5kIFJlcXVlc3QiKSwgY2F0
ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5sb2FkaW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHls
ZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZWNlaXZlIFJlc3BvbnNlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVn
b3JpZXMubG9hZGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJl
c291cmNlRmluaXNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmluaXNoIExv
YWRpbmciKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5sb2FkaW5nIH07CisgICAgICAgICAg
ICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRnVuY3Rpb25DYWxsXSA9IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRnVuY3Rpb24gQ2FsbCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29y
aWVzLnNjcmlwdGluZyB9OworICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzQXJyYXkgPSBy
ZWNvcmRTdHlsZXM7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZFN0eWxl
c0FycmF5OworICAgIH0sCisKICAgICBfY3JlYXRlU3RhdHVzYmFyQnV0dG9uczogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgdGhpcy50b2dnbGVUaW1lbGluZUJ1dHRvbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAicmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVt
Iik7CkBAIC0xNDYsNyArMTgyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90
eXBlID0gewogCiAgICAgX2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZTogZnVuY3Rpb24ocmVjb3Jk
LCBjb2xsZWN0aW9uKQogICAgIHsKLSAgICAgICAgdmFyIGZvcm1hdHRlZFJlY29yZCA9IHRoaXMu
X2Zvcm1hdFJlY29yZChyZWNvcmQpOworICAgICAgICB2YXIgZm9ybWF0dGVkUmVjb3JkID0gbmV3
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZChyZWNvcmQsIHRoaXMu
X3JlY29yZFN0eWxlcywgdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzLCB0aGlzLl90aW1lclJlY29y
ZHMpOwogCiAgICAgICAgIC8vIEdsdWUgc3Vic2VxdWVudCByZWNvcmRzIHdpdGggc2FtZSBjYXRl
Z29yeSBhbmQgdGl0bGUgdG9nZXRoZXIgaWYgdGhleSBhcmUgY2xvc2VyIHRoYW4gMTAwbXMgdG8g
ZWFjaCBvdGhlci4KICAgICAgICAgaWYgKHRoaXMuX2xhc3RSZWNvcmQgJiYgKCFyZWNvcmQuY2hp
bGRyZW4gfHwgIXJlY29yZC5jaGlsZHJlbi5sZW5ndGgpICYmCkBAIC0xNzEsMTEyICsyMDcsNiBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVy
biBmb3JtYXR0ZWRSZWNvcmQ7CiAgICAgfSwKIAotICAgIF9mb3JtYXRSZWNvcmQ6IGZ1bmN0aW9u
KHJlY29yZCkKLSAgICB7Ci0gICAgICAgIHZhciByZWNvcmRUeXBlcyA9IFdlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50LlJlY29yZFR5cGU7Ci0gICAgICAgIGlmICghdGhpcy5fcmVjb3JkU3R5bGVz
KSB7Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXMgPSB7fTsKLSAgICAgICAgICAgIHRo
aXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXSA9IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRXZlbnQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5z
Y3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5M
YXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQiKSwgY2F0ZWdv
cnk6IHRoaXMuY2F0ZWdvcmllcy5yZW5kZXJpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29y
ZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVn
b3JpZXMucmVuZGVyaW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3Jk
VHlwZXMuUGFpbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYWludCIpLCBj
YXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnJlbmRlcmluZyB9OwotICAgICAgICAgICAgdGhpcy5f
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9
OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVySW5zdGFs
bF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluc3RhbGwgVGltZXIiKSwgY2F0
ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3Jl
Y29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lclJlbW92ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1lciIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNj
cmlwdGluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRp
bWVyRmlyZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIEZpcmVkIiks
IGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlz
Ll9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSUmVhZHlTdGF0ZUNoYW5nZV0gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiBSZWFkeSBTdGF0ZSBDaGFuZ2UiKSwgY2F0ZWdv
cnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29y
ZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsK
LSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmFsdWF0ZVNjcmlw
dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIFNjcmlwdCIpLCBj
YXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OwotICAgICAgICAgICAgdGhpcy5f
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtUaW1lbGluZV0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk1hcmsiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRp
bmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJj
ZVNlbmRSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VuZCBSZXF1
ZXN0IiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OwotICAgICAgICAgICAg
dGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlXSA9
IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBSZXNwb25zZSIpLCBjYXRl
Z29yeTogdGhpcy5jYXRlZ29yaWVzLmxvYWRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29y
ZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZUZpbmlzaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkZpbmlzaCBMb2FkaW5nIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMu
bG9hZGluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZ1
bmN0aW9uQ2FsbF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENh
bGwiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZhciBzdHlsZSA9IHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmQudHlwZV07Ci0g
ICAgICAgIGlmICghc3R5bGUpCi0gICAgICAgICAgICBzdHlsZSA9IHRoaXMuX3JlY29yZFN0eWxl
c1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXTsKLQotICAgICAgICB2YXIgZm9ybWF0dGVkUmVj
b3JkID0ge307Ci0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYXRlZ29yeSA9IHN0eWxlLmNhdGVn
b3J5OwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudGl0bGUgPSBzdHlsZS50aXRsZTsKLSAgICAg
ICAgZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZSA9IHJlY29yZC5zdGFydFRpbWUgLyAxMDAwOwot
ICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuZGF0YSA9IHJlY29yZC5kYXRhOwotICAgICAgICBmb3Jt
YXR0ZWRSZWNvcmQuY291bnQgPSAxOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudHlwZSA9IHJl
Y29yZC50eXBlOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSA9ICh0eXBlb2YgcmVj
b3JkLmVuZFRpbWUgIT09ICJ1bmRlZmluZWQiKSA/IHJlY29yZC5lbmRUaW1lIC8gMTAwMCA6IGZv
cm1hdHRlZFJlY29yZC5zdGFydFRpbWU7Ci0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5vcmlnaW5h
bFJlY29yZEZvclRlc3RzID0gcmVjb3JkOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY2FsbGVy
U2NyaXB0TmFtZSA9IHJlY29yZC5jYWxsZXJTY3JpcHROYW1lOwotICAgICAgICBmb3JtYXR0ZWRS
ZWNvcmQuY2FsbGVyU2NyaXB0TGluZSA9IHJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwotCi0gICAg
ICAgIC8vIE1ha2UgcmVzb3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1ZXN0IHdh
cyBzZW50OyBtYWtlIGZpbmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNwb25zZSByZWNlaXZlZC4K
LSAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5S
ZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIHRoaXMuX3NlbmRS
ZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YS5pZGVudGlmaWVyXSA9IGZvcm1hdHRlZFJlY29yZDsK
LSAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
QWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSkgewotICAgICAgICAgICAg
dmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5k
YXRhLmlkZW50aWZpZXJdOwotICAgICAgICAgICAgaWYgKHNlbmRSZXF1ZXN0UmVjb3JkKSB7IC8v
IEZhbHNlIGlmIHdlIHN0YXJ0ZWQgaW5zdHJ1bWVudGF0aW9uIGluIHRoZSBtaWRkbGUgb2YgcmVx
dWVzdC4KLSAgICAgICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVzcG9uc2VSZWNlaXZl
ZEZvcm1hdHRlZFRpbWUgPSBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lOwotICAgICAgICAgICAg
ICAgIGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5zdGFydFRp
bWU7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmRldGFpbHMgPSB0aGlzLl9nZXRS
ZWNvcmREZXRhaWxzKHNlbmRSZXF1ZXN0UmVjb3JkKTsKLSAgICAgICAgICAgICAgICBmb3JtYXR0
ZWRSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNjcmlw
dE5hbWU7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGxlclNjcmlwdExpbmUg
PSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwotICAgICAgICAgICAgfQotICAg
ICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLlJlc291cmNlRmluaXNoKSB7Ci0gICAgICAgICAgICB2YXIgc2VuZFJlcXVl
c3RSZWNvcmQgPSB0aGlzLl9zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmll
cl07Ci0gICAgICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIHsvLyBGYWxzZSBmb3IgbWFp
biByZXNvdXJjZS4KLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lID0g
c2VuZFJlcXVlc3RSZWNvcmQuX3Jlc3BvbnNlUmVjZWl2ZWRGb3JtYXR0ZWRUaW1lOwotICAgICAg
ICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYWxsZXJTY3JpcHROYW1lID0gc2VuZFJlcXVlc3RS
ZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQu
Y2FsbGVyU2NyaXB0TGluZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNjcmlwdExpbmU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJJbnN0YWxsKSB7Ci0gICAgICAgICAg
ICBmb3JtYXR0ZWRSZWNvcmQudGltZW91dCA9IHJlY29yZC5kYXRhLnRpbWVvdXQ7Ci0gICAgICAg
ICAgICBmb3JtYXR0ZWRSZWNvcmQuc2luZ2xlU2hvdCA9IHJlY29yZC5kYXRhLnNpbmdsZVNob3Q7
Ci0gICAgICAgICAgICB0aGlzLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGEudGltZXJJZF0gPSBm
b3JtYXR0ZWRSZWNvcmQ7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJGaXJlIHx8Ci0gICAgICAgICAg
ICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuVGltZXJSZW1vdmUpIHsKLSAgICAgICAgICAgIHZhciB0aW1lckluc3RhbGxlZFJlY29y
ZCA9IHRoaXMuX3RpbWVyUmVjb3Jkc1tyZWNvcmQuZGF0YS50aW1lcklkXTsKLSAgICAgICAgICAg
IGlmICh0aW1lckluc3RhbGxlZFJlY29yZCkgewotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJl
Y29yZC5jYWxsU2l0ZVNjcmlwdE5hbWUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3Jp
cHROYW1lOwotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYWxsU2l0ZVNjcmlwdExp
bmUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwotICAgICAgICAgICAg
ICAgIGZvcm1hdHRlZFJlY29yZC50aW1lb3V0ID0gdGltZXJJbnN0YWxsZWRSZWNvcmQudGltZW91
dDsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc2luZ2xlU2hvdCA9IHRpbWVySW5z
dGFsbGVkUmVjb3JkLnNpbmdsZVNob3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZm9ybWF0dGVkUmVjb3JkLmRldGFpbHMgPSB0aGlzLl9nZXRSZWNvcmREZXRhaWxzKHJlY29y
ZCk7Ci0KLSAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlY29yZDsKLSAgICB9LAotCi0gICAgX2dl
dFJlY29yZERldGFpbHM6IGZ1bmN0aW9uKHJlY29yZCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAo
cmVjb3JkLnR5cGUpIHsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5S
ZWNvcmRUeXBlLkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
ZGlzcGxheU5hbWVGb3JVUkwocmVjb3JkLmRhdGEuc2NyaXB0TmFtZSArICI6IiArIHJlY29yZC5k
YXRhLnNjcmlwdExpbmUpOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50
LlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKLSAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0
YSA/IHJlY29yZC5kYXRhLnR5cGUgOiAiIjsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlBhaW50OgotICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5k
YXRhLndpZHRoICsgIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyByZWNvcmQuZGF0YS5oZWlnaHQ7Ci0g
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lcklu
c3RhbGw6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlw
ZS5UaW1lclJlbW92ZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5S
ZWNvcmRUeXBlLlRpbWVyRmlyZToKLSAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0YS50aW1l
cklkOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUu
WEhSUmVhZHlTdGF0ZUNoYW5nZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlhIUkxvYWQ6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdDoKLSAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3Q6Ci0gICAg
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHJlY29yZC5kYXRh
LnVybCk7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlw
ZS5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlRmluaXNoOgotICAgICAgICAgICAgdmFyIHNl
bmRSZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhLmlk
ZW50aWZpZXJdOwotICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXF1ZXN0UmVjb3JkID8gV2ViSW5z
cGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNlbmRSZXF1ZXN0UmVjb3JkLmRhdGEudXJsKSA6ICIi
OwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuTWFy
a1RpbWVsaW5lOgotICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5kYXRhLm1lc3NhZ2U7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICAgIH0KLSAgICB9LAot
CiAgICAgc2V0U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRoLmNhbGwodGhpcywgd2lk
dGgpOwpAQCAtMzA3LDE2ICsyMzcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2FkanVzdFNjcm9sbFBvc2l0aW9uKDApOwogICAgICAg
ICB0aGlzLl9yZWZyZXNoKCk7CiAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWlscygpOwot
ICAgIH0sCi0KLSAgICBfY2xvc2VSZWNvcmREZXRhaWxzOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB2YXIgZGV0YWlscyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFp
bHM7Ci0gICAgICAgIGlmIChkZXRhaWxzKSB7Ci0gICAgICAgICAgICBkZXRhaWxzLmhpZGUoKTsK
LSAgICAgICAgICAgIGRlbGV0ZSBkZXRhaWxzOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwucmVjb3JkRGV0YWlscyA9IG51bGw7Ci0gICAgICAgIH0KKyAgICAgICAgdGhp
cy5fa2lsbFNob3dEZXRhaWxzVGltZXIoKTsKICAgICB9LAogCiAgICAgc2hvdzogZnVuY3Rpb24o
KQpAQCAtNDIwLDE3ICszNDEsMTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgd2lkdGggPSB0aGlzLl9ncmFwaFJvd3NFbGVtZW50Lm9mZnNl
dFdpZHRoOwogICAgICAgICB0aGlzLl9pdGVtc0dyYXBoc0VsZW1lbnQucmVtb3ZlQ2hpbGQodGhp
cy5fZ3JhcGhSb3dzRWxlbWVudCk7CiAgICAgICAgIHZhciBncmFwaFJvd0VsZW1lbnQgPSB0aGlz
Ll9ncmFwaFJvd3NFbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgICAgIHZhciBzY2hlZHVsZVJlZnJl
c2hDYWxsYmFjayA9IHRoaXMuX3NjaGVkdWxlUmVmcmVzaC5iaW5kKHRoaXMsIHRydWUpOwogICAg
ICAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OyArK2kpIHsKICAgICAg
ICAgICAgIHZhciByZWNvcmQgPSByZWNvcmRzSW5XaW5kb3dbaV07CiAgICAgICAgICAgICB2YXIg
aXNFdmVuID0gIShpICUgMik7CiAKICAgICAgICAgICAgIGlmICghbGlzdFJvd0VsZW1lbnQpIHsK
LSAgICAgICAgICAgICAgICBsaXN0Um93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRMaXN0Um93KCkuZWxlbWVudDsKKyAgICAgICAgICAgICAgICBsaXN0Um93RWxlbWVu
dCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93KHRoaXMuX2NhbGxiYWNr
cykuZWxlbWVudDsKICAgICAgICAgICAgICAgICB0aGlzLl9zaWRlYmFyTGlzdEVsZW1lbnQuYXBw
ZW5kQ2hpbGQobGlzdFJvd0VsZW1lbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFncmFwaFJvd0VsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBncmFwaFJvd0VsZW1lbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3codGhpcy5faXRlbXNHcmFwaHNF
bGVtZW50LCBzY2hlZHVsZVJlZnJlc2hDYWxsYmFjaywgcm93SGVpZ2h0KS5lbGVtZW50OworICAg
ICAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRHcmFwaFJvdyh0aGlzLl9jYWxsYmFja3MsIHRoaXMuX2l0ZW1zR3JhcGhzRWxlbWVudCwg
cm93SGVpZ2h0KS5lbGVtZW50OwogICAgICAgICAgICAgICAgIHRoaXMuX2dyYXBoUm93c0VsZW1l
bnQuYXBwZW5kQ2hpbGQoZ3JhcGhSb3dFbGVtZW50KTsKICAgICAgICAgICAgIH0KIApAQCAtNDc3
LDEyICszOTcsODcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAvLyBQcmV2ZW50IHRoZSBjb250YWluZXIgZnJvbSBiZWluZyBzY3JvbGxlZCBvZmYg
dGhlIGVuZC4KICAgICAgICAgaWYgKCh0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCAr
IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0KSA+IHRvdGFsSGVpZ2h0ICsgMSkK
ICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wID0gKHRvdGFsSGVp
Z2h0IC0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5vZmZzZXRIZWlnaHQpOworICAgIH0sCisKKyAg
ICBfbW91c2VPdmVyQW5jaG9yOiBmdW5jdGlvbihyZWNvcmQsIGFuY2hvcikKKyAgICB7CisgICAg
ICAgIHZhciBkZXRhaWxzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWls
czsKKyAgICAgICAgaWYgKCEoZGV0YWlscyAmJiBkZXRhaWxzLmlzVmlzaWJsZSkpCisgICAgICAg
ICAgICB0aGlzLl9zZXR1cFNob3dEZXRhaWxzVGltZXIocmVjb3JkLCBhbmNob3IsIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnNob3dEZXRhaWxzRGVsYXkpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGlmIChkZXRhaWxzLmFuY2hvciA9PT0gYW5jaG9yKQorICAgICAgICAgICAgICAg
IGRldGFpbHMua2lsbEhpZGVUaW1lcigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRoaXMuX3NldHVwSGlkZURldGFpbHNUaW1lcigpOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIF9tb3VzZU92ZXJCYWNrZ3JvdW5kOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBkZXRhaWxzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWlsczsK
KyAgICAgICAgaWYgKGRldGFpbHMgJiYgZGV0YWlscy5pc1Zpc2libGUpCisgICAgICAgICAgICB0
aGlzLl9zZXR1cEhpZGVEZXRhaWxzVGltZXIoKTsKKyAgICAgICAgaWYgKHRoaXMuX3Nob3dSZWNv
cmREZXRhaWxzVGltZXIpCisgICAgICAgICAgICB0aGlzLl9raWxsU2hvd0RldGFpbHNUaW1lcigp
OworICAgIH0sCisKKyAgICBfc2V0dXBIaWRlRGV0YWlsc1RpbWVyOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB2YXIgZGV0YWlscyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29y
ZERldGFpbHM7CisgICAgICAgIGlmIChkZXRhaWxzICYmIGRldGFpbHMuaXNWaXNpYmxlICYmICgh
ZGV0YWlscy5oaWRlRGVsYXkgfHwgZGV0YWlscy5oaWRlRGVsYXkgPiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5oaWRlRGV0YWlsc0lmTW91c2VNb3ZlZERlbGF5KSkKKyAgICAgICAgICAgIGRl
dGFpbHMuaGlkZUFmdGVyRGVsYXkoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuaGlkZURldGFp
bHNJZk1vdXNlTW92ZWREZWxheSk7CisgICAgfSwKKworICAgIF9zZXR1cFNob3dEZXRhaWxzVGlt
ZXI6IGZ1bmN0aW9uKHJlY29yZCwgYW5jaG9yLCB0aW1lb3V0KQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuX2FuY2hvckZvckRldGFpbHNUaW1lciAhPSBhbmNob3IpIHsKKyAgICAgICAgICAgIHRo
aXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CisgICAgICAgICAgICB0aGlzLl9hbmNob3JGb3JE
ZXRhaWxzVGltZXIgPSBhbmNob3I7CisgICAgICAgICAgICB0aGlzLl9yZWNvcmRGb3JEZXRhaWxz
VGltZXIgPSByZWNvcmQ7CisgICAgICAgICAgICB0aGlzLl9zaG93UmVjb3JkRGV0YWlsc1RpbWVy
ID0gc2V0VGltZW91dCh0aGlzLl9zaG93UmVjb3JkRGV0YWlsc1dyYXBwZXIuYmluZCh0aGlzKSwg
dGltZW91dCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2tpbGxTaG93RGV0YWlsc1RpbWVy
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2hvd1JlY29yZERldGFpbHNU
aW1lcikgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dSZWNvcmREZXRhaWxz
VGltZXIpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Nob3dSZWNvcmREZXRhaWxzVGltZXI7
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fYW5jaG9yRm9yRGV0YWlsc1RpbWVyOworICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX3JlY29yZEZvckRldGFpbHNUaW1lcjsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICBfc2hvd1JlY29yZERldGFpbHNXcmFwcGVyOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLl9zaG93UmVjb3JkRGV0YWlscyh0aGlzLl9yZWNvcmRGb3JEZXRhaWxzVGlt
ZXIsIHRoaXMuX2FuY2hvckZvckRldGFpbHNUaW1lcik7CisgICAgfSwKKworICAgIF9zaG93UmVj
b3JkRGV0YWlsczogZnVuY3Rpb24ocmVjb3JkLCBhbmNob3IpCisgICAgeworICAgICAgICB0aGlz
Ll9jbG9zZVJlY29yZERldGFpbHMoKTsKKyAgICAgICAgdGhpcy5fa2lsbFNob3dEZXRhaWxzVGlt
ZXIoKTsKKyAgICAgICAgaWYgKHJlY29yZCkgeworICAgICAgICAgICAgdmFyIGRldGFpbHMgPSBu
ZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIocmVjb3JkLl9nZW5lcmF0ZVBvcHVwQ29udGVudCh0aGlz
Ll9jYWxjdWxhdG9yKSk7CisgICAgICAgICAgICBkZXRhaWxzLmhpZGVXaGVuQ2xpY2tlZCgpOwor
ICAgICAgICAgICAgZGV0YWlscy5oaWRlQWZ0ZXJEZWxheShXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5oaWRlRGV0YWlsc0RlbGF5KTsKKyAgICAgICAgICAgIGRldGFpbHMuc2hvdyhhbmNob3Ip
OworICAgICAgICAgICAgZGV0YWlscy5hbmNob3IgPSBhbmNob3I7CisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yZWNvcmREZXRhaWxzID0gZGV0YWlsczsKKyAgICAgICAg
fQorICAgIH0sCisKKyAgICBfY2xvc2VSZWNvcmREZXRhaWxzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWlscykgewor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWlscy5oaWRl
KCk7CisgICAgICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3Jk
RGV0YWlsczsKKyAgICAgICAgfQogICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGU7CiAK
LQogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnkgPSBmdW5jdGlvbihuYW1lLCB0aXRsZSwg
Y29sb3IpCiB7CiAgICAgdGhpcy5uYW1lID0gbmFtZTsKQEAgLTQ5MCw3ICs0ODUsNiBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVDYXRlZ29yeSA9IGZ1bmN0aW9uKG5hbWUsIHRpdGxlLCBjb2xvcikK
ICAgICB0aGlzLmNvbG9yID0gY29sb3I7CiB9CiAKLQogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2Fs
Y3VsYXRvciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLnJlc2V0KCk7CkBAIC01MzgsOCArNTMy
LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUgPSB7CiB9CiAK
IAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdyA9IGZ1bmN0aW9uKCkKK1dlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cgPSBmdW5jdGlvbihjYWxsYmFja3MpCiB7Cisg
ICAgdGhpcy5fY2FsbGJhY2tzID0gY2FsbGJhY2tzOwogICAgIHRoaXMuZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuZWxlbWVudC5saXN0Um93ID0gdGhp
czsKICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwpAQCAtNTY1LDYg
KzU2MCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFFbGVtZW50KTsKICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVwZWF0Q291bnRFbGVtZW50KTsKICAgICB0
aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vbkNsaWNrLmJpbmQo
dGhpcykpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0
aGlzLl9tb3VzZU92ZXJBbmNob3IuYmluZCh0aGlzKSwgdHJ1ZSk7CiB9CiAKIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZExpc3RSb3cucHJvdG90eXBlID0gewpAQCAtNTc3LDEzICs1NzMsMTAg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtdHJlZS1pdGVtIHRpbWVsaW5l
LWNhdGVnb3J5LSIgKyByZWNvcmQuY2F0ZWdvcnkubmFtZSArIChpc0V2ZW4gPyAiIGV2ZW4iIDog
IiIpOwogICAgICAgICB0aGlzLl90eXBlRWxlbWVudC50ZXh0Q29udGVudCA9IHJlY29yZC50aXRs
ZTsKIAotICAgICAgICBpZiAocmVjb3JkLmRldGFpbHMpIHsKKyAgICAgICAgaWYgKHJlY29yZC5k
ZXRhaWxzKQogICAgICAgICAgICAgdGhpcy5fZGF0YUVsZW1lbnQudGV4dENvbnRlbnQgPSAiKCIg
KyByZWNvcmQuZGV0YWlscyArICIpIjsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFFbGVtZW50LnRp
dGxlID0gcmVjb3JkLmRldGFpbHM7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHRoaXMuX2RhdGFFbGVtZW50LnRleHRDb250ZW50ID0gIiI7Ci0gICAgICAgICAg
ICB0aGlzLl9kYXRhRWxlbWVudC50aXRsZSA9ICIiOwotICAgICAgICB9CiAKICAgICAgICAgaWYg
KHJlY29yZC5jb3VudCA+IDEpCiAgICAgICAgICAgICB0aGlzLl9yZXBlYXRDb3VudEVsZW1lbnQu
dGV4dENvbnRlbnQgPSAiXHUyMDA5XHUwMGQ3XHUyMDA5IiArIHJlY29yZC5jb3VudDsKQEAgLTU5
MSw4NCArNTg0LDE1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcmVwZWF0Q291bnRFbGVtZW50LnRleHRDb250ZW50
ID0gIiI7CiAgICAgfSwKIAotICAgIF9jcmVhdGVDZWxsOiBmdW5jdGlvbihjb250ZW50LCBzdHls
ZU5hbWUpCi0gICAgewotICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImxhYmVsIik7Ci0gICAgICAgIHRleHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoY29udGVudCkpOwotICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InRkIik7Ci0gICAgICAgIGNlbGwuY2xhc3NOYW1lID0gInRpbWVsaW5lLWRldGFpbHMiOwotICAg
ICAgICBpZiAoc3R5bGVOYW1lKQotICAgICAgICAgICAgIGNlbGwuY2xhc3NOYW1lICs9ICIgIiAr
IHN0eWxlTmFtZTsKLSAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICAg
IHJldHVybiBjZWxsOwotICAgIH0sCi0KLSAgICBfY3JlYXRlUm93OiBmdW5jdGlvbih0aXRsZSwg
Y29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0ciIpOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2VsbCh0aXRsZSwg
InRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIikpOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQo
dGhpcy5fY3JlYXRlQ2VsbChjb250ZW50LCAidGltZWxpbmUtZGV0YWlscy1yb3ctZGF0YSIpKTsK
LSAgICAgICAgcmV0dXJuIHJvdzsKLSAgICB9LAotCi0gICAgX2NyZWF0ZUxpbmtSb3c6IGZ1bmN0
aW9uKHRpdGxlLCBjb250ZW50KQorICAgIF9vbkNsaWNrOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2VsbCh0aXRsZSwgInRpbWVsaW5lLWRldGFp
bHMtcm93LXRpdGxlIikpOwotICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRkIik7Ci0gICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoY29udGVudCk7Ci0gICAgICAgIHJv
dy5hcHBlbmRDaGlsZChjZWxsKTsKLSAgICAgICAgcmV0dXJuIHJvdzsKKyAgICAgICAgdGhpcy5f
Y2FsbGJhY2tzLl9zaG93UmVjb3JkRGV0YWlscyh0aGlzLl9yZWNvcmQsIHRoaXMuZWxlbWVudCk7
CiAgICAgfSwKIAotICAgIF9nZW5lcmF0ZUJ1YmJsZUNvbnRlbnQ6IGZ1bmN0aW9uKCkKKyAgICBf
bW91c2VPdmVyQW5jaG9yOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBidWJi
bGVDb250ZW50VGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotICAgICAg
ICB2YXIgdGl0bGVDZWxsID0gdGhpcy5fY3JlYXRlQ2VsbChXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IiVzIC0gRGV0YWlscyIsIHRoaXMuX3JlY29yZC50aXRsZSksICJ0aW1lbGluZS1kZXRhaWxzLXRp
dGxlIik7Ci0gICAgICAgIHRpdGxlQ2VsbC5jb2xTcGFuID0gMjsKLSAgICAgICAgdGl0bGVDZWxs
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOwotICAgICAgICB2YXIg
dGl0bGVSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAgICB0aXRsZVJv
dy5hcHBlbmRDaGlsZCh0aXRsZUNlbGwpOwotICAgICAgICBidWJibGVDb250ZW50VGFibGUuYXBw
ZW5kQ2hpbGQodGl0bGVSb3cpOwotICAgICAgICB2YXIgdGV4dCA9IE51bWJlci5zZWNvbmRzVG9T
dHJpbmcodGhpcy5fcmVjb3JkLmVuZFRpbWUgLSB0aGlzLl9yZWNvcmQuc3RhcnRUaW1lKSArICIg
KEAiICsKLSAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0b3IuZm9ybWF0VmFsdWUodGhpcy5fcmVj
b3JkLnN0YXJ0VGltZSAtIHRoaXMuX2NhbGN1bGF0b3IubWluaW11bUJvdW5kYXJ5KSArICIpIjsK
LSAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIiksIHRleHQpKTsKLQotICAgICAgICBpZiAo
dGhpcy5fcmVjb3JkLmRldGFpbHMpIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5fcmVjb3JkLnR5
cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckluc3RhbGwg
fHwKLSAgICAgICAgICAgICAgICAgdGhpcy5fcmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckZpcmUgfHwKLSAgICAgICAgICAgICAgICAgdGhp
cy5fcmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5U
aW1lclJlbW92ZSkgewotICAgICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRD
aGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lcklkIiksIHRo
aXMuX3JlY29yZC5kYXRhLnRpbWVySWQpKTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmVj
b3JkLnRpbWVvdXQpIHsKLSAgICAgICAgICAgICAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFw
cGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVvdXQi
KSwgdGhpcy5fcmVjb3JkLnRpbWVvdXQpKTsKLSAgICAgICAgICAgICAgICAgICAgYnViYmxlQ29u
dGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlcGVhdHMiKSwgIXRoaXMuX3JlY29yZC5zaW5nbGVTaG90KSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9yZWNvcmQuY2FsbFNpdGVTY3JpcHRMaW5l
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlS
ZXNvdXJjZUFzTm9kZSh0aGlzLl9yZWNvcmQuY2FsbFNpdGVTY3JpcHROYW1lLCAic2NyaXB0cyIs
IHRoaXMuX3JlY29yZC5jYWxsU2l0ZVNjcmlwdExpbmUpOwotICAgICAgICAgICAgICAgICAgICBi
dWJibGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNhbGwgU2l0ZSIpLCBsaW5rKSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIGlmICggdGhpcy5fcmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGwgKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuX3Jl
Y29yZC5kYXRhLnNjcmlwdE5hbWUsICJzY3JpcHRzIiwgdGhpcy5fcmVjb3JkLmRhdGEuc2NyaXB0
TGluZSk7Ci0gICAgICAgICAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRo
aXMuX2NyZWF0ZUxpbmtSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhdGlvbiIpLCBsaW5r
KSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBidWJibGVDb250ZW50VGFi
bGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGV0
YWlscyIpLCB0aGlzLl9yZWNvcmQuZGV0YWlscykpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHRoaXMuX3JlY29yZC5jYWxsZXJTY3JpcHROYW1lKSB7Ci0gICAgICAgICAgICB2YXIgbGluayA9
IFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodGhpcy5fcmVjb3JkLmNhbGxlclNj
cmlwdE5hbWUsICJzY3JpcHRzIiwgdGhpcy5fcmVjb3JkLmNhbGxlclNjcmlwdExpbmUpOwotICAg
ICAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUxpbmtS
b3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxsZXIiKSwgbGluaykpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBidWJibGVDb250ZW50VGFibGU7Ci0gICAgfSwKLQotICAgIF9vbkNsaWNr
OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZWNvcmQpIHsKLSAg
ICAgICAgICAgIHZhciBkZXRhaWxzID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMuX2dl
bmVyYXRlQnViYmxlQ29udGVudCgpKTsKLSAgICAgICAgICAgIGRldGFpbHMuaGlkZVdoZW5DbGlj
a2VkKCk7Ci0gICAgICAgICAgICBkZXRhaWxzLnNob3codGhpcy5lbGVtZW50KTsKLSAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHMgPSBkZXRhaWxzOwot
ICAgICAgICB9CisgICAgICAgIHRoaXMuX2NhbGxiYWNrcy5fbW91c2VPdmVyQW5jaG9yKHRoaXMu
X3JlY29yZCwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
CiAgICAgfSwKIAogICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKQEAgLTY3Nyw4ICs2MDEsOSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnByb3RvdHlwZSA9IHsKICAgICB9CiB9
CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0gZnVuY3Rpb24oZ3JhcGhD
b250YWluZXIsIHJlZnJlc2hDYWxsYmFjaywgcm93SGVpZ2h0KQorV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkR3JhcGhSb3cgPSBmdW5jdGlvbihjYWxsYmFja3MsIGdyYXBoQ29udGFpbmVyLCBy
b3dIZWlnaHQpCiB7CisgICAgdGhpcy5fY2FsbGJhY2tzID0gY2FsbGJhY2tzOwogICAgIHRoaXMu
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuZWxlbWVu
dC5ncmFwaFJvdyA9IHRoaXM7CiAKQEAgLTY5OSw3ICs2MjQsOCBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRHcmFwaFJvdyA9IGZ1bmN0aW9uKGdyYXBoQ29udGFpbmVyLCByZWZyZXNoQ2Fs
bGJhY2ssCiAgICAgdGhpcy5fZXhwYW5kRWxlbWVudC5hcHBlbmRDaGlsZChsZWZ0Qm9yZGVyKTsK
IAogICAgIHRoaXMuX2V4cGFuZEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9vbkNsaWNrLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3JlZnJlc2hDYWxsYmFjayA9IHJlZnJl
c2hDYWxsYmFjazsKKyAgICB0aGlzLl9iYXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fb25CYXJFbGVtZW50Q2xpY2suYmluZCh0aGlzKSk7CisgICAgdGhpcy5fYmFyRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9tb3VzZU92ZXJBbmNob3Iu
YmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcm93SGVpZ2h0ID0gcm93SGVpZ2h0OwogfQogCkBAIC03
MzYsNyArNjYyLDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93LnByb3Rv
dHlwZSA9IHsKICAgICBfb25DbGljazogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLl9yZWNvcmQuY29sbGFwc2VkID0gIXRoaXMuX3JlY29yZC5jb2xsYXBzZWQ7Ci0gICAgICAg
IHRoaXMuX3JlZnJlc2hDYWxsYmFjaygpOworICAgICAgICB0aGlzLl9jYWxsYmFja3MuX3NjaGVk
dWxlUmVmcmVzaCgpOworICAgICAgICB0aGlzLl9jYWxsYmFja3MuX2Nsb3NlUmVjb3JkRGV0YWls
cygpOworICAgIH0sCisKKyAgICBfb25CYXJFbGVtZW50Q2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdGhpcy5fY2FsbGJhY2tzLl9zaG93UmVjb3JkRGV0YWlscyh0aGlzLl9y
ZWNvcmQsIHRoaXMuX2JhckVsZW1lbnQpOworICAgIH0sCisKKyAgICBfbW91c2VPdmVyQW5jaG9y
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jYWxsYmFja3MuX21vdXNlT3ZlckFu
Y2hvcih0aGlzLl9yZWNvcmQsIHRoaXMuX2JhckVsZW1lbnQpOworICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKICAgICB9LAogCiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQpAQCAtNzQ1
LDMgKzY4MywxNTUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9leHBhbmRFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3Zl
Q2hpbGQodGhpcy5fZXhwYW5kRWxlbWVudCk7CiAgICAgfQogfQorCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQgPSBmdW5jdGlvbihyZWNvcmQsIHJlY29yZFN0eWxl
cywgc2VuZFJlcXVlc3RSZWNvcmRzLCB0aW1lclJlY29yZHMpCit7CisgICAgdmFyIHJlY29yZFR5
cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZTsKKyAgICB2YXIgc3R5
bGUgPSByZWNvcmRTdHlsZXNbcmVjb3JkLnR5cGVdOworCisgICAgdGhpcy5jYXRlZ29yeSA9IHN0
eWxlLmNhdGVnb3J5OworICAgIHRoaXMudGl0bGUgPSBzdHlsZS50aXRsZTsKKyAgICB0aGlzLnN0
YXJ0VGltZSA9IHJlY29yZC5zdGFydFRpbWUgLyAxMDAwOworICAgIHRoaXMuZGF0YSA9IHJlY29y
ZC5kYXRhOworICAgIHRoaXMuY291bnQgPSAxOworICAgIHRoaXMudHlwZSA9IHJlY29yZC50eXBl
OworICAgIHRoaXMuZW5kVGltZSA9ICh0eXBlb2YgcmVjb3JkLmVuZFRpbWUgIT09ICJ1bmRlZmlu
ZWQiKSA/IHJlY29yZC5lbmRUaW1lIC8gMTAwMCA6IHRoaXMuc3RhcnRUaW1lOworICAgIHRoaXMu
b3JpZ2luYWxSZWNvcmRGb3JUZXN0cyA9IHJlY29yZDsKKyAgICB0aGlzLmNhbGxlclNjcmlwdE5h
bWUgPSByZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKKyAgICB0aGlzLmNhbGxlclNjcmlwdExpbmUg
PSByZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKKworICAgIC8vIE1ha2UgcmVzb3VyY2UgcmVjZWl2
ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1ZXN0IHdhcyBzZW50OyBtYWtlIGZpbmlzaCByZWNvcmQg
bGFzdCBzaW5jZSByZXNwb25zZSByZWNlaXZlZC4KKyAgICBpZiAocmVjb3JkLnR5cGUgPT09IHJl
Y29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKKyAgICAgICAgc2VuZFJlcXVlc3RSZWNv
cmRzW3JlY29yZC5kYXRhLmlkZW50aWZpZXJdID0gdGhpczsKKyAgICB9IGVsc2UgaWYgKHJlY29y
ZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSkgeworICAgICAg
ICB2YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSBzZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEu
aWRlbnRpZmllcl07CisgICAgICAgIGlmIChzZW5kUmVxdWVzdFJlY29yZCkgeyAvLyBGYWxzZSBp
ZiB3ZSBzdGFydGVkIGluc3RydW1lbnRhdGlvbiBpbiB0aGUgbWlkZGxlIG9mIHJlcXVlc3QuCisg
ICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVzcG9uc2VSZWNlaXZlZEZvcm1hdHRlZFRp
bWUgPSB0aGlzLnN0YXJ0VGltZTsKKyAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lID0gc2VuZFJl
cXVlc3RSZWNvcmQuc3RhcnRUaW1lOworICAgICAgICAgICAgdGhpcy5kZXRhaWxzID0gdGhpcy5f
Z2V0UmVjb3JkRGV0YWlscyhzZW5kUmVxdWVzdFJlY29yZCwgc2VuZFJlcXVlc3RSZWNvcmRzKTsK
KyAgICAgICAgICAgIHRoaXMuY2FsbGVyU2NyaXB0TmFtZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNh
bGxlclNjcmlwdE5hbWU7CisgICAgICAgICAgICB0aGlzLmNhbGxlclNjcmlwdExpbmUgPSBzZW5k
UmVxdWVzdFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOworICAgICAgICB9CisgICAgfSBlbHNlIGlm
IChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2gpIHsKKyAgICAgICAg
dmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhLmlk
ZW50aWZpZXJdOworICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIHsvLyBGYWxzZSBmb3Ig
bWFpbiByZXNvdXJjZS4KKyAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lID0gc2VuZFJlcXVlc3RS
ZWNvcmQuX3Jlc3BvbnNlUmVjZWl2ZWRGb3JtYXR0ZWRUaW1lOworICAgICAgICAgICAgdGhpcy5j
YWxsZXJTY3JpcHROYW1lID0gc2VuZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKKyAg
ICAgICAgICAgIHRoaXMuY2FsbGVyU2NyaXB0TGluZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxl
clNjcmlwdExpbmU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBy
ZWNvcmRUeXBlcy5UaW1lckluc3RhbGwpIHsKKyAgICAgICAgdGhpcy50aW1lb3V0ID0gcmVjb3Jk
LmRhdGEudGltZW91dDsKKyAgICAgICAgdGhpcy5zaW5nbGVTaG90ID0gcmVjb3JkLmRhdGEuc2lu
Z2xlU2hvdDsKKyAgICAgICAgdGltZXJSZWNvcmRzW3JlY29yZC5kYXRhLnRpbWVySWRdID0gdGhp
czsKKyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lckZpcmUp
IHsKKyAgICAgICAgdmFyIHRpbWVySW5zdGFsbGVkUmVjb3JkID0gdGltZXJSZWNvcmRzW3JlY29y
ZC5kYXRhLnRpbWVySWRdOworICAgICAgICBpZiAodGltZXJJbnN0YWxsZWRSZWNvcmQpIHsKKyAg
ICAgICAgICAgIHRoaXMuY2FsbFNpdGVTY3JpcHROYW1lID0gdGltZXJJbnN0YWxsZWRSZWNvcmQu
Y2FsbGVyU2NyaXB0TmFtZTsKKyAgICAgICAgICAgIHRoaXMuY2FsbFNpdGVTY3JpcHRMaW5lID0g
dGltZXJJbnN0YWxsZWRSZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKKyAgICAgICAgICAgIHRoaXMu
dGltZW91dCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnRpbWVvdXQ7CisgICAgICAgICAgICB0aGlz
LnNpbmdsZVNob3QgPSB0aW1lckluc3RhbGxlZFJlY29yZC5zaW5nbGVTaG90OworICAgICAgICB9
CisgICAgfQorICAgIHRoaXMuZGV0YWlscyA9IHRoaXMuX2dldFJlY29yZERldGFpbHMocmVjb3Jk
LCBzZW5kUmVxdWVzdFJlY29yZHMpOworfQorCitXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5G
b3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlID0geworICAgIF9jcmVhdGVDZWxsOiBmdW5jdGlvbihj
b250ZW50LCBzdHlsZU5hbWUpCisgICAgeworICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImxhYmVsIik7CisgICAgICAgIHRleHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoY29udGVudCkpOworICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIGNlbGwuY2xhc3NOYW1lID0gInRpbWVsaW5lLWRl
dGFpbHMiOworICAgICAgICBpZiAoc3R5bGVOYW1lKQorICAgICAgICAgICAgY2VsbC5jbGFzc05h
bWUgKz0gIiAiICsgc3R5bGVOYW1lOworICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29udGVu
dDsKKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfSwKKworICAgIF9jcmVhdGVSb3c6IGZ1bmN0
aW9uKHRpdGxlLCBjb250ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVD
ZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKSk7CisgICAgICAgIHJvdy5h
cHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKGNvbnRlbnQsICJ0aW1lbGluZS1kZXRhaWxzLXJv
dy1kYXRhIikpOworICAgICAgICByZXR1cm4gcm93OworICAgIH0sCisKKyAgICBfY3JlYXRlTGlu
a1JvdzogZnVuY3Rpb24odGl0bGUsIGNvbnRlbnQpCisgICAgeworICAgICAgICB2YXIgcm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRo
aXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0aW1lbGluZS1kZXRhaWxzLXJvdy10aXRsZSIpKTsKKyAg
ICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICBj
ZWxsLmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7
CisgICAgICAgIHJldHVybiByb3c7CisgICAgfSwKKworICAgIF9nZW5lcmF0ZVBvcHVwQ29udGVu
dDogZnVuY3Rpb24oY2FsY3VsYXRvcikKKyAgICB7CisgICAgICAgIHZhciByZWNvcmRDb250ZW50
VGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOworICAgICAgICB2YXIgdGl0
bGVDZWxsID0gdGhpcy5fY3JlYXRlQ2VsbChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIC0gRGV0
YWlscyIsIHRoaXMudGl0bGUpLCAidGltZWxpbmUtZGV0YWlscy10aXRsZSIpOworICAgICAgICB0
aXRsZUNlbGwuY29sU3BhbiA9IDI7CisgICAgICAgIHZhciB0aXRsZVJvdyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgIHRpdGxlUm93LmFwcGVuZENoaWxkKHRpdGxlQ2Vs
bCk7CisgICAgICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aXRsZVJvdyk7Cisg
ICAgICAgIHZhciB0ZXh0ID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLmVuZFRpbWUgLSB0
aGlzLnN0YXJ0VGltZSkgKyAiIChAIiArCisgICAgICAgIGNhbGN1bGF0b3IuZm9ybWF0VmFsdWUo
dGhpcy5zdGFydFRpbWUgLSBjYWxjdWxhdG9yLm1pbmltdW1Cb3VuZGFyeSkgKyAiKSI7CisgICAg
ICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpLCB0ZXh0KSk7CisKKyAgICAgICAgaWYgKHRoaXMu
ZGV0YWlscykgeworICAgICAgICAgICAgaWYgKCB0aGlzLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckluc3RhbGwgfHwKKyAgICAgICAgICAgICAgICB0
aGlzLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckZp
cmUgfHwKKyAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
QWdlbnQuUmVjb3JkVHlwZS5UaW1lclJlbW92ZSkgeworICAgICAgICAgICAgICAgIHJlY29yZENv
bnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJUaW1lcklkIiksIHRoaXMuZGF0YS50aW1lcklkKSk7CisgICAgICAgICAgICAgICAgaWYg
KHRoaXMudGltZW91dCkgeworICAgICAgICAgICAgICAgICAgICByZWNvcmRDb250ZW50VGFibGUu
YXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZW91
dCIpLCB0aGlzLnRpbWVvdXQpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3JkQ29udGVudFRh
YmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
cGVhdHMiKSwgIXRoaXMuc2luZ2xlU2hvdCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBpZiAodGhpcy5jYWxsU2l0ZVNjcmlwdExpbmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuY2Fs
bFNpdGVTY3JpcHROYW1lLCAic2NyaXB0cyIsIHRoaXMuY2FsbFNpdGVTY3JpcHRMaW5lLCAidGlt
ZWxpbmUtZGV0YWlscyIpOworICAgICAgICAgICAgICAgICAgICByZWNvcmRDb250ZW50VGFibGUu
YXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNh
bGwgU2l0ZSIpLCBsaW5rKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
IGlmICggdGhpcy50eXBlID09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUu
RnVuY3Rpb25DYWxsICkgeworICAgICAgICAgICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9y
LmxpbmtpZnlSZXNvdXJjZUFzTm9kZSh0aGlzLmRhdGEuc2NyaXB0TmFtZSwgInNjcmlwdHMiLCB0
aGlzLmRhdGEuc2NyaXB0TGluZSwgInRpbWVsaW5lLWRldGFpbHMiKTsKKyAgICAgICAgICAgICAg
ICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIiksIGxpbmspKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9j
cmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZXRhaWxzIiksIHRoaXMuZGV0YWlscykp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuY2FsbGVyU2NyaXB0TmFtZSkgeworICAg
ICAgICAgICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRo
aXMuY2FsbGVyU2NyaXB0TmFtZSwgInNjcmlwdHMiLCB0aGlzLmNhbGxlclNjcmlwdExpbmUpOwor
ICAgICAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUxp
bmtSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxsZXIiKSwgbGluaykpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiByZWNvcmRDb250ZW50VGFibGU7CisgICAgfSwKKworICAgIF9nZXRS
ZWNvcmREZXRhaWxzOiBmdW5jdGlvbihyZWNvcmQsIHNlbmRSZXF1ZXN0UmVjb3JkcykKKyAgICB7
CisgICAgICAgIHN3aXRjaCAocmVjb3JkLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGw6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChyZWNvcmQuZGF0YS5z
Y3JpcHROYW1lICsgIjoiICsgcmVjb3JkLmRhdGEuc2NyaXB0TGluZSk7CisgICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmRhdGEgPyByZWNvcmQuZGF0YS50eXBlIDog
IiI7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5
cGUuUGFpbnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5kYXRhLndpZHRoICsgIlx1
MjAwOVx1MDBkN1x1MjAwOSIgKyByZWNvcmQuZGF0YS5oZWlnaHQ7CisgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJJbnN0YWxsOgorICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVy
UmVtb3ZlOgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNv
cmRUeXBlLlRpbWVyRmlyZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmRhdGEudGlt
ZXJJZDsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3Jk
VHlwZS5YSFJSZWFkeVN0YXRlQ2hhbmdlOgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlhIUkxvYWQ6CisgICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQ6CisgICAgICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuUmVzb3VyY2VT
ZW5kUmVxdWVzdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlO
YW1lRm9yVVJMKHJlY29yZC5kYXRhLnVybCk7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6CisgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuUmVzb3Vy
Y2VGaW5pc2g6CisgICAgICAgICAgICAgICAgdmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gc2VuZFJl
cXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhLmlkZW50aWZpZXJdOworICAgICAgICAgICAgICAgIHJl
dHVybiBzZW5kUmVxdWVzdFJlY29yZCA/IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChz
ZW5kUmVxdWVzdFJlY29yZC5kYXRhLnVybCkgOiAiIjsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5NYXJrVGltZWxpbmU6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlY29yZC5kYXRhLm1lc3NhZ2U7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBjZjUxYmQ4Li43MDFkMWFl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMzU2Nyw3
ICszNTY3LDggQEAgYm9keS5pbmFjdGl2ZSAuc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgLmJ1
YmJsZS5zZWFyY2gtbWF0Y2hlcyB7CiAgICAgbWluLXdpZHRoOiA1cHg7CiAgICAgb3BhY2l0eTog
MC44OwogICAgIC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoSW1hZ2VzL3RpbWVsaW5lQmFyR3Jh
eS5wbmcpIDQgNCA1IDQ7Ci0gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgei1pbmRleDog
MTgwOworICAgIHBvaW50ZXItZXZlbnRzOiB2aXNpYmxlRmlsbDsKIH0KIAogLnRpbWVsaW5lLWdy
YXBoLXNpZGUuZXZlbiB7CkBAIC0zODQ4LDYgKzM4NDksMTAgQEAgb2wuYnJlYWtwb2ludC1saXN0
IHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDE5NCk7CiB9CiAKKy50aW1l
bGluZS1kZXRhaWxzIHsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0OworfQorCiAudGlt
ZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUgewogICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgIHRl
eHQtYWxpZ246IHJpZ2h0OwpAQCAtMzg2MSw0ICszODY2LDEwIEBAIG9sLmJyZWFrcG9pbnQtbGlz
dCB7CiAudGltZWxpbmUtZGV0YWlscy10aXRsZSB7CiAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAg
ICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisg
ICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBm
b250LXNpemU6IDExcHg7CisgICAgcGFkZGluZy1sZWZ0OiAxMHB4OworICAgIHBhZGRpbmctYm90
dG9tOiA1cHg7CisgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigxOTQsMTk0LDE0Nyk7
Cit9Cg==
</data>
<flag name="review"
          id="32955"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50018</attachid>
            <date>2010-03-04 07:23:19 -0800</date>
            <delta_ts>2010-03-04 07:37:32 -0800</delta_ts>
            <desc>third iteration. recent comments from pfeldman were fixed.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>41349</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKaW5kZXggODY2Y2IyNC4uNmEwMTU2
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKQEAgLTM4LDYgKzM4LDkg
QEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBmdW5jdGlvbihjb250ZW50RWxlbWVudCkKICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQpOwogCiAgICAg
dGhpcy5jb250ZW50RWxlbWVudCA9IGNvbnRlbnRFbGVtZW50OworICAgIHRoaXMuX2NvbnRlbnRE
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9jb250ZW50RGl2
LmNsYXNzTmFtZSA9ICJjb250ZW50IjsKKyAgICB0aGlzLl9jb250ZW50RGl2LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlT3ZlckNvbnRlbnQuYmluZCh0aGlzKSk7CiB9
CiAKIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKQEAgLTU0LDE4ICs1NywzMCBA
QCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBwcmVmZXJy
ZWRXaWR0aCA9IHByZWZlcnJlZFdpZHRoIHx8IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lk
dGg7CiAgICAgICAgIHZhciBwcmVmZXJyZWRIZWlnaHQgPSBwcmVmZXJyZWRIZWlnaHQgfHwgdGhp
cy5jb250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CiAKLSAgICAgICAgdmFyIGNvbnRlbnREaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudERpdi5jbGFz
c05hbWUgPSAiY29udGVudCI7Ci0gICAgICAgIGNvbnRlbnREaXYuYXBwZW5kQ2hpbGQodGhpcy5j
b250ZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50
RGl2KTsKKyAgICAgICAgdGhpcy5fY29udGVudERpdi5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRF
bGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRE
aXYpOwogICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CiAg
ICAgICAgIHRoaXMuX3Bvc2l0aW9uRWxlbWVudChhbmNob3IsIHByZWZlcnJlZFdpZHRoLCBwcmVm
ZXJyZWRIZWlnaHQpOwogICAgIH0sCiAKKyAgICBfbW91c2VPdmVyQ29udGVudDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmtpbGxIaWRlVGltZXIoKTsKKyAgICAgICAgZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfSwKKwogICAgIGhpZGU6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQ7
Ci0gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5raWxsSGlkZVRpbWVyKCk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5fcG9wb3ZlckVsZW1lbnQpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuUG9w
b3Zlci5fcG9wb3ZlckVsZW1lbnQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgZ2V0IGlzVmlzaWJs
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlBvcG92ZXIuX3BvcG92ZXJF
bGVtZW50ID8gdHJ1ZSA6IGZhbHNlOwogICAgIH0sCiAKICAgICBoaWRlV2hlbkNsaWNrZWQ6IGZ1
bmN0aW9uKCkKQEAgLTczLDE0ICs4OCwzNSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuaGlkZS5iaW5kKHRoaXMpKTsKICAgICB9LAogCisgICAgaGlkZUFmdGVyRGVsYXk6IGZ1bmN0
aW9uKHRpbWVvdXQpCisgICAgeworICAgICAgICB0aGlzLmtpbGxIaWRlVGltZXIoKTsKKyAgICAg
ICAgdGhpcy5oaWRlRGVsYXkgPSB0aW1lb3V0OworICAgICAgICB0aGlzLl9oaWRlVGltZXIgPSBz
ZXRUaW1lb3V0KHRoaXMuaGlkZS5iaW5kKHRoaXMpLCB0aW1lb3V0KTsKKyAgICB9LAorCisgICAg
a2lsbEhpZGVUaW1lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2hpZGVU
aW1lcikgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lcik7CisgICAg
ICAgICAgICBkZWxldGUgdGhpcy5faGlkZVRpbWVyOworICAgICAgICAgICAgZGVsZXRlIHRoaXMu
aGlkZURlbGF5OworICAgICAgICB9CisgICAgfSwKKworICAgIGdldCBpc0hpZGVBZnRlckRlbGF5
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9oaWRlVGltZXIgPyB0cnVlIDogZmFsc2U7
CisgICAgfSwKKwogICAgIF9wb3NpdGlvbkVsZW1lbnQ6IGZ1bmN0aW9uKGFuY2hvckVsZW1lbnQs
IHByZWZlcnJlZFdpZHRoLCBwcmVmZXJyZWRIZWlnaHQpCiAgICAgewogICAgICAgICBjb25zdCBi
b3JkZXJXaWR0aCA9IDI1OwogICAgICAgICBjb25zdCBzY3JvbGxlcldpZHRoID0gMTE7CiAgICAg
ICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gMTU7Ci0gICAgICAgIGNvbnN0IGFycm93T2Zmc2V0ID0g
MTU7CisgICAgICAgIGNvbnN0IGFycm93T2Zmc2V0ID0gMTA7CiAgICAgICAgIGNvbnN0IGJvcmRl
clJhZGl1cyA9IDEwOwotICAgICAgICAKKwogICAgICAgICAvLyBTa2lubnkgdG9vbHRpcHMgYXJl
IG5vdCBwcmV0dHksIHRoZWlyIGFycm93IGxvY2F0aW9uIGlzIG5vdCBuaWNlLgogICAgICAgICBw
cmVmZXJyZWRXaWR0aCA9IE1hdGgubWF4KHByZWZlcnJlZFdpZHRoLCA1MCk7CiAgICAgICAgIGNv
bnN0IHRvdGFsV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDsKQEAgLTEyMSwyMiArMTU3LDI1IEBA
IFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgaG9yaXpv
bnRhbEFsaWdubWVudDsKICAgICAgICAgaWYgKGFuY2hvckJveC54ICsgbmV3RWxlbWVudFBvc2l0
aW9uLndpZHRoIDwgdG90YWxXaWR0aCkgewotICAgICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9u
LnggPSBNYXRoLm1heChib3JkZXJSYWRpdXMsIGFuY2hvckJveC54IC0gYXJyb3dPZmZzZXQpOwor
ICAgICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSBNYXRoLm1heChib3JkZXJSYWRpdXMs
IGFuY2hvckJveC54IC0gYm9yZGVyUmFkaXVzIC0gYXJyb3dPZmZzZXQpOwogICAgICAgICAgICAg
aG9yaXpvbnRhbEFsaWdubWVudCA9ICJsZWZ0IjsKICAgICAgICAgfSBlbHNlIGlmIChuZXdFbGVt
ZW50UG9zaXRpb24ud2lkdGggKyBib3JkZXJSYWRpdXMgKiAyIDwgdG90YWxXaWR0aCkgewogICAg
ICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSB0b3RhbFdpZHRoIC0gbmV3RWxlbWVudFBv
c2l0aW9uLndpZHRoIC0gYm9yZGVyUmFkaXVzOwogICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWdu
bWVudCA9ICJyaWdodCI7CiAgICAgICAgICAgICAvLyBQb3NpdGlvbiBhcnJvdyBhY2N1cmF0ZWx5
LgotICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUucmlnaHQgPSB0b3Rh
bFdpZHRoIC0gYW5jaG9yQm94LnggLSBhbmNob3JCb3gud2lkdGggLSBib3JkZXJSYWRpdXMgKyAi
cHgiOworICAgICAgICAgICAgdmFyIGFycm93UmlnaHRQb3NpdGlvbiA9IE1hdGgubWF4KDAsIHRv
dGFsV2lkdGggLSBhbmNob3JCb3gueCAtIGFuY2hvckJveC53aWR0aCAtIGJvcmRlclJhZGl1cyAt
IGFycm93T2Zmc2V0KTsKKyAgICAgICAgICAgIGFycm93UmlnaHRQb3NpdGlvbiArPSBhbmNob3JC
b3gud2lkdGggLyAyOworICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUu
cmlnaHQgPSBhcnJvd1JpZ2h0UG9zaXRpb24gKyAicHgiOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSBib3JkZXJSYWRpdXM7Ci0gICAgICAgICAg
ICBuZXdFbGVtZW50UG9zaXRpb24ud2lkdGggPSB0b3RhbFdpZHRoIC0gc2Nyb2xsZXJXaWR0aCAt
IGJvcmRlclJhZGl1cyAqIDI7CisgICAgICAgICAgICBuZXdFbGVtZW50UG9zaXRpb24ud2lkdGgg
PSB0b3RhbFdpZHRoIC0gYm9yZGVyUmFkaXVzICogMjsKICAgICAgICAgICAgIG5ld0VsZW1lbnRQ
b3NpdGlvbi5oZWlnaHQgKz0gc2Nyb2xsZXJXaWR0aDsKICAgICAgICAgICAgIGhvcml6b250YWxB
bGlnbm1lbnQgPSAibGVmdCI7CiAgICAgICAgICAgICBpZiAodmVydGljYWxBbGlnbm1lbnQgPT09
ICJib3R0b20iKQogICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRQb3NpdGlvbi55IC09IHNjcm9s
bGVyV2lkdGg7CiAgICAgICAgICAgICAvLyBQb3NpdGlvbiBhcnJvdyBhY2N1cmF0ZWx5LgotICAg
ICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCA9IGFuY2hvckJveC54
ICsgInB4IjsKKyAgICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQg
PSBNYXRoLm1heCgwLCBhbmNob3JCb3gueCAtIGJvcmRlclJhZGl1cyAqIDIgLSBhcnJvd09mZnNl
dCkgKyAicHgiOworICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVm
dCArPSBhbmNob3JCb3gud2lkdGggLyAyOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhv
cml6b250YWxBbGlnbm1lbnQgKyAiLWFycm93IjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggMjFhNzZhZi4uZmJkYTQ0NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTQ1LDYgKzQ1LDcgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fY29udGFp
bmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2Nv
bnRhaW5lckVsZW1lbnQuaWQgPSAidGltZWxpbmUtY29udGFpbmVyIjsKICAgICB0aGlzLl9jb250
YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX29uU2Nyb2xsLmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlTW92ZS5iaW5kKHRoaXMpLCBmYWxzZSk7CiAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQpOwogCiAg
ICAgdGhpcy5jcmVhdGVTaWRlYmFyKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQsIHRoaXMuX2NvbnRh
aW5lckVsZW1lbnQpOwpAQCAtODQsOCArODUsMTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fY2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVDYWxjdWxhdG9yKCk7CiAgICAgdGhpcy5fYm91bmRhcmllc0FyZVZhbGlkID0gdHJ1
ZTsKICAgICB0aGlzLl9zY3JvbGxUb3AgPSAwOworICAgIHRoaXMuX2NhbGxiYWNrcyA9IHt9Owor
ICAgIHRoaXMuX2NhbGxiYWNrcy5fbW91c2VNb3ZlID0gdGhpcy5fbW91c2VNb3ZlLmJpbmQodGhp
cyk7CisgICAgdGhpcy5fY2FsbGJhY2tzLl9vbkNsaWNrID0gdGhpcy5fb25DbGljay5iaW5kKHRo
aXMpOworICAgIHRoaXMuX2NhbGxiYWNrcy5fc2NoZWR1bGVSZWZyZXNoID0gdGhpcy5fc2NoZWR1
bGVSZWZyZXNoLmJpbmQodGhpcywgdHJ1ZSk7CiB9CiAKK1dlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLnNob3dEZXRhaWxzRGVsYXkgPSAxNTAwOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
aGlkZURldGFpbHNEZWxheSA9IDEwMDAwOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuaGlk
ZURldGFpbHNJZk1vdXNlTW92ZWREZWxheSA9IDMwMDsKKwogV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucHJvdG90eXBlID0gewogICAgIHRvb2xiYXJJdGVtQ2xhc3M6ICJ0aW1lbGluZSIsCiAK
QEAgLTExMSw2ICsxMjAsMzIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcmllczsKICAgICB9LAogCisgICAgZ2V0
IF9yZWNvcmRTdHlsZXMoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9yZWNvcmRTdHlsZXNB
cnJheSkgeworICAgICAgICAgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZTsKKyAgICAgICAgICAgIHZhciByZWNvcmRTdHlsZXMgPSB7fTsK
KyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXSA9IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZlbnQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0
ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5MYXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQiKSwgY2F0
ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5yZW5kZXJpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3Jp
ZXMucmVuZGVyaW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUGFp
bnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYWludCIpLCBjYXRlZ29yeTog
dGhpcy5jYXRlZ29yaWVzLnJlbmRlcmluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBh
cnNlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OworICAgICAgICAgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVySW5zdGFsbF0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkluc3RhbGwgVGltZXIiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmll
cy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1l
clJlbW92ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1lciIp
LCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OworICAgICAgICAgICAgcmVj
b3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyRmlyZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlRpbWVyIEZpcmVkIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0
aW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSUmVhZHlTdGF0
ZUNoYW5nZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiBSZWFkeSBTdGF0
ZSBDaGFuZ2UiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAg
ICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5z
Y3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmFsdWF0
ZVNjcmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIFNjcmlw
dCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OworICAgICAgICAgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtUaW1lbGluZV0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk1hcmsiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRp
bmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVNlbmRS
ZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VuZCBSZXF1ZXN0Iiks
IGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OworICAgICAgICAgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlXSA9IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBSZXNwb25zZSIpLCBjYXRlZ29yeTogdGhpcy5j
YXRlZ29yaWVzLmxvYWRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5SZXNvdXJjZUZpbmlzaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbmlz
aCBMb2FkaW5nIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OworICAgICAg
ICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZ1bmN0aW9uQ2FsbF0gPSB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0
ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc0FycmF5
ID0gcmVjb3JkU3R5bGVzOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRT
dHlsZXNBcnJheTsKKyAgICB9LAorCiAgICAgX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnM6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMudG9nZ2xlVGltZWxpbmVCdXR0b24gPSBuZXcgV2Vi
SW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwgInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXIt
aXRlbSIpOwpAQCAtMTQ2LDcgKzE4MSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgIF9pbm5lckFkZFJlY29yZFRvVGltZWxpbmU6IGZ1bmN0aW9uKHJl
Y29yZCwgY29sbGVjdGlvbikKICAgICB7Ci0gICAgICAgIHZhciBmb3JtYXR0ZWRSZWNvcmQgPSB0
aGlzLl9mb3JtYXRSZWNvcmQocmVjb3JkKTsKKyAgICAgICAgdmFyIGZvcm1hdHRlZFJlY29yZCA9
IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQocmVjb3JkLCB0
aGlzLl9yZWNvcmRTdHlsZXMsIHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3JkcywgdGhpcy5fdGltZXJS
ZWNvcmRzKTsKIAogICAgICAgICAvLyBHbHVlIHN1YnNlcXVlbnQgcmVjb3JkcyB3aXRoIHNhbWUg
Y2F0ZWdvcnkgYW5kIHRpdGxlIHRvZ2V0aGVyIGlmIHRoZXkgYXJlIGNsb3NlciB0aGFuIDEwMG1z
IHRvIGVhY2ggb3RoZXIuCiAgICAgICAgIGlmICh0aGlzLl9sYXN0UmVjb3JkICYmICghcmVjb3Jk
LmNoaWxkcmVuIHx8ICFyZWNvcmQuY2hpbGRyZW4ubGVuZ3RoKSAmJgpAQCAtMTcxLDExMiArMjA2
LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gZm9ybWF0dGVkUmVjb3JkOwogICAgIH0sCiAKLSAgICBfZm9ybWF0UmVjb3JkOiBmdW5j
dGlvbihyZWNvcmQpCi0gICAgewotICAgICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlOwotICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0
eWxlcykgewotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzID0ge307Ci0gICAgICAgICAg
ICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZlbnREaXNwYXRjaF0gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3Jp
ZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlw
ZXMuTGF5b3V0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0IiksIGNh
dGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMucmVuZGVyaW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9y
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVjYWxjdWxhdGVTdHlsZXNdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNhbGN1bGF0ZSBTdHlsZSIpLCBjYXRlZ29yeTogdGhpcy5j
YXRlZ29yaWVzLnJlbmRlcmluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFpbnQi
KSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5yZW5kZXJpbmcgfTsKLSAgICAgICAgICAgIHRo
aXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5QYXJzZUhUTUxdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJQYXJzZSIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLmxvYWRp
bmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lcklu
c3RhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnN0YWxsIFRpbWVyIiks
IGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlz
Ll9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZXJSZW1vdmVdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgVGltZXIiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmll
cy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5UaW1lckZpcmVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lciBGaXJl
ZCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OwotICAgICAgICAgICAg
dGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNh
dGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9y
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSTG9hZF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlhIUiBMb2FkIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5n
IH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZhbHVhdGVT
Y3JpcHRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFdmFsdWF0ZSBTY3JpcHQi
KSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRo
aXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5NYXJrVGltZWxpbmVdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJNYXJrIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2Ny
aXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVz
b3VyY2VTZW5kUmVxdWVzdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbmQg
UmVxdWVzdCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLmxvYWRpbmcgfTsKLSAgICAgICAg
ICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25z
ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmUgUmVzcG9uc2UiKSwg
Y2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5sb2FkaW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9y
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2hdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJGaW5pc2ggTG9hZGluZyIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29y
aWVzLmxvYWRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5GdW5jdGlvbkNhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlv
biBDYWxsIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAg
IH0KLQotICAgICAgICB2YXIgc3R5bGUgPSB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkLnR5cGVd
OwotICAgICAgICBpZiAoIXN0eWxlKQotICAgICAgICAgICAgc3R5bGUgPSB0aGlzLl9yZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuRXZlbnREaXNwYXRjaF07Ci0KLSAgICAgICAgdmFyIGZvcm1hdHRl
ZFJlY29yZCA9IHt9OwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY2F0ZWdvcnkgPSBzdHlsZS5j
YXRlZ29yeTsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnRpdGxlID0gc3R5bGUudGl0bGU7Ci0g
ICAgICAgIGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lIC8gMTAw
MDsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmRhdGEgPSByZWNvcmQuZGF0YTsKLSAgICAgICAg
Zm9ybWF0dGVkUmVjb3JkLmNvdW50ID0gMTsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnR5cGUg
PSByZWNvcmQudHlwZTsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmVuZFRpbWUgPSAodHlwZW9m
IHJlY29yZC5lbmRUaW1lICE9PSAidW5kZWZpbmVkIikgPyByZWNvcmQuZW5kVGltZSAvIDEwMDAg
OiBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQub3Jp
Z2luYWxSZWNvcmRGb3JUZXN0cyA9IHJlY29yZDsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNh
bGxlclNjcmlwdE5hbWUgPSByZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKLSAgICAgICAgZm9ybWF0
dGVkUmVjb3JkLmNhbGxlclNjcmlwdExpbmUgPSByZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKLQot
ICAgICAgICAvLyBNYWtlIHJlc291cmNlIHJlY2VpdmUgcmVjb3JkIGxhc3Qgc2luY2UgcmVxdWVz
dCB3YXMgc2VudDsgbWFrZSBmaW5pc2ggcmVjb3JkIGxhc3Qgc2luY2UgcmVzcG9uc2UgcmVjZWl2
ZWQuCi0gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICB0aGlzLl9z
ZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl0gPSBmb3JtYXR0ZWRSZWNv
cmQ7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1l
bGluZUFnZW50LlJlY29yZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2UpIHsKLSAgICAgICAg
ICAgIHZhciBzZW5kUmVxdWVzdFJlY29yZCA9IHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNv
cmQuZGF0YS5pZGVudGlmaWVyXTsKLSAgICAgICAgICAgIGlmIChzZW5kUmVxdWVzdFJlY29yZCkg
eyAvLyBGYWxzZSBpZiB3ZSBzdGFydGVkIGluc3RydW1lbnRhdGlvbiBpbiB0aGUgbWlkZGxlIG9m
IHJlcXVlc3QuCi0gICAgICAgICAgICAgICAgc2VuZFJlcXVlc3RSZWNvcmQuX3Jlc3BvbnNlUmVj
ZWl2ZWRGb3JtYXR0ZWRUaW1lID0gZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZTsKLSAgICAgICAg
ICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lID0gc2VuZFJlcXVlc3RSZWNvcmQuc3Rh
cnRUaW1lOwotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5kZXRhaWxzID0gdGhpcy5f
Z2V0UmVjb3JkRGV0YWlscyhzZW5kUmVxdWVzdFJlY29yZCk7Ci0gICAgICAgICAgICAgICAgZm9y
bWF0dGVkUmVjb3JkLmNhbGxlclNjcmlwdE5hbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJT
Y3JpcHROYW1lOwotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYWxsZXJTY3JpcHRM
aW5lID0gc2VuZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
QWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaCkgewotICAgICAgICAgICAgdmFyIHNlbmRS
ZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhLmlkZW50
aWZpZXJdOwotICAgICAgICAgICAgaWYgKHNlbmRSZXF1ZXN0UmVjb3JkKSB7Ly8gRmFsc2UgZm9y
IG1haW4gcmVzb3VyY2UuCi0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGlt
ZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLl9yZXNwb25zZVJlY2VpdmVkRm9ybWF0dGVkVGltZTsKLSAg
ICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZSA9IHNlbmRSZXF1
ZXN0UmVjb3JkLmNhbGxlclNjcmlwdE5hbWU7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVj
b3JkLmNhbGxlclNjcmlwdExpbmUgPSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJTY3JpcHRMaW5l
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbCkgewotICAgICAg
ICAgICAgZm9ybWF0dGVkUmVjb3JkLnRpbWVvdXQgPSByZWNvcmQuZGF0YS50aW1lb3V0OwotICAg
ICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnNpbmdsZVNob3QgPSByZWNvcmQuZGF0YS5zaW5nbGVT
aG90OwotICAgICAgICAgICAgdGhpcy5fdGltZXJSZWNvcmRzW3JlY29yZC5kYXRhLnRpbWVySWRd
ID0gZm9ybWF0dGVkUmVjb3JkOwotICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyRmlyZSB8fAotICAgICAg
ICAgICAgICAgICAgIHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5S
ZWNvcmRUeXBlLlRpbWVyUmVtb3ZlKSB7Ci0gICAgICAgICAgICB2YXIgdGltZXJJbnN0YWxsZWRS
ZWNvcmQgPSB0aGlzLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGEudGltZXJJZF07Ci0gICAgICAg
ICAgICBpZiAodGltZXJJbnN0YWxsZWRSZWNvcmQpIHsKLSAgICAgICAgICAgICAgICBmb3JtYXR0
ZWRSZWNvcmQuY2FsbFNpdGVTY3JpcHROYW1lID0gdGltZXJJbnN0YWxsZWRSZWNvcmQuY2FsbGVy
U2NyaXB0TmFtZTsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY2FsbFNpdGVTY3Jp
cHRMaW5lID0gdGltZXJJbnN0YWxsZWRSZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKLSAgICAgICAg
ICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudGltZW91dCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnRp
bWVvdXQ7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnNpbmdsZVNob3QgPSB0aW1l
ckluc3RhbGxlZFJlY29yZC5zaW5nbGVTaG90OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGZvcm1hdHRlZFJlY29yZC5kZXRhaWxzID0gdGhpcy5fZ2V0UmVjb3JkRGV0YWlscyhy
ZWNvcmQpOwotCi0gICAgICAgIHJldHVybiBmb3JtYXR0ZWRSZWNvcmQ7Ci0gICAgfSwKLQotICAg
IF9nZXRSZWNvcmREZXRhaWxzOiBmdW5jdGlvbihyZWNvcmQpCi0gICAgewotICAgICAgICBzd2l0
Y2ggKHJlY29yZC50eXBlKSB7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGw6Ci0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLmRpc3BsYXlOYW1lRm9yVVJMKHJlY29yZC5kYXRhLnNjcmlwdE5hbWUgKyAiOiIgKyByZWNv
cmQuZGF0YS5zY3JpcHRMaW5lKTsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLkV2ZW50RGlzcGF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gcmVjb3Jk
LmRhdGEgPyByZWNvcmQuZGF0YS50eXBlIDogIiI7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5QYWludDoKLSAgICAgICAgICAgIHJldHVybiByZWNv
cmQuZGF0YS53aWR0aCArICJcdTIwMDlcdTAwZDdcdTIwMDkiICsgcmVjb3JkLmRhdGEuaGVpZ2h0
OwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGlt
ZXJJbnN0YWxsOgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuVGltZXJSZW1vdmU6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5UaW1lckZpcmU6Ci0gICAgICAgICAgICByZXR1cm4gcmVjb3JkLmRhdGEu
dGltZXJJZDsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRU
eXBlLlhIUlJlYWR5U3RhdGVDaGFuZ2U6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJMb2FkOgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50LlJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQ6Ci0gICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0Ogot
ICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChyZWNvcmQu
ZGF0YS51cmwpOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaDoKLSAgICAgICAgICAgIHZh
ciBzZW5kUmVxdWVzdFJlY29yZCA9IHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0
YS5pZGVudGlmaWVyXTsKLSAgICAgICAgICAgIHJldHVybiBzZW5kUmVxdWVzdFJlY29yZCA/IFdl
Ykluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChzZW5kUmVxdWVzdFJlY29yZC5kYXRhLnVybCkg
OiAiIjsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBl
Lk1hcmtUaW1lbGluZToKLSAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0YS5tZXNzYWdlOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgICB9Ci0gICAg
fSwKLQogICAgIHNldFNpZGViYXJXaWR0aDogZnVuY3Rpb24od2lkdGgpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnNldFNpZGViYXJXaWR0aC5jYWxsKHRoaXMs
IHdpZHRoKTsKQEAgLTMwNywxNiArMjM2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9hZGp1c3RTY3JvbGxQb3NpdGlvbigwKTsKICAg
ICAgICAgdGhpcy5fcmVmcmVzaCgpOwogICAgICAgICB0aGlzLl9jbG9zZVJlY29yZERldGFpbHMo
KTsKLSAgICB9LAotCi0gICAgX2Nsb3NlUmVjb3JkRGV0YWlsczogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdmFyIGRldGFpbHMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yZWNvcmRE
ZXRhaWxzOwotICAgICAgICBpZiAoZGV0YWlscykgewotICAgICAgICAgICAgZGV0YWlscy5oaWRl
KCk7Ci0gICAgICAgICAgICBkZWxldGUgZGV0YWlsczsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHMgPSBudWxsOwotICAgICAgICB9CisgICAgICAg
IHRoaXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CiAgICAgfSwKIAogICAgIHNob3c6IGZ1bmN0
aW9uKCkKQEAgLTMyOSw3ICsyNDksNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90
b3R5cGUgPSB7CiAKICAgICBfb25TY3JvbGw6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgdGhpcy5fY2xvc2VSZWNvcmREZXRhaWxzKCk7CiAgICAgICAgIHZhciBzY3JvbGxUb3AgPSB0
aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcDsKICAgICAgICAgdmFyIGRpdmlkZXJzVG9w
ID0gTWF0aC5tYXgoMCwgc2Nyb2xsVG9wKTsKICAgICAgICAgdGhpcy5fdGltZWxpbmVHcmlkLnNl
dFNjcm9sbEFuZERpdmlkZXJUb3Aoc2Nyb2xsVG9wLCBkaXZpZGVyc1RvcCk7CkBAIC0zNDQsNiAr
MjYzLDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
X3NjaGVkdWxlUmVmcmVzaDogZnVuY3Rpb24ocHJlc2VydmVCb3VuZGFyaWVzKQogICAgIHsKKyAg
ICAgICAgaWYgKHByZXNlcnZlQm91bmRhcmllcykKKyAgICAgICAgICAgIHRoaXMuX2Nsb3NlUmVj
b3JkRGV0YWlscygpOwogICAgICAgICB0aGlzLl9ib3VuZGFyaWVzQXJlVmFsaWQgJj0gcHJlc2Vy
dmVCb3VuZGFyaWVzOwogICAgICAgICBpZiAodGhpcy5fbmVlZHNSZWZyZXNoKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNDIwLDIyICszNDEsMjEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgd2lkdGggPSB0aGlzLl9ncmFwaFJvd3NFbGVt
ZW50Lm9mZnNldFdpZHRoOwogICAgICAgICB0aGlzLl9pdGVtc0dyYXBoc0VsZW1lbnQucmVtb3Zl
Q2hpbGQodGhpcy5fZ3JhcGhSb3dzRWxlbWVudCk7CiAgICAgICAgIHZhciBncmFwaFJvd0VsZW1l
bnQgPSB0aGlzLl9ncmFwaFJvd3NFbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgICAgIHZhciBzY2hl
ZHVsZVJlZnJlc2hDYWxsYmFjayA9IHRoaXMuX3NjaGVkdWxlUmVmcmVzaC5iaW5kKHRoaXMsIHRy
dWUpOwogICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OyArK2kp
IHsKICAgICAgICAgICAgIHZhciByZWNvcmQgPSByZWNvcmRzSW5XaW5kb3dbaV07CiAgICAgICAg
ICAgICB2YXIgaXNFdmVuID0gIShpICUgMik7CiAKICAgICAgICAgICAgIGlmICghbGlzdFJvd0Vs
ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBsaXN0Um93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93KCkuZWxlbWVudDsKKyAgICAgICAgICAgICAgICBsaXN0
Um93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93KHRoaXMu
X2NhbGxiYWNrcykuZWxlbWVudDsKICAgICAgICAgICAgICAgICB0aGlzLl9zaWRlYmFyTGlzdEVs
ZW1lbnQuYXBwZW5kQ2hpbGQobGlzdFJvd0VsZW1lbnQpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCFncmFwaFJvd0VsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBncmFwaFJvd0Vs
ZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3codGhpcy5faXRl
bXNHcmFwaHNFbGVtZW50LCBzY2hlZHVsZVJlZnJlc2hDYWxsYmFjaywgcm93SGVpZ2h0KS5lbGVt
ZW50OworICAgICAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRHcmFwaFJvdyh0aGlzLl9jYWxsYmFja3MsIHRoaXMuX2l0ZW1zR3JhcGhz
RWxlbWVudCwgcm93SGVpZ2h0KS5lbGVtZW50OwogICAgICAgICAgICAgICAgIHRoaXMuX2dyYXBo
Um93c0VsZW1lbnQuYXBwZW5kQ2hpbGQoZ3JhcGhSb3dFbGVtZW50KTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgbGlzdFJvd0VsZW1lbnQubGlzdFJvdy51cGRhdGUocmVjb3JkLCBpc0V2
ZW4sIHRoaXMuX2NhbGN1bGF0b3IsIHZpc2libGVUb3ApOwotICAgICAgICAgICAgZ3JhcGhSb3dF
bGVtZW50LmdyYXBoUm93LnVwZGF0ZShyZWNvcmQsIGlzRXZlbiwgdGhpcy5fY2FsY3VsYXRvciwg
d2lkdGgsIGV4cGFuZE9mZnNldCwgaSk7CisgICAgICAgICAgICBsaXN0Um93RWxlbWVudC5yb3cu
dXBkYXRlKHJlY29yZCwgaXNFdmVuLCB0aGlzLl9jYWxjdWxhdG9yLCB2aXNpYmxlVG9wKTsKKyAg
ICAgICAgICAgIGdyYXBoUm93RWxlbWVudC5yb3cudXBkYXRlKHJlY29yZCwgaXNFdmVuLCB0aGlz
Ll9jYWxjdWxhdG9yLCB3aWR0aCwgZXhwYW5kT2Zmc2V0LCBpKTsKIAogICAgICAgICAgICAgbGlz
dFJvd0VsZW1lbnQgPSBsaXN0Um93RWxlbWVudC5uZXh0U2libGluZzsKICAgICAgICAgICAgIGdy
YXBoUm93RWxlbWVudCA9IGdyYXBoUm93RWxlbWVudC5uZXh0U2libGluZzsKQEAgLTQ0NCwxMiAr
MzY0LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgLy8gUmVtb3ZlIGV4dHJhIHJvd3MuCiAgICAgICAgIHdoaWxlIChsaXN0Um93RWxlbWVudCkg
ewogICAgICAgICAgICAgdmFyIG5leHRFbGVtZW50ID0gbGlzdFJvd0VsZW1lbnQubmV4dFNpYmxp
bmc7Ci0gICAgICAgICAgICBsaXN0Um93RWxlbWVudC5saXN0Um93LmRpc3Bvc2UoKTsKKyAgICAg
ICAgICAgIGxpc3RSb3dFbGVtZW50LnJvdy5kaXNwb3NlKCk7CiAgICAgICAgICAgICBsaXN0Um93
RWxlbWVudCA9IG5leHRFbGVtZW50OwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChncmFwaFJv
d0VsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciBuZXh0RWxlbWVudCA9IGdyYXBoUm93RWxlbWVu
dC5uZXh0U2libGluZzsKLSAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudC5ncmFwaFJvdy5kaXNw
b3NlKCk7CisgICAgICAgICAgICBncmFwaFJvd0VsZW1lbnQucm93LmRpc3Bvc2UoKTsKICAgICAg
ICAgICAgIGdyYXBoUm93RWxlbWVudCA9IG5leHRFbGVtZW50OwogICAgICAgICB9CiAKQEAgLTQ3
NywxMiArMzk3LDkxIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgLy8gUHJldmVudCB0aGUgY29udGFpbmVyIGZyb20gYmVpbmcgc2Nyb2xsZWQgb2Zm
IHRoZSBlbmQuCiAgICAgICAgIGlmICgodGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3Ag
KyB0aGlzLl9jb250YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodCkgPiB0b3RhbEhlaWdodCArIDEp
CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9ICh0b3RhbEhl
aWdodCAtIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0KTsKKyAgICB9LAorCisg
ICAgX29uQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGFuY2hvciA9
IGV2ZW50LnRhcmdldDsKKyAgICAgICAgd2hpbGUgKGFuY2hvciAhPSB0aGlzLl9jb250YWluZXJF
bGVtZW50ICYmICFhbmNob3Iucm93KQorICAgICAgICAgICAgYW5jaG9yID0gYW5jaG9yLnBhcmVu
dEVsZW1lbnQ7CisgICAgICAgIGlmIChhbmNob3IgIT09IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQp
IHsKKyAgICAgICAgICAgIHRoaXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CisgICAgICAgICAg
ICB0aGlzLl9zaG93UmVjb3JkRGV0YWlscyhhbmNob3IpOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIF9tb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGFuY2hv
ciA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgd2hpbGUgKGFuY2hvciAhPSB0aGlzLl9jb250YWlu
ZXJFbGVtZW50ICYmICFhbmNob3Iucm93KQorICAgICAgICAgICAgYW5jaG9yID0gYW5jaG9yLnBh
cmVudEVsZW1lbnQ7CisgICAgICAgIHZhciBkZXRhaWxzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucmVjb3JkRGV0YWlsczsKKyAgICAgICAgaWYgKCEoZGV0YWlscyAmJiBkZXRhaWxzLmlz
VmlzaWJsZSkpIHsKKyAgICAgICAgICAgIGlmIChhbmNob3Iucm93ICYmIGFuY2hvci5yb3cuX3Jl
Y29yZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFNob3dEZXRhaWxzVGltZXIoYW5jaG9y
LCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5zaG93RGV0YWlsc0RlbGF5KTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9raWxsU2hvd0RldGFpbHNUaW1lcigpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCEoYW5jaG9yLnJvdyAmJiBhbmNob3Iu
cm93Ll9yZWNvcmQpKSAvLyBiYWNrZ3JvdW5kCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBI
aWRlRGV0YWlsc1RpbWVyKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYg
KGRldGFpbHMuYW5jaG9yID09PSBhbmNob3IpCisgICAgICAgICAgICAgICAgICAgIGRldGFpbHMu
a2lsbEhpZGVUaW1lcigpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9zZXR1cEhpZGVEZXRhaWxzVGltZXIoKTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fc2V0dXBTaG93RGV0YWlsc1RpbWVyKGFuY2hvciwgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwuc2hvd0RldGFpbHNEZWxheSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKKyAgICBfc2V0dXBIaWRl
RGV0YWlsc1RpbWVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZGV0YWlscyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHM7CisgICAgICAgIGlmIChkZXRh
aWxzICYmIGRldGFpbHMuaXNWaXNpYmxlICYmICghZGV0YWlscy5oaWRlRGVsYXkgfHwgZGV0YWls
cy5oaWRlRGVsYXkgPiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5oaWRlRGV0YWlsc0lmTW91
c2VNb3ZlZERlbGF5KSkKKyAgICAgICAgICAgIGRldGFpbHMuaGlkZUFmdGVyRGVsYXkoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuaGlkZURldGFpbHNJZk1vdXNlTW92ZWREZWxheSk7CisgICAg
fSwKKworICAgIF9zZXR1cFNob3dEZXRhaWxzVGltZXI6IGZ1bmN0aW9uKGFuY2hvciwgdGltZW91
dCkKKyAgICB7CisgICAgICAgIHRoaXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CisgICAgICAg
IHRoaXMuX3Nob3dSZWNvcmREZXRhaWxzVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3Nob3dSZWNv
cmREZXRhaWxzLmJpbmQodGhpcywgYW5jaG9yKSwgdGltZW91dCk7CisgICAgfSwKKworICAgIF9r
aWxsU2hvd0RldGFpbHNUaW1lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X3Nob3dSZWNvcmREZXRhaWxzVGltZXIpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlz
Ll9zaG93UmVjb3JkRGV0YWlsc1RpbWVyKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaG93
UmVjb3JkRGV0YWlsc1RpbWVyOworICAgICAgICB9CisgICAgfSwKKworICAgIF9zaG93UmVjb3Jk
RGV0YWlsczogZnVuY3Rpb24oYW5jaG9yKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xvc2VSZWNv
cmREZXRhaWxzKCk7CisgICAgICAgIHRoaXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CisgICAg
ICAgIHZhciByZWNvcmQgPSBhbmNob3Iucm93ID8gYW5jaG9yLnJvdy5fcmVjb3JkIDogbnVsbDsK
KyAgICAgICAgaWYgKHJlY29yZCkgeworICAgICAgICAgICAgdmFyIGRldGFpbHMgPSBuZXcgV2Vi
SW5zcGVjdG9yLlBvcG92ZXIocmVjb3JkLl9nZW5lcmF0ZVBvcHVwQ29udGVudCh0aGlzLl9jYWxj
dWxhdG9yKSk7CisgICAgICAgICAgICBkZXRhaWxzLmhpZGVXaGVuQ2xpY2tlZCgpOworICAgICAg
ICAgICAgZGV0YWlscy5oaWRlQWZ0ZXJEZWxheShXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5o
aWRlRGV0YWlsc0RlbGF5KTsKKyAgICAgICAgICAgIGRldGFpbHMuc2hvdyhhbmNob3IpOworICAg
ICAgICAgICAgZGV0YWlscy5hbmNob3IgPSBhbmNob3I7CisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5yZWNvcmREZXRhaWxzID0gZGV0YWlsczsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICBfY2xvc2VSZWNvcmREZXRhaWxzOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWlscykgeworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWlscy5oaWRlKCk7Cisg
ICAgICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWls
czsKKyAgICAgICAgfQogICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGU7CiAKLQogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnkgPSBmdW5jdGlvbihuYW1lLCB0aXRsZSwgY29sb3Ip
CiB7CiAgICAgdGhpcy5uYW1lID0gbmFtZTsKQEAgLTQ5MCw3ICs0ODksNiBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVDYXRlZ29yeSA9IGZ1bmN0aW9uKG5hbWUsIHRpdGxlLCBjb2xvcikKICAgICB0
aGlzLmNvbG9yID0gY29sb3I7CiB9CiAKLQogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRv
ciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLnJlc2V0KCk7CkBAIC01MzgsMTAgKzUzNiwxMSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIH0KIAogCi1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdyA9IGZ1bmN0aW9uKGNhbGxiYWNrcykKIHsKKyAgICB0
aGlzLl9jYWxsYmFja3MgPSBjYWxsYmFja3M7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5lbGVtZW50Lmxpc3RSb3cgPSB0aGlzOwor
ICAgIHRoaXMuZWxlbWVudC5yb3cgPSB0aGlzOwogICAgIHRoaXMuZWxlbWVudC5zdHlsZS5jdXJz
b3IgPSAicG9pbnRlciI7CiAgICAgdmFyIGljb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwogICAgIGljb25FbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS10cmVl
LWljb24iOwpAQCAtNTY0LDcgKzU2Myw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExp
c3RSb3cgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNlcGFyYXRv
ckVsZW1lbnQpOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhRWxlbWVu
dCk7CiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlcGVhdENvdW50RWxlbWVu
dCk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25D
bGljay5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCBjYWxsYmFja3MuX29uQ2xpY2spOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZW1vdmUiLCBjYWxsYmFja3MuX21vdXNlTW92ZSwgZmFsc2UpOwogfQogCiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnByb3RvdHlwZSA9IHsKQEAgLTU3NywxMyAr
NTc3LDEwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLXRyZWUtaXRlbSB0
aW1lbGluZS1jYXRlZ29yeS0iICsgcmVjb3JkLmNhdGVnb3J5Lm5hbWUgKyAoaXNFdmVuID8gIiBl
dmVuIiA6ICIiKTsKICAgICAgICAgdGhpcy5fdHlwZUVsZW1lbnQudGV4dENvbnRlbnQgPSByZWNv
cmQudGl0bGU7CiAKLSAgICAgICAgaWYgKHJlY29yZC5kZXRhaWxzKSB7CisgICAgICAgIGlmIChy
ZWNvcmQuZGV0YWlscykKICAgICAgICAgICAgIHRoaXMuX2RhdGFFbGVtZW50LnRleHRDb250ZW50
ID0gIigiICsgcmVjb3JkLmRldGFpbHMgKyAiKSI7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhRWxl
bWVudC50aXRsZSA9IHJlY29yZC5kZXRhaWxzOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBl
bHNlCiAgICAgICAgICAgICB0aGlzLl9kYXRhRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwotICAg
ICAgICAgICAgdGhpcy5fZGF0YUVsZW1lbnQudGl0bGUgPSAiIjsKLSAgICAgICAgfQogCiAgICAg
ICAgIGlmIChyZWNvcmQuY291bnQgPiAxKQogICAgICAgICAgICAgdGhpcy5fcmVwZWF0Q291bnRF
bGVtZW50LnRleHRDb250ZW50ID0gIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyByZWNvcmQuY291bnQ7
CkBAIC01OTEsOTYgKzU4OCwxNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3JlcGVhdENvdW50RWxlbWVudC50ZXh0
Q29udGVudCA9ICIiOwogICAgIH0sCiAKLSAgICBfY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29udGVu
dCwgc3R5bGVOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsYWJlbCIpOwotICAgICAgICB0ZXh0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKGNvbnRlbnQpKTsKLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0ZCIpOwotICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1kZXRhaWxz
IjsKLSAgICAgICAgaWYgKHN0eWxlTmFtZSkKLSAgICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSAr
PSAiICIgKyBzdHlsZU5hbWU7Ci0gICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb250ZW50Owot
ICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0gICAgX2NyZWF0ZVJvdzogZnVuY3Rpb24o
dGl0bGUsIGNvbnRlbnQpCi0gICAgewotICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidHIiKTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwo
dGl0bGUsICJ0aW1lbGluZS1kZXRhaWxzLXJvdy10aXRsZSIpKTsKLSAgICAgICAgcm93LmFwcGVu
ZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoY29udGVudCwgInRpbWVsaW5lLWRldGFpbHMtcm93LWRh
dGEiKSk7Ci0gICAgICAgIHJldHVybiByb3c7Ci0gICAgfSwKLQotICAgIF9jcmVhdGVMaW5rUm93
OiBmdW5jdGlvbih0aXRsZSwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciByb3cgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlQ2VsbCh0aXRsZSwgInRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIikpOwotICAgICAg
ICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIGNlbGwu
YXBwZW5kQ2hpbGQoY29udGVudCk7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLSAg
ICAgICAgcmV0dXJuIHJvdzsKLSAgICB9LAotCi0gICAgX2dlbmVyYXRlQnViYmxlQ29udGVudDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGJ1YmJsZUNvbnRlbnRUYWJsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7Ci0gICAgICAgIHZhciB0aXRsZUNlbGwgPSB0aGlz
Ll9jcmVhdGVDZWxsKFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgLSBEZXRhaWxzIiwgdGhpcy5f
cmVjb3JkLnRpdGxlKSwgInRpbWVsaW5lLWRldGFpbHMtdGl0bGUiKTsKLSAgICAgICAgdGl0bGVD
ZWxsLmNvbFNwYW4gPSAyOwotICAgICAgICB0aXRsZUNlbGwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaHIiKSk7Ci0gICAgICAgIHZhciB0aXRsZVJvdyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgICAgIHRpdGxlUm93LmFwcGVuZENoaWxkKHRpdGxlQ2Vs
bCk7Ci0gICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aXRsZVJvdyk7Ci0g
ICAgICAgIHZhciB0ZXh0ID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9yZWNvcmQuZW5k
VGltZSAtIHRoaXMuX3JlY29yZC5zdGFydFRpbWUpICsgIiAoQCIgKwotICAgICAgICAgICAgdGhp
cy5fY2FsY3VsYXRvci5mb3JtYXRWYWx1ZSh0aGlzLl9yZWNvcmQuc3RhcnRUaW1lIC0gdGhpcy5f
Y2FsY3VsYXRvci5taW5pbXVtQm91bmRhcnkpICsgIikiOwotICAgICAgICBidWJibGVDb250ZW50
VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RHVyYXRpb24iKSwgdGV4dCkpOwotCi0gICAgICAgIGlmICh0aGlzLl9yZWNvcmQuZGV0YWlscykg
ewotICAgICAgICAgICAgaWYgKCB0aGlzLl9yZWNvcmQudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbCB8fAotICAgICAgICAgICAgICAgICB0
aGlzLl9yZWNvcmQudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBl
LlRpbWVyRmlyZSB8fAotICAgICAgICAgICAgICAgICB0aGlzLl9yZWNvcmQudHlwZSA9PSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlKSB7Ci0gICAgICAg
ICAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVySWQiKSwgdGhpcy5fcmVjb3JkLmRhdGEudGltZXJJ
ZCkpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9yZWNvcmQudGltZW91dCkgewotICAgICAg
ICAgICAgICAgICAgICBidWJibGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRl
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZW91dCIpLCB0aGlzLl9yZWNvcmQudGltZW91
dCkpOwotICAgICAgICAgICAgICAgICAgICBidWJibGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQo
dGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwZWF0cyIpLCAhdGhpcy5f
cmVjb3JkLnNpbmdsZVNob3QpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
aWYgKHRoaXMuX3JlY29yZC5jYWxsU2l0ZVNjcmlwdExpbmUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuX3Jl
Y29yZC5jYWxsU2l0ZVNjcmlwdE5hbWUsICJzY3JpcHRzIiwgdGhpcy5fcmVjb3JkLmNhbGxTaXRl
U2NyaXB0TGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBl
bmRDaGlsZCh0aGlzLl9jcmVhdGVMaW5rUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbCBT
aXRlIiksIGxpbmspKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KCB0aGlzLl9yZWNvcmQudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRU
eXBlLkZ1bmN0aW9uQ2FsbCApIHsKLSAgICAgICAgICAgICAgICB2YXIgbGluayA9IFdlYkluc3Bl
Y3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodGhpcy5fcmVjb3JkLmRhdGEuc2NyaXB0TmFtZSwg
InNjcmlwdHMiLCB0aGlzLl9yZWNvcmQuZGF0YS5zY3JpcHRMaW5lKTsKLSAgICAgICAgICAgICAg
ICBidWJibGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIiksIGxpbmspKTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9j
cmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZXRhaWxzIiksIHRoaXMuX3JlY29yZC5k
ZXRhaWxzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fcmVjb3JkLmNhbGxlclNj
cmlwdE5hbWUpIHsKLSAgICAgICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlS
ZXNvdXJjZUFzTm9kZSh0aGlzLl9yZWNvcmQuY2FsbGVyU2NyaXB0TmFtZSwgInNjcmlwdHMiLCB0
aGlzLl9yZWNvcmQuY2FsbGVyU2NyaXB0TGluZSk7Ci0gICAgICAgICAgICBidWJibGVDb250ZW50
VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNhbGxlciIpLCBsaW5rKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGJ1YmJsZUNv
bnRlbnRUYWJsZTsKLSAgICB9LAotCi0gICAgX29uQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX3JlY29yZCkgewotICAgICAgICAgICAgdmFyIGRldGFpbHMg
PSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIodGhpcy5fZ2VuZXJhdGVCdWJibGVDb250ZW50KCkp
OwotICAgICAgICAgICAgZGV0YWlscy5oaWRlV2hlbkNsaWNrZWQoKTsKLSAgICAgICAgICAgIGRl
dGFpbHMuc2hvdyh0aGlzLmVsZW1lbnQpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucmVjb3JkRGV0YWlscyA9IGRldGFpbHM7Ci0gICAgICAgIH0KLSAgICB9LAotCiAg
ICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVu
dEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKICAgICB9CiB9CiAKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0gZnVuY3Rpb24oZ3JhcGhDb250YWluZXIsIHJl
ZnJlc2hDYWxsYmFjaywgcm93SGVpZ2h0KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3Jh
cGhSb3cgPSBmdW5jdGlvbihjYWxsYmFja3MsIGdyYXBoQ29udGFpbmVyLCByb3dIZWlnaHQpCiB7
CisgICAgdGhpcy5fY2FsbGJhY2tzID0gY2FsbGJhY2tzOwogICAgIHRoaXMuZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxlbWVudC5ncmFwaFJvdyA9
IHRoaXM7CisgICAgdGhpcy5lbGVtZW50LnJvdyA9IHRoaXM7CiAKICAgICB0aGlzLl9iYXJBcmVh
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckFy
ZWFFbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1ncmFwaC1iYXItYXJlYSI7CkBAIC02ODgs
NiArNjA2LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cgPSBmdW5jdGlv
bihncmFwaENvbnRhaW5lciwgcmVmcmVzaENhbGxiYWNrLAogCiAgICAgdGhpcy5fYmFyRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckVsZW1lbnQu
Y2xhc3NOYW1lID0gInRpbWVsaW5lLWdyYXBoLWJhciI7CisgICAgdGhpcy5fYmFyRWxlbWVudC5y
b3cgPSB0aGlzOworICAgIHRoaXMuX2JhckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCBjYWxsYmFja3MuX29uQ2xpY2spOworICAgIHRoaXMuX2JhckVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vtb3ZlIiwgY2FsbGJhY2tzLl9tb3VzZU1vdmUpOwogICAgIHRoaXMuX2JhckFy
ZWFFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JhckVsZW1lbnQpOwogCiAgICAgdGhpcy5fZXhw
YW5kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtNjk5LDcgKzYy
MCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0gZnVuY3Rpb24oZ3Jh
cGhDb250YWluZXIsIHJlZnJlc2hDYWxsYmFjaywKICAgICB0aGlzLl9leHBhbmRFbGVtZW50LmFw
cGVuZENoaWxkKGxlZnRCb3JkZXIpOwogCiAgICAgdGhpcy5fZXhwYW5kRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xpY2suYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5f
cmVmcmVzaENhbGxiYWNrID0gcmVmcmVzaENhbGxiYWNrOwogICAgIHRoaXMuX3Jvd0hlaWdodCA9
IHJvd0hlaWdodDsKIH0KIApAQCAtNzM2LDcgKzY1Niw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZEdyYXBoUm93LnByb3RvdHlwZSA9IHsKICAgICBfb25DbGljazogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmQuY29sbGFwc2VkID0gIXRoaXMuX3JlY29y
ZC5jb2xsYXBzZWQ7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hDYWxsYmFjaygpOworICAgICAgICB0
aGlzLl9jYWxsYmFja3MuX3NjaGVkdWxlUmVmcmVzaCgpOwogICAgIH0sCiAKICAgICBkaXNwb3Nl
OiBmdW5jdGlvbigpCkBAIC03NDUsMyArNjY1LDE1NSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRHcmFwaFJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2V4cGFuZEVsZW1lbnQu
cGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9leHBhbmRFbGVtZW50KTsKICAgICB9CiB9
CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZCA9IGZ1bmN0aW9u
KHJlY29yZCwgcmVjb3JkU3R5bGVzLCBzZW5kUmVxdWVzdFJlY29yZHMsIHRpbWVyUmVjb3JkcykK
K3sKKyAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNv
cmRUeXBlOworICAgIHZhciBzdHlsZSA9IHJlY29yZFN0eWxlc1tyZWNvcmQudHlwZV07CisKKyAg
ICB0aGlzLmNhdGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7CisgICAgdGhpcy50aXRsZSA9IHN0eWxl
LnRpdGxlOworICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZSAvIDEwMDA7Cisg
ICAgdGhpcy5kYXRhID0gcmVjb3JkLmRhdGE7CisgICAgdGhpcy5jb3VudCA9IDE7CisgICAgdGhp
cy50eXBlID0gcmVjb3JkLnR5cGU7CisgICAgdGhpcy5lbmRUaW1lID0gKHR5cGVvZiByZWNvcmQu
ZW5kVGltZSAhPT0gInVuZGVmaW5lZCIpID8gcmVjb3JkLmVuZFRpbWUgLyAxMDAwIDogdGhpcy5z
dGFydFRpbWU7CisgICAgdGhpcy5vcmlnaW5hbFJlY29yZEZvclRlc3RzID0gcmVjb3JkOworICAg
IHRoaXMuY2FsbGVyU2NyaXB0TmFtZSA9IHJlY29yZC5jYWxsZXJTY3JpcHROYW1lOworICAgIHRo
aXMuY2FsbGVyU2NyaXB0TGluZSA9IHJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOworCisgICAgLy8g
TWFrZSByZXNvdXJjZSByZWNlaXZlIHJlY29yZCBsYXN0IHNpbmNlIHJlcXVlc3Qgd2FzIHNlbnQ7
IG1ha2UgZmluaXNoIHJlY29yZCBsYXN0IHNpbmNlIHJlc3BvbnNlIHJlY2VpdmVkLgorICAgIGlm
IChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdCkgeworICAg
ICAgICBzZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl0gPSB0aGlzOwor
ICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2
ZVJlc3BvbnNlKSB7CisgICAgICAgIHZhciBzZW5kUmVxdWVzdFJlY29yZCA9IHNlbmRSZXF1ZXN0
UmVjb3Jkc1tyZWNvcmQuZGF0YS5pZGVudGlmaWVyXTsKKyAgICAgICAgaWYgKHNlbmRSZXF1ZXN0
UmVjb3JkKSB7IC8vIEZhbHNlIGlmIHdlIHN0YXJ0ZWQgaW5zdHJ1bWVudGF0aW9uIGluIHRoZSBt
aWRkbGUgb2YgcmVxdWVzdC4KKyAgICAgICAgICAgIHNlbmRSZXF1ZXN0UmVjb3JkLl9yZXNwb25z
ZVJlY2VpdmVkRm9ybWF0dGVkVGltZSA9IHRoaXMuc3RhcnRUaW1lOworICAgICAgICAgICAgdGhp
cy5zdGFydFRpbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5zdGFydFRpbWU7CisgICAgICAgICAgICB0
aGlzLmRldGFpbHMgPSB0aGlzLl9nZXRSZWNvcmREZXRhaWxzKHNlbmRSZXF1ZXN0UmVjb3JkLCBz
ZW5kUmVxdWVzdFJlY29yZHMpOworICAgICAgICAgICAgdGhpcy5jYWxsZXJTY3JpcHROYW1lID0g
c2VuZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKKyAgICAgICAgICAgIHRoaXMuY2Fs
bGVyU2NyaXB0TGluZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNjcmlwdExpbmU7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJj
ZUZpbmlzaCkgeworICAgICAgICB2YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSBzZW5kUmVxdWVzdFJl
Y29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl07CisgICAgICAgIGlmIChzZW5kUmVxdWVzdFJl
Y29yZCkgey8vIEZhbHNlIGZvciBtYWluIHJlc291cmNlLgorICAgICAgICAgICAgdGhpcy5zdGFy
dFRpbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5fcmVzcG9uc2VSZWNlaXZlZEZvcm1hdHRlZFRpbWU7
CisgICAgICAgICAgICB0aGlzLmNhbGxlclNjcmlwdE5hbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5j
YWxsZXJTY3JpcHROYW1lOworICAgICAgICAgICAgdGhpcy5jYWxsZXJTY3JpcHRMaW5lID0gc2Vu
ZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlRpbWVySW5zdGFsbCkgeworICAgICAgICB0
aGlzLnRpbWVvdXQgPSByZWNvcmQuZGF0YS50aW1lb3V0OworICAgICAgICB0aGlzLnNpbmdsZVNo
b3QgPSByZWNvcmQuZGF0YS5zaW5nbGVTaG90OworICAgICAgICB0aW1lclJlY29yZHNbcmVjb3Jk
LmRhdGEudGltZXJJZF0gPSB0aGlzOworICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJl
Y29yZFR5cGVzLlRpbWVyRmlyZSkgeworICAgICAgICB2YXIgdGltZXJJbnN0YWxsZWRSZWNvcmQg
PSB0aW1lclJlY29yZHNbcmVjb3JkLmRhdGEudGltZXJJZF07CisgICAgICAgIGlmICh0aW1lcklu
c3RhbGxlZFJlY29yZCkgeworICAgICAgICAgICAgdGhpcy5jYWxsU2l0ZVNjcmlwdE5hbWUgPSB0
aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3JpcHROYW1lOworICAgICAgICAgICAgdGhpcy5j
YWxsU2l0ZVNjcmlwdExpbmUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3JpcHRMaW5l
OworICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gdGltZXJJbnN0YWxsZWRSZWNvcmQudGltZW91
dDsKKyAgICAgICAgICAgIHRoaXMuc2luZ2xlU2hvdCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnNp
bmdsZVNob3Q7CisgICAgICAgIH0KKyAgICB9CisgICAgdGhpcy5kZXRhaWxzID0gdGhpcy5fZ2V0
UmVjb3JkRGV0YWlscyhyZWNvcmQsIHNlbmRSZXF1ZXN0UmVjb3Jkcyk7Cit9CisKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CisgICAgX2Ny
ZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbnRlbnQsIHN0eWxlTmFtZSkKKyAgICB7CisgICAgICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKKyAgICAgICAgdGV4dC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7CisgICAgICAgIHZh
ciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgY2VsbC5jbGFz
c05hbWUgPSAidGltZWxpbmUtZGV0YWlscyI7CisgICAgICAgIGlmIChzdHlsZU5hbWUpCisgICAg
ICAgICAgICBjZWxsLmNsYXNzTmFtZSArPSAiICIgKyBzdHlsZU5hbWU7CisgICAgICAgIGNlbGwu
dGV4dENvbnRlbnQgPSBjb250ZW50OworICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9LAorCisg
ICAgX2NyZWF0ZVJvdzogZnVuY3Rpb24odGl0bGUsIGNvbnRlbnQpCisgICAgeworICAgICAgICB2
YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgcm93LmFwcGVu
ZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0aW1lbGluZS1kZXRhaWxzLXJvdy10aXRs
ZSIpKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoY29udGVudCwg
InRpbWVsaW5lLWRldGFpbHMtcm93LWRhdGEiKSk7CisgICAgICAgIHJldHVybiByb3c7CisgICAg
fSwKKworICAgIF9jcmVhdGVMaW5rUm93OiBmdW5jdGlvbih0aXRsZSwgY29udGVudCkKKyAgICB7
CisgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2VsbCh0aXRsZSwgInRpbWVsaW5lLWRldGFp
bHMtcm93LXRpdGxlIikpOworICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRkIik7CisgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoY29udGVudCk7CisgICAgICAgIHJv
dy5hcHBlbmRDaGlsZChjZWxsKTsKKyAgICAgICAgcmV0dXJuIHJvdzsKKyAgICB9LAorCisgICAg
X2dlbmVyYXRlUG9wdXBDb250ZW50OiBmdW5jdGlvbihjYWxjdWxhdG9yKQorICAgIHsKKyAgICAg
ICAgdmFyIHJlY29yZENvbnRlbnRUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxl
Iik7CisgICAgICAgIHZhciB0aXRsZUNlbGwgPSB0aGlzLl9jcmVhdGVDZWxsKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiJXMgLSBEZXRhaWxzIiwgdGhpcy50aXRsZSksICJ0aW1lbGluZS1kZXRhaWxz
LXRpdGxlIik7CisgICAgICAgIHRpdGxlQ2VsbC5jb2xTcGFuID0gMjsKKyAgICAgICAgdmFyIHRp
dGxlUm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgdGl0bGVSb3cu
YXBwZW5kQ2hpbGQodGl0bGVDZWxsKTsKKyAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVu
ZENoaWxkKHRpdGxlUm93KTsKKyAgICAgICAgdmFyIHRleHQgPSBOdW1iZXIuc2Vjb25kc1RvU3Ry
aW5nKHRoaXMuZW5kVGltZSAtIHRoaXMuc3RhcnRUaW1lKSArICIgKEAiICsKKyAgICAgICAgY2Fs
Y3VsYXRvci5mb3JtYXRWYWx1ZSh0aGlzLnN0YXJ0VGltZSAtIGNhbGN1bGF0b3IubWluaW11bUJv
dW5kYXJ5KSArICIpIjsKKyAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRo
aXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIiksIHRleHQpKTsK
KworICAgICAgICBpZiAodGhpcy5kZXRhaWxzKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMudHlw
ZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbCB8
fAorICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLlRpbWVyRmlyZSB8fAorICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9PSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlKSB7CisgICAg
ICAgICAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVySWQiKSwgdGhpcy5kYXRhLnRpbWVySWQpKTsK
KyAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7CisgICAgICAgICAgICAgICAgICAg
IHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUaW1lb3V0IiksIHRoaXMudGltZW91dCkpOworICAgICAgICAgICAgICAg
ICAgICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVwZWF0cyIpLCAhdGhpcy5zaW5nbGVTaG90KSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhbGxTaXRlU2NyaXB0TGluZSkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5saW5raWZ5UmVz
b3VyY2VBc05vZGUodGhpcy5jYWxsU2l0ZVNjcmlwdE5hbWUsICJzY3JpcHRzIiwgdGhpcy5jYWxs
U2l0ZVNjcmlwdExpbmUsICJ0aW1lbGluZS1kZXRhaWxzIik7CisgICAgICAgICAgICAgICAgICAg
IHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVMaW5rUm93KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2FsbCBTaXRlIiksIGxpbmspKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGwgKSB7CisgICAgICAgICAgICAgICAgdmFy
IGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuZGF0YS5zY3Jp
cHROYW1lLCAic2NyaXB0cyIsIHRoaXMuZGF0YS5zY3JpcHRMaW5lLCAidGltZWxpbmUtZGV0YWls
cyIpOworICAgICAgICAgICAgICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlz
Ll9jcmVhdGVMaW5rUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRpb24iKSwgbGluaykp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVjb3JkQ29udGVudFRhYmxl
LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRldGFp
bHMiKSwgdGhpcy5kZXRhaWxzKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5jYWxs
ZXJTY3JpcHROYW1lKSB7CisgICAgICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5saW5r
aWZ5UmVzb3VyY2VBc05vZGUodGhpcy5jYWxsZXJTY3JpcHROYW1lLCAic2NyaXB0cyIsIHRoaXMu
Y2FsbGVyU2NyaXB0TGluZSk7CisgICAgICAgICAgICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5k
Q2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGxlciIp
LCBsaW5rKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlY29yZENvbnRlbnRUYWJsZTsK
KyAgICB9LAorCisgICAgX2dldFJlY29yZERldGFpbHM6IGZ1bmN0aW9uKHJlY29yZCwgc2VuZFJl
cXVlc3RSZWNvcmRzKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChyZWNvcmQudHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkZ1bmN0
aW9uQ2FsbDoKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1l
Rm9yVVJMKHJlY29yZC5kYXRhLnNjcmlwdE5hbWUgKyAiOiIgKyByZWNvcmQuZGF0YS5zY3JpcHRM
aW5lKTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3Jk
VHlwZS5FdmVudERpc3BhdGNoOgorICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0YSA/
IHJlY29yZC5kYXRhLnR5cGUgOiAiIjsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5QYWludDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVj
b3JkLmRhdGEud2lkdGggKyAiXHUyMDA5XHUwMGQ3XHUyMDA5IiArIHJlY29yZC5kYXRhLmhlaWdo
dDsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlw
ZS5UaW1lckluc3RhbGw6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFn
ZW50LlJlY29yZFR5cGUuVGltZXJSZW1vdmU6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJGaXJlOgorICAgICAgICAgICAgICAgIHJl
dHVybiByZWNvcmQuZGF0YS50aW1lcklkOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlhIUlJlYWR5U3RhdGVDaGFuZ2U6CisgICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuWEhSTG9hZDoKKyAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5FdmFs
dWF0ZVNjcmlwdDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQu
UmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0OgorICAgICAgICAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwocmVjb3JkLmRhdGEudXJsKTsKKyAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVJl
Y2VpdmVSZXNwb25zZToKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaDoKKyAgICAgICAgICAgICAgICB2YXIgc2VuZFJl
cXVlc3RSZWNvcmQgPSBzZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl07
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXF1ZXN0UmVjb3JkID8gV2ViSW5zcGVjdG9y
LmRpc3BsYXlOYW1lRm9yVVJMKHNlbmRSZXF1ZXN0UmVjb3JkLmRhdGEudXJsKSA6ICIiOworICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLk1hcmtU
aW1lbGluZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmRhdGEubWVzc2FnZTsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9
CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmlu
ZGV4IGNmNTFiZDguLjcwMWQxYWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCkBAIC0zNTY3LDcgKzM1NjcsOCBAQCBib2R5LmluYWN0aXZlIC5zaWRlYmFyLXRy
ZWUtaXRlbS5zZWxlY3RlZCAuYnViYmxlLnNlYXJjaC1tYXRjaGVzIHsKICAgICBtaW4td2lkdGg6
IDVweDsKICAgICBvcGFjaXR5OiAwLjg7CiAgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJ
bWFnZXMvdGltZWxpbmVCYXJHcmF5LnBuZykgNCA0IDUgNDsKLSAgICBwb2ludGVyLWV2ZW50czog
bm9uZTsKKyAgICB6LWluZGV4OiAxODA7CisgICAgcG9pbnRlci1ldmVudHM6IHZpc2libGVGaWxs
OwogfQogCiAudGltZWxpbmUtZ3JhcGgtc2lkZS5ldmVuIHsKQEAgLTM4NDgsNiArMzg0OSwxMCBA
QCBvbC5icmVha3BvaW50LWxpc3QgewogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1
NSwgMTk0KTsKIH0KIAorLnRpbWVsaW5lLWRldGFpbHMgeworICAgIC13ZWJraXQtdXNlci1zZWxl
Y3Q6IHRleHQ7Cit9CisKIC50aW1lbGluZS1kZXRhaWxzLXJvdy10aXRsZSB7CiAgICAgZm9udC13
ZWlnaHQ6IGJvbGQ7CiAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CkBAIC0zODYxLDQgKzM4NjYsMTAg
QEAgb2wuYnJlYWtwb2ludC1saXN0IHsKIC50aW1lbGluZS1kZXRhaWxzLXRpdGxlIHsKICAgICBm
b250LXdlaWdodDogYm9sZDsKICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwotfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKKyAgICBvdmVy
ZmxvdzogaGlkZGVuOworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBwYWRkaW5nLWxlZnQ6IDEw
cHg7CisgICAgcGFkZGluZy1ib3R0b206IDVweDsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29s
aWQgcmdiKDE5NCwxOTQsMTQ3KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50022</attachid>
            <date>2010-03-04 07:37:32 -0800</date>
            <delta_ts>2010-03-04 09:35:23 -0800</delta_ts>
            <desc>Rebased version of third patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>41337</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKaW5kZXggODY2Y2IyNC4uNmEwMTU2
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKQEAgLTM4LDYgKzM4LDkg
QEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBmdW5jdGlvbihjb250ZW50RWxlbWVudCkKICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQpOwogCiAgICAg
dGhpcy5jb250ZW50RWxlbWVudCA9IGNvbnRlbnRFbGVtZW50OworICAgIHRoaXMuX2NvbnRlbnRE
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9jb250ZW50RGl2
LmNsYXNzTmFtZSA9ICJjb250ZW50IjsKKyAgICB0aGlzLl9jb250ZW50RGl2LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlT3ZlckNvbnRlbnQuYmluZCh0aGlzKSk7CiB9
CiAKIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKQEAgLTU0LDE4ICs1NywzMCBA
QCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBwcmVmZXJy
ZWRXaWR0aCA9IHByZWZlcnJlZFdpZHRoIHx8IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0V2lk
dGg7CiAgICAgICAgIHZhciBwcmVmZXJyZWRIZWlnaHQgPSBwcmVmZXJyZWRIZWlnaHQgfHwgdGhp
cy5jb250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CiAKLSAgICAgICAgdmFyIGNvbnRlbnREaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudERpdi5jbGFz
c05hbWUgPSAiY29udGVudCI7Ci0gICAgICAgIGNvbnRlbnREaXYuYXBwZW5kQ2hpbGQodGhpcy5j
b250ZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50
RGl2KTsKKyAgICAgICAgdGhpcy5fY29udGVudERpdi5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRF
bGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRE
aXYpOwogICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CiAg
ICAgICAgIHRoaXMuX3Bvc2l0aW9uRWxlbWVudChhbmNob3IsIHByZWZlcnJlZFdpZHRoLCBwcmVm
ZXJyZWRIZWlnaHQpOwogICAgIH0sCiAKKyAgICBfbW91c2VPdmVyQ29udGVudDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmtpbGxIaWRlVGltZXIoKTsKKyAgICAgICAgZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfSwKKwogICAgIGhpZGU6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQ7
Ci0gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5raWxsSGlkZVRpbWVyKCk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5fcG9wb3ZlckVsZW1lbnQpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuUG9w
b3Zlci5fcG9wb3ZlckVsZW1lbnQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgZ2V0IGlzVmlzaWJs
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlBvcG92ZXIuX3BvcG92ZXJF
bGVtZW50ID8gdHJ1ZSA6IGZhbHNlOwogICAgIH0sCiAKICAgICBoaWRlV2hlbkNsaWNrZWQ6IGZ1
bmN0aW9uKCkKQEAgLTczLDE0ICs4OCwzNSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuaGlkZS5iaW5kKHRoaXMpKTsKICAgICB9LAogCisgICAgaGlkZUFmdGVyRGVsYXk6IGZ1bmN0
aW9uKHRpbWVvdXQpCisgICAgeworICAgICAgICB0aGlzLmtpbGxIaWRlVGltZXIoKTsKKyAgICAg
ICAgdGhpcy5oaWRlRGVsYXkgPSB0aW1lb3V0OworICAgICAgICB0aGlzLl9oaWRlVGltZXIgPSBz
ZXRUaW1lb3V0KHRoaXMuaGlkZS5iaW5kKHRoaXMpLCB0aW1lb3V0KTsKKyAgICB9LAorCisgICAg
a2lsbEhpZGVUaW1lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2hpZGVU
aW1lcikgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lcik7CisgICAg
ICAgICAgICBkZWxldGUgdGhpcy5faGlkZVRpbWVyOworICAgICAgICAgICAgZGVsZXRlIHRoaXMu
aGlkZURlbGF5OworICAgICAgICB9CisgICAgfSwKKworICAgIGdldCBpc0hpZGVBZnRlckRlbGF5
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9oaWRlVGltZXIgPyB0cnVlIDogZmFsc2U7
CisgICAgfSwKKwogICAgIF9wb3NpdGlvbkVsZW1lbnQ6IGZ1bmN0aW9uKGFuY2hvckVsZW1lbnQs
IHByZWZlcnJlZFdpZHRoLCBwcmVmZXJyZWRIZWlnaHQpCiAgICAgewogICAgICAgICBjb25zdCBi
b3JkZXJXaWR0aCA9IDI1OwogICAgICAgICBjb25zdCBzY3JvbGxlcldpZHRoID0gMTE7CiAgICAg
ICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gMTU7Ci0gICAgICAgIGNvbnN0IGFycm93T2Zmc2V0ID0g
MTU7CisgICAgICAgIGNvbnN0IGFycm93T2Zmc2V0ID0gMTA7CiAgICAgICAgIGNvbnN0IGJvcmRl
clJhZGl1cyA9IDEwOwotICAgICAgICAKKwogICAgICAgICAvLyBTa2lubnkgdG9vbHRpcHMgYXJl
IG5vdCBwcmV0dHksIHRoZWlyIGFycm93IGxvY2F0aW9uIGlzIG5vdCBuaWNlLgogICAgICAgICBw
cmVmZXJyZWRXaWR0aCA9IE1hdGgubWF4KHByZWZlcnJlZFdpZHRoLCA1MCk7CiAgICAgICAgIGNv
bnN0IHRvdGFsV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDsKQEAgLTEyMSwyMiArMTU3LDI1IEBA
IFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgaG9yaXpv
bnRhbEFsaWdubWVudDsKICAgICAgICAgaWYgKGFuY2hvckJveC54ICsgbmV3RWxlbWVudFBvc2l0
aW9uLndpZHRoIDwgdG90YWxXaWR0aCkgewotICAgICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9u
LnggPSBNYXRoLm1heChib3JkZXJSYWRpdXMsIGFuY2hvckJveC54IC0gYXJyb3dPZmZzZXQpOwor
ICAgICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSBNYXRoLm1heChib3JkZXJSYWRpdXMs
IGFuY2hvckJveC54IC0gYm9yZGVyUmFkaXVzIC0gYXJyb3dPZmZzZXQpOwogICAgICAgICAgICAg
aG9yaXpvbnRhbEFsaWdubWVudCA9ICJsZWZ0IjsKICAgICAgICAgfSBlbHNlIGlmIChuZXdFbGVt
ZW50UG9zaXRpb24ud2lkdGggKyBib3JkZXJSYWRpdXMgKiAyIDwgdG90YWxXaWR0aCkgewogICAg
ICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSB0b3RhbFdpZHRoIC0gbmV3RWxlbWVudFBv
c2l0aW9uLndpZHRoIC0gYm9yZGVyUmFkaXVzOwogICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWdu
bWVudCA9ICJyaWdodCI7CiAgICAgICAgICAgICAvLyBQb3NpdGlvbiBhcnJvdyBhY2N1cmF0ZWx5
LgotICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUucmlnaHQgPSB0b3Rh
bFdpZHRoIC0gYW5jaG9yQm94LnggLSBhbmNob3JCb3gud2lkdGggLSBib3JkZXJSYWRpdXMgKyAi
cHgiOworICAgICAgICAgICAgdmFyIGFycm93UmlnaHRQb3NpdGlvbiA9IE1hdGgubWF4KDAsIHRv
dGFsV2lkdGggLSBhbmNob3JCb3gueCAtIGFuY2hvckJveC53aWR0aCAtIGJvcmRlclJhZGl1cyAt
IGFycm93T2Zmc2V0KTsKKyAgICAgICAgICAgIGFycm93UmlnaHRQb3NpdGlvbiArPSBhbmNob3JC
b3gud2lkdGggLyAyOworICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUu
cmlnaHQgPSBhcnJvd1JpZ2h0UG9zaXRpb24gKyAicHgiOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSBib3JkZXJSYWRpdXM7Ci0gICAgICAgICAg
ICBuZXdFbGVtZW50UG9zaXRpb24ud2lkdGggPSB0b3RhbFdpZHRoIC0gc2Nyb2xsZXJXaWR0aCAt
IGJvcmRlclJhZGl1cyAqIDI7CisgICAgICAgICAgICBuZXdFbGVtZW50UG9zaXRpb24ud2lkdGgg
PSB0b3RhbFdpZHRoIC0gYm9yZGVyUmFkaXVzICogMjsKICAgICAgICAgICAgIG5ld0VsZW1lbnRQ
b3NpdGlvbi5oZWlnaHQgKz0gc2Nyb2xsZXJXaWR0aDsKICAgICAgICAgICAgIGhvcml6b250YWxB
bGlnbm1lbnQgPSAibGVmdCI7CiAgICAgICAgICAgICBpZiAodmVydGljYWxBbGlnbm1lbnQgPT09
ICJib3R0b20iKQogICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRQb3NpdGlvbi55IC09IHNjcm9s
bGVyV2lkdGg7CiAgICAgICAgICAgICAvLyBQb3NpdGlvbiBhcnJvdyBhY2N1cmF0ZWx5LgotICAg
ICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCA9IGFuY2hvckJveC54
ICsgInB4IjsKKyAgICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQg
PSBNYXRoLm1heCgwLCBhbmNob3JCb3gueCAtIGJvcmRlclJhZGl1cyAqIDIgLSBhcnJvd09mZnNl
dCkgKyAicHgiOworICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVm
dCArPSBhbmNob3JCb3gud2lkdGggLyAyOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTmFtZSA9ICJwb3BvdmVyICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhv
cml6b250YWxBbGlnbm1lbnQgKyAiLWFycm93IjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggMjFhNzZhZi4uZmJkYTQ0NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTQ1LDYgKzQ1LDcgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fY29udGFp
bmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2Nv
bnRhaW5lckVsZW1lbnQuaWQgPSAidGltZWxpbmUtY29udGFpbmVyIjsKICAgICB0aGlzLl9jb250
YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX29uU2Nyb2xsLmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX21vdXNlTW92ZS5iaW5kKHRoaXMpLCBmYWxzZSk7CiAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQpOwogCiAg
ICAgdGhpcy5jcmVhdGVTaWRlYmFyKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQsIHRoaXMuX2NvbnRh
aW5lckVsZW1lbnQpOwpAQCAtODQsOCArODUsMTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fY2FsY3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVDYWxjdWxhdG9yKCk7CiAgICAgdGhpcy5fYm91bmRhcmllc0FyZVZhbGlkID0gdHJ1
ZTsKICAgICB0aGlzLl9zY3JvbGxUb3AgPSAwOworICAgIHRoaXMuX2NhbGxiYWNrcyA9IHt9Owor
ICAgIHRoaXMuX2NhbGxiYWNrcy5fbW91c2VNb3ZlID0gdGhpcy5fbW91c2VNb3ZlLmJpbmQodGhp
cyk7CisgICAgdGhpcy5fY2FsbGJhY2tzLl9vbkNsaWNrID0gdGhpcy5fb25DbGljay5iaW5kKHRo
aXMpOworICAgIHRoaXMuX2NhbGxiYWNrcy5fc2NoZWR1bGVSZWZyZXNoID0gdGhpcy5fc2NoZWR1
bGVSZWZyZXNoLmJpbmQodGhpcywgdHJ1ZSk7CiB9CiAKK1dlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLnNob3dEZXRhaWxzRGVsYXkgPSAxNTAwOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
aGlkZURldGFpbHNEZWxheSA9IDEwMDAwOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuaGlk
ZURldGFpbHNJZk1vdXNlTW92ZWREZWxheSA9IDMwMDsKKwogV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucHJvdG90eXBlID0gewogICAgIHRvb2xiYXJJdGVtQ2xhc3M6ICJ0aW1lbGluZSIsCiAK
QEAgLTExMSw2ICsxMjAsMzIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcmllczsKICAgICB9LAogCisgICAgZ2V0
IF9yZWNvcmRTdHlsZXMoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9yZWNvcmRTdHlsZXNB
cnJheSkgeworICAgICAgICAgICAgdmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZTsKKyAgICAgICAgICAgIHZhciByZWNvcmRTdHlsZXMgPSB7fTsK
KyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXSA9IHsg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZlbnQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0
ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5MYXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQiKSwgY2F0
ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5yZW5kZXJpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3Jp
ZXMucmVuZGVyaW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUGFp
bnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYWludCIpLCBjYXRlZ29yeTog
dGhpcy5jYXRlZ29yaWVzLnJlbmRlcmluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBh
cnNlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OworICAgICAgICAgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVySW5zdGFsbF0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkluc3RhbGwgVGltZXIiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmll
cy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1l
clJlbW92ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1lciIp
LCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OworICAgICAgICAgICAgcmVj
b3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVyRmlyZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlRpbWVyIEZpcmVkIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0
aW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSUmVhZHlTdGF0
ZUNoYW5nZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiBSZWFkeSBTdGF0
ZSBDaGFuZ2UiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAg
ICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5z
Y3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmFsdWF0
ZVNjcmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIFNjcmlw
dCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OworICAgICAgICAgICAg
cmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtUaW1lbGluZV0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk1hcmsiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRp
bmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVNlbmRS
ZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VuZCBSZXF1ZXN0Iiks
IGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OworICAgICAgICAgICAgcmVjb3Jk
U3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlXSA9IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBSZXNwb25zZSIpLCBjYXRlZ29yeTogdGhpcy5j
YXRlZ29yaWVzLmxvYWRpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5SZXNvdXJjZUZpbmlzaF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbmlz
aCBMb2FkaW5nIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OworICAgICAg
ICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkZ1bmN0aW9uQ2FsbF0gPSB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIENhbGwiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0
ZWdvcmllcy5zY3JpcHRpbmcgfTsKKyAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc0FycmF5
ID0gcmVjb3JkU3R5bGVzOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRT
dHlsZXNBcnJheTsKKyAgICB9LAorCiAgICAgX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnM6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMudG9nZ2xlVGltZWxpbmVCdXR0b24gPSBuZXcgV2Vi
SW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwgInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXIt
aXRlbSIpOwpAQCAtMTQ2LDcgKzE4MSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgIF9pbm5lckFkZFJlY29yZFRvVGltZWxpbmU6IGZ1bmN0aW9uKHJl
Y29yZCwgY29sbGVjdGlvbikKICAgICB7Ci0gICAgICAgIHZhciBmb3JtYXR0ZWRSZWNvcmQgPSB0
aGlzLl9mb3JtYXRSZWNvcmQocmVjb3JkKTsKKyAgICAgICAgdmFyIGZvcm1hdHRlZFJlY29yZCA9
IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQocmVjb3JkLCB0
aGlzLl9yZWNvcmRTdHlsZXMsIHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3JkcywgdGhpcy5fdGltZXJS
ZWNvcmRzKTsKIAogICAgICAgICAvLyBHbHVlIHN1YnNlcXVlbnQgcmVjb3JkcyB3aXRoIHNhbWUg
Y2F0ZWdvcnkgYW5kIHRpdGxlIHRvZ2V0aGVyIGlmIHRoZXkgYXJlIGNsb3NlciB0aGFuIDEwMG1z
IHRvIGVhY2ggb3RoZXIuCiAgICAgICAgIGlmICh0aGlzLl9sYXN0UmVjb3JkICYmICghcmVjb3Jk
LmNoaWxkcmVuIHx8ICFyZWNvcmQuY2hpbGRyZW4ubGVuZ3RoKSAmJgpAQCAtMTcxLDExMiArMjA2
LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gZm9ybWF0dGVkUmVjb3JkOwogICAgIH0sCiAKLSAgICBfZm9ybWF0UmVjb3JkOiBmdW5j
dGlvbihyZWNvcmQpCi0gICAgewotICAgICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlOwotICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0
eWxlcykgewotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzID0ge307Ci0gICAgICAgICAg
ICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZlbnREaXNwYXRjaF0gPSB7IHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3Jp
ZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlw
ZXMuTGF5b3V0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0IiksIGNh
dGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMucmVuZGVyaW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9y
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVjYWxjdWxhdGVTdHlsZXNdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNhbGN1bGF0ZSBTdHlsZSIpLCBjYXRlZ29yeTogdGhpcy5j
YXRlZ29yaWVzLnJlbmRlcmluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3Jl
Y29yZFR5cGVzLlBhaW50XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFpbnQi
KSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5yZW5kZXJpbmcgfTsKLSAgICAgICAgICAgIHRo
aXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5QYXJzZUhUTUxdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJQYXJzZSIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLmxvYWRp
bmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lcklu
c3RhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnN0YWxsIFRpbWVyIiks
IGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlz
Ll9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZXJSZW1vdmVdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZW1vdmUgVGltZXIiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmll
cy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5UaW1lckZpcmVdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lciBGaXJl
ZCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OwotICAgICAgICAgICAg
dGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUlJlYWR5U3RhdGVDaGFuZ2VdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJYSFIgUmVhZHkgU3RhdGUgQ2hhbmdlIiksIGNh
dGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9y
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSTG9hZF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlhIUiBMb2FkIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5n
IH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRXZhbHVhdGVT
Y3JpcHRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFdmFsdWF0ZSBTY3JpcHQi
KSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRo
aXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5NYXJrVGltZWxpbmVdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJNYXJrIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2Ny
aXB0aW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVz
b3VyY2VTZW5kUmVxdWVzdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbmQg
UmVxdWVzdCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLmxvYWRpbmcgfTsKLSAgICAgICAg
ICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25z
ZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY2VpdmUgUmVzcG9uc2UiKSwg
Y2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5sb2FkaW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9y
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2hdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJGaW5pc2ggTG9hZGluZyIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29y
aWVzLmxvYWRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5GdW5jdGlvbkNhbGxdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlv
biBDYWxsIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAg
IH0KLQotICAgICAgICB2YXIgc3R5bGUgPSB0aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkLnR5cGVd
OwotICAgICAgICBpZiAoIXN0eWxlKQotICAgICAgICAgICAgc3R5bGUgPSB0aGlzLl9yZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuRXZlbnREaXNwYXRjaF07Ci0KLSAgICAgICAgdmFyIGZvcm1hdHRl
ZFJlY29yZCA9IHt9OwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY2F0ZWdvcnkgPSBzdHlsZS5j
YXRlZ29yeTsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnRpdGxlID0gc3R5bGUudGl0bGU7Ci0g
ICAgICAgIGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lIC8gMTAw
MDsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmRhdGEgPSByZWNvcmQuZGF0YTsKLSAgICAgICAg
Zm9ybWF0dGVkUmVjb3JkLmNvdW50ID0gMTsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnR5cGUg
PSByZWNvcmQudHlwZTsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmVuZFRpbWUgPSAodHlwZW9m
IHJlY29yZC5lbmRUaW1lICE9PSAidW5kZWZpbmVkIikgPyByZWNvcmQuZW5kVGltZSAvIDEwMDAg
OiBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQub3Jp
Z2luYWxSZWNvcmRGb3JUZXN0cyA9IHJlY29yZDsKLSAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNh
bGxlclNjcmlwdE5hbWUgPSByZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKLSAgICAgICAgZm9ybWF0
dGVkUmVjb3JkLmNhbGxlclNjcmlwdExpbmUgPSByZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKLQot
ICAgICAgICAvLyBNYWtlIHJlc291cmNlIHJlY2VpdmUgcmVjb3JkIGxhc3Qgc2luY2UgcmVxdWVz
dCB3YXMgc2VudDsgbWFrZSBmaW5pc2ggcmVjb3JkIGxhc3Qgc2luY2UgcmVzcG9uc2UgcmVjZWl2
ZWQuCi0gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICB0aGlzLl9z
ZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl0gPSBmb3JtYXR0ZWRSZWNv
cmQ7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1l
bGluZUFnZW50LlJlY29yZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2UpIHsKLSAgICAgICAg
ICAgIHZhciBzZW5kUmVxdWVzdFJlY29yZCA9IHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNv
cmQuZGF0YS5pZGVudGlmaWVyXTsKLSAgICAgICAgICAgIGlmIChzZW5kUmVxdWVzdFJlY29yZCkg
eyAvLyBGYWxzZSBpZiB3ZSBzdGFydGVkIGluc3RydW1lbnRhdGlvbiBpbiB0aGUgbWlkZGxlIG9m
IHJlcXVlc3QuCi0gICAgICAgICAgICAgICAgc2VuZFJlcXVlc3RSZWNvcmQuX3Jlc3BvbnNlUmVj
ZWl2ZWRGb3JtYXR0ZWRUaW1lID0gZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZTsKLSAgICAgICAg
ICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lID0gc2VuZFJlcXVlc3RSZWNvcmQuc3Rh
cnRUaW1lOwotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5kZXRhaWxzID0gdGhpcy5f
Z2V0UmVjb3JkRGV0YWlscyhzZW5kUmVxdWVzdFJlY29yZCk7Ci0gICAgICAgICAgICAgICAgZm9y
bWF0dGVkUmVjb3JkLmNhbGxlclNjcmlwdE5hbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJT
Y3JpcHROYW1lOwotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYWxsZXJTY3JpcHRM
aW5lID0gc2VuZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
QWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaCkgewotICAgICAgICAgICAgdmFyIHNlbmRS
ZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhLmlkZW50
aWZpZXJdOwotICAgICAgICAgICAgaWYgKHNlbmRSZXF1ZXN0UmVjb3JkKSB7Ly8gRmFsc2UgZm9y
IG1haW4gcmVzb3VyY2UuCi0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGlt
ZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLl9yZXNwb25zZVJlY2VpdmVkRm9ybWF0dGVkVGltZTsKLSAg
ICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZSA9IHNlbmRSZXF1
ZXN0UmVjb3JkLmNhbGxlclNjcmlwdE5hbWU7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVj
b3JkLmNhbGxlclNjcmlwdExpbmUgPSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJTY3JpcHRMaW5l
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbCkgewotICAgICAg
ICAgICAgZm9ybWF0dGVkUmVjb3JkLnRpbWVvdXQgPSByZWNvcmQuZGF0YS50aW1lb3V0OwotICAg
ICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnNpbmdsZVNob3QgPSByZWNvcmQuZGF0YS5zaW5nbGVT
aG90OwotICAgICAgICAgICAgdGhpcy5fdGltZXJSZWNvcmRzW3JlY29yZC5kYXRhLnRpbWVySWRd
ID0gZm9ybWF0dGVkUmVjb3JkOwotICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyRmlyZSB8fAotICAgICAg
ICAgICAgICAgICAgIHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5S
ZWNvcmRUeXBlLlRpbWVyUmVtb3ZlKSB7Ci0gICAgICAgICAgICB2YXIgdGltZXJJbnN0YWxsZWRS
ZWNvcmQgPSB0aGlzLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGEudGltZXJJZF07Ci0gICAgICAg
ICAgICBpZiAodGltZXJJbnN0YWxsZWRSZWNvcmQpIHsKLSAgICAgICAgICAgICAgICBmb3JtYXR0
ZWRSZWNvcmQuY2FsbFNpdGVTY3JpcHROYW1lID0gdGltZXJJbnN0YWxsZWRSZWNvcmQuY2FsbGVy
U2NyaXB0TmFtZTsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY2FsbFNpdGVTY3Jp
cHRMaW5lID0gdGltZXJJbnN0YWxsZWRSZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKLSAgICAgICAg
ICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudGltZW91dCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnRp
bWVvdXQ7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnNpbmdsZVNob3QgPSB0aW1l
ckluc3RhbGxlZFJlY29yZC5zaW5nbGVTaG90OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGZvcm1hdHRlZFJlY29yZC5kZXRhaWxzID0gdGhpcy5fZ2V0UmVjb3JkRGV0YWlscyhy
ZWNvcmQpOwotCi0gICAgICAgIHJldHVybiBmb3JtYXR0ZWRSZWNvcmQ7Ci0gICAgfSwKLQotICAg
IF9nZXRSZWNvcmREZXRhaWxzOiBmdW5jdGlvbihyZWNvcmQpCi0gICAgewotICAgICAgICBzd2l0
Y2ggKHJlY29yZC50eXBlKSB7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGw6Ci0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLmRpc3BsYXlOYW1lRm9yVVJMKHJlY29yZC5kYXRhLnNjcmlwdE5hbWUgKyAiOiIgKyByZWNv
cmQuZGF0YS5zY3JpcHRMaW5lKTsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLkV2ZW50RGlzcGF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gcmVjb3Jk
LmRhdGEgPyByZWNvcmQuZGF0YS50eXBlIDogIiI7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5QYWludDoKLSAgICAgICAgICAgIHJldHVybiByZWNv
cmQuZGF0YS53aWR0aCArICJcdTIwMDlcdTAwZDdcdTIwMDkiICsgcmVjb3JkLmRhdGEuaGVpZ2h0
OwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGlt
ZXJJbnN0YWxsOgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuVGltZXJSZW1vdmU6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5UaW1lckZpcmU6Ci0gICAgICAgICAgICByZXR1cm4gcmVjb3JkLmRhdGEu
dGltZXJJZDsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRU
eXBlLlhIUlJlYWR5U3RhdGVDaGFuZ2U6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJMb2FkOgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50LlJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQ6Ci0gICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0Ogot
ICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChyZWNvcmQu
ZGF0YS51cmwpOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaDoKLSAgICAgICAgICAgIHZh
ciBzZW5kUmVxdWVzdFJlY29yZCA9IHRoaXMuX3NlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0
YS5pZGVudGlmaWVyXTsKLSAgICAgICAgICAgIHJldHVybiBzZW5kUmVxdWVzdFJlY29yZCA/IFdl
Ykluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChzZW5kUmVxdWVzdFJlY29yZC5kYXRhLnVybCkg
OiAiIjsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBl
Lk1hcmtUaW1lbGluZToKLSAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0YS5tZXNzYWdlOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgICB9Ci0gICAg
fSwKLQogICAgIHNldFNpZGViYXJXaWR0aDogZnVuY3Rpb24od2lkdGgpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnNldFNpZGViYXJXaWR0aC5jYWxsKHRoaXMs
IHdpZHRoKTsKQEAgLTMwNywxNiArMjM2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9hZGp1c3RTY3JvbGxQb3NpdGlvbigwKTsKICAg
ICAgICAgdGhpcy5fcmVmcmVzaCgpOwogICAgICAgICB0aGlzLl9jbG9zZVJlY29yZERldGFpbHMo
KTsKLSAgICB9LAotCi0gICAgX2Nsb3NlUmVjb3JkRGV0YWlsczogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdmFyIGRldGFpbHMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5yZWNvcmRE
ZXRhaWxzOwotICAgICAgICBpZiAoZGV0YWlscykgewotICAgICAgICAgICAgZGV0YWlscy5oaWRl
KCk7Ci0gICAgICAgICAgICBkZWxldGUgZGV0YWlsczsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHMgPSBudWxsOwotICAgICAgICB9CisgICAgICAg
IHRoaXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CiAgICAgfSwKIAogICAgIHNob3c6IGZ1bmN0
aW9uKCkKQEAgLTMyOSw3ICsyNDksNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90
b3R5cGUgPSB7CiAKICAgICBfb25TY3JvbGw6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgdGhpcy5fY2xvc2VSZWNvcmREZXRhaWxzKCk7CiAgICAgICAgIHZhciBzY3JvbGxUb3AgPSB0
aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcDsKICAgICAgICAgdmFyIGRpdmlkZXJzVG9w
ID0gTWF0aC5tYXgoMCwgc2Nyb2xsVG9wKTsKICAgICAgICAgdGhpcy5fdGltZWxpbmVHcmlkLnNl
dFNjcm9sbEFuZERpdmlkZXJUb3Aoc2Nyb2xsVG9wLCBkaXZpZGVyc1RvcCk7CkBAIC0zNDQsNiAr
MjYzLDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
X3NjaGVkdWxlUmVmcmVzaDogZnVuY3Rpb24ocHJlc2VydmVCb3VuZGFyaWVzKQogICAgIHsKKyAg
ICAgICAgaWYgKHByZXNlcnZlQm91bmRhcmllcykKKyAgICAgICAgICAgIHRoaXMuX2Nsb3NlUmVj
b3JkRGV0YWlscygpOwogICAgICAgICB0aGlzLl9ib3VuZGFyaWVzQXJlVmFsaWQgJj0gcHJlc2Vy
dmVCb3VuZGFyaWVzOwogICAgICAgICBpZiAodGhpcy5fbmVlZHNSZWZyZXNoKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNDIwLDIyICszNDEsMjEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgd2lkdGggPSB0aGlzLl9ncmFwaFJvd3NFbGVt
ZW50Lm9mZnNldFdpZHRoOwogICAgICAgICB0aGlzLl9pdGVtc0dyYXBoc0VsZW1lbnQucmVtb3Zl
Q2hpbGQodGhpcy5fZ3JhcGhSb3dzRWxlbWVudCk7CiAgICAgICAgIHZhciBncmFwaFJvd0VsZW1l
bnQgPSB0aGlzLl9ncmFwaFJvd3NFbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgICAgIHZhciBzY2hl
ZHVsZVJlZnJlc2hDYWxsYmFjayA9IHRoaXMuX3NjaGVkdWxlUmVmcmVzaC5iaW5kKHRoaXMsIHRy
dWUpOwogICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OyArK2kp
IHsKICAgICAgICAgICAgIHZhciByZWNvcmQgPSByZWNvcmRzSW5XaW5kb3dbaV07CiAgICAgICAg
ICAgICB2YXIgaXNFdmVuID0gIShpICUgMik7CiAKICAgICAgICAgICAgIGlmICghbGlzdFJvd0Vs
ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBsaXN0Um93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93KCkuZWxlbWVudDsKKyAgICAgICAgICAgICAgICBsaXN0
Um93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93KHRoaXMu
X2NhbGxiYWNrcykuZWxlbWVudDsKICAgICAgICAgICAgICAgICB0aGlzLl9zaWRlYmFyTGlzdEVs
ZW1lbnQuYXBwZW5kQ2hpbGQobGlzdFJvd0VsZW1lbnQpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCFncmFwaFJvd0VsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBncmFwaFJvd0Vs
ZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3codGhpcy5faXRl
bXNHcmFwaHNFbGVtZW50LCBzY2hlZHVsZVJlZnJlc2hDYWxsYmFjaywgcm93SGVpZ2h0KS5lbGVt
ZW50OworICAgICAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRHcmFwaFJvdyh0aGlzLl9jYWxsYmFja3MsIHRoaXMuX2l0ZW1zR3JhcGhz
RWxlbWVudCwgcm93SGVpZ2h0KS5lbGVtZW50OwogICAgICAgICAgICAgICAgIHRoaXMuX2dyYXBo
Um93c0VsZW1lbnQuYXBwZW5kQ2hpbGQoZ3JhcGhSb3dFbGVtZW50KTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgbGlzdFJvd0VsZW1lbnQubGlzdFJvdy51cGRhdGUocmVjb3JkLCBpc0V2
ZW4sIHRoaXMuX2NhbGN1bGF0b3IsIHZpc2libGVUb3ApOwotICAgICAgICAgICAgZ3JhcGhSb3dF
bGVtZW50LmdyYXBoUm93LnVwZGF0ZShyZWNvcmQsIGlzRXZlbiwgdGhpcy5fY2FsY3VsYXRvciwg
d2lkdGgsIGV4cGFuZE9mZnNldCwgaSk7CisgICAgICAgICAgICBsaXN0Um93RWxlbWVudC5yb3cu
dXBkYXRlKHJlY29yZCwgaXNFdmVuLCB0aGlzLl9jYWxjdWxhdG9yLCB2aXNpYmxlVG9wKTsKKyAg
ICAgICAgICAgIGdyYXBoUm93RWxlbWVudC5yb3cudXBkYXRlKHJlY29yZCwgaXNFdmVuLCB0aGlz
Ll9jYWxjdWxhdG9yLCB3aWR0aCwgZXhwYW5kT2Zmc2V0LCBpKTsKIAogICAgICAgICAgICAgbGlz
dFJvd0VsZW1lbnQgPSBsaXN0Um93RWxlbWVudC5uZXh0U2libGluZzsKICAgICAgICAgICAgIGdy
YXBoUm93RWxlbWVudCA9IGdyYXBoUm93RWxlbWVudC5uZXh0U2libGluZzsKQEAgLTQ0NCwxMiAr
MzY0LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgLy8gUmVtb3ZlIGV4dHJhIHJvd3MuCiAgICAgICAgIHdoaWxlIChsaXN0Um93RWxlbWVudCkg
ewogICAgICAgICAgICAgdmFyIG5leHRFbGVtZW50ID0gbGlzdFJvd0VsZW1lbnQubmV4dFNpYmxp
bmc7Ci0gICAgICAgICAgICBsaXN0Um93RWxlbWVudC5saXN0Um93LmRpc3Bvc2UoKTsKKyAgICAg
ICAgICAgIGxpc3RSb3dFbGVtZW50LnJvdy5kaXNwb3NlKCk7CiAgICAgICAgICAgICBsaXN0Um93
RWxlbWVudCA9IG5leHRFbGVtZW50OwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChncmFwaFJv
d0VsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciBuZXh0RWxlbWVudCA9IGdyYXBoUm93RWxlbWVu
dC5uZXh0U2libGluZzsKLSAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudC5ncmFwaFJvdy5kaXNw
b3NlKCk7CisgICAgICAgICAgICBncmFwaFJvd0VsZW1lbnQucm93LmRpc3Bvc2UoKTsKICAgICAg
ICAgICAgIGdyYXBoUm93RWxlbWVudCA9IG5leHRFbGVtZW50OwogICAgICAgICB9CiAKQEAgLTQ3
NywxMiArMzk3LDkxIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgLy8gUHJldmVudCB0aGUgY29udGFpbmVyIGZyb20gYmVpbmcgc2Nyb2xsZWQgb2Zm
IHRoZSBlbmQuCiAgICAgICAgIGlmICgodGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3Ag
KyB0aGlzLl9jb250YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodCkgPiB0b3RhbEhlaWdodCArIDEp
CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9ICh0b3RhbEhl
aWdodCAtIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0KTsKKyAgICB9LAorCisg
ICAgX29uQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGFuY2hvciA9
IGV2ZW50LnRhcmdldDsKKyAgICAgICAgd2hpbGUgKGFuY2hvciAhPSB0aGlzLl9jb250YWluZXJF
bGVtZW50ICYmICFhbmNob3Iucm93KQorICAgICAgICAgICAgYW5jaG9yID0gYW5jaG9yLnBhcmVu
dEVsZW1lbnQ7CisgICAgICAgIGlmIChhbmNob3IgIT09IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQp
IHsKKyAgICAgICAgICAgIHRoaXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CisgICAgICAgICAg
ICB0aGlzLl9zaG93UmVjb3JkRGV0YWlscyhhbmNob3IpOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIF9tb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGFuY2hv
ciA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgd2hpbGUgKGFuY2hvciAhPSB0aGlzLl9jb250YWlu
ZXJFbGVtZW50ICYmICFhbmNob3Iucm93KQorICAgICAgICAgICAgYW5jaG9yID0gYW5jaG9yLnBh
cmVudEVsZW1lbnQ7CisgICAgICAgIHZhciBkZXRhaWxzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucmVjb3JkRGV0YWlsczsKKyAgICAgICAgaWYgKCEoZGV0YWlscyAmJiBkZXRhaWxzLmlz
VmlzaWJsZSkpIHsKKyAgICAgICAgICAgIGlmIChhbmNob3Iucm93ICYmIGFuY2hvci5yb3cuX3Jl
Y29yZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFNob3dEZXRhaWxzVGltZXIoYW5jaG9y
LCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5zaG93RGV0YWlsc0RlbGF5KTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9raWxsU2hvd0RldGFpbHNUaW1lcigpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCEoYW5jaG9yLnJvdyAmJiBhbmNob3Iu
cm93Ll9yZWNvcmQpKSAvLyBiYWNrZ3JvdW5kCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBI
aWRlRGV0YWlsc1RpbWVyKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYg
KGRldGFpbHMuYW5jaG9yID09PSBhbmNob3IpCisgICAgICAgICAgICAgICAgICAgIGRldGFpbHMu
a2lsbEhpZGVUaW1lcigpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9zZXR1cEhpZGVEZXRhaWxzVGltZXIoKTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fc2V0dXBTaG93RGV0YWlsc1RpbWVyKGFuY2hvciwgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwuc2hvd0RldGFpbHNEZWxheSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKKyAgICBfc2V0dXBIaWRl
RGV0YWlsc1RpbWVyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZGV0YWlscyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHM7CisgICAgICAgIGlmIChkZXRh
aWxzICYmIGRldGFpbHMuaXNWaXNpYmxlICYmICghZGV0YWlscy5oaWRlRGVsYXkgfHwgZGV0YWls
cy5oaWRlRGVsYXkgPiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5oaWRlRGV0YWlsc0lmTW91
c2VNb3ZlZERlbGF5KSkKKyAgICAgICAgICAgIGRldGFpbHMuaGlkZUFmdGVyRGVsYXkoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuaGlkZURldGFpbHNJZk1vdXNlTW92ZWREZWxheSk7CisgICAg
fSwKKworICAgIF9zZXR1cFNob3dEZXRhaWxzVGltZXI6IGZ1bmN0aW9uKGFuY2hvciwgdGltZW91
dCkKKyAgICB7CisgICAgICAgIHRoaXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CisgICAgICAg
IHRoaXMuX3Nob3dSZWNvcmREZXRhaWxzVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3Nob3dSZWNv
cmREZXRhaWxzLmJpbmQodGhpcywgYW5jaG9yKSwgdGltZW91dCk7CisgICAgfSwKKworICAgIF9r
aWxsU2hvd0RldGFpbHNUaW1lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X3Nob3dSZWNvcmREZXRhaWxzVGltZXIpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlz
Ll9zaG93UmVjb3JkRGV0YWlsc1RpbWVyKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaG93
UmVjb3JkRGV0YWlsc1RpbWVyOworICAgICAgICB9CisgICAgfSwKKworICAgIF9zaG93UmVjb3Jk
RGV0YWlsczogZnVuY3Rpb24oYW5jaG9yKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xvc2VSZWNv
cmREZXRhaWxzKCk7CisgICAgICAgIHRoaXMuX2tpbGxTaG93RGV0YWlsc1RpbWVyKCk7CisgICAg
ICAgIHZhciByZWNvcmQgPSBhbmNob3Iucm93ID8gYW5jaG9yLnJvdy5fcmVjb3JkIDogbnVsbDsK
KyAgICAgICAgaWYgKHJlY29yZCkgeworICAgICAgICAgICAgdmFyIGRldGFpbHMgPSBuZXcgV2Vi
SW5zcGVjdG9yLlBvcG92ZXIocmVjb3JkLl9nZW5lcmF0ZVBvcHVwQ29udGVudCh0aGlzLl9jYWxj
dWxhdG9yKSk7CisgICAgICAgICAgICBkZXRhaWxzLmhpZGVXaGVuQ2xpY2tlZCgpOworICAgICAg
ICAgICAgZGV0YWlscy5oaWRlQWZ0ZXJEZWxheShXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5o
aWRlRGV0YWlsc0RlbGF5KTsKKyAgICAgICAgICAgIGRldGFpbHMuc2hvdyhhbmNob3IpOworICAg
ICAgICAgICAgZGV0YWlscy5hbmNob3IgPSBhbmNob3I7CisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5yZWNvcmREZXRhaWxzID0gZGV0YWlsczsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICBfY2xvc2VSZWNvcmREZXRhaWxzOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWlscykgeworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWlscy5oaWRlKCk7Cisg
ICAgICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucmVjb3JkRGV0YWls
czsKKyAgICAgICAgfQogICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGU7CiAKLQogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQ2F0ZWdvcnkgPSBmdW5jdGlvbihuYW1lLCB0aXRsZSwgY29sb3Ip
CiB7CiAgICAgdGhpcy5uYW1lID0gbmFtZTsKQEAgLTQ5MCw3ICs0ODksNiBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVDYXRlZ29yeSA9IGZ1bmN0aW9uKG5hbWUsIHRpdGxlLCBjb2xvcikKICAgICB0
aGlzLmNvbG9yID0gY29sb3I7CiB9CiAKLQogV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRv
ciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLnJlc2V0KCk7CkBAIC01MzgsMTAgKzUzNiwxMSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIH0KIAogCi1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdyA9IGZ1bmN0aW9uKGNhbGxiYWNrcykKIHsKKyAgICB0
aGlzLl9jYWxsYmFja3MgPSBjYWxsYmFja3M7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5lbGVtZW50Lmxpc3RSb3cgPSB0aGlzOwor
ICAgIHRoaXMuZWxlbWVudC5yb3cgPSB0aGlzOwogICAgIHRoaXMuZWxlbWVudC5zdHlsZS5jdXJz
b3IgPSAicG9pbnRlciI7CiAgICAgdmFyIGljb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwogICAgIGljb25FbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS10cmVl
LWljb24iOwpAQCAtNTY0LDcgKzU2Myw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExp
c3RSb3cgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNlcGFyYXRv
ckVsZW1lbnQpOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhRWxlbWVu
dCk7CiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlcGVhdENvdW50RWxlbWVu
dCk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25D
bGljay5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCBjYWxsYmFja3MuX29uQ2xpY2spOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZW1vdmUiLCBjYWxsYmFja3MuX21vdXNlTW92ZSwgZmFsc2UpOwogfQogCiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93LnByb3RvdHlwZSA9IHsKQEAgLTU3NywxMyAr
NTc3LDEwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLXRyZWUtaXRlbSB0
aW1lbGluZS1jYXRlZ29yeS0iICsgcmVjb3JkLmNhdGVnb3J5Lm5hbWUgKyAoaXNFdmVuID8gIiBl
dmVuIiA6ICIiKTsKICAgICAgICAgdGhpcy5fdHlwZUVsZW1lbnQudGV4dENvbnRlbnQgPSByZWNv
cmQudGl0bGU7CiAKLSAgICAgICAgaWYgKHJlY29yZC5kZXRhaWxzKSB7CisgICAgICAgIGlmIChy
ZWNvcmQuZGV0YWlscykKICAgICAgICAgICAgIHRoaXMuX2RhdGFFbGVtZW50LnRleHRDb250ZW50
ID0gIigiICsgcmVjb3JkLmRldGFpbHMgKyAiKSI7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhRWxl
bWVudC50aXRsZSA9IHJlY29yZC5kZXRhaWxzOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBl
bHNlCiAgICAgICAgICAgICB0aGlzLl9kYXRhRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwotICAg
ICAgICAgICAgdGhpcy5fZGF0YUVsZW1lbnQudGl0bGUgPSAiIjsKLSAgICAgICAgfQogCiAgICAg
ICAgIGlmIChyZWNvcmQuY291bnQgPiAxKQogICAgICAgICAgICAgdGhpcy5fcmVwZWF0Q291bnRF
bGVtZW50LnRleHRDb250ZW50ID0gIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyByZWNvcmQuY291bnQ7
CkBAIC01OTEsOTYgKzU4OCwxNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3JlcGVhdENvdW50RWxlbWVudC50ZXh0
Q29udGVudCA9ICIiOwogICAgIH0sCiAKLSAgICBfY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29udGVu
dCwgc3R5bGVOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsYWJlbCIpOwotICAgICAgICB0ZXh0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKGNvbnRlbnQpKTsKLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0ZCIpOwotICAgICAgICBjZWxsLmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1kZXRhaWxz
IjsKLSAgICAgICAgaWYgKHN0eWxlTmFtZSkKLSAgICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSAr
PSAiICIgKyBzdHlsZU5hbWU7Ci0gICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb250ZW50Owot
ICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0gICAgX2NyZWF0ZVJvdzogZnVuY3Rpb24o
dGl0bGUsIGNvbnRlbnQpCi0gICAgewotICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidHIiKTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwo
dGl0bGUsICJ0aW1lbGluZS1kZXRhaWxzLXJvdy10aXRsZSIpKTsKLSAgICAgICAgcm93LmFwcGVu
ZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoY29udGVudCwgInRpbWVsaW5lLWRldGFpbHMtcm93LWRh
dGEiKSk7Ci0gICAgICAgIHJldHVybiByb3c7Ci0gICAgfSwKLQotICAgIF9jcmVhdGVMaW5rUm93
OiBmdW5jdGlvbih0aXRsZSwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciByb3cgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlQ2VsbCh0aXRsZSwgInRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIikpOwotICAgICAg
ICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIGNlbGwu
YXBwZW5kQ2hpbGQoY29udGVudCk7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLSAg
ICAgICAgcmV0dXJuIHJvdzsKLSAgICB9LAotCi0gICAgX2dlbmVyYXRlQnViYmxlQ29udGVudDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGJ1YmJsZUNvbnRlbnRUYWJsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7Ci0gICAgICAgIHZhciB0aXRsZUNlbGwgPSB0aGlz
Ll9jcmVhdGVDZWxsKFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgLSBEZXRhaWxzIiwgdGhpcy5f
cmVjb3JkLnRpdGxlKSwgInRpbWVsaW5lLWRldGFpbHMtdGl0bGUiKTsKLSAgICAgICAgdGl0bGVD
ZWxsLmNvbFNwYW4gPSAyOwotICAgICAgICB0aXRsZUNlbGwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaHIiKSk7Ci0gICAgICAgIHZhciB0aXRsZVJvdyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgICAgIHRpdGxlUm93LmFwcGVuZENoaWxkKHRpdGxlQ2Vs
bCk7Ci0gICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aXRsZVJvdyk7Ci0g
ICAgICAgIHZhciB0ZXh0ID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9yZWNvcmQuZW5k
VGltZSAtIHRoaXMuX3JlY29yZC5zdGFydFRpbWUpICsgIiAoQCIgKwotICAgICAgICAgICAgdGhp
cy5fY2FsY3VsYXRvci5mb3JtYXRWYWx1ZSh0aGlzLl9yZWNvcmQuc3RhcnRUaW1lIC0gdGhpcy5f
Y2FsY3VsYXRvci5taW5pbXVtQm91bmRhcnkpICsgIikiOwotICAgICAgICBidWJibGVDb250ZW50
VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RHVyYXRpb24iKSwgdGV4dCkpOwotCi0gICAgICAgIGlmICh0aGlzLl9yZWNvcmQuZGV0YWlscykg
ewotICAgICAgICAgICAgaWYgKCB0aGlzLl9yZWNvcmQudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbCB8fAotICAgICAgICAgICAgICAgICB0
aGlzLl9yZWNvcmQudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBl
LlRpbWVyRmlyZSB8fAotICAgICAgICAgICAgICAgICB0aGlzLl9yZWNvcmQudHlwZSA9PSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlKSB7Ci0gICAgICAg
ICAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVySWQiKSwgdGhpcy5fcmVjb3JkLmRhdGEudGltZXJJ
ZCkpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9yZWNvcmQudGltZW91dCkgewotICAgICAg
ICAgICAgICAgICAgICBidWJibGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRl
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZW91dCIpLCB0aGlzLl9yZWNvcmQudGltZW91
dCkpOwotICAgICAgICAgICAgICAgICAgICBidWJibGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQo
dGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwZWF0cyIpLCAhdGhpcy5f
cmVjb3JkLnNpbmdsZVNob3QpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
aWYgKHRoaXMuX3JlY29yZC5jYWxsU2l0ZVNjcmlwdExpbmUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuX3Jl
Y29yZC5jYWxsU2l0ZVNjcmlwdE5hbWUsICJzY3JpcHRzIiwgdGhpcy5fcmVjb3JkLmNhbGxTaXRl
U2NyaXB0TGluZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBl
bmRDaGlsZCh0aGlzLl9jcmVhdGVMaW5rUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbCBT
aXRlIiksIGxpbmspKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KCB0aGlzLl9yZWNvcmQudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRU
eXBlLkZ1bmN0aW9uQ2FsbCApIHsKLSAgICAgICAgICAgICAgICB2YXIgbGluayA9IFdlYkluc3Bl
Y3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodGhpcy5fcmVjb3JkLmRhdGEuc2NyaXB0TmFtZSwg
InNjcmlwdHMiLCB0aGlzLl9yZWNvcmQuZGF0YS5zY3JpcHRMaW5lKTsKLSAgICAgICAgICAgICAg
ICBidWJibGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIiksIGxpbmspKTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9j
cmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZXRhaWxzIiksIHRoaXMuX3JlY29yZC5k
ZXRhaWxzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fcmVjb3JkLmNhbGxlclNj
cmlwdE5hbWUpIHsKLSAgICAgICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlS
ZXNvdXJjZUFzTm9kZSh0aGlzLl9yZWNvcmQuY2FsbGVyU2NyaXB0TmFtZSwgInNjcmlwdHMiLCB0
aGlzLl9yZWNvcmQuY2FsbGVyU2NyaXB0TGluZSk7Ci0gICAgICAgICAgICBidWJibGVDb250ZW50
VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNhbGxlciIpLCBsaW5rKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGJ1YmJsZUNv
bnRlbnRUYWJsZTsKLSAgICB9LAotCi0gICAgX29uQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX3JlY29yZCkgewotICAgICAgICAgICAgdmFyIGRldGFpbHMg
PSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIodGhpcy5fZ2VuZXJhdGVCdWJibGVDb250ZW50KCkp
OwotICAgICAgICAgICAgZGV0YWlscy5oaWRlV2hlbkNsaWNrZWQoKTsKLSAgICAgICAgICAgIGRl
dGFpbHMuc2hvdyh0aGlzLmVsZW1lbnQpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucmVjb3JkRGV0YWlscyA9IGRldGFpbHM7Ci0gICAgICAgIH0KLSAgICB9LAotCiAg
ICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnBhcmVu
dEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKICAgICB9CiB9CiAKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0gZnVuY3Rpb24oZ3JhcGhDb250YWluZXIsIHJl
ZnJlc2hDYWxsYmFjaywgcm93SGVpZ2h0KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3Jh
cGhSb3cgPSBmdW5jdGlvbihjYWxsYmFja3MsIGdyYXBoQ29udGFpbmVyLCByb3dIZWlnaHQpCiB7
CisgICAgdGhpcy5fY2FsbGJhY2tzID0gY2FsbGJhY2tzOwogICAgIHRoaXMuZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxlbWVudC5ncmFwaFJvdyA9
IHRoaXM7CisgICAgdGhpcy5lbGVtZW50LnJvdyA9IHRoaXM7CiAKICAgICB0aGlzLl9iYXJBcmVh
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckFy
ZWFFbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1ncmFwaC1iYXItYXJlYSI7CkBAIC02ODgs
NiArNjA2LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cgPSBmdW5jdGlv
bihncmFwaENvbnRhaW5lciwgcmVmcmVzaENhbGxiYWNrLAogCiAgICAgdGhpcy5fYmFyRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckVsZW1lbnQu
Y2xhc3NOYW1lID0gInRpbWVsaW5lLWdyYXBoLWJhciI7CisgICAgdGhpcy5fYmFyRWxlbWVudC5y
b3cgPSB0aGlzOworICAgIHRoaXMuX2JhckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCBjYWxsYmFja3MuX29uQ2xpY2spOworICAgIHRoaXMuX2JhckVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vtb3ZlIiwgY2FsbGJhY2tzLl9tb3VzZU1vdmUpOwogICAgIHRoaXMuX2JhckFy
ZWFFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JhckVsZW1lbnQpOwogCiAgICAgdGhpcy5fZXhw
YW5kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtNjk5LDcgKzYy
MCw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0gZnVuY3Rpb24oZ3Jh
cGhDb250YWluZXIsIHJlZnJlc2hDYWxsYmFjaywKICAgICB0aGlzLl9leHBhbmRFbGVtZW50LmFw
cGVuZENoaWxkKGxlZnRCb3JkZXIpOwogCiAgICAgdGhpcy5fZXhwYW5kRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xpY2suYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5f
cmVmcmVzaENhbGxiYWNrID0gcmVmcmVzaENhbGxiYWNrOwogICAgIHRoaXMuX3Jvd0hlaWdodCA9
IHJvd0hlaWdodDsKIH0KIApAQCAtNzM2LDcgKzY1Niw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZEdyYXBoUm93LnByb3RvdHlwZSA9IHsKICAgICBfb25DbGljazogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmQuY29sbGFwc2VkID0gIXRoaXMuX3JlY29y
ZC5jb2xsYXBzZWQ7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hDYWxsYmFjaygpOworICAgICAgICB0
aGlzLl9jYWxsYmFja3MuX3NjaGVkdWxlUmVmcmVzaCgpOwogICAgIH0sCiAKICAgICBkaXNwb3Nl
OiBmdW5jdGlvbigpCkBAIC03NDUsMyArNjY1LDE1NSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRHcmFwaFJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2V4cGFuZEVsZW1lbnQu
cGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9leHBhbmRFbGVtZW50KTsKICAgICB9CiB9
CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZCA9IGZ1bmN0aW9u
KHJlY29yZCwgcmVjb3JkU3R5bGVzLCBzZW5kUmVxdWVzdFJlY29yZHMsIHRpbWVyUmVjb3JkcykK
K3sKKyAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNv
cmRUeXBlOworICAgIHZhciBzdHlsZSA9IHJlY29yZFN0eWxlc1tyZWNvcmQudHlwZV07CisKKyAg
ICB0aGlzLmNhdGVnb3J5ID0gc3R5bGUuY2F0ZWdvcnk7CisgICAgdGhpcy50aXRsZSA9IHN0eWxl
LnRpdGxlOworICAgIHRoaXMuc3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZSAvIDEwMDA7Cisg
ICAgdGhpcy5kYXRhID0gcmVjb3JkLmRhdGE7CisgICAgdGhpcy5jb3VudCA9IDE7CisgICAgdGhp
cy50eXBlID0gcmVjb3JkLnR5cGU7CisgICAgdGhpcy5lbmRUaW1lID0gKHR5cGVvZiByZWNvcmQu
ZW5kVGltZSAhPT0gInVuZGVmaW5lZCIpID8gcmVjb3JkLmVuZFRpbWUgLyAxMDAwIDogdGhpcy5z
dGFydFRpbWU7CisgICAgdGhpcy5vcmlnaW5hbFJlY29yZEZvclRlc3RzID0gcmVjb3JkOworICAg
IHRoaXMuY2FsbGVyU2NyaXB0TmFtZSA9IHJlY29yZC5jYWxsZXJTY3JpcHROYW1lOworICAgIHRo
aXMuY2FsbGVyU2NyaXB0TGluZSA9IHJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOworCisgICAgLy8g
TWFrZSByZXNvdXJjZSByZWNlaXZlIHJlY29yZCBsYXN0IHNpbmNlIHJlcXVlc3Qgd2FzIHNlbnQ7
IG1ha2UgZmluaXNoIHJlY29yZCBsYXN0IHNpbmNlIHJlc3BvbnNlIHJlY2VpdmVkLgorICAgIGlm
IChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VTZW5kUmVxdWVzdCkgeworICAg
ICAgICBzZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl0gPSB0aGlzOwor
ICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2
ZVJlc3BvbnNlKSB7CisgICAgICAgIHZhciBzZW5kUmVxdWVzdFJlY29yZCA9IHNlbmRSZXF1ZXN0
UmVjb3Jkc1tyZWNvcmQuZGF0YS5pZGVudGlmaWVyXTsKKyAgICAgICAgaWYgKHNlbmRSZXF1ZXN0
UmVjb3JkKSB7IC8vIEZhbHNlIGlmIHdlIHN0YXJ0ZWQgaW5zdHJ1bWVudGF0aW9uIGluIHRoZSBt
aWRkbGUgb2YgcmVxdWVzdC4KKyAgICAgICAgICAgIHNlbmRSZXF1ZXN0UmVjb3JkLl9yZXNwb25z
ZVJlY2VpdmVkRm9ybWF0dGVkVGltZSA9IHRoaXMuc3RhcnRUaW1lOworICAgICAgICAgICAgdGhp
cy5zdGFydFRpbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5zdGFydFRpbWU7CisgICAgICAgICAgICB0
aGlzLmRldGFpbHMgPSB0aGlzLl9nZXRSZWNvcmREZXRhaWxzKHNlbmRSZXF1ZXN0UmVjb3JkLCBz
ZW5kUmVxdWVzdFJlY29yZHMpOworICAgICAgICAgICAgdGhpcy5jYWxsZXJTY3JpcHROYW1lID0g
c2VuZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKKyAgICAgICAgICAgIHRoaXMuY2Fs
bGVyU2NyaXB0TGluZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNjcmlwdExpbmU7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJj
ZUZpbmlzaCkgeworICAgICAgICB2YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSBzZW5kUmVxdWVzdFJl
Y29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl07CisgICAgICAgIGlmIChzZW5kUmVxdWVzdFJl
Y29yZCkgey8vIEZhbHNlIGZvciBtYWluIHJlc291cmNlLgorICAgICAgICAgICAgdGhpcy5zdGFy
dFRpbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5fcmVzcG9uc2VSZWNlaXZlZEZvcm1hdHRlZFRpbWU7
CisgICAgICAgICAgICB0aGlzLmNhbGxlclNjcmlwdE5hbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5j
YWxsZXJTY3JpcHROYW1lOworICAgICAgICAgICAgdGhpcy5jYWxsZXJTY3JpcHRMaW5lID0gc2Vu
ZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAocmVjb3JkLnR5cGUgPT09IHJlY29yZFR5cGVzLlRpbWVySW5zdGFsbCkgeworICAgICAgICB0
aGlzLnRpbWVvdXQgPSByZWNvcmQuZGF0YS50aW1lb3V0OworICAgICAgICB0aGlzLnNpbmdsZVNo
b3QgPSByZWNvcmQuZGF0YS5zaW5nbGVTaG90OworICAgICAgICB0aW1lclJlY29yZHNbcmVjb3Jk
LmRhdGEudGltZXJJZF0gPSB0aGlzOworICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHJl
Y29yZFR5cGVzLlRpbWVyRmlyZSkgeworICAgICAgICB2YXIgdGltZXJJbnN0YWxsZWRSZWNvcmQg
PSB0aW1lclJlY29yZHNbcmVjb3JkLmRhdGEudGltZXJJZF07CisgICAgICAgIGlmICh0aW1lcklu
c3RhbGxlZFJlY29yZCkgeworICAgICAgICAgICAgdGhpcy5jYWxsU2l0ZVNjcmlwdE5hbWUgPSB0
aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3JpcHROYW1lOworICAgICAgICAgICAgdGhpcy5j
YWxsU2l0ZVNjcmlwdExpbmUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3JpcHRMaW5l
OworICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gdGltZXJJbnN0YWxsZWRSZWNvcmQudGltZW91
dDsKKyAgICAgICAgICAgIHRoaXMuc2luZ2xlU2hvdCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnNp
bmdsZVNob3Q7CisgICAgICAgIH0KKyAgICB9CisgICAgdGhpcy5kZXRhaWxzID0gdGhpcy5fZ2V0
UmVjb3JkRGV0YWlscyhyZWNvcmQsIHNlbmRSZXF1ZXN0UmVjb3Jkcyk7Cit9CisKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CisgICAgX2Ny
ZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbnRlbnQsIHN0eWxlTmFtZSkKKyAgICB7CisgICAgICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKKyAgICAgICAgdGV4dC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7CisgICAgICAgIHZh
ciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgY2VsbC5jbGFz
c05hbWUgPSAidGltZWxpbmUtZGV0YWlscyI7CisgICAgICAgIGlmIChzdHlsZU5hbWUpCisgICAg
ICAgICAgICBjZWxsLmNsYXNzTmFtZSArPSAiICIgKyBzdHlsZU5hbWU7CisgICAgICAgIGNlbGwu
dGV4dENvbnRlbnQgPSBjb250ZW50OworICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9LAorCisg
ICAgX2NyZWF0ZVJvdzogZnVuY3Rpb24odGl0bGUsIGNvbnRlbnQpCisgICAgeworICAgICAgICB2
YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgcm93LmFwcGVu
ZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0aW1lbGluZS1kZXRhaWxzLXJvdy10aXRs
ZSIpKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoY29udGVudCwg
InRpbWVsaW5lLWRldGFpbHMtcm93LWRhdGEiKSk7CisgICAgICAgIHJldHVybiByb3c7CisgICAg
fSwKKworICAgIF9jcmVhdGVMaW5rUm93OiBmdW5jdGlvbih0aXRsZSwgY29udGVudCkKKyAgICB7
CisgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2VsbCh0aXRsZSwgInRpbWVsaW5lLWRldGFp
bHMtcm93LXRpdGxlIikpOworICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRkIik7CisgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoY29udGVudCk7CisgICAgICAgIHJv
dy5hcHBlbmRDaGlsZChjZWxsKTsKKyAgICAgICAgcmV0dXJuIHJvdzsKKyAgICB9LAorCisgICAg
X2dlbmVyYXRlUG9wdXBDb250ZW50OiBmdW5jdGlvbihjYWxjdWxhdG9yKQorICAgIHsKKyAgICAg
ICAgdmFyIHJlY29yZENvbnRlbnRUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxl
Iik7CisgICAgICAgIHZhciB0aXRsZUNlbGwgPSB0aGlzLl9jcmVhdGVDZWxsKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiJXMgLSBEZXRhaWxzIiwgdGhpcy50aXRsZSksICJ0aW1lbGluZS1kZXRhaWxz
LXRpdGxlIik7CisgICAgICAgIHRpdGxlQ2VsbC5jb2xTcGFuID0gMjsKKyAgICAgICAgdmFyIHRp
dGxlUm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgdGl0bGVSb3cu
YXBwZW5kQ2hpbGQodGl0bGVDZWxsKTsKKyAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVu
ZENoaWxkKHRpdGxlUm93KTsKKyAgICAgICAgdmFyIHRleHQgPSBOdW1iZXIuc2Vjb25kc1RvU3Ry
aW5nKHRoaXMuZW5kVGltZSAtIHRoaXMuc3RhcnRUaW1lKSArICIgKEAiICsKKyAgICAgICAgY2Fs
Y3VsYXRvci5mb3JtYXRWYWx1ZSh0aGlzLnN0YXJ0VGltZSAtIGNhbGN1bGF0b3IubWluaW11bUJv
dW5kYXJ5KSArICIpIjsKKyAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRo
aXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIiksIHRleHQpKTsK
KworICAgICAgICBpZiAodGhpcy5kZXRhaWxzKSB7CisgICAgICAgICAgICBpZiAoIHRoaXMudHlw
ZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbCB8
fAorICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLlRpbWVyRmlyZSB8fAorICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9PSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlKSB7CisgICAg
ICAgICAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVySWQiKSwgdGhpcy5kYXRhLnRpbWVySWQpKTsK
KyAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7CisgICAgICAgICAgICAgICAgICAg
IHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUaW1lb3V0IiksIHRoaXMudGltZW91dCkpOworICAgICAgICAgICAgICAg
ICAgICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVwZWF0cyIpLCAhdGhpcy5zaW5nbGVTaG90KSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhbGxTaXRlU2NyaXB0TGluZSkg
eworICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5saW5raWZ5UmVz
b3VyY2VBc05vZGUodGhpcy5jYWxsU2l0ZVNjcmlwdE5hbWUsICJzY3JpcHRzIiwgdGhpcy5jYWxs
U2l0ZVNjcmlwdExpbmUsICJ0aW1lbGluZS1kZXRhaWxzIik7CisgICAgICAgICAgICAgICAgICAg
IHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVMaW5rUm93KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2FsbCBTaXRlIiksIGxpbmspKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGwgKSB7CisgICAgICAgICAgICAgICAgdmFy
IGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuZGF0YS5zY3Jp
cHROYW1lLCAic2NyaXB0cyIsIHRoaXMuZGF0YS5zY3JpcHRMaW5lLCAidGltZWxpbmUtZGV0YWls
cyIpOworICAgICAgICAgICAgICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlz
Ll9jcmVhdGVMaW5rUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRpb24iKSwgbGluaykp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVjb3JkQ29udGVudFRhYmxl
LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRldGFp
bHMiKSwgdGhpcy5kZXRhaWxzKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5jYWxs
ZXJTY3JpcHROYW1lKSB7CisgICAgICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5saW5r
aWZ5UmVzb3VyY2VBc05vZGUodGhpcy5jYWxsZXJTY3JpcHROYW1lLCAic2NyaXB0cyIsIHRoaXMu
Y2FsbGVyU2NyaXB0TGluZSk7CisgICAgICAgICAgICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5k
Q2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGxlciIp
LCBsaW5rKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlY29yZENvbnRlbnRUYWJsZTsK
KyAgICB9LAorCisgICAgX2dldFJlY29yZERldGFpbHM6IGZ1bmN0aW9uKHJlY29yZCwgc2VuZFJl
cXVlc3RSZWNvcmRzKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChyZWNvcmQudHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkZ1bmN0
aW9uQ2FsbDoKKyAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1l
Rm9yVVJMKHJlY29yZC5kYXRhLnNjcmlwdE5hbWUgKyAiOiIgKyByZWNvcmQuZGF0YS5zY3JpcHRM
aW5lKTsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3Jk
VHlwZS5FdmVudERpc3BhdGNoOgorICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0YSA/
IHJlY29yZC5kYXRhLnR5cGUgOiAiIjsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5QYWludDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVj
b3JkLmRhdGEud2lkdGggKyAiXHUyMDA5XHUwMGQ3XHUyMDA5IiArIHJlY29yZC5kYXRhLmhlaWdo
dDsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlw
ZS5UaW1lckluc3RhbGw6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFn
ZW50LlJlY29yZFR5cGUuVGltZXJSZW1vdmU6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJGaXJlOgorICAgICAgICAgICAgICAgIHJl
dHVybiByZWNvcmQuZGF0YS50aW1lcklkOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlhIUlJlYWR5U3RhdGVDaGFuZ2U6CisgICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuWEhSTG9hZDoKKyAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5FdmFs
dWF0ZVNjcmlwdDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQu
UmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0OgorICAgICAgICAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwocmVjb3JkLmRhdGEudXJsKTsKKyAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVJl
Y2VpdmVSZXNwb25zZToKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5SZXNvdXJjZUZpbmlzaDoKKyAgICAgICAgICAgICAgICB2YXIgc2VuZFJl
cXVlc3RSZWNvcmQgPSBzZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRpZmllcl07
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXF1ZXN0UmVjb3JkID8gV2ViSW5zcGVjdG9y
LmRpc3BsYXlOYW1lRm9yVVJMKHNlbmRSZXF1ZXN0UmVjb3JkLmRhdGEudXJsKSA6ICIiOworICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLk1hcmtU
aW1lbGluZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkLmRhdGEubWVzc2FnZTsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9
CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmlu
ZGV4IGQxNjkyNzkuLjA3N2MxMzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCkBAIC0zNTg4LDcgKzM1ODgsOCBAQCBib2R5LmluYWN0aXZlIC5zaWRlYmFyLXRy
ZWUtaXRlbS5zZWxlY3RlZCAuYnViYmxlLnNlYXJjaC1tYXRjaGVzIHsKICAgICBtaW4td2lkdGg6
IDVweDsKICAgICBvcGFjaXR5OiAwLjg7CiAgICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybChJ
bWFnZXMvdGltZWxpbmVCYXJHcmF5LnBuZykgNCA0IDUgNDsKLSAgICBwb2ludGVyLWV2ZW50czog
bm9uZTsKKyAgICB6LWluZGV4OiAxODA7CisgICAgcG9pbnRlci1ldmVudHM6IHZpc2libGVGaWxs
OwogfQogCiAudGltZWxpbmUtZ3JhcGgtc2lkZS5ldmVuIHsKQEAgLTM4NjksNiArMzg3MCwxMCBA
QCBvbC5icmVha3BvaW50LWxpc3QgewogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1
NSwgMTk0KTsKIH0KIAorLnRpbWVsaW5lLWRldGFpbHMgeworICAgIC13ZWJraXQtdXNlci1zZWxl
Y3Q6IHRleHQ7Cit9CisKIC50aW1lbGluZS1kZXRhaWxzLXJvdy10aXRsZSB7CiAgICAgZm9udC13
ZWlnaHQ6IGJvbGQ7CiAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CkBAIC0zODgyLDYgKzM4ODcsMTIg
QEAgb2wuYnJlYWtwb2ludC1saXN0IHsKIC50aW1lbGluZS1kZXRhaWxzLXRpdGxlIHsKICAgICBm
b250LXdlaWdodDogYm9sZDsKICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIHRleHQtb3Zl
cmZsb3c6IGVsbGlwc2lzOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgZm9udC1zaXplOiAx
MXB4OworICAgIHBhZGRpbmctbGVmdDogMTBweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogNXB4Owor
ICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMTk0LDE5NCwxNDcpOwogfQogCiAud29y
a2Vycy1saXN0IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50030</attachid>
            <date>2010-03-04 09:35:23 -0800</date>
            <delta_ts>2010-03-04 09:35:23 -0800</delta_ts>
            <desc>[PATCH] Variation of patch with extracted popover helper and fixed changelog.</desc>
            <filename>with_changelog</filename>
            <type>text/plain</type>
            <size>42299</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmU3Y2E5Yi4uZjQwY2MzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wMy0wNCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUG9wdXAgZm9yIFRpbWVsaW5lIHBh
bmVsIHdpbGwgd29yayBpbiBhIHRvb2x0aXAgbW9kZQorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTY4MAorCisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Qb3BvdmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlBvcG92ZXIucHJvdG90eXBlLl9wb3NpdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlBvcG92ZXJIZWxwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXJIZWxwZXIu
cHJvdG90eXBlLl9tb3VzZURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBvcG92ZXJIZWxw
ZXIucHJvdG90eXBlLl9tb3VzZU1vdmUuZG9IaWRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
b3BvdmVySGVscGVyLnByb3RvdHlwZS5fbW91c2VNb3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qb3BvdmVySGVscGVyLnByb3RvdHlwZS5fcmVzZXRIb3ZlclRpbWVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Qb3BvdmVySGVscGVyLnByb3RvdHlwZS5oaWRlUG9wdXApOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlBvcG92ZXJIZWxwZXIucHJvdG90eXBlLl9tb3VzZUhvdmVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qb3BvdmVySGVscGVyLnByb3RvdHlwZS5fa2lsbEhpZGVQb3B1cFRp
bWVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5l
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdQYW5lLnByb3RvdHlw
ZS5yZXNldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLmdldCBfcmVjb3JkU3R5bGVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5faW5uZXJBZGRSZWNvcmRU
b1RpbWVsaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZS5fc2NoZWR1bGVSZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LnByb3RvdHlwZS5fcmVmcmVzaFJlY29yZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucHJvdG90eXBlLl9hZGp1c3RTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2dldFBvcG92ZXJBbmNob3IpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9zaG93UG9wb3Zlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2Nsb3NlUmVj
b3JkRGV0YWlscyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRMaXN0Um93
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cucHJvdG90eXBl
LnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdy5wcm90b3R5cGUu
X29uQ2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVk
UmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJl
Y29yZC5wcm90b3R5cGUuX2NyZWF0ZUNlbGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fY3JlYXRlUm93KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUuX2Ny
ZWF0ZUxpbmtSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0
dGVkUmVjb3JkLnByb3RvdHlwZS5fZ2VuZXJhdGVQb3B1cENvbnRlbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fZ2V0UmVj
b3JkRGV0YWlscyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
OgorCiAyMDEwLTAzLTA0ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1BvcG92ZXIuanMKaW5kZXggODY2Y2IyNC4uOGY1NzRkMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1BvcG92ZXIuanMKQEAgLTM4LDYgKzM4LDggQEAgV2ViSW5zcGVjdG9yLlBvcG92
ZXIgPSBmdW5jdGlvbihjb250ZW50RWxlbWVudCkKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQpOwogCiAgICAgdGhpcy5jb250ZW50RWxlbWVudCA9
IGNvbnRlbnRFbGVtZW50OworICAgIHRoaXMuX2NvbnRlbnREaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9jb250ZW50RGl2LmNsYXNzTmFtZSA9ICJjb250ZW50
IjsKIH0KIAogV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewpAQCAtNTQsMjMgKzU2
LDE4IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHBy
ZWZlcnJlZFdpZHRoID0gcHJlZmVycmVkV2lkdGggfHwgdGhpcy5jb250ZW50RWxlbWVudC5vZmZz
ZXRXaWR0aDsKICAgICAgICAgdmFyIHByZWZlcnJlZEhlaWdodCA9IHByZWZlcnJlZEhlaWdodCB8
fCB0aGlzLmNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDsKIAotICAgICAgICB2YXIgY29udGVu
dERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBjb250ZW50RGl2
LmNsYXNzTmFtZSA9ICJjb250ZW50IjsKLSAgICAgICAgY29udGVudERpdi5hcHBlbmRDaGlsZCh0
aGlzLmNvbnRlbnRFbGVtZW50KTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGNv
bnRlbnREaXYpOworICAgICAgICB0aGlzLl9jb250ZW50RGl2LmFwcGVuZENoaWxkKHRoaXMuY29u
dGVudEVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29u
dGVudERpdik7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50
KTsKICAgICAgICAgdGhpcy5fcG9zaXRpb25FbGVtZW50KGFuY2hvciwgcHJlZmVycmVkV2lkdGgs
IHByZWZlcnJlZEhlaWdodCk7CiAgICAgfSwKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQ7Ci0g
ICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKLSAgICB9LAot
Ci0gICAgaGlkZVdoZW5DbGlja2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmhpZGUuYmluZCh0aGlzKSk7Cisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQpIHsKKyAgICAg
ICAgICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuUG9wb3Zlci5fcG9wb3ZlckVsZW1lbnQ7CisgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAg
IH0KICAgICB9LAogCiAgICAgX3Bvc2l0aW9uRWxlbWVudDogZnVuY3Rpb24oYW5jaG9yRWxlbWVu
dCwgcHJlZmVycmVkV2lkdGgsIHByZWZlcnJlZEhlaWdodCkKQEAgLTc4LDkgKzc1LDkgQEAgV2Vi
SW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAgICBjb25zdCBib3JkZXJXaWR0
aCA9IDI1OwogICAgICAgICBjb25zdCBzY3JvbGxlcldpZHRoID0gMTE7CiAgICAgICAgIGNvbnN0
IGFycm93SGVpZ2h0ID0gMTU7Ci0gICAgICAgIGNvbnN0IGFycm93T2Zmc2V0ID0gMTU7CisgICAg
ICAgIGNvbnN0IGFycm93T2Zmc2V0ID0gMTA7CiAgICAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9
IDEwOwotICAgICAgICAKKwogICAgICAgICAvLyBTa2lubnkgdG9vbHRpcHMgYXJlIG5vdCBwcmV0
dHksIHRoZWlyIGFycm93IGxvY2F0aW9uIGlzIG5vdCBuaWNlLgogICAgICAgICBwcmVmZXJyZWRX
aWR0aCA9IE1hdGgubWF4KHByZWZlcnJlZFdpZHRoLCA1MCk7CiAgICAgICAgIGNvbnN0IHRvdGFs
V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDsKQEAgLTEyMSwyMiArMTE4LDI1IEBAIFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgaG9yaXpvbnRhbEFsaWdu
bWVudDsKICAgICAgICAgaWYgKGFuY2hvckJveC54ICsgbmV3RWxlbWVudFBvc2l0aW9uLndpZHRo
IDwgdG90YWxXaWR0aCkgewotICAgICAgICAgICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSBNYXRo
Lm1heChib3JkZXJSYWRpdXMsIGFuY2hvckJveC54IC0gYXJyb3dPZmZzZXQpOworICAgICAgICAg
ICAgbmV3RWxlbWVudFBvc2l0aW9uLnggPSBNYXRoLm1heChib3JkZXJSYWRpdXMsIGFuY2hvckJv
eC54IC0gYm9yZGVyUmFkaXVzIC0gYXJyb3dPZmZzZXQpOwogICAgICAgICAgICAgaG9yaXpvbnRh
bEFsaWdubWVudCA9ICJsZWZ0IjsKICAgICAgICAgfSBlbHNlIGlmIChuZXdFbGVtZW50UG9zaXRp
b24ud2lkdGggKyBib3JkZXJSYWRpdXMgKiAyIDwgdG90YWxXaWR0aCkgewogICAgICAgICAgICAg
bmV3RWxlbWVudFBvc2l0aW9uLnggPSB0b3RhbFdpZHRoIC0gbmV3RWxlbWVudFBvc2l0aW9uLndp
ZHRoIC0gYm9yZGVyUmFkaXVzOwogICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudCA9ICJy
aWdodCI7CiAgICAgICAgICAgICAvLyBQb3NpdGlvbiBhcnJvdyBhY2N1cmF0ZWx5LgotICAgICAg
ICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUucmlnaHQgPSB0b3RhbFdpZHRoIC0g
YW5jaG9yQm94LnggLSBhbmNob3JCb3gud2lkdGggLSBib3JkZXJSYWRpdXMgKyAicHgiOworICAg
ICAgICAgICAgdmFyIGFycm93UmlnaHRQb3NpdGlvbiA9IE1hdGgubWF4KDAsIHRvdGFsV2lkdGgg
LSBhbmNob3JCb3gueCAtIGFuY2hvckJveC53aWR0aCAtIGJvcmRlclJhZGl1cyAtIGFycm93T2Zm
c2V0KTsKKyAgICAgICAgICAgIGFycm93UmlnaHRQb3NpdGlvbiArPSBhbmNob3JCb3gud2lkdGgg
LyAyOworICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUucmlnaHQgPSBh
cnJvd1JpZ2h0UG9zaXRpb24gKyAicHgiOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bmV3RWxlbWVudFBvc2l0aW9uLnggPSBib3JkZXJSYWRpdXM7Ci0gICAgICAgICAgICBuZXdFbGVt
ZW50UG9zaXRpb24ud2lkdGggPSB0b3RhbFdpZHRoIC0gc2Nyb2xsZXJXaWR0aCAtIGJvcmRlclJh
ZGl1cyAqIDI7CisgICAgICAgICAgICBuZXdFbGVtZW50UG9zaXRpb24ud2lkdGggPSB0b3RhbFdp
ZHRoIC0gYm9yZGVyUmFkaXVzICogMjsKICAgICAgICAgICAgIG5ld0VsZW1lbnRQb3NpdGlvbi5o
ZWlnaHQgKz0gc2Nyb2xsZXJXaWR0aDsKICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQg
PSAibGVmdCI7CiAgICAgICAgICAgICBpZiAodmVydGljYWxBbGlnbm1lbnQgPT09ICJib3R0b20i
KQogICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRQb3NpdGlvbi55IC09IHNjcm9sbGVyV2lkdGg7
CiAgICAgICAgICAgICAvLyBQb3NpdGlvbiBhcnJvdyBhY2N1cmF0ZWx5LgotICAgICAgICAgICAg
dGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCA9IGFuY2hvckJveC54ICsgInB4IjsK
KyAgICAgICAgICAgIHRoaXMuX3BvcHVwQXJyb3dFbGVtZW50LnN0eWxlLmxlZnQgPSBNYXRoLm1h
eCgwLCBhbmNob3JCb3gueCAtIGJvcmRlclJhZGl1cyAqIDIgLSBhcnJvd09mZnNldCkgKyAicHgi
OworICAgICAgICAgICAgdGhpcy5fcG9wdXBBcnJvd0VsZW1lbnQuc3R5bGUubGVmdCArPSBhbmNo
b3JCb3gud2lkdGggLyAyOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TmFtZSA9ICJwb3BvdmVyICIgKyB2ZXJ0aWNhbEFsaWdubWVudCArICItIiArIGhvcml6b250YWxB
bGlnbm1lbnQgKyAiLWFycm93IjsKQEAgLTE0NSwzICsxNDUsOTQgQEAgV2ViSW5zcGVjdG9yLlBv
cG92ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0g
bmV3RWxlbWVudFBvc2l0aW9uLmhlaWdodCArIGJvcmRlcldpZHRoICogMiArICJweCI7CiAgICAg
fQogfQorCitXZWJJbnNwZWN0b3IuUG9wb3ZlckhlbHBlciA9IGZ1bmN0aW9uKHBhbmVsRWxlbWVu
dCwgZ2V0QW5jaG9yLCBzaG93UG9wdXAsIHNob3dPbkNsaWNrLCBvbkhpZGUpCit7CisgICAgdGhp
cy5fcGFuZWxFbGVtZW50ID0gcGFuZWxFbGVtZW50OworICAgIHRoaXMuX2dldEFuY2hvciA9IGdl
dEFuY2hvcjsKKyAgICB0aGlzLl9zaG93UG9wdXAgPSBzaG93UG9wdXA7CisgICAgdGhpcy5fc2hv
d09uQ2xpY2sgPSBzaG93T25DbGljazsKKyAgICB0aGlzLl9vbkhpZGUgPSBvbkhpZGU7CisgICAg
cGFuZWxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93
bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgcGFuZWxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlbW92ZSIsIHRoaXMuX21vdXNlTW92ZS5iaW5kKHRoaXMpLCBmYWxzZSk7Cit9CisKK1dl
Ykluc3BlY3Rvci5Qb3BvdmVySGVscGVyLnByb3RvdHlwZSA9IHsKKyAgICBfbW91c2VEb3duOiBm
dW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc2V0SG92ZXJUaW1lcigpOwor
ICAgICAgICBpZiAodGhpcy5fc2hvd09uQ2xpY2spIHsKKyAgICAgICAgICAgIHZhciBhbmNob3Ig
PSB0aGlzLl9nZXRBbmNob3IoZXZlbnQudGFyZ2V0KTsKKyAgICAgICAgICAgIGlmIChhbmNob3Ip
IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3B1cCA9IHRoaXMuX3Nob3dQb3B1cChhbmNob3Ip
OworICAgICAgICAgICAgICAgIHRoaXMuX2tpbGxIaWRlUG9wdXBUaW1lcigpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfSwKKworICAgIF9tb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgLy8gUHJldGVuZCB0aGF0IG5vdGhpbmcgaGFzIGhhcHBlbmVkLgor
ICAgICAgICBpZiAodGhpcy5faG92ZXJFbGVtZW50ID09PSBldmVudC50YXJnZXQgfHwgKHRoaXMu
X2hvdmVyRWxlbWVudCAmJiB0aGlzLl9ob3ZlckVsZW1lbnQuaXNBbmNlc3RvcihldmVudC50YXJn
ZXQpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yZXNldEhvdmVyVGlt
ZXIoKTsKKyAgICAgICAgLy8gVXNlciBoYXMgNTAwbXMgdG8gcmVhY2ggdGhlIHBvcHVwLgorICAg
ICAgICBpZiAodGhpcy5fcG9wdXApIHsKKyAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGRvSGlkZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgc2VsZi5oaWRlUG9wdXAoKTsKKyAgICAgICAgICAgICAgICBkZWxldGUgc2VsZi5faGlkZVBv
cHVwVGltZXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9oaWRlUG9wdXBUaW1l
ciA9IHNldFRpbWVvdXQoZG9IaWRlLCA1MDApOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5f
aG92ZXJFbGVtZW50ID0gdGhpcy5fZ2V0QW5jaG9yKGV2ZW50LnRhcmdldCk7CisgICAgICAgIGlm
ICghdGhpcy5faG92ZXJFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNv
bnN0IHRvb2xUaXBEZWxheSA9IHRoaXMuX3BvcHVwID8gNjAwIDogMTAwMDsKKyAgICAgICAgdGhp
cy5faG92ZXJUaW1lciA9IHNldFRpbWVvdXQodGhpcy5fbW91c2VIb3Zlci5iaW5kKHRoaXMsIHRo
aXMuX2hvdmVyRWxlbWVudCksIHRvb2xUaXBEZWxheSk7CisgICAgfSwKKworICAgIF9yZXNldEhv
dmVyVGltZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9ob3ZlclRpbWVy
KSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5faG92ZXJUaW1lcik7CisgICAgICAg
ICAgICBkZWxldGUgdGhpcy5faG92ZXJUaW1lcjsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBo
aWRlUG9wdXA6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcG9wdXApCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX29uSGlkZSkKKyAgICAgICAg
ICAgIHRoaXMuX29uSGlkZSgpOworCisgICAgICAgIHRoaXMuX3BvcHVwLmhpZGUoKTsKKyAgICAg
ICAgZGVsZXRlIHRoaXMuX3BvcHVwOworICAgIH0sCisKKyAgICBfbW91c2VIb3ZlcjogZnVuY3Rp
b24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9ob3ZlclRpbWVyOworCisg
ICAgICAgIHRoaXMuX3BvcHVwID0gdGhpcy5fc2hvd1BvcHVwKGVsZW1lbnQpOworICAgICAgICB0
aGlzLl9wb3B1cC5jb250ZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0
aGlzLl9raWxsSGlkZVBvcHVwVGltZXIuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgfSwKKworICAg
IF9raWxsSGlkZVBvcHVwVGltZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9oaWRlUG9wdXBUaW1lcikgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVQ
b3B1cFRpbWVyKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9oaWRlUG9wdXBUaW1lcjsKKwor
ICAgICAgICAgICAgLy8gV2Uga25vdyB0aGF0IHdlIHJlYWNoZWQgdGhlIHBvcHVwLCBidXQgd2Ug
bWlnaHQgaGF2ZSBtb3ZlZCBvdmVyIG90aGVyIGVsZW1lbnRzLgorICAgICAgICAgICAgLy8gRGlz
Y2FyZCBwZW5kaW5nIGNvbW1hbmQuCisgICAgICAgICAgICB0aGlzLl9yZXNldEhvdmVyVGltZXIo
KTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UaW1lbGluZU92ZXJ2aWV3UGFuZS5qcwppbmRleCA4YWU4MzUyLi5kMmZlNjEzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVPdmVydmlld1BhbmUu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lT3ZlcnZpZXdQYW5l
LmpzCkBAIC0xNzUsNyArMTc1LDEwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3UGFu
ZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLndpbmRvd0xlZnQgPSAwLjA7CiAg
ICAgICAgIHRoaXMud2luZG93UmlnaHQgPSAxLjA7Ci0gICAgICAgIHRoaXMuX3NldFdpbmRvd1Bv
c2l0aW9uKDAsIHRoaXMuX292ZXJ2aWV3R3JpZC5lbGVtZW50LmNsaWVudFdpZHRoKTsKKyAgICAg
ICAgdGhpcy5fb3ZlcnZpZXdXaW5kb3dFbGVtZW50LnN0eWxlLmxlZnQgPSAiMCUiOworICAgICAg
ICB0aGlzLl9vdmVydmlld1dpbmRvd0VsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CisgICAg
ICAgIHRoaXMuX2xlZnRSZXNpemVFbGVtZW50LnN0eWxlLmxlZnQgPSAiMCUiOworICAgICAgICB0
aGlzLl9yaWdodFJlc2l6ZUVsZW1lbnQuc3R5bGUubGVmdCA9ICIxMDAlIjsKICAgICAgICAgdGhp
cy5fb3ZlcnZpZXdDYWxjdWxhdG9yLnJlc2V0KCk7CiAgICAgICAgIHRoaXMuX292ZXJ2aWV3R3Jp
ZC51cGRhdGVEaXZpZGVycyh0cnVlLCB0aGlzLl9vdmVydmlld0NhbGN1bGF0b3IpOwogICAgIH0s
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IDIx
YTc2YWYuLjg4NDk2MmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVBhbmVsLmpzCkBAIC04NCw2ICs4NCw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0g
ZnVuY3Rpb24oKQogICAgIHRoaXMuX2NhbGN1bGF0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQ2FsY3VsYXRvcigpOwogICAgIHRoaXMuX2JvdW5kYXJpZXNBcmVWYWxpZCA9IHRydWU7CiAg
ICAgdGhpcy5fc2Nyb2xsVG9wID0gMDsKKworICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlBvcG92ZXJIZWxwZXIodGhpcy5fY29udGFpbmVyRWxlbWVudCwgdGhpcy5f
Z2V0UG9wb3ZlckFuY2hvci5iaW5kKHRoaXMpLCB0aGlzLl9zaG93UG9wb3Zlci5iaW5kKHRoaXMp
LCB0cnVlKTsKIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewpA
QCAtMTExLDYgKzExMywzMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jYXRlZ29yaWVzOwogICAgIH0sCiAKKyAgICBnZXQg
X3JlY29yZFN0eWxlcygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3JlY29yZFN0eWxlc0Fy
cmF5KSB7CisgICAgICAgICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVBZ2VudC5SZWNvcmRUeXBlOworICAgICAgICAgICAgdmFyIHJlY29yZFN0eWxlcyA9IHt9Owor
ICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2ZW50RGlzcGF0Y2hdID0geyB0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFdmVudCIpLCBjYXRlZ29yeTogdGhpcy5jYXRl
Z29yaWVzLnNjcmlwdGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LkxheW91dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheW91dCIpLCBjYXRl
Z29yeTogdGhpcy5jYXRlZ29yaWVzLnJlbmRlcmluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5
bGVzW3JlY29yZFR5cGVzLlJlY2FsY3VsYXRlU3R5bGVzXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmVjYWxjdWxhdGUgU3R5bGUiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmll
cy5yZW5kZXJpbmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5QYWlu
dF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhaW50IiksIGNhdGVnb3J5OiB0
aGlzLmNhdGVnb3JpZXMucmVuZGVyaW5nIH07CisgICAgICAgICAgICByZWNvcmRTdHlsZXNbcmVj
b3JkVHlwZXMuUGFyc2VIVE1MXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFy
c2UiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5sb2FkaW5nIH07CisgICAgICAgICAgICBy
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZXJJbnN0YWxsXSA9IHsgdGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiSW5zdGFsbCBUaW1lciIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVz
LnNjcmlwdGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVy
UmVtb3ZlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIFRpbWVyIiks
IGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07CisgICAgICAgICAgICByZWNv
cmRTdHlsZXNbcmVjb3JkVHlwZXMuVGltZXJGaXJlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVGltZXIgRmlyZWQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRp
bmcgfTsKKyAgICAgICAgICAgIHJlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJSZWFkeVN0YXRl
Q2hhbmdlXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWEhSIFJlYWR5IFN0YXRl
IENoYW5nZSIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OworICAgICAg
ICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlhIUkxvYWRdID0geyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJYSFIgTG9hZCIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNj
cmlwdGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLkV2YWx1YXRl
U2NyaXB0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVhdGUgU2NyaXB0
IiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07CisgICAgICAgICAgICBy
ZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuTWFya1RpbWVsaW5lXSA9IHsgdGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTWFyayIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGlu
ZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlU2VuZFJl
cXVlc3RdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZW5kIFJlcXVlc3QiKSwg
Y2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5sb2FkaW5nIH07CisgICAgICAgICAgICByZWNvcmRT
dHlsZXNbcmVjb3JkVHlwZXMuUmVzb3VyY2VSZWNlaXZlUmVzcG9uc2VdID0geyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNlaXZlIFJlc3BvbnNlIiksIGNhdGVnb3J5OiB0aGlzLmNh
dGVnb3JpZXMubG9hZGluZyB9OworICAgICAgICAgICAgcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LlJlc291cmNlRmluaXNoXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmluaXNo
IExvYWRpbmciKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5sb2FkaW5nIH07CisgICAgICAg
ICAgICByZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuRnVuY3Rpb25DYWxsXSA9IHsgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRnVuY3Rpb24gQ2FsbCIpLCBjYXRlZ29yeTogdGhpcy5jYXRl
Z29yaWVzLnNjcmlwdGluZyB9OworICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzQXJyYXkg
PSByZWNvcmRTdHlsZXM7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZFN0
eWxlc0FycmF5OworICAgIH0sCisKICAgICBfY3JlYXRlU3RhdHVzYmFyQnV0dG9uczogZnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgdGhpcy50b2dnbGVUaW1lbGluZUJ1dHRvbiA9IG5ldyBXZWJJ
bnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAicmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1p
dGVtIik7CkBAIC0xNDYsNyArMTc0LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgX2lubmVyQWRkUmVjb3JkVG9UaW1lbGluZTogZnVuY3Rpb24ocmVj
b3JkLCBjb2xsZWN0aW9uKQogICAgIHsKLSAgICAgICAgdmFyIGZvcm1hdHRlZFJlY29yZCA9IHRo
aXMuX2Zvcm1hdFJlY29yZChyZWNvcmQpOworICAgICAgICB2YXIgZm9ybWF0dGVkUmVjb3JkID0g
bmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZChyZWNvcmQsIHRo
aXMuX3JlY29yZFN0eWxlcywgdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzLCB0aGlzLl90aW1lclJl
Y29yZHMpOwogCiAgICAgICAgIC8vIEdsdWUgc3Vic2VxdWVudCByZWNvcmRzIHdpdGggc2FtZSBj
YXRlZ29yeSBhbmQgdGl0bGUgdG9nZXRoZXIgaWYgdGhleSBhcmUgY2xvc2VyIHRoYW4gMTAwbXMg
dG8gZWFjaCBvdGhlci4KICAgICAgICAgaWYgKHRoaXMuX2xhc3RSZWNvcmQgJiYgKCFyZWNvcmQu
Y2hpbGRyZW4gfHwgIXJlY29yZC5jaGlsZHJlbi5sZW5ndGgpICYmCkBAIC0xNzEsMTEyICsxOTks
NiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiBmb3JtYXR0ZWRSZWNvcmQ7CiAgICAgfSwKIAotICAgIF9mb3JtYXRSZWNvcmQ6IGZ1bmN0
aW9uKHJlY29yZCkKLSAgICB7Ci0gICAgICAgIHZhciByZWNvcmRUeXBlcyA9IFdlYkluc3BlY3Rv
ci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGU7Ci0gICAgICAgIGlmICghdGhpcy5fcmVjb3JkU3R5
bGVzKSB7Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXMgPSB7fTsKLSAgICAgICAgICAg
IHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXSA9IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZlbnQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmll
cy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBl
cy5MYXlvdXRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQiKSwgY2F0
ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5yZW5kZXJpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3Jl
Y29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZWNhbGN1bGF0ZVN0eWxlc10gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlY2FsY3VsYXRlIFN0eWxlIiksIGNhdGVnb3J5OiB0aGlzLmNh
dGVnb3JpZXMucmVuZGVyaW5nIH07Ci0gICAgICAgICAgICB0aGlzLl9yZWNvcmRTdHlsZXNbcmVj
b3JkVHlwZXMuUGFpbnRdID0geyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYWludCIp
LCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnJlbmRlcmluZyB9OwotICAgICAgICAgICAgdGhp
cy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlBhcnNlSFRNTF0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlBhcnNlIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGlu
ZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlRpbWVySW5z
dGFsbF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluc3RhbGwgVGltZXIiKSwg
Y2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMu
X3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5UaW1lclJlbW92ZV0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSBUaW1lciIpLCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVz
LnNjcmlwdGluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LlRpbWVyRmlyZV0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVyIEZpcmVk
IiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMuc2NyaXB0aW5nIH07Ci0gICAgICAgICAgICB0
aGlzLl9yZWNvcmRTdHlsZXNbcmVjb3JkVHlwZXMuWEhSUmVhZHlTdGF0ZUNoYW5nZV0gPSB7IHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlhIUiBSZWFkeSBTdGF0ZSBDaGFuZ2UiKSwgY2F0
ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3Jl
Y29yZFN0eWxlc1tyZWNvcmRUeXBlcy5YSFJMb2FkXSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiWEhSIExvYWQiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcg
fTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5FdmFsdWF0ZVNj
cmlwdF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2YWx1YXRlIFNjcmlwdCIp
LCBjYXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLnNjcmlwdGluZyB9OwotICAgICAgICAgICAgdGhp
cy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLk1hcmtUaW1lbGluZV0gPSB7IHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk1hcmsiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3Jp
cHRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNv
dXJjZVNlbmRSZXF1ZXN0XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VuZCBS
ZXF1ZXN0IiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3JpZXMubG9hZGluZyB9OwotICAgICAgICAg
ICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVzLlJlc291cmNlUmVjZWl2ZVJlc3BvbnNl
XSA9IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjZWl2ZSBSZXNwb25zZSIpLCBj
YXRlZ29yeTogdGhpcy5jYXRlZ29yaWVzLmxvYWRpbmcgfTsKLSAgICAgICAgICAgIHRoaXMuX3Jl
Y29yZFN0eWxlc1tyZWNvcmRUeXBlcy5SZXNvdXJjZUZpbmlzaF0gPSB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkZpbmlzaCBMb2FkaW5nIiksIGNhdGVnb3J5OiB0aGlzLmNhdGVnb3Jp
ZXMubG9hZGluZyB9OwotICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3R5bGVzW3JlY29yZFR5cGVz
LkZ1bmN0aW9uQ2FsbF0gPSB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9u
IENhbGwiKSwgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5zY3JpcHRpbmcgfTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhciBzdHlsZSA9IHRoaXMuX3JlY29yZFN0eWxlc1tyZWNvcmQudHlwZV07
Ci0gICAgICAgIGlmICghc3R5bGUpCi0gICAgICAgICAgICBzdHlsZSA9IHRoaXMuX3JlY29yZFN0
eWxlc1tyZWNvcmRUeXBlcy5FdmVudERpc3BhdGNoXTsKLQotICAgICAgICB2YXIgZm9ybWF0dGVk
UmVjb3JkID0ge307Ci0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYXRlZ29yeSA9IHN0eWxlLmNh
dGVnb3J5OwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudGl0bGUgPSBzdHlsZS50aXRsZTsKLSAg
ICAgICAgZm9ybWF0dGVkUmVjb3JkLnN0YXJ0VGltZSA9IHJlY29yZC5zdGFydFRpbWUgLyAxMDAw
OwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuZGF0YSA9IHJlY29yZC5kYXRhOwotICAgICAgICBm
b3JtYXR0ZWRSZWNvcmQuY291bnQgPSAxOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQudHlwZSA9
IHJlY29yZC50eXBlOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuZW5kVGltZSA9ICh0eXBlb2Yg
cmVjb3JkLmVuZFRpbWUgIT09ICJ1bmRlZmluZWQiKSA/IHJlY29yZC5lbmRUaW1lIC8gMTAwMCA6
IGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWU7Ci0gICAgICAgIGZvcm1hdHRlZFJlY29yZC5vcmln
aW5hbFJlY29yZEZvclRlc3RzID0gcmVjb3JkOwotICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY2Fs
bGVyU2NyaXB0TmFtZSA9IHJlY29yZC5jYWxsZXJTY3JpcHROYW1lOwotICAgICAgICBmb3JtYXR0
ZWRSZWNvcmQuY2FsbGVyU2NyaXB0TGluZSA9IHJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwotCi0g
ICAgICAgIC8vIE1ha2UgcmVzb3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1ZXN0
IHdhcyBzZW50OyBtYWtlIGZpbmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNwb25zZSByZWNlaXZl
ZC4KLSAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIHRoaXMuX3Nl
bmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YS5pZGVudGlmaWVyXSA9IGZvcm1hdHRlZFJlY29y
ZDsKLSAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZSkgewotICAgICAgICAg
ICAgdmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29y
ZC5kYXRhLmlkZW50aWZpZXJdOwotICAgICAgICAgICAgaWYgKHNlbmRSZXF1ZXN0UmVjb3JkKSB7
IC8vIEZhbHNlIGlmIHdlIHN0YXJ0ZWQgaW5zdHJ1bWVudGF0aW9uIGluIHRoZSBtaWRkbGUgb2Yg
cmVxdWVzdC4KLSAgICAgICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVzcG9uc2VSZWNl
aXZlZEZvcm1hdHRlZFRpbWUgPSBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1lOwotICAgICAgICAg
ICAgICAgIGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWUgPSBzZW5kUmVxdWVzdFJlY29yZC5zdGFy
dFRpbWU7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmRldGFpbHMgPSB0aGlzLl9n
ZXRSZWNvcmREZXRhaWxzKHNlbmRSZXF1ZXN0UmVjb3JkKTsKLSAgICAgICAgICAgICAgICBmb3Jt
YXR0ZWRSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNj
cmlwdE5hbWU7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmNhbGxlclNjcmlwdExp
bmUgPSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlJlc291cmNlRmluaXNoKSB7Ci0gICAgICAgICAgICB2YXIgc2VuZFJl
cXVlc3RSZWNvcmQgPSB0aGlzLl9zZW5kUmVxdWVzdFJlY29yZHNbcmVjb3JkLmRhdGEuaWRlbnRp
Zmllcl07Ci0gICAgICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIHsvLyBGYWxzZSBmb3Ig
bWFpbiByZXNvdXJjZS4KLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc3RhcnRUaW1l
ID0gc2VuZFJlcXVlc3RSZWNvcmQuX3Jlc3BvbnNlUmVjZWl2ZWRGb3JtYXR0ZWRUaW1lOwotICAg
ICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYWxsZXJTY3JpcHROYW1lID0gc2VuZFJlcXVl
c3RSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNv
cmQuY2FsbGVyU2NyaXB0TGluZSA9IHNlbmRSZXF1ZXN0UmVjb3JkLmNhbGxlclNjcmlwdExpbmU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJJbnN0YWxsKSB7Ci0gICAgICAg
ICAgICBmb3JtYXR0ZWRSZWNvcmQudGltZW91dCA9IHJlY29yZC5kYXRhLnRpbWVvdXQ7Ci0gICAg
ICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc2luZ2xlU2hvdCA9IHJlY29yZC5kYXRhLnNpbmdsZVNo
b3Q7Ci0gICAgICAgICAgICB0aGlzLl90aW1lclJlY29yZHNbcmVjb3JkLmRhdGEudGltZXJJZF0g
PSBmb3JtYXR0ZWRSZWNvcmQ7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFdl
Ykluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJGaXJlIHx8Ci0gICAgICAg
ICAgICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJl
Y29yZFR5cGUuVGltZXJSZW1vdmUpIHsKLSAgICAgICAgICAgIHZhciB0aW1lckluc3RhbGxlZFJl
Y29yZCA9IHRoaXMuX3RpbWVyUmVjb3Jkc1tyZWNvcmQuZGF0YS50aW1lcklkXTsKLSAgICAgICAg
ICAgIGlmICh0aW1lckluc3RhbGxlZFJlY29yZCkgewotICAgICAgICAgICAgICAgIGZvcm1hdHRl
ZFJlY29yZC5jYWxsU2l0ZVNjcmlwdE5hbWUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJT
Y3JpcHROYW1lOwotICAgICAgICAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5jYWxsU2l0ZVNjcmlw
dExpbmUgPSB0aW1lckluc3RhbGxlZFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOwotICAgICAgICAg
ICAgICAgIGZvcm1hdHRlZFJlY29yZC50aW1lb3V0ID0gdGltZXJJbnN0YWxsZWRSZWNvcmQudGlt
ZW91dDsKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuc2luZ2xlU2hvdCA9IHRpbWVy
SW5zdGFsbGVkUmVjb3JkLnNpbmdsZVNob3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgZm9ybWF0dGVkUmVjb3JkLmRldGFpbHMgPSB0aGlzLl9nZXRSZWNvcmREZXRhaWxzKHJl
Y29yZCk7Ci0KLSAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlY29yZDsKLSAgICB9LAotCi0gICAg
X2dldFJlY29yZERldGFpbHM6IGZ1bmN0aW9uKHJlY29yZCkKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAocmVjb3JkLnR5cGUpIHsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuZGlzcGxheU5hbWVGb3JVUkwocmVjb3JkLmRhdGEuc2NyaXB0TmFtZSArICI6IiArIHJlY29y
ZC5kYXRhLnNjcmlwdExpbmUpOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFn
ZW50LlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKLSAgICAgICAgICAgIHJldHVybiByZWNvcmQu
ZGF0YSA/IHJlY29yZC5kYXRhLnR5cGUgOiAiIjsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlBhaW50OgotICAgICAgICAgICAgcmV0dXJuIHJlY29y
ZC5kYXRhLndpZHRoICsgIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyByZWNvcmQuZGF0YS5oZWlnaHQ7
Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1l
ckluc3RhbGw6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3Jk
VHlwZS5UaW1lclJlbW92ZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLlRpbWVyRmlyZToKLSAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0YS50
aW1lcklkOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5
cGUuWEhSUmVhZHlTdGF0ZUNoYW5nZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVBZ2VudC5SZWNvcmRUeXBlLlhIUkxvYWQ6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdDoKLSAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3Q6Ci0g
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHJlY29yZC5k
YXRhLnVybCk7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3Jk
VHlwZS5SZXNvdXJjZVJlY2VpdmVSZXNwb25zZToKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlRmluaXNoOgotICAgICAgICAgICAgdmFy
IHNlbmRSZXF1ZXN0UmVjb3JkID0gdGhpcy5fc2VuZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRh
LmlkZW50aWZpZXJdOwotICAgICAgICAgICAgcmV0dXJuIHNlbmRSZXF1ZXN0UmVjb3JkID8gV2Vi
SW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNlbmRSZXF1ZXN0UmVjb3JkLmRhdGEudXJsKSA6
ICIiOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUu
TWFya1RpbWVsaW5lOgotICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5kYXRhLm1lc3NhZ2U7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICAgIH0KLSAgICB9
LAotCiAgICAgc2V0U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRoLmNhbGwodGhpcywg
d2lkdGgpOwpAQCAtMzA5LDE2ICsyMzEsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWlscygpOwogICAgIH0s
CiAKLSAgICBfY2xvc2VSZWNvcmREZXRhaWxzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2
YXIgZGV0YWlscyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHM7Ci0g
ICAgICAgIGlmIChkZXRhaWxzKSB7Ci0gICAgICAgICAgICBkZXRhaWxzLmhpZGUoKTsKLSAgICAg
ICAgICAgIGRlbGV0ZSBkZXRhaWxzOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucmVjb3JkRGV0YWlscyA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9LAotCiAgICAgc2hv
dzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlw
ZS5zaG93LmNhbGwodGhpcyk7CkBAIC0zNDQsNiArMjU2LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX3NjaGVkdWxlUmVmcmVzaDogZnVuY3Rpb24o
cHJlc2VydmVCb3VuZGFyaWVzKQogICAgIHsKKyAgICAgICAgaWYgKHByZXNlcnZlQm91bmRhcmll
cykKKyAgICAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWlscygpOwogICAgICAgICB0aGlz
Ll9ib3VuZGFyaWVzQXJlVmFsaWQgJj0gcHJlc2VydmVCb3VuZGFyaWVzOwogICAgICAgICBpZiAo
dGhpcy5fbmVlZHNSZWZyZXNoKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDIxLDYgKzMzNSw3
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5faXRlbXNHcmFwaHNFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2dyYXBoUm93c0VsZW1lbnQp
OwogICAgICAgICB2YXIgZ3JhcGhSb3dFbGVtZW50ID0gdGhpcy5fZ3JhcGhSb3dzRWxlbWVudC5m
aXJzdENoaWxkOwogICAgICAgICB2YXIgc2NoZWR1bGVSZWZyZXNoQ2FsbGJhY2sgPSB0aGlzLl9z
Y2hlZHVsZVJlZnJlc2guYmluZCh0aGlzLCB0cnVlKTsKKwogICAgICAgICBmb3IgKHZhciBpID0g
c3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OyArK2kpIHsKICAgICAgICAgICAgIHZhciByZWNvcmQg
PSByZWNvcmRzSW5XaW5kb3dbaV07CiAgICAgICAgICAgICB2YXIgaXNFdmVuID0gIShpICUgMik7
CkBAIC00MzQsOCArMzQ5LDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIHRoaXMuX2dyYXBoUm93c0VsZW1lbnQuYXBwZW5kQ2hpbGQo
Z3JhcGhSb3dFbGVtZW50KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbGlzdFJvd0Vs
ZW1lbnQubGlzdFJvdy51cGRhdGUocmVjb3JkLCBpc0V2ZW4sIHRoaXMuX2NhbGN1bGF0b3IsIHZp
c2libGVUb3ApOwotICAgICAgICAgICAgZ3JhcGhSb3dFbGVtZW50LmdyYXBoUm93LnVwZGF0ZShy
ZWNvcmQsIGlzRXZlbiwgdGhpcy5fY2FsY3VsYXRvciwgd2lkdGgsIGV4cGFuZE9mZnNldCwgaSk7
CisgICAgICAgICAgICBsaXN0Um93RWxlbWVudC5yb3cudXBkYXRlKHJlY29yZCwgaXNFdmVuLCB0
aGlzLl9jYWxjdWxhdG9yLCB2aXNpYmxlVG9wKTsKKyAgICAgICAgICAgIGdyYXBoUm93RWxlbWVu
dC5yb3cudXBkYXRlKHJlY29yZCwgaXNFdmVuLCB0aGlzLl9jYWxjdWxhdG9yLCB3aWR0aCwgZXhw
YW5kT2Zmc2V0LCBpKTsKIAogICAgICAgICAgICAgbGlzdFJvd0VsZW1lbnQgPSBsaXN0Um93RWxl
bWVudC5uZXh0U2libGluZzsKICAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudCA9IGdyYXBoUm93
RWxlbWVudC5uZXh0U2libGluZzsKQEAgLTQ0NCwxMiArMzU5LDEyIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUmVtb3ZlIGV4dHJhIHJvd3Mu
CiAgICAgICAgIHdoaWxlIChsaXN0Um93RWxlbWVudCkgewogICAgICAgICAgICAgdmFyIG5leHRF
bGVtZW50ID0gbGlzdFJvd0VsZW1lbnQubmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICBsaXN0Um93
RWxlbWVudC5saXN0Um93LmRpc3Bvc2UoKTsKKyAgICAgICAgICAgIGxpc3RSb3dFbGVtZW50LnJv
dy5kaXNwb3NlKCk7CiAgICAgICAgICAgICBsaXN0Um93RWxlbWVudCA9IG5leHRFbGVtZW50Owog
ICAgICAgICB9CiAgICAgICAgIHdoaWxlIChncmFwaFJvd0VsZW1lbnQpIHsKICAgICAgICAgICAg
IHZhciBuZXh0RWxlbWVudCA9IGdyYXBoUm93RWxlbWVudC5uZXh0U2libGluZzsKLSAgICAgICAg
ICAgIGdyYXBoUm93RWxlbWVudC5ncmFwaFJvdy5kaXNwb3NlKCk7CisgICAgICAgICAgICBncmFw
aFJvd0VsZW1lbnQucm93LmRpc3Bvc2UoKTsKICAgICAgICAgICAgIGdyYXBoUm93RWxlbWVudCA9
IG5leHRFbGVtZW50OwogICAgICAgICB9CiAKQEAgLTQ3NywxMiArMzkyLDI5IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUHJldmVudCB0aGUg
Y29udGFpbmVyIGZyb20gYmVpbmcgc2Nyb2xsZWQgb2ZmIHRoZSBlbmQuCiAgICAgICAgIGlmICgo
dGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3AgKyB0aGlzLl9jb250YWluZXJFbGVtZW50
Lm9mZnNldEhlaWdodCkgPiB0b3RhbEhlaWdodCArIDEpCiAgICAgICAgICAgICB0aGlzLl9jb250
YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9ICh0b3RhbEhlaWdodCAtIHRoaXMuX2NvbnRhaW5lckVs
ZW1lbnQub2Zmc2V0SGVpZ2h0KTsKKyAgICB9LAorCisgICAgX2dldFBvcG92ZXJBbmNob3I6IGZ1
bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC5lbmNsb3NpbmdO
b2RlT3JTZWxmV2l0aENsYXNzKCJ0aW1lbGluZS1ncmFwaC1iYXIiKSB8fCBlbGVtZW50LmVuY2xv
c2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoInRpbWVsaW5lLXRyZWUtaXRlbSIpOworICAgIH0sCisK
KyAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9uKGFuY2hvcikKKyAgICB7CisgICAgICAgIHZhciBy
ZWNvcmQgPSBhbmNob3Iucm93Ll9yZWNvcmQ7CisgICAgICAgIHZhciBwb3BvdmVyID0gbmV3IFdl
Ykluc3BlY3Rvci5Qb3BvdmVyKHJlY29yZC5fZ2VuZXJhdGVQb3B1cENvbnRlbnQodGhpcy5fY2Fs
Y3VsYXRvcikpOworICAgICAgICBwb3BvdmVyLnNob3coYW5jaG9yKTsKKyAgICAgICAgcmV0dXJu
IHBvcG92ZXI7CisgICAgfSwKKworICAgIF9jbG9zZVJlY29yZERldGFpbHM6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuaGlkZVBvcHVwKCk7CiAgICAgfQog
fQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKIAotCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYXRl
Z29yeSA9IGZ1bmN0aW9uKG5hbWUsIHRpdGxlLCBjb2xvcikKIHsKICAgICB0aGlzLm5hbWUgPSBu
YW1lOwpAQCAtNDkwLDcgKzQyMiw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNhdGVnb3J5ID0g
ZnVuY3Rpb24obmFtZSwgdGl0bGUsIGNvbG9yKQogICAgIHRoaXMuY29sb3IgPSBjb2xvcjsKIH0K
IAotCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yID0gZnVuY3Rpb24oKQogewogICAg
IHRoaXMucmVzZXQoKTsKQEAgLTU0MSw3ICs0NzIsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVD
YWxjdWxhdG9yLnByb3RvdHlwZSA9IHsKIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RS
b3cgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5lbGVtZW50Lmxpc3RSb3cgPSB0aGlzOworICAgIHRoaXMu
ZWxlbWVudC5yb3cgPSB0aGlzOwogICAgIHRoaXMuZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9p
bnRlciI7CiAgICAgdmFyIGljb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwogICAgIGljb25FbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS10cmVlLWljb24iOwpA
QCAtNTY0LDcgKzQ5NSw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZExpc3RSb3cgPSBm
dW5jdGlvbigpCiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNlcGFyYXRvckVsZW1lbnQp
OwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhRWxlbWVudCk7CiAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlcGVhdENvdW50RWxlbWVudCk7Ci0gICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25DbGljay5iaW5k
KHRoaXMpKTsKIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkTGlzdFJvdy5wcm90b3R5
cGUgPSB7CkBAIC01NzcsMTMgKzUwNywxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRM
aXN0Um93LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJ0
aW1lbGluZS10cmVlLWl0ZW0gdGltZWxpbmUtY2F0ZWdvcnktIiArIHJlY29yZC5jYXRlZ29yeS5u
YW1lICsgKGlzRXZlbiA/ICIgZXZlbiIgOiAiIik7CiAgICAgICAgIHRoaXMuX3R5cGVFbGVtZW50
LnRleHRDb250ZW50ID0gcmVjb3JkLnRpdGxlOwogCi0gICAgICAgIGlmIChyZWNvcmQuZGV0YWls
cykgeworICAgICAgICBpZiAocmVjb3JkLmRldGFpbHMpCiAgICAgICAgICAgICB0aGlzLl9kYXRh
RWxlbWVudC50ZXh0Q29udGVudCA9ICIoIiArIHJlY29yZC5kZXRhaWxzICsgIikiOwotICAgICAg
ICAgICAgdGhpcy5fZGF0YUVsZW1lbnQudGl0bGUgPSByZWNvcmQuZGV0YWlsczsKLSAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZGF0YUVsZW1lbnQudGV4
dENvbnRlbnQgPSAiIjsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFFbGVtZW50LnRpdGxlID0gIiI7
Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAocmVjb3JkLmNvdW50ID4gMSkKICAgICAgICAgICAg
IHRoaXMuX3JlcGVhdENvdW50RWxlbWVudC50ZXh0Q29udGVudCA9ICJcdTIwMDlcdTAwZDdcdTIw
MDkiICsgcmVjb3JkLmNvdW50OwpAQCAtNTkxLDk2ICs1MTgsMTYgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkTGlzdFJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZXBl
YXRDb3VudEVsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKICAgICB9LAogCi0gICAgX2NyZWF0ZUNl
bGw6IGZ1bmN0aW9uKGNvbnRlbnQsIHN0eWxlTmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKLSAgICAgICAgdGV4dC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7Ci0gICAgICAgIHZhciBjZWxs
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgY2VsbC5jbGFzc05hbWUg
PSAidGltZWxpbmUtZGV0YWlscyI7Ci0gICAgICAgIGlmIChzdHlsZU5hbWUpCi0gICAgICAgICAg
ICAgY2VsbC5jbGFzc05hbWUgKz0gIiAiICsgc3R5bGVOYW1lOwotICAgICAgICBjZWxsLnRleHRD
b250ZW50ID0gY29udGVudDsKLSAgICAgICAgcmV0dXJuIGNlbGw7Ci0gICAgfSwKLQotICAgIF9j
cmVhdGVSb3c6IGZ1bmN0aW9uKHRpdGxlLCBjb250ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHJv
dyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGls
ZCh0aGlzLl9jcmVhdGVDZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKSk7
Ci0gICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKGNvbnRlbnQsICJ0aW1l
bGluZS1kZXRhaWxzLXJvdy1kYXRhIikpOwotICAgICAgICByZXR1cm4gcm93OwotICAgIH0sCi0K
LSAgICBfY3JlYXRlTGlua1JvdzogZnVuY3Rpb24odGl0bGUsIGNvbnRlbnQpCi0gICAgewotICAg
ICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0aW1lbGluZS1kZXRhaWxzLXJv
dy10aXRsZSIpKTsKLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
ZCIpOwotICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGNvbnRlbnQpOwotICAgICAgICByb3cuYXBw
ZW5kQ2hpbGQoY2VsbCk7Ci0gICAgICAgIHJldHVybiByb3c7Ci0gICAgfSwKLQotICAgIF9nZW5l
cmF0ZUJ1YmJsZUNvbnRlbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBidWJibGVD
b250ZW50VGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotICAgICAgICB2
YXIgdGl0bGVDZWxsID0gdGhpcy5fY3JlYXRlQ2VsbChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVz
IC0gRGV0YWlscyIsIHRoaXMuX3JlY29yZC50aXRsZSksICJ0aW1lbGluZS1kZXRhaWxzLXRpdGxl
Iik7Ci0gICAgICAgIHRpdGxlQ2VsbC5jb2xTcGFuID0gMjsKLSAgICAgICAgdGl0bGVDZWxsLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOwotICAgICAgICB2YXIgdGl0
bGVSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAgICB0aXRsZVJvdy5h
cHBlbmRDaGlsZCh0aXRsZUNlbGwpOwotICAgICAgICBidWJibGVDb250ZW50VGFibGUuYXBwZW5k
Q2hpbGQodGl0bGVSb3cpOwotICAgICAgICB2YXIgdGV4dCA9IE51bWJlci5zZWNvbmRzVG9TdHJp
bmcodGhpcy5fcmVjb3JkLmVuZFRpbWUgLSB0aGlzLl9yZWNvcmQuc3RhcnRUaW1lKSArICIgKEAi
ICsKLSAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0b3IuZm9ybWF0VmFsdWUodGhpcy5fcmVjb3Jk
LnN0YXJ0VGltZSAtIHRoaXMuX2NhbGN1bGF0b3IubWluaW11bUJvdW5kYXJ5KSArICIpIjsKLSAg
ICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIiksIHRleHQpKTsKLQotICAgICAgICBpZiAodGhp
cy5fcmVjb3JkLmRldGFpbHMpIHsKLSAgICAgICAgICAgIGlmICggdGhpcy5fcmVjb3JkLnR5cGUg
PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckluc3RhbGwgfHwK
LSAgICAgICAgICAgICAgICAgdGhpcy5fcmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckZpcmUgfHwKLSAgICAgICAgICAgICAgICAgdGhpcy5f
cmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1l
clJlbW92ZSkgewotICAgICAgICAgICAgICAgIGJ1YmJsZUNvbnRlbnRUYWJsZS5hcHBlbmRDaGls
ZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lcklkIiksIHRoaXMu
X3JlY29yZC5kYXRhLnRpbWVySWQpKTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmVjb3Jk
LnRpbWVvdXQpIHsKLSAgICAgICAgICAgICAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVu
ZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVvdXQiKSwg
dGhpcy5fcmVjb3JkLnRpbWVvdXQpKTsKLSAgICAgICAgICAgICAgICAgICAgYnViYmxlQ29udGVu
dFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlcGVhdHMiKSwgIXRoaXMuX3JlY29yZC5zaW5nbGVTaG90KSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmICh0aGlzLl9yZWNvcmQuY2FsbFNpdGVTY3JpcHRMaW5lKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNv
dXJjZUFzTm9kZSh0aGlzLl9yZWNvcmQuY2FsbFNpdGVTY3JpcHROYW1lLCAic2NyaXB0cyIsIHRo
aXMuX3JlY29yZC5jYWxsU2l0ZVNjcmlwdExpbmUpOwotICAgICAgICAgICAgICAgICAgICBidWJi
bGVDb250ZW50VGFibGUuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGlua1JvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNhbGwgU2l0ZSIpLCBsaW5rKSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlIGlmICggdGhpcy5fcmVjb3JkLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGwgKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMuX3JlY29y
ZC5kYXRhLnNjcmlwdE5hbWUsICJzY3JpcHRzIiwgdGhpcy5fcmVjb3JkLmRhdGEuc2NyaXB0TGlu
ZSk7Ci0gICAgICAgICAgICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMu
X2NyZWF0ZUxpbmtSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhdGlvbiIpLCBsaW5rKSk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBidWJibGVDb250ZW50VGFibGUu
YXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGV0YWls
cyIpLCB0aGlzLl9yZWNvcmQuZGV0YWlscykpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRo
aXMuX3JlY29yZC5jYWxsZXJTY3JpcHROYW1lKSB7Ci0gICAgICAgICAgICB2YXIgbGluayA9IFdl
Ykluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodGhpcy5fcmVjb3JkLmNhbGxlclNjcmlw
dE5hbWUsICJzY3JpcHRzIiwgdGhpcy5fcmVjb3JkLmNhbGxlclNjcmlwdExpbmUpOwotICAgICAg
ICAgICAgYnViYmxlQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUxpbmtSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxsZXIiKSwgbGluaykpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBidWJibGVDb250ZW50VGFibGU7Ci0gICAgfSwKLQotICAgIF9vbkNsaWNrOiBm
dW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZWNvcmQpIHsKLSAgICAg
ICAgICAgIHZhciBkZXRhaWxzID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMuX2dlbmVy
YXRlQnViYmxlQ29udGVudCgpKTsKLSAgICAgICAgICAgIGRldGFpbHMuaGlkZVdoZW5DbGlja2Vk
KCk7Ci0gICAgICAgICAgICBkZXRhaWxzLnNob3codGhpcy5lbGVtZW50KTsKLSAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJlY29yZERldGFpbHMgPSBkZXRhaWxzOwotICAg
ICAgICB9Ci0gICAgfSwKLQogICAgIGRpc3Bvc2U6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IHRoaXMuZWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7CiAg
ICAgfQogfQogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdyA9IGZ1bmN0aW9u
KGdyYXBoQ29udGFpbmVyLCByZWZyZXNoQ2FsbGJhY2ssIHJvd0hlaWdodCkKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEdyYXBoUm93ID0gZnVuY3Rpb24oZ3JhcGhDb250YWluZXIsIHNjaGVk
dWxlUmVmcmVzaCwgcm93SGVpZ2h0KQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxlbWVudC5ncmFwaFJvdyA9IHRoaXM7Cisg
ICAgdGhpcy5lbGVtZW50LnJvdyA9IHRoaXM7CiAKICAgICB0aGlzLl9iYXJBcmVhRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckFyZWFFbGVtZW50
LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1ncmFwaC1iYXItYXJlYSI7CkBAIC02ODgsNiArNTM1LDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cgPSBmdW5jdGlvbihncmFwaENv
bnRhaW5lciwgcmVmcmVzaENhbGxiYWNrLAogCiAgICAgdGhpcy5fYmFyRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2JhckVsZW1lbnQuY2xhc3NOYW1l
ID0gInRpbWVsaW5lLWdyYXBoLWJhciI7CisgICAgdGhpcy5fYmFyRWxlbWVudC5yb3cgPSB0aGlz
OwogICAgIHRoaXMuX2JhckFyZWFFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JhckVsZW1lbnQp
OwogCiAgICAgdGhpcy5fZXhwYW5kRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwpAQCAtNjk5LDggKzU0Nyw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEdyYXBo
Um93ID0gZnVuY3Rpb24oZ3JhcGhDb250YWluZXIsIHJlZnJlc2hDYWxsYmFjaywKICAgICB0aGlz
Ll9leHBhbmRFbGVtZW50LmFwcGVuZENoaWxkKGxlZnRCb3JkZXIpOwogCiAgICAgdGhpcy5fZXhw
YW5kRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xpY2suYmluZCh0
aGlzKSk7Ci0gICAgdGhpcy5fcmVmcmVzaENhbGxiYWNrID0gcmVmcmVzaENhbGxiYWNrOwogICAg
IHRoaXMuX3Jvd0hlaWdodCA9IHJvd0hlaWdodDsKKworICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVz
aCA9IHNjaGVkdWxlUmVmcmVzaDsKIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3Jh
cGhSb3cucHJvdG90eXBlID0gewpAQCAtNzM2LDcgKzU4NSw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZEdyYXBoUm93LnByb3RvdHlwZSA9IHsKICAgICBfb25DbGljazogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmQuY29sbGFwc2VkID0gIXRoaXMuX3Jl
Y29yZC5jb2xsYXBzZWQ7Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hDYWxsYmFjaygpOworICAgICAg
ICB0aGlzLl9zY2hlZHVsZVJlZnJlc2goKTsKICAgICB9LAogCiAgICAgZGlzcG9zZTogZnVuY3Rp
b24oKQpAQCAtNzQ1LDMgKzU5NCwxNTUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3Jh
cGhSb3cucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9leHBhbmRFbGVtZW50LnBhcmVudEVs
ZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fZXhwYW5kRWxlbWVudCk7CiAgICAgfQogfQorCitXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQgPSBmdW5jdGlvbihyZWNvcmQs
IHJlY29yZFN0eWxlcywgc2VuZFJlcXVlc3RSZWNvcmRzLCB0aW1lclJlY29yZHMpCit7CisgICAg
dmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZTsK
KyAgICB2YXIgc3R5bGUgPSByZWNvcmRTdHlsZXNbcmVjb3JkLnR5cGVdOworCisgICAgdGhpcy5j
YXRlZ29yeSA9IHN0eWxlLmNhdGVnb3J5OworICAgIHRoaXMudGl0bGUgPSBzdHlsZS50aXRsZTsK
KyAgICB0aGlzLnN0YXJ0VGltZSA9IHJlY29yZC5zdGFydFRpbWUgLyAxMDAwOworICAgIHRoaXMu
ZGF0YSA9IHJlY29yZC5kYXRhOworICAgIHRoaXMuY291bnQgPSAxOworICAgIHRoaXMudHlwZSA9
IHJlY29yZC50eXBlOworICAgIHRoaXMuZW5kVGltZSA9ICh0eXBlb2YgcmVjb3JkLmVuZFRpbWUg
IT09ICJ1bmRlZmluZWQiKSA/IHJlY29yZC5lbmRUaW1lIC8gMTAwMCA6IHRoaXMuc3RhcnRUaW1l
OworICAgIHRoaXMub3JpZ2luYWxSZWNvcmRGb3JUZXN0cyA9IHJlY29yZDsKKyAgICB0aGlzLmNh
bGxlclNjcmlwdE5hbWUgPSByZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKKyAgICB0aGlzLmNhbGxl
clNjcmlwdExpbmUgPSByZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKKworICAgIC8vIE1ha2UgcmVz
b3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1ZXN0IHdhcyBzZW50OyBtYWtlIGZp
bmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNwb25zZSByZWNlaXZlZC4KKyAgICBpZiAocmVjb3Jk
LnR5cGUgPT09IHJlY29yZFR5cGVzLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKKyAgICAgICAgc2Vu
ZFJlcXVlc3RSZWNvcmRzW3JlY29yZC5kYXRhLmlkZW50aWZpZXJdID0gdGhpczsKKyAgICB9IGVs
c2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBlcy5SZXNvdXJjZVJlY2VpdmVSZXNwb25z
ZSkgeworICAgICAgICB2YXIgc2VuZFJlcXVlc3RSZWNvcmQgPSBzZW5kUmVxdWVzdFJlY29yZHNb
cmVjb3JkLmRhdGEuaWRlbnRpZmllcl07CisgICAgICAgIGlmIChzZW5kUmVxdWVzdFJlY29yZCkg
eyAvLyBGYWxzZSBpZiB3ZSBzdGFydGVkIGluc3RydW1lbnRhdGlvbiBpbiB0aGUgbWlkZGxlIG9m
IHJlcXVlc3QuCisgICAgICAgICAgICBzZW5kUmVxdWVzdFJlY29yZC5fcmVzcG9uc2VSZWNlaXZl
ZEZvcm1hdHRlZFRpbWUgPSB0aGlzLnN0YXJ0VGltZTsKKyAgICAgICAgICAgIHRoaXMuc3RhcnRU
aW1lID0gc2VuZFJlcXVlc3RSZWNvcmQuc3RhcnRUaW1lOworICAgICAgICAgICAgdGhpcy5kZXRh
aWxzID0gdGhpcy5fZ2V0UmVjb3JkRGV0YWlscyhzZW5kUmVxdWVzdFJlY29yZCwgc2VuZFJlcXVl
c3RSZWNvcmRzKTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGVyU2NyaXB0TmFtZSA9IHNlbmRSZXF1
ZXN0UmVjb3JkLmNhbGxlclNjcmlwdE5hbWU7CisgICAgICAgICAgICB0aGlzLmNhbGxlclNjcmlw
dExpbmUgPSBzZW5kUmVxdWVzdFJlY29yZC5jYWxsZXJTY3JpcHRMaW5lOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gcmVjb3JkVHlwZXMuUmVzb3VyY2VGaW5pc2gp
IHsKKyAgICAgICAgdmFyIHNlbmRSZXF1ZXN0UmVjb3JkID0gc2VuZFJlcXVlc3RSZWNvcmRzW3Jl
Y29yZC5kYXRhLmlkZW50aWZpZXJdOworICAgICAgICBpZiAoc2VuZFJlcXVlc3RSZWNvcmQpIHsv
LyBGYWxzZSBmb3IgbWFpbiByZXNvdXJjZS4KKyAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lID0g
c2VuZFJlcXVlc3RSZWNvcmQuX3Jlc3BvbnNlUmVjZWl2ZWRGb3JtYXR0ZWRUaW1lOworICAgICAg
ICAgICAgdGhpcy5jYWxsZXJTY3JpcHROYW1lID0gc2VuZFJlcXVlc3RSZWNvcmQuY2FsbGVyU2Ny
aXB0TmFtZTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGVyU2NyaXB0TGluZSA9IHNlbmRSZXF1ZXN0
UmVjb3JkLmNhbGxlclNjcmlwdExpbmU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJlY29y
ZC50eXBlID09PSByZWNvcmRUeXBlcy5UaW1lckluc3RhbGwpIHsKKyAgICAgICAgdGhpcy50aW1l
b3V0ID0gcmVjb3JkLmRhdGEudGltZW91dDsKKyAgICAgICAgdGhpcy5zaW5nbGVTaG90ID0gcmVj
b3JkLmRhdGEuc2luZ2xlU2hvdDsKKyAgICAgICAgdGltZXJSZWNvcmRzW3JlY29yZC5kYXRhLnRp
bWVySWRdID0gdGhpczsKKyAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSByZWNvcmRUeXBl
cy5UaW1lckZpcmUpIHsKKyAgICAgICAgdmFyIHRpbWVySW5zdGFsbGVkUmVjb3JkID0gdGltZXJS
ZWNvcmRzW3JlY29yZC5kYXRhLnRpbWVySWRdOworICAgICAgICBpZiAodGltZXJJbnN0YWxsZWRS
ZWNvcmQpIHsKKyAgICAgICAgICAgIHRoaXMuY2FsbFNpdGVTY3JpcHROYW1lID0gdGltZXJJbnN0
YWxsZWRSZWNvcmQuY2FsbGVyU2NyaXB0TmFtZTsKKyAgICAgICAgICAgIHRoaXMuY2FsbFNpdGVT
Y3JpcHRMaW5lID0gdGltZXJJbnN0YWxsZWRSZWNvcmQuY2FsbGVyU2NyaXB0TGluZTsKKyAgICAg
ICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVySW5zdGFsbGVkUmVjb3JkLnRpbWVvdXQ7CisgICAg
ICAgICAgICB0aGlzLnNpbmdsZVNob3QgPSB0aW1lckluc3RhbGxlZFJlY29yZC5zaW5nbGVTaG90
OworICAgICAgICB9CisgICAgfQorICAgIHRoaXMuZGV0YWlscyA9IHRoaXMuX2dldFJlY29yZERl
dGFpbHMocmVjb3JkLCBzZW5kUmVxdWVzdFJlY29yZHMpOworfQorCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlID0geworICAgIF9jcmVhdGVDZWxs
OiBmdW5jdGlvbihjb250ZW50LCBzdHlsZU5hbWUpCisgICAgeworICAgICAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CisgICAgICAgIHRleHQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudCkpOworICAgICAgICB2YXIgY2VsbCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIGNlbGwuY2xhc3NOYW1lID0g
InRpbWVsaW5lLWRldGFpbHMiOworICAgICAgICBpZiAoc3R5bGVOYW1lKQorICAgICAgICAgICAg
Y2VsbC5jbGFzc05hbWUgKz0gIiAiICsgc3R5bGVOYW1lOworICAgICAgICBjZWxsLnRleHRDb250
ZW50ID0gY29udGVudDsKKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfSwKKworICAgIF9jcmVh
dGVSb3c6IGZ1bmN0aW9uKHRpdGxlLCBjb250ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHJvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0
aGlzLl9jcmVhdGVDZWxsKHRpdGxlLCAidGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUiKSk7Cisg
ICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKGNvbnRlbnQsICJ0aW1lbGlu
ZS1kZXRhaWxzLXJvdy1kYXRhIikpOworICAgICAgICByZXR1cm4gcm93OworICAgIH0sCisKKyAg
ICBfY3JlYXRlTGlua1JvdzogZnVuY3Rpb24odGl0bGUsIGNvbnRlbnQpCisgICAgeworICAgICAg
ICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgcm93LmFw
cGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwodGl0bGUsICJ0aW1lbGluZS1kZXRhaWxzLXJvdy10
aXRsZSIpKTsKKyAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIp
OworICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgICAgICByb3cuYXBwZW5k
Q2hpbGQoY2VsbCk7CisgICAgICAgIHJldHVybiByb3c7CisgICAgfSwKKworICAgIF9nZW5lcmF0
ZVBvcHVwQ29udGVudDogZnVuY3Rpb24oY2FsY3VsYXRvcikKKyAgICB7CisgICAgICAgIHZhciBy
ZWNvcmRDb250ZW50VGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOworICAg
ICAgICB2YXIgdGl0bGVDZWxsID0gdGhpcy5fY3JlYXRlQ2VsbChXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIiVzIC0gRGV0YWlscyIsIHRoaXMudGl0bGUpLCAidGltZWxpbmUtZGV0YWlscy10aXRsZSIp
OworICAgICAgICB0aXRsZUNlbGwuY29sU3BhbiA9IDI7CisgICAgICAgIHZhciB0aXRsZVJvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgIHRpdGxlUm93LmFwcGVuZENo
aWxkKHRpdGxlQ2VsbCk7CisgICAgICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0
aXRsZVJvdyk7CisgICAgICAgIHZhciB0ZXh0ID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlz
LmVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZSkgKyAiIChAIiArCisgICAgICAgIGNhbGN1bGF0b3Iu
Zm9ybWF0VmFsdWUodGhpcy5zdGFydFRpbWUgLSBjYWxjdWxhdG9yLm1pbmltdW1Cb3VuZGFyeSkg
KyAiKSI7CisgICAgICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVh
dGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpLCB0ZXh0KSk7CisKKyAgICAg
ICAgaWYgKHRoaXMuZGV0YWlscykgeworICAgICAgICAgICAgaWYgKCB0aGlzLnR5cGUgPT0gV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckluc3RhbGwgfHwKKyAgICAg
ICAgICAgICAgICB0aGlzLnR5cGUgPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3Jk
VHlwZS5UaW1lckZpcmUgfHwKKyAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPT0gV2ViSW5zcGVj
dG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lclJlbW92ZSkgeworICAgICAgICAgICAg
ICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJUaW1lciBJZCIpLCB0aGlzLmRhdGEudGltZXJJZCkpOworICAgICAg
ICAgICAgICAgIGlmICh0aGlzLnRpbWVvdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3Jk
Q29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJvdyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlRpbWVvdXQiKSwgdGhpcy50aW1lb3V0KSk7CisgICAgICAgICAgICAgICAgICAgIHJl
Y29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVSb3coV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXBlYXRzIiksICF0aGlzLnNpbmdsZVNob3QpKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FsbFNpdGVTY3JpcHRMaW5lKSB7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJjZUFz
Tm9kZSh0aGlzLmNhbGxTaXRlU2NyaXB0TmFtZSwgInNjcmlwdHMiLCB0aGlzLmNhbGxTaXRlU2Ny
aXB0TGluZSwgInRpbWVsaW5lLWRldGFpbHMiKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3Jk
Q29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUxpbmtSb3coV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDYWxsIFNpdGUiKSwgbGluaykpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIHRoaXMudHlwZSA9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLkZ1bmN0aW9uQ2FsbCApIHsKKyAgICAgICAgICAgICAgICB2YXIgbGluayA9
IFdlYkluc3BlY3Rvci5saW5raWZ5UmVzb3VyY2VBc05vZGUodGhpcy5kYXRhLnNjcmlwdE5hbWUs
ICJzY3JpcHRzIiwgdGhpcy5kYXRhLnNjcmlwdExpbmUsICJ0aW1lbGluZS1kZXRhaWxzIik7Cisg
ICAgICAgICAgICAgICAgcmVjb3JkQ29udGVudFRhYmxlLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0
ZUxpbmtSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhdGlvbiIpLCBsaW5rKSk7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZWNvcmRDb250ZW50VGFibGUuYXBwZW5k
Q2hpbGQodGhpcy5fY3JlYXRlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGV0YWlscyIpLCB0
aGlzLmRldGFpbHMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLmNhbGxlclNjcmlw
dE5hbWUpIHsKKyAgICAgICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNv
dXJjZUFzTm9kZSh0aGlzLmNhbGxlclNjcmlwdE5hbWUsICJzY3JpcHRzIiwgdGhpcy5jYWxsZXJT
Y3JpcHRMaW5lKTsKKyAgICAgICAgICAgIHJlY29yZENvbnRlbnRUYWJsZS5hcHBlbmRDaGlsZCh0
aGlzLl9jcmVhdGVMaW5rUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbGVyIiksIGxpbmsp
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVjb3JkQ29udGVudFRhYmxlOworICAgIH0s
CisKKyAgICBfZ2V0UmVjb3JkRGV0YWlsczogZnVuY3Rpb24ocmVjb3JkLCBzZW5kUmVxdWVzdFJl
Y29yZHMpCisgICAgeworICAgICAgICBzd2l0Y2ggKHJlY29yZC50eXBlKSB7CisgICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuRnVuY3Rpb25DYWxs
OgorICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwo
cmVjb3JkLmRhdGEuc2NyaXB0TmFtZSArICI6IiArIHJlY29yZC5kYXRhLnNjcmlwdExpbmUpOwor
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkV2
ZW50RGlzcGF0Y2g6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5kYXRhID8gcmVjb3Jk
LmRhdGEudHlwZSA6ICIiOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlBhaW50OgorICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0
YS53aWR0aCArICJcdTIwMDlcdTAwZDdcdTIwMDkiICsgcmVjb3JkLmRhdGEuaGVpZ2h0OworICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVy
SW5zdGFsbDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVj
b3JkVHlwZS5UaW1lclJlbW92ZToKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckZpcmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
Y29yZC5kYXRhLnRpbWVySWQ7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZUFnZW50LlJlY29yZFR5cGUuWEhSUmVhZHlTdGF0ZUNoYW5nZToKKyAgICAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJMb2FkOgorICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkV2YWx1YXRlU2Ny
aXB0OgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRU
eXBlLlJlc291cmNlU2VuZFJlcXVlc3Q6CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5kaXNwbGF5TmFtZUZvclVSTChyZWNvcmQuZGF0YS51cmwpOworICAgICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlc291cmNlUmVjZWl2ZVJl
c3BvbnNlOgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNv
cmRUeXBlLlJlc291cmNlRmluaXNoOgorICAgICAgICAgICAgICAgIHZhciBzZW5kUmVxdWVzdFJl
Y29yZCA9IHNlbmRSZXF1ZXN0UmVjb3Jkc1tyZWNvcmQuZGF0YS5pZGVudGlmaWVyXTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc2VuZFJlcXVlc3RSZWNvcmQgPyBXZWJJbnNwZWN0b3IuZGlzcGxh
eU5hbWVGb3JVUkwoc2VuZFJlcXVlc3RSZWNvcmQuZGF0YS51cmwpIDogIiI7CisgICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuTWFya1RpbWVsaW5l
OgorICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmQuZGF0YS5tZXNzYWdlOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9
Cit9CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggZDE2
OTI3OS4uMDc3YzEzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3MKQEAgLTM1ODgsNyArMzU4OCw4IEBAIGJvZHkuaW5hY3RpdmUgLnNpZGViYXItdHJlZS1pdGVt
LnNlbGVjdGVkIC5idWJibGUuc2VhcmNoLW1hdGNoZXMgewogICAgIG1pbi13aWR0aDogNXB4Owog
ICAgIG9wYWNpdHk6IDAuODsKICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKEltYWdlcy90
aW1lbGluZUJhckdyYXkucG5nKSA0IDQgNSA0OwotICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwor
ICAgIHotaW5kZXg6IDE4MDsKKyAgICBwb2ludGVyLWV2ZW50czogdmlzaWJsZUZpbGw7CiB9CiAK
IC50aW1lbGluZS1ncmFwaC1zaWRlLmV2ZW4gewpAQCAtMzg2OSw2ICszODcwLDEwIEBAIG9sLmJy
ZWFrcG9pbnQtbGlzdCB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAxOTQp
OwogfQogCisudGltZWxpbmUtZGV0YWlscyB7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4
dDsKK30KKwogLnRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIHsKICAgICBmb250LXdlaWdodDog
Ym9sZDsKICAgICB0ZXh0LWFsaWduOiByaWdodDsKQEAgLTM4ODIsNiArMzg4NywxMiBAQCBvbC5i
cmVha3BvaW50LWxpc3QgewogLnRpbWVsaW5lLWRldGFpbHMtdGl0bGUgewogICAgIGZvbnQtd2Vp
Z2h0OiBib2xkOwogICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgdGV4dC1vdmVyZmxvdzog
ZWxsaXBzaXM7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBmb250LXNpemU6IDExcHg7Cisg
ICAgcGFkZGluZy1sZWZ0OiAxMHB4OworICAgIHBhZGRpbmctYm90dG9tOiA1cHg7CisgICAgYm9y
ZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigxOTQsMTk0LDE0Nyk7CiB9CiAKIC53b3JrZXJzLWxp
c3Qgewo=
</data>
<flag name="review"
          id="33060"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>