<?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>106616</bug_id>
          
          <creation_ts>2013-01-10 16:33:21 -0800</creation_ts>
          <short_desc>[Microdata] itemtype attribute must update correctly on adding or removing tokens</short_desc>
          <delta_ts>2013-01-24 16:02:26 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>92986</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Arko Saha">arko</reporter>
          <assigned_to name="Arko Saha">arko</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>804814</commentid>
    <comment_count>0</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-01-10 16:33:21 -0800</bug_when>
    <thetext>itemType.add() and itemType.remove() must update the itemtype attribute properly.

Test:

var element = document.createElement(&apos;div&apos;);
element.itemType.add(&apos;foo&apos;);
element.itemType.add(&apos;FOO&apos;);
alert(element.getAttribute(&apos;itemtype&apos;));

Expected result: element.getAttribute(&apos;itemtype&apos;) should return &apos;foo FOO&apos;
Actual result: returns null

Same behavior can be observed with itemref and itemprop attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804823</commentid>
    <comment_count>1</comment_count>
      <attachid>182226</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-01-10 16:55:54 -0800</bug_when>
    <thetext>Created attachment 182226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807548</commentid>
    <comment_count>2</comment_count>
      <attachid>182226</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-15 12:14:04 -0800</bug_when>
    <thetext>Comment on attachment 182226
Patch

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

&gt; Source/WebCore/html/MicroDataAttributeTokenList.cpp:56
&gt; +void MicroDataAttributeTokenList::setValue(const AtomicString&amp; value)
&gt; +{
&gt; +    m_element-&gt;setAttribute(m_attributeName, value);
&gt; +}
&gt; +
&gt; +void MicroDataAttributeTokenList::resetValue(const AtomicString&amp; value)
&gt; +{
&gt; +    DOMSettableTokenList::setValue(value);
&gt; +}

I don&apos;t like bi-directionally updated data structures... Why don&apos;t we do this inside Node::setItemRef and friends instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814805</commentid>
    <comment_count>3</comment_count>
      <attachid>184341</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-01-23 16:35:44 -0800</bug_when>
    <thetext>Created attachment 184341
Patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814810</commentid>
    <comment_count>4</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-01-23 16:37:23 -0800</bug_when>
    <thetext>Let me try to explain the issue,

The actual problem is with adding tokens to itemref attribute.
element.itemRef.add(&apos;foo&apos;);

In this case setAttribute() method is not getting called for given element. As a result element.getAttribute(&apos;itemtype&apos;) returns null
Code flow is as below:

0	WebCore::DOMSettableTokenList::setValue	 DOMSettableTokenList.cpp	88	
1	WebCore::DOMTokenList::add	DOMTokenList.cpp	89
2	WebCore::DOMSettableTokenList::add	DOMSettableTokenList.cpp	54		
3	WebCore::jsDOMTokenListPrototypeFunctionAdd	JSDOMTokenList.cpp	271		

It does not call Node::setItemRef(). DOMSettableTokenList::add() is getting called in this case, which internally calls DOMSettableTokenList::setValue to update the tokens and value of DOMSettableTokenList.

In the patch I have override setValue() method in MicroDataAttributeTokenList. So that we can call setAttribute() to update the attribute.
With my change the code flow will be like :

0	WebCore::MicroDataAttributeTokenList::setValue	MicroDataAttributeTokenList.cpp	50	
1	WebCore::DOMTokenList::add	DOMTokenList.cpp	89
2	WebCore::DOMSettableTokenList::add	DOMSettableTokenList.cpp	54		
3	WebCore::jsDOMTokenListPrototypeFunctionAdd	JSDOMTokenList.cpp	271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814823</commentid>
    <comment_count>5</comment_count>
      <attachid>184341</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-23 16:44:39 -0800</bug_when>
    <thetext>Comment on attachment 184341
Patch2

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

&gt; Source/WebCore/dom/NodeRareData.h:52
&gt; +using namespace HTMLNames;
&gt; +

We don&apos;t need this, right?

&gt; Source/WebCore/html/MicroDataAttributeTokenList.cpp:55
&gt; +    if (oldValue != newValue)
&gt; +        m_element-&gt;setAttribute(m_attributeName, newValue);

What happens to this token list when someone manually sets the attribute? e.g. element.setAttribute(&apos;itemprop&apos;, ~);

&gt; Source/WebCore/html/MicroDataAttributeTokenList.h:43
&gt; +typedef int ExceptionCode;

Why do we need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814860</commentid>
    <comment_count>6</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-01-23 17:09:50 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Source/WebCore/dom/NodeRareData.h:52
&gt; &gt; +using namespace HTMLNames;
&gt; &gt; +
&gt; 
&gt; We don&apos;t need this, right?

This is required else we need to pass HTMLNames::itempropAttr while creating MicroDataAttributeTokenList as below:

+    DOMSettableTokenList* itemProp(Node* node) const
     {
         if (!m_itemProp)
-            m_itemProp = DOMSettableTokenList::create();
+            m_itemProp = MicroDataAttributeTokenList::create(toElement(node), HTMLNames::itempropAttr);
         return m_itemProp.get();
     }

&gt; &gt; Source/WebCore/html/MicroDataAttributeTokenList.cpp:55
&gt; &gt; +    if (oldValue != newValue)
&gt; &gt; +        m_element-&gt;setAttribute(m_attributeName, newValue);
&gt; 
&gt; What happens to this token list when someone manually sets the attribute? e.g. element.setAttribute(&apos;itemprop&apos;, ~);

Code flow in that case will be like:
0	WebCore::MicroDataAttributeTokenList::setValue	MicroDataAttributeTokenList.cpp	50	0x7fb94d1ebc89	
1	WebCore::Node::setItemProp	Node.cpp	2536	0x7fb94cfb7bbf	
2	WebCore::HTMLElement::parseAttribute	HTMLElement.cpp	233	0x7fb94d16510c	
3	WebCore::Element::attributeChanged	Element.cpp	816	0x7fb94cf6830c	
4	WebCore::StyledElement::attributeChanged	StyledElement.cpp	168	0x7fb94d003235	
5	WebCore::Element::didAddAttribute	Element.cpp	2561	0x7fb94cf6e66a	
6	WebCore::Element::addAttributeInternal	Element.cpp	1785	0x7fb94cf6bc14	
7	WebCore::Element::setAttributeInternal	Element.cpp	771	0x7fb94cf72ab7	
8	WebCore::Element::setAttribute	Element.cpp	749	0x7fb94cf680a5	
9	WebCore::jsElementPrototypeFunctionSetAttribute	JSElement.cpp	1773	0x7fb94da0e83d	

setValue() is called from Element::setAttribute() -&gt; Element::attributeChanged(). So no need to call setAttribute() from MicroDataAttributeTokenList::setValue as attribute value is already updated.
	
&gt; &gt; Source/WebCore/html/MicroDataAttributeTokenList.h:43
&gt; &gt; +typedef int ExceptionCode;
&gt; 
&gt; Why do we need this?

My bad, this is not required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814866</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-23 17:22:33 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; &gt; Source/WebCore/dom/NodeRareData.h:52
&gt; &gt; &gt; +using namespace HTMLNames;
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; We don&apos;t need this, right?
&gt; 
&gt; This is required else we need to pass HTMLNames::itempropAttr while creating MicroDataAttributeTokenList as below:
&gt; 
&gt; +    DOMSettableTokenList* itemProp(Node* node) const
&gt;      {
&gt;          if (!m_itemProp)
&gt; -            m_itemProp = DOMSettableTokenList::create();
&gt; +            m_itemProp = MicroDataAttributeTokenList::create(toElement(node), HTMLNames::itempropAttr);
&gt;          return m_itemProp.get();
&gt;      }
&gt; 
&gt; &gt; &gt; Source/WebCore/html/MicroDataAttributeTokenList.cpp:55
&gt; &gt; &gt; +    if (oldValue != newValue)
&gt; &gt; &gt; +        m_element-&gt;setAttribute(m_attributeName, newValue);
&gt; &gt; 
&gt; &gt; What happens to this token list when someone manually sets the attribute? e.g. element.setAttribute(&apos;itemprop&apos;, ~);
&gt; 
&gt; Code flow in that case will be like:
&gt; 0    WebCore::MicroDataAttributeTokenList::setValue    MicroDataAttributeTokenList.cpp    50    0x7fb94d1ebc89    
&gt; 1    WebCore::Node::setItemProp    Node.cpp    2536    0x7fb94cfb7bbf

We might want to add something like setValueFromAttribute or setValueInternal to clarify the semantics here. Otherwise, it look as if we&apos;re gonna fall into an infinite loop. Also, it&apos;s inefficient to get the string, compare the string, and set it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814935</commentid>
    <comment_count>8</comment_count>
      <attachid>184373</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-01-23 18:32:28 -0800</bug_when>
    <thetext>Created attachment 184373
Patch3

Incorporated review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815675</commentid>
    <comment_count>9</comment_count>
      <attachid>184544</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-01-24 11:47:22 -0800</bug_when>
    <thetext>Created attachment 184544
Patch for landing

Added new files MicroDataAttributeTokenList.{cpp,h} to xcode project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815936</commentid>
    <comment_count>10</comment_count>
      <attachid>184544</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 16:02:18 -0800</bug_when>
    <thetext>Comment on attachment 184544
Patch for landing

Clearing flags on attachment: 184544

Committed r140745: &lt;http://trac.webkit.org/changeset/140745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815937</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 16:02:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182226</attachid>
            <date>2013-01-10 16:55:54 -0800</date>
            <delta_ts>2013-01-23 16:35:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106616-20130110165257.patch</filename>
            <type>text/plain</type>
            <size>26241</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAxLTEwICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IGl0ZW10eXBlIGF0
