<?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>27993</bug_id>
          
          <creation_ts>2009-08-04 12:27:22 -0700</creation_ts>
          <short_desc>AXSliders are missing required attributes and actions</short_desc>
          <delta_ts>2009-08-04 16:05:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>137090</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 12:27:22 -0700</bug_when>
    <thetext>AXSliders are missing required attributes and actions.

following attribute:
AXOrientation

and the following actions:
AXIncrement
AXDecrement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137091</commentid>
    <comment_count>1</comment_count>
      <attachid>34079</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 12:33:05 -0700</bug_when>
    <thetext>Created attachment 34079
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137096</commentid>
    <comment_count>2</comment_count>
      <attachid>34079</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-04 12:45:35 -0700</bug_when>
    <thetext>Comment on attachment 34079
patch

&gt; +    // There&apos;s no support in ARIA to specify horizontal or vertical, so everything should be horizontal.
&gt; +    if ((m_object-&gt;isSlider() || m_object-&gt;isProgressIndicator()) &amp;&amp; [attributeName isEqualToString:NSAccessibilityOrientationAttribute])
&gt; +        return NSAccessibilityHorizontalOrientationValue;

I&apos;m not sure that&apos;s right. For &lt;input type=range&gt; we do know for sure whether it&apos;s horizontal or vertical, so I&apos;m not sure why ARIA makes this less practical for that. And in the ARIA case is there a chance we could use the shape of the rendered object to guess about horizontal vs. vertical?

&gt; +    JSStringRef action = NULL;

We use 0 for this in WebKit coding style, not NULL.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137121</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 14:12:37 -0700</bug_when>
    <thetext>i&apos;m going to re-submit the patch since the changes to calculate orientation or a little involved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137126</commentid>
    <comment_count>4</comment_count>
      <attachid>34079</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 14:26:37 -0700</bug_when>
    <thetext>Comment on attachment 34079
patch

based on darin&apos;s feedback, i added a portion of new code to accurately return the orientation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137127</commentid>
    <comment_count>5</comment_count>
      <attachid>34086</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 14:29:29 -0700</bug_when>
    <thetext>Created attachment 34086
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137151</commentid>
    <comment_count>6</comment_count>
      <attachid>34086</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-04 15:22:53 -0700</bug_when>
    <thetext>Comment on attachment 34086
patch

&gt; +    if (bounds.size().width() &gt; bounds.size().height())
&gt; +        return AccessibilityOrientationHorizontal;
&gt; +    if (bounds.size().height() &gt; bounds.size().width())
&gt; +        return AccessibilityOrientationVertical;
&gt; +    return AccessibilityOrientationUnknown;

I think it would be OK to break the tie here and use horizontal. I don&apos;t think we need a separate unknown concept since this is only a guess anyway. But if you think there&apos;s a strong-enough benefit to distinguishing unknown, then that&apos;s fine with me.

Not having unknown would also reduce the need to have a new type for orientation. We could share ScrollbarOrientation -- maybe we&apos;d have to rename it though.

&gt; +    ControlPart styleAppearance = style-&gt;appearance();
&gt; +    if (styleAppearance == SliderHorizontalPart || styleAppearance == MediaSliderPart)
&gt; +        return AccessibilityOrientationHorizontal;
&gt; +    if (styleAppearance == SliderVerticalPart)
&gt; +        return AccessibilityOrientationVertical;
&gt; +    
&gt; +    return AccessibilityOrientationUnknown;

I normally suggest using switch statements for something like this since if you don&apos;t include a default then you get a warning about any parts not listed. That way if someone adds a new part, they have to look at this code and it makes it more likely someone adding a new type of slider will look here.

&gt; +    if ([attributeName isEqualToString:NSAccessibilityOrientationAttribute]) {
&gt; +        AccessibilityOrientation elementOrientation = m_object-&gt;orientation();
&gt; +        if (elementOrientation == AccessibilityOrientationVertical)
&gt; +            return NSAccessibilityVerticalOrientationValue;
&gt; +        if (elementOrientation == AccessibilityOrientationHorizontal)
&gt; +            return NSAccessibilityHorizontalOrientationValue;
&gt; +        return nil;
&gt; +    }

Is it really OK to return nil?

&gt; +enum AccessibilityOrientation {
&gt; +    AccessibilityOrientationUnknown = 0,
&gt; +    AccessibilityOrientationVertical,
&gt; +    AccessibilityOrientationHorizontal,
&gt; +};

The explicit &quot;= 0&quot; is not needed or helpful here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137152</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 15:25:18 -0700</bug_when>
    <thetext>Its ok to return nil for orientation on the mac, if not known

i&apos;d like to keep the AccessibilityOrientation, because on the Mac they also have a Circular orientation. (for a circular slider). its possible that might come to webkit in some form

We can get rid of unknown and default to horizontal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137172</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 16:05:42 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/46783</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34079</attachid>
            <date>2009-08-04 12:33:05 -0700</date>
            <delta_ts>2009-08-04 14:26:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14748</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njc3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDgtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjc5OTMgLSBBWFNsaWRlcnMgYXJlIG1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlcyBh
bmQgYWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc5OTMKKworICAgICAgICBFeHBvc2UgYXBwcm9wcmlhdGUgYWN0aW9ucyBhbmQgYXR0cmli
dXRlcyBmb3Igc2xpZGVycy4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9zbGlkZXItc3VwcG9ydHMtYWN0aW9ucy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXSk6CisgICAgICAg
ICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1l
c10pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMDktMDgtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5tbQkocmV2aXNpb24gNDY3NjkpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MzUs
MTIgKzUzNSwxNSBAQCBzdGF0aWMgV2ViQ29yZVRleHRNYXJrZXJSYW5nZSogdGV4dE1hcmtlCiAg
ICAgc3RhdGljIE5TQXJyYXkqIGFjdGlvbkVsZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uLCBOU0FjY2Vzc2li
aWxpdHlTaG93TWVudUFjdGlvbiwgbmlsXTsKICAgICBzdGF0aWMgTlNBcnJheSogZGVmYXVsdEVs
ZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNz
aWJpbGl0eVNob3dNZW51QWN0aW9uLCBuaWxdOwogICAgIHN0YXRpYyBOU0FycmF5KiBtZW51RWxl
bWVudEFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3Np
YmlsaXR5Q2FuY2VsQWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgbmlsXTsKLSAg
ICAKKyAgICBzdGF0aWMgTlNBcnJheSogc2xpZGVyQWN0aW9ucyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb24sIE5TQWNjZXNz
aWJpbGl0eURlY3JlbWVudEFjdGlvbiwgbmlsXTsKKwogICAgIE5TQXJyYXkgKmFjdGlvbnM7CiAg
ICAgaWYgKG1fb2JqZWN0LT5hY3Rpb25FbGVtZW50KCkpIAogICAgICAgICBhY3Rpb25zID0gYWN0
aW9uRWxlbWVudEFjdGlvbnM7CiAgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTWVudVJlbGF0ZWQo
KSkKICAgICAgICAgYWN0aW9ucyA9IG1lbnVFbGVtZW50QWN0aW9uczsKKyAgICBlbHNlIGlmICht
X29iamVjdC0+aXNTbGlkZXIoKSkKKyAgICAgICAgYWN0aW9ucyA9IHNsaWRlckFjdGlvbnM7CiAg
ICAgZWxzZSBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgpKQogICAgICAgICBhY3Rpb25zID0g
W1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNdOwogICAgIGVs
c2UKQEAgLTY2MCw2ICs2NjMsNyBAQCBzdGF0aWMgV2ViQ29yZVRleHRNYXJrZXJSYW5nZSogdGV4
dE1hcmtlCiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVl
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
TWluVmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgcmFuZ2VBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwogICAgICAgICBb
dGVtcEFycmF5IHJlbGVhc2VdOwogICAgIH0KQEAgLTE0MjUsNiArMTQyOSwxMCBAQCBzdGF0aWMg
TlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgfQogICAgIAorICAgIC8vIFRoZXJlJ3Mgbm8gc3VwcG9ydCBpbiBBUklBIHRvIHNwZWNpZnkg
aG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCwgc28gZXZlcnl0aGluZyBzaG91bGQgYmUgaG9yaXpvbnRh
bC4KKyAgICBpZiAoKG1fb2JqZWN0LT5pc1NsaWRlcigpIHx8IG1fb2JqZWN0LT5pc1Byb2dyZXNz
SW5kaWNhdG9yKCkpICYmIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxp
dHlIb3Jpem9udGFsT3JpZW50YXRpb25WYWx1ZTsKKyAgICAKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlXSkgCiAg
ICAgICAgIHJldHVybiBtX29iamVjdC0+bGFuZ3VhZ2UoKTsKICAgICAKSW5kZXg6IFdlYktpdFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDQ2NzcyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMDktMDgtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
dWcgMjc5OTMgLSBBWFNsaWRlcnMgYXJlIG1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlcyBhbmQg
YWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc5OTMKKworICAgICAgICBBZGQgYWJpbGl0eSB0byBjaGVjayBpZiBhbnkgYXJiaXRyYXJ5IGFj
dGlvbiBpcyBzdXBwb3J0ZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKGlzQWN0aW9uU3VwcG9ydGVkQ2FsbGJhY2spOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDoKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9ydGVkKToKKwogMjAwOS0wOC0wNCAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiA0Njc2OSkKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzMsNiArMTczLDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGlzQXR0cmlidXRlU2V0dGFi
bGVDYWwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisKK3N0YXRpYyBKU1ZhbHVlUmVmIGlzQWN0
aW9uU3VwcG9ydGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAg
IEpTU3RyaW5nUmVmIGFjdGlvbiA9IE5VTEw7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkK
KyAgICAgICAgYWN0aW9uID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNb
MF0sIGV4Y2VwdGlvbik7ICAgIAorICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VO
dW1iZXIoY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmlzQWN0aW9uU3VwcG9ydGVk
KGFjdGlvbikpOworICAgIGlmIChhY3Rpb24pCisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShhY3Rp
b24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGF0dHJpYnV0
ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEpTU3Ry
aW5nUmVmIGF0dHJpYnV0ZSA9IE5VTEw7CkBAIC0zMTcsMTEgKzMyOSw2IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGdldFNlbGVjdGVkVGV4dFJhbmdlQ2EKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJp
bmcoY29udGV4dCwgc2VsZWN0ZWRUZXh0UmFuZ2UuZ2V0KCkpOwogfQogCi1zdGF0aWMgSlNWYWx1
ZVJlZiBnZXRTdXBwb3J0c1ByZXNzQWN0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQotewotICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4
dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnN1cHBvcnRzUHJlc3NBY3Rpb24oKSk7Ci19Ci0K
IHN0YXRpYyBKU1ZhbHVlUmVmIGdldElzRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNv
bnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pc0VuYWJsZWQoKSk7CkBAIC0zNjUsNyAr
MzcyLDYgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKUwogICAgICAg
ICB7ICJjaGlsZHJlbkNvdW50IiwgZ2V0Q2hpbGRyZW5Db3VudENhbGxiYWNrLCAwLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImluc2VydGlvblBvaW50TGluZU51bWJlciIsIGdldEluc2VydGlvblBvaW50
TGluZU51bWJlckNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNlbGVjdGVkVGV4dFJh
bmdlIiwgZ2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7
ICJzdXBwb3J0c1ByZXNzQWN0aW9uIiwgZ2V0U3VwcG9ydHNQcmVzc0FjdGlvbkNhbGxiYWNrLCAw
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImlzRW5hYmxlZCIsIGdldElzRW5hYmxlZENhbGxiYWNrLCAw
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImlzUmVxdWlyZWQiLCBnZXRJc1JlcXVpcmVkQ2FsbGJhY2ss
IDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwLCAwIH0KQEAgLTM5NSw2ICs0MDEsNyBAQCBK
U0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTCiAgICAgICAgIHsgInNldFNl
bGVjdGVkVGV4dFJhbmdlIiwgc2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJhdHRyaWJ1dGVWYWx1ZSIsIGF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAiaXNBdHRyaWJ1dGVTZXR0YWJsZSIsIGlzQXR0cmlidXRlU2V0dGFibGVD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpc0FjdGlvblN1cHBvcnRlZCIsIGlzQWN0aW9u
U3VwcG9ydGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGFyZW50RWxlbWVudCIsIHBh
cmVudEVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpbmNyZW1lbnQiLCBpbmNy
ZW1lbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkZWNyZW1lbnQiLCBkZWNyZW1lbnRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gNDY3NjkpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgogICAgIC8vIEF0dHJpYnV0ZXMgLSBwbGF0Zm9y
bS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMKICAgICBKU1N0cmluZ1JlZiBhdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGJvb2wgaXNBdHRyaWJ1dGVTZXR0YWJs
ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOworICAgIGJvb2wgaXNBY3Rpb25TdXBwb3J0ZWQoSlNT
dHJpbmdSZWYgYWN0aW9uKTsKICAgICBKU1N0cmluZ1JlZiByb2xlKCk7CiAgICAgSlNTdHJpbmdS
ZWYgdGl0bGUoKTsKICAgICBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbigpOwpAQCAtOTMsNyArOTQs
NiBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG1heFZhbHVlKCk7CiAgICAgaW50IGluc2VydGlvblBv
aW50TGluZU51bWJlcigpOwogICAgIEpTU3RyaW5nUmVmIHNlbGVjdGVkVGV4dFJhbmdlKCk7Ci0g
ICAgYm9vbCBzdXBwb3J0c1ByZXNzQWN0aW9uKCk7CiAgICAgYm9vbCBpc0VuYWJsZWQoKTsKICAg
ICBib29sIGlzUmVxdWlyZWQoKSBjb25zdDsKICAgICBkb3VibGUgY2xpY2tQb2ludFgoKTsKSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiA0Njc2OSkKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTMsMTAgKzM5MywxMCBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW5zZXJ0aW9uUG9pCiAgICAgcmV0dXJuIC0xOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN1cHBvcnRzUHJlc3NBY3Rpb24oKQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pCiB7CiAgICAgTlNBcnJheSog
YWN0aW9ucyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXTsKLSAgICByZXR1
cm4gW2FjdGlvbnMgY29udGFpbnNPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb25dOwor
ICAgIHJldHVybiBbYWN0aW9ucyBjb250YWluc09iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOmFjdGlvbl1dOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
RW5hYmxlZCgpCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJp
bGl0eVVJRWxlbWVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCShyZXZpc2lvbiA0Njc2OSkK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIGRvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdXBwb3J0c1ByZXNzQWN0aW9uKCkKK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYWN0aW9uKQogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2NzcyKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDgt
MDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjc5OTMgLSBBWFNsaWRlcnMg
YXJlIG1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlcyBhbmQgYWN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc5OTMKKworICAgICAgICBVcGRh
dGUgdGVzdHMgdG8gdXNlIG1vcmUgZ2VuZXJpYyBpc0FjdGlvblN1cHBvcnRlZC4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1saW5rLXN1cHBvcnRzLXByZXNzLmh0bWw6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9idXR0b24tcHJlc3MtYWN0aW9uLmh0bWw6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9vbmNsaWNrLWhhbmRsZXJzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvc2xpZGVyLXN1cHBvcnRzLWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zbGlkZXItc3VwcG9ydHMt
YWN0aW9ucy5odG1sOiBBZGRlZC4KKwogMjAwOS0wOC0wNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpbmstc3VwcG9ydHMtcHJlc3MuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbGluay1zdXBw
b3J0cy1wcmVzcy5odG1sCShyZXZpc2lvbiA0Njc2OSkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS1saW5rLXN1cHBvcnRzLXByZXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2
LDcgKzE2LDcgQEAKICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKTsKICAgICAgICAgCiAgICAgICAgIGxpbmsuZm9jdXMoKTsKLSAgICAgICAgdmFy
IHN1cHBvcnRzQWN0aW9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQu
c3VwcG9ydHNQcmVzc0FjdGlvbjsKKyAgICAgICAgdmFyIHN1cHBvcnRzQWN0aW9uID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuaXNBY3Rpb25TdXBwb3J0ZWQoIkFYUHJl
c3MiKTsKICAgICAgICAgaWYgKHN1cHBvcnRzQWN0aW9uKQogICAgICAgICAgICAgcmVzdWx0Lmlu
bmVySFRNTCA9ICJTVUNDRVNTISBUaGlzIHRlc3QgcGFzc2VzIGJlY2F1c2UgdGhlIEFSSUEgbGlu
ayBhYm92ZSBzdXBwb3J0cyB0aGUgcHJlc3MgYWN0aW9uLiI7CiAgICAgICAgIGVsc2UKSW5kZXg6
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9uLXByZXNzLWFjdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9uLXByZXNzLWFjdGlvbi5o
dG1sCShyZXZpc2lvbiA0Njc2OSkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9u
LXByZXNzLWFjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgICAg
ICAgICAgICBidXR0b24uZm9jdXMoKTsKICAgICAgICAgICAgIGJ1dHRvbiA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwogCi0gICAgICAgICAgICBpZiAoYnV0dG9uLnN1
cHBvcnRzUHJlc3NBY3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChidXR0b24uaXNBY3Rpb25TdXBw
b3J0ZWQoIkFYUHJlc3MiKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0g
IlRlc3QgcGFzc2VkXG4iOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkluZGV4
OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L29uY2xpY2staGFuZGxlcnMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L29uY2xpY2staGFuZGxlcnMuaHRtbAko
cmV2aXNpb24gNDY3NjkpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L29uY2xpY2staGFu
ZGxlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICAgICAgICAgICAg
dmFyIGZvY3VzZWRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CiAgICAgICAgICAgICB2YXIgdGV4dEVsZW1lbnQgPSBmb2N1c2VkRWxlbWVudC5jaGlsZEF0
SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApOwogCi0gICAgICAgICAgICBpZiAodGV4dEVsZW1lbnQu
c3VwcG9ydHNQcmVzc0FjdGlvbikgeworICAgICAgICAgICAgaWYgKHRleHRFbGVtZW50LmlzQWN0
aW9uU3VwcG9ydGVkKCJBWFByZXNzIikpIHsKICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJU
ZXh0ICs9ICJUZXN0IHBhc3NlZFxuIjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2Ug
ewpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2xpZGVyLXN1
cHBvcnRzLWFjdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3NsaWRlci1zdXBwb3J0cy1hY3Rpb25zLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3NsaWRlci1zdXBwb3J0cy1hY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAorWAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBBWEluY3JlbWVudCBh
bmQgRGVjcmVtZW50IGFyZSBleHBvc2VkIG9uIHNsaWRlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHN1Y2NlZWRlZCBpcyB0cnVlCitQQVNTIHN1Y2NlZWRlZCBpcyB0
cnVlCitQQVNTIHN1Y2NlZWRlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvc2xpZGVyLXN1cHBvcnRzLWFjdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zbGlkZXItc3VwcG9ydHMtYWN0
aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvc2xpZGVyLXN1cHBvcnRzLWFjdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD4KK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IGlkPSJib2R5Ij4KKworPHNwYW4gdGFiaW5kZXg9IjAiIHJvbGU9InNsaWRlciIgaWQ9InNs
aWRlciIgYXJpYS12YWx1ZW5vdz01IGFyaWEtdmFsdWVtaW49MCBhcmlhLXZhbHVlbWF4PTEwPlg8
L3NwYW4+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUg
dGhhdCBBWEluY3JlbWVudCBhbmQgRGVjcmVtZW50IGFyZSBleHBvc2VkIG9uIHNsaWRlcnMuIik7
CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisKKyAgICAgICAg
ICAvLyB0aGlzIHRleHQgZmllbGQgc2hvdWxkIGJlIHJlcXVpcmVkLgorICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzbGlkZXIiKS5mb2N1cygpOworICAgICAgICAgIHZhciBvYmog
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAgICAgIHZh
ciBzdWNjZWVkZWQgPSBvYmouaXNBY3Rpb25TdXBwb3J0ZWQoIkFYSW5jcmVtZW50IikgPT0gdHJ1
ZTsKKyAgICAgICAgICBzaG91bGRCZSgic3VjY2VlZGVkIiwgInRydWUiKTsKKworICAgICAgICAg
IHZhciBzdWNjZWVkZWQgPSBvYmouaXNBY3Rpb25TdXBwb3J0ZWQoIkFYRGVjcmVtZW50IikgPT0g
dHJ1ZTsKKyAgICAgICAgICBzaG91bGRCZSgic3VjY2VlZGVkIiwgInRydWUiKTsKKworICAgICAg
ICAgIHZhciBzdWNjZWVkZWQgPSBvYmouYXR0cmlidXRlVmFsdWUoIkFYT3JpZW50YXRpb24iKSA9
PSAiQVhIb3Jpem9udGFsT3JpZW50YXRpb24iOworICAgICAgICAgIHNob3VsZEJlKCJzdWNjZWVk
ZWQiLCAidHJ1ZSIpOworCisgICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="18247"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34086</attachid>
            <date>2009-08-04 14:29:29 -0700</date>
            <delta_ts>2009-08-04 15:22:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19140</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njc3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDktMDgtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjc5OTMgLSBBWFNsaWRlcnMgYXJlIG1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlcyBh
bmQgYWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjc5OTMKKworICAgICAgICBFeHBvc2UgYXBwcm9wcmlhdGUgYWN0aW9ucyBhbmQgYXR0cmli
dXRlcyBmb3Igc2xpZGVycy4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9zbGlkZXItc3VwcG9ydHMtYWN0aW9ucy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6b3JpZW50YXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNsaWRlcjo6b3JpZW50YXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNdKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgt
W0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpd
KToKKwogMjAwOS0wOC0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpJbmRleDogV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gNDY3NjkpCisrKyBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwMyw1ICs3MDMsMTYgQEAgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY3RpbwogICAgICAgICAgICAgcmV0dXJuIG5vQWN0aW9uOwogICAgIH0KIH0KKyAKKy8vIExh
Y2tpbmcgY29uY3JldGUgZXZpZGVuY2Ugb2Ygb3JpZW50YXRpb24sIGhvcml6b250YWwgbWVhbnMg
d2lkdGggPiBoZWlnaHQuIHZlcnRpY2FsIGlzIGhlaWdodCA+IHdpZHRoOworQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sK
KyAgICBJbnRSZWN0IGJvdW5kcyA9IGVsZW1lbnRSZWN0KCk7CisgICAgaWYgKGJvdW5kcy5zaXpl
KCkud2lkdGgoKSA+IGJvdW5kcy5zaXplKCkuaGVpZ2h0KCkpCisgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAgIGlmIChib3VuZHMuc2l6ZSgpLmhl
aWdodCgpID4gYm91bmRzLnNpemUoKS53aWR0aCgpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uVmVydGljYWw7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRh
dGlvblVua25vd247Cit9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDQ2Nzcw
KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwxMiBAQCBlbnVtIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAg
ICBTbGlkZXJUaHVtYlJvbGUKIH07CiAKK2VudW0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIHsK
KyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Vbmtub3duID0gMCwKKyAgICBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25WZXJ0aWNhbCwKKyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jp
em9udGFsLAorfTsKKyAgICAKIHN0cnVjdCBWaXNpYmxlUG9zaXRpb25SYW5nZSB7CiAKICAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnQ7CkBAIC0zMzgsNiArMzQ0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBwcmVzcygpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURlZmF1bHRBY3Rpb24o
KSBjb25zdCB7IHJldHVybiBwcmVzcygpOyB9CiAKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1l
bnQoKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgpIHsgfTsKIApJbmRleDogV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2aXNpb24g
NDY3NjkpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDI0IEBAIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHkKICAgICByZXR1cm4gbV9jaGlsZHJlbjsKIH0KIAorQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlTbGlkZXI6Om9yaWVudGF0aW9uKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb25Vbmtub3duOworICAgIAorICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG1fcmVuZGVy
ZXItPnN0eWxlKCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlPcmllbnRhdGlvblVua25vd247CisgICAgCisgICAgQ29udHJvbFBhcnQgc3R5bGVBcHBlYXJh
bmNlID0gc3R5bGUtPmFwcGVhcmFuY2UoKTsKKyAgICBpZiAoc3R5bGVBcHBlYXJhbmNlID09IFNs
aWRlckhvcml6b250YWxQYXJ0IHx8IHN0eWxlQXBwZWFyYW5jZSA9PSBNZWRpYVNsaWRlclBhcnQp
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsOworICAg
IGlmIChzdHlsZUFwcGVhcmFuY2UgPT0gU2xpZGVyVmVydGljYWxQYXJ0KQorICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWw7CisgICAgCisgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvblVua25vd247Cit9CisgICAgCiB2b2lkIEFjY2Vzc2liaWxp
dHlTbGlkZXI6OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQoIW1faGF2ZUNoaWxkcmVuKTsg
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgJKHJl
dmlzaW9uIDQ2NzY5KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBm
bG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIGluY3JlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCk7CkluZGV4
OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDQ2NzY5KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM1
LDEyICs1MzUsMTUgQEAgc3RhdGljIFdlYkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRleHRNYXJrZQog
ICAgIHN0YXRpYyBOU0FycmF5KiBhY3Rpb25FbGVtZW50QWN0aW9ucyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3Np
YmlsaXR5U2hvd01lbnVBY3Rpb24sIG5pbF07CiAgICAgc3RhdGljIE5TQXJyYXkqIGRlZmF1bHRF
bGVtZW50QWN0aW9ucyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vz
c2liaWxpdHlTaG93TWVudUFjdGlvbiwgbmlsXTsKICAgICBzdGF0aWMgTlNBcnJheSogbWVudUVs
ZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNz
aWJpbGl0eUNhbmNlbEFjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIG5pbF07Ci0g
ICAgCisgICAgc3RhdGljIE5TQXJyYXkqIHNsaWRlckFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vz
c2liaWxpdHlEZWNyZW1lbnRBY3Rpb24sIG5pbF07CisKICAgICBOU0FycmF5ICphY3Rpb25zOwog
ICAgIGlmIChtX29iamVjdC0+YWN0aW9uRWxlbWVudCgpKSAKICAgICAgICAgYWN0aW9ucyA9IGFj
dGlvbkVsZW1lbnRBY3Rpb25zOwogICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnVSZWxhdGVk
KCkpCiAgICAgICAgIGFjdGlvbnMgPSBtZW51RWxlbWVudEFjdGlvbnM7CisgICAgZWxzZSBpZiAo
bV9vYmplY3QtPmlzU2xpZGVyKCkpCisgICAgICAgIGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOwog
ICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgYWN0aW9ucyA9
IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXTsKICAgICBl
bHNlCkBAIC02NjAsNiArNjYzLDcgQEAgc3RhdGljIFdlYkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRl
eHRNYXJrZQogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1
ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eU1pblZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIHJhbmdlQXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKICAgICAgICAg
W3RlbXBBcnJheSByZWxlYXNlXTsKICAgICB9CkBAIC0xNDI1LDYgKzE0MjksMTUgQEAgc3RhdGlj
IE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KICAgICAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5
T3JpZW50YXRpb24gZWxlbWVudE9yaWVudGF0aW9uID0gbV9vYmplY3QtPm9yaWVudGF0aW9uKCk7
CisgICAgICAgIGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0
aW9uVmVydGljYWwpCisgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VmVydGljYWxP
cmllbnRhdGlvblZhbHVlOworICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWwpCisgICAgICAgICAgICByZXR1cm4gTlNBY2Nl
c3NpYmlsaXR5SG9yaXpvbnRhbE9yaWVudGF0aW9uVmFsdWU7CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQorICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5TGFuZ3VhZ2VBdHRyaWJ1dGVdKSAKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0
LT5sYW5ndWFnZSgpOwogICAgIApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNDY3NzIpCisrKyBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wOC0w
NCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNzk5MyAtIEFYU2xpZGVycyBh
cmUgbWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGVzIGFuZCBhY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk5MworCisgICAgICAgIEFkZCBh
YmlsaXR5IHRvIGNoZWNrIGlmIGFueSBhcmJpdHJhcnkgYWN0aW9uIGlzIHN1cHBvcnRlZC4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAg
ICAgICAoaXNBY3Rpb25TdXBwb3J0ZWRDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRKU0NsYXNzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0FjdGlvblN1cHBvcnRlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRXaW4uY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNBY3Rpb25TdXBwb3J0ZWQpOgorCiAyMDA5LTA4LTA0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAJKHJldmlzaW9uIDQ2NzY5KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMsMTggQEAg
c3RhdGljIEpTVmFsdWVSZWYgaXNBdHRyaWJ1dGVTZXR0YWJsZUNhbAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKKworc3RhdGljIEpTVmFsdWVSZWYgaXNBY3Rpb25TdXBwb3J0ZWRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgSlNTdHJpbmdSZWYgYWN0aW9uID0g
MDsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAgICBhY3Rpb24gPSBKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsgICAgCisgICAg
SlNWYWx1ZVJlZiByZXN1bHQgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0b0FYRWxlbWVu
dCh0aGlzT2JqZWN0KS0+aXNBY3Rpb25TdXBwb3J0ZWQoYWN0aW9uKSk7CisgICAgaWYgKGFjdGlv
bikKKyAgICAgICAgSlNTdHJpbmdSZWxlYXNlKGFjdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgYXR0cmlidXRlVmFsdWVDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgSlNTdHJpbmdSZWYgYXR0cmlidXRlID0gTlVMTDsK
QEAgLTMxNywxMSArMzI5LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0U2VsZWN0ZWRUZXh0UmFu
Z2VDYQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBzZWxlY3RlZFRleHRS
YW5nZS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIGdldFN1cHBvcnRzUHJlc3NBY3Rp
b25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
SlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAg
cmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0
KS0+c3VwcG9ydHNQcmVzc0FjdGlvbigpKTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgZ2V0SXNF
bmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewog
ICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09i
amVjdCktPmlzRW5hYmxlZCgpKTsKQEAgLTM2NSw3ICszNzIsNiBAQCBKU0NsYXNzUmVmIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTCiAgICAgICAgIHsgImNoaWxkcmVuQ291bnQiLCBnZXRD
aGlsZHJlbkNvdW50Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaW5zZXJ0aW9uUG9p
bnRMaW5lTnVtYmVyIiwgZ2V0SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQ2FsbGJhY2ssIDAsIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2VsZWN0ZWRUZXh0UmFuZ2UiLCBnZXRTZWxlY3RlZFRleHRSYW5n
ZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgInN1cHBvcnRzUHJlc3NBY3Rpb24iLCBn
ZXRTdXBwb3J0c1ByZXNzQWN0aW9uQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNF
bmFibGVkIiwgZ2V0SXNFbmFibGVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNS
ZXF1aXJlZCIsIGdldElzUmVxdWlyZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAs
IDAsIDAsIDAgfQpAQCAtMzk1LDYgKzQwMSw3IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0SlMKICAgICAgICAgeyAic2V0U2VsZWN0ZWRUZXh0UmFuZ2UiLCBzZXRTZWxl
Y3RlZFRleHRSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImF0dHJpYnV0ZVZhbHVl
IiwgYXR0cmlidXRlVmFsdWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc0F0dHJpYnV0
ZVNldHRhYmxlIiwgaXNBdHRyaWJ1dGVTZXR0YWJsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAg
IHsgImlzQWN0aW9uU3VwcG9ydGVkIiwgaXNBY3Rpb25TdXBwb3J0ZWRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJwYXJlbnRFbGVtZW50IiwgcGFyZW50RWxlbWVudENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgImluY3JlbWVudCIsIGluY3JlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgImRlY3JlbWVudCIsIGRlY3JlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCShyZXZpc2lvbiA0Njc2OSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQCBwdWJs
aWM6CiAgICAgLy8gQXR0cmlidXRlcyAtIHBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0
aW9ucwogICAgIEpTU3RyaW5nUmVmIGF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSk7CiAgICAgYm9vbCBpc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7
CisgICAgYm9vbCBpc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pOwogICAgIEpT
U3RyaW5nUmVmIHJvbGUoKTsKICAgICBKU1N0cmluZ1JlZiB0aXRsZSgpOwogICAgIEpTU3RyaW5n
UmVmIGRlc2NyaXB0aW9uKCk7CkBAIC05Myw3ICs5NCw2IEBAIHB1YmxpYzoKICAgICBkb3VibGUg
bWF4VmFsdWUoKTsKICAgICBpbnQgaW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCk7CiAgICAgSlNT
dHJpbmdSZWYgc2VsZWN0ZWRUZXh0UmFuZ2UoKTsKLSAgICBib29sIHN1cHBvcnRzUHJlc3NBY3Rp
b24oKTsKICAgICBib29sIGlzRW5hYmxlZCgpOwogICAgIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0
OwogICAgIGRvdWJsZSBjbGlja1BvaW50WCgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0J
KHJldmlzaW9uIDQ2NzY5KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5MywxMCArMzkzLDEw
IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2kKICAgICByZXR1cm4g
LTE7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydHNQcmVzc0FjdGlv
bigpCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9ydGVkKEpTU3Ry
aW5nUmVmIGFjdGlvbikKIHsKICAgICBOU0FycmF5KiBhY3Rpb25zID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QWN0aW9uTmFtZXNdOwotICAgIHJldHVybiBbYWN0aW9ucyBjb250YWluc09iamVj
dDpOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbl07CisgICAgcmV0dXJuIFthY3Rpb25zIGNvbnRh
aW5zT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YWN0aW9uXV07CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKCkKSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudFdpbi5jcHAJKHJldmlzaW9uIDQ2NzY5KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDUsNyArMjQ1LDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVl
KAogICAgIHJldHVybiAwOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1cHBv
cnRzUHJlc3NBY3Rpb24oKQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1
cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNDY3NzIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wOC0wNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJ1ZyAyNzk5MyAtIEFYU2xpZGVycyBhcmUgbWlzc2luZyByZXF1aXJlZCBhdHRy
aWJ1dGVzIGFuZCBhY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNzk5MworCisgICAgICAgIFVwZGF0ZSB0ZXN0cyB0byB1c2UgbW9yZSBnZW5l
cmljIGlzQWN0aW9uU3VwcG9ydGVkLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLWxp
bmstc3VwcG9ydHMtcHJlc3MuaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2J1dHRvbi1w
cmVzcy1hY3Rpb24uaHRtbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L29uY2xpY2staGFuZGxl
cnMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zbGlkZXItc3Vw
cG9ydHMtYWN0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3NsaWRlci1zdXBwb3J0cy1hY3Rpb25zLmh0bWw6IEFkZGVkLgorCiAy
MDA5LTA4LTA0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtbGluay1zdXBwb3J0cy1wcmVzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1saW5rLXN1cHBvcnRzLXByZXNzLmh0bWwJKHJldmlzaW9u
IDQ2NzY5KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWxpbmstc3VwcG9ydHMt
cHJlc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICB2YXIg
cmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwogICAgICAgICAKICAg
ICAgICAgbGluay5mb2N1cygpOwotICAgICAgICB2YXIgc3VwcG9ydHNBY3Rpb24gPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5zdXBwb3J0c1ByZXNzQWN0aW9uOworICAg
ICAgICB2YXIgc3VwcG9ydHNBY3Rpb24gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudC5pc0FjdGlvblN1cHBvcnRlZCgiQVhQcmVzcyIpOwogICAgICAgICBpZiAoc3VwcG9y
dHNBY3Rpb24pCiAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlNVQ0NFU1MhIFRoaXMg
dGVzdCBwYXNzZXMgYmVjYXVzZSB0aGUgQVJJQSBsaW5rIGFib3ZlIHN1cHBvcnRzIHRoZSBwcmVz
cyBhY3Rpb24uIjsKICAgICAgICAgZWxzZQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9idXR0b24tcHJlc3MtYWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9idXR0b24tcHJlc3MtYWN0aW9uLmh0bWwJKHJldmlzaW9uIDQ2NzY5KQorKysg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tcHJlc3MtYWN0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDcgKzE5LDcgQEAKICAgICAgICAgICAgIGJ1dHRvbi5mb2N1cygpOwog
ICAgICAgICAgICAgYnV0dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CiAKLSAgICAgICAgICAgIGlmIChidXR0b24uc3VwcG9ydHNQcmVzc0FjdGlvbikgeworICAg
ICAgICAgICAgaWYgKGJ1dHRvbi5pc0FjdGlvblN1cHBvcnRlZCgiQVhQcmVzcyIpKSB7CiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiVGVzdCBwYXNzZWRcbiI7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvb25jbGljay1oYW5kbGVycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvb25jbGljay1oYW5kbGVycy5odG1sCShyZXZpc2lvbiA0Njc2OSkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvb25jbGljay1oYW5kbGVycy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xOSw3ICsxOSw3IEBACiAgICAgICAgICAgICB2YXIgZm9jdXNlZEVsZW1lbnQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKICAgICAgICAgICAgIHZhciB0ZXh0
RWxlbWVudCA9IGZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7
CiAKLSAgICAgICAgICAgIGlmICh0ZXh0RWxlbWVudC5zdXBwb3J0c1ByZXNzQWN0aW9uKSB7Cisg
ICAgICAgICAgICBpZiAodGV4dEVsZW1lbnQuaXNBY3Rpb25TdXBwb3J0ZWQoIkFYUHJlc3MiKSkg
ewogICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlRlc3QgcGFzc2VkXG4iOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zbGlkZXItc3VwcG9ydHMtYWN0aW9ucy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
c2xpZGVyLXN1cHBvcnRzLWFjdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2xpZGVyLXN1cHBvcnRzLWFjdGlv
bnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitYICAKK1RoaXMg
dGVzdCBtYWtlcyBzdXJlIHRoYXQgQVhJbmNyZW1lbnQgYW5kIERlY3JlbWVudCBhcmUgZXhwb3Nl
ZCBvbiBzbGlkZXJzIChBUklBIGFuZCBpbnB1dCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHN1Y2NlZWRlZCBpcyB0cnVlCitQQVNTIHN1Y2NlZWRlZCBpcyB0cnVlCitQ
QVNTIHN1Y2NlZWRlZCBpcyB0cnVlCitQQVNTIHN1Y2NlZWRlZCBpcyB0cnVlCitQQVNTIHN1Y2Nl
ZWRlZCBpcyB0cnVlCitQQVNTIHN1Y2NlZWRlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvc2xpZGVyLXN1cHBvcnRzLWFjdGlvbnMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zbGlkZXItc3Vw
cG9ydHMtYWN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvc2xpZGVyLXN1cHBvcnRzLWFjdGlvbnMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD4K
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPHNwYW4gdGFiaW5kZXg9IjAiIHJvbGU9InNsaWRl
ciIgaWQ9InNsaWRlcjEiIGFyaWEtdmFsdWVub3c9NSBhcmlhLXZhbHVlbWluPTAgYXJpYS12YWx1
ZW1heD0xMD5YPC9zcGFuPgorCis8aW5wdXQgdHlwZT0icmFuZ2UiIGlkPSJzbGlkZXIyIj4KKwor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IEFYSW5j
cmVtZW50IGFuZCBEZWNyZW1lbnQgYXJlIGV4cG9zZWQgb24gc2xpZGVycyAoQVJJQSBhbmQgaW5w
dXQpLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisg
ICAgICAgICAgLy8gdGVzdCB0aGUgQVJJQSBzbGlkZXIKKyAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic2xpZGVyMSIpLmZvY3VzKCk7CisgICAgICAgICAgdmFyIG9iaiA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworCisgICAgICAgICAgdmFyIHN1Y2Nl
ZWRlZCA9IG9iai5pc0FjdGlvblN1cHBvcnRlZCgiQVhJbmNyZW1lbnQiKSA9PSB0cnVlOworICAg
ICAgICAgIHNob3VsZEJlKCJzdWNjZWVkZWQiLCAidHJ1ZSIpOworCisgICAgICAgICAgdmFyIHN1
Y2NlZWRlZCA9IG9iai5pc0FjdGlvblN1cHBvcnRlZCgiQVhEZWNyZW1lbnQiKSA9PSB0cnVlOwor
ICAgICAgICAgIHNob3VsZEJlKCJzdWNjZWVkZWQiLCAidHJ1ZSIpOworCisgICAgICAgICAgdmFy
IHN1Y2NlZWRlZCA9IG9iai5hdHRyaWJ1dGVWYWx1ZSgiQVhPcmllbnRhdGlvbiIpID09ICJBWFZl
cnRpY2FsT3JpZW50YXRpb24iOworICAgICAgICAgIHNob3VsZEJlKCJzdWNjZWVkZWQiLCAidHJ1
ZSIpOworCisgICAgICAgICAgLy8gdGVzdCB0aGUgaW5wdXQgc2xpZGVyCisgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsaWRlcjIiKS5mb2N1cygpOworICAgICAgICAgIHZhciBv
YmogPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAgICAg
IHZhciBzdWNjZWVkZWQgPSBvYmouaXNBY3Rpb25TdXBwb3J0ZWQoIkFYSW5jcmVtZW50IikgPT0g
dHJ1ZTsKKyAgICAgICAgICBzaG91bGRCZSgic3VjY2VlZGVkIiwgInRydWUiKTsKKworICAgICAg
ICAgIHZhciBzdWNjZWVkZWQgPSBvYmouaXNBY3Rpb25TdXBwb3J0ZWQoIkFYRGVjcmVtZW50Iikg
PT0gdHJ1ZTsKKyAgICAgICAgICBzaG91bGRCZSgic3VjY2VlZGVkIiwgInRydWUiKTsKKworICAg
ICAgICAgIHZhciBzdWNjZWVkZWQgPSBvYmouYXR0cmlidXRlVmFsdWUoIkFYT3JpZW50YXRpb24i
KSA9PSAiQVhIb3Jpem9udGFsT3JpZW50YXRpb24iOworICAgICAgICAgIHNob3VsZEJlKCJzdWNj
ZWVkZWQiLCAidHJ1ZSIpOworCisgICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="18253"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>