axe-matchers 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ require 'axe/cucumber/step'
2
+
3
+ Then Axe::Cucumber::Step::REGEX, :be_accessible, on: -> { Axe::Cucumber::Step.create_for self }
@@ -0,0 +1,26 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+
4
+ module Axe
5
+ class JavaScriptLibrary
6
+
7
+ def inject_into(page)
8
+ page.execute_script source
9
+ end
10
+
11
+ def source
12
+ axe_lib.read
13
+ end
14
+
15
+ private
16
+
17
+ def axe_lib
18
+ gem_root + 'node_modules/axe-core/axe.min.js'
19
+ end
20
+
21
+ def gem_root
22
+ Pathname.new Gem::Specification.find_by_name('axe-matchers').gem_dir
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1 @@
1
+ require 'axe/matchers/be_accessible'
@@ -0,0 +1,62 @@
1
+ require 'forwardable'
2
+ require 'axe/page'
3
+ require 'axe/api/a11y_check'
4
+
5
+ module Axe
6
+ module Matchers
7
+ class BeAccessible
8
+ extend Forwardable
9
+
10
+ def_delegators :@audit, :failure_message, :failure_message_when_negated
11
+
12
+ def initialize
13
+ @a11y_check = API::A11yCheck.new
14
+ end
15
+
16
+ def matches?(page)
17
+ @audit = @a11y_check.call Page.new page
18
+
19
+ @audit.passed?
20
+ end
21
+
22
+ def within(inclusion)
23
+ @a11y_check.include inclusion
24
+ self
25
+ end
26
+
27
+ def excluding(exclusion)
28
+ @a11y_check.exclude exclusion
29
+ self
30
+ end
31
+
32
+ def according_to(*tags)
33
+ @a11y_check.rules_by_tags tags.flatten
34
+ self
35
+ end
36
+
37
+ def checking(*rules)
38
+ @a11y_check.run_rules rules.flatten
39
+ self
40
+ end
41
+
42
+ def skipping(*rules)
43
+ @a11y_check.skip_rules rules.flatten
44
+ self
45
+ end
46
+
47
+ def checking_only(*rules)
48
+ @a11y_check.run_only_rules rules.flatten
49
+ self
50
+ end
51
+
52
+ def with_options(options)
53
+ @a11y_check.custom_options options
54
+ self
55
+ end
56
+ end
57
+
58
+ def be_accessible
59
+ BeAccessible.new
60
+ end
61
+ end
62
+ end
data/lib/axe/page.rb ADDED
@@ -0,0 +1,26 @@
1
+ require 'forwardable'
2
+ require 'webdriver_script_adapter/exec_eval_script_adapter'
3
+ require 'webdriver_script_adapter/execute_async_script_adapter'
4
+
5
+ module Axe
6
+ class Page
7
+ extend Forwardable
8
+ def_delegators :@driver, :execute_script, :execute_async_script
9
+
10
+ def initialize(driver)
11
+ @driver = wrap_exec_async wrap_exec_eval driver
12
+ end
13
+
14
+ private
15
+
16
+ # ensure driver has #execute_async_script
17
+ def wrap_exec_async(driver)
18
+ ::WebDriverScriptAdapter::ExecuteAsyncScriptAdapter.wrap driver
19
+ end
20
+
21
+ # ensure driver has #execute_script and #evaluate_script
22
+ def wrap_exec_eval(driver)
23
+ ::WebDriverScriptAdapter::ExecEvalScriptAdapter.wrap driver
24
+ end
25
+ end
26
+ end
data/lib/axe/rspec.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'axe/matchers'
2
+ require 'rspec/core'
3
+
4
+ RSpec.configure do |config|
5
+ config.include Axe::Matchers
6
+ end
@@ -0,0 +1,3 @@
1
+ module Axe
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,27 @@
1
+ require 'dumb_delegator'
2
+
3
+ module WebDriverScriptAdapter
4
+ # Capybara distinguishes eval from exec
5
+ # (eval is a query, exec is a command)
6
+ # this decorator makes webdriver act like capybara
7
+ class ExecEvalScriptAdapter < ::DumbDelegator
8
+
9
+ def self.wrap(driver)
10
+ raise WebDriverError, "WebDriver must respond to #execute_script" unless driver.respond_to? :execute_script
11
+ driver.respond_to?(:evaluate_script) ? driver : new(driver)
12
+ end
13
+
14
+ # executes script without returning result
15
+ def execute_script(script)
16
+ super
17
+ nil
18
+ end
19
+
20
+ # returns result of executing script
21
+ def evaluate_script(script)
22
+ __getobj__.execute_script "return #{script}"
23
+ end
24
+ end
25
+
26
+ class WebDriverError < TypeError; end
27
+ end
@@ -0,0 +1,90 @@
1
+ require 'dumb_delegator'
2
+ require 'securerandom'
3
+ require 'timeout'
4
+ require 'webdriver_script_adapter/exec_eval_script_adapter'
5
+
6
+ module WebDriverScriptAdapter
7
+ class << self
8
+ attr_accessor :async_results_identifier, :max_wait_time, :wait_interval
9
+
10
+ def configure
11
+ yield self
12
+ end
13
+ end
14
+
15
+ module Defaults
16
+ module_function
17
+
18
+ def async_results_identifier
19
+ -> { ::SecureRandom.uuid }
20
+ end
21
+
22
+ def max_wait_time
23
+ if defined? ::Capybara
24
+ if ::Capybara.respond_to? :default_max_wait_time
25
+ ::Capybara.default_max_wait_time
26
+ else
27
+ ::Capybara.default_wait_time
28
+ end
29
+ elsif defined? ::Selenium::WebDriver::Wait::DEFAULT_TIMEOUT
30
+ ::Selenium::WebDriver::Wait::DEFAULT_TIMEOUT
31
+ else
32
+ 3
33
+ end
34
+ end
35
+
36
+ def wait_interval
37
+ if defined? ::Selenium::WebDriver::Wait::DEFAULT_INTERVAL
38
+ ::Selenium::WebDriver::Wait::DEFAULT_INTERVAL
39
+ else
40
+ 0.1
41
+ end
42
+ end
43
+ end
44
+
45
+ module ScriptWriter
46
+ module_function
47
+
48
+ def async_results_identifier
49
+ id = WebDriverScriptAdapter.async_results_identifier
50
+ "window['#{ id.respond_to?(:call) ? id.call : id }']"
51
+ end
52
+
53
+ def callback(resultsIdentifier)
54
+ "function(returnValue){ #{resultsIdentifier} = returnValue; }"
55
+ end
56
+
57
+ def async_wrapper(script, *args)
58
+ "(function(){ #{script} })(#{args.join(', ')});"
59
+ end
60
+ end
61
+
62
+ module Patiently
63
+ module_function
64
+
65
+ def wait_until
66
+ ::Timeout.timeout(WebDriverScriptAdapter.max_wait_time) do
67
+ sleep(WebDriverScriptAdapter.wait_interval) while (value = yield).nil?
68
+ value
69
+ end
70
+ end
71
+ end
72
+
73
+ class ExecuteAsyncScriptAdapter < ::DumbDelegator
74
+ def self.wrap(driver)
75
+ new ExecEvalScriptAdapter.wrap driver
76
+ end
77
+
78
+ def execute_async_script(script, *args)
79
+ results = ScriptWriter.async_results_identifier
80
+ execute_script ScriptWriter.async_wrapper(script, *args, ScriptWriter.callback(results))
81
+ Patiently.wait_until { evaluate_script results }
82
+ end
83
+ end
84
+
85
+ configure do |c|
86
+ c.async_results_identifier = Defaults.async_results_identifier
87
+ c.max_wait_time = Defaults.max_wait_time
88
+ c.wait_interval = Defaults.wait_interval
89
+ end
90
+ end
@@ -0,0 +1,25 @@
1
+ /*! aXe v1.0.1
2
+ * Copyright (c) 2015 Deque Systems, Inc.
3
+ *
4
+ * Your use of this Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+ *
8
+ * This entire copyright notice must appear in every copy of this file you
9
+ * distribute or in any file that contains substantial portions of this source
10
+ * code.
11
+ */
12
+ !function(a){function b(a){"use strict";var c,d,e=a;if(null!==a&&"object"==typeof a)if(Array.isArray(a))for(e=[],c=0,d=a.length;d>c;c++)e[c]=b(a[c]);else{e={};for(c in a)e[c]=b(a[c])}return e}function c(a){"use strict";this.reporter=a,this.rules=[],this.tools={}}function d(a){"use strict";this.id=a.id,this.data=null,this.relatedNodes=[],this.result=null}function e(a){"use strict";this.id=a.id,this.options=a.options,this.selector=a.selector,this.evaluate=a.evaluate,a.after&&(this.after=a.after),a.matches&&(this.matches=a.matches),this.enabled=a.hasOwnProperty("enabled")?a.enabled:!0}function f(a,b){"use strict";if(!R.isHidden(b)){var c=R.findBy(a.frames,"node",b);c||a.frames.push({node:b,include:[],exclude:[]})}}function g(a,b,c){"use strict";a.frames=a.frames||[];var d,e,f=document.querySelectorAll(c.shift());a:for(var g=0,h=f.length;h>g;g++){e=f[g];for(var i=0,j=a.frames.length;j>i;i++)if(a.frames[i].node===e){a.frames[i][b].push(c);break a}d={node:e,include:[],exclude:[]},c&&d[b].push(c),a.frames.push(d)}}function h(a){"use strict";if(a&&"object"==typeof a){if(a instanceof Node)return{include:[a],exclude:[]};if(a.hasOwnProperty("include")||a.hasOwnProperty("exclude"))return{include:a.include||[],exclude:a.exclude||[]};if(a.length===+a.length)return{include:a,exclude:[]}}return"string"==typeof a?{include:[a],exclude:[]}:{include:[],exclude:[]}}function i(a,b){"use strict";for(var c,d=[],e=0,h=a[b].length;h>e;e++){if(c=a[b][e],"string"==typeof c){d=d.concat(R.toArray(document.querySelectorAll(c)));break}c&&c.length?c.length>1?g(a,b,c):d=d.concat(R.toArray(document.querySelectorAll(c[0]))):d.push(c)}return d.filter(function(b){if(b){if("IFRAME"===b.nodeName||"FRAME"===b.nodeName)return f(a,b),!1;R.toArray(b.querySelectorAll("iframe, frame")).forEach(function(b){f(a,b)})}return b})}function j(a){"use strict";this.frames=[],this.page=a instanceof Node&&a.nodeType===Node.DOCUMENT_NODE||!a,this.initiator=a&&"boolean"==typeof a.initiator?a.initiator:!0,a=h(a),this.exclude=a.exclude,this.include=a.include,this.include=i(this,"include"),this.exclude=i(this,"exclude")}function k(a,b,c){"use strict";if(b=b||300,c=c||"...",a.length>b){var d=Math.floor((b-c.length)/2);a=a.slice(0,d)+c+a.slice(-d)}return a}function l(a,b){"use strict";b=b||{},this.selector=b.selector||[R.getSelector(a)],this.source=k(b.source||a.outerHTML),this.element=a}function m(a){"use strict";this.id=a.id,this.result=Q.constants.result.NA,this.pageLevel=a.pageLevel,this.impact=null,this.nodes=[]}function n(a,b){"use strict";var c,d;if(b.all)for(c=0,d=b.all.length;d>c;c++)a.all.push(new e(b.all[c]));if(b.none)for(c=0,d=b.none.length;d>c;c++)a.none.push(new e(b.none[c]));if(b.any)for(c=0,d=b.any.length;d>c;c++)a.any.push(new e(b.any[c]))}function o(a){"use strict";this.id=a.id,this.selector=a.selector||"*",this.excludeHidden="boolean"==typeof a.excludeHidden?a.excludeHidden:!0,this.enabled="boolean"==typeof a.enabled?a.enabled:!0,this.pageLevel="boolean"==typeof a.pageLevel?a.pageLevel:!1,this.any=[],this.all=[],this.none=[],n(this,a),this.tags=a.tags||[],a.matches&&(this.matches=a.matches)}function p(a){"use strict";return R.getAllChecks(a).filter(function(a){return"function"==typeof a.after})}function q(a,b){"use strict";var c=[];return a.forEach(function(a){var d=R.getAllChecks(a);d.forEach(function(a){a.id===b&&c.push(a)})}),c}function r(a){"use strict";return a.filter(function(a){return a.filtered!==!0})}function s(a){"use strict";var b=["any","all","none"],c=a.nodes.filter(function(a){var c=0;return b.forEach(function(b){a[b]=r(a[b]),c+=a[b].length}),c>0});return a.pageLevel&&c.length&&(c=[c.reduce(function(a,c){return a?(b.forEach(function(b){a[b].push.apply(a[b],c[b])}),a):void 0})]),c}function t(a){"use strict";a.source=a.source||{},this.id=a.id,this.options=a.options,this._run=a.source.run,this._cleanup=a.source.cleanup,this.active=!1}function u(a){"use strict";if(!Q._audit)throw new Error("No audit configured");var b=R.queue();Object.keys(Q._audit.tools).forEach(function(a){var c=Q._audit.tools[a];c.active&&b.defer(function(a){c.cleanup(a)})}),R.toArray(document.querySelectorAll("frame, iframe")).forEach(function(a){b.defer(function(b){return R.sendCommandToFrame(a,{command:"cleanup-tool"},b)})}),b.then(a)}function v(a,b){"use strict";var c=a&&a.context||{};c.include&&!c.include.length&&(c.include=[document]);var d=a&&a.options||{};switch(a.command){case"rules":return z(c,d,b);case"run-tool":return A(a.parameter,a.selectorArray,d,b);case"cleanup-tool":return u(b)}}function w(a){"use strict";var b=a||{};return b.rules=b.rules||[],b.tools=b.tools||[],b.data=b.data||{checks:{},rules:{}},b}function x(a){"use strict";if(T&&T.parentNode&&(T.parentNode.removeChild(T),T=null),a){var b=document.head||document.getElementsByTagName("head")[0];return T=document.createElement("style"),T.type="text/css",void 0===T.styleSheet?T.appendChild(document.createTextNode(a)):T.styleSheet.cssText=a,b.appendChild(T),T}}function y(a){"use strict";return"string"==typeof a&&V[a]?V[a]:"function"==typeof a?a:U}function z(a,b,c){"use strict";a=new j(a);var d=R.queue(),e=Q._audit;a.frames.length&&d.defer(function(c){R.collectResultsFromFrames(a,b,"rules",null,c)}),d.defer(function(c){e.run(a,b,c)}),d.then(function(d){var f=R.mergeResults(d.map(function(a){return{results:a}}));a.initiator&&(f=e.after(f,b),f=f.map(R.finalizeRuleResult)),c(f)})}function A(a,b,c,d){"use strict";if(!Q._audit)throw new Error("No audit configured");if(b.length>1){var e=document.querySelector(b.shift());return R.sendCommandToFrame(e,{options:c,command:"run-tool",parameter:a,selectorArray:b},d)}var f=document.querySelector(b.shift());Q._audit.tools[a].run(f,c,d)}function B(a,b){"use strict";Object.keys(Q.constants.raisedMetadata).forEach(function(c){var d=Q.constants.raisedMetadata[c],e=b.reduce(function(a,b){var e=d.indexOf(b[c]);return e>a?e:a},-1);d[e]&&(a[c]=d[e])})}function C(a){"use strict";var b=a.any.length||a.all.length||a.none.length;return b?Q.constants.result.FAIL:Q.constants.result.PASS}function D(a){"use strict";function b(a){return R.extendBlacklist({},a,["result"])}var c=R.extendBlacklist({violations:[],passes:[]},a,["nodes"]);return a.nodes.forEach(function(a){var d=R.getFailingChecks(a),e=C(d);return e===Q.constants.result.FAIL?(B(a,R.getAllChecks(d)),a.any=d.any.map(b),a.all=d.all.map(b),a.none=d.none.map(b),void c.violations.push(a)):(a.any=a.any.filter(function(a){return a.result}).map(b),a.all=a.all.map(b),a.none=a.none.map(b),void c.passes.push(a))}),B(c,c.violations),c.result=c.violations.length?Q.constants.result.FAIL:c.passes.length?Q.constants.result.PASS:c.result,c}function E(a){"use strict";for(var b=1,c=a.nodeName;a=a.previousElementSibling;)a.nodeName===c&&b++;return b}function F(a,b){"use strict";var c,d,e=a.parentNode.children;if(!e)return!1;var f=e.length;for(c=0;f>c;c++)if(d=e[c],d!==a&&R.matchesSelector(d,b))return!0;return!1}function G(a,b,c){"use strict";a.forEach(function(a){a.node.selector.unshift(c),a.node=new l(b,a.node);var d=R.getAllChecks(a);d.length&&d.forEach(function(a){a.relatedNodes.forEach(function(a){a.selector.unshift(c),a=new l(b,a)})})})}function H(a,b){"use strict";for(var c,d,e=b[0].node,f=0,g=a.length;g>f;f++)if(d=a[f].node,c=R.nodeSorter(d.element,e.element),c>0||0===c&&e.selector.length<d.selector.length)return void a.splice.apply(a,[f,0].concat(b));a.push.apply(a,b)}function I(a){"use strict";return a&&a.results?Array.isArray(a.results)?a.results.length?a.results:null:[a.results]:null}function J(a){"use strict";return a.sort(function(a,b){return R.contains(a,b)?1:-1})[0]}function K(a,b){"use strict";var c=b.include&&J(b.include.filter(function(b){return R.contains(b,a)})),d=b.exclude&&J(b.exclude.filter(function(b){return R.contains(b,a)}));return!d&&c||d&&R.contains(d,c)?!0:!1}function L(a,b,c){"use strict";for(var d=0,e=b.length;e>d;d++)-1===a.indexOf(b[d])&&K(b[d],c)&&a.push(b[d])}var M=function(){"use strict";function a(a){var b,c,d=a.Element.prototype,e=["matches","matchesSelector","mozMatchesSelector","webkitMatchesSelector","msMatchesSelector"],f=e.length;for(b=0;f>b;b++)if(c=e[b],d[c])return c}var b;return function(c,d){return b&&c[b]||(b=a(c.ownerDocument.defaultView)),c[b](d)}}(),N=function(a){"use strict";for(var b,c=String(a),d=c.length,e=-1,f="",g=c.charCodeAt(0);++e<d;){if(b=c.charCodeAt(e),0==b)throw new Error("INVALID_CHARACTER_ERR");f+=b>=1&&31>=b||b>=127&&159>=b||0==e&&b>=48&&57>=b||1==e&&b>=48&&57>=b&&45==g?"\\"+b.toString(16)+" ":(1!=e||45!=b||45!=g)&&(b>=128||45==b||95==b||b>=48&&57>=b||b>=65&&90>=b||b>=97&&122>=b)?c.charAt(e):"\\"+c.charAt(e)}return f};(function(){function a(a,b,c){var d=b&&c||0,e=0;for(b=b||[],a.toLowerCase().replace(/[0-9a-f]{2}/g,function(a){16>e&&(b[d+e++]=m[a])});16>e;)b[d+e++]=0;return b}function b(a,b){var c=b||0,d=l;return d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]}function c(a,c,d){var e=c&&d||0,f=c||[];a=a||{};var g=null!=a.clockseq?a.clockseq:q,h=null!=a.msecs?a.msecs:(new Date).getTime(),i=null!=a.nsecs?a.nsecs:s+1,j=h-r+(i-s)/1e4;if(0>j&&null==a.clockseq&&(g=g+1&16383),(0>j||h>r)&&null==a.nsecs&&(i=0),i>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");r=h,s=i,q=g,h+=122192928e5;var k=(1e4*(268435455&h)+i)%4294967296;f[e++]=k>>>24&255,f[e++]=k>>>16&255,f[e++]=k>>>8&255,f[e++]=255&k;var l=h/4294967296*1e4&268435455;f[e++]=l>>>8&255,f[e++]=255&l,f[e++]=l>>>24&15|16,f[e++]=l>>>16&255,f[e++]=g>>>8|128,f[e++]=255&g;for(var m=a.node||p,n=0;6>n;n++)f[e+n]=m[n];return c?c:b(f)}function d(a,c,d){var f=c&&d||0;"string"==typeof a&&(c="binary"==a?new k(16):null,a=null),a=a||{};var g=a.random||(a.rng||e)();if(g[6]=15&g[6]|64,g[8]=63&g[8]|128,c)for(var h=0;16>h;h++)c[f+h]=g[h];return c||b(g)}var e,f=this;if("function"==typeof f.require)try{var g=f.require("crypto").randomBytes;e=g&&function(){return g(16)}}catch(h){}if(!e&&f.crypto&&crypto.getRandomValues){var i=new Uint8Array(16);e=function(){return crypto.getRandomValues(i),i}}if(!e){var j=new Array(16);e=function(){for(var a,b=0;16>b;b++)0===(3&b)&&(a=4294967296*Math.random()),j[b]=a>>>((3&b)<<3)&255;return j}}for(var k="function"==typeof f.Buffer?f.Buffer:Array,l=[],m={},n=0;256>n;n++)l[n]=(n+256).toString(16).substr(1),m[l[n]]=n;var o=e(),p=[1|o[0],o[1],o[2],o[3],o[4],o[5]],q=16383&(o[6]<<8|o[7]),r=0,s=0,t=d;if(t.v1=c,t.v4=d,t.parse=a,t.unparse=b,t.BufferClass=k,"undefined"!=typeof module&&module.exports)module.exports=t;else if("function"==typeof P&&P.amd)P(function(){return t});else{var u=f.uuid;t.noConflict=function(){return f.uuid=u,t},f.uuid=t}}).call(this);var O,P,Q={},R={};R.matchesSelector=M,R.escapeSelector=N,R.clone=b;var S={};c.prototype.addRule=function(a){"use strict";for(var b,c=0,d=this.rules.length;d>c;c++)if(b=this.rules[c],b.id===a.id)return void(this.rules[c]=new o(a));this.rules.push(new o(a))},c.prototype.addTool=function(a){"use strict";this.tools[a.id]=new t(a)},c.prototype.run=function(a,b,c){"use strict";var d=R.queue();this.rules.forEach(function(c){R.ruleShouldRun(c,a,b)&&d.defer(function(d){c.run(a,b,d)})}),d.then(c)},c.prototype.after=function(a,b){"use strict";var c=this.rules;return a.map(function(a){var d=R.findBy(c,"id",a.id);return d.after(a,b)})},e.prototype.matches=function(a){"use strict";return!this.selector||R.matchesSelector(a,this.selector)?!0:!1},e.prototype.run=function(a,b,c){"use strict";b=b||{};var e=b.hasOwnProperty("enabled")?b.enabled:this.enabled,f=b.options||this.options;if(e&&this.matches(a)){var g,h=new d(this),i=R.checkHelper(h,c);try{g=this.evaluate.call(i,a,f)}catch(j){return Q.log(j.message,j.stack),void c(null)}i.isAsync||(h.result=g,setTimeout(function(){c(h)},0))}else c(null)},l.prototype.toJSON=function(){"use strict";return{selector:this.selector,source:this.source}},o.prototype.matches=function(){"use strict";return!0},o.prototype.gather=function(a){"use strict";var b=R.select(this.selector,a);return this.excludeHidden?b.filter(function(a){return!R.isHidden(a)}):b},o.prototype.runChecks=function(a,b,c,d){"use strict";var e=this,f=R.queue();this[a].forEach(function(a){var d=R.getCheckOption(a,e.id,c);f.defer(function(c){a.run(b,d,c)})}),f.then(function(b){b=b.filter(function(a){return a}),d({type:a,results:b})})},o.prototype.run=function(a,b,c){"use strict";var d,e=this.gather(a),f=R.queue(),g=this;d=new m(this),e.forEach(function(a){g.matches(a)&&f.defer(function(c){var e=R.queue();e.defer(function(c){g.runChecks("any",a,b,c)}),e.defer(function(c){g.runChecks("all",a,b,c)}),e.defer(function(c){g.runChecks("none",a,b,c)}),e.then(function(b){if(b.length){var e=!1,f={node:new l(a)};b.forEach(function(a){var b=a.results.filter(function(a){return a});f[a.type]=b,b.length&&(e=!0)}),e&&d.nodes.push(f)}c()})})}),f.then(function(){c(d)})},o.prototype.after=function(a,b){"use strict";var c=p(this),d=this.id;return c.forEach(function(c){var e=q(a.nodes,c.id),f=R.getCheckOption(c,d,b),g=c.after(e,f);e.forEach(function(a){-1===g.indexOf(a)&&(a.filtered=!0)})}),a.nodes=s(a),a},t.prototype.run=function(a,b,c){"use strict";b="undefined"==typeof b?this.options:b,this.active=!0,this._run(a,b,c)},t.prototype.cleanup=function(a){"use strict";this.active=!1,this._cleanup(a)},Q.constants={},Q.constants.result={PASS:"PASS",FAIL:"FAIL",NA:"NA"},Q.constants.raisedMetadata={impact:["minor","moderate","serious","critical"]},Q.version="dev",a.axe=Q,Q.log=function(){"use strict";"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},Q.cleanup=u,Q.configure=function(a){"use strict";var b=Q._audit;if(!b)throw new Error("No audit configured");a.reporter&&("function"==typeof a.reporter||V[a.reporter])&&(b.reporter=a.reporter)},Q.getRules=function(a){"use strict";a=a||[];var b=a.length?Q._audit.rules.filter(function(b){return!!a.filter(function(a){return-1!==b.tags.indexOf(a)}).length}):Q._audit.rules,c=Q._audit.data.rules||{};return b.map(function(a){var b=c[a.id]||{description:""};return{ruleId:a.id,description:b.description}})};var T;Q._load=function(a){"use strict";a=w(a),Q._audit=new c(a.reporter),O=a.commons,Q._audit.version=a.version;var b,d;for(b=0,d=a.rules.length;d>b;b++)Q._audit.addRule(a.rules[b]);for(b=0,d=a.tools.length;d>b;b++)Q._audit.addTool(a.tools[b]);Q._audit.data=a.data||{checks:{},rules:{}},x(a.style),R.respondable.subscribe("axe.ping",function(a,b){b({axe:!0})}),R.respondable.subscribe("axe.start",v)};var U,V={};Q.reporter=function(a,b,c){"use strict";V[a]=b,c&&(U=b)},Q.a11yCheck=function(a,b,c){"use strict";"function"==typeof b&&(c=b,b={}),b&&"object"==typeof b||(b={});var d=Q._audit;if(!d)throw new Error("No audit configured");var e=y(b.reporter||d.reporter);z(a,b,function(a){e(a,c)})},Q.tool=A,S.failureSummary=function(a){"use strict";var b={};return b.none=a.none.concat(a.all),b.any=a.any,Object.keys(b).map(function(a){return b[a].length?Q._audit.data.failureSummaries[a].failureMessage(b[a].map(function(a){return a.message||""})):void 0}).filter(function(a){return void 0!==a}).join("\n\n")},S.formatNode=function(a){"use strict";return{target:a?a.selector:null,html:a?a.source:null}},S.splitResults=function(a,b){"use strict";var c=[],d=[];return a.forEach(function(a){function e(c){var d=c.result||a.result,e=S.formatNode(c.node);return e.impact=c.impact||null,b(e,c,d)}var f,g={id:a.id,description:a.description,help:a.help,helpUrl:a.helpUrl||null,impact:null,tags:a.tags,nodes:[]};f=R.clone(g),f.impact=a.impact||null,f.nodes=a.violations.map(e),g.nodes=a.passes.map(e),f.nodes.length&&c.push(f),g.nodes.length&&d.push(g)}),{violations:c,passes:d,url:window.location.href,timestamp:new Date}},Q.reporter("raw",function(a,b){"use strict";b(a)}),Q.reporter("v1",function(a,b){"use strict";b(S.splitResults(a,function(a,b,c){return c===Q.constants.result.FAIL&&(a.failureSummary=S.failureSummary(b)),a}))}),Q.reporter("v2",function(a,b){"use strict";function c(a){return{id:a.id,impact:a.impact,message:a.message,data:a.data,relatedNodes:a.relatedNodes.map(S.formatNode)}}b(S.splitResults(a,function(a,b){return a.any=b.any.map(c),a.all=b.all.map(c),a.none=b.none.map(c),a}))},!0),R.checkHelper=function(a,b){"use strict";return{isAsync:!1,async:function(){return this.isAsync=!0,function(c){a.value=c,b(a)}},data:function(b){a.data=b},relatedNodes:function(b){b=Array.isArray(b)?b:[b],a.relatedNodes=b.map(function(a){return new l(a)})}}},R.sendCommandToFrame=function(a,b,c){"use strict";var d=a.contentWindow;if(!d)return Q.log("Frame does not have a content window",a),c({});var e=setTimeout(function(){e=setTimeout(function(){Q.log("No response from frame: ",a),c(null)},0)},500);R.respondable(d,"axe.ping",null,function(){clearTimeout(e),e=setTimeout(function(){Q.log("Error returning results from frame: ",a),c({}),c=null},3e4),R.respondable(d,"axe.start",b,function(a){c&&(clearTimeout(e),c(a))})})},R.collectResultsFromFrames=function(a,b,c,d,e){"use strict";function f(e){var f={options:b,command:c,parameter:d,context:{initiator:!1,page:a.page,include:e.include||[],exclude:e.exclude||[]}};g.defer(function(a){var b=e.node;R.sendCommandToFrame(b,f,function(c){return c?a({results:c,frameElement:b,frame:R.getSelector(b)}):void a(null)})})}for(var g=R.queue(),h=a.frames,i=0,j=h.length;j>i;i++)f(h[i]);g.then(function(a){e(R.mergeResults(a))})},R.contains=function(a,b){"use strict";return"function"==typeof a.contains?a.contains(b):!!(16&a.compareDocumentPosition(b))},R.extendBlacklist=function(a,b,c){"use strict";c=c||[];for(var d in b)b.hasOwnProperty(d)&&-1===c.indexOf(d)&&(a[d]=b[d]);return a},R.extendMetaData=function(a,b){"use strict";for(var c in b)if(b.hasOwnProperty(c))if("function"==typeof b[c])try{a[c]=b[c](a)}catch(d){a[c]=null}else a[c]=b[c]},R.getFailingChecks=function(a){"use strict";var b=a.any.filter(function(a){return!a.result});return{all:a.all.filter(function(a){return!a.result}),any:b.length===a.any.length?b:[],none:a.none.filter(function(a){return!!a.result})}},R.finalizeRuleResult=function(a){"use strict";return R.publishMetaData(a),D(a)},R.findBy=function(a,b,c){"use strict";a=a||[];var d,e;for(d=0,e=a.length;e>d;d++)if(a[d][b]===c)return a[d]},R.getAllChecks=function(a){"use strict";var b=[];return b.concat(a.any||[]).concat(a.all||[]).concat(a.none||[])},R.getCheckOption=function(a,b,c){"use strict";var d=((c.rules&&c.rules[b]||{}).checks||{})[a.id],e=(c.checks||{})[a.id],f=a.enabled,g=a.options;return e&&(e.hasOwnProperty("enabled")&&(f=e.enabled),e.hasOwnProperty("options")&&(g=e.options)),d&&(d.hasOwnProperty("enabled")&&(f=d.enabled),d.hasOwnProperty("options")&&(g=d.options)),{enabled:f,options:g}},R.getSelector=function(a){"use strict";function b(a){return R.escapeSelector(a)}for(var c,d=[];a.parentNode;){if(c="",a.id&&1===document.querySelectorAll("#"+R.escapeSelector(a.id)).length){d.unshift("#"+R.escapeSelector(a.id));break}if(a.className&&"string"==typeof a.className&&(c="."+a.className.trim().split(/\s+/).map(b).join("."),("."===c||F(a,c))&&(c="")),!c){if(c=R.escapeSelector(a.nodeName).toLowerCase(),"html"===c||"body"===c){d.unshift(c);break}F(a,c)&&(c+=":nth-of-type("+E(a)+")")}d.unshift(c),a=a.parentNode}return d.join(" > ")},R.isHidden=function(a,b){"use strict";if(9===a.nodeType)return!1;var c=a.ownerDocument.defaultView.getComputedStyle(a,null);return c&&a.parentNode&&"none"!==c.getPropertyValue("display")&&(b||"hidden"!==c.getPropertyValue("visibility"))&&"true"!==a.getAttribute("aria-hidden")?R.isHidden(a.parentNode,!0):!0},R.mergeResults=function(a){"use strict";var b=[];return a.forEach(function(a){var c=I(a);c&&c.length&&c.forEach(function(c){c.nodes&&a.frame&&G(c.nodes,a.frameElement,a.frame);var d=R.findBy(b,"id",c.id);d?c.nodes.length&&H(d.nodes,c.nodes):b.push(c)})}),b},R.nodeSorter=function(a,b){"use strict";return a===b?0:4&a.compareDocumentPosition(b)?-1:1},R.publishMetaData=function(a){"use strict";function b(a){return function(b){var d=c[b.id]||{},e=d.messages||{},f=R.extendBlacklist({},d,["messages"]);f.message=b.result===a?e.pass:e.fail,R.extendMetaData(b,f)}}var c=Q._audit.data.checks||{},d=Q._audit.data.rules||{},e=R.findBy(Q._audit.rules,"id",a.id)||{};a.tags=R.clone(e.tags||[]);var f=b(!0),g=b(!1);a.nodes.forEach(function(a){a.any.forEach(f),a.all.forEach(f),a.none.forEach(g)}),R.extendMetaData(a,R.clone(d[a.id]||{}))},function(){"use strict";function a(){}function b(){function b(){for(var a=e.length;a>f;f++){var b=e[f],d=b.shift();b.push(c(f)),d.apply(null,b)}}function c(a){return function(b){e[a]=b,--g||d()}}function d(){h(e)}var e=[],f=0,g=0,h=a;return{defer:function(a){e.push([a]),++g,b()},then:function(a){h=a,g||d()},abort:function(b){h=a,b(e)}}}R.queue=b}(),function(a){"use strict";function b(a){return"object"==typeof a&&"string"==typeof a.uuid&&a._respondable===!0}function c(a,b,c,d,e){var f={uuid:d,topic:b,message:c,_respondable:!0};g[d]=e,a.postMessage(JSON.stringify(f),"*")}function d(a,b,d,e){var f=uuid.v1();c(a,b,d,f,e)}function e(a,b){var c=b.topic,d=b.message,e=h[c];e&&e(d,f(a.source,null,b.uuid))}function f(a,b,d){return function(e,f){c(a,b,e,d,f)}}var g={},h={};d.subscribe=function(a,b){h[a]=b},window.addEventListener("message",function(a){if("string"==typeof a.data){var c;try{c=JSON.parse(a.data)}catch(d){}if(b(c)){var h=c.uuid;g[h]&&(g[h](c.message,f(a.source,c.topic,h)),g[h]=null),e(a,c)}}},!1),a.respondable=d}(R),R.ruleShouldRun=function(a,b,c){"use strict";if(a.pageLevel&&!b.page)return!1;var d=c.runOnly,e=(c.rules||{})[a.id];return d?"rule"===d.type?-1!==d.values.indexOf(a.id):!!(d.values||[]).filter(function(b){return-1!==a.tags.indexOf(b)}).length:(e&&e.hasOwnProperty("enabled")?e.enabled:a.enabled)?!0:!1},R.select=function(a,b){"use strict";for(var c=[],d=0,e=b.include.length;e>d;d++)L(c,b.include[d].querySelectorAll(a),b);return c.sort(R.nodeSorter)},R.toArray=function(a){"use strict";return Array.prototype.slice.call(a)},/*! aXe Rules v1.0.2
13
+ * Copyright (c) 2015 Deque Systems, Inc.
14
+ *
15
+ * Your use of this Source Code Form is subject to the terms of the Mozilla Public
16
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
17
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
18
+ *
19
+ * This entire copyright notice must appear in every copy of this file you
20
+ * distribute or in any file that contains substantial portions of this source
21
+ * code.
22
+ */
23
+ Q._load({data:{rules:{accesskeys:{description:"Ensures that each element on the page with an accesskey attribute has a unique value",helpUrl:"https://dequeuniversity.com/courses/html-css/robust-compatibility/markup-validation",help:"accesskey attribute value must be unique"},"area-alt":{helpUrl:"https://dequeuniversity.com/courses/html-css/images/image-maps",help:"Active <area> elements need alternate text",description:"Checks the <area> elements of image maps to ensure that they have an alternative text"},"aria-allowed-attr":{helpUrl:"https://dequeuniversity.com/issues/aria-allowed-attr",help:"ARIA attributes not allowed for role assigned to this element",description:"Checks all attributes that start with 'aria-' to ensure that they are all official WAI-ARIA attributes"},"aria-required-attr":{description:"Checks all elements that contain WAI-ARIA roles to ensure that all required aria- attributes are present",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/special-input-attributes",help:"ARIA attribute not provided for element with given role"},"aria-required-children":{helpUrl:"https://dequeuniversity.com/issues/aria-required-children",description:"Checks all elements that contain a WAI-ARIA role to ensure that all required children roles are present",help:"Certain ARIA roles must contain particular children"},"aria-required-parent":{helpUrl:"https://dequeuniversity.com/issues/aria-required-parent",description:"Checks all elements that contain a WAI-ARIA role to ensure that all required parent roles are present",help:"Certain ARIA roles must be contained by particular parents"},"aria-roles":{description:"Checks all elements that contain the WAI-ARIA role attribute to ensure that the role value is valid",help:"ARIA roles used must conform to valid values",helpUrl:"https://dequeuniversity.com/issues/aria-roles"},"aria-valid-attr-value":{helpUrl:"https://dequeuniversity.com/issues/aria-valid-attr-value",description:"Checks all elements that contain WAI-ARIA atributes to ensure that the values of the attributes are valid",help:"ARIA attributes used must conform to valid values"},"aria-valid-attr":{helpUrl:"https://dequeuniversity.com/issues/aria-valid-attr",description:"Checks all elements that contain WAI-ARIA attributes to ensure that the attributes are valid attributes",help:"ARIA attributes used must conform to valid names"},"audio-caption":{helpUrl:"https://dequeuniversity.com/issues/audio-caption",description:"Checks the use of all <audio> element to ensure that the element contains a <caption> element",help:"HTML5 <audio> elements need a captions track"},blink:{description:"Checks to make sure that the <blink> tag is never used",helpUrl:"https://dequeuniversity.com/courses/html-css/visual-layout/fonts-and-typography#id55_avoid_blink_marquee",help:"The <blink> tag is deprecated and must not be used"},"button-name":{description:"Checks all <button> elements to ensure that they have a discernable accessible name",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels#id84_example_button",help:"<button> elements must have alternate text"},bypass:{description:"Ensures that each page has at least one mechanism for a keyboard-only user to bypass the navigation and jump straight to the content",helpUrl:"https://dequeuniversity.com/courses/html-css/navigation/",help:"Page must have means to bypass content"},checkboxgroup:{description:"Ensures that all checkbox groups have a group and that that group designation is consistent",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels#id84_labels_for_checkboxes",help:"Checkbox inputs with the same name must be part of a group"},"color-contrast":{description:"Checks all elements to ensure that the contrast between the foreground and the background meets the WCAG 2 AA contrast ratio thresholds.",help:"Elements must have sufficient color contrast",helpUrl:"https://dequeuniversity.com/courses/html-css/visual-layout/color-contrast"},"data-table":{description:"Checks that data tables are marked up semantically and have the correct header structure",helpUrl:"https://dequeuniversity.com/courses/html-css/data-tables/",help:"Data tables should be marked up properly"},"definition-list":{description:"Ensures that all <dl> elements are structured correctly",help:"<dl> elements must contain properly-ordered <dt> and <dd> elements",helpUrl:"https://dequeuniversity.com/issues/definition-list"},dlitem:{helpUrl:"https://dequeuniversity.com/issues/dlitem",description:"Ensures that all <dd> and <dt> elements have a <dl> as a parent",help:"<dd> and <dt> elements must be contained in a <dl>"},"document-title":{description:"Ensures that each HTML document contains a title",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/page-title",help:"Documents must have <title> element to aid in navigation"},"duplicate-id":{description:"Ensures that each element on the page with an ID attribute has a unique ID attribute value",helpUrl:"https://dequeuniversity.com/courses/html-css/robust-compatibility/markup-validation",help:"ID attribute value must be unique"},"empty-heading":{helpUrl:"https://dequeuniversity.com/issues/empty-heading",description:"Ensures that headings on the page do not contain empty text",help:"Headings should not be empty"},"frame-title":{description:"Ensure that all iframe and frame elements contain a unique and non-empty title attribute",helpUrl:"https://dequeuniversity.com/courses/html-css/frames/titles",help:"Frames must have unique title attribute"},"heading-order":{description:"Ensure that the order in which the headings appear in the DOM is semantically correct",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/headings#id37_use_headings_in_order",help:"Heading levels must only increase by one"},"html-lang":{description:"Ensures that every HTML document has a lang attribute and that it contains a valid value",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/language",help:"documentElement (<html>) must have a valid 'lang' attribute"},"image-alt":{description:"Ensures that every <img> element has alternative text or is marked as presentational",helpUrl:"https://dequeuniversity.com/courses/html-css/images/alt-text",help:"Images must have alternate text"},"input-image-alt":{description:"Ensures that every <input> that represents an image button has an accessible name",helpUrl:"https://dequeuniversity.com/courses/html-css/images/alt-text#id57_active_images_links_and_buttons",help:"Image buttons must have alternate text"},"label-title-only":{description:"Ensures that every <input> that requires a label is not only labeled using the title attribute",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels",help:"Only title or aria-describedby used to generate label for form element"},label:{description:"Ensures that every input element that requires a label, has an appropriate label",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels",help:"Form elements must have labels"},"layout-table":{description:"Ensures that <table> elements that are being used for layout do not contain markup only relevant for data tables",help:"Layout tables must not use data table elements",helpUrl:"https://dequeuniversity.com/courses/html-css/data-tables/"},"link-name":{description:"Ensures that every link has an accessible name",helpUrl:"https://dequeuniversity.com/courses/html-css/navigation/links",help:"Links must have alternate text"},list:{description:"Ensures that lists are structured correctly",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/lists-links-blockquote#id38_lists",help:"<ul> and <ol> lists must contain only <li> listitems"},listitem:{description:"Ensures that every list item is used semantically",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/lists-links-blockquote#id38_lists",help:"All <li> elements must be contained in a <ul> or <ol>"},marquee:{description:"Ensures that the deprecated <marquee> tag is not used",helpUrl:"https://dequeuniversity.com/courses/html-css/visual-layout/fonts-and-typography#id55_avoid_blink_marquee",help:"<marquee> elements are deprecated and must not be used"},"meta-refresh":{description:"Ensures that <meta> refresh is not used",help:"Timed refresh must not exist"},"meta-viewport":{description:"Ensures that when <meta> viewport is used, it does not cause text scaling problems",helpUrl:"https://dequeuniversity.com/courses/html-css/visual-layout/fonts-and-typography#id55_ensure_text_resize_to_200_percent",help:"Zooming and scaling must not disabled"},"object-alt":{description:"Ensures that every <object> element has a text alternative",help:"An embedded object must have a text alternative",helpUrl:"https://dequeuniversity.com/issues/object-alt"},radiogroup:{description:"Ensures that radio button groups are part of a group structure",helpUrl:"https://dequeuniversity.com/courses/html-css/forms/form-labels#id84_labels_for_radio_buttons",help:"Radio inputs with the same name must be part of a group"},region:{description:"Ensures that all content on a page is contained within a landmark region",help:"Content must be contained in a region",helpUrl:"https://dequeuniversity.com/courses/html-css/navigation/html5-aria-landmarks"},scope:{description:"Ensures that the scope attribute is used correctly on tables",helpUrl:"https://dequeuniversity.com/courses/html-css/data-tables/row-and-column-headers#id81_associate_header_cells_with_data_cells",help:"scope attribute is used correctly"},"server-side-image-map":{description:"Ensures that server-side image maps are never used",helpUrl:"https://dequeuniversity.com/courses/html-css/images/image-maps#id63_avoid_use_of_server_side_image_maps",help:"Server-side image maps should not be used"},"skip-link":{description:"Ensures that the best practice of having a skip link as the very first link in a page, is adhered-to",helpUrl:"https://dequeuniversity.com/courses/html-css/navigation/skip-navigation",help:"The page must have a skip link as its first link"},tabindex:{description:"Ensures that explicit tabindex attributes that are greater than 0 are never used",helpUrl:"https://dequeuniversity.com/courses/html-css/device-independence/keyboard-tab-order",help:"Elements must not have tabindex greater than zero"},"valid-lang":{description:"Ensures that when the 'lang' attribute is used, it has a valid value",helpUrl:"https://dequeuniversity.com/courses/html-css/structure-and-semantics/language#id35__language_codes",help:"lang attribute must have a valid value"},"video-caption":{description:"Ensures that the HTML5 <video> tag is captioned",helpUrl:"https://dequeuniversity.com/courses/html-css/video-audio-multimedia/",help:"HTML5 video elements need captions"},"video-description":{description:"Ensures that every <video> tag has an audio description",helpUrl:"https://dequeuniversity.com/courses/html-css/video-audio-multimedia/",help:"HTML5 video elements need an audio description track"}},checks:{accesskeys:{impact:"critical",messages:{pass:function(a){var b="Accesskey attribute value is unique";return b},fail:function(a){var b="Document has multiple elements with the same accesskey";return b}}},"non-empty-alt":{impact:"critical",messages:{pass:function(a){var b="Element has a non-empty alt attribute";return b},fail:function(a){var b="Element has no alt attribute or the alt attribute is empty";return b}}},"aria-label":{impact:"critical",messages:{pass:function(a){var b="aria-label attribute exists and is not empty";return b},fail:function(a){var b="aria-label attribute does not exist or is empty";return b}}},"aria-labelledby":{impact:"critical",messages:{pass:function(a){var b="aria-labelledby attribute exists and references elements that are visible to screen readers";return b},fail:function(a){var b="aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty or not visible";return b}}},"aria-allowed-attr":{impact:"critical",messages:{pass:function(a){var b="ARIA attributes are used correctly for the defined role";return b},fail:function(a){var b="ARIA attribute"+(a.data&&a.data.length>1?"s are":" is")+" not allowed:",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},"aria-required-attr":{impact:"critical",messages:{pass:function(a){var b="All required ARIA attributes are present";return b},fail:function(a){var b="Required ARIA attribute"+(a.data&&a.data.length>1?"s":"")+" not present:",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},"aria-required-children":{impact:"critical",messages:{pass:function(a){var b="Required ARIA children are present";return b},fail:function(a){var b="Required ARIA "+(a.data&&a.data.length>1?"children":"child")+" role not present:",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},"aria-required-parent":{impact:"critical",messages:{pass:function(a){var b="Required ARIA parent role present";return b},fail:function(a){var b="Required ARIA parent"+(a.data&&a.data.length>1?"s":"")+" role not present:",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},invalidrole:{impact:"critical",messages:{pass:function(a){var b="ARIA role is valid";return b},fail:function(a){var b="Role must be one of the valid ARIA roles";return b}}},abstractrole:{impact:"serious",messages:{pass:function(a){var b="Abstract roles are not used";return b},fail:function(a){var b="Abstract roles cannot be directly used";return b}}},"aria-valid-attr-value":{impact:"critical",messages:{pass:function(a){var b="ARIA attribute values are valid";return b},fail:function(a){var b="Invalid ARIA attribute value"+(a.data&&a.data.length>1?"s":"")+":",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},"aria-valid-attr":{impact:"critical",messages:{pass:function(a){var b="ARIA attribute name"+(a.data&&a.data.length>1?"s":"")+" are valid";return b},fail:function(a){var b="Invalid ARIA attribute name"+(a.data&&a.data.length>1?"s":"")+":",c=a.data;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+=" "+d;return b}}},caption:{impact:"critical",messages:{pass:function(a){var b="The multimedia element has a captions track";return b},fail:function(a){var b="The multimedia element does not have a captions track";return b}}},exists:{impact:"minor",messages:{pass:function(a){var b="Element does not exist";return b},fail:function(a){var b="Element exists";return b}}},"non-empty-if-present":{impact:"critical",messages:{pass:function(a){var b="Element ";return b+=a.data?"has a non-empty value attribute":"does not have a value attribute"},fail:function(a){var b="Element has a value attribute and the value attribute is empty";return b}}},"non-empty-value":{impact:"critical",messages:{pass:function(a){var b="Element has a non-empty value attribute";return b},fail:function(a){var b="Element has no value attribute or the value attribute is empty";return b}}},"button-has-visible-text":{impact:"critical",messages:{pass:function(a){var b="Element has inner text that is visible to screen readers";return b},fail:function(a){var b="Element does not have inner text that is visible to screen readers";return b}}},"role-presentation":{impact:"moderate",messages:{pass:function(a){var b='Element\'s default semantics were overriden with role="presentation"';return b},fail:function(a){var b='Element\'s default semantics were not overridden with role="presentation"';return b}}},"duplicate-img-label":{impact:"minor",messages:{pass:function(a){var b="Element does not duplicate existing text in <img> alt text";return b},fail:function(a){var b="Element contains <img> element with alt text that duplicates existing text";return b}}},"focusable-no-name":{impact:"serious",messages:{pass:function(a){var b="Element is not in tab order or has accessible text";return b},fail:function(a){var b="Element is in tab order and does not have accessible text";return b}}},"internal-link-present":{impact:"critical",messages:{pass:function(a){var b="Valid skip link found";return b},fail:function(a){var b="No valid skip link found";return b}}},"header-present":{impact:"moderate",messages:{pass:function(a){var b="Page has a header";return b},fail:function(a){var b="Page does not have a header";return b}}},landmark:{impact:"serious",messages:{pass:function(a){var b="Page has a landmark region";return b},fail:function(a){var b="Page does not have a landmark region";return b}}},"group-labelledby":{impact:"critical",messages:{pass:function(a){var b='All elements with the name "'+a.data.name+'" reference the same element with aria-labelledby';return b},fail:function(a){var b='All elements with the name "'+a.data.name+'" do not reference the same element with aria-labelledby';return b}}},fieldset:{impact:"critical",messages:{pass:function(a){var b="Element is contained in a fieldset";return b},fail:function(a){var b="";return a.data&&a.data.failureCode?"no-legend"===a.data.failureCode?b+="Fieldset does not have a legend as its first child":"empty-legend"===a.data.failureCode?b+="Legend does not have text that is visible to screen readers":"mixed-inputs"===a.data.failureCode?b+="Fieldset contains unrelated inputs":"no-group-label"===a.data.failureCode?b+="ARIA group does not have aria-label or aria-labelledby":"group-mixed-inputs"===a.data.failureCode&&(b+="ARIA group contains unrelated inputs"):b+="Element does not have a containing fieldset or ARIA group",b}}},"color-contrast":{impact:"critical",messages:{pass:function(a){var b="";return b+=a.data&&a.data.contrastRatio?"Element has sufficient color contrast of "+a.data.contrastRatio:"Unable to determine contrast ratio"},fail:function(a){var b="Element has insufficient color contrast of "+a.data.contrastRatio+" (foreground color: "+a.data.fgColor+", background color: "+a.data.bgColor+", font size: "+a.data.fontSize+", font weight: "+a.data.fontWeight+")";return b}}},"consistent-columns":{impact:"critical",messages:{pass:function(a){var b="Table has consistent column widths";return b},fail:function(a){var b="Table does not have the same number of columns in every row";return b}}},"cell-no-header":{impact:"critical",messages:{pass:function(a){var b="All data cells have table headers";return b},fail:function(a){var b="Some data cells do not have table headers";return b}}},"headers-visible-text":{impact:"critical",messages:{pass:function(a){var b="Header cell has visible text";return b},fail:function(a){var b="Header cell does not have visible text";return b}}},"headers-attr-reference":{impact:"critical",messages:{pass:function(a){var b="headers attribute references elements that are visible to screen readers";return b},fail:function(a){var b="headers attribute references element that is not visible to screen readers";return b}}},"th-scope":{impact:"serious",messages:{pass:function(a){var b="<th> elements use scope attribute";return b},fail:function(a){var b="<th> elements must use scope attribute";return b}}},"no-caption":{impact:"serious",messages:{pass:function(a){var b="Table has a <caption>";return b},fail:function(a){var b="Table does not have a <caption>";return b}}},"th-headers-attr":{impact:"serious",messages:{pass:function(a){var b="<th> elements do not use headers attribute";return b},fail:function(a){var b="<th> elements should not use headers attribute";return b}}},"th-single-row-column":{impact:"serious",messages:{pass:function(a){var b="<th> elements are used when there is only a single row and single column of headers";return b},fail:function(a){var b="<th> elements should only be used when there is a single row and single column of headers";return b}}},"same-caption-summary":{impact:"moderate",messages:{pass:function(a){var b="Content of summary attribute and <caption> are not duplicated";return b},fail:function(a){var b="Content of summary attribute and <caption> element are indentical";return b}}},rowspan:{impact:"critical",messages:{pass:function(a){var b="Table does not have cells with rowspan attribute greater than 1";return b},fail:function(a){var b="Table has cells whose rowspan attribute is not equal to 1";return b}}},"has-dlitems":{impact:"serious",messages:{pass:function(a){var b="Element has both <dt> and <dd> elements";return b},fail:function(a){var b="Element does not have at least one <dt> element followed by at least one <dd> element";return b}}},"only-dlitems":{impact:"serious",messages:{pass:function(a){var b="Element only has children that are <dt> or <dd> elements";return b},fail:function(a){var b="Element has children that are not <dt> or <dd> elements";return b}}},dlitem:{impact:"serious",messages:{pass:function(a){var b="Description list item has a <dl> parent element";return b},fail:function(a){var b="Description list item does not have a <dl> parent element";return b}}},"doc-has-title":{impact:"moderate",messages:{pass:function(a){var b="Document has a non-empty <title> element";return b},fail:function(a){var b="Document does not have a non-empty <title> element";return b}}},"duplicate-id":{impact:"critical",messages:{pass:function(a){var b="Document has no elements that share the same id attribute";return b},fail:function(a){var b="Document has multiple elements with the same id attribute";return b}}},"has-visible-text":{impact:"critical",messages:{pass:function(a){var b="Element has text that is visible to screen readers";return b},fail:function(a){var b="Element does not have text that is visible to screen readers";return b}}},"non-empty-title":{impact:"critical",messages:{pass:function(a){var b="Element has a title attribute";return b},fail:function(a){var b="Element has no title attribute or the title attribute is empty";return b}}},"unique-frame-title":{impact:"serious",messages:{pass:function(a){var b="Element's title attribute is unique";return b},fail:function(a){var b="Element's title attribute is not unique";return b}}},"heading-order":{impact:"minor",messages:{pass:function(a){var b="Heading order valid";return b},fail:function(a){var b="Heading order invalid";return b}}},"has-lang":{impact:"serious",messages:{pass:function(a){var b="The <html> element has a lang attribute";return b},fail:function(a){var b="The <html> element does not have a lang attribute";return b}}},"valid-lang":{impact:"serious",messages:{pass:function(a){var b="Value of lang attribute is included in the list of allowable languages";return b},fail:function(a){var b="Value of lang attribute not included in the list of allowable languages";return b}}},"has-alt":{impact:"critical",messages:{pass:function(a){var b="Element has an alt attribute";return b},fail:function(a){var b="Element does not have an alt attribute";return b}}},"title-only":{impact:"serious",messages:{pass:function(a){var b="Form element does not solely use title attribute for its label";return b},fail:function(a){var b="Only title used to generate label for form element";return b}}},"implicit-label":{impact:"critical",messages:{pass:function(a){var b="Form element has an implicit (wrapped) <label>";return b},fail:function(a){var b="Form element does not have an implicit (wrapped) <label>";return b}}},"explicit-label":{impact:"critical",messages:{pass:function(a){var b="Form element has an explicit <label>";return b},fail:function(a){var b="Form element does not have an explicit <label>";return b}}},"help-same-as-label":{impact:"minor",messages:{pass:function(a){var b="Help text (title or aria-describedby) does not duplicate label text";return b},fail:function(a){var b="Help text (title or aria-describedby) text is the same as the label text";return b}}},"multiple-label":{impact:"serious",messages:{pass:function(a){var b="Form element does not have multiple <label> elements";return b},fail:function(a){var b="Form element has multiple <label> elements";return b}}},"has-th":{impact:"serious",messages:{pass:function(a){var b="Layout table does not use <th> elements";return b},fail:function(a){var b="Layout table uses <th> elements";return b}}},"has-caption":{impact:"serious",messages:{pass:function(a){var b="Layout table does not use <caption> element";return b},fail:function(a){var b="Layout table uses <caption> element";return b}}},"has-summary":{impact:"serious",messages:{pass:function(a){var b="Layout table does not use summary attribute";return b},fail:function(a){var b="Layout table uses summary attribute";return b}}},"has-listitem":{impact:"minor",messages:{pass:function(a){var b="List element contains a <li> element";return b},fail:function(a){var b="List element does not contain a <li> element";return b}}},"only-listitems":{impact:"serious",messages:{pass:function(a){var b="List element only has children that are <li> elements";return b},fail:function(a){var b="List element has children that are not <li> elements";return b}}},listitem:{impact:"critical",messages:{pass:function(a){var b="List item has a <ul> or <ol> parent element";return b},fail:function(a){var b="List item does not have a <ul> or <ol> parent element";return b}}},"meta-refresh":{impact:"critical",messages:{pass:function(a){var b="<meta> tag does not immediately refresh the page";return b},fail:function(a){var b="<meta> tag forces timed refresh of page";return b}}},"meta-viewport":{impact:"critical",messages:{pass:function(a){var b="<meta> tag does not disable zooming";return b},fail:function(a){var b="<meta> tag disables zooming";return b}}},region:{impact:"moderate",messages:{pass:function(a){var b="Content contained by ARIA landmark";return b},fail:function(a){var b="Content not contained by an ARIA landmark";return b}}},"html5-scope":{impact:"serious",messages:{pass:function(a){var b="Scope attribute is only used on table header elements (<th>)";return b},fail:function(a){var b="In HTML 5, scope attributes may only be used on table header elements (<th>)";return b}}},"html4-scope":{impact:"serious",messages:{pass:function(a){var b="Scope attribute is only used on table cell elements (<th> and <td>)";return b},fail:function(a){var b="In HTML 4, the scope attribute may only be used on table cell elements (<th> and <td>)";return b}}},"scope-value":{impact:"critical",messages:{pass:function(a){var b="Scope attribute is used correctly";return b},fail:function(a){var b="The value of the scope attribute may only be 'row' or 'col'";return b}}},"skip-link":{impact:"critical",messages:{pass:function(a){var b="Valid skip link found";return b},fail:function(a){var b="No valid skip link found";return b}}},tabindex:{impact:"serious",messages:{pass:function(a){var b="Element does not have a tabindex greater than 0";return b},fail:function(a){var b="Element has a tabindex greater than 0";return b}}},description:{impact:"serious",messages:{pass:function(a){var b="The multimedia element has an audio description track";return b},fail:function(a){var b="The multimedia element does not have an audio description track";return b}}}},failureSummaries:{any:{failureMessage:function(a){var b="Fix any of the following:",c=a;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+="\n "+d.split("\n").join("\n ");return b}},none:{failureMessage:function(a){var b="Fix all of the following:",c=a;if(c)for(var d,e=-1,f=c.length-1;f>e;)d=c[e+=1],b+="\n "+d.split("\n").join("\n ");return b}}}},rules:[{id:"accesskeys",selector:"[accesskey]",tags:["wcag2a","wcag211"],all:[],any:[],none:[{id:"accesskeys",evaluate:function(a,b){return this.data(a.getAttribute("accesskey")),this.relatedNodes([a]),!0},after:function(a,b){var c={};return a.filter(function(a){return c[a.data]?(c[a.data].relatedNodes.push(a.relatedNodes[0]),!1):(c[a.data]=a,a.relatedNodes=[],!0)}).map(function(a){return a.result=!!a.relatedNodes.length,a})}}]},{id:"area-alt",selector:"map area[href]",excludeHidden:!1,tags:["wcag2a","wcag111","section508","section508a"],all:[],any:[{id:"non-empty-alt",evaluate:function(a,b){var c=a.getAttribute("alt");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}}],none:[]},{id:"aria-allowed-attr",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-allowed-attr",matches:function(a){var b=a.getAttribute("role");b||(b=O.aria.implicitRole(a));var c=O.aria.allowedAttr(b);if(b&&c){var d=/^aria-/;if(a.hasAttributes())for(var e=a.attributes,f=0,g=e.length;g>f;f++)if(d.test(e[f].nodeName))return!0}return!1},evaluate:function(a,b){var c,d,e,f=[],g=a.getAttribute("role"),h=a.attributes;if(g||(g=O.aria.implicitRole(a)),e=O.aria.allowedAttr(g),g&&e)for(var i=0,j=h.length;j>i;i++)c=h[i],d=c.nodeName,O.aria.validateAttr(d)&&-1===e.indexOf(d)&&f.push(d+'="'+c.nodeValue+'"');return f.length?(this.data(f),!1):!0}}],none:[]},{id:"aria-required-attr",selector:"[role]",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-required-attr",evaluate:function(a,b){var c=[];if(a.hasAttributes()){var d,e=a.getAttribute("role"),f=O.aria.requiredAttr(e);if(e&&f)for(var g=0,h=f.length;h>g;g++)d=f[g],a.getAttribute(d)||c.push(d)}return c.length?(this.data(c),!1):!0}}],none:[]},{id:"aria-required-children",selector:"[role]",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-required-children",evaluate:function(a,b){function c(a,b,c){if(null===a)return!1;var d=g(b),e=['[role="'+b+'"]'];return d&&(e=e.concat(d)),e=e.join(","),c?h(a,e)||!!a.querySelector(e):!!a.querySelector(e)}function d(a,b){var d,e;for(d=0,e=a.length;e>d;d++)if(null!==a[d]&&c(a[d],b,!0))return!0;return!1}function e(a,b,e){var f,g=b.length,h=[],j=i(a,"aria-owns");for(f=0;g>f;f++){var k=b[f];if(c(a,k)||d(j,k)){if(!e)return null}else e&&h.push(k)}return h.length?h:!e&&b.length?b:null}var f=O.aria.requiredOwned,g=O.aria.implicitNodes,h=O.utils.matchesSelector,i=O.dom.idrefs,j=a.getAttribute("role"),k=f(j);if(!k)return!0;var l=!1,m=k.one;if(!m){var l=!0;m=k.all}var n=e(a,m,l);return n?(this.data(n),!1):!0}}],none:[]},{id:"aria-required-parent",selector:"[role]",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-required-parent",evaluate:function(a,b){function c(a){var b=O.aria.implicitNodes(a)||[];return b.concat('[role="'+a+'"]').join(",")}function d(a,b,d){var e,f,g=a.getAttribute("role"),h=[];if(b||(b=O.aria.requiredContext(g)),!b)return null;for(e=0,f=b.length;f>e;e++){if(d&&O.utils.matchesSelector(a,c(b[e])))return null;if(O.dom.findUp(a,c(b[e])))return null;h.push(b[e])}return h}function e(a){for(var b=[],c=null;a;)a.id&&(c=a.ownerDocument.querySelector("[aria-owns~="+O.utils.escapeSelector(a.id)+"]"),c&&b.push(c)),a=a.parentNode;return b.length?b:null}var f=d(a);if(!f)return!0;var g=e(a);if(g)for(var h=0,i=g.length;i>h;h++)if(f=d(g[h],f,!0),!f)return!0;return this.data(f),!1}}],none:[]},{id:"aria-roles",selector:"[role]",tags:["wcag2a","wcag411"],all:[],any:[],none:[{id:"invalidrole",evaluate:function(a,b){return!O.aria.isValidRole(a.getAttribute("role"))}},{id:"abstractrole",evaluate:function(a,b){return"abstract"===O.aria.getRoleType(a.getAttribute("role"))}}]},{id:"aria-valid-attr-value",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-valid-attr-value",matches:function(a){var b=/^aria-/;if(a.hasAttributes())for(var c=a.attributes,d=0,e=c.length;e>d;d++)if(b.test(c[d].nodeName))return!0;return!1},evaluate:function(a,b){b=Array.isArray(b)?b:[];for(var c,d,e=[],f=/^aria-/,g=a.attributes,h=0,i=g.length;i>h;h++)c=g[h],d=c.nodeName,-1===b.indexOf(d)&&f.test(d)&&!O.aria.validateAttrValue(a,d)&&e.push(d+'="'+c.nodeValue+'"');return e.length?(this.data(e),!1):!0},options:[]}],none:[]},{id:"aria-valid-attr",tags:["wcag2a","wcag411"],all:[],any:[{id:"aria-valid-attr",matches:function(a){var b=/^aria-/;if(a.hasAttributes())for(var c=a.attributes,d=0,e=c.length;e>d;d++)if(b.test(c[d].nodeName))return!0;return!1},evaluate:function(a,b){
24
+ b=Array.isArray(b)?b:[];for(var c,d=[],e=/^aria-/,f=a.attributes,g=0,h=f.length;h>g;g++)c=f[g].nodeName,-1===b.indexOf(c)&&e.test(c)&&!O.aria.validateAttr(c)&&d.push(c);return d.length?(this.data(d),!1):!0},options:[]}],none:[]},{id:"audio-caption",selector:"audio",excludeHidden:!1,tags:["wcag2a","wcag122","section508","section508a"],all:[],any:[],none:[{id:"caption",evaluate:function(a,b){return!a.querySelector("track[kind=captions]")}}]},{id:"blink",selector:"blink",tags:["wcag2a","wcag411"],all:[],any:[],none:[{id:"exists",evaluate:function(a,b){return!0}}]},{id:"button-name",selector:'button, [role="button"], input[type="button"], input[type="submit"], input[type="reset"]',tags:["wcag2a","wcag111","section508","section508a"],all:[],any:[{id:"non-empty-if-present",evaluate:function(a,b){var c=a.getAttribute("value");return this.data(c),null===c||""!==O.text.sanitize(c).trim()},selector:'[type="submit"], [type="reset"]'},{id:"non-empty-value",evaluate:function(a,b){var c=a.getAttribute("value");return!!(c?O.text.sanitize(c).trim():"")},selector:'[type="button"]'},{id:"button-has-visible-text",evaluate:function(a,b){return O.text.accessibleText(a).length>0},selector:'button, [role="button"]:not(input)'},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}},{id:"role-presentation",evaluate:function(a,b){return"presentation"===a.getAttribute("role")}}],none:[{id:"duplicate-img-label",evaluate:function(a,b){for(var c=a.querySelectorAll("img"),d=O.text.visible(a,!0),e=0,f=c.length;f>e;e++){var g=O.text.accessibleText(c[e]);if(g===d&&""!==d)return!0}return!1},enabled:!1},{id:"focusable-no-name",evaluate:function(a,b){var c=a.getAttribute("tabindex"),d=O.dom.isFocusable(a)&&c>-1;return d?!O.text.accessibleText(a):!1}}]},{id:"bypass",selector:"html",pageLevel:!0,matches:function(a){return!!a.querySelector("a[href]")},tags:["wcag2a","wcag241","section508","section508o"],all:[],any:[{id:"internal-link-present",selector:"html",evaluate:function(a,b){return!!a.querySelector('a[href^="#"]')}},{id:"header-present",selector:"html",evaluate:function(a,b){return!!a.querySelector('h1, h2, h3, h4, h5, h6, [role="heading"]')}},{id:"landmark",selector:"html",evaluate:function(a,b){return!!a.querySelector('[role="main"]')}}],none:[]},{id:"checkboxgroup",selector:"input[type=checkbox][name]",tags:["wcag2a","wcag131"],all:[],any:[{id:"group-labelledby",evaluate:function(a,b){this.data({name:a.getAttribute("name"),type:a.getAttribute("type")});var c=a.ownerDocument.querySelectorAll('input[type="'+O.utils.escapeSelector(a.type)+'"][name="'+O.utils.escapeSelector(a.name)+'"]');return c.length<=1?!0:0!==[].map.call(c,function(a){var b=a.getAttribute("aria-labelledby");return b?b.split(/\s+/):[]}).reduce(function(a,b){return a.filter(function(a){return-1!==b.indexOf(a)})}).filter(function(b){var c=a.ownerDocument.getElementById(b);return c&&O.text.accessibleText(c)}).length},after:function(a,b){var c={};return a.filter(function(a){var b=a.data;return b&&(c[b.type]=c[b.type]||{},!c[b.type][b.name])?(c[b.type][b.name]=!0,!0):!1})}},{id:"fieldset",evaluate:function(a,b){function c(a,b){return O.utils.toArray(a.querySelectorAll('select,textarea,button,input:not([name="'+b+'"]):not([type="hidden"])'))}function d(a,b){var d=a.firstElementChild;if(!d||"LEGEND"!==d.nodeName)return i.relatedNodes([a]),h="no-legend",!1;if(!O.text.accessibleText(d))return i.relatedNodes([d]),h="empty-legend",!1;var e=c(a,b);return e.length?(i.relatedNodes(e),h="mixed-inputs",!1):!0}function e(a,b){var d=O.dom.idrefs(a,"aria-labelledby").some(function(a){return a&&O.text.accessibleText(a)}),e=a.getAttribute("aria-label");if(!(d||e&&O.text.sanitize(e)))return i.relatedNodes(a),h="no-group-label",!1;var f=c(a,b);return f.length?(i.relatedNodes(f),h="group-mixed-inputs",!1):!0}function f(a,b){return O.utils.toArray(a).filter(function(a){return a!==b})}function g(b){var c=O.utils.escapeSelector(a.name),g=a.ownerDocument.querySelectorAll('input[type="'+O.utils.escapeSelector(a.type)+'"][name="'+c+'"]');if(g.length<2)return!0;var j=O.dom.findUp(b,"fieldset"),k=O.dom.findUp(b,'[role="group"]'+("radio"===a.type?',[role="radiogroup"]':""));return k||j?j?d(j,c):e(k,c):(h="no-group",i.relatedNodes(f(g,b)),!1)}var h,i=this,j={name:a.getAttribute("name"),type:a.getAttribute("type")},k=g(a);return k||(j.failureCode=h),this.data(j),k},after:function(a,b){var c={};return a.filter(function(a){if(a.result)return!0;var b=a.data;if(b){if(c[b.type]=c[b.type]||{},!c[b.type][b.name])return c[b.type][b.name]=[b],!0;var d=c[b.type][b.name].some(function(a){return a.failureCode===b.failureCode});return d||c[b.type][b.name].push(b),!d}return!1})}}],none:[]},{id:"color-contrast",selector:"*",tags:["wcag2aa","wcag143"],all:[],any:[{id:"color-contrast",matches:function(a){var b=a.nodeName,c=a.type;if("INPUT"===b)return-1===["hidden","range","color","checkbox","radio","image"].indexOf(c)&&!a.disabled;if("SELECT"===b)return!!a.options.length&&!a.disabled;if("TEXTAREA"===b)return!a.disabled;if("OPTION"===b)return!1;if("BUTTON"===b&&a.disabled)return!1;if(""===O.text.visible(a,!1,!0))return!1;var d,e,f=a.ownerDocument.createRange(),g=a.childNodes,h=g.length;for(e=0;h>e;e++)d=g[e],3===d.nodeType&&""!==O.text.sanitize(d.nodeValue)&&f.selectNodeContents(d);var i=f.getClientRects();for(h=i.length,e=0;h>e;e++)if(O.dom.visuallyOverlaps(i[e],a))return!0;return!1},evaluate:function(a,b){var c=[],d=O.color.getBackgroundColor(a,c),e=O.color.getForegroundColor(a);if(null===e||null===d)return!0;var f=a.ownerDocument.defaultView,g=f.getComputedStyle(a),h=parseFloat(g.getPropertyValue("font-size")),i=g.getPropertyValue("font-weight"),j=-1!==["bold","bolder","600","700","800","900"].indexOf(i),k=O.color.hasValidContrastRatio(d,e,h,j);return this.data({fgColor:e.toHexString(),bgColor:d.toHexString(),contrastRatio:k.contrastRatio.toFixed(2),fontSize:(72*h/96).toFixed(1)+"pt",fontWeight:j?"bold":"normal"}),k.isValid||this.relatedNodes(c),k.isValid}}],none:[]},{id:"data-table",selector:"table",matches:function(a){return O.table.isDataTable(a)},tags:["wcag2a","wcag131"],all:[],any:[{id:"consistent-columns",evaluate:function(a,b){for(var c,d=O.table.toArray(a),e=[],f=0,g=d.length;g>f;f++)0===f?c=d[f].length:c!==d[f].length&&e.push(a.rows[f]);return!e.length}}],none:[{id:"cell-no-header",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],!O.table.isDataCell(d)||O.aria.label(d)||O.table.getHeaders(d).length||e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"headers-visible-text",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],O.table.isHeader(d)&&!O.text.accessibleText(d)&&e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"headers-attr-reference",evaluate:function(a,b){function c(a){a&&O.text.accessibleText(a)||g.push(e)}for(var d,e,f,g=[],h=0,i=a.rows.length;i>h;h++){d=a.rows[h];for(var j=0,k=d.cells.length;k>j;j++)e=d.cells[j],f=O.dom.idrefs(e,"headers"),f.length&&f.forEach(c)}return g.length?(this.relatedNodes(g),!0):!1}},{id:"th-scope",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],"TH"!==d.nodeName||d.getAttribute("scope")||e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"no-caption",evaluate:function(a,b){return!(a.caption||{}).textContent},enabled:!1},{id:"th-headers-attr",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],"TH"===d.nodeName&&d.getAttribute("headers")&&e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"th-single-row-column",evaluate:function(a,b){for(var c,d,e,f=[],g=[],h=0,i=a.rows.length;i>h;h++){c=a.rows[h];for(var j=0,k=c.cells.length;k>j;j++)d=c.cells[j],d.nodeName&&(O.table.isColumnHeader(d)&&-1===g.indexOf(h)?g.push(h):O.table.isRowHeader(d)&&(e=O.table.getCellPosition(d),-1===f.indexOf(e.x)&&f.push(e.x)))}return g.length>1||f.length>1?!0:!1}},{id:"same-caption-summary",selector:"table",evaluate:function(a,b){return!(!a.summary||!a.caption)&&a.summary===O.text.accessibleText(a.caption)}},{id:"rowspan",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],1!==d.rowSpan&&e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}}]},{id:"definition-list",selector:"dl",tags:["wcag2a","wcag131"],all:[],any:[],none:[{id:"has-dlitems",evaluate:function(a,b){var c=a.children;if(0===c.length)return!0;for(var d=!1,e=0;e<c.length;e++)if("DT"===c[e].nodeName&&(d=!0),d&&"DD"===c[e].nodeName)return!1;return!0}},{id:"only-dlitems",evaluate:function(a,b){for(var c,d=[],e=a.childNodes,f=!1,g=0;g<e.length;g++)c=e[g],1===c.nodeType&&"DT"!==c.nodeName&&"DD"!==c.nodeName?d.push(c):3===c.nodeType&&""!==c.nodeValue.trim()&&(f=!0);return d.length&&this.relatedNodes(d),!!d.length||f}}]},{id:"dlitem",selector:"dd, dt",tags:["wcag2a","wcag131"],all:[],any:[{id:"dlitem",evaluate:function(a,b){return"DL"===a.parentNode.tagName}}],none:[]},{id:"document-title",selector:"html",tags:["wcag2a","wcag242"],all:[],any:[{id:"doc-has-title",evaluate:function(a,b){var c=a.ownerDocument.title;return!!(c?O.text.sanitize(c).trim():"")}}],none:[]},{id:"duplicate-id",selector:"[id]",tags:["wcag2a","wcag411"],all:[],any:[{id:"duplicate-id",evaluate:function(a,b){for(var c=a.ownerDocument.querySelectorAll('[id="'+O.utils.escapeSelector(a.id)+'"]'),d=[],e=0;e<c.length;e++)c[e]!==a&&d.push(c[e]);return d.length&&this.relatedNodes(d),this.data(a.getAttribute("id")),c.length<=1},after:function(a,b){var c=[];return a.filter(function(a){return-1===c.indexOf(a.data)?(c.push(a.data),!0):!1})}}],none:[]},{id:"empty-heading",selector:'h1, h2, h3, h4, h5, h6, [role="heading"]',tags:["wcag2a","wcag131"],all:[],any:[{id:"has-visible-text",evaluate:function(a,b){return O.text.accessibleText(a).length>0}}],none:[]},{id:"frame-title",selector:"frame, iframe",tags:["wcag2a","wcag241"],all:[],any:[{id:"non-empty-title",evaluate:function(a,b){var c=a.getAttribute("title");return!!(c?O.text.sanitize(c).trim():"")}}],none:[{id:"unique-frame-title",evaluate:function(a,b){return this.data(a.title),!0},after:function(a,b){var c={};return a.forEach(function(a){c[a.data]=void 0!==c[a.data]?++c[a.data]:0}),a.filter(function(a){return!!c[a.data]})}}]},{id:"heading-order",selector:"h1,h2,h3,h4,h5,h6,[role=heading]",enabled:!1,tags:["best-practice"],all:[],any:[{id:"heading-order",evaluate:function(a,b){var c=a.getAttribute("aria-level");if(null!==c)return this.data(parseInt(c,10)),!0;var d=a.tagName.match(/H(\d)/);return d?(this.data(parseInt(d[1],10)),!0):!0},after:function(a,b){if(a.length<2)return a;for(var c=a[0].data,d=1;d<a.length;d++)a[d].result&&a[d].data>c+1&&(a[d].result=!1),c=a[d].data;return a}}],none:[]},{id:"html-lang",selector:"html",tags:["wcag2a","wcag311"],all:[],any:[{id:"has-lang",evaluate:function(a,b){return a.hasAttribute("lang")||a.hasAttribute("xml:lang")}}],none:[{id:"valid-lang",options:["en","es","ja"],evaluate:function(a,b){var c=(a.getAttribute("lang")||"").trim().toLowerCase(),d=(a.getAttribute("xml:lang")||"").trim().toLowerCase(),e=[];return(b||[]).forEach(function(a){a=a.toLowerCase(),!c||c!==a&&0!==c.indexOf(a.toLowerCase()+"-")||(c=null),!d||d!==a&&0!==d.indexOf(a.toLowerCase()+"-")||(d=null)}),d&&e.push('xml:lang="'+d+'"'),c&&e.push('lang="'+c+'"'),e.length?(this.data(e),!0):!1}}]},{id:"image-alt",selector:"img",tags:["wcag2a","wcag111","section508","section508a"],all:[],any:[{id:"has-alt",evaluate:function(a,b){return a.hasAttribute("alt")}},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}},{id:"non-empty-title",evaluate:function(a,b){var c=a.getAttribute("title");return!!(c?O.text.sanitize(c).trim():"")}}],none:[]},{id:"input-image-alt",selector:'input[type="image"]',tags:["wcag2a","wcag111","section508","section508a"],all:[],any:[{id:"non-empty-alt",evaluate:function(a,b){var c=a.getAttribute("alt");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}}],none:[]},{id:"label-title-only",selector:"input:not([type='hidden']):not([type='image']):not([type='button']):not([type='submit']):not([type='reset']), select, textarea",enabled:!1,tags:["best-practice"],all:[],any:[],none:[{id:"title-only",evaluate:function(a,b){var c=O.text.label(a);return!(c||!a.getAttribute("title")&&!a.getAttribute("aria-describedby"))}}]},{id:"label",selector:"input:not([type='hidden']):not([type='image']):not([type='button']):not([type='submit']):not([type='reset']), select, textarea",tags:["wcag2a","wcag332","wcag131","section508","section508n"],all:[],any:[{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}},{id:"implicit-label",evaluate:function(a,b){var c=O.dom.findUp(a,"label");return c?!!O.text.accessibleText(c):!1}},{id:"explicit-label",evaluate:function(a,b){var c=a.ownerDocument.querySelector('label[for="'+O.utils.escapeSelector(a.id)+'"]');return c?!!O.text.accessibleText(c):!1},selector:"[id]"},{id:"non-empty-title",evaluate:function(a,b){var c=a.getAttribute("title");return!!(c?O.text.sanitize(c).trim():"")}}],none:[{id:"help-same-as-label",evaluate:function(a,b){var c=O.text.label(a),d=a.getAttribute("title");if(!c)return!1;if(!d&&(d="",a.getAttribute("aria-describedby"))){var e=O.dom.idrefs(a,"aria-describedby");d=e.map(function(a){return a?O.text.accessibleText(a):""}).join("")}return O.text.sanitize(d)===O.text.sanitize(c)},enabled:!1},{id:"multiple-label",evaluate:function(a,b){for(var c=[].slice.call(a.ownerDocument.querySelectorAll('label[for="'+O.utils.escapeSelector(a.id)+'"]')),d=a.parentNode;d;)"LABEL"===d.tagName&&-1===c.indexOf(d)&&c.push(d),d=d.parentNode;return this.relatedNodes(c),c.length>1}}]},{id:"layout-table",selector:"table",matches:function(a){return!O.table.isDataTable(a)},tags:["wcag2a","wcag131"],all:[],any:[],none:[{id:"has-th",evaluate:function(a,b){for(var c,d,e=[],f=0,g=a.rows.length;g>f;f++){c=a.rows[f];for(var h=0,i=c.cells.length;i>h;h++)d=c.cells[h],"TH"===d.nodeName&&e.push(d)}return e.length?(this.relatedNodes(e),!0):!1}},{id:"has-caption",evaluate:function(a,b){return!!a.caption}},{id:"has-summary",evaluate:function(a,b){return!!a.summary}}]},{id:"link-name",selector:'a[href]:not([role="button"]), [role=link][href]',tags:["wcag2a","wcag111","wcag412","section508","section508a"],all:[],any:[{id:"has-visible-text",evaluate:function(a,b){return O.text.accessibleText(a).length>0}},{id:"aria-label",evaluate:function(a,b){var c=a.getAttribute("aria-label");return!!(c?O.text.sanitize(c).trim():"")}},{id:"aria-labelledby",evaluate:function(a,b){var c,d,e=O.dom.idrefs(a,"aria-labelledby"),f=e.length;for(d=0;f>d;d++)if(c=e[d],c&&O.text.accessibleText(c).trim())return!0;return!1}},{id:"role-presentation",evaluate:function(a,b){return"presentation"===a.getAttribute("role")}}],none:[{id:"duplicate-img-label",evaluate:function(a,b){for(var c=a.querySelectorAll("img"),d=O.text.visible(a,!0),e=0,f=c.length;f>e;e++){var g=O.text.accessibleText(c[e]);if(g===d&&""!==d)return!0}return!1},enabled:!1},{id:"focusable-no-name",evaluate:function(a,b){var c=a.getAttribute("tabindex"),d=O.dom.isFocusable(a)&&c>-1;return d?!O.text.accessibleText(a):!1}}]},{id:"list",selector:"ul, ol",tags:["wcag2a","wcag131"],all:[],any:[],none:[{id:"has-listitem",evaluate:function(a,b){var c=a.children;if(0===c.length)return!0;for(var d=0;d<c.length;d++)if("LI"===c[d].nodeName)return!1;return!0}},{id:"only-listitems",evaluate:function(a,b){for(var c,d=[],e=a.childNodes,f=!1,g=0;g<e.length;g++)c=e[g],1===c.nodeType&&"LI"!==c.nodeName?d.push(c):3===c.nodeType&&""!==c.nodeValue.trim()&&(f=!0);return d.length&&this.relatedNodes(d),!!d.length||f}}]},{id:"listitem",selector:"li",tags:["wcag2a","wcag131"],all:[],any:[{id:"listitem",evaluate:function(a,b){return-1!==["UL","OL"].indexOf(a.parentNode.tagName)}}],none:[]},{id:"marquee",selector:"marquee",tags:["wcag2a","wcag222","section508","section508j"],all:[],any:[],none:[{id:"exists",evaluate:function(a,b){return!0}}]},{id:"meta-refresh",selector:'meta[http-equiv="refresh"]',excludeHidden:!1,tags:["wcag2a","wcag2aaa","wcag221","wcag224","wcag325"],all:[],any:[{id:"meta-refresh",evaluate:function(a,b){var c=a.getAttribute("content")||"",d=c.split(/[;,]/);return""===c||"0"===d[0]}}],none:[]},{id:"meta-viewport",selector:'meta[name="viewport"]',excludeHidden:!1,tags:["wcag2aa","wcag144"],all:[],any:[{id:"meta-viewport",evaluate:function(a,b){for(var c,d=a.getAttribute("content")||"",e=d.split(/[;,]/),f={},g=0,h=e.length;h>g;g++){c=e[g].split("=");var i=c.shift();i&&c.length&&(f[i.trim()]=c.join("=").trim())}return f["maximum-scale"]&&parseFloat(f["maximum-scale"])<5?!1:"no"===f["user-scalable"]?!1:!0}}],none:[]},{id:"object-alt",selector:"object",tags:["wcag2a","wcag111"],all:[],any:[{id:"has-visible-text",evaluate:function(a,b){return O.text.accessibleText(a).length>0}}],none:[]},{id:"radiogroup",selector:"input[type=radio][name]",tags:["wcag2a","wcag131"],all:[],any:[{id:"group-labelledby",evaluate:function(a,b){this.data({name:a.getAttribute("name"),type:a.getAttribute("type")});var c=a.ownerDocument.querySelectorAll('input[type="'+O.utils.escapeSelector(a.type)+'"][name="'+O.utils.escapeSelector(a.name)+'"]');return c.length<=1?!0:0!==[].map.call(c,function(a){var b=a.getAttribute("aria-labelledby");return b?b.split(/\s+/):[]}).reduce(function(a,b){return a.filter(function(a){return-1!==b.indexOf(a)})}).filter(function(b){var c=a.ownerDocument.getElementById(b);return c&&O.text.accessibleText(c)}).length},after:function(a,b){var c={};return a.filter(function(a){var b=a.data;return b&&(c[b.type]=c[b.type]||{},!c[b.type][b.name])?(c[b.type][b.name]=!0,!0):!1})}},{id:"fieldset",evaluate:function(a,b){function c(a,b){return O.utils.toArray(a.querySelectorAll('select,textarea,button,input:not([name="'+b+'"]):not([type="hidden"])'))}function d(a,b){var d=a.firstElementChild;if(!d||"LEGEND"!==d.nodeName)return i.relatedNodes([a]),h="no-legend",!1;if(!O.text.accessibleText(d))return i.relatedNodes([d]),h="empty-legend",!1;var e=c(a,b);return e.length?(i.relatedNodes(e),h="mixed-inputs",!1):!0}function e(a,b){var d=O.dom.idrefs(a,"aria-labelledby").some(function(a){return a&&O.text.accessibleText(a)}),e=a.getAttribute("aria-label");if(!(d||e&&O.text.sanitize(e)))return i.relatedNodes(a),h="no-group-label",!1;var f=c(a,b);return f.length?(i.relatedNodes(f),h="group-mixed-inputs",!1):!0}function f(a,b){return O.utils.toArray(a).filter(function(a){return a!==b})}function g(b){var c=O.utils.escapeSelector(a.name),g=a.ownerDocument.querySelectorAll('input[type="'+O.utils.escapeSelector(a.type)+'"][name="'+c+'"]');if(g.length<2)return!0;var j=O.dom.findUp(b,"fieldset"),k=O.dom.findUp(b,'[role="group"]'+("radio"===a.type?',[role="radiogroup"]':""));return k||j?j?d(j,c):e(k,c):(h="no-group",i.relatedNodes(f(g,b)),!1)}var h,i=this,j={name:a.getAttribute("name"),type:a.getAttribute("type")},k=g(a);return k||(j.failureCode=h),this.data(j),k},after:function(a,b){var c={};return a.filter(function(a){if(a.result)return!0;var b=a.data;if(b){if(c[b.type]=c[b.type]||{},!c[b.type][b.name])return c[b.type][b.name]=[b],!0;var d=c[b.type][b.name].some(function(a){return a.failureCode===b.failureCode});return d||c[b.type][b.name].push(b),!d}return!1})}}],none:[]},{id:"region",selector:"html",pageLevel:!0,enabled:!1,tags:["best-practice"],all:[],any:[{id:"region",evaluate:function(a,b){function c(a){return h&&O.dom.isFocusable(O.dom.getElementByReference(h,"href"))&&h===a}function d(a){var b=a.getAttribute("role");return b&&-1!==g.indexOf(b)}function e(a){return d(a)?null:c(a)?f(a):O.dom.isVisible(a,!0)&&(O.text.visible(a,!0,!0)||O.dom.isVisualContent(a))?a:f(a)}function f(a){var b=O.utils.toArray(a.children);return 0===b.length?[]:b.map(e).filter(function(a){return null!==a}).reduce(function(a,b){return a.concat(b)},[])}var g=O.aria.getRolesByType("landmark"),h=a.querySelector("a[href]"),i=f(a);return this.relatedNodes(i),!i.length},after:function(a,b){return[a[0]]}}],none:[]},{id:"scope",selector:"[scope]",tags:["wcag2a","wcag411","wcag131"],all:[],any:[{id:"html5-scope",evaluate:function(a,b){return O.dom.isHTML5(a.ownerDocument)?"TH"===a.nodeName:!1}},{id:"html4-scope",evaluate:function(a,b){return O.dom.isHTML5(a.ownerDocument)?!1:"TH"===a.nodeName||"TD"===a.nodeName}}],none:[{id:"scope-value",evaluate:function(a,b){var c=a.getAttribute("scope");return"row"!==c&&"col"!==c}}]},{id:"server-side-image-map",selector:"img[ismap]",tags:["wcag2a","wcag211","section508","section508f"],all:[],any:[],none:[{id:"exists",evaluate:function(a,b){return!0}}]},{id:"skip-link",selector:"a[href]",pageLevel:!0,enabled:!1,tags:["best-practice"],all:[],any:[{id:"skip-link",selector:"a[href]",evaluate:function(a,b){return O.dom.isFocusable(O.dom.getElementByReference(a,"href"))},after:function(a,b){return[a[0]]}}],none:[]},{id:"tabindex",selector:"[tabindex]",tags:["wcag2a","wcag243"],all:[],any:[{id:"tabindex",evaluate:function(a,b){return a.tabIndex<=0}}],none:[]},{id:"valid-lang",selector:"[lang]:not(html), [xml\\:lang]:not(html)",tags:["wcag2aa","wcag312"],all:[],any:[],none:[{id:"valid-lang",options:["en","es","ja"],evaluate:function(a,b){var c=(a.getAttribute("lang")||"").trim().toLowerCase(),d=(a.getAttribute("xml:lang")||"").trim().toLowerCase(),e=[];return(b||[]).forEach(function(a){a=a.toLowerCase(),!c||c!==a&&0!==c.indexOf(a.toLowerCase()+"-")||(c=null),!d||d!==a&&0!==d.indexOf(a.toLowerCase()+"-")||(d=null)}),d&&e.push('xml:lang="'+d+'"'),c&&e.push('lang="'+c+'"'),e.length?(this.data(e),!0):!1}}]},{id:"video-caption",selector:"video",tags:["wcag2a","wcag122","wcag123","section508","section508a"],all:[],any:[],none:[{id:"caption",evaluate:function(a,b){return!a.querySelector("track[kind=captions]")}}]},{id:"video-description",selector:"video",tags:["wcag2aa","wcag125","section508","section508a"],all:[],any:[],none:[{id:"description",evaluate:function(a,b){return!a.querySelector("track[kind=descriptions]")}}]}],commons:function(){function a(b){"use strict";var c,d,e=b;if(null!==b&&"object"==typeof b)if(Array.isArray(b))for(e=[],c=0,d=b.length;d>c;c++)e[c]=a(b[c]);else{e={};for(c in b)e[c]=a(b[c])}return e}function b(a){"use strict";var b=a.match(/rect\s*\(([0-9]+)px,?\s*([0-9]+)px,?\s*([0-9]+)px,?\s*([0-9]+)px\s*\)/);return b&&5===b.length?b[3]-b[1]<=0&&b[2]-b[4]<=0:!1}function c(a){var b=null;return a.id&&(b=a.ownerDocument.querySelector('label[for="'+v.escapeSelector(a.id)+'"]'))?b:b=s.findUp(a,"label")}function d(a){return-1!==["button","reset","submit"].indexOf(a.type)}function e(a){return"TEXTAREA"===a.nodeName||"SELECT"===a.nodeName||"INPUT"===a.nodeName&&"hidden"!==a.type}function f(a){return-1!==["BUTTON","SUMMARY","A"].indexOf(a.nodeName)}function g(a){return-1!==["TABLE","FIGURE"].indexOf(a.nodeName)}function h(a){if("INPUT"===a.nodeName)return!a.hasAttribute("type")||-1!==z.indexOf(a.getAttribute("type"))&&a.value?a.value:"";if("SELECT"===a.nodeName){var b=a.options;if(b&&b.length){for(var c="",d=0;d<b.length;d++)b[d].selected&&(c+=" "+b[d].text);return u.sanitize(c)}return""}return"TEXTAREA"===a.nodeName&&a.value?a.value:""}function i(a,b){var c=a.querySelector(b);return c?u.accessibleText(c):""}function j(a){if(!a)return!1;switch(a.nodeName){case"SELECT":case"TEXTAREA":return!0;case"INPUT":return!a.hasAttribute("type")||-1!==z.indexOf(a.getAttribute("type"));default:return!1}}function k(a){return"INPUT"===a.nodeName&&"image"===a.type||-1!==["IMG","APPLET","AREA"].indexOf(a.nodeName)}function l(a){return!!u.sanitize(a)}var m={};m.version="dev";var n=function(){"use strict";function a(a){var b,c,d=a.Element.prototype,e=["matches","matchesSelector","mozMatchesSelector","webkitMatchesSelector","msMatchesSelector"],f=e.length;for(b=0;f>b;b++)if(c=e[b],d[c])return c}var b;return function(c,d){return b&&c[b]||(b=a(c.ownerDocument.defaultView)),c[b](d)}}(),o=function(a){"use strict";for(var b,c=String(a),d=c.length,e=-1,f="",g=c.charCodeAt(0);++e<d;){if(b=c.charCodeAt(e),0==b)throw new Error("INVALID_CHARACTER_ERR");f+=b>=1&&31>=b||b>=127&&159>=b||0==e&&b>=48&&57>=b||1==e&&b>=48&&57>=b&&45==g?"\\"+b.toString(16)+" ":(1!=e||45!=b||45!=g)&&(b>=128||45==b||95==b||b>=48&&57>=b||b>=65&&90>=b||b>=97&&122>=b)?c.charAt(e):"\\"+c.charAt(e)}return f},p=m.aria={},q=p._lut={};q.attributes={"aria-activedescendant":{type:"http://www.w3.org/2001/XMLSchema#idref"},"aria-atomic":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-autocomplete":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["inline","list","both","none"]},"aria-busy":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-checked":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","mixed","undefined"]},"aria-controls":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-describedby":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-disabled":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-dropeffect":{type:"http://www.w3.org/2001/XMLSchema#nmtokens",values:["copy","move","reference","execute","popup","none"]},"aria-expanded":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","undefined"]},"aria-flowto":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-grabbed":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","undefined"]},"aria-haspopup":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-hidden":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-invalid":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","spelling","grammar"]},"aria-label":{type:"http://www.w3.org/2001/XMLSchema#string"},"aria-labelledby":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-level":{type:"http://www.w3.org/2001/XMLSchema#int"},"aria-live":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["off","polite","assertive"]},"aria-multiline":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-multiselectable":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-orientation":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["horizontal","vertical"]},"aria-owns":{type:"http://www.w3.org/2001/XMLSchema#idrefs"},"aria-posinset":{type:"http://www.w3.org/2001/XMLSchema#int"},"aria-pressed":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","mixed","undefined"]},"aria-readonly":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-relevant":{type:"http://www.w3.org/2001/XMLSchema#nmtokens",values:["additions","removals","text","all"]},"aria-required":{type:"http://www.w3.org/2001/XMLSchema#boolean",values:["true","false"]},"aria-selected":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["true","false","undefined"]},"aria-setsize":{type:"http://www.w3.org/2001/XMLSchema#int"},"aria-sort":{type:"http://www.w3.org/2001/XMLSchema#nmtoken",values:["ascending","descending","other","none"]},"aria-valuemax":{type:"http://www.w3.org/2001/XMLSchema#decimal"},"aria-valuemin":{type:"http://www.w3.org/2001/XMLSchema#decimal"},"aria-valuenow":{type:"http://www.w3.org/2001/XMLSchema#decimal"},"aria-valuetext":{type:"http://www.w3.org/2001/XMLSchema#string"}},q.globalAttributes=["aria-atomic","aria-busy","aria-controls","aria-describedby","aria-disabled","aria-dropeffect","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant"],q.role={alert:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},alertdialog:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},application:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},article:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["article"]},banner:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},button:{type:"widget",attributes:{allowed:["aria-expanded","aria-pressed"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["button",'input[type="button"]','input[type="image"]']},checkbox:{type:"widget",attributes:{required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:null,implicit:['input[type="checkbox"]']},columnheader:{type:"structure",attributes:{allowed:["aria-expanded","aria-sort","aria-readonly","aria-selected","aria-required"]},owned:null,nameFrom:["author","contents"],context:["row"]},combobox:{type:"composite",attributes:{required:["aria-expanded"],allowed:["aria-autocomplete","aria-required","aria-activedescendant"]},owned:{all:["listbox","textbox"]},nameFrom:["author"],context:null},command:{nameFrom:["author"],type:"abstract"},complementary:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["aside"]},composite:{nameFrom:["author"],type:"abstract"},contentinfo:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},definition:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},dialog:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["dialog"]},directory:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author","contents"],context:null},document:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["body"]},form:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},grid:{type:"composite",attributes:{allowed:["aria-level","aria-multiselectable","aria-readonly","aria-activedescendant","aria-expanded"]},owned:{one:["rowgroup","row"]},nameFrom:["author"],context:null},gridcell:{type:"widget",attributes:{allowed:["aria-selected","aria-readonly","aria-expanded","aria-required"]},owned:null,nameFrom:["author","contents"],context:["row"]},group:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["details"]},heading:{type:"structure",attributes:{allowed:["aria-level","aria-expanded"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["h1","h2","h3","h4","h5","h6"]},img:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["img"]},input:{nameFrom:["author"],type:"abstract"},landmark:{nameFrom:["author"],type:"abstract"},link:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["a[href]"]},list:{type:"structure",attributes:{
25
+ allowed:["aria-expanded"]},owned:{all:["listitem"]},nameFrom:["author"],context:null,implicit:["ol","ul"]},listbox:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-multiselectable","aria-required","aria-expanded"]},owned:{all:["option"]},nameFrom:["author"],context:null,implicit:["select"]},listitem:{type:"structure",attributes:{allowed:["aria-level","aria-posinset","aria-setsize","aria-expanded"]},owned:null,nameFrom:["author","contents"],context:["list"],implicit:["li"]},log:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},main:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},marquee:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},math:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},menu:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:{one:["menuitem","menuitemradio","menuitemcheckbox"]},nameFrom:["author"],context:null},menubar:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:null,nameFrom:["author"],context:null},menuitem:{type:"widget",attributes:null,owned:null,nameFrom:["author","contents"],context:["menu","menubar"]},menuitemcheckbox:{type:"widget",attributes:{required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"]},menuitemradio:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize"],required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"]},navigation:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},note:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},option:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize","aria-checked"]},owned:null,nameFrom:["author","contents"],context:["listbox"]},presentation:{type:"structure",attributes:null,owned:null,nameFrom:["author"],context:null},progressbar:{type:"widget",attributes:{allowed:["aria-valuetext","aria-valuenow","aria-valuemax","aria-valuemin"]},owned:null,nameFrom:["author"],context:null},radio:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize"],required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:null,implicit:['input[type="radio"]']},radiogroup:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-required","aria-expanded"]},owned:{all:["radio"]},nameFrom:["author"],context:null},range:{nameFrom:["author"],type:"abstract"},region:{type:"structure",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["section"]},roletype:{type:"abstract"},row:{type:"structure",attributes:{allowed:["aria-level","aria-selected","aria-activedescendant","aria-expanded"]},owned:{one:["columnheader","rowheader","gridcell"]},nameFrom:["author","contents"],context:["rowgroup","grid","treegrid"]},rowgroup:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:{all:["row"]},nameFrom:["author","contents"],context:["grid"]},rowheader:{type:"structure",attributes:{allowed:["aria-sort","aria-required","aria-readonly","aria-expanded","aria-selected"]},owned:null,nameFrom:["author","contents"],context:["row"]},scrollbar:{type:"widget",attributes:{required:["aria-controls","aria-orientation","aria-valuenow","aria-valuemax","aria-valuemin"],allowed:["aria-valuetext"]},owned:null,nameFrom:["author"],context:null},search:{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},section:{nameFrom:["author","contents"],type:"abstract"},sectionhead:{nameFrom:["author","contents"],type:"abstract"},select:{nameFrom:["author"],type:"abstract"},separator:{type:"structure",attributes:{allowed:["aria-expanded","aria-orientation"]},owned:null,nameFrom:["author"],context:null},slider:{type:"widget",attributes:{allowed:["aria-valuetext","aria-orientation"],required:["aria-valuenow","aria-valuemax","aria-valuemin"]},owned:null,nameFrom:["author"],context:null},spinbutton:{type:"widget",attributes:{allowed:["aria-valuetext","aria-required"],required:["aria-valuenow","aria-valuemax","aria-valuemin"]},owned:null,nameFrom:["author"],context:null},status:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:["output"]},structure:{type:"abstract"},tab:{type:"widget",attributes:{allowed:["aria-selected","aria-expanded"]},owned:null,nameFrom:["author","contents"],context:["tablist"]},tablist:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-level","aria-multiselectable"]},owned:{all:["tab"]},nameFrom:["author"],context:null},tabpanel:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},textbox:{type:"widget",attributes:{allowed:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-readonly","aria-required"]},owned:null,nameFrom:["author"],context:null,implicit:['input[type="text"]',"input:not([type])"]},timer:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author"],context:null},toolbar:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded"]},owned:null,nameFrom:["author"],context:null,implicit:['menu[type="toolbar"]']},tooltip:{type:"widget",attributes:{allowed:["aria-expanded"]},owned:null,nameFrom:["author","contents"],context:null},tree:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-multiselectable","aria-required","aria-expanded"]},owned:{all:["treeitem"]},nameFrom:["author"],context:null},treegrid:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-level","aria-multiselectable","aria-readonly","aria-required"]},owned:{all:["treeitem"]},nameFrom:["author"],context:null},treeitem:{type:"widget",attributes:{allowed:["aria-checked","aria-selected","aria-expanded","aria-level","aria-posinset","aria-setsize"]},owned:null,nameFrom:["author","contents"],context:["treegrid","tree"]},widget:{type:"abstract"},window:{nameFrom:["author"],type:"abstract"}};var r={};m.color=r;var s=m.dom={},t=m.table={},u=m.text={},v=m.utils={};v.escapeSelector=o,v.matchesSelector=n,v.clone=a,p.requiredAttr=function(a){"use strict";var b=q.role[a],c=b&&b.attributes&&b.attributes.required;return c||[]},p.allowedAttr=function(a){"use strict";var b=q.role[a],c=b&&b.attributes&&b.attributes.allowed||[],d=b&&b.attributes&&b.attributes.required||[];return c.concat(q.globalAttributes).concat(d)},p.validateAttr=function(a){"use strict";return!!q.attributes[a]},p.validateAttrValue=function(a,b){"use strict";var c,d,e,f,g=a.ownerDocument,h=a.getAttribute(b),i=q.attributes[b];if(!i)return!0;if(i.values)return"string"==typeof h&&-1!==i.values.indexOf(h.toLowerCase())?!0:!1;switch(i.type){case"http://www.w3.org/2001/XMLSchema#idref":return!(!h||!g.getElementById(h));case"http://www.w3.org/2001/XMLSchema#idrefs":for(c=v.tokenList(h),d=0,e=c.length;e>d;d++)if(c[d]&&!g.getElementById(c[d]))return!1;return!!c.length;case"http://www.w3.org/2001/XMLSchema#string":return!0;case"http://www.w3.org/2001/XMLSchema#decimal":return f=h.match(/^[-+]?([0-9]*)\.?([0-9]*)$/),!(!f||!f[1]&&!f[2]);case"http://www.w3.org/2001/XMLSchema#int":return/^[-+]?[0-9]+$/.test(h)}},p.label=function(a){var b,c;return a.getAttribute("aria-labelledby")&&(b=s.idrefs(a,"aria-labelledby"),c=b.map(function(a){return a?u.visible(a,!0):""}).join(" ").trim())?c:(c=a.getAttribute("aria-label"),c&&(c=u.sanitize(c).trim())?c:null)},p.isValidRole=function(a){"use strict";return q.role[a]?!0:!1},p.getRolesWithNameFromContents=function(){return Object.keys(q.role).filter(function(a){return q.role[a].nameFrom&&-1!==q.role[a].nameFrom.indexOf("contents")})},p.getRolesByType=function(a){return Object.keys(q.role).filter(function(b){return q.role[b].type===a})},p.getRoleType=function(a){var b=q.role[a];return b&&b.type||null},p.requiredOwned=function(a){"use strict";var b=null,c=q.role[a];return c&&(b=v.clone(c.owned)),b},p.requiredContext=function(a){"use strict";var b=null,c=q.role[a];return c&&(b=v.clone(c.context)),b},p.implicitNodes=function(a){"use strict";var b=null,c=q.role[a];return c&&c.implicit&&(b=v.clone(c.implicit)),b},p.implicitRole=function(a){"use strict";var b,c,d,e=q.role;for(b in e)if(e.hasOwnProperty(b)&&(c=e[b],c.implicit))for(var f=0,g=c.implicit.length;g>f;f++)if(d=c.implicit[f],v.matchesSelector(a,d))return b;return null},r.Color=function(a,b,c,d){this.red=a,this.green=b,this.blue=c,this.alpha=d,this.toHexString=function(){var a=Math.round(this.red).toString(16),b=Math.round(this.green).toString(16),c=Math.round(this.blue).toString(16);return"#"+(this.red>15.5?a:"0"+a)+(this.green>15.5?b:"0"+b)+(this.blue>15.5?c:"0"+c)};var e=/^rgb\((\d+), (\d+), (\d+)\)$/,f=/^rgba\((\d+), (\d+), (\d+), (\d*(\.\d+)?)\)/;this.parseRgbString=function(a){var b=a.match(e);return b?(this.red=parseInt(b[1],10),this.green=parseInt(b[2],10),this.blue=parseInt(b[3],10),void(this.alpha=1)):(b=a.match(f),b?(this.red=parseInt(b[1],10),this.green=parseInt(b[2],10),this.blue=parseInt(b[3],10),void(this.alpha=parseFloat(b[4]))):void 0)},this.getRelativeLuminance=function(){var a=this.red/255,b=this.green/255,c=this.blue/255,d=.03928>=a?a/12.92:Math.pow((a+.055)/1.055,2.4),e=.03928>=b?b/12.92:Math.pow((b+.055)/1.055,2.4),f=.03928>=c?c/12.92:Math.pow((c+.055)/1.055,2.4);return.2126*d+.7152*e+.0722*f}},r.flattenColors=function(a,b){var c=a.alpha,d=(1-c)*b.red+c*a.red,e=(1-c)*b.green+c*a.green,f=(1-c)*b.blue+c*a.blue,g=a.alpha+b.alpha*(1-a.alpha);return new r.Color(d,e,f,g)},r.getContrast=function(a,b){if(!b||!a)return null;b.alpha<1&&(b=r.flattenColors(b,a));var c=a.getRelativeLuminance(),d=b.getRelativeLuminance();return(Math.max(d,c)+.05)/(Math.min(d,c)+.05)},r.hasValidContrastRatio=function(a,b,c,d){var e=r.getContrast(a,b),f=d&&Math.ceil(72*c)/96<14||!d&&Math.ceil(72*c)/96<18;return{isValid:f&&e>=4.5||!f&&e>=3,contrastRatio:e}};var w=function(a){var b,c=a.ownerDocument.defaultView,d=c.getComputedStyle(a);if("none"!==d.getPropertyValue("background-image"))return null;var e=d.getPropertyValue("background-color");"transparent"===e?b=new r.Color(0,0,0,0):(b=new r.Color,b.parseRgbString(e));var f=d.getPropertyValue("opacity");return b.alpha=b.alpha*f,b};s.isOpaque=function(a){var b=w(a);return null===b||1===b.alpha?!0:!1};var x=function(a,b){for(var c,d,e,f,g,h,i,j=[],k=!1,l=a.ownerDocument.defaultView,m=a,n=l.getComputedStyle(m);null!==m&&(!s.isOpaque(m)||0===parseInt(n.getPropertyValue("height"),10));)e=n.getPropertyValue("position"),f=n.getPropertyValue("top"),g=n.getPropertyValue("bottom"),h=n.getPropertyValue("left"),i=n.getPropertyValue("right"),("static"!==e&&"relative"!==e||"relative"===e&&("auto"!==h||"auto"!==i||"auto"!==f||"auto"!==g))&&(k=!0),m=m.parentElement,null!==m&&(n=l.getComputedStyle(m),0!==parseInt(n.getPropertyValue("height"),10)&&j.push(m));return k&&s.supportsElementsFromPoint(a.ownerDocument)&&(c=s.elementsFromPoint(a.ownerDocument,Math.ceil(b.left+1),Math.ceil(b.top+1)),c&&(d=c.indexOf(a))<c.length-1&&(j=c.slice(d+1))),j};r.getBackgroundColor=function(a,b){var c,d,e=w(a);if(!b||null!==e&&0===e.alpha||b.push(a),null===e||1===e.alpha)return e;a.scrollIntoView();for(var f=a.getBoundingClientRect(),g=a,h=[{color:e,node:a}],i=x(g,f);1!==e.alpha;){if(c=i.shift(),!c&&"HTML"!==g.tagName)return null;if(c||"HTML"!==g.tagName){if(!s.visuallyContains(a,c))return null;if(d=w(c),!b||null!==d&&0===d.alpha||b.push(c),null===d)return null}else d=new r.Color(255,255,255,1);g=c,e=d,h.push({color:e,node:g})}for(var j=h.pop(),k=j.color;void 0!==(j=h.pop());)k=r.flattenColors(j.color,k);return k},r.getForegroundColor=function(a){var b=a.ownerDocument.defaultView,c=b.getComputedStyle(a),d=new r.Color;d.parseRgbString(c.getPropertyValue("color"));var e=c.getPropertyValue("opacity");if(d.alpha=d.alpha*e,1===d.alpha)return d;var f=r.getBackgroundColor(a);return null===f?null:r.flattenColors(d,f)},s.findUp=function(a,b){"use strict";var c,d=a.ownerDocument,e=d.querySelectorAll(b),f=e.length;if(!f)return null;for(e=v.toArray(e),c=a.parentNode;c&&-1===e.indexOf(c);)c=c.parentNode;return c},s.getElementByReference=function(a,b){"use strict";var c,d=a.getAttribute(b),e=a.ownerDocument;if(d&&"#"===d.charAt(0)){if(d=d.substring(1),c=e.getElementById(d))return c;if(c=e.getElementsByName(d),c.length)return c[0]}return null},s.getElementCoordinates=function(a){"use strict";var b=a.ownerDocument,c=s.getScrollOffset(b),d=c.left,e=c.top,f=a.getBoundingClientRect();return{top:f.top+e,right:f.right+d,bottom:f.bottom+e,left:f.left+d,width:f.right-f.left,height:f.bottom-f.top}},s.supportsElementsFromPoint=function(a){var b=a.createElement("x");return b.style.cssText="pointer-events:auto","auto"===b.style.pointerEvents||!!a.msElementsFromPoint},s.elementsFromPoint=function(a,b,c){var d,e,f,g=[],h=[];if(a.msElementsFromPoint){var i=a.msElementsFromPoint(b,c);return i?Array.prototype.slice.call(i):null}for(;(d=a.elementFromPoint(b,c))&&-1===g.indexOf(d)&&null!==d&&(g.push(d),h.push({value:d.style.getPropertyValue("pointer-events"),priority:d.style.getPropertyPriority("pointer-events")}),d.style.setProperty("pointer-events","none","important"),!s.isOpaque(d)););for(e=h.length;f=h[--e];)g[e].style.setProperty("pointer-events",f.value?f.value:"",f.priority);return g},s.getScrollOffset=function(a){"use strict";if(!a.nodeType&&a.document&&(a=a.document),9===a.nodeType){var b=a.documentElement,c=a.body;return{left:b&&b.scrollLeft||c&&c.scrollLeft||0,top:b&&b.scrollTop||c&&c.scrollTop||0}}return{left:a.scrollLeft,top:a.scrollTop}},s.getViewportSize=function(a){"use strict";var b,c=a.document,d=c.documentElement;return a.innerWidth?{width:a.innerWidth,height:a.innerHeight}:d?{width:d.clientWidth,height:d.clientHeight}:(b=c.body,{width:b.clientWidth,height:b.clientHeight})},s.idrefs=function(a,b){"use strict";var c,d,e=a.ownerDocument,f=[],g=a.getAttribute(b);if(g)for(g=v.tokenList(g),c=0,d=g.length;d>c;c++)f.push(e.getElementById(g[c]));return f},s.isFocusable=function(a){"use strict";if(!a||a.disabled||!s.isVisible(a)&&"AREA"!==a.nodeName)return!1;switch(a.nodeName){case"A":case"AREA":if(a.href)return!0;break;case"INPUT":return"hidden"!==a.type;case"TEXTAREA":case"SELECT":case"DETAILS":case"BUTTON":return!0}var b=a.getAttribute("tabindex");return b&&!isNaN(parseInt(b,10))?!0:!1},s.isHTML5=function(a){var b=a.doctype;return null===b?!1:"html"===b.name&&!b.publicId&&!b.systemId},s.isNode=function(a){"use strict";var b=a&&a.ownerDocument||a,c=b&&b.defaultView;return!!c&&a instanceof c.Node},s.isOffscreen=function(a){"use strict";var b,c=a.ownerDocument,d=c.defaultView,e=c.documentElement,f=d.getComputedStyle(c.body||e).getPropertyValue("direction"),g=s.getElementCoordinates(a);if(g.bottom<0)return!0;if("ltr"===f){if(g.right<0)return!0}else if(b=Math.max(e.scrollWidth,s.getViewportSize(d).width),g.left>b)return!0;return!1},s.isVisible=function(a,c,d){"use strict";var e,f=a.nodeName,g=a.parentNode;return 9===a.nodeType?!0:(e=a.ownerDocument.defaultView.getComputedStyle(a,null),null===e?!1:"none"===e.getPropertyValue("display")||"STYLE"===f||"SCRIPT"===f||!c&&b(e.getPropertyValue("clip"))||!d&&("hidden"===e.getPropertyValue("visibility")||!c&&s.isOffscreen(a))||c&&"true"===a.getAttribute("aria-hidden")?!1:g?s.isVisible(g,c,!0):!1)},s.isVisualContent=function(a){"use strict";switch(a.tagName.toUpperCase()){case"IMG":case"IFRAME":case"OBJECT":case"VIDEO":case"AUDIO":case"CANVAS":case"SVG":case"MATH":case"BUTTON":case"SELECT":case"TEXTAREA":case"KEYGEN":case"PROGRESS":case"METER":return!0;case"INPUT":return"hidden"!==a.type;default:return!1}},s.visuallyContains=function(a,b){var c=a.getBoundingClientRect(),d=b.getBoundingClientRect(),e=d.top,f=d.left,g={top:e-b.scrollTop,bottom:e-b.scrollTop+b.scrollHeight,left:f-b.scrollLeft,right:f-b.scrollLeft+b.scrollWidth};if(c.left<g.left&&c.left<d.left||c.top<g.top&&c.top<d.top||c.right>g.right&&c.right>d.right||c.bottom>g.bottom&&c.bottom>d.bottom)return!1;var h=a.ownerDocument.defaultView,i=h.getComputedStyle(b);return c.right>d.right||c.bottom>d.bottom?"scroll"===i.overflow||"auto"===i.overflow||"hidden"===i.overflow||b instanceof h.HTMLBodyElement||b instanceof h.HTMLHtmlElement:!0},s.visuallyOverlaps=function(a,b){var c=b.getBoundingClientRect(),d=c.top,e=c.left,f={top:d-b.scrollTop,bottom:d-b.scrollTop+b.scrollHeight,left:e-b.scrollLeft,right:e-b.scrollLeft+b.scrollWidth};if(a.left>f.right&&a.left>c.right||a.top>f.bottom&&a.top>c.bottom||a.right<f.left&&a.right<c.left||a.bottom<f.top&&a.bottom<c.top)return!1;var g=b.ownerDocument.defaultView,h=g.getComputedStyle(b);return a.left>c.right||a.top>c.bottom?"scroll"===h.overflow||"auto"===h.overflow||b instanceof g.HTMLBodyElement||b instanceof g.HTMLHtmlElement:!0},t.getCellPosition=function(a){for(var b,c=t.toArray(s.findUp(a,"table")),d=0;d<c.length;d++)if(c[d]&&(b=c[d].indexOf(a),-1!==b))return{x:b,y:d}},t.getHeaders=function(a){if(a.getAttribute("headers"))return m.dom.idrefs(a,"headers");for(var b,c=[],d=m.table.toArray(m.dom.findUp(a,"table")),e=m.table.getCellPosition(a),f=e.x-1;f>=0;f--)b=d[e.y][f],m.table.isRowHeader(b)&&c.unshift(b);for(var g=e.y-1;g>=0;g--)b=d[g][e.x],b&&m.table.isColumnHeader(b)&&c.unshift(b);return c},t.isColumnHeader=function(a){var b=a.getAttribute("scope");if("col"===b)return!0;if(b||"TH"!==a.nodeName)return!1;for(var c,d=t.getCellPosition(a),e=t.toArray(s.findUp(a,"table")),f=e[d.y],g=0,h=f.length;h>g;g++)if(c=f[g],c!==a&&t.isDataCell(c))return!1;return!0},t.isDataCell=function(a){return a.children.length||a.textContent.trim()?"TD"===a.nodeName:!1},t.isDataTable=function(a){var b=a.ownerDocument.defaultView,c=a.getAttribute("role");if("presentation"===c&&!s.isFocusable(a))return!1;if("true"===a.getAttribute("contenteditable")||s.findUp(a,'[contenteditable="true"]'))return!0;if("grid"===c||"treegrid"===c)return!0;if("landmark"===m.aria.getRoleType(c))return!0;if("0"===a.getAttribute("datatable"))return!1;if(a.getAttribute("summary"))return!0;if(a.tHead||a.tFoot||a.caption)return!0;for(var d=0,e=a.children.length;e>d;d++)if("COLGROUP"===a.children[d].nodeName)return!0;for(var f,g,h=0,i=a.rows.length,j=!1,k=0;i>k;k++){f=a.rows[k];for(var l=0,n=f.cells.length;n>l;l++){if(g=f.cells[l],j||g.offsetWidth===g.clientWidth&&g.offsetHeight===g.clientHeight||(j=!0),g.getAttribute("scope")||g.getAttribute("headers")||g.getAttribute("abbr"))return!0;if("TH"===g.nodeName)return!0;if(1===g.children.length&&"ABBR"===g.children[0].nodeName)return!0;h++}}if(a.getElementsByTagName("table").length)return!1;if(2>i)return!1;var o=a.rows[Math.ceil(i/2)];if(1===o.cells.length&&1===o.cells[0].colSpan)return!1;if(o.cells.length>=5)return!0;if(j)return!0;var p,q;for(k=0;i>k;k++){if(f=a.rows[k],p&&p!==b.getComputedStyle(f).getPropertyValue("background-color"))return!0;if(p=b.getComputedStyle(f).getPropertyValue("background-color"),q&&q!==b.getComputedStyle(f).getPropertyValue("background-image"))return!0;q=b.getComputedStyle(f).getPropertyValue("background-image")}return i>=20?!0:s.getElementCoordinates(a).width>.95*s.getViewportSize(b).width?!1:10>h?!1:a.querySelector("object, embed, iframe, applet")?!1:!0},t.isHeader=function(a){return t.isColumnHeader(a)||t.isRowHeader(a)?!0:a.id?!!a.ownerDocument.querySelector('[headers~="'+v.escapeSelector(a.id)+'"]'):!1},t.isRowHeader=function(a){var b=a.getAttribute("scope");if("row"===b)return!0;if(b||"TH"!==a.nodeName)return!1;if(t.isColumnHeader(a))return!1;for(var c,d=t.getCellPosition(a),e=t.toArray(s.findUp(a,"table")),f=0,g=e.length;g>f;f++)if(c=e[f][d.x],c!==a&&t.isDataCell(c))return!1;return!0},t.toArray=function(a){for(var b=[],c=a.rows,d=0,e=c.length;e>d;d++){var f=c[d].cells;b[d]=b[d]||[];for(var g=0,h=0,i=f.length;i>h;h++)for(var j=0;j<f[h].colSpan;j++){for(var k=0;k<f[h].rowSpan;k++){for(b[d+k]=b[d+k]||[];b[d+k][g];)g++;b[d+k][g]=f[h]}g++}}return b};var y={submit:"Submit",reset:"Reset"},z=["text","search","tel","url","email","date","time","number","range","color"],A=["a","em","strong","small","mark","abbr","dfn","i","b","s","u","code","var","samp","kbd","sup","sub","q","cite","span","bdo","bdi","br","wbr","ins","del","img","embed","object","iframe","map","area","script","noscript","ruby","video","audio","input","textarea","select","button","label","output","datalist","keygen","progress","command","canvas","time","meter"];return u.accessibleText=function(a){function b(a,b,g){var h="";if(f(a)&&(h=n(a,!1,!1)||"",l(h)))return h;if("FIGURE"===a.nodeName&&(h=i(a,"figcaption"),l(h)))return h;if("TABLE"===a.nodeName){if(h=i(a,"caption"),l(h))return h;if(h=a.getAttribute("title")||a.getAttribute("summary")||"",l(h))return h}if(k(a))return a.getAttribute("alt")||"";if(e(a)&&!g){if(d(a))return a.value||a.title||y[a.type]||"";var j=c(a);if(j)return o(j,b,!0)}return""}function m(a,b,c){return!b&&a.hasAttribute("aria-labelledby")?u.sanitize(s.idrefs(a,"aria-labelledby").map(function(b){return a===b&&q.pop(),o(b,!0,a!==b)}).join(" ")):c&&j(a)||!a.hasAttribute("aria-label")?"":u.sanitize(a.getAttribute("aria-label"))}function n(a,b,c){for(var d,e=a.childNodes,f="",g=0;g<e.length;g++)d=e[g],3===d.nodeType?f+=d.textContent:1===d.nodeType&&(-1===A.indexOf(d.nodeName.toLowerCase())&&(f+=" "),f+=o(e[g],b,c));return f}function o(a,c,d){"use strict";var e="";if(null===a||!s.isVisible(a,!0)||-1!==q.indexOf(a))return"";q.push(a);var f=a.getAttribute("role");return e+=m(a,c,d),l(e)?e:(e=b(a,c,d),l(e)?e:d&&(e+=h(a),l(e))?e:g(a)||f&&-1===p.getRolesWithNameFromContents().indexOf(f)||(e=n(a,c,d),!l(e))?a.hasAttribute("title")?a.getAttribute("title"):"":e)}var q=[];return u.sanitize(o(a))},u.label=function(a){var b,c;return(c=p.label(a))?c:a.id&&(b=a.ownerDocument.querySelector('label[for="'+v.escapeSelector(a.id)+'"]'),c=b&&u.visible(b,!0))?c:(b=s.findUp(a,"label"),c=b&&u.visible(b,!0),c?c:null)},u.sanitize=function(a){"use strict";return a.replace(/\r\n/g,"\n").replace(/\u00A0/g," ").replace(/[\s]{2,}/g," ").trim()},u.visible=function(a,b,c){"use strict";var d,e,f,g=a.childNodes,h=g.length,i="";for(d=0;h>d;d++)e=g[d],3===e.nodeType?(f=e.nodeValue,f&&s.isVisible(a,b)&&(i+=e.nodeValue)):c||(i+=u.visible(e,b));return u.sanitize(i)},v.toArray=function(a){"use strict";return Array.prototype.slice.call(a)},v.tokenList=function(a){"use strict";return a.trim().replace(/\s{2,}/g," ").split(" ")},m}(),version:"1.0.2"}),Q.version="1.0.1"}(this);
metadata ADDED
@@ -0,0 +1,270 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: axe-matchers
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Deque Systems
8
+ - Test Double
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-08-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: dumb_delegator
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '0.8'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '0.8'
28
+ - !ruby/object:Gem::Dependency
29
+ name: virtus
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '1.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '1.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '1.6'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '1.6'
56
+ - !ruby/object:Gem::Dependency
57
+ name: cucumber
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '1.3'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.3'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rake
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '10.4'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '10.4'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rspec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: '3.2'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: '3.2'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rspec-its
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: '1.2'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: '1.2'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rspec_junit_formatter
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: '0.2'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '0.2'
126
+ - !ruby/object:Gem::Dependency
127
+ name: sinatra
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: '1.4'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: '1.4'
140
+ - !ruby/object:Gem::Dependency
141
+ name: capybara
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ version: '2.4'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: '2.4'
154
+ - !ruby/object:Gem::Dependency
155
+ name: capybara-webkit
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: '1.3'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: '1.3'
168
+ - !ruby/object:Gem::Dependency
169
+ name: poltergeist
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: '1.6'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: '1.6'
182
+ - !ruby/object:Gem::Dependency
183
+ name: selenium-webdriver
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ version: '2.46'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ~>
194
+ - !ruby/object:Gem::Version
195
+ version: '2.46'
196
+ - !ruby/object:Gem::Dependency
197
+ name: watir-webdriver
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ~>
201
+ - !ruby/object:Gem::Version
202
+ version: '0.8'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ~>
208
+ - !ruby/object:Gem::Version
209
+ version: '0.8'
210
+ description: |2
211
+ axe-matchers provides matchers that wrap the axe-core accessibility library.
212
+ The matchers can be used with RSpec, MiniTest, Cucumber and other test tools.
213
+ Cucumber step definitions for are also provided.
214
+ email:
215
+ executables: []
216
+ extensions: []
217
+ extra_rdoc_files: []
218
+ files:
219
+ - lib/axe/api/a11y_check.rb
220
+ - lib/axe/api/audit.rb
221
+ - lib/axe/api/context.rb
222
+ - lib/axe/api/options.rb
223
+ - lib/axe/api/results/check.rb
224
+ - lib/axe/api/results/checked_node.rb
225
+ - lib/axe/api/results/node.rb
226
+ - lib/axe/api/results/rule.rb
227
+ - lib/axe/api/results.rb
228
+ - lib/axe/api/rules.rb
229
+ - lib/axe/api/value_object.rb
230
+ - lib/axe/api.rb
231
+ - lib/axe/configuration.rb
232
+ - lib/axe/cucumber/step.rb
233
+ - lib/axe/cucumber/step_definitions.rb
234
+ - lib/axe/javascript_library.rb
235
+ - lib/axe/matchers/be_accessible.rb
236
+ - lib/axe/matchers.rb
237
+ - lib/axe/page.rb
238
+ - lib/axe/rspec.rb
239
+ - lib/axe/version.rb
240
+ - lib/axe.rb
241
+ - lib/webdriver_script_adapter/exec_eval_script_adapter.rb
242
+ - lib/webdriver_script_adapter/execute_async_script_adapter.rb
243
+ - node_modules/axe-core/axe.min.js
244
+ - LICENSE
245
+ - README.md
246
+ homepage: https://www.deque.com
247
+ licenses:
248
+ - MPL-2.0
249
+ metadata: {}
250
+ post_install_message:
251
+ rdoc_options: []
252
+ require_paths:
253
+ - lib
254
+ required_ruby_version: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - '>='
257
+ - !ruby/object:Gem::Version
258
+ version: 1.9.3
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - '>='
262
+ - !ruby/object:Gem::Version
263
+ version: 1.3.6
264
+ requirements: []
265
+ rubyforge_project:
266
+ rubygems_version: 2.0.14
267
+ signing_key:
268
+ specification_version: 4
269
+ summary: Automated accessibility testing powered by aXe
270
+ test_files: []