dHJpYnV0ZSBtdXN0IHVwZGF0ZSBjb3JyZWN0bHkgb24gYWRkaW5nIG9yIHJlbW92aW5nIHRva2Vu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSBuZXcgY2xhc3MgTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LCBpdCBvdmVycmlkZXMgc2V0
VmFsdWUoKSBtZXRob2Qgb2YKKyAgICAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QuIHNldFZhbHVl
KCkgaXMgcmVzcG9uc2libGUgdG8gc2V0IHRoZSBuZXcgYXR0cmlidXRlIHZhbHVlIGZvcgorICAg
ICAgICBhIGdpdmVuIGVsZW1lbnQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL01pY3JvRGF0
YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQt
cmVtb3ZlLWl0ZW1wcm9wLXRva2Vucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9NaWNy
b0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLmh0bWwKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXRlbVByb3ApOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0SXRlbVByb3ApOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXRlbVJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRJdGVtUmVmKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6Oml0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEl0ZW1UeXBlKToKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KE5vZGVNaWNyb0RhdGFUb2tlbkxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0
YTo6aXRlbVByb3ApOiBDaGFuZ2VkIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byBhY2NlcHQgYSBOb2Rl
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRJdGVtUHJvcCk6IGRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjppdGVtUmVmKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSYXJlRGF0YTo6c2V0SXRlbVJlZik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFy
ZURhdGE6Oml0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0SXRl
bVR5cGUpOgorICAgICAgICAqIGh0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaDoKKyAgICAgICAg
KERPTVNldHRhYmxlVG9rZW5MaXN0KTogTWFkZSB0aGUgY29uc3RydWN0b3IgYXMgcHJvdGVjdGVk
LCBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZQorICAgICAgICBzZXRWYWx1ZSgpIG1ldGhvZC4KKyAg
ICAgICAgKiBodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb0RhdGFBdHRyaWJ1dGVUb2tl
bkxpc3Q6Ok1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpN
aWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6cmVzZXRWYWx1ZSk6CisgICAgICAgICogaHRt
bC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q6OmNyZWF0ZSk6CisKIDIwMTMtMDEtMTAg
IEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFN0b3JlIHNjcm9sbGFibGUgbGF5ZXIncyBjb250ZW50cyBzaXplIGZvciBjb29yZGluYXRl
ZCBzY3JvbGxhYmxlIGxheWVycwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEz
OTM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xNDY0LDYgKzE0NjQsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuY3BwCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcAogICAgIGh0bWwvTWVkaWFG
cmFnbWVudFVSSVBhcnNlci5jcHAKKyAgICBodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlz
dC5jcHAKICAgICBodG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAKICAgICBodG1sL01vbnRoSW5w
dXRUeXBlLmNwcAogICAgIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcApJbmRleDogU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzkzODUpCisrKyBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIwLDYgKzM1MjAsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBcCisgICAgU291cmNl
L1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwIFwKKyAgICBTb3Vy
Y2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvTWljcm9EYXRhSXRlbVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1
dFR5cGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTM5Mzg1KQorKysgU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNjc2LDYgKzY3Niw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKICAgICBodG1sL0xpbmtS
ZWxBdHRyaWJ1dGUuY3BwIFwKICAgICBodG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKKyAgICBodG1s
L01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHAgXAogICAgIGh0bWwvTWljcm9EYXRhSXRl
bVZhbHVlLmNwcCBcCiAgICAgaHRtbC9Nb250aElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcCBcCkBAIC0xODY3LDYgKzE4NjgsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBodG1sL01lZGlhQ29udHJvbGxlci5oIFwKICAgICBodG1sL01lZGlhRG9jdW1lbnQuaCBcCiAg
ICAgaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggXAorICAgIGh0bWwvTWljcm9EYXRhQXR0
cmlidXRlVG9rZW5MaXN0LmggXAogICAgIGh0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmggXAogICAg
IGh0bWwvUGx1Z2luRG9jdW1lbnQuaCBcCiAgICAgaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmggXApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM5Mzg1KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zMjExLDYgKzMyMTEsOCBAQAogICAgICAg
ICAgICAgJ2h0bWwvTWVkaWFLZXlFcnJvci5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhS2V5
RXZlbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL01lZGlhS2V5RXZlbnQuaCcsCisgICAgICAg
ICAgICAnaHRtbC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwJywKKyAgICAgICAgICAg
ICdodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oJywKICAgICAgICAgICAgICdodG1s
L01pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTWljcm9EYXRhSXRl
bVZhbHVlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwJywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biAxMzkzODUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtNjQxNzQsNiArNjQxNzQsMTQgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNaWNyb0RhdGFBdHRyaWJ1
dGVUb2tlbkxpc3QuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1pY3JvRGF0YUl0
ZW1WYWx1ZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2
aXNpb24gMTM5Mzg1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTE3LDMyICsyNTE3LDMyIEBAIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb1RvdWNo
RXZlbnRzKCkKICNpZiBFTkFCTEUoTUlDUk9EQVRBKQogRE9NU2V0dGFibGVUb2tlbkxpc3QqIE5v
ZGU6Oml0ZW1Qcm9wKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+aXRlbVByb3Ao
KTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+aXRlbVByb3AodGhpcyk7CiB9CiAKIHZv
aWQgTm9kZTo6c2V0SXRlbVByb3AoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBlbnN1cmVS
YXJlRGF0YSgpLT5zZXRJdGVtUHJvcCh2YWx1ZSk7CisgICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0
SXRlbVByb3AodGhpcywgdmFsdWUpOwogfQogCiBET01TZXR0YWJsZVRva2VuTGlzdCogTm9kZTo6
aXRlbVJlZigpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPml0ZW1SZWYoKTsKKyAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+aXRlbVJlZih0aGlzKTsKIH0KIAogdm9pZCBOb2Rl
OjpzZXRJdGVtUmVmKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZW5zdXJlUmFyZURhdGEo
KS0+c2V0SXRlbVJlZih2YWx1ZSk7CisgICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0SXRlbVJlZih0
aGlzLCB2YWx1ZSk7CiB9CiAKIERPTVNldHRhYmxlVG9rZW5MaXN0KiBOb2RlOjppdGVtVHlwZSgp
CiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPml0ZW1UeXBlKCk7CisgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCktPml0ZW1UeXBlKHRoaXMpOwogfQogCiB2b2lkIE5vZGU6OnNldEl0
ZW1UeXBlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0
SXRlbVR5cGUodmFsdWUpOworICAgIGVuc3VyZVJhcmVEYXRhKCktPnNldEl0ZW1UeXBlKHRoaXMs
IHZhbHVlKTsKIH0KIAogUGFzc1JlZlB0cjxQcm9wZXJ0eU5vZGVMaXN0PiBOb2RlOjpwcm9wZXJ0
eU5vZGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmgJKHJldmlzaW9uIDEzOTM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ2hpbGRO
b2RlTGlzdC5oIgogI2luY2x1ZGUgIkRPTVNldHRhYmxlVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTXV0YXRp
b25PYnNlcnZlci5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCIK
QEAgLTQwLDExICs0MSwxNCBAQAogCiAjaWYgRU5BQkxFKE1JQ1JPREFUQSkKICNpbmNsdWRlICJI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJNaWNyb0RhdGFBdHRyaWJ1dGVU
b2tlbkxpc3QuaCIKICNpbmNsdWRlICJNaWNyb0RhdGFJdGVtTGlzdC5oIgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogY2xhc3Mg
TGFiZWxzTm9kZUxpc3Q7CiBjbGFzcyBSYWRpb05vZGVMaXN0OwogY2xhc3MgVHJlZVNjb3BlOwpA
QCAtMjM4LDkgKzI0Miw5IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURh
dGEKIAogI2lmIEVOQUJMRShNSUNST0RBVEEpCiAgICAgc3RydWN0IE5vZGVNaWNyb0RhdGFUb2tl
bkxpc3RzIHsKLSAgICAgICAgUmVmUHRyPERPTVNldHRhYmxlVG9rZW5MaXN0PiBtX2l0ZW1Qcm9w
OwotICAgICAgICBSZWZQdHI8RE9NU2V0dGFibGVUb2tlbkxpc3Q+IG1faXRlbVJlZjsKLSAgICAg
ICAgUmVmUHRyPERPTVNldHRhYmxlVG9rZW5MaXN0PiBtX2l0ZW1UeXBlOworICAgICAgICBSZWZQ
dHI8TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0PiBtX2l0ZW1Qcm9wOworICAgICAgICBSZWZQ
dHI8TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0PiBtX2l0ZW1SZWY7CisgICAgICAgIFJlZlB0
cjxNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q+IG1faXRlbVR5cGU7CiAKICAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8Tm9kZU1pY3JvRGF0YVRva2VuTGlzdHM+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UHRyKG5ldyBOb2RlTWljcm9EYXRhVG9rZW5MaXN0cyk7IH0KICAgICB9OwpAQCAtMzE5
LDUyICszMjMsNTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9taWNyb0RhdGFUb2tlbkxp
c3RzLmdldCgpOwogICAgIH0KIAotICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVtUHJvcCgp
IGNvbnN0CisgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QqIGl0ZW1Qcm9wKE5vZGUqIG5vZGUpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoIWVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+bV9p
dGVtUHJvcCkKLSAgICAgICAgICAgIG1fbWljcm9EYXRhVG9rZW5MaXN0cy0+bV9pdGVtUHJvcCA9
IERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fbWljcm9EYXRh
VG9rZW5MaXN0cy0+bV9pdGVtUHJvcCA9IE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6Y3Jl
YXRlKHRvRWxlbWVudChub2RlKSwgaXRlbXByb3BBdHRyKTsKIAogICAgICAgICByZXR1cm4gbV9t
aWNyb0RhdGFUb2tlbkxpc3RzLT5tX2l0ZW1Qcm9wLmdldCgpOwogICAgIH0KIAotICAgIHZvaWQg
c2V0SXRlbVByb3AoY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB2b2lkIHNldEl0ZW1Qcm9wKE5v
ZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIWVuc3Vy
ZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+bV9pdGVtUHJvcCkKLSAgICAgICAgICAgIG1fbWljcm9E
YXRhVG9rZW5MaXN0cy0+bV9pdGVtUHJvcCA9IERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIG1fbWljcm9EYXRhVG9rZW5MaXN0cy0+bV9pdGVtUHJvcCA9IE1pY3Jv
RGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6Y3JlYXRlKHRvRWxlbWVudChub2RlKSwgaXRlbXByb3BB
dHRyKTsKIAotICAgICAgICBtX21pY3JvRGF0YVRva2VuTGlzdHMtPm1faXRlbVByb3AtPnNldFZh
bHVlKHZhbHVlKTsKKyAgICAgICAgbV9taWNyb0RhdGFUb2tlbkxpc3RzLT5tX2l0ZW1Qcm9wLT5y
ZXNldFZhbHVlKHZhbHVlKTsKICAgICB9CiAKLSAgICBET01TZXR0YWJsZVRva2VuTGlzdCogaXRl
bVJlZigpIGNvbnN0CisgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QqIGl0ZW1SZWYoTm9kZSogbm9k
ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0cygp
LT5tX2l0ZW1SZWYpCi0gICAgICAgICAgICBtX21pY3JvRGF0YVRva2VuTGlzdHMtPm1faXRlbVJl
ZiA9IERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fbWljcm9E
YXRhVG9rZW5MaXN0cy0+bV9pdGVtUmVmID0gTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0Ojpj
cmVhdGUodG9FbGVtZW50KG5vZGUpLCBpdGVtcmVmQXR0cik7CiAKICAgICAgICAgcmV0dXJuIG1f
bWljcm9EYXRhVG9rZW5MaXN0cy0+bV9pdGVtUmVmLmdldCgpOwogICAgIH0KIAotICAgIHZvaWQg
c2V0SXRlbVJlZihjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHZvaWQgc2V0SXRlbVJlZihOb2Rl
KiBub2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFlbnN1cmVN
aWNyb0RhdGFUb2tlbkxpc3RzKCktPm1faXRlbVJlZikKLSAgICAgICAgICAgIG1fbWljcm9EYXRh
VG9rZW5MaXN0cy0+bV9pdGVtUmVmID0gRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgbV9taWNyb0RhdGFUb2tlbkxpc3RzLT5tX2l0ZW1SZWYgPSBNaWNyb0RhdGFB
dHRyaWJ1dGVUb2tlbkxpc3Q6OmNyZWF0ZSh0b0VsZW1lbnQobm9kZSksIGl0ZW1yZWZBdHRyKTsK
IAotICAgICAgICBtX21pY3JvRGF0YVRva2VuTGlzdHMtPm1faXRlbVJlZi0+c2V0VmFsdWUodmFs
dWUpOworICAgICAgICBtX21pY3JvRGF0YVRva2VuTGlzdHMtPm1faXRlbVJlZi0+cmVzZXRWYWx1
ZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgRE9NU2V0dGFibGVUb2tlbkxpc3QqIGl0ZW1UeXBlKCkg
Y29uc3QKKyAgICBET01TZXR0YWJsZVRva2VuTGlzdCogaXRlbVR5cGUoTm9kZSogbm9kZSkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmICghZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0cygpLT5tX2l0
ZW1UeXBlKQotICAgICAgICAgICAgbV9taWNyb0RhdGFUb2tlbkxpc3RzLT5tX2l0ZW1UeXBlID0g
RE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9taWNyb0RhdGFU
b2tlbkxpc3RzLT5tX2l0ZW1UeXBlID0gTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0OjpjcmVh
dGUodG9FbGVtZW50KG5vZGUpLCBpdGVtdHlwZUF0dHIpOwogCiAgICAgICAgIHJldHVybiBtX21p
Y3JvRGF0YVRva2VuTGlzdHMtPm1faXRlbVR5cGUuZ2V0KCk7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXRJdGVtVHlwZShjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHZvaWQgc2V0SXRlbVR5cGUoTm9k
ZSogbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghZW5zdXJl
TWljcm9EYXRhVG9rZW5MaXN0cygpLT5tX2l0ZW1UeXBlKQotICAgICAgICAgICAgbV9taWNyb0Rh
dGFUb2tlbkxpc3RzLT5tX2l0ZW1UeXBlID0gRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9taWNyb0RhdGFUb2tlbkxpc3RzLT5tX2l0ZW1UeXBlID0gTWljcm9E
YXRhQXR0cmlidXRlVG9rZW5MaXN0OjpjcmVhdGUodG9FbGVtZW50KG5vZGUpLCBpdGVtdHlwZUF0
dHIpOwogCi0gICAgICAgIG1fbWljcm9EYXRhVG9rZW5MaXN0cy0+bV9pdGVtVHlwZS0+c2V0VmFs
dWUodmFsdWUpOworICAgICAgICBtX21pY3JvRGF0YVRva2VuTGlzdHMtPm1faXRlbVR5cGUtPnJl
c2V0VmFsdWUodmFsdWUpOwogICAgIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCShyZXZpc2lvbiAxMzkzODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDkgKzU4LDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIHRva2Vu
cygpIGNvbnN0IHsgcmV0dXJuIG1fdG9rZW5zOyB9CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAg
ICAgRE9NU2V0dGFibGVUb2tlbkxpc3QoKTsKIAorcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
YWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIGNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIE9W
RVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tl
bkxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhQXR0
cmlidXRlVG9rZW5MaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEzIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisg
KiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisg
KiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vcgorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xh
IE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkKKyAq
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQKKyAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1JQ1JPREFU
QSkKKworI2luY2x1ZGUgIk1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oIgorCisjaW5jbHVk
ZSAiRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01pY3JvRGF0YUF0dHJpYnV0
ZVRva2VuTGlzdDo6TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0KEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgOiBET01TZXR0YWJsZVRv
a2VuTGlzdCgpCisgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAsIG1fYXR0cmlidXRlTmFt
ZShhdHRyaWJ1dGVOYW1lKQoreworfQorCit2b2lkIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlz
dDo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2VsZW1lbnQt
PnNldEF0dHJpYnV0ZShtX2F0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBNaWNyb0Rh
dGFBdHRyaWJ1dGVUb2tlbkxpc3Q6OnJlc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKK3sKKyAgICBET01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUodmFsdWUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUlDUk9EQVRBKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlz
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFBdHRyaWJ1
dGVUb2tlbkxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDEzIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisgKiBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vcgorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkKKyAqIGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK
KyAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3RfaAorI2RlZmluZSBNaWNyb0RhdGFBdHRy
aWJ1dGVUb2tlbkxpc3RfaAorCisjaWYgRU5BQkxFKE1JQ1JPREFUQSkKKworI2luY2x1ZGUgIkRP
TVNldHRhYmxlVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CisKK2NsYXNzIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdCA6IHB1YmxpYyBET01T
ZXR0YWJsZVRva2VuTGlzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWljcm9E
YXRhQXR0cmlidXRlVG9rZW5MaXN0PiBjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0KGVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSBPVkVSUklERSB7IHJl
dHVybiBtX2VsZW1lbnQ7IH0KKworICAgIHZvaWQgcmVzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKTsKKworcHJpdmF0ZToKKyAgICBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Qo
RWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKKworICAgIEVsZW1lbnQqIG1fZWxl
bWVudDsKKyAgICBRdWFsaWZpZWROYW1lIG1fYXR0cmlidXRlTmFtZTsKKworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKKworI2VuZGlm
IC8vIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdF9oCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzkz
ODUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MCBAQAorMjAxMy0wMS0xMCAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAg
ICAgTWljcm9kYXRhOiBpdGVtdHlwZSBhdHRyaWJ1dGUgbXVzdCB1cGRhdGUgY29ycmVjdGx5IG9u
IGFkZGluZyBvciByZW1vdmluZyB0b2tlbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNjYxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGl0ZW10eXBlLCBp
dGVtcHJvcCwgaXRlbXJlZiBhdHRyaWJ1dGVzIG11c3QgdXBkYXRlCisgICAgICAgIGNvcnJlY3Rs
eSB3aGVuIHRva2VucyBoYXZlIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZC4KKworICAgICAgICAqIGZh
c3QvZG9tL01pY3JvRGF0YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVt
b3ZlLXRva2Vucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3Jv
RGF0YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlz
dC1hZGQtcmVtb3ZlLWl0ZW1wcm9wLXRva2Vucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXBy
b3AtdG9rZW5zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9w
ZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXJlZi10b2tlbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVt
b3ZlLWl0ZW1yZWYtdG9rZW5zLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTEwICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBTdG9yZSBz
Y3JvbGxhYmxlIGxheWVyJ3MgY29udGVudHMgc2l6ZSBmb3IgY29vcmRpbmF0ZWQgc2Nyb2xsYWJs
ZSBsYXllcnMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9taWNyb2RhdGEt
ZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL21pY3JvZGF0YS1kb210
b2tlbmxpc3QtYXR0cmlidXRlLWFkZC1yZW1vdmUtdG9rZW5zLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9taWNyb2RhdGEtZG9tdG9r
ZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyMyBAQAorVGhpcyB0ZXN0cyB0aGF0IGl0ZW10eXBlLCBpdGVtcHJv
cCwgaXRlbXJlZiBhdHRyaWJ1dGVzIG11c3QgdXBkYXRlIGNvcnJlY3RseSB3aGVuIHRva2VucyBo
YXZlIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK2l0ZW10eXBlIGF0dHJpYnV0ZSB0ZXN0LgorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZSgn
aXRlbXR5cGUnKSBpcyAnZm9vIEZPTycKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW10
eXBlJykgaXMgJ0ZPTycKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW10eXBlJykgaXMg
JycKKworaXRlbXByb3AgYXR0cmlidXRlIHRlc3QuCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRl
KCdpdGVtcHJvcCcpIGlzICdmb28gRk9PJworUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRl
bXByb3AnKSBpcyAnRk9PJworUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbXByb3AnKSBp
cyAnJworCitpdGVtcmVmIGF0dHJpYnV0ZSB0ZXN0LgorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0
ZSgnaXRlbXJlZicpIGlzICdmb28gRk9PJworUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRl
bXJlZicpIGlzICdGT08nCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcmVmJykgaXMg
JycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbWljcm9kYXRhLWRvbXRva2VubGlz
dC1hdHRyaWJ1dGUtYWRkLXJlbW92ZS10b2tlbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbWljcm9kYXRhLWRvbXRva2VubGlzdC1hdHRyaWJ1dGUt
YWRkLXJlbW92ZS10b2tlbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL01pY3JvRGF0YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3Zl
LXRva2Vucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJteWRpdiI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBpdGVtdHlwZSwg
aXRlbXByb3AsIGl0ZW1yZWYgYXR0cmlidXRlcyBtdXN0IHVwZGF0ZSBjb3JyZWN0bHkgd2hlbiB0
b2tlbnMgaGF2ZSBiZWVuIGFkZGVkIG9yIHJlbW92ZWQuIik7Cit2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJteWRpdiIpOworCitkZWJ1ZygiaXRlbXR5cGUgYXR0cmlidXRl
IHRlc3QuIik7CitlbGVtZW50Lml0ZW1UeXBlLmFkZCgnZm9vJyk7CitlbGVtZW50Lml0ZW1UeXBl
LmFkZCgnRk9PJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW10eXBlJyki
LCAiJ2ZvbyBGT08nIik7CitlbGVtZW50Lml0ZW1UeXBlLnJlbW92ZSgnZm9vJyk7CitzaG91bGRC
ZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW10eXBlJykiLCAiJ0ZPTyciKTsKK2VsZW1lbnQu
aXRlbVR5cGUucmVtb3ZlKCdGT08nKTsKK3Nob3VsZEJlKCJlbGVtZW50LmdldEF0dHJpYnV0ZSgn
aXRlbXR5cGUnKSIsICInJyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiaXRlbXByb3AgYXR0cmli
dXRlIHRlc3QuIik7CitlbGVtZW50Lml0ZW1Qcm9wLmFkZCgnZm9vJyk7CitlbGVtZW50Lml0ZW1Q
cm9wLmFkZCgnRk9PJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1wcm9w
JykiLCAiJ2ZvbyBGT08nIik7CitlbGVtZW50Lml0ZW1Qcm9wLnJlbW92ZSgnZm9vJyk7CitzaG91
bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1wcm9wJykiLCAiJ0ZPTyciKTsKK2VsZW1l
bnQuaXRlbVByb3AucmVtb3ZlKCdGT08nKTsKK3Nob3VsZEJlKCJlbGVtZW50LmdldEF0dHJpYnV0
ZSgnaXRlbXByb3AnKSIsICInJyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiaXRlbXJlZiBhdHRy
aWJ1dGUgdGVzdC4iKTsKK2VsZW1lbnQuaXRlbVJlZi5hZGQoJ2ZvbycpOworZWxlbWVudC5pdGVt
UmVmLmFkZCgnRk9PJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1yZWYn
KSIsICInZm9vIEZPTyciKTsKK2VsZW1lbnQuaXRlbVJlZi5yZW1vdmUoJ2ZvbycpOworc2hvdWxk
QmUoImVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcmVmJykiLCAiJ0ZPTyciKTsKK2VsZW1lbnQu
aXRlbVJlZi5yZW1vdmUoJ0ZPTycpOworc2hvdWxkQmUoImVsZW1lbnQuZ2V0QXR0cmlidXRlKCdp
dGVtcmVmJykiLCAiJyciKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92
ZS1pdGVtcHJvcC10b2tlbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXByb3At
dG9rZW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXByb3AtdG9rZW5zLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBACitUZXN0IHRvIGVuc3Vy
ZSB0aGF0IGFkZGluZyBvciByZW1vdmluZyBpdGVtcHJvcCB0b2tlbnMgbXVzdCB1cGRhdGUgaXRz
IFByb3BlcnR5Tm9kZUxpc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDcmVh
dGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CitTZXQgYXR0cmlidXRlOiBpdGVtc2NvcGUsIHZhbHVl
OiBpdGVtc2NvcGUKK1BBU1MgUE5MZm9vLmxlbmd0aCBpcyAxCitQQVNTIFBOTGJhci5sZW5ndGgg
aXMgMAorUEFTUyBQTkxmb29bMF0gaXMgaXRlbS5maXJzdENoaWxkCitQQVNTIFBOTGZvby5sZW5n
dGggaXMgMQorUEFTUyBQTkxiYXIubGVuZ3RoIGlzIDEKK1BBU1MgUE5MZm9vWzBdIGlzIGl0ZW0u
Zmlyc3RDaGlsZAorUEFTUyBQTkxiYXJbMF0gaXMgaXRlbS5sYXN0Q2hpbGQKK1BBU1MgUE5MZm9v
Lmxlbmd0aCBpcyAyCitQQVNTIFBOTGJhci5sZW5ndGggaXMgMQorUEFTUyBQTkxmb29bMF0gaXMg
aXRlbS5maXJzdENoaWxkCitQQVNTIFBOTGZvb1sxXSBpcyBpdGVtLmxhc3RDaGlsZAorUEFTUyBQ
TkxiYXJbMF0gaXMgaXRlbS5sYXN0Q2hpbGQKK1BBU1MgUE5MZm9vLmxlbmd0aCBpcyAxCitQQVNT
IFBOTGJhci5sZW5ndGggaXMgMAorUEFTUyBQTkxmb29bMF0gaXMgaXRlbS5maXJzdENoaWxkCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92
ZS1pdGVtcHJvcC10b2tlbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1wcm9wLXRva2Vucy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3Bl
cnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcHJvcC10b2tlbnMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0byBlbnN1cmUgdGhhdCBh
ZGRpbmcgb3IgcmVtb3ZpbmcgaXRlbXByb3AgdG9rZW5zIG11c3QgdXBkYXRlIGl0cyBQcm9wZXJ0
eU5vZGVMaXN0LiIpOwordmFyIGl0ZW0gPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7aXRlbXNjb3Bl
OiAnaXRlbXNjb3BlJ30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iPjwvZGl2PjxkaXY+PC9kaXY+Jyk7
Cit2YXIgUE5MZm9vID0gaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJyk7CitQTkxiYXIg
PSBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKTsKKworc2hvdWxkQmUoIlBOTGZvby5s
ZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIlBOTGJhci5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUo
IlBOTGZvb1swXSIsICJpdGVtLmZpcnN0Q2hpbGQiKTsKKworaXRlbS5sYXN0Q2hpbGQuaXRlbVBy
b3AudG9nZ2xlKCdiYXInKTsKK3Nob3VsZEJlKCJQTkxmb28ubGVuZ3RoIiwgIjEiKTsKK3Nob3Vs
ZEJlKCJQTkxiYXIubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJQTkxmb29bMF0iLCAiaXRlbS5m
aXJzdENoaWxkIik7CitzaG91bGRCZSgiUE5MYmFyWzBdIiwgIml0ZW0ubGFzdENoaWxkIik7CisK
K2l0ZW0ubGFzdENoaWxkLml0ZW1Qcm9wLmFkZCgnZm9vJyk7CitzaG91bGRCZSgiUE5MZm9vLmxl
bmd0aCIsICIyIik7CitzaG91bGRCZSgiUE5MYmFyLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgi
UE5MZm9vWzBdIiwgIml0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmUoIlBOTGZvb1sxXSIsICJp
dGVtLmxhc3RDaGlsZCIpOworc2hvdWxkQmUoIlBOTGJhclswXSIsICJpdGVtLmxhc3RDaGlsZCIp
OworCitpdGVtLmxhc3RDaGlsZC5yZW1vdmVBdHRyaWJ1dGUoJ2l0ZW1wcm9wJyk7CitzaG91bGRC
ZSgiUE5MZm9vLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiUE5MYmFyLmxlbmd0aCIsICIwIik7
CitzaG91bGRCZSgiUE5MZm9vWzBdIiwgIml0ZW0uZmlyc3RDaGlsZCIpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEv
cHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2Rl
bGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1y
ZW1vdmUtaXRlbXJlZi10b2tlbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjAgQEAKK1Rlc3QgdG8gZW5zdXJlIHRoYXQgYWRkaW5nIG9yIHJlbW92aW5nIGl0ZW1yZWYg
dG9rZW5zIG11c3QgdXBkYXRlIGl0cyBQcm9wZXJ0eU5vZGVMaXN0LgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworQ3JlYXRlZCBlbGVtZW50IG9mIHR5cGU6IGRpdgorUEFTUyBQTkwu
bGVuZ3RoIGlzIDAKK1BBU1MgUE5MLmxlbmd0aCBpcyAxCitQQVNTIFBOTFswXSBpcyBwYXJlbnQu
Zmlyc3RDaGlsZAorUEFTUyBQTkwubGVuZ3RoIGlzIDAKK1BBU1MgIVBOTFswXSBpcyB0cnVlCitQ
QVNTIGxlbmd0aDAgaXMgMAorUEFTUyBsZW5ndGgxIGlzIDEKK1BBU1MgZm9vMCBpcyBwYXJlbnQu
Zmlyc3RDaGlsZAorUEFTUyBsZW5ndGgyIGlzIDAKK1BBU1MgIWZvbzEgaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRl
bXJlZi10b2tlbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNy
b0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2Rl
bGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdG8gZW5zdXJlIHRoYXQgYWRkaW5nIG9y
IHJlbW92aW5nIGl0ZW1yZWYgdG9rZW5zIG11c3QgdXBkYXRlIGl0cyBQcm9wZXJ0eU5vZGVMaXN0
LiIpOwordmFyIHBhcmVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHt9LCAnPGRpdiBpZD0iaWQx
IiBpdGVtcHJvcD0iZm9vIj48L2Rpdj48ZGl2IGl0ZW1zY29wZT48L2Rpdj4nKTsKK3ZhciB0ZXN0
RWxlbWVudCA9IHBhcmVudC5jaGlsZE5vZGVzWzFdOwordmFyIFBOTCA9IHRlc3RFbGVtZW50LnBy
b3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKTsKKworc2hvdWxkQmUoIlBOTC5sZW5ndGgiLCAiMCIp
OwordGVzdEVsZW1lbnQuaXRlbVJlZi5hZGQoJ2lkMScpOworc2hvdWxkQmUoIlBOTC5sZW5ndGgi
LCAiMSIpOworc2hvdWxkQmUoIlBOTFswXSIsICJwYXJlbnQuZmlyc3RDaGlsZCIpOwordGVzdEVs
ZW1lbnQuaXRlbVJlZi5yZW1vdmUoJ2lkMScpOworc2hvdWxkQmUoIlBOTC5sZW5ndGgiLCAiMCIp
Oworc2hvdWxkQmVUcnVlKCIhUE5MWzBdIik7CisKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
cGFyZW50KTsKK3ZhciBsZW5ndGgwID0gUE5MLmxlbmd0aDsKK3Rlc3RFbGVtZW50Lml0ZW1SZWYu
dG9nZ2xlKCdpZDEnKTsKK3ZhciBsZW5ndGgxID0gUE5MLmxlbmd0aDsKK3ZhciBmb28wID0gUE5M
WzBdOwordGVzdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdpdGVtcmVmJyk7Cit2YXIgbGVuZ3Ro
MiA9IFBOTC5sZW5ndGg7Cit2YXIgZm9vMSA9IFBOTFswXTsKK2RvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQocGFyZW50KTsKK3Nob3VsZEJlKCJsZW5ndGgwIiwgIjAiKTsKK3Nob3VsZEJlKCJsZW5n
dGgxIiwgIjEiKTsKK3Nob3VsZEJlKCJmb28wIiwgInBhcmVudC5maXJzdENoaWxkIik7CitzaG91
bGRCZSgibGVuZ3RoMiIsICIwIik7CitzaG91bGRCZVRydWUoIiFmb28xIik7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184341</attachid>
            <date>2013-01-23 16:35:44 -0800</date>
            <delta_ts>2013-01-23 18:32:28 -0800</delta_ts>
            <desc>Patch2</desc>
            <filename>bug-106616-20130123.patch</filename>
            <type>text/plain</type>
            <size>24557</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAxLTIzICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IGl0ZW10eXBlIGF0
dHJpYnV0ZSBtdXN0IHVwZGF0ZSBjb3JyZWN0bHkgb24gYWRkaW5nIG9yIHJlbW92aW5nIHRva2Vu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSBuZXcgY2xhc3MgTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LCBpdCBvdmVycmlkZXMgc2V0
VmFsdWUoKSBtZXRob2Qgb2YKKyAgICAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QuIHNldFZhbHVl
KCkgaXMgcmVzcG9uc2libGUgdG8gc2V0IHRoZSBuZXcgYXR0cmlidXRlIHZhbHVlIGZvcgorICAg
ICAgICBhIGdpdmVuIGVsZW1lbnQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL01pY3JvRGF0
YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQt
cmVtb3ZlLWl0ZW1wcm9wLXRva2Vucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9NaWNy
b0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLmh0bWwKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXRlbVByb3ApOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0SXRlbVByb3ApOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXRlbVJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRJdGVtUmVmKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6Oml0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEl0ZW1UeXBlKToKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVNaWNyb0RhdGFUb2tlbkxpc3RzOjppdGVtUHJvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlTWljcm9EYXRhVG9rZW5MaXN0czo6aXRlbVJlZik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlTWljcm9EYXRhVG9rZW5MaXN0czo6aXRlbVR5cGUpOgorICAgICAgICAoTm9kZU1p
Y3JvRGF0YVRva2VuTGlzdHMpOgorICAgICAgICAqIGh0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3Qu
aDogTWFkZSB0aGUgY29uc3RydWN0b3IgYXMgcHJvdGVjdGVkLCBzbyB0aGF0IHdlIGNhbgorICAg
ICAgICBvdmVycmlkZSBzZXRWYWx1ZSgpIG1ldGhvZC4KKyAgICAgICAgKERPTVNldHRhYmxlVG9r
ZW5MaXN0KToKKyAgICAgICAgKiBodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb0RhdGFB
dHRyaWJ1dGVUb2tlbkxpc3Q6Ok1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q6OnNldFZhbHVlKToKKyAgICAg
ICAgKiBodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6Y3JlYXRlKToKKwogMjAx
My0wMS0yMyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W1Y4XSBSZWR1Y2UgdXNhZ2Ugb2YgZGVwcmVjYXRlZFY4U3RyaW5nKCkgYW5kIGRlcHJlY2F0ZWRW
OEludGVnZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0MDYxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNDcwLDYg
KzE0NzAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIu
Y3BwCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmNwcAogICAgIGh0bWwvTWVkaWFGcmFnbWVudFVS
SVBhcnNlci5jcHAKKyAgICBodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHAKICAg
ICBodG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAKICAgICBodG1sL01vbnRoSW5wdXRUeXBlLmNw
cAogICAgIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxNDA2MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNTM0LDYgKzM1MzQsOCBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1s
L01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01p
Y3JvRGF0YUl0ZW1WYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhSXRl
bVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTQwNjExKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQkod29ya2luZyBjb3B5KQpAQCAtNjgwLDYgKzY4MCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKICAgICBodG1sL0xpbmtSZWxBdHRyaWJ1dGUuY3Bw
IFwKICAgICBodG1sL01lZGlhRG9jdW1lbnQuY3BwIFwKKyAgICBodG1sL01pY3JvRGF0YUF0dHJp
YnV0ZVRva2VuTGlzdC5jcHAgXAogICAgIGh0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmNwcCBcCiAg
ICAgaHRtbC9Nb250aElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cCBcCkBAIC0xODc2LDYgKzE4NzcsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL01lZGlhQ29u
dHJvbGxlci5oIFwKICAgICBodG1sL01lZGlhRG9jdW1lbnQuaCBcCiAgICAgaHRtbC9NZWRpYUZy
YWdtZW50VVJJUGFyc2VyLmggXAorICAgIGh0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0
LmggXAogICAgIGh0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmggXAogICAgIGh0bWwvUGx1Z2luRG9j
dW1lbnQuaCBcCiAgICAgaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkocmV2aXNpb24gMTQwNjExKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjE5LDYgKzMyMTksOCBAQAogICAgICAgICAgICAgJ2h0bWwvTWVk
aWFLZXlFcnJvci5oJywKICAgICAgICAgICAgICdodG1sL01lZGlhS2V5RXZlbnQuY3BwJywKICAg
ICAgICAgICAgICdodG1sL01lZGlhS2V5RXZlbnQuaCcsCisgICAgICAgICAgICAnaHRtbC9NaWNy
b0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwJywKKyAgICAgICAgICAgICdodG1sL01pY3JvRGF0
YUF0dHJpYnV0ZVRva2VuTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL01pY3JvRGF0YUl0ZW1W
YWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmgnLAogICAg
ICAgICAgICAgJ2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxNDA2MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtNjQ1OTAsNiArNjQ1OTAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAiCiAJ
CQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTQwNjExKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTI4LDMy
ICsyNTI4LDMyIEBAIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzKCkKICNpZiBF
TkFCTEUoTUlDUk9EQVRBKQogRE9NU2V0dGFibGVUb2tlbkxpc3QqIE5vZGU6Oml0ZW1Qcm9wKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0
cygpLT5pdGVtUHJvcCgpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNaWNy
b0RhdGFUb2tlbkxpc3RzKCktPml0ZW1Qcm9wKHRoaXMpOwogfQogCiB2b2lkIE5vZGU6OnNldEl0
ZW1Qcm9wKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZW5zdXJlUmFyZURhdGEoKS0+ZW5z
dXJlTWljcm9EYXRhVG9rZW5MaXN0cygpLT5pdGVtUHJvcCgpLT5zZXRWYWx1ZSh2YWx1ZSk7Cisg
ICAgZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0cygpLT5pdGVtUHJv
cCh0aGlzKS0+c2V0VmFsdWUodmFsdWUpOwogfQogCiBET01TZXR0YWJsZVRva2VuTGlzdCogTm9k
ZTo6aXRlbVJlZigpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3Jv
RGF0YVRva2VuTGlzdHMoKS0+aXRlbVJlZigpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgp
LT5lbnN1cmVNaWNyb0RhdGFUb2tlbkxpc3RzKCktPml0ZW1SZWYodGhpcyk7CiB9CiAKIHZvaWQg
Tm9kZTo6c2V0SXRlbVJlZihjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGVuc3VyZVJhcmVE
YXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+aXRlbVJlZigpLT5zZXRWYWx1ZSh2
YWx1ZSk7CisgICAgZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0cygp
LT5pdGVtUmVmKHRoaXMpLT5zZXRWYWx1ZSh2YWx1ZSk7CiB9CiAKIERPTVNldHRhYmxlVG9rZW5M
aXN0KiBOb2RlOjppdGVtVHlwZSgpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVu
c3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+aXRlbVR5cGUoKTsKKyAgICByZXR1cm4gZW5zdXJl
UmFyZURhdGEoKS0+ZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0cygpLT5pdGVtVHlwZSh0aGlzKTsK
IH0KIAogdm9pZCBOb2RlOjpzZXRJdGVtVHlwZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAg
IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+aXRlbVR5cGUo
KS0+c2V0VmFsdWUodmFsdWUpOworICAgIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0
YVRva2VuTGlzdHMoKS0+aXRlbVR5cGUodGhpcyktPnNldFZhbHVlKHZhbHVlKTsKIH0KIAogUGFz
c1JlZlB0cjxQcm9wZXJ0eU5vZGVMaXN0PiBOb2RlOjpwcm9wZXJ0eU5vZGVMaXN0KGNvbnN0IFN0
cmluZyYgbmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJKHJldmlzaW9uIDE0
MDYxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ2hpbGROb2RlTGlzdC5oIgogI2luY2x1
ZGUgIkRPTVNldHRhYmxlVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiTGl2ZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCIKQEAgLTQxLDExICs0MiwxNCBA
QAogCiAjaWYgRU5BQkxFKE1JQ1JPREFUQSkKICNpbmNsdWRlICJIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb24uaCIKKyNpbmNsdWRlICJNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaCIKICNpbmNs
dWRlICJNaWNyb0RhdGFJdGVtTGlzdC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogY2xhc3MgTGFiZWxzTm9kZUxpc3Q7CiBj
bGFzcyBSYWRpb05vZGVMaXN0OwogY2xhc3MgVHJlZVNjb3BlOwpAQCAtMjYwLDMzICsyNjQsMzMg
QEAgY2xhc3MgTm9kZU1pY3JvRGF0YVRva2VuTGlzdHMgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPE5vZGVNaWNyb0RhdGFUb2tlbkxpc3RzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgTm9kZU1pY3JvRGF0YVRva2VuTGlzdHMpOyB9CiAKLSAgICBET01TZXR0YWJsZVRv
a2VuTGlzdCogaXRlbVByb3AoKSBjb25zdAorICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVt
UHJvcChOb2RlKiBub2RlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2l0ZW1Qcm9wKQot
ICAgICAgICAgICAgbV9pdGVtUHJvcCA9IERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIG1faXRlbVByb3AgPSBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q6OmNy
ZWF0ZSh0b0VsZW1lbnQobm9kZSksIGl0ZW1wcm9wQXR0cik7CiAgICAgICAgIHJldHVybiBtX2l0
ZW1Qcm9wLmdldCgpOwogICAgIH0KIAotICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVtUmVm
KCkgY29uc3QKKyAgICBET01TZXR0YWJsZVRva2VuTGlzdCogaXRlbVJlZihOb2RlKiBub2RlKSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2l0ZW1SZWYpCi0gICAgICAgICAgICBtX2l0ZW1S
ZWYgPSBET01TZXR0YWJsZVRva2VuTGlzdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2l0ZW1S
ZWYgPSBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q6OmNyZWF0ZSh0b0VsZW1lbnQobm9kZSks
IGl0ZW1yZWZBdHRyKTsKICAgICAgICAgcmV0dXJuIG1faXRlbVJlZi5nZXQoKTsKICAgICB9CiAK
LSAgICBET01TZXR0YWJsZVRva2VuTGlzdCogaXRlbVR5cGUoKSBjb25zdAorICAgIERPTVNldHRh
YmxlVG9rZW5MaXN0KiBpdGVtVHlwZShOb2RlKiBub2RlKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKCFtX2l0ZW1UeXBlKQotICAgICAgICAgICAgbV9pdGVtVHlwZSA9IERPTVNldHRhYmxlVG9r
ZW5MaXN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1faXRlbVR5cGUgPSBNaWNyb0RhdGFBdHRy
aWJ1dGVUb2tlbkxpc3Q6OmNyZWF0ZSh0b0VsZW1lbnQobm9kZSksIGl0ZW10eXBlQXR0cik7CiAg
ICAgICAgIHJldHVybiBtX2l0ZW1UeXBlLmdldCgpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBO
b2RlTWljcm9EYXRhVG9rZW5MaXN0cygpIHsgfQogCi0gICAgbXV0YWJsZSBSZWZQdHI8RE9NU2V0
dGFibGVUb2tlbkxpc3Q+IG1faXRlbVByb3A7Ci0gICAgbXV0YWJsZSBSZWZQdHI8RE9NU2V0dGFi
bGVUb2tlbkxpc3Q+IG1faXRlbVJlZjsKLSAgICBtdXRhYmxlIFJlZlB0cjxET01TZXR0YWJsZVRv
a2VuTGlzdD4gbV9pdGVtVHlwZTsKKyAgICBtdXRhYmxlIFJlZlB0cjxNaWNyb0RhdGFBdHRyaWJ1
dGVUb2tlbkxpc3Q+IG1faXRlbVByb3A7CisgICAgbXV0YWJsZSBSZWZQdHI8TWljcm9EYXRhQXR0
cmlidXRlVG9rZW5MaXN0PiBtX2l0ZW1SZWY7CisgICAgbXV0YWJsZSBSZWZQdHI8TWljcm9EYXRh
QXR0cmlidXRlVG9rZW5MaXN0PiBtX2l0ZW1UeXBlOwogfTsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCShyZXZpc2lvbiAxNDA2MTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDkgKzU4LDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFNwYWNlU3BsaXRT
dHJpbmcmIHRva2VucygpIGNvbnN0IHsgcmV0dXJuIG1fdG9rZW5zOyB9CiAKLXByaXZhdGU6Citw
cm90ZWN0ZWQ6CiAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QoKTsKIAorcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgYWRkSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIGNvbnRhaW5zSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUludGVybmFsKGNvbnN0IEF0b21p
Y1N0cmluZyYpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFB
dHRyaWJ1dGVUb2tlbkxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEzIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2Rp
ZmljYXRpb24sCisgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vcgorICogb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAq
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKE1JQ1JPREFUQSkKKworI2luY2x1ZGUgIk1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5o
IgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01pY3Jv
RGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0KEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgOiBE
T01TZXR0YWJsZVRva2VuTGlzdCgpCisgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAsIG1f
YXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQoreworfQorCit2b2lkIE1pY3JvRGF0YUF0dHJp
YnV0ZVRva2VuTGlzdDo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUo
bV9hdHRyaWJ1dGVOYW1lKTsKKyAgICBET01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUodmFs
dWUpOworCisgICAgQXRvbWljU3RyaW5nIG5ld1ZhbHVlID0gdGhpcy0+dmFsdWUoKTsKKyAgICBp
ZiAob2xkVmFsdWUgIT0gbmV3VmFsdWUpCisgICAgICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRl
KG1fYXR0cmlidXRlTmFtZSwgbmV3VmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUlDUk9EQVRBKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEzIE1vdG9y
b2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dCBtb2RpZmljYXRpb24sCisgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vcgorICogb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAqIHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNaWNyb0RhdGFBdHRyaWJ1
dGVUb2tlbkxpc3RfaAorI2RlZmluZSBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3RfaAorCisj
aWYgRU5BQkxFKE1JQ1JPREFUQSkKKworI2luY2x1ZGUgIkRPTVNldHRhYmxlVG9rZW5MaXN0Lmgi
CisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEVsZW1lbnQ7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIE1pY3Jv
RGF0YUF0dHJpYnV0ZVRva2VuTGlzdCA6IHB1YmxpYyBET01TZXR0YWJsZVRva2VuTGlzdCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0
PiBjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWljcm9EYXRhQXR0cmli
dXRlVG9rZW5MaXN0KGVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSBPVkVSUklERSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKwor
cHJpdmF0ZToKKyAgICBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QoRWxlbWVudCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmKSBPVkVSUklERTsKKworICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKKyAgICBRdWFs
aWZpZWROYW1lIG1fYXR0cmlidXRlTmFtZTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKKworI2VuZGlmIC8vIE1pY3JvRGF0YUF0
dHJpYnV0ZVRva2VuTGlzdF9oCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDA2MTEpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMS0y
MyAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTWljcm9kYXRhOiBp
dGVtdHlwZSBhdHRyaWJ1dGUgbXVzdCB1cGRhdGUgY29ycmVjdGx5IG9uIGFkZGluZyBvciByZW1v
dmluZyB0b2tlbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNjYxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGl0ZW10eXBlLCBpdGVtcHJvcCwgaXRlbXJl
ZiBhdHRyaWJ1dGVzIG11c3QgdXBkYXRlCisgICAgICAgIGNvcnJlY3RseSB3aGVuIHRva2VucyBo
YXZlIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZC4KKworICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0
YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9taWNyb2RhdGEt
ZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0
ZW1wcm9wLXRva2Vucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01p
Y3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXByb3AtdG9rZW5zLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFk
ZC1yZW1vdmUtaXRlbXJlZi10b2tlbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9r
ZW5zLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTIzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJLaXQgc2hvdWxkIHN1cHBvcnQgZGVjb2Rpbmcg
bXVsdGktYnl0ZSBlbnRpdGllcyBpbiBYTUwgY29udGVudApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vTWljcm9EYXRhL21pY3JvZGF0YS1kb210b2tlbmxpc3QtYXR0cmlidXRlLWFkZC1yZW1v
dmUtdG9rZW5zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NaWNyb0RhdGEvbWljcm9kYXRhLWRvbXRva2VubGlzdC1hdHRyaWJ1dGUtYWRkLXJlbW92ZS10
b2tlbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
TWljcm9EYXRhL21pY3JvZGF0YS1kb210b2tlbmxpc3QtYXR0cmlidXRlLWFkZC1yZW1vdmUtdG9r
ZW5zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACitUaGlzIHRl
c3RzIHRoYXQgaXRlbXR5cGUsIGl0ZW1wcm9wLCBpdGVtcmVmIGF0dHJpYnV0ZXMgbXVzdCB1cGRh
dGUgY29ycmVjdGx5IHdoZW4gdG9rZW5zIGhhdmUgYmVlbiBhZGRlZCBvciByZW1vdmVkLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaXRlbXR5cGUgYXR0cmlidXRlIHRlc3QuCitQ
QVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtdHlwZScpIGlzICdmb28gRk9PJworUEFTUyBl
bGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbXR5cGUnKSBpcyAnRk9PJworUEFTUyBlbGVtZW50Lmdl
dEF0dHJpYnV0ZSgnaXRlbXR5cGUnKSBpcyAnJworCitpdGVtcHJvcCBhdHRyaWJ1dGUgdGVzdC4K
K1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1wcm9wJykgaXMgJ2ZvbyBGT08nCitQQVNT
IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcHJvcCcpIGlzICdGT08nCitQQVNTIGVsZW1lbnQu
Z2V0QXR0cmlidXRlKCdpdGVtcHJvcCcpIGlzICcnCisKK2l0ZW1yZWYgYXR0cmlidXRlIHRlc3Qu
CitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcmVmJykgaXMgJ2ZvbyBGT08nCitQQVNT
IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcmVmJykgaXMgJ0ZPTycKK1BBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoJ2l0ZW1yZWYnKSBpcyAnJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3Jv
RGF0YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9taWNyb2Rh
dGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL21pY3JvZGF0YS1kb210b2tl
bmxpc3QtYXR0cmlidXRlLWFkZC1yZW1vdmUtdG9rZW5zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9Im15ZGl2Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IGl0ZW10eXBlLCBpdGVtcHJvcCwgaXRlbXJlZiBhdHRyaWJ1dGVzIG11
c3QgdXBkYXRlIGNvcnJlY3RseSB3aGVuIHRva2VucyBoYXZlIGJlZW4gYWRkZWQgb3IgcmVtb3Zl
ZC4iKTsKK3ZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15ZGl2Iik7CisK
K2RlYnVnKCJpdGVtdHlwZSBhdHRyaWJ1dGUgdGVzdC4iKTsKK2VsZW1lbnQuaXRlbVR5cGUuYWRk
KCdmb28nKTsKK2VsZW1lbnQuaXRlbVR5cGUuYWRkKCdGT08nKTsKK3Nob3VsZEJlKCJlbGVtZW50
LmdldEF0dHJpYnV0ZSgnaXRlbXR5cGUnKSIsICInZm9vIEZPTyciKTsKK2VsZW1lbnQuaXRlbVR5
cGUucmVtb3ZlKCdmb28nKTsKK3Nob3VsZEJlKCJlbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbXR5
cGUnKSIsICInRk9PJyIpOworZWxlbWVudC5pdGVtVHlwZS5yZW1vdmUoJ0ZPTycpOworc2hvdWxk
QmUoImVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtdHlwZScpIiwgIicnIik7CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJpdGVtcHJvcCBhdHRyaWJ1dGUgdGVzdC4iKTsKK2VsZW1lbnQuaXRlbVByb3Au
YWRkKCdmb28nKTsKK2VsZW1lbnQuaXRlbVByb3AuYWRkKCdGT08nKTsKK3Nob3VsZEJlKCJlbGVt
ZW50LmdldEF0dHJpYnV0ZSgnaXRlbXByb3AnKSIsICInZm9vIEZPTyciKTsKK2VsZW1lbnQuaXRl
bVByb3AucmVtb3ZlKCdmb28nKTsKK3Nob3VsZEJlKCJlbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRl
bXByb3AnKSIsICInRk9PJyIpOworZWxlbWVudC5pdGVtUHJvcC5yZW1vdmUoJ0ZPTycpOworc2hv
dWxkQmUoImVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcHJvcCcpIiwgIicnIik7CisKK2RlYnVn
KCIiKTsKK2RlYnVnKCJpdGVtcmVmIGF0dHJpYnV0ZSB0ZXN0LiIpOworZWxlbWVudC5pdGVtUmVm
LmFkZCgnZm9vJyk7CitlbGVtZW50Lml0ZW1SZWYuYWRkKCdGT08nKTsKK3Nob3VsZEJlKCJlbGVt
ZW50LmdldEF0dHJpYnV0ZSgnaXRlbXJlZicpIiwgIidmb28gRk9PJyIpOworZWxlbWVudC5pdGVt
UmVmLnJlbW92ZSgnZm9vJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1y
ZWYnKSIsICInRk9PJyIpOworZWxlbWVudC5pdGVtUmVmLnJlbW92ZSgnRk9PJyk7CitzaG91bGRC
ZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1yZWYnKSIsICInJyIpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEv
cHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1wcm9wLXRva2Vucy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9k
ZWxpc3QtYWRkLXJlbW92ZS1pdGVtcHJvcC10b2tlbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRk
LXJlbW92ZS1pdGVtcHJvcC10b2tlbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjYgQEAKK1Rlc3QgdG8gZW5zdXJlIHRoYXQgYWRkaW5nIG9yIHJlbW92aW5nIGl0ZW1w
cm9wIHRva2VucyBtdXN0IHVwZGF0ZSBpdHMgUHJvcGVydHlOb2RlTGlzdC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKK1NldCBh
dHRyaWJ1dGU6IGl0ZW1zY29wZSwgdmFsdWU6IGl0ZW1zY29wZQorUEFTUyBQTkxmb28ubGVuZ3Ro
IGlzIDEKK1BBU1MgUE5MYmFyLmxlbmd0aCBpcyAwCitQQVNTIFBOTGZvb1swXSBpcyBpdGVtLmZp
cnN0Q2hpbGQKK1BBU1MgUE5MZm9vLmxlbmd0aCBpcyAxCitQQVNTIFBOTGJhci5sZW5ndGggaXMg
MQorUEFTUyBQTkxmb29bMF0gaXMgaXRlbS5maXJzdENoaWxkCitQQVNTIFBOTGJhclswXSBpcyBp
dGVtLmxhc3RDaGlsZAorUEFTUyBQTkxmb28ubGVuZ3RoIGlzIDIKK1BBU1MgUE5MYmFyLmxlbmd0
aCBpcyAxCitQQVNTIFBOTGZvb1swXSBpcyBpdGVtLmZpcnN0Q2hpbGQKK1BBU1MgUE5MZm9vWzFd
IGlzIGl0ZW0ubGFzdENoaWxkCitQQVNTIFBOTGJhclswXSBpcyBpdGVtLmxhc3RDaGlsZAorUEFT
UyBQTkxmb28ubGVuZ3RoIGlzIDEKK1BBU1MgUE5MYmFyLmxlbmd0aCBpcyAwCitQQVNTIFBOTGZv
b1swXSBpcyBpdGVtLmZpcnN0Q2hpbGQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEv
cHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1wcm9wLXRva2Vucy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFk
ZC1yZW1vdmUtaXRlbXByb3AtdG9rZW5zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1wcm9w
LXRva2Vucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEt
Y29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0IHRvIGVuc3VyZSB0aGF0IGFkZGluZyBvciByZW1vdmluZyBpdGVtcHJvcCB0b2tl
bnMgbXVzdCB1cGRhdGUgaXRzIFByb3BlcnR5Tm9kZUxpc3QuIik7Cit2YXIgaXRlbSA9IGNyZWF0
ZUVsZW1lbnQoJ2RpdicsIHtpdGVtc2NvcGU6ICdpdGVtc2NvcGUnfSwgJzxkaXYgaXRlbXByb3A9
ImZvbyI+PC9kaXY+PGRpdj48L2Rpdj4nKTsKK3ZhciBQTkxmb28gPSBpdGVtLnByb3BlcnRpZXMu
bmFtZWRJdGVtKCdmb28nKTsKK1BOTGJhciA9IGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2Jh
cicpOworCitzaG91bGRCZSgiUE5MZm9vLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiUE5MYmFy
Lmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiUE5MZm9vWzBdIiwgIml0ZW0uZmlyc3RDaGlsZCIp
OworCitpdGVtLmxhc3RDaGlsZC5pdGVtUHJvcC50b2dnbGUoJ2JhcicpOworc2hvdWxkQmUoIlBO
TGZvby5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIlBOTGJhci5sZW5ndGgiLCAiMSIpOworc2hv
dWxkQmUoIlBOTGZvb1swXSIsICJpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlKCJQTkxiYXJb
MF0iLCAiaXRlbS5sYXN0Q2hpbGQiKTsKKworaXRlbS5sYXN0Q2hpbGQuaXRlbVByb3AuYWRkKCdm
b28nKTsKK3Nob3VsZEJlKCJQTkxmb28ubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJQTkxiYXIu
bGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJQTkxmb29bMF0iLCAiaXRlbS5maXJzdENoaWxkIik7
CitzaG91bGRCZSgiUE5MZm9vWzFdIiwgIml0ZW0ubGFzdENoaWxkIik7CitzaG91bGRCZSgiUE5M
YmFyWzBdIiwgIml0ZW0ubGFzdENoaWxkIik7CisKK2l0ZW0ubGFzdENoaWxkLnJlbW92ZUF0dHJp
YnV0ZSgnaXRlbXByb3AnKTsKK3Nob3VsZEJlKCJQTkxmb28ubGVuZ3RoIiwgIjEiKTsKK3Nob3Vs
ZEJlKCJQTkxiYXIubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJQTkxmb29bMF0iLCAiaXRlbS5m
aXJzdENoaWxkIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRl
bXJlZi10b2tlbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXJlZi10b2tlbnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9E
YXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcmVmLXRva2Vucy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0byBlbnN1cmUgdGhhdCBh
ZGRpbmcgb3IgcmVtb3ZpbmcgaXRlbXJlZiB0b2tlbnMgbXVzdCB1cGRhdGUgaXRzIFByb3BlcnR5
Tm9kZUxpc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDcmVhdGVkIGVsZW1l
bnQgb2YgdHlwZTogZGl2CitQQVNTIFBOTC5sZW5ndGggaXMgMAorUEFTUyBQTkwubGVuZ3RoIGlz
IDEKK1BBU1MgUE5MWzBdIGlzIHBhcmVudC5maXJzdENoaWxkCitQQVNTIFBOTC5sZW5ndGggaXMg
MAorUEFTUyAhUE5MWzBdIGlzIHRydWUKK1BBU1MgbGVuZ3RoMCBpcyAwCitQQVNTIGxlbmd0aDEg
aXMgMQorUEFTUyBmb28wIGlzIHBhcmVudC5maXJzdENoaWxkCitQQVNTIGxlbmd0aDIgaXMgMAor
UEFTUyAhZm9vMSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3Bl
cnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcmVmLXRva2Vucy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1v
dmUtaXRlbXJlZi10b2tlbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXJlZi10b2tlbnMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1vbi5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVz
dCB0byBlbnN1cmUgdGhhdCBhZGRpbmcgb3IgcmVtb3ZpbmcgaXRlbXJlZiB0b2tlbnMgbXVzdCB1
cGRhdGUgaXRzIFByb3BlcnR5Tm9kZUxpc3QuIik7Cit2YXIgcGFyZW50ID0gY3JlYXRlRWxlbWVu
dCgnZGl2Jywge30sICc8ZGl2IGlkPSJpZDEiIGl0ZW1wcm9wPSJmb28iPjwvZGl2PjxkaXYgaXRl
bXNjb3BlPjwvZGl2PicpOwordmFyIHRlc3RFbGVtZW50ID0gcGFyZW50LmNoaWxkTm9kZXNbMV07
Cit2YXIgUE5MID0gdGVzdEVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpOworCitz
aG91bGRCZSgiUE5MLmxlbmd0aCIsICIwIik7Cit0ZXN0RWxlbWVudC5pdGVtUmVmLmFkZCgnaWQx
Jyk7CitzaG91bGRCZSgiUE5MLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiUE5MWzBdIiwgInBh
cmVudC5maXJzdENoaWxkIik7Cit0ZXN0RWxlbWVudC5pdGVtUmVmLnJlbW92ZSgnaWQxJyk7Citz
aG91bGRCZSgiUE5MLmxlbmd0aCIsICIwIik7CitzaG91bGRCZVRydWUoIiFQTkxbMF0iKTsKKwor
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOwordmFyIGxlbmd0aDAgPSBQTkwubGVu
Z3RoOwordGVzdEVsZW1lbnQuaXRlbVJlZi50b2dnbGUoJ2lkMScpOwordmFyIGxlbmd0aDEgPSBQ
TkwubGVuZ3RoOwordmFyIGZvbzAgPSBQTkxbMF07Cit0ZXN0RWxlbWVudC5yZW1vdmVBdHRyaWJ1
dGUoJ2l0ZW1yZWYnKTsKK3ZhciBsZW5ndGgyID0gUE5MLmxlbmd0aDsKK3ZhciBmb28xID0gUE5M
WzBdOworZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwYXJlbnQpOworc2hvdWxkQmUoImxlbmd0
aDAiLCAiMCIpOworc2hvdWxkQmUoImxlbmd0aDEiLCAiMSIpOworc2hvdWxkQmUoImZvbzAiLCAi
cGFyZW50LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlKCJsZW5ndGgyIiwgIjAiKTsKK3Nob3VsZEJl
VHJ1ZSgiIWZvbzEiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184373</attachid>
            <date>2013-01-23 18:32:28 -0800</date>
            <delta_ts>2013-01-24 11:47:22 -0800</delta_ts>
            <desc>Patch3</desc>
            <filename>bug-106616-2013012318261921.patch</filename>
            <type>text/plain</type>
            <size>24606</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTIzICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IGl0ZW10eXBlIGF0
dHJpYnV0ZSBtdXN0IHVwZGF0ZSBjb3JyZWN0bHkgb24gYWRkaW5nIG9yIHJlbW92aW5nIHRva2Vu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSBuZXcgY2xhc3MgTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LCBpdCBvdmVycmlkZXMgc2V0
VmFsdWUoKSBtZXRob2Qgb2YKKyAgICAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QuIHNldFZhbHVl
KCkgaXMgcmVzcG9uc2libGUgdG8gc2V0IHRoZSBuZXcgYXR0cmlidXRlIHZhbHVlIGZvcgorICAg
ICAgICBhIGdpdmVuIGVsZW1lbnQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL01pY3JvRGF0
YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQt
cmVtb3ZlLWl0ZW1wcm9wLXRva2Vucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9NaWNy
b0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLmh0bWwKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXRlbVByb3ApOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0SXRlbVByb3ApOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXRlbVJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRJdGVtUmVmKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6Oml0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEl0ZW1UeXBlKToKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTWljcm9E
YXRhVG9rZW5MaXN0czo6aXRlbVByb3ApOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU1pY3JvRGF0
YVRva2VuTGlzdHM6Oml0ZW1SZWYpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU1pY3JvRGF0YVRv
a2VuTGlzdHM6Oml0ZW1UeXBlKToKKyAgICAgICAgKE5vZGVNaWNyb0RhdGFUb2tlbkxpc3RzKToK
KyAgICAgICAgKiBodG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0Lmg6IE1hZGUgdGhlIGNvbnN0cnVj
dG9yIGFzIHByb3RlY3RlZCwgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgb3ZlcnJpZGUgc2V0VmFs
dWUoKSBtZXRob2QuCisgICAgICAgIChET01TZXR0YWJsZVRva2VuTGlzdCk6CisgICAgICAgICog
aHRtbC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0OjpN
aWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWljcm9EYXRh
QXR0cmlidXRlVG9rZW5MaXN0OjpzZXRWYWx1ZUludGVybmFsKTogSXQgY2FsbHMKKyAgICAgICAg
RE9NU2V0dGFibGVUb2tlbkxpc3Q6OnNldFZhbHVlIHRvIHNldCBpbnRlcm5hbCB0b2tlbnMgYW5k
IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0Ojpz
ZXRWYWx1ZSk6CisgICAgICAgICogaHRtbC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1pY3JvRGF0YUF0dHJpYnV0ZVRv
a2VuTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q6
OmNyZWF0ZSk6CisKIDIwMTMtMDEtMjMgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBUZWFjaCB0aHJlYWRlZCBIVE1MIHBhcnNlciB0byB1cGRhdGUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uIHdoZW4gd3JpdGluZyBIVE1MCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTQwNjI5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0NzAsNiArMTQ3MCw3IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBodG1sL01lZGlhQ29udHJvbGxlci5jcHAKICAgICBodG1sL01lZGlhRG9jdW1lbnQu
Y3BwCiAgICAgaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAorICAgIGh0bWwvTWljcm9E
YXRhQXR0cmlidXRlVG9rZW5MaXN0LmNwcAogICAgIGh0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmNw
cAogICAgIGh0bWwvTW9udGhJbnB1dFR5cGUuY3BwCiAgICAgaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0MDYyOSkK
KysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTM1MzQsNiArMzUzNCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUtleUV2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVu
dFVSSVBhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBh
cnNlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlz
dC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0
LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9Nb250aElucHV0VHlwZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDA2
MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC02ODAs
NiArNjgwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAgXAog
ICAgIGh0bWwvTGlua1JlbEF0dHJpYnV0ZS5jcHAgXAogICAgIGh0bWwvTWVkaWFEb2N1bWVudC5j
cHAgXAorICAgIGh0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmNwcCBcCiAgICAgaHRt
bC9NaWNyb0RhdGFJdGVtVmFsdWUuY3BwIFwKICAgICBodG1sL01vbnRoSW5wdXRUeXBlLmNwcCBc
CiAgICAgaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIFwKQEAgLTE4NzYsNiArMTg3Nyw3IEBAIEhF
QURFUlMgKz0gXAogICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmggXAogICAgIGh0bWwvTWVkaWFE
b2N1bWVudC5oIFwKICAgICBodG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBcCisgICAgaHRt
bC9NaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaCBcCiAgICAgaHRtbC9NaWNyb0RhdGFJdGVt
VmFsdWUuaCBcCiAgICAgaHRtbC9QbHVnaW5Eb2N1bWVudC5oIFwKICAgICBodG1sL1B1YmxpY1VS
TE1hbmFnZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxNDA2MjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMyMTksNiArMzIx
OSw4IEBACiAgICAgICAgICAgICAnaHRtbC9NZWRpYUtleUVycm9yLmgnLAogICAgICAgICAgICAg
J2h0bWwvTWVkaWFLZXlFdmVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFLZXlFdmVu
dC5oJywKKyAgICAgICAgICAgICdodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHAn
LAorICAgICAgICAgICAgJ2h0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmgnLAogICAg
ICAgICAgICAgJ2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9NaWNyb0RhdGFJdGVtVmFsdWUuaCcsCiAgICAgICAgICAgICAnaHRtbC9Nb250aElucHV0VHlw
ZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDE0MDYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDU5MCw2ICs2NDU5MCwxNCBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1p
Y3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcTWljcm9EYXRhSXRlbVZhbHVlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCShyZXZpc2lvbiAxNDA2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MjgsMzIgKzI1MjgsMzIgQEAgYm9vbCBOb2RlOjp3aWxs
UmVzcG9uZFRvVG91Y2hFdmVudHMoKQogI2lmIEVOQUJMRShNSUNST0RBVEEpCiBET01TZXR0YWJs
ZVRva2VuTGlzdCogTm9kZTo6aXRlbVByb3AoKQogewotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLT5lbnN1cmVNaWNyb0RhdGFUb2tlbkxpc3RzKCktPml0ZW1Qcm9wKCk7CisgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+aXRlbVByb3Ao
dGhpcyk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0SXRlbVByb3AoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNaWNyb0RhdGFUb2tlbkxpc3RzKCktPml0
ZW1Qcm9wKCktPnNldFZhbHVlKHZhbHVlKTsKKyAgICBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVN
aWNyb0RhdGFUb2tlbkxpc3RzKCktPml0ZW1Qcm9wKHRoaXMpLT5zZXRWYWx1ZUludGVybmFsKHZh
bHVlKTsKIH0KIAogRE9NU2V0dGFibGVUb2tlbkxpc3QqIE5vZGU6Oml0ZW1SZWYoKQogewotICAg
IHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNaWNyb0RhdGFUb2tlbkxpc3RzKCktPml0
ZW1SZWYoKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTWljcm9EYXRhVG9r
ZW5MaXN0cygpLT5pdGVtUmVmKHRoaXMpOwogfQogCiB2b2lkIE5vZGU6OnNldEl0ZW1SZWYoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNaWNyb0Rh
dGFUb2tlbkxpc3RzKCktPml0ZW1SZWYoKS0+c2V0VmFsdWUodmFsdWUpOworICAgIGVuc3VyZVJh
cmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+aXRlbVJlZih0aGlzKS0+c2V0
VmFsdWVJbnRlcm5hbCh2YWx1ZSk7CiB9CiAKIERPTVNldHRhYmxlVG9rZW5MaXN0KiBOb2RlOjpp
dGVtVHlwZSgpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0
YVRva2VuTGlzdHMoKS0+aXRlbVR5cGUoKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+
ZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0cygpLT5pdGVtVHlwZSh0aGlzKTsKIH0KIAogdm9pZCBO
b2RlOjpzZXRJdGVtVHlwZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGVuc3VyZVJhcmVE
YXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+aXRlbVR5cGUoKS0+c2V0VmFsdWUo
dmFsdWUpOworICAgIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMo
KS0+aXRlbVR5cGUodGhpcyktPnNldFZhbHVlSW50ZXJuYWwodmFsdWUpOwogfQogCiBQYXNzUmVm
UHRyPFByb3BlcnR5Tm9kZUxpc3Q+IE5vZGU6OnByb3BlcnR5Tm9kZUxpc3QoY29uc3QgU3RyaW5n
JiBuYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkocmV2aXNpb24gMTQwNjI5
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDaGlsZE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
RE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJMaXZlTm9kZUxpc3QuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIgpAQCAtNDEsNiArNDIsNyBAQAogCiAj
aWYgRU5BQkxFKE1JQ1JPREFUQSkKICNpbmNsdWRlICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24u
aCIKKyNpbmNsdWRlICJNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaCIKICNpbmNsdWRlICJN
aWNyb0RhdGFJdGVtTGlzdC5oIgogI2VuZGlmCiAKQEAgLTI2MCwzMyArMjYyLDMzIEBAIGNsYXNz
IE5vZGVNaWNyb0RhdGFUb2tlbkxpc3RzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxOb2RlTWljcm9EYXRhVG9rZW5MaXN0cz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3
IE5vZGVNaWNyb0RhdGFUb2tlbkxpc3RzKTsgfQogCi0gICAgRE9NU2V0dGFibGVUb2tlbkxpc3Qq
IGl0ZW1Qcm9wKCkgY29uc3QKKyAgICBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QqIGl0ZW1Q
cm9wKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faXRlbVByb3ApCi0g
ICAgICAgICAgICBtX2l0ZW1Qcm9wID0gRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgbV9pdGVtUHJvcCA9IE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6Y3Jl
YXRlKHRvRWxlbWVudChub2RlKSwgSFRNTE5hbWVzOjppdGVtcHJvcEF0dHIpOwogICAgICAgICBy
ZXR1cm4gbV9pdGVtUHJvcC5nZXQoKTsKICAgICB9CiAKLSAgICBET01TZXR0YWJsZVRva2VuTGlz
dCogaXRlbVJlZigpIGNvbnN0CisgICAgTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0KiBpdGVt
UmVmKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faXRlbVJlZikKLSAg
ICAgICAgICAgIG1faXRlbVJlZiA9IERPTVNldHRhYmxlVG9rZW5MaXN0OjpjcmVhdGUoKTsKKyAg
ICAgICAgICAgIG1faXRlbVJlZiA9IE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6Y3JlYXRl
KHRvRWxlbWVudChub2RlKSwgSFRNTE5hbWVzOjppdGVtcmVmQXR0cik7CiAgICAgICAgIHJldHVy
biBtX2l0ZW1SZWYuZ2V0KCk7CiAgICAgfQogCi0gICAgRE9NU2V0dGFibGVUb2tlbkxpc3QqIGl0
ZW1UeXBlKCkgY29uc3QKKyAgICBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QqIGl0ZW1UeXBl
KE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faXRlbVR5cGUpCi0gICAg
ICAgICAgICBtX2l0ZW1UeXBlID0gRE9NU2V0dGFibGVUb2tlbkxpc3Q6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgbV9pdGVtVHlwZSA9IE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6Y3JlYXRl
KHRvRWxlbWVudChub2RlKSwgSFRNTE5hbWVzOjppdGVtdHlwZUF0dHIpOwogICAgICAgICByZXR1
cm4gbV9pdGVtVHlwZS5nZXQoKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgTm9kZU1pY3JvRGF0
YVRva2VuTGlzdHMoKSB7IH0KIAotICAgIG11dGFibGUgUmVmUHRyPERPTVNldHRhYmxlVG9rZW5M
aXN0PiBtX2l0ZW1Qcm9wOwotICAgIG11dGFibGUgUmVmUHRyPERPTVNldHRhYmxlVG9rZW5MaXN0
PiBtX2l0ZW1SZWY7Ci0gICAgbXV0YWJsZSBSZWZQdHI8RE9NU2V0dGFibGVUb2tlbkxpc3Q+IG1f
aXRlbVR5cGU7CisgICAgbXV0YWJsZSBSZWZQdHI8TWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0
PiBtX2l0ZW1Qcm9wOworICAgIG11dGFibGUgUmVmUHRyPE1pY3JvRGF0YUF0dHJpYnV0ZVRva2Vu
TGlzdD4gbV9pdGVtUmVmOworICAgIG11dGFibGUgUmVmUHRyPE1pY3JvRGF0YUF0dHJpYnV0ZVRv
a2VuTGlzdD4gbV9pdGVtVHlwZTsKIH07CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaAkocmV2aXNpb24gMTQwNjI5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw5ICs1OCwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB0b2tl
bnMoKSBjb25zdCB7IHJldHVybiBtX3Rva2VuczsgfQogCi1wcml2YXRlOgorcHJvdGVjdGVkOgog
ICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KCk7CiAKK3ByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmKSBP
VkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9r
ZW5MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUF0
dHJpYnV0ZVRva2VuTGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMyBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAor
ICogYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgbWV0OgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAor
ICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKKyAqIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogTmVpdGhlciB0aGUgbmFtZSBvZiBNb3Rvcm9s
YSBNb2JpbGl0eSwgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5Cisg
KiBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0CisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNSUNST0RB
VEEpCisKKyNpbmNsdWRlICJNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaCIKKworI2luY2x1
ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNaWNyb0RhdGFBdHRyaWJ1
dGVUb2tlbkxpc3Q6Ok1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdChFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIDogRE9NU2V0dGFibGVU
b2tlbkxpc3QoKQorICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX2F0dHJpYnV0ZU5h
bWUoYXR0cmlidXRlTmFtZSkKK3sKK30KKwordm9pZCBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxp
c3Q6OnNldFZhbHVlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBE
T01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUodmFsdWUpOworfQorCit2b2lkIE1pY3JvRGF0
YUF0dHJpYnV0ZVRva2VuTGlzdDo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShtX2F0dHJpYnV0ZU5hbWUsIHZhbHVlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFU
QSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFBdHRyaWJ1dGVU
b2tlbkxpc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRh
QXR0cmlidXRlVG9rZW5MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxMyBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorICogYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoK
KyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3IKKyAqIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogTmVpdGhlciB0aGUgbmFtZSBvZiBNb3Rvcm9sYSBNb2JpbGl0eSwg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5CisgKiBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0CisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0X2gKKyNkZWZpbmUgTWljcm9E
YXRhQXR0cmlidXRlVG9rZW5MaXN0X2gKKworI2lmIEVOQUJMRShNSUNST0RBVEEpCisKKyNpbmNs
dWRlICJET01TZXR0YWJsZVRva2VuTGlzdC5oIgorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50OworCitjbGFzcyBNaWNyb0Rh
dGFBdHRyaWJ1dGVUb2tlbkxpc3QgOiBwdWJsaWMgRE9NU2V0dGFibGVUb2tlbkxpc3QgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdD4g
Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1pY3JvRGF0YUF0dHJpYnV0
ZVRva2VuTGlzdChlbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgfQorCisgICAgdmlydHVh
bCBFbGVtZW50KiBlbGVtZW50KCkgT1ZFUlJJREUgeyByZXR1cm4gbV9lbGVtZW50OyB9CisgICAg
dm9pZCBzZXRWYWx1ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworCitwcml2YXRlOgor
ICAgIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdChFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworCisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYp
IE9WRVJSSURFOworCisgICAgRWxlbWVudCogbV9lbGVtZW50OworICAgIFF1YWxpZmllZE5hbWUg
bV9hdHRyaWJ1dGVOYW1lOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUlDUk9EQVRBKQorCisjZW5kaWYgLy8gTWljcm9EYXRhQXR0cmlidXRlVG9r
ZW5MaXN0X2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDYyOSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAxLTIzICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IGl0ZW10eXBlIGF0
dHJpYnV0ZSBtdXN0IHVwZGF0ZSBjb3JyZWN0bHkgb24gYWRkaW5nIG9yIHJlbW92aW5nIHRva2Vu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
dGVzdHMgdG8gZW5zdXJlIHRoYXQgaXRlbXR5cGUsIGl0ZW1wcm9wLCBpdGVtcmVmIGF0dHJpYnV0
ZXMgbXVzdCB1cGRhdGUKKyAgICAgICAgY29ycmVjdGx5IHdoZW4gdG9rZW5zIGhhdmUgYmVlbiBh
ZGRlZCBvciByZW1vdmVkLgorCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL21pY3JvZGF0
YS1kb210b2tlbmxpc3QtYXR0cmlidXRlLWFkZC1yZW1vdmUtdG9rZW5zLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL21pY3JvZGF0YS1kb210b2tlbmxp
c3QtYXR0cmlidXRlLWFkZC1yZW1vdmUtdG9rZW5zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXByb3AtdG9r
ZW5zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL3By
b3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcHJvcC10b2tlbnMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1p
dGVtcmVmLXRva2Vucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01p
Y3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXJlZi10b2tlbnMuaHRtbDog
QWRkZWQuCisKIDIwMTItMTItMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUkVHUkVTU0lPTjogV2ViS2l0IGRvZXMgbm90IHJlbmRlciBzZWxlY3Rpb24gaW4g
bm9uLWZpcnN0IHJ1YnkgdGV4dCBub2Rlcy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01p
Y3JvRGF0YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vu
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9E
YXRhL21pY3JvZGF0YS1kb210b2tlbmxpc3QtYXR0cmlidXRlLWFkZC1yZW1vdmUtdG9rZW5zLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0
YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorVGhpcyB0ZXN0cyB0aGF0
IGl0ZW10eXBlLCBpdGVtcHJvcCwgaXRlbXJlZiBhdHRyaWJ1dGVzIG11c3QgdXBkYXRlIGNvcnJl
Y3RseSB3aGVuIHRva2VucyBoYXZlIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK2l0ZW10eXBlIGF0dHJpYnV0ZSB0ZXN0LgorUEFTUyBlbGVt
ZW50LmdldEF0dHJpYnV0ZSgnaXRlbXR5cGUnKSBpcyAnZm9vIEZPTycKK1BBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoJ2l0ZW10eXBlJykgaXMgJ0ZPTycKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1
dGUoJ2l0ZW10eXBlJykgaXMgJycKKworaXRlbXByb3AgYXR0cmlidXRlIHRlc3QuCitQQVNTIGVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcHJvcCcpIGlzICdmb28gRk9PJworUEFTUyBlbGVtZW50
LmdldEF0dHJpYnV0ZSgnaXRlbXByb3AnKSBpcyAnRk9PJworUEFTUyBlbGVtZW50LmdldEF0dHJp
YnV0ZSgnaXRlbXByb3AnKSBpcyAnJworCitpdGVtcmVmIGF0dHJpYnV0ZSB0ZXN0LgorUEFTUyBl
bGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbXJlZicpIGlzICdmb28gRk9PJworUEFTUyBlbGVtZW50
LmdldEF0dHJpYnV0ZSgnaXRlbXJlZicpIGlzICdGT08nCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmli
dXRlKCdpdGVtcmVmJykgaXMgJycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbWlj
cm9kYXRhLWRvbXRva2VubGlzdC1hdHRyaWJ1dGUtYWRkLXJlbW92ZS10b2tlbnMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbWljcm9kYXRhLWRvbXRv
a2VubGlzdC1hdHRyaWJ1dGUtYWRkLXJlbW92ZS10b2tlbnMuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0
dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJteWRpdiI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhhdCBpdGVtdHlwZSwgaXRlbXByb3AsIGl0ZW1yZWYgYXR0cmlidXRlcyBtdXN0IHVwZGF0
ZSBjb3JyZWN0bHkgd2hlbiB0b2tlbnMgaGF2ZSBiZWVuIGFkZGVkIG9yIHJlbW92ZWQuIik7Cit2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteWRpdiIpOworCitkZWJ1Zygi
aXRlbXR5cGUgYXR0cmlidXRlIHRlc3QuIik7CitlbGVtZW50Lml0ZW1UeXBlLmFkZCgnZm9vJyk7
CitlbGVtZW50Lml0ZW1UeXBlLmFkZCgnRk9PJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRy
aWJ1dGUoJ2l0ZW10eXBlJykiLCAiJ2ZvbyBGT08nIik7CitlbGVtZW50Lml0ZW1UeXBlLnJlbW92
ZSgnZm9vJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW10eXBlJykiLCAi
J0ZPTyciKTsKK2VsZW1lbnQuaXRlbVR5cGUucmVtb3ZlKCdGT08nKTsKK3Nob3VsZEJlKCJlbGVt
ZW50LmdldEF0dHJpYnV0ZSgnaXRlbXR5cGUnKSIsICInJyIpOworCitkZWJ1ZygiIik7CitkZWJ1
ZygiaXRlbXByb3AgYXR0cmlidXRlIHRlc3QuIik7CitlbGVtZW50Lml0ZW1Qcm9wLmFkZCgnZm9v
Jyk7CitlbGVtZW50Lml0ZW1Qcm9wLmFkZCgnRk9PJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRB
dHRyaWJ1dGUoJ2l0ZW1wcm9wJykiLCAiJ2ZvbyBGT08nIik7CitlbGVtZW50Lml0ZW1Qcm9wLnJl
bW92ZSgnZm9vJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1wcm9wJyki
LCAiJ0ZPTyciKTsKK2VsZW1lbnQuaXRlbVByb3AucmVtb3ZlKCdGT08nKTsKK3Nob3VsZEJlKCJl
bGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbXByb3AnKSIsICInJyIpOworCitkZWJ1ZygiIik7Citk
ZWJ1ZygiaXRlbXJlZiBhdHRyaWJ1dGUgdGVzdC4iKTsKK2VsZW1lbnQuaXRlbVJlZi5hZGQoJ2Zv
bycpOworZWxlbWVudC5pdGVtUmVmLmFkZCgnRk9PJyk7CitzaG91bGRCZSgiZWxlbWVudC5nZXRB
dHRyaWJ1dGUoJ2l0ZW1yZWYnKSIsICInZm9vIEZPTyciKTsKK2VsZW1lbnQuaXRlbVJlZi5yZW1v
dmUoJ2ZvbycpOworc2hvdWxkQmUoImVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcmVmJykiLCAi
J0ZPTyciKTsKK2VsZW1lbnQuaXRlbVJlZi5yZW1vdmUoJ0ZPTycpOworc2hvdWxkQmUoImVsZW1l
bnQuZ2V0QXR0cmlidXRlKCdpdGVtcmVmJykiLCAiJyciKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5
bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcHJvcC10b2tlbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFk
ZC1yZW1vdmUtaXRlbXByb3AtdG9rZW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUt
aXRlbXByb3AtdG9rZW5zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2
IEBACitUZXN0IHRvIGVuc3VyZSB0aGF0IGFkZGluZyBvciByZW1vdmluZyBpdGVtcHJvcCB0b2tl
bnMgbXVzdCB1cGRhdGUgaXRzIFByb3BlcnR5Tm9kZUxpc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitDcmVhdGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CitTZXQgYXR0cmlidXRl
OiBpdGVtc2NvcGUsIHZhbHVlOiBpdGVtc2NvcGUKK1BBU1MgUE5MZm9vLmxlbmd0aCBpcyAxCitQ
QVNTIFBOTGJhci5sZW5ndGggaXMgMAorUEFTUyBQTkxmb29bMF0gaXMgaXRlbS5maXJzdENoaWxk
CitQQVNTIFBOTGZvby5sZW5ndGggaXMgMQorUEFTUyBQTkxiYXIubGVuZ3RoIGlzIDEKK1BBU1Mg
UE5MZm9vWzBdIGlzIGl0ZW0uZmlyc3RDaGlsZAorUEFTUyBQTkxiYXJbMF0gaXMgaXRlbS5sYXN0
Q2hpbGQKK1BBU1MgUE5MZm9vLmxlbmd0aCBpcyAyCitQQVNTIFBOTGJhci5sZW5ndGggaXMgMQor
UEFTUyBQTkxmb29bMF0gaXMgaXRlbS5maXJzdENoaWxkCitQQVNTIFBOTGZvb1sxXSBpcyBpdGVt
Lmxhc3RDaGlsZAorUEFTUyBQTkxiYXJbMF0gaXMgaXRlbS5sYXN0Q2hpbGQKK1BBU1MgUE5MZm9v
Lmxlbmd0aCBpcyAxCitQQVNTIFBOTGJhci5sZW5ndGggaXMgMAorUEFTUyBQTkxmb29bMF0gaXMg
aXRlbS5maXJzdENoaWxkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5
bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcHJvcC10b2tlbnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3Zl
LWl0ZW1wcm9wLXRva2Vucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcHJvcC10b2tlbnMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1vbi5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVz
dCB0byBlbnN1cmUgdGhhdCBhZGRpbmcgb3IgcmVtb3ZpbmcgaXRlbXByb3AgdG9rZW5zIG11c3Qg
dXBkYXRlIGl0cyBQcm9wZXJ0eU5vZGVMaXN0LiIpOwordmFyIGl0ZW0gPSBjcmVhdGVFbGVtZW50
KCdkaXYnLCB7aXRlbXNjb3BlOiAnaXRlbXNjb3BlJ30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iPjwv
ZGl2PjxkaXY+PC9kaXY+Jyk7Cit2YXIgUE5MZm9vID0gaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRl
bSgnZm9vJyk7CitQTkxiYXIgPSBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKTsKKwor
c2hvdWxkQmUoIlBOTGZvby5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIlBOTGJhci5sZW5ndGgi
LCAiMCIpOworc2hvdWxkQmUoIlBOTGZvb1swXSIsICJpdGVtLmZpcnN0Q2hpbGQiKTsKKworaXRl
bS5sYXN0Q2hpbGQuaXRlbVByb3AudG9nZ2xlKCdiYXInKTsKK3Nob3VsZEJlKCJQTkxmb28ubGVu
Z3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJQTkxiYXIubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJQ
Tkxmb29bMF0iLCAiaXRlbS5maXJzdENoaWxkIik7CitzaG91bGRCZSgiUE5MYmFyWzBdIiwgIml0
ZW0ubGFzdENoaWxkIik7CisKK2l0ZW0ubGFzdENoaWxkLml0ZW1Qcm9wLmFkZCgnZm9vJyk7Citz
aG91bGRCZSgiUE5MZm9vLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiUE5MYmFyLmxlbmd0aCIs
ICIxIik7CitzaG91bGRCZSgiUE5MZm9vWzBdIiwgIml0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxk
QmUoIlBOTGZvb1sxXSIsICJpdGVtLmxhc3RDaGlsZCIpOworc2hvdWxkQmUoIlBOTGJhclswXSIs
ICJpdGVtLmxhc3RDaGlsZCIpOworCitpdGVtLmxhc3RDaGlsZC5yZW1vdmVBdHRyaWJ1dGUoJ2l0
ZW1wcm9wJyk7CitzaG91bGRCZSgiUE5MZm9vLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiUE5M
YmFyLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiUE5MZm9vWzBdIiwgIml0ZW0uZmlyc3RDaGls
ZCIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9r
ZW5zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNy
b0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9w
ZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXJlZi10b2tlbnMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3QgdG8gZW5zdXJlIHRoYXQgYWRkaW5nIG9y
IHJlbW92aW5nIGl0ZW1yZWYgdG9rZW5zIG11c3QgdXBkYXRlIGl0cyBQcm9wZXJ0eU5vZGVMaXN0
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ3JlYXRlZCBlbGVtZW50IG9mIHR5
cGU6IGRpdgorUEFTUyBQTkwubGVuZ3RoIGlzIDAKK1BBU1MgUE5MLmxlbmd0aCBpcyAxCitQQVNT
IFBOTFswXSBpcyBwYXJlbnQuZmlyc3RDaGlsZAorUEFTUyBQTkwubGVuZ3RoIGlzIDAKK1BBU1Mg
IVBOTFswXSBpcyB0cnVlCitQQVNTIGxlbmd0aDAgaXMgMAorUEFTUyBsZW5ndGgxIGlzIDEKK1BB
U1MgZm9vMCBpcyBwYXJlbnQuZmlyc3RDaGlsZAorUEFTUyBsZW5ndGgyIGlzIDAKK1BBU1MgIWZv
bzEgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVs
aXN0LWFkZC1yZW1vdmUtaXRlbXJlZi10b2tlbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1y
ZWYtdG9rZW5zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNy
b0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdG8gZW5z
dXJlIHRoYXQgYWRkaW5nIG9yIHJlbW92aW5nIGl0ZW1yZWYgdG9rZW5zIG11c3QgdXBkYXRlIGl0
cyBQcm9wZXJ0eU5vZGVMaXN0LiIpOwordmFyIHBhcmVudCA9IGNyZWF0ZUVsZW1lbnQoJ2Rpdics
IHt9LCAnPGRpdiBpZD0iaWQxIiBpdGVtcHJvcD0iZm9vIj48L2Rpdj48ZGl2IGl0ZW1zY29wZT48
L2Rpdj4nKTsKK3ZhciB0ZXN0RWxlbWVudCA9IHBhcmVudC5jaGlsZE5vZGVzWzFdOwordmFyIFBO
TCA9IHRlc3RFbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKTsKKworc2hvdWxkQmUo
IlBOTC5sZW5ndGgiLCAiMCIpOwordGVzdEVsZW1lbnQuaXRlbVJlZi5hZGQoJ2lkMScpOworc2hv
dWxkQmUoIlBOTC5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIlBOTFswXSIsICJwYXJlbnQuZmly
c3RDaGlsZCIpOwordGVzdEVsZW1lbnQuaXRlbVJlZi5yZW1vdmUoJ2lkMScpOworc2hvdWxkQmUo
IlBOTC5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmVUcnVlKCIhUE5MWzBdIik7CisKK2RvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQocGFyZW50KTsKK3ZhciBsZW5ndGgwID0gUE5MLmxlbmd0aDsKK3Rl
c3RFbGVtZW50Lml0ZW1SZWYudG9nZ2xlKCdpZDEnKTsKK3ZhciBsZW5ndGgxID0gUE5MLmxlbmd0
aDsKK3ZhciBmb28wID0gUE5MWzBdOwordGVzdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdpdGVt
cmVmJyk7Cit2YXIgbGVuZ3RoMiA9IFBOTC5sZW5ndGg7Cit2YXIgZm9vMSA9IFBOTFswXTsKK2Rv
Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocGFyZW50KTsKK3Nob3VsZEJlKCJsZW5ndGgwIiwgIjAi
KTsKK3Nob3VsZEJlKCJsZW5ndGgxIiwgIjEiKTsKK3Nob3VsZEJlKCJmb28wIiwgInBhcmVudC5m
aXJzdENoaWxkIik7CitzaG91bGRCZSgibGVuZ3RoMiIsICIwIik7CitzaG91bGRCZVRydWUoIiFm
b28xIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="203089"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184544</attachid>
            <date>2013-01-24 11:47:22 -0800</date>
            <delta_ts>2013-01-24 16:02:17 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106616-20130124114122.patch</filename>
            <type>text/plain</type>
            <size>28936</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDcwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAxLTI0ICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IGl0ZW10eXBlIGF0
dHJpYnV0ZSBtdXN0IHVwZGF0ZSBjb3JyZWN0bHkgb24gYWRkaW5nIG9yIHJlbW92aW5nIHRva2Vu
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEFkZGVkIGEg
bmV3IGNsYXNzIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdCwgaXQgb3ZlcnJpZGVzIHNldFZh
bHVlKCkgbWV0aG9kIG9mCisgICAgICAgIERPTVNldHRhYmxlVG9rZW5MaXN0LiBzZXRWYWx1ZSgp
IGlzIHJlc3BvbnNpYmxlIHRvIHNldCB0aGUgbmV3IGF0dHJpYnV0ZSB2YWx1ZSBmb3IKKyAgICAg
ICAgYSBnaXZlbiBlbGVtZW50LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9NaWNyb0RhdGEv
bWljcm9kYXRhLWRvbXRva2VubGlzdC1hdHRyaWJ1dGUtYWRkLXJlbW92ZS10b2tlbnMuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJl
bW92ZS1pdGVtcHJvcC10b2tlbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vTWljcm9E
YXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcmVmLXRva2Vucy5odG1sCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjppdGVtUHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRJdGVt
UHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppdGVtUmVmKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnNldEl0ZW1SZWYpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXRlbVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0SXRlbVR5cGUpOgorICAgICAgICAqIGRvbS9O
b2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVNaWNyb0RhdGFUb2tlbkxpc3Rz
OjppdGVtUHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTWljcm9EYXRhVG9rZW5MaXN0czo6
aXRlbVJlZik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTWljcm9EYXRhVG9rZW5MaXN0czo6aXRl
bVR5cGUpOgorICAgICAgICAoTm9kZU1pY3JvRGF0YVRva2VuTGlzdHMpOgorICAgICAgICAqIGh0
bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaDogTWFkZSB0aGUgY29uc3RydWN0b3IgYXMgcHJvdGVj
dGVkLCBzbyB0aGF0IHdlIGNhbgorICAgICAgICBvdmVycmlkZSBzZXRWYWx1ZSgpIG1ldGhvZC4K
KyAgICAgICAgKERPTVNldHRhYmxlVG9rZW5MaXN0KToKKyAgICAgICAgKiBodG1sL01pY3JvRGF0
YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q6Ok1pY3JvRGF0YUF0dHJp
YnV0ZVRva2VuTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb0RhdGFBdHRyaWJ1dGVUb2tl
bkxpc3Q6OnNldFZhbHVlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TWljcm9EYXRhQXR0
cmlidXRlVG9rZW5MaXN0OjpzZXRWYWx1ZSk6IEl0IGNhbGxzCisgICAgICAgIERPTVNldHRhYmxl
VG9rZW5MaXN0OjpzZXRWYWx1ZSB0byBzZXQgaW50ZXJuYWwgdG9rZW5zIGFuZCB2YWx1ZS4KKyAg
ICAgICAgKiBodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6Y3JlYXRlKToKKwog
MjAxMy0wMS0yNCAgTWF4IFZ1am92aWMgIDxtdnVqb3ZpY0BhZG9iZS5jb20+CiAKICAgICAgICAg
W0NTUyBGaWx0ZXJzXSBDU1Mgb3BhY2l0eSBwcm9wZXJ0eSBjbGlwcyBmaWx0ZXIgb3V0c2V0cwpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE0MDcwMikKKysrIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNDcwLDYgKzE0NzAsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCiAgICAgaHRt
bC9NZWRpYURvY3VtZW50LmNwcAogICAgIGh0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAK
KyAgICBodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHAKICAgICBodG1sL01pY3Jv
RGF0YUl0ZW1WYWx1ZS5jcHAKICAgICBodG1sL01vbnRoSW5wdXRUeXBlLmNwcAogICAgIGh0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShy
ZXZpc2lvbiAxNDA3MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTM0LDYgKzM1MzQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFB
dHRyaWJ1dGVUb2tlbkxpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUF0
dHJpYnV0ZVRva2VuTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUl0ZW1W
YWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmggXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQkocmV2aXNpb24gMTQwNzAyKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgwLDYgKzY4MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvTGFiZWxz
Tm9kZUxpc3QuY3BwIFwKICAgICBodG1sL0xpbmtSZWxBdHRyaWJ1dGUuY3BwIFwKICAgICBodG1s
L01lZGlhRG9jdW1lbnQuY3BwIFwKKyAgICBodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlz
dC5jcHAgXAogICAgIGh0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmNwcCBcCiAgICAgaHRtbC9Nb250
aElucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBcCkBAIC0xODc2
LDYgKzE4NzcsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL01lZGlhQ29udHJvbGxlci5oIFwK
ICAgICBodG1sL01lZGlhRG9jdW1lbnQuaCBcCiAgICAgaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFy
c2VyLmggXAorICAgIGh0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmggXAogICAgIGh0
bWwvTWljcm9EYXRhSXRlbVZhbHVlLmggXAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuaCBcCiAg
ICAgaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gMTQwNzAyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjE5LDYgKzMyMTksOCBAQAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFLZXlFcnJvci5o
JywKICAgICAgICAgICAgICdodG1sL01lZGlhS2V5RXZlbnQuY3BwJywKICAgICAgICAgICAgICdo
dG1sL01lZGlhS2V5RXZlbnQuaCcsCisgICAgICAgICAgICAnaHRtbC9NaWNyb0RhdGFBdHRyaWJ1
dGVUb2tlbkxpc3QuY3BwJywKKyAgICAgICAgICAgICdodG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRv
a2VuTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAnLAog
ICAgICAgICAgICAgJ2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmgnLAogICAgICAgICAgICAgJ2h0
bWwvTW9udGhJbnB1dFR5cGUuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxNDA3MDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQ1OTAs
NiArNjQ1OTAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXE1pY3JvRGF0YUF0
dHJpYnV0ZVRva2VuTGlzdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAiCiAJCQkJPgogCQkJPC9G
aWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTQwNzAyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04MDAsNiArODAwLDgg
QEAKIAkJMkQ5QTI0NzYxNUI5QzJGNDAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5Lmgg
aW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDlBMjQ3MDE1QjlDMjk1MDBEMzQ1MjcgLyogRE9NRE9NU2VjdXJpdHlQb2xpY3kuaCAq
LzsgfTsKIAkJMkQ5RjBFMTMxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDlGMEUxMjE0RkYx
Q0JGMDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgKi87IH07CiAJCTJERjJFOUQ1MTY2RTM5NzUw
MDM1QkVGMiAvKiBDb25zb2xlQVBJVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJERjJFOUQ0MTY2RTM5NzQwMDM1QkVGMiAvKiBDb25zb2xlQVBJ
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkyRTA3NzUzMTE2QjFCRDEzMDA0RDk5MzYgLyogTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMDc3
NTMwMTZCMUJEMTMwMDREOTkzNiAvKiBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwICov
OyB9OworCQkyRTA3NzUzNDE2QjFCRDRDMDA0RDk5MzYgLyogTWljcm9EYXRhQXR0cmlidXRlVG9r
ZW5MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTA3NzUzMzE2QjFCRDRDMDA0RDk5MzYgLyogTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0Lmgg
Ki87IH07CiAJCTJFMDg4OEQ0MTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMDg4OEQyMTE0
ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmNwcCAqLzsgfTsKIAkJMkUwODg4RDUxMTQ4
ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMDg4OEQzMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZv
cm1EYXRhLmggKi87IH07CiAJCTJFMDg4OEU2MTE0ODg0RTIwMEFGNDI2NSAvKiBKU0RPTUZvcm1E
YXRhQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFMDg4OEU1MTE0ODg0RTIwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCAq
LzsgfTsKQEAgLTgwNzcsNiArODA3OSw4IEBACiAJCTJEOUEyNDcyMTVCOUMyQzcwMEQzNDUyNyAv
KiBET01ET01TZWN1cml0eVBvbGljeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERPTURPTVNlY3VyaXR5UG9saWN5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDlGMEUxMjE0RkYxQ0JGMDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0g
bGluZWFyU1JHQi5pY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjJFOUQ0MTY2
RTM5NzQwMDM1QkVGMiAvKiBDb25zb2xlQVBJVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29uc29sZUFQSVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJFMDc3NTMwMTZCMUJEMTMwMDREOTkzNiAvKiBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxp
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWljcm9EYXRhQXR0
cmlidXRlVG9rZW5MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUwNzc1
MzMxNkIxQkQ0QzAwNEQ5OTM2IC8qIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUwODg4QzMxMTQ4ODNBOTAwQUY0MjY1
IC8qIERPTUZvcm1EYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01Gb3JtRGF0YS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEQyMTE0ODg0OEEwMEFGNDI2
NSAvKiBKU0RPTUZvcm1EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRE9NRm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTA4
ODhEMzExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTUZvcm1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xODExMSw2ICsxODExNSw4IEBACiAJCQkJQ0RCODU5RjQxNjBENDg5OTAwRTVCMDdG
IC8qIE1lZGlhS2V5RXZlbnQuY3BwICovLAogCQkJCUNEQjg1OUY1MTYwRDQ4OTkwMEU1QjA3RiAv
KiBNZWRpYUtleUV2ZW50LmggKi8sCiAJCQkJQ0RCODU5RjYxNjBENDg5OTAwRTVCMDdGIC8qIE1l
ZGlhS2V5RXZlbnQuaWRsICovLAorCQkJCTJFMDc3NTMwMTZCMUJEMTMwMDREOTkzNiAvKiBNaWNy
b0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwICovLAorCQkJCTJFMDc3NTMzMTZCMUJENEMwMDRE
OTkzNiAvKiBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaCAqLywKIAkJCQk5QjJGN0NGNzE0
NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZhbHVlLmNwcCAqLywKIAkJCQk5QjJGN0NG
ODE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZhbHVlLmggKi8sCiAJCQkJMTA1OTQ1
NzExNUI0MjhDMzAwNEQzN0ZEIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5pZGwgKi8sCkBAIC0yNjI3
MSw2ICsyNjI3Nyw3IEBACiAJCQkJRkI5MTM5MjQxNkFFNEMxNzAwMUZFNjgyIC8qIERPTVBhdGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZCOTEzOTI2MTZBRTRDMkYwMDFGRTY4MiAvKiBDYW52YXNQ
YXRoTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI5MTM5MkExNkFFNEZDMDAwMUZFNjgy
IC8qIEpTRE9NUGF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkUwNzc1MzQxNkIxQkQ0QzAwNEQ5
OTM2IC8qIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
OTQyMSw2ICsyOTQyOCw3IEBACiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Q
b2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCOTEzOTI3MTZBRTRDMzQwMDFGRTY4MiAvKiBD
YW52YXNQYXRoTWV0aG9kcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQjkxMzkyQjE2QUU0RkMw
MDAxRkU2ODIgLyogSlNET01QYXRoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJFMDc3NTMxMTZC
MUJEMTMwMDREOTkzNiAvKiBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAxNDA3MDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MjgsMzIgKzI1MjgsMzIg
QEAgYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKQogI2lmIEVOQUJMRShNSUNS
T0RBVEEpCiBET01TZXR0YWJsZVRva2VuTGlzdCogTm9kZTo6aXRlbVByb3AoKQogewotICAgIHJl
dHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNaWNyb0RhdGFUb2tlbkxpc3RzKCktPml0ZW1Q
cm9wKCk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2Vu
TGlzdHMoKS0+aXRlbVByb3AodGhpcyk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0SXRlbVByb3AoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNaWNyb0Rh
dGFUb2tlbkxpc3RzKCktPml0ZW1Qcm9wKCktPnNldFZhbHVlKHZhbHVlKTsKKyAgICBlbnN1cmVS
YXJlRGF0YSgpLT5lbnN1cmVNaWNyb0RhdGFUb2tlbkxpc3RzKCktPml0ZW1Qcm9wKHRoaXMpLT5z
ZXRWYWx1ZUludGVybmFsKHZhbHVlKTsKIH0KIAogRE9NU2V0dGFibGVUb2tlbkxpc3QqIE5vZGU6
Oml0ZW1SZWYoKQogewotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNaWNyb0Rh
dGFUb2tlbkxpc3RzKCktPml0ZW1SZWYoKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS0+
ZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0cygpLT5pdGVtUmVmKHRoaXMpOwogfQogCiB2b2lkIE5v
ZGU6OnNldEl0ZW1SZWYoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBlbnN1cmVSYXJlRGF0
YSgpLT5lbnN1cmVNaWNyb0RhdGFUb2tlbkxpc3RzKCktPml0ZW1SZWYoKS0+c2V0VmFsdWUodmFs
dWUpOworICAgIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+
aXRlbVJlZih0aGlzKS0+c2V0VmFsdWVJbnRlcm5hbCh2YWx1ZSk7CiB9CiAKIERPTVNldHRhYmxl
VG9rZW5MaXN0KiBOb2RlOjppdGVtVHlwZSgpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+aXRlbVR5cGUoKTsKKyAgICByZXR1cm4g
ZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTWljcm9EYXRhVG9rZW5MaXN0cygpLT5pdGVtVHlwZSh0
aGlzKTsKIH0KIAogdm9pZCBOb2RlOjpzZXRJdGVtVHlwZShjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewotICAgIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1pY3JvRGF0YVRva2VuTGlzdHMoKS0+aXRl
bVR5cGUoKS0+c2V0VmFsdWUodmFsdWUpOworICAgIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU1p
Y3JvRGF0YVRva2VuTGlzdHMoKS0+aXRlbVR5cGUodGhpcyktPnNldFZhbHVlSW50ZXJuYWwodmFs
dWUpOwogfQogCiBQYXNzUmVmUHRyPFByb3BlcnR5Tm9kZUxpc3Q+IE5vZGU6OnByb3BlcnR5Tm9k
ZUxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aAkocmV2aXNpb24gMTQwNzAyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDaGlsZE5vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiRE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKKyNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJMaXZlTm9kZUxpc3QuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9i
c2VydmVyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIgpAQCAt
NDEsNiArNDIsNyBAQAogCiAjaWYgRU5BQkxFKE1JQ1JPREFUQSkKICNpbmNsdWRlICJIVE1MUHJv
cGVydGllc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxp
c3QuaCIKICNpbmNsdWRlICJNaWNyb0RhdGFJdGVtTGlzdC5oIgogI2VuZGlmCiAKQEAgLTI2MCwz
MyArMjYyLDMzIEBAIGNsYXNzIE5vZGVNaWNyb0RhdGFUb2tlbkxpc3RzIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxOb2RlTWljcm9EYXRhVG9rZW5MaXN0cz4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRQdHIobmV3IE5vZGVNaWNyb0RhdGFUb2tlbkxpc3RzKTsgfQogCi0gICAgRE9N
U2V0dGFibGVUb2tlbkxpc3QqIGl0ZW1Qcm9wKCkgY29uc3QKKyAgICBNaWNyb0RhdGFBdHRyaWJ1
dGVUb2tlbkxpc3QqIGl0ZW1Qcm9wKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoIW1faXRlbVByb3ApCi0gICAgICAgICAgICBtX2l0ZW1Qcm9wID0gRE9NU2V0dGFibGVUb2tl
bkxpc3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9pdGVtUHJvcCA9IE1pY3JvRGF0YUF0dHJp
YnV0ZVRva2VuTGlzdDo6Y3JlYXRlKHRvRWxlbWVudChub2RlKSwgSFRNTE5hbWVzOjppdGVtcHJv
cEF0dHIpOwogICAgICAgICByZXR1cm4gbV9pdGVtUHJvcC5nZXQoKTsKICAgICB9CiAKLSAgICBE
T01TZXR0YWJsZVRva2VuTGlzdCogaXRlbVJlZigpIGNvbnN0CisgICAgTWljcm9EYXRhQXR0cmli
dXRlVG9rZW5MaXN0KiBpdGVtUmVmKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoIW1faXRlbVJlZikKLSAgICAgICAgICAgIG1faXRlbVJlZiA9IERPTVNldHRhYmxlVG9rZW5M
aXN0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1faXRlbVJlZiA9IE1pY3JvRGF0YUF0dHJpYnV0
ZVRva2VuTGlzdDo6Y3JlYXRlKHRvRWxlbWVudChub2RlKSwgSFRNTE5hbWVzOjppdGVtcmVmQXR0
cik7CiAgICAgICAgIHJldHVybiBtX2l0ZW1SZWYuZ2V0KCk7CiAgICAgfQogCi0gICAgRE9NU2V0
dGFibGVUb2tlbkxpc3QqIGl0ZW1UeXBlKCkgY29uc3QKKyAgICBNaWNyb0RhdGFBdHRyaWJ1dGVU
b2tlbkxpc3QqIGl0ZW1UeXBlKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
IW1faXRlbVR5cGUpCi0gICAgICAgICAgICBtX2l0ZW1UeXBlID0gRE9NU2V0dGFibGVUb2tlbkxp
c3Q6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9pdGVtVHlwZSA9IE1pY3JvRGF0YUF0dHJpYnV0
ZVRva2VuTGlzdDo6Y3JlYXRlKHRvRWxlbWVudChub2RlKSwgSFRNTE5hbWVzOjppdGVtdHlwZUF0
dHIpOwogICAgICAgICByZXR1cm4gbV9pdGVtVHlwZS5nZXQoKTsKICAgICB9CiAKIHByaXZhdGU6
CiAgICAgTm9kZU1pY3JvRGF0YVRva2VuTGlzdHMoKSB7IH0KIAotICAgIG11dGFibGUgUmVmUHRy
PERPTVNldHRhYmxlVG9rZW5MaXN0PiBtX2l0ZW1Qcm9wOwotICAgIG11dGFibGUgUmVmUHRyPERP
TVNldHRhYmxlVG9rZW5MaXN0PiBtX2l0ZW1SZWY7Ci0gICAgbXV0YWJsZSBSZWZQdHI8RE9NU2V0
dGFibGVUb2tlbkxpc3Q+IG1faXRlbVR5cGU7CisgICAgbXV0YWJsZSBSZWZQdHI8TWljcm9EYXRh
QXR0cmlidXRlVG9rZW5MaXN0PiBtX2l0ZW1Qcm9wOworICAgIG11dGFibGUgUmVmUHRyPE1pY3Jv
RGF0YUF0dHJpYnV0ZVRva2VuTGlzdD4gbV9pdGVtUmVmOworICAgIG11dGFibGUgUmVmUHRyPE1p
Y3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdD4gbV9pdGVtVHlwZTsKIH07CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NU2V0dGFibGVUb2tlbkxpc3QuaAkocmV2aXNpb24g
MTQwNzAyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTcGFj
ZVNwbGl0U3RyaW5nJiB0b2tlbnMoKSBjb25zdCB7IHJldHVybiBtX3Rva2VuczsgfQogCi1wcml2
YXRlOgorcHJvdGVjdGVkOgogICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KCk7CiAKK3ByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGFkZEludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbnRlcm5hbChjb25z
dCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWlj
cm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMyBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQgbW9kaWZpY2F0aW9uLAorICogYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKKyAqIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogTmVpdGhlciB0
aGUgbmFtZSBvZiBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMgbWF5CisgKiBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgKiBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNSUNST0RBVEEpCisKKyNpbmNsdWRlICJNaWNyb0RhdGFBdHRyaWJ1dGVUb2tl
bkxpc3QuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3Q6Ok1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlz
dChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQor
ICAgIDogRE9NU2V0dGFibGVUb2tlbkxpc3QoKQorICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisg
ICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKK3sKK30KKwordm9pZCBNaWNyb0Rh
dGFBdHRyaWJ1dGVUb2tlbkxpc3Q6OnNldFZhbHVlSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBET01TZXR0YWJsZVRva2VuTGlzdDo6c2V0VmFsdWUodmFsdWUpOwor
fQorCit2b2lkIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdDo6c2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShtX2F0dHJp
YnV0ZU5hbWUsIHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRh
QXR0cmlidXRlVG9rZW5MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9N
aWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMyBNb3Rvcm9sYSBNb2JpbGl0
eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0
aW9uLAorICogYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0OgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3IKKyAqIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogTmVpdGhlciB0aGUgbmFtZSBvZiBN
b3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMg
bWF5CisgKiBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgKiBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0
X2gKKyNkZWZpbmUgTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0X2gKKworI2lmIEVOQUJMRShN
SUNST0RBVEEpCisKKyNpbmNsdWRlICJET01TZXR0YWJsZVRva2VuTGlzdC5oIgorI2luY2x1ZGUg
IlF1YWxpZmllZE5hbWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50
OworCitjbGFzcyBNaWNyb0RhdGFBdHRyaWJ1dGVUb2tlbkxpc3QgOiBwdWJsaWMgRE9NU2V0dGFi
bGVUb2tlbkxpc3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1pY3JvRGF0YUF0
dHJpYnV0ZVRva2VuTGlzdD4gY3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdChlbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCBFbGVtZW50KiBlbGVtZW50KCkgT1ZFUlJJREUgeyByZXR1cm4g
bV9lbGVtZW50OyB9CisgICAgdm9pZCBzZXRWYWx1ZUludGVybmFsKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOworCitwcml2YXRlOgorICAgIE1pY3JvRGF0YUF0dHJpYnV0ZVRva2VuTGlzdChFbGVtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOworCisgICAgRWxlbWVudCogbV9lbGVtZW50Owor
ICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGVOYW1lOworCit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUlDUk9EQVRBKQorCisjZW5kaWYgLy8gTWlj
cm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0X2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDcwMikKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDEzLTAxLTI0ICBBcmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNy
b2RhdGE6IGl0ZW10eXBlIGF0dHJpYnV0ZSBtdXN0IHVwZGF0ZSBjb3JyZWN0bHkgb24gYWRkaW5n
IG9yIHJlbW92aW5nIHRva2VucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2NjE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgIEFkZGVkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGl0ZW10eXBlLCBpdGVtcHJvcCwg
aXRlbXJlZiBhdHRyaWJ1dGVzIG11c3QgdXBkYXRlCisgICAgICAgIGNvcnJlY3RseSB3aGVuIHRv
a2VucyBoYXZlIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZC4KKworICAgICAgICAqIGZhc3QvZG9tL01p
Y3JvRGF0YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vu
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9taWNy
b2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVt
b3ZlLWl0ZW1wcm9wLXRva2Vucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXByb3AtdG9rZW5z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVs
aXN0LWFkZC1yZW1vdmUtaXRlbXJlZi10b2tlbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1y
ZWYtdG9rZW5zLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTI0ICBNYXggVnVqb3ZpYyAgPG12dWpv
dmljQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEZpbHRlcnNdIENTUyBvcGFjaXR5IHByb3Bl
cnR5IGNsaXBzIGZpbHRlciBvdXRzZXRzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNy
b0RhdGEvbWljcm9kYXRhLWRvbXRva2VubGlzdC1hdHRyaWJ1dGUtYWRkLXJlbW92ZS10b2tlbnMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0
YS9taWNyb2RhdGEtZG9tdG9rZW5saXN0LWF0dHJpYnV0ZS1hZGQtcmVtb3ZlLXRva2Vucy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEv
bWljcm9kYXRhLWRvbXRva2VubGlzdC1hdHRyaWJ1dGUtYWRkLXJlbW92ZS10b2tlbnMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKK1RoaXMgdGVzdHMgdGhhdCBp
dGVtdHlwZSwgaXRlbXByb3AsIGl0ZW1yZWYgYXR0cmlidXRlcyBtdXN0IHVwZGF0ZSBjb3JyZWN0
bHkgd2hlbiB0b2tlbnMgaGF2ZSBiZWVuIGFkZGVkIG9yIHJlbW92ZWQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitpdGVtdHlwZSBhdHRyaWJ1dGUgdGVzdC4KK1BBU1MgZWxlbWVu
dC5nZXRBdHRyaWJ1dGUoJ2l0ZW10eXBlJykgaXMgJ2ZvbyBGT08nCitQQVNTIGVsZW1lbnQuZ2V0
QXR0cmlidXRlKCdpdGVtdHlwZScpIGlzICdGT08nCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRl
KCdpdGVtdHlwZScpIGlzICcnCisKK2l0ZW1wcm9wIGF0dHJpYnV0ZSB0ZXN0LgorUEFTUyBlbGVt
ZW50LmdldEF0dHJpYnV0ZSgnaXRlbXByb3AnKSBpcyAnZm9vIEZPTycKK1BBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoJ2l0ZW1wcm9wJykgaXMgJ0ZPTycKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1
dGUoJ2l0ZW1wcm9wJykgaXMgJycKKworaXRlbXJlZiBhdHRyaWJ1dGUgdGVzdC4KK1BBU1MgZWxl
bWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1yZWYnKSBpcyAnZm9vIEZPTycKK1BBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoJ2l0ZW1yZWYnKSBpcyAnRk9PJworUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0
ZSgnaXRlbXJlZicpIGlzICcnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL21pY3Jv
ZGF0YS1kb210b2tlbmxpc3QtYXR0cmlidXRlLWFkZC1yZW1vdmUtdG9rZW5zLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL21pY3JvZGF0YS1kb210b2tl
bmxpc3QtYXR0cmlidXRlLWFkZC1yZW1vdmUtdG9rZW5zLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbWljcm9kYXRhLWRvbXRva2VubGlzdC1hdHRy
aWJ1dGUtYWRkLXJlbW92ZS10b2tlbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ibXlkaXYiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgaXRlbXR5cGUsIGl0ZW1wcm9wLCBpdGVtcmVmIGF0dHJpYnV0ZXMgbXVzdCB1cGRhdGUg
Y29ycmVjdGx5IHdoZW4gdG9rZW5zIGhhdmUgYmVlbiBhZGRlZCBvciByZW1vdmVkLiIpOwordmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlkaXYiKTsKKworZGVidWcoIml0
ZW10eXBlIGF0dHJpYnV0ZSB0ZXN0LiIpOworZWxlbWVudC5pdGVtVHlwZS5hZGQoJ2ZvbycpOwor
ZWxlbWVudC5pdGVtVHlwZS5hZGQoJ0ZPTycpOworc2hvdWxkQmUoImVsZW1lbnQuZ2V0QXR0cmli
dXRlKCdpdGVtdHlwZScpIiwgIidmb28gRk9PJyIpOworZWxlbWVudC5pdGVtVHlwZS5yZW1vdmUo
J2ZvbycpOworc2hvdWxkQmUoImVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtdHlwZScpIiwgIidG
T08nIik7CitlbGVtZW50Lml0ZW1UeXBlLnJlbW92ZSgnRk9PJyk7CitzaG91bGRCZSgiZWxlbWVu
dC5nZXRBdHRyaWJ1dGUoJ2l0ZW10eXBlJykiLCAiJyciKTsKKworZGVidWcoIiIpOworZGVidWco
Iml0ZW1wcm9wIGF0dHJpYnV0ZSB0ZXN0LiIpOworZWxlbWVudC5pdGVtUHJvcC5hZGQoJ2Zvbycp
OworZWxlbWVudC5pdGVtUHJvcC5hZGQoJ0ZPTycpOworc2hvdWxkQmUoImVsZW1lbnQuZ2V0QXR0
cmlidXRlKCdpdGVtcHJvcCcpIiwgIidmb28gRk9PJyIpOworZWxlbWVudC5pdGVtUHJvcC5yZW1v
dmUoJ2ZvbycpOworc2hvdWxkQmUoImVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpdGVtcHJvcCcpIiwg
IidGT08nIik7CitlbGVtZW50Lml0ZW1Qcm9wLnJlbW92ZSgnRk9PJyk7CitzaG91bGRCZSgiZWxl
bWVudC5nZXRBdHRyaWJ1dGUoJ2l0ZW1wcm9wJykiLCAiJyciKTsKKworZGVidWcoIiIpOworZGVi
dWcoIml0ZW1yZWYgYXR0cmlidXRlIHRlc3QuIik7CitlbGVtZW50Lml0ZW1SZWYuYWRkKCdmb28n
KTsKK2VsZW1lbnQuaXRlbVJlZi5hZGQoJ0ZPTycpOworc2hvdWxkQmUoImVsZW1lbnQuZ2V0QXR0
cmlidXRlKCdpdGVtcmVmJykiLCAiJ2ZvbyBGT08nIik7CitlbGVtZW50Lml0ZW1SZWYucmVtb3Zl
KCdmb28nKTsKK3Nob3VsZEJlKCJlbGVtZW50LmdldEF0dHJpYnV0ZSgnaXRlbXJlZicpIiwgIidG
T08nIik7CitlbGVtZW50Lml0ZW1SZWYucmVtb3ZlKCdGT08nKTsKK3Nob3VsZEJlKCJlbGVtZW50
LmdldEF0dHJpYnV0ZSgnaXRlbXJlZicpIiwgIicnIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5v
ZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXByb3AtdG9rZW5zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQt
cmVtb3ZlLWl0ZW1wcm9wLXRva2Vucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0
ZW1wcm9wLXRva2Vucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNiBA
QAorVGVzdCB0byBlbnN1cmUgdGhhdCBhZGRpbmcgb3IgcmVtb3ZpbmcgaXRlbXByb3AgdG9rZW5z
IG11c3QgdXBkYXRlIGl0cyBQcm9wZXJ0eU5vZGVMaXN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworQ3JlYXRlZCBlbGVtZW50IG9mIHR5cGU6IGRpdgorU2V0IGF0dHJpYnV0ZTog
aXRlbXNjb3BlLCB2YWx1ZTogaXRlbXNjb3BlCitQQVNTIFBOTGZvby5sZW5ndGggaXMgMQorUEFT
UyBQTkxiYXIubGVuZ3RoIGlzIDAKK1BBU1MgUE5MZm9vWzBdIGlzIGl0ZW0uZmlyc3RDaGlsZAor
UEFTUyBQTkxmb28ubGVuZ3RoIGlzIDEKK1BBU1MgUE5MYmFyLmxlbmd0aCBpcyAxCitQQVNTIFBO
TGZvb1swXSBpcyBpdGVtLmZpcnN0Q2hpbGQKK1BBU1MgUE5MYmFyWzBdIGlzIGl0ZW0ubGFzdENo
aWxkCitQQVNTIFBOTGZvby5sZW5ndGggaXMgMgorUEFTUyBQTkxiYXIubGVuZ3RoIGlzIDEKK1BB
U1MgUE5MZm9vWzBdIGlzIGl0ZW0uZmlyc3RDaGlsZAorUEFTUyBQTkxmb29bMV0gaXMgaXRlbS5s
YXN0Q2hpbGQKK1BBU1MgUE5MYmFyWzBdIGlzIGl0ZW0ubGFzdENoaWxkCitQQVNTIFBOTGZvby5s
ZW5ndGggaXMgMQorUEFTUyBQTkxiYXIubGVuZ3RoIGlzIDAKK1BBU1MgUE5MZm9vWzBdIGlzIGl0
ZW0uZmlyc3RDaGlsZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0eW5v
ZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXByb3AtdG9rZW5zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1p
dGVtcHJvcC10b2tlbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L01pY3JvRGF0YS9wcm9wZXJ0eW5vZGVsaXN0LWFkZC1yZW1vdmUtaXRlbXByb3AtdG9rZW5zLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qg
dG8gZW5zdXJlIHRoYXQgYWRkaW5nIG9yIHJlbW92aW5nIGl0ZW1wcm9wIHRva2VucyBtdXN0IHVw
ZGF0ZSBpdHMgUHJvcGVydHlOb2RlTGlzdC4iKTsKK3ZhciBpdGVtID0gY3JlYXRlRWxlbWVudCgn
ZGl2Jywge2l0ZW1zY29wZTogJ2l0ZW1zY29wZSd9LCAnPGRpdiBpdGVtcHJvcD0iZm9vIj48L2Rp
dj48ZGl2PjwvZGl2PicpOwordmFyIFBOTGZvbyA9IGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0o
J2ZvbycpOworUE5MYmFyID0gaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmFyJyk7CisKK3No
b3VsZEJlKCJQTkxmb28ubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJQTkxiYXIubGVuZ3RoIiwg
IjAiKTsKK3Nob3VsZEJlKCJQTkxmb29bMF0iLCAiaXRlbS5maXJzdENoaWxkIik7CisKK2l0ZW0u
bGFzdENoaWxkLml0ZW1Qcm9wLnRvZ2dsZSgnYmFyJyk7CitzaG91bGRCZSgiUE5MZm9vLmxlbmd0
aCIsICIxIik7CitzaG91bGRCZSgiUE5MYmFyLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiUE5M
Zm9vWzBdIiwgIml0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmUoIlBOTGJhclswXSIsICJpdGVt
Lmxhc3RDaGlsZCIpOworCitpdGVtLmxhc3RDaGlsZC5pdGVtUHJvcC5hZGQoJ2ZvbycpOworc2hv
dWxkQmUoIlBOTGZvby5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoIlBOTGJhci5sZW5ndGgiLCAi
MSIpOworc2hvdWxkQmUoIlBOTGZvb1swXSIsICJpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJl
KCJQTkxmb29bMV0iLCAiaXRlbS5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJlKCJQTkxiYXJbMF0iLCAi
aXRlbS5sYXN0Q2hpbGQiKTsKKworaXRlbS5sYXN0Q2hpbGQucmVtb3ZlQXR0cmlidXRlKCdpdGVt
cHJvcCcpOworc2hvdWxkQmUoIlBOTGZvby5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIlBOTGJh
ci5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoIlBOTGZvb1swXSIsICJpdGVtLmZpcnN0Q2hpbGQi
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcmVmLXRva2Vu
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9E
YXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcmVmLXRva2Vucy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVy
dHlub2RlbGlzdC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACitUZXN0IHRvIGVuc3VyZSB0aGF0IGFkZGluZyBvciBy
ZW1vdmluZyBpdGVtcmVmIHRva2VucyBtdXN0IHVwZGF0ZSBpdHMgUHJvcGVydHlOb2RlTGlzdC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBl
OiBkaXYKK1BBU1MgUE5MLmxlbmd0aCBpcyAwCitQQVNTIFBOTC5sZW5ndGggaXMgMQorUEFTUyBQ
TkxbMF0gaXMgcGFyZW50LmZpcnN0Q2hpbGQKK1BBU1MgUE5MLmxlbmd0aCBpcyAwCitQQVNTICFQ
TkxbMF0gaXMgdHJ1ZQorUEFTUyBsZW5ndGgwIGlzIDAKK1BBU1MgbGVuZ3RoMSBpcyAxCitQQVNT
IGZvbzAgaXMgcGFyZW50LmZpcnN0Q2hpbGQKK1BBU1MgbGVuZ3RoMiBpcyAwCitQQVNTICFmb28x
IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydHlub2RlbGlz
dC1hZGQtcmVtb3ZlLWl0ZW1yZWYtdG9rZW5zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcmVm
LXRva2Vucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9E
YXRhL3Byb3BlcnR5bm9kZWxpc3QtYWRkLXJlbW92ZS1pdGVtcmVmLXRva2Vucy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHRvIGVuc3Vy
ZSB0aGF0IGFkZGluZyBvciByZW1vdmluZyBpdGVtcmVmIHRva2VucyBtdXN0IHVwZGF0ZSBpdHMg
UHJvcGVydHlOb2RlTGlzdC4iKTsKK3ZhciBwYXJlbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7
fSwgJzxkaXYgaWQ9ImlkMSIgaXRlbXByb3A9ImZvbyI+PC9kaXY+PGRpdiBpdGVtc2NvcGU+PC9k
aXY+Jyk7Cit2YXIgdGVzdEVsZW1lbnQgPSBwYXJlbnQuY2hpbGROb2Rlc1sxXTsKK3ZhciBQTkwg
PSB0ZXN0RWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJyk7CisKK3Nob3VsZEJlKCJQ
TkwubGVuZ3RoIiwgIjAiKTsKK3Rlc3RFbGVtZW50Lml0ZW1SZWYuYWRkKCdpZDEnKTsKK3Nob3Vs
ZEJlKCJQTkwubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJQTkxbMF0iLCAicGFyZW50LmZpcnN0
Q2hpbGQiKTsKK3Rlc3RFbGVtZW50Lml0ZW1SZWYucmVtb3ZlKCdpZDEnKTsKK3Nob3VsZEJlKCJQ
TkwubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlVHJ1ZSgiIVBOTFswXSIpOworCitkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKHBhcmVudCk7Cit2YXIgbGVuZ3RoMCA9IFBOTC5sZW5ndGg7Cit0ZXN0
RWxlbWVudC5pdGVtUmVmLnRvZ2dsZSgnaWQxJyk7Cit2YXIgbGVuZ3RoMSA9IFBOTC5sZW5ndGg7
Cit2YXIgZm9vMCA9IFBOTFswXTsKK3Rlc3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnaXRlbXJl
ZicpOwordmFyIGxlbmd0aDIgPSBQTkwubGVuZ3RoOwordmFyIGZvbzEgPSBQTkxbMF07Citkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKHBhcmVudCk7CitzaG91bGRCZSgibGVuZ3RoMCIsICIwIik7
CitzaG91bGRCZSgibGVuZ3RoMSIsICIxIik7CitzaG91bGRCZSgiZm9vMCIsICJwYXJlbnQuZmly
c3RDaGlsZCIpOworc2hvdWxkQmUoImxlbmd0aDIiLCAiMCIpOworc2hvdWxkQmVUcnVlKCIhZm9v
MSIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>