From 63dfd652a5a87836461066436b13226c8e8fb1ad Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 10:31:56 -0400 Subject: [PATCH 01/10] Initial commit with structure --- setup.py | 27 +++++++++++++++++++++++++++ summit/__init__.py | 1 + test/__init__.py | 1 + 3 files changed, 29 insertions(+) create mode 100644 setup.py create mode 100644 summit/__init__.py create mode 100644 test/__init__.py diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..854032a --- /dev/null +++ b/setup.py @@ -0,0 +1,27 @@ +from setuptools import setup, find_packages + + +version = '1.0.0' + +setup(name='summit', + version=version, + description="A node based math utility", + long_description="""A node based math utility, and by node, it does not mean Node.js. A node in this case\ + represents a single element within a mathematical expression and houses children thereof.\ +""", + classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers + keywords='', + author='Greg Gullett', + author_email='ggullett@ecsquest.com', + url='', + license='', + packages=find_packages(exclude=['test']), + zip_safe=False, + install_requires=[ + # -*- Extra requirements: -*- + ], + entry_points=""" + # -*- Entry points: -*- + [console_scripts] + """, + ) diff --git a/summit/__init__.py b/summit/__init__.py new file mode 100644 index 0000000..40015c9 --- /dev/null +++ b/summit/__init__.py @@ -0,0 +1 @@ +__author__ = 'Greg' diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..40015c9 --- /dev/null +++ b/test/__init__.py @@ -0,0 +1 @@ +__author__ = 'Greg' From a238e13a2b9f8d7d867ae9970ea9f730b0e4a6a7 Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 14:37:44 -0400 Subject: [PATCH 02/10] First tests passed. Added documentation to primary working class "SummitNode". Nailing down basic interface. --- summit/exceptions.py | 7 ++++++ summit/node.py | 48 +++++++++++++++++++++++++++++++++++++++++ test/test_summitnode.py | 32 +++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 summit/exceptions.py create mode 100644 summit/node.py create mode 100644 test/test_summitnode.py diff --git a/summit/exceptions.py b/summit/exceptions.py new file mode 100644 index 0000000..a679d68 --- /dev/null +++ b/summit/exceptions.py @@ -0,0 +1,7 @@ +__author__ = 'Greg' + + +class InvalidOperator(ValueError): + """ + Raised when a operator is provided that is not a member of the allowed set of operators + """ \ No newline at end of file diff --git a/summit/node.py b/summit/node.py new file mode 100644 index 0000000..861d422 --- /dev/null +++ b/summit/node.py @@ -0,0 +1,48 @@ +__author__ = 'Greg' +from summit.exceptions import InvalidOperator + + +class SummitNode(object): + """ + A SummitNode represents a mathematical operator and children "nodes" that are, at minimum, a pair of real numbers + in which the operator is applied to. A more complex tree is possible by, instead of providing terminated leafs of + real numbers, you may insert another SummitNode as one, or all children. + + Operations allowed: + '+' : Perform Addition of all children + '-' : Perform Subtraction across all children + '/' : Perform Division across all children + '*' : Perform Multiplication across all children + + Limitations: + * There must be a minimum of 2 children per SummitNode instance, fewer means there is nothing to do, silly. + * All children must terminate as Real Numbers. + * You may only perform the operators in the list above (see: Operations allowed) + * Division by 0 (Zero) is / will always be fatal, tread carefully! + + + Example:: + + sm = SummitNode('+', [1,2,3]) + > print(sm.value) + 6 + + + """ + + __slots__ = ['operator', 'children', 'value'] + + def __init__(self, operator, children): + self.operator = operator + self._validate_operator() + self.children = children + + def _validate_operator(self): + """ + Validate given operator with the allowed operators list + + :raises ~summit.exceptions.InvalidOperator + """ + op_list = ['+', '-', '*', '/'] + if self.operator not in op_list: + raise InvalidOperator('Please provide one of the following operators [ %s ]' % str(op_list)) diff --git a/test/test_summitnode.py b/test/test_summitnode.py new file mode 100644 index 0000000..2134dcf --- /dev/null +++ b/test/test_summitnode.py @@ -0,0 +1,32 @@ +__author__ = 'Greg' + +import unittest + +from summit.node import SummitNode +from summit.exceptions import InvalidOperator + + +class TestSummitNodeStructure(unittest.TestCase): + """ + Test the basic structure of an OpNode + """ + + def test_interface(self): + """ + Expect an OpNode to have 2 args in addition to self. + + operator : one of [+,-,*,/] + children : a list of two or more SummitNodes or Real Numbers + + SummitNode('+', [1,2,3]) + + """ + + with self.assertRaises(TypeError): + SummitNode() # noqa + + with self.assertRaises(TypeError): + SummitNode('foo') # noqa + + with self.assertRaises(InvalidOperator): + SummitNode('foo', []) \ No newline at end of file From 396328d73664f0a1315d3c2c7b0e377bea820d2c Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 15:32:58 -0400 Subject: [PATCH 03/10] Milestone Achieved : Able to evaluate most basic expression, 1+1 = 2. First version of evaluation complete. --- summit/exceptions.py | 12 ++++++++ summit/node.py | 63 +++++++++++++++++++++++++++++++++++++++-- test/test_summitnode.py | 30 +++++++++++++++----- 3 files changed, 96 insertions(+), 9 deletions(-) diff --git a/summit/exceptions.py b/summit/exceptions.py index a679d68..a30eb9a 100644 --- a/summit/exceptions.py +++ b/summit/exceptions.py @@ -4,4 +4,16 @@ class InvalidOperator(ValueError): """ Raised when a operator is provided that is not a member of the allowed set of operators + """ + + +class NotEnoughChildren(ValueError): + """ + Raised when less than two children were provided, stopping the operation chain from completing. + """ + + +class RealNumberExpected(ValueError): + """ + Raised when a child is expected to be a real number but a different type of object/value was provided. """ \ No newline at end of file diff --git a/summit/node.py b/summit/node.py index 861d422..fb42b1e 100644 --- a/summit/node.py +++ b/summit/node.py @@ -1,5 +1,6 @@ __author__ = 'Greg' -from summit.exceptions import InvalidOperator + +from summit.exceptions import InvalidOperator, NotEnoughChildren, RealNumberExpected class SummitNode(object): @@ -33,16 +34,74 @@ class SummitNode(object): __slots__ = ['operator', 'children', 'value'] def __init__(self, operator, children): + """ + Configures the SummitNode object with provided operator and children and requests validation + of the provided arguments. + + :param operator: A string containing one of the following arithmetic operators ['+', '-', '*', '/'] + :type operator: string + :param children: A list of two or more elements comprised of a mixture of real numbers and or SummitNodes + :type children: list + """ self.operator = operator self._validate_operator() + self.children = children + self._validate_children() + + self.value = self._evaluate() + def _validate_operator(self): """ Validate given operator with the allowed operators list - :raises ~summit.exceptions.InvalidOperator + :raises ~summit.exceptions.InvalidOperator: If operator not in allowed list """ op_list = ['+', '-', '*', '/'] if self.operator not in op_list: raise InvalidOperator('Please provide one of the following operators [ %s ]' % str(op_list)) + + def _validate_children(self): + """ + Validate that at least two children were provided + + :raises ~summit.exceptions.NotEnoughChildren: If fewer than two children were provided. + """ + child_count = len(self.children) + if child_count < 2: + raise NotEnoughChildren('Expected two or more children, %d provided' % child_count) + + @staticmethod + def _get_child_value(child): + if isinstance(child, SummitNode): + return child.value + else: + try: + tmp_val = float(child) + return tmp_val + except ValueError: + raise RealNumberExpected + + def _evaluate(self): + """ + Evaluate the children against the provided operator, sets self.value + """ + + op_map = { + '+': lambda x, y: x + y, + '-': lambda x, y: x - y, + '*': lambda x, y: x * y, + '/': lambda x, y: x / y + } + + operation = op_map[self.operator] + start_val = None + for child in self.children: + subject = self._get_child_value(child) + if start_val is None: + # Set basis for operation, need a value to work against! + start_val = subject + continue + start_val = operation(start_val, subject) + return start_val diff --git a/test/test_summitnode.py b/test/test_summitnode.py index 2134dcf..ac88b02 100644 --- a/test/test_summitnode.py +++ b/test/test_summitnode.py @@ -3,17 +3,17 @@ import unittest from summit.node import SummitNode -from summit.exceptions import InvalidOperator +from summit.exceptions import InvalidOperator, NotEnoughChildren -class TestSummitNodeStructure(unittest.TestCase): +class TestSummitNode(unittest.TestCase): """ - Test the basic structure of an OpNode + Test the basic structure of an SummitNode """ def test_interface(self): """ - Expect an OpNode to have 2 args in addition to self. + Expect an SummitNode to have 2 args in addition to self. operator : one of [+,-,*,/] children : a list of two or more SummitNodes or Real Numbers @@ -23,10 +23,26 @@ def test_interface(self): """ with self.assertRaises(TypeError): - SummitNode() # noqa + SummitNode() with self.assertRaises(TypeError): - SummitNode('foo') # noqa + SummitNode('foo') with self.assertRaises(InvalidOperator): - SummitNode('foo', []) \ No newline at end of file + SummitNode('foo', []) + + with self.assertRaises(NotEnoughChildren): + SummitNode('+', [1]) + + def test_basic_evaluation(self): + """ + Test to make sure the most basic case will work. + + Given: + operator = '+' + children = [1,1] + expect SummitNode.value = 2 + """ + + sm = SummitNode('+', [1, 1]) + self.assertEqual(sm.value, 2) From 34b73f91f90c20fe629b5cd74c76f5af9489bafb Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 16:03:46 -0400 Subject: [PATCH 04/10] Added test for first 'complex' evaluation to verify proper functionality of nested SummitNode objects. Upgraded evaluation for division, checking for zero division and chastising for it. Added more documentation. --- summit/exceptions.py | 2 +- summit/node.py | 36 +++++++++++++++++++++++++++++++----- test/test_summitnode.py | 29 +++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/summit/exceptions.py b/summit/exceptions.py index a30eb9a..f0e3a6f 100644 --- a/summit/exceptions.py +++ b/summit/exceptions.py @@ -16,4 +16,4 @@ class NotEnoughChildren(ValueError): class RealNumberExpected(ValueError): """ Raised when a child is expected to be a real number but a different type of object/value was provided. - """ \ No newline at end of file + """ diff --git a/summit/node.py b/summit/node.py index fb42b1e..f3b0d7c 100644 --- a/summit/node.py +++ b/summit/node.py @@ -21,14 +21,12 @@ class SummitNode(object): * You may only perform the operators in the list above (see: Operations allowed) * Division by 0 (Zero) is / will always be fatal, tread carefully! - Example:: sm = SummitNode('+', [1,2,3]) > print(sm.value) 6 - """ __slots__ = ['operator', 'children', 'value'] @@ -51,7 +49,6 @@ def __init__(self, operator, children): self.value = self._evaluate() - def _validate_operator(self): """ Validate given operator with the allowed operators list @@ -74,6 +71,16 @@ def _validate_children(self): @staticmethod def _get_child_value(child): + """ + Retrieves the value from the given child. In the case of a SummitNode instance, this is the SumitNode.value + attribute, otherwise, it attempts to cast the value as a float and will return the result. + + :param child: A child from SummitNode.children, may be an int/float or another SummitNode instance + :type child: int, float, ~summit.node.SummitNode + :raises ~summit.exceptions.RealNumberExpected: Raised for a child value other than SummitNode or an int/float + :return: The value of the given child + :rtype: float + """ if isinstance(child, SummitNode): return child.value else: @@ -83,16 +90,35 @@ def _get_child_value(child): except ValueError: raise RealNumberExpected + @staticmethod + def _divide(x, y): + """ + Performs division operation using subjects x - y. + + :param x: the dividend + :type x: float + :param y: the divisor to be applied to the dividend + :raises summit.exceptions.ZeroDivisionError: Raised when division by zero is attempted + :returns: The result of the division + :rtype: float + """ + if y == 0: + raise ZeroDivisionError('Cannot divide by zero, result is not real') + return x / y + def _evaluate(self): """ - Evaluate the children against the provided operator, sets self.value + Evaluate the children against the provided operator, returns result of evaluation + + :returns: The result of evaluating all children in the current SummitNode + :rtype: float """ op_map = { '+': lambda x, y: x + y, '-': lambda x, y: x - y, '*': lambda x, y: x * y, - '/': lambda x, y: x / y + '/': self._divide } operation = op_map[self.operator] diff --git a/test/test_summitnode.py b/test/test_summitnode.py index ac88b02..b961755 100644 --- a/test/test_summitnode.py +++ b/test/test_summitnode.py @@ -46,3 +46,32 @@ def test_basic_evaluation(self): sm = SummitNode('+', [1, 1]) self.assertEqual(sm.value, 2) + + def test_div_by_zero(self): + """ + Test to make sure that the proper exception for division by zero is thrown. + """ + + with self.assertRaises(ZeroDivisionError): + SummitNode('/', [1, 0]) + + def test_two_tier(self): + """ + Test the expanded evaluation capability for nested SummitNodes. + + Given : + + node1 = + operator = '+' + children = [1, 2] + node2 = + operator = '+' + children = [3, node1] + + expect node2.value = 6 + """ + + node1 = SummitNode('+', [1, 2]) + node2 = SummitNode('+', [3, node1]) + + self.assertEqual(node2.value, 6) \ No newline at end of file From ca07c7ba9f37abf1addf0feb5d55e263db93fec2 Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 16:51:57 -0400 Subject: [PATCH 05/10] Added tox.ini, testing against py27, py34 and pep8 Reformatted for pep8, nothing like good clean code! --- setup.py | 7 +++-- summit/exceptions.py | 9 ++++-- summit/node.py | 66 +++++++++++++++++++++++++++-------------- test/test_summitnode.py | 29 +++++++++++++++--- tox.ini | 12 ++++++++ 5 files changed, 90 insertions(+), 33 deletions(-) create mode 100644 tox.ini diff --git a/setup.py b/setup.py index 854032a..2dc349e 100644 --- a/setup.py +++ b/setup.py @@ -6,10 +6,11 @@ setup(name='summit', version=version, description="A node based math utility", - long_description="""A node based math utility, and by node, it does not mean Node.js. A node in this case\ - represents a single element within a mathematical expression and houses children thereof.\ + long_description="""A node based math utility, and by node, it does not \ + mean Node.js. A node in this case represents a single element within a \ + mathematical expression and houses children thereof.\ """, - classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=[], keywords='', author='Greg Gullett', author_email='ggullett@ecsquest.com', diff --git a/summit/exceptions.py b/summit/exceptions.py index f0e3a6f..54577ef 100644 --- a/summit/exceptions.py +++ b/summit/exceptions.py @@ -3,17 +3,20 @@ class InvalidOperator(ValueError): """ - Raised when a operator is provided that is not a member of the allowed set of operators + Raised when a operator is provided that is not a member of the allowed + set of operators """ class NotEnoughChildren(ValueError): """ - Raised when less than two children were provided, stopping the operation chain from completing. + Raised when less than two children were provided, stopping the operation + chain from completing. """ class RealNumberExpected(ValueError): """ - Raised when a child is expected to be a real number but a different type of object/value was provided. + Raised when a child is expected to be a real number but a different type + of object/value was provided. """ diff --git a/summit/node.py b/summit/node.py index f3b0d7c..cd27feb 100644 --- a/summit/node.py +++ b/summit/node.py @@ -1,13 +1,17 @@ -__author__ = 'Greg' +from summit.exceptions import InvalidOperator, \ + NotEnoughChildren, RealNumberExpected -from summit.exceptions import InvalidOperator, NotEnoughChildren, RealNumberExpected +__author__ = 'Greg' class SummitNode(object): """ - A SummitNode represents a mathematical operator and children "nodes" that are, at minimum, a pair of real numbers - in which the operator is applied to. A more complex tree is possible by, instead of providing terminated leafs of - real numbers, you may insert another SummitNode as one, or all children. + A SummitNode represents a mathematical operator and children "nodes" that + are, at minimum, a pair of real numbers in which the operator is applied to + starting from the left (first) to right (last) child. + + A more complex tree is possible by, instead of providing terminated leafs + of real numbers, you may insert another SummitNode as one, or all children. Operations allowed: '+' : Perform Addition of all children @@ -16,9 +20,11 @@ class SummitNode(object): '*' : Perform Multiplication across all children Limitations: - * There must be a minimum of 2 children per SummitNode instance, fewer means there is nothing to do, silly. + * There must be a minimum of 2 children per SummitNode instance, + fewer means there is nothing to do, silly. * All children must terminate as Real Numbers. - * You may only perform the operators in the list above (see: Operations allowed) + * You may only perform the operators in the list above + (see: Operations allowed) * Division by 0 (Zero) is / will always be fatal, tread carefully! Example:: @@ -33,12 +39,14 @@ class SummitNode(object): def __init__(self, operator, children): """ - Configures the SummitNode object with provided operator and children and requests validation - of the provided arguments. + Configures the SummitNode object with provided operator and children + and requests validation of the provided arguments. - :param operator: A string containing one of the following arithmetic operators ['+', '-', '*', '/'] + :param operator: A string containing one of the following arithmetic + operators ['+', '-', '*', '/'] :type operator: string - :param children: A list of two or more elements comprised of a mixture of real numbers and or SummitNodes + :param children: A list of two or more elements comprised of a mixture + of real numbers and or SummitNodes :type children: list """ self.operator = operator @@ -53,31 +61,40 @@ def _validate_operator(self): """ Validate given operator with the allowed operators list - :raises ~summit.exceptions.InvalidOperator: If operator not in allowed list + :raises ~summit.exceptions.InvalidOperator: + If operator not in allowed list """ op_list = ['+', '-', '*', '/'] if self.operator not in op_list: - raise InvalidOperator('Please provide one of the following operators [ %s ]' % str(op_list)) + raise InvalidOperator( + 'Please provide one of the following operators [ %s ]' + % str(op_list)) def _validate_children(self): """ Validate that at least two children were provided - :raises ~summit.exceptions.NotEnoughChildren: If fewer than two children were provided. + :raises ~summit.exceptions.NotEnoughChildren: If fewer than two + children were provided. """ child_count = len(self.children) if child_count < 2: - raise NotEnoughChildren('Expected two or more children, %d provided' % child_count) + raise NotEnoughChildren( + 'Expected two or more children, %d provided' % child_count) @staticmethod def _get_child_value(child): """ - Retrieves the value from the given child. In the case of a SummitNode instance, this is the SumitNode.value - attribute, otherwise, it attempts to cast the value as a float and will return the result. + Retrieves the value from the given child. + In the case of a SummitNode instance, this is the SumitNode.value + attribute, otherwise, it attempts to cast the value as a float and will + return the result. - :param child: A child from SummitNode.children, may be an int/float or another SummitNode instance + :param child: A child from SummitNode.children, may be an int/float or + another SummitNode instance :type child: int, float, ~summit.node.SummitNode - :raises ~summit.exceptions.RealNumberExpected: Raised for a child value other than SummitNode or an int/float + :raises ~summit.exceptions.RealNumberExpected: Raised for a child value + other than SummitNode or an int/float :return: The value of the given child :rtype: float """ @@ -98,19 +115,22 @@ def _divide(x, y): :param x: the dividend :type x: float :param y: the divisor to be applied to the dividend - :raises summit.exceptions.ZeroDivisionError: Raised when division by zero is attempted + :raises summit.exceptions.ZeroDivisionError: Raised when division by + zero is attempted :returns: The result of the division :rtype: float """ if y == 0: - raise ZeroDivisionError('Cannot divide by zero, result is not real') + raise ZeroDivisionError( + 'Cannot divide by zero, result is not real') return x / y def _evaluate(self): """ - Evaluate the children against the provided operator, returns result of evaluation + Evaluate the children against the provided operator, returns result of + evaluation - :returns: The result of evaluating all children in the current SummitNode + :returns: The result of evaluating children in the currentSummitNode :rtype: float """ diff --git a/test/test_summitnode.py b/test/test_summitnode.py index b961755..93ddfa5 100644 --- a/test/test_summitnode.py +++ b/test/test_summitnode.py @@ -1,10 +1,10 @@ -__author__ = 'Greg' - import unittest from summit.node import SummitNode from summit.exceptions import InvalidOperator, NotEnoughChildren +__author__ = 'Greg' + class TestSummitNode(unittest.TestCase): """ @@ -49,7 +49,8 @@ def test_basic_evaluation(self): def test_div_by_zero(self): """ - Test to make sure that the proper exception for division by zero is thrown. + Test to make sure that the proper exception for division by zero is + thrown. """ with self.assertRaises(ZeroDivisionError): @@ -74,4 +75,24 @@ def test_two_tier(self): node1 = SummitNode('+', [1, 2]) node2 = SummitNode('+', [3, node1]) - self.assertEqual(node2.value, 6) \ No newline at end of file + self.assertEqual(node2.value, 6) + + def check_dynamic(self, op, args): + sm = SummitNode(op, args[0]) + self.assertEqual(sm.value, args[1], + 'Evaluating : Op [%s] | values %s | expected [%d]' + % (op, str(args[0]), args[1])) + + def test_all_operators_good(self): + """ + Test all operators available for simple a case. + """ + op_map = { + "+": ([1, 1], 2), + "-": ([1, 1], 1), + "*": ([2, 3], 6), + "/": ([4, 2], 2), + } + + for op, args in op_map.items(): + yield self.check_dynamic(op, args) diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..346e5f2 --- /dev/null +++ b/tox.ini @@ -0,0 +1,12 @@ +[tox] +envlist = py27,py34,pep8 + +[testenv] +deps = nose +commands = +nosetests \ +[] + +[testenv:pep8] +deps = pep8 +commands = pep8 summit test \ No newline at end of file From 0113dce4f7b14a3372ba4953ceafe4324f11c34f Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 17:08:14 -0400 Subject: [PATCH 06/10] IDE reformatted tox.ini, fixing format --- tox.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index 346e5f2..c9fd5a8 100644 --- a/tox.ini +++ b/tox.ini @@ -4,8 +4,8 @@ envlist = py27,py34,pep8 [testenv] deps = nose commands = -nosetests \ -[] + nosetests \ + [] [testenv:pep8] deps = pep8 From db65605c5e4d60699b487103bb473c50135d123b Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 19:46:27 -0400 Subject: [PATCH 07/10] Update tox.ini to include coverage --- tox.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index c9fd5a8..ba506cf 100644 --- a/tox.ini +++ b/tox.ini @@ -3,9 +3,9 @@ envlist = py27,py34,pep8 [testenv] deps = nose + coverage commands = - nosetests \ - [] + nosetests {posargs:--with-coverage} [testenv:pep8] deps = pep8 From af0fc09490884058b949ec432a7839a2213ecdb6 Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 20:11:57 -0400 Subject: [PATCH 08/10] Enhanced division so it is not locked into floating point math. Now, if all inputs are simple integers, integer division is used, otherwise, in mixed usage or all float-cases it will use floating point division. --- summit/node.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/summit/node.py b/summit/node.py index cd27feb..d4f51ae 100644 --- a/summit/node.py +++ b/summit/node.py @@ -103,9 +103,13 @@ def _get_child_value(child): else: try: tmp_val = float(child) + if str(tmp_val).endswith(".0"): + tmp_val = int(child) return tmp_val except ValueError: raise RealNumberExpected + except TypeError: + raise RealNumberExpected @staticmethod def _divide(x, y): @@ -123,6 +127,11 @@ def _divide(x, y): if y == 0: raise ZeroDivisionError( 'Cannot divide by zero, result is not real') + + if isinstance(x, int) and isinstance(y, int): + # Integer division for base integers + return x // y + return x / y def _evaluate(self): From d94de0d4adbae28c6acd37654c8da7db350c08a5 Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 12 Apr 2015 20:36:03 -0400 Subject: [PATCH 09/10] Added sphinx documentation, view under docs/build/html/index.html Added Version Added package level import for SummitNode Added additional unittests for special division cases --- docs/build/doctrees/environment.pickle | Bin 0 -> 1283709 bytes docs/build/doctrees/index.doctree | Bin 0 -> 4911 bytes docs/build/doctrees/manual.doctree | Bin 0 -> 17440 bytes docs/build/doctrees/summit.doctree | Bin 0 -> 21157 bytes docs/build/html/.buildinfo | 4 + docs/build/html/_modules/index.html | 91 + .../html/_modules/summit/exceptions.html | 113 + docs/build/html/_modules/summit/node.html | 253 + docs/build/html/_sources/index.txt | 24 + docs/build/html/_sources/manual.txt | 103 + docs/build/html/_sources/summit.txt | 21 + docs/build/html/_static/ajax-loader.gif | Bin 0 -> 673 bytes docs/build/html/_static/alabaster.css | 591 + docs/build/html/_static/basic.css | 599 + docs/build/html/_static/comment-bright.png | Bin 0 -> 3500 bytes docs/build/html/_static/comment-close.png | Bin 0 -> 3578 bytes docs/build/html/_static/comment.png | Bin 0 -> 3445 bytes docs/build/html/_static/doctools.js | 263 + docs/build/html/_static/down-pressed.png | Bin 0 -> 347 bytes docs/build/html/_static/down.png | Bin 0 -> 347 bytes docs/build/html/_static/file.png | Bin 0 -> 358 bytes docs/build/html/_static/jquery-1.11.1.js | 10308 ++++++++++++++++ docs/build/html/_static/jquery.js | 4 + docs/build/html/_static/minus.png | Bin 0 -> 173 bytes docs/build/html/_static/plus.png | Bin 0 -> 173 bytes docs/build/html/_static/pygments.css | 63 + docs/build/html/_static/searchtools.js | 622 + docs/build/html/_static/underscore-1.3.1.js | 999 ++ docs/build/html/_static/underscore.js | 31 + docs/build/html/_static/up-pressed.png | Bin 0 -> 345 bytes docs/build/html/_static/up.png | Bin 0 -> 345 bytes docs/build/html/_static/websupport.js | 808 ++ docs/build/html/genindex.html | 185 + docs/build/html/index.html | 139 + docs/build/html/manual.html | 224 + docs/build/html/objects.inv | Bin 0 -> 337 bytes docs/build/html/py-modindex.html | 119 + docs/build/html/search.html | 105 + docs/build/html/searchindex.js | 1 + docs/build/html/summit.html | 206 + docs/make.bat | 263 + docs/source/conf.py | 289 + docs/source/index.rst | 24 + docs/source/manual.rst | 103 + docs/source/summit.rst | 21 + summit/__init__.py | 1 + test/test_summitnode.py | 43 +- 47 files changed, 16616 insertions(+), 4 deletions(-) create mode 100644 docs/build/doctrees/environment.pickle create mode 100644 docs/build/doctrees/index.doctree create mode 100644 docs/build/doctrees/manual.doctree create mode 100644 docs/build/doctrees/summit.doctree create mode 100644 docs/build/html/.buildinfo create mode 100644 docs/build/html/_modules/index.html create mode 100644 docs/build/html/_modules/summit/exceptions.html create mode 100644 docs/build/html/_modules/summit/node.html create mode 100644 docs/build/html/_sources/index.txt create mode 100644 docs/build/html/_sources/manual.txt create mode 100644 docs/build/html/_sources/summit.txt create mode 100644 docs/build/html/_static/ajax-loader.gif create mode 100644 docs/build/html/_static/alabaster.css create mode 100644 docs/build/html/_static/basic.css create mode 100644 docs/build/html/_static/comment-bright.png create mode 100644 docs/build/html/_static/comment-close.png create mode 100644 docs/build/html/_static/comment.png create mode 100644 docs/build/html/_static/doctools.js create mode 100644 docs/build/html/_static/down-pressed.png create mode 100644 docs/build/html/_static/down.png create mode 100644 docs/build/html/_static/file.png create mode 100644 docs/build/html/_static/jquery-1.11.1.js create mode 100644 docs/build/html/_static/jquery.js create mode 100644 docs/build/html/_static/minus.png create mode 100644 docs/build/html/_static/plus.png create mode 100644 docs/build/html/_static/pygments.css create mode 100644 docs/build/html/_static/searchtools.js create mode 100644 docs/build/html/_static/underscore-1.3.1.js create mode 100644 docs/build/html/_static/underscore.js create mode 100644 docs/build/html/_static/up-pressed.png create mode 100644 docs/build/html/_static/up.png create mode 100644 docs/build/html/_static/websupport.js create mode 100644 docs/build/html/genindex.html create mode 100644 docs/build/html/index.html create mode 100644 docs/build/html/manual.html create mode 100644 docs/build/html/objects.inv create mode 100644 docs/build/html/py-modindex.html create mode 100644 docs/build/html/search.html create mode 100644 docs/build/html/searchindex.js create mode 100644 docs/build/html/summit.html create mode 100644 docs/make.bat create mode 100644 docs/source/conf.py create mode 100644 docs/source/index.rst create mode 100644 docs/source/manual.rst create mode 100644 docs/source/summit.rst diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..42fd0421d0d88afecace87fbba05b0e79e4c33be GIT binary patch literal 1283709 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%0Ad0qf5YtjBBVPLce4a~I{-DO!O)nJ7Wl)?EYGZe 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 ^ucIlfKfLoEGIdmIX;CW!(Oi03OIIg&EJQW0N znh1_7IU*Pv&uhS8#`@{Fw7xER-9Up|wkUozsKuetW%SIkMM-v4mba)J5LEGSV7JWj zlF7TM!(HJm+i}7M|IN|q@i;6xt>AwdoROrWE`cy+MkQk^LV==T31nqkmmFO#Wne2m z8aemV=wR2{-4!#S)>2^*G}9;|0!;DHtHGkOcS!F@_g|zX>yF2#^lEsx3zH^w%}2?P zDps*Tb43njFZ!v+T)v}~107=k_T69(CZ+w2M^?(;yg+UM=_|o>(#RewcggCNGA10r zKTPs&kg543ow+5rZ2S@mnmZ*MpkVzf{eyIi@_0hJ>|TF0*SNa2?F3iQPe(^NJ|PL! z+_tZGUmsB@h~+F?txHxhlJ0aoP~O(0t#^~s`Y zo)y?G`=GKPA|SZ#Tj61&)9>!_y`0ebuAI!BH|VBeg7M>c`>WD}x$I@Z!NnS3s+Y(H zQ`;26Y!GW!-t@-gf)q6juFaGT2c|IAFE^6tpYfNHYrY;JA#?(ZP zCY564<}-FQ%9a4va$8wzaxBmo#mpAn@#unnKE(_p0bd1izAm80MoE~Fybg zylX+Q5NJXB!D52(GK>Cn*Bj_8IDo&CqHu>D zGSk<(&dDi1DwC214oufoQL%K?IX>yCX3i3xZu4@K|r_@Tk*HJx4J}rywyI*I?ww@s?Bz(L@WR}?1zL1wwrqt z(-p=$`ipeG>#VMMxT#`Ff8h#!EeqbTOPenlWQ9xoX-_@=Z_fd-z(W;_Z*>mT`05Df z$8cdq$4IHIPl3l7x!W=j2A2JJcbg9A`ku23xVn)81i&|R1$<5#IrA8XYt7NTD77Xc z5b!Ub44|0Yc)sx~X%CmoCfR^&ApmMNn&rvy&IN8X1`bSj^O$ez-SO+eP#;EeP5A_X zx};=?A*Xm;D>a;>(L>jrn|QTN+RPjDi`^Rw9 zf{{%`1JnCKr*+iTyKk4!RxJLCz$J%7MvgWVQ{xt(-0^sQn+h7YbmZ=;W7qbZ^quHf}GHky}CELB&FEZjp(?=^FZ(KP}Gda^99-nS;`S98SyeCbdBqW@ig@VcM( z)J0wU7T_qrCw%NdQw&>(YiwSL;lr+Lq+~c~;p|I^4Dv7O9F~Io=r!hQP-@c!zI_eG zV=Jy`J?Pz0iRkP1l$*@2YQcjO>8 zynx_L0t4{Ef-6&QxFnFI%|O$pWY}*74otZS{c9C@c_VQ3W0IMfiel954QYvKkq8~} zz?Dv%;n?|?L0|jyJSWZw1&Zt`t|fX1Bi)y}Dl>END;_u8(O-@`t!IB+TU@5Avf>qQ zSA_t8HmgH{=1#l@Z=aHl>d}@lF?LPom>*0rWzj&?^xIzR9uJ16xoG0rm-Qm9emxhz z=J+UtibpJ|VaH^>E5r$zw=UsNgjNPZ)w3@R=qYW`J{>(PUl_W`HpuZ&i2JYQwf5F- zh@rEsNvXZdWJL4uwiQzaAk&cx{}>)h$7CbiTI(G2cGr@%@VZAT$RW73r=WtfJgfwr zO+LaVc$DFOep^tU=Ui%m1OeKV4EGNS z5qxUV0*#!^9G6<4dW0i|9QWy^{o&v*-TtVnl8#GTmP;cEf?LLJIbnB}XfIM|m$JNs zK>L&*6&I{o1TEaC8}ZH68&+BapZ$;!!FEk|1X@e!Eeold>!wq4fX zpp~7|d?{oFaESrrD?zmAjayshj@~tfBp~Ytn<6C*od@6TuV@P%mzpHMF6F3 z#Q6+UGFl$HbQ!8J=JqLYfF93r!PNf;ILGC%+$E~i41NzXj9hwl&4=1(0wBOm7R2Pt z^Rl-`f%pa8C2hx{UvmW#IPhGh<7o)6l0Dh|zdT#4F|INI0R61k8F|A9qaYEORpNTfJXBINnQ4Kx9JWk zMl*4#KdSp7qX0VFNGKlae&P0D<;}a z6K^HphNYJcLkR9|I`Agz5Z4uoc@xnh05?*k_g_?-2w>0uS-LaENsDAr%!Gl zDvkW7XJ0DuP}A~bl?3HUD-+4szxlN^?Acc)MgjDv`B{xru}idV1oeqI-nuMmav;<& z|5RdwUjtNSkA%2{mFjTBOCtcjlU+OHp*&p?sx&|MRi}4Ep3fBPn{GlB3_L1VunxuA zds=ObuLXxkL5a>t+<^8=6B`A%IXdjpGaIePqrK&wHvPUYPTxM~H z&JXnXYz%guIgABDh6B!B+be76tg6O0d{h9 zC(&npFz!C4XV9e~UCYZ%(J2B7m$|xc_d6%_Du7DTJ}#3VHL_R#5fEHA#@(ZS7mm?e z_)Y5M+96Y3W+|b-aJ@q|OY7vN{(Fl3k;0w3&VV5+pi2xO|Jcf5|LhrF#XW?Pz_RBX z!zn&?2}=wvkBXUnoPnbJH&c9o$DQG@7xxU8m3+#~jUR&xC>A(=6tpf}1()+s(LzyY zlZ}7!+S(bUxC_29Im;a*0;0^e|jKA=?!N(0N3vmHw;VkZv1E&-VMy z@Y_jesK*4C!gfkTsv0WDzag0}cjzX65cU_Z%H7+ZA)RAlDCD2WCw&?XO7$T5U(*iK zApxAdb>jl+vdc;!C_+k>nBc@yoMB5(_SvraTL`b5ABY+sZFk$;O}gZS>e(#aP(~Z3 zXTAM_H6wN%m~}s++vABm6r@{O!b1ga8nxUe-G#-W=sNssW;DJgNWmvaV7RRs8yn-0 zmj>5@quIfs35x}m`|)VLDDg1oSI$KUP{mXM$jxTAHd3EOw+Yv^p3Mv{`+?EG@{@c@ zO`A{Lm@eCd91z_3r)eB0&jKqe*>`!^J)r$+c&axN%k=6P87Bt6;ml3?JI``b1xE3z zf00{?CMAk_FD(Nk3YG!6UE4-NKp|2x1LRIBbZoGepJpiSI+hiHC_(XU3JD7IqjbaJ z3UZR)aD>c&Deb>OIVJR~YwQ(Om|Cp{2a5Bv>OgoQcLx+gbuSxr-5+4oRmf1Zhg>vR z5p^ber0osi9v8!JA_KYhb%SC?eifBziv|tKjr>~hqAp@BGN|d5gS{?Y+>n6=9lUz4 zy7-mCY$l5h*E9nRDmx1hls|2($FjwbYPwz5HGf1z31Uju`#L@fbC2$v#vEONw#*PH z0}mieZ_nJKW6o*e1S}rNzA7~`yYW$nR*>#ZWPaB?Ea6c5@?(tyrMVv_7Ck3D_^wCq zgoJAz4&5hpcO6(V2+(I=3@9is(Hw^wNw7P>!rc0xrHDA4M+84M`ORe3LP!#+Cb z8s?Qp2L%Mcmv;{*{qI^!;lENDm-xlmxakZ6FmKXj>^}8HYvc5f*|n@|ZPv`d)f2a!n zEp30-<+bJlt|kZqm_Hs-uvMK3E+uH8qUZeF)JBF0F)|?+1w$ukg!9TpIVLC{l;@Qb zat)yfve7@pb@VMk&{E~cgbe1)mWd1vf`^#YbLP2EBlBoSgg240o(Ufm4@@71y(>IO zzN#^6T~{e~(~{hPyRJ9K`7y_}Q)yOiAh~o_9H8Gw^3oQrgrrSel2FRaEfVjP1S&90 zzQ0C_s(+ye>d9e)PFj2a^WXpT&G+wRZ^F2ibo$b242n@h| zKq4))B+?+R_O3xj9KgOa(I9B9wYUaI2!MKj5<;SMw9c-xQWZ~NxZ2XRihAa1M;ySu z*E=8+MV)YG?r%W>pLV*DM&XF!UXCCB)0H_}gCp!CFl3}fM0Rmv} zlC73bzcY6UFaY=0isiDDua!(@@+F$dd$?YdNpj|nNI)pz``Rt6_dU|QCydp9P0N*FG>~RVhc;;?V z7%t`OLyD#-jd;*kl-h{gjW+KpjbVc^IzP z^1Jl=84%dAFMK&}ph16+e5Fo0Tb=5 zqHBUtfP8I-f_aX1d%c#0c1id#C$MA6fZrR9j#};Zv+!i#CJs!N#HH2<2*95Lg-YC^ z>&!mcBa+IUE?2r^%i>Zfm0eK91J%d&;zi<1kyVd<*4O2+Y++D8`=P`IvltEV9ndq1 zP`@=8JR8JYVwZx@k~CN?CK#jrBy1<2kav_UYOXe&VLzGhxJ_Y=JEAvcDGXAJdJu0E zFL(RB7&_ObX$B0cH46}wx3XD$5;{=o=342dt_O?+icd$A9ZH5^Q!ToWJnHVzI0-2` zI$f8J28gG^Okl2GW`}JVUG70@RuHjBg1Ffy~C@@|BfS<{-tUFTHjzPybIg}eTkB1DpH{lV&U z%kNqj%UYLEAh@&=g*rZ$xuo?HI)MQ6+TPA_s~`T;HFBJ*t3oEURRICqE3|_gk~NQQ z3YT;!`2d_@0QOmiFk-lDHl|QxvdhVxF#ppk2saywwvi+N2 zAo)n&(ZWNwya8G+*OI9isFo%gfZ)3v9<|M-Lf7%5td4~N@GS|T+YQ5Md+xPZa-#+n zByKC-_{89jjqPk(xkSzk19aIJiwe@4(MPiVUGHRzPU5n~xF&ea45pZhP@s6A9to@c zSELBtYtz{`JGRXgO>j)oIM2`Nu%P`(b}U-c0DmMkQIzKJO0;d;|L`oQ86aw$eVIyu z;(StGH->;EgGnX^x`NUV z1-X)yjhB3vC|}Oe3 z(yL3$WW0V1fRtNaGYsqGO0mPbd{=a#MdxZFM+4L6S;uEGg>5U>*v_DuqpAXqBHYrY z05bc^@yS?q_^$osZHE8`1k<(6F4?|z`@7i!<{Ag(I4h92BBG5T%M;RW*yeL}SxHer z1I<-9FOZ>B*9b?hle%U^-)MqSfNV4;iyUC`f;A^iRPc(GH%dar>J(CvY&1`81G)~p z*?NvTW?yn#5Z?*Yd#O7d_x7=#T1uBeQ+&S{E; z+G%1cF!&pO35%2QA(_F43K#q6|Mu*ohwWaonGP@(xjsEG^=JRgN&8)D&5 z92{y~I-9mB2t2XL7;r86iUBT7GyuVOmjW0JcUz>i9qt;%I*TqY^LPdTRUHdFw@9l# zI2i{WJ^iq)=h|Q-H&`l2pt#&V?TZ#&7*u>1>jj0F)irZvviicTN*A_Q^oh=fsQK8wv zp$UrxmOEn`zcw$o->h^y730Rf*$ z7oZ^hNN0KAqYK>fT;`g}iXnZ)Yfu9ad{@K-+SbdppjS+%83VAlRoTJ;PA$4?BxrWj zKob@VEFbGK^^`(+bcVZ!rxMnI_+;sGDcBVTY?`QHg7uF6i`D*K_f5Xiy2hX8&*(BR z@H}Ki1z#P|)3h`oj>ye4#8s2Zx%31U1&sDX0Sn$3VXaV42&wBDVM-MWTp1k( zchdP4h>{Og$}qI?Xiq%hXr)iLQ-*x*E$7b$EN;oKeN>*S|n~(K)nh!rq?7I2a zb1KO^jkl?4&>+9r@AIYd`np86mVxb(DKs-`s)>ZeV*s}6xzhDa3Y`oG(D!87U8*YW zTxa6S!d;?)>W)mRHrbQ}H+b7St~IH4>1c;|AJDPQ?QejwrkYL8r#v!!wV3n&8tT#Z-X4GXSDWT8v;Hobn99T{Aa;w7*I zgYgjKh<`KSQH;BKHVg{E@Ya|e53YHs0ASTbjs~V%DzQH9?2+&r&X=-)xdeI54H``t zC~#bn;}U8u=&oI?a^zwRz&^;7N8&|e8_KmOXCSCX_9cS_Z9E>!9A4a&3w^1XOQxPB z(Ii0d-LcpBbQrfabgi7zF7hK5Xdc?_XQNButNWzauwaY9j1t1td5>AYWPT zP(JLtR%^-w@R%1+#bL3tlU~zuHIkkW0j&u>EHV~Y3gr*`aF=?*^D2KzR50HscQlHd zqq@oGC%JaZHCc^ETNMgKH^c5sYS1S^$!ojcbr>lXXiYGXTn(512mMLb`z{eQGapC@ zK)ptR6~=V!m&-~nL98ryfy6D7+Y8YYks0q&ElxKV3P2zTk48iBw%R9MV)TEeP7orO zN4J7tBx|CH2*wX60QcMz&;;$~yxjPUBeD%B71n2J`~nH^4~+p7Ma37RDmy-X(=KM^ zMPvplXm33UvEpf^+!*xo)zGyIm&2-p2AX(C&h8&#zn}e(T;hT49!coYR1#`y+m5b5 zR#t2ZBIvI3!EK{=l1crpC9C8qp}3QFt#Z`X#no_GZp@nO3*&+4Qh18h;-ATuDuDp> zs#>;p%^}|ftQp70M_=jh3YTiVL>oT?1vl`toKCjdeO%(QQBfr z$F+P^B)1X`RCgo@szzM1P3V$-DnV3pEYRFgP4HGH9D<|&hHL-Ryl6U2L?GZ(G(2<3 zu|B96&$v#g8BB9R7r>ytzBufS56NMuw`*&5rZuXB0>SNQ8=q83GWuMCRm_h1#FPO8 z%{5Z;!*V*Cmagd@bAlnJy69+tKd|S>pgiaf^J`Dn)}bJv(L^|z=7?a7XRY-?I0Y}# zi#M<7Vm@w+XFqE-0KxZ_ozr50&%uNm5!qa3Tow-XwI8P8b6f9IRI2e&t0FP*0^+K= zfPi{BAP7Hv-Jw?o?BI8)Xpjr|CO-gglk5@V_TbTGbXr_6TnPip_mOPik{{Px*PxAtoC?aM;TRO2Y$QV*wlF9x_FM~> zf}m!aXd;3!-s&wsUt1~2Tmw=MZjlTI85RsYw?-6#qjS_+4d>o$Q+A!aBscd}6A2X8 z;={alac~WV%HzI_k+)HB5gnaS;Ig!^pS_JTFz{S`P8P}ZR>W&tewWNr4znBx;I~zj zXCC3^$NfHEwoKjxys!*M6f2=m|{(&82|@SMVpIJ5@4M9k=!;6at1WXhk2vPharf#T$zcEiv;vWK}= zsi~?nMgj#ETv_7Jyx`(h-*B2Xt9t?i&xd~rZ#Z?$>Bl7|As3p>W6`CZQUIPt63j41V68>vhUDNX9lyjq^GeN<7so%>lpIw(n zArlBvZlHZ?H{N80CKlW>(_Jg41p<@(&_o9N^`&^4w#{~?>w^*s1X0b3RX@%Rw8FG3n1V<@xY|Xn$xviXuxS~f!0{1x4xIY`)ETy( z4LX_8ipwprz%ZR&!3FJy4Yx~|SXwSU1_iJ;f7d5=x0)<=Rgep1nSiMLg-B3IS{}fW(VW-LG!@v+AJ~@ zEEd_992dm0N3rJ>&2`z}qaf}QuB;GZHmC|HIIqhCr8Y62U4AS(iBG{OE45e{4*(6Pc+;!L+85d)B)tClHPfz<+&@J*O& zdsZkOZAM{L!{x@aGeYJ(jS^WtTw~56fY^R8kl=ei7jIlXYvmrJ5CHsecW`n#|CJ5Ut>hYlQ;)9&Bsj0~HM5SQIXa@OO%4Qbx`5mx{W@ar z*oDHSr)uDrSfGHrM6R;znvK|H_5T)aCF6nZI^E;JrZ#V{GmWeg3Iv(AC%wX*>6u+8 z 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 Re@NG`kj@be!a5cB{{Xh!{Br;R literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e8eafc425426785b1a5e3e5b1d103212db9ea59a GIT binary patch literal 4911 zcmds5O>ZPe8Mb%r@r>>9SF*d=WCOhmQB2se z-RY{f$A^_Tgq1DT37QiU5{Ls5C=w`VIB_C}h=0I=0|(BWka*te>G`l{VH0s;rCIlM zSHD&7^E~g@{BYr?Uwm%P{j+Of668ikdPgN8*M+UqjhHJ_{G|BOPR&6eRJ*H8q{&S-=b1ez1S|j^>#@{C38Bhi{z*f@SerS<>f$(TAy2VV0zR zhXqGmh5q|F*G4AF-#f(C`mi)}h*f;BlW9|k+QR~SE_{~{=ur00Z|89=jaMC%(c50k zwBec8l@Y(|1sP|ChhFD&S*Jp(LF@fo21nYk%y?M*cCNf{q?xyO&)a)*fA9YO8(;J8 zy}tLAo#pqE+zXiUSjbZ286mYZ>A~SN;)X}3o=Ln@xavjnNUGjluag@O$I&9mqtIi< zi#X1*93;vxsbGV9S&|s6~Q z)82WPN00+2A(T>lRZolY_Lx=x`7G;!`+e{%UOZS5FM(I_1!(>id_IrQtN7f0SP(fo zB{|~j;x)179BDu&te3G=%sy@70dxo<>HVogP27grZ9dq2P82zGkv~-WK9X(H8Pa!NpCx=u%2y7kW|BA=@gCJ3QlIaWF?XBda0i zNfT|`9Bx$|#Bo8KfD60q#Gw-vofhZB%J;<$@d8jebTGC@DBAU*$E_0(l=7@#|A|yG z@lM|1PgQ}vb264*>G5UhG17{?JzUu`NvmAh(yghCS+I#{cgO!SNWEL-{BbngyLbyR zu=O1k%7AN+sn9d5LxhY{88koZIe@aI&YmA3Gz*Tip~j1m##cIdgyic-66IiAmc~b% zvkiLYOT*(C3&b}sx$pzKnxgt3f%^mG$yqPW*_u=??@nwV8E$b<2t~T6@`_t_!ZKByIZ2aA6vrMnC=J#2F5~xiOoRfBqLz#K+TYh))~~;xEW|)$u7f{{}e!HO79p z+f%Ur>u~X>!Jdr&@360F&ayyUM81D#es1nFfZzWd-UI&4GAK&pljy%N6aD^Oy!M$1 zsC)qY{TJQ-{d@Fh6ad3bXOqysKK06{prYCZY*79mNBdON*2+X!*!kC7DI$?n>5{6) z&&s!F=U2Ohz_^&S%W6?QX(64rhUt7(dEj=-WK8L9lEprnN6mV!(mEnggv$v4Z4|XF z6X}L>Om6E)GG(XvxUic#@1XBD7(USZqo`9qYnMYFB$?~zQH8gr){I`Q%g}eNd~q;u zH^?b!r~NX2QDXok=Iv^bXVgKXYM^y)+YNmhcaq5Oq8C>Q_0LG9TP!z8b!Tj}Il6@- zyMr}ocgm}-?e4z|p4;Msc1}smK7YZq@7{v>YZo63k3CoRH*@VBs!Q#AEW#)?QOWG8jxq3H!gB7O+m|$2 zqtxdSr{PWeC(;PN8VcHWjS2!)L@eVh24>Fz*dz-<4;4$U0&1+<_7=~wB=hl|vQ^J7 zzY2&a!rAQx4Idh_hRAptxzS|FA8Es``=Qj-GWZygy0Qm@iy`mibkTsk0#5H2XSNyU zaq5q}#sP^fAM9h$>B>Q2uShulGMtJ>v=a7c>Qun}ax6Nx>(0(dxa7fF)(yrh-5o&c z`Z|9=>P98KPJN~?6-FwjQLgCFAr7_*K%iYU)+zJ{txmtcp5!LY%?PH#F6O4&`YPz- z18GQYCf9z%k9kC+-8!nT!Hf%7VhnT!8(m9z>bqm)S>&U+0i4E7dOU5t^7?&v-$aY) zW@*U$2+~-j{`a)7Ys598;#g{F5-1ATvJNN@shO_Z+6eqL+GK>9!(y6W7!A_Ih( ztxE0_{^0h@7jV2Nw_52b`l1lv0M$5!`I7Wh^E|{BafDmw_~>T`&3&L*SWg&}>iyl_ zlarI3^wfw%?Ic-mH{{2=SgChmajZ4;5PL8IMI%Bh2(D08!I(erh3tt4AM{TPQKEWi zzqmTarjCb{ICU|HJGZ2ol*I*i`X3@0pnS0t2&WVrFlf@aig{%W)&|G$LV55My|>_K z+|KPv8Dy04j>umU`PkoEmA@uQ@OzKsrtAC_CXV21vrG=-bg(?MMqt5@=~Dw6C+3z$ z0NZB7R4+#{fS)1sc?H9p-9T5G0PIQ98|W=L@;eDK@7OgAuUIirN$kofPALuA=466) z5^JK*b%9rASriRwap@-xTrN?XF0Z#;k}h-W2jWR?8`X=>%vx0*hKZ?dHz&6$jiYLH GcK!_^NnGjx literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/manual.doctree b/docs/build/doctrees/manual.doctree new file mode 100644 index 0000000000000000000000000000000000000000..aba1c7ac81896d1da4f260dd8bbeaef44e575c38 GIT binary patch literal 17440 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/summit.doctree b/docs/build/doctrees/summit.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0629889a829d591149a31b9820f4660ee9876c8c GIT binary patch literal 21157 zcmds9dyHJyS@&a~W3PAZP2x7S>+6)tv++KXCZcGo1RTdIt(%SQhDTF}**i0L_TJ+= zb0_!S@$O1VTcifo>8T3sM3fYS1Of#CqVO+B2&DW&TJc9!HMBH5i-ZIc5~_rtAb#I> z?&I7$cV=gHUB|(acW3XMd(L;h=kJ{Jo$oVaue^Hg0RNN6>RzoAI&QGs^6FO5l~eSf zX|=-cm%0ltcE8wtv0Ii?HQRCPzSZhJ*R>DG$-t_Gj@QzgOaxxXuUTFB^u^WdKNVPh zaQ(x+wQ>E*cFi{Z<`v%)cqzEvc3O4cYgejf?S|E=SDx=!0rgdR_&P=ouB&dY2c2fq z377pK?AjC0b;}raJaj_W(#EuB>|^vLz8ibS+9HbO{FByA%k|opZ(Oq)7Dxt7FJTgD zBGbOP853IAR8F)_yo6EbJ5^JTxlYUKUOpsCW*GWTwG)Cz#F5FGYX$-Sc#c@sX}8Q~ z^aoAMw;KG-c=GtLQ>P~#`;2|WK4_2Gr|tL3$9;wGT#Aj_~gdlI!Rz2#KqyT&KR5+uN(80N`?K!|)o0 zHqGUavo@@u8EXUPaZt?z^vg+z%XgUjWjPVxb#O%9qrGpG6`vNm@`U=dqvE~_T#dO$f@@z`9QD$v1oR&T-P;;L~MrM*%ha~6; zIR>k(W#qw>mF*{B+xV&yIMA`M<7X}B&I^qwnq`X2R?7>`oCATZDJK-Sbgj0p zLK-(&g(Hsl(O^$$aMA|^7eH`N$fIg#C^8vb>f5w&kLuFs8GUDj(X%~)hL@OzX{Mn+ z0i{%BdWL^>gyHpmF!-H^~o9fFO8Kd{BDal}GTz+G@K_%?Z1=5e6%& z@e281jsvj|l;ddb)Vua;6e0NKy4N(FR#zSl!aDpeb+_Gyubql%W~ce>h`R3*bus5D z&}a@;j)5+}E641x>2e4ncN-Zm&+S{CYAQFH-gv_yG;oW%SvM0hry3pCRZ)~FwbxBK z5yeG$L^El0!H%VCU!}pE$Wy#GHM(-F*NaB1LJM8+*=3zj9;D{A!Yn$9JqTfxX|kFP z-)!5uYRtSH-u9%Ne8L1mSv7QxOCQ>2!~+Kp9Kh7xO3W_>RFkd)CtE#% z$!m40hOu}_&tNq)rs|J$Sho=SKXr8$k7EQ#ZhN&*Ye>;p*EdbS1@()KA-1HLAJ8dg zsC`;INwZn9VE|C!7^)Qe9&w7=G9Z-qMe-_O!Wm|QFz_oC)}7ZX`2II87^%S+zSZ`v z0QL|VrqMJ*+rkg0X1YdfN`~30C)Q*@*h8!tk99 z8xH{6!v#gqvaZAbza|D<{5e(`!u%0d-cVY+UjTUlw|r6fWwULu!)Ycb6+h)rECh%$iD4cH7X zn|p9vA}ESS_vBhu;MJSDPoK#&A0zn`e+|>0f0|(*7V9uQ*Y!57`fA363L9X`pHHTI zbPzZczew{uEnZR6eVO0FBueQdblRYcIft0c1;l>!-1&3Hs&U2g8=l`ZF4XJHFH%Qc zYf9&q^kyILR72n7%?-n>`OxQF>lMBAlg>>i06U7CKBzZ+s^f+ZAu(R}6upq)ZJd}E4oiolFgV?wdw*O(=Q0tRdT&nuR^USMIRcbX!X2(^8d zCoW#XuN1H(_E{F6EB*q8d-P)tcK+B*f~%yS`x~y zh+o$!ptyEG9;sp}VTF~vPsO(k?&*1t2PHT3>0DoXnfK$*AkJY&uM>nu)gm~hU=ew& z4L# zmcd|P@qz{vm5C)t)Bv8mM$3&gwcN<6*=TP<(N+>gJ3dg+&Xb0n79Sj5(G<7iH~KN* zcDSNPKM{d&+65zz!w?F_nXJBeQAQ8QB^qYcyO}+N*jo=^-_?YDCkC?bDaF1|DE9Sn z=>y!(yUT%Pts1@Yb|K?P2Q&k*RzmFjKw?crY*P_Cj8jq5%Q=<79QgjJyHbB{ z4Cy&8@#v#^jw^d2)-VQ=+s`txnf(rL;f4$2+0mR97B+Fy7)7-{g?Ndh#Z_@xcK}A-9|z4CV+!Y2Hx#S=xuw(PZgC zW8a}_lwgJNMhQGMRY#9oe17u0F?N%?TlG#=An zeHm-MMdOnXFMeS0k>?glk7EbTX@%vWxqQ=fJJv$!M|F<_PM;BPCR{qpT$0mUO?NeD zo0O9=#k;gVf;6A_YX>p3olQH}8uRu*44C{)9)F}0^7Anp;LlaM2PXn(tD7Y00%zrC zirZ+s>~m;HVDv%62n-@^v@*qsYs{)1xgSO&{h+On zUH&fx2zAVm_626(Y&dgBCuZR@`HW5c2VO~z*~C1a%lT9`8sDKpsaNEm=K>N_L*SXJ3F3tqnG>%;v`O$)Pd!6qFC8e$tgM`=O&^I zzRJm#r}ACYvCl+&07^$%S*u~qYTz(!loXNk$sx&p3?S|V=bFV?BX_w0r1X=n>jv;) z%>a^Cxs(9$(cui>67>}sK+@M>16ai?0}LSTg$#fj4>o`cDG9m(r2P~cK*EGw3?S{j zp8<$-AVBufeX)oyMT>qc;Rh?cSfLkgld_jNbPeU|PxW#2+{0~D^XKnm%#VoA>-fuH zapdI3Rg=7ee;zG#FWtuh?odZc!K01_Yxj$2pVRI+&AmtDl4^6y!K(e)bnt>s3iUdf z_%3>#cD)b1{v*&gyk75ya^u{Q!362)2$9T`k^NbJVlo+r2q$!MP<%{SnCHn!jOF4a z$0%=fi7?hul<8n0h$Z=`gpH;U!G_F3eOF|p)>h4G(@|tll#SZI6%fHUzzDU-JvI>8 z|5c)0;yd(_lT-CbD__{JC8x9Kmx!vh_(%)Z;nbhz<4|P5vHd3J?38Ju=cFPR^!{F6 zr75ZJQo@K+Qqytzd%Bb%j5~6vsdoi8`X|QD=GiCD_ONF;-=;6NDPV;L?#1^>U*L1I z0RQb*m$DsdAa{B!2?C`={+YZj$oY&oie^JZf=TL4MFPDym<^@E{zCD%k$YH9h7U3u z;XMASk;gCU6?9NKtPb?F`S)l?J{&HNN`&}t9fF_1}v!HN}sUCP^NJ4}Has0!^R{OmPig zszu2&)J*39sR(fo$7#PrzlO}bY*Jh0ChyN>UgjpQHV|`qm4p@u_h+t|PJo=YP1`~; zP;yGfIdPo(MoEfDd87w8+D4P6MY)Z1woj*MQ8ra6utItiuLuKux95j92-x@A;DthB z2L~dtlxN}(nAOqd>TZZxGhy-=qF{R_TAd~yF5}=7aQ;&a*$>6%a6oP=Mtm{h zywvhK8}`Nc-kgGn{Xx<3-dE)NdYs~NZ>zlmqt{7%J;3O0U{e+v{dGhqtV{ zXf^~i`WE#z6g1MtEdnw5@&9$?@r!ybfJPb}1v-)^;|HUXA>JU4s5?Tp4IIsnD`D&c zj%Ly9PJ$zz>X6{*NJ`tN;3(Cx-N4b;!229HifI)5-7w(j8zevljv`qWfTLK8dce`$ zVemu1qYJE4`-ewYa=JMJJo*^x#1QaEW&Y%WeS*M~dq~km6$Ou2czxi}vlyA-k@!`T z_7Hf8*abYaPQQl4LyuA0ec+)uqQFyEbUfr*$f5@NX&K?BmnJeI>(7dA23U2Z_=R2@ zcf)Z-z>d?5u%}eQ<#Am9;7c9qwgFx8$gE6%_=5o-h2YIF_$cL}c!60zEIvxDcpv!a za~N`u_~_Gj6dzH(ol3X6wAIFCG7HxXX~i9H1s80gohW!m{zxxEDrmM>h}0zs_CTb& zf>T+H^jbvdE*RSq#jI=_(hQvrmsqH>6QXEp?sT(>*G8HbO{UKb8=ZHvmR{0)?pWcNvP=E%T zM|G#crENlka#iRKrMfS@f@7(UWo#m&U0u1f>RG6Cr^W6f z5s$BZwWNJT$G>ArpVYO-dp?}!$C;Dd`D4n8}a__o6-5x%#L==iMiLap>WUEd@6$Z3YA~W_+Dx4hO=_a5&?gThN?(UE@ z_}wI0M#nXJQi1qo%m9Zcl&&NwCyJ*bC>)Eg)3__5jTZJ1o|vGtL1E*8p#4>`L7%>e zAIW*djQAeC#o)a!QS@4#DDE&-y_hcA_7Jp#!Ymb>)Us}S%yL1;P94&*w&&yiPIrxf zk(`btsfux751rPCC}nn>N||wOGprw}Y6pszOz_rzpymF`qd^n315k*JHRhIl57nS* zS1i|}GH5|%(+TYg*QJ1FtjS|k2Lb~?mEf71crp*&^!z$BoNB|s=%^UgnmlFE`Ah|W zdt5L^{fTvO-39G(jtYeZC`VvpJ}#%}PFAAYWcD#RTd6yNiOcjAR2*qI8|ZMnZdE(< zVVdqJTl9W+N6yqc&2}Z3H3%eyufTwi^xJT@y7CaJxX9C(R5P&*Qb*+yw#VEg~A~D35|6Fn`?kk4+sW40F%E zKkIeEb|*~O1byy=jin!h_^d4_B!dk*LB%D{*1bF~XHmW;M6oxprHSO`5Ch%Yw%QdY zqvN|3TyO_FL(Y1(+Dq?$=uymmCiH4ta*m4XKsCl8Ss!Idj*+b4Sm+)%)iWaAnpKFr z9@^c@Qz#=9GyfP3l5mZAk(Do%muWxx$OpT!WScI0QcUqoBta&Tb@bkv>zOwysFmTk z71UNk2@NVGw}XmZBm<;+TYk%QX^bqs-0JZn_oh^q4iRt4PbO2ZDrcCfm#vbnj5)R@rrTFailv4T*u zf|kJwdQ5cSz%HfnIVREGnVe_XG%fl@+N>m~+eIkZWpY;$;W z%4z9pk(-YAE?f%0qq&(V9C$E8bqP^5BxTkd9kWp=*~TuEZK3kfE#xP2r9uiCH)y`3 zJCa#Z^SIjBTF@S!^*sbB5ZiqHCr1U#8b=@ z#g^nD)KipmzEIoGt(0n7}_M-m%-a*X?x + + + + + + + Overview: module code — Summit 1.0.0 documentation + + + + + + + + + + + + + + + +

+ +
+
+
+
+ +

All modules for which code is available

+ + +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/summit/exceptions.html b/docs/build/html/_modules/summit/exceptions.html new file mode 100644 index 0000000..4973301 --- /dev/null +++ b/docs/build/html/_modules/summit/exceptions.html @@ -0,0 +1,113 @@ + + + + + + + + summit.exceptions — Summit 1.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for summit.exceptions

+__author__ = 'Greg'
+
+
+
[docs]class InvalidOperator(ValueError): + """ + Raised when a operator is provided that is not a member of the allowed + set of operators + """ + +
+
[docs]class NotEnoughChildren(ValueError): + """ + Raised when less than two children were provided, stopping the operation + chain from completing. + """ + +
+
[docs]class RealNumberExpected(ValueError): + """ + Raised when a child is expected to be a real number but a different type + of object/value was provided. + """
+
+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/summit/node.html b/docs/build/html/_modules/summit/node.html new file mode 100644 index 0000000..a6dd6ca --- /dev/null +++ b/docs/build/html/_modules/summit/node.html @@ -0,0 +1,253 @@ + + + + + + + + summit.node — Summit 1.0.0 documentation + + + + + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for summit.node

+from summit.exceptions import InvalidOperator, \
+    NotEnoughChildren, RealNumberExpected
+
+__author__ = 'Greg'
+
+
+
[docs]class SummitNode(object): + """ + A SummitNode represents a mathematical operator and children "nodes" that + are, at minimum, a pair of real numbers in which the operator is applied to + starting from the left (first) to right (last) child. + + A more complex tree is possible by, instead of providing terminated leafs + of real numbers, you may insert another SummitNode as one, or all children. + + Operations allowed: + '+' : Perform Addition of all children + '-' : Perform Subtraction across all children + '/' : Perform Division across all children + '*' : Perform Multiplication across all children + + Limitations: + * There must be a minimum of 2 children per SummitNode instance, + fewer means there is nothing to do, silly. + * All children must terminate as Real Numbers. + * You may only perform the operators in the list above + (see: Operations allowed) + * Division by 0 (Zero) is / will always be fatal, tread carefully! + + Example:: + + sm = SummitNode('+', [1,2,3]) + > print(sm.value) + 6 + + """ + + __slots__ = ['operator', 'children', 'value'] + + def __init__(self, operator, children): + """ + Configures the SummitNode object with provided operator and children + and requests validation of the provided arguments. + + :param operator: A string containing one of the following arithmetic + operators ['+', '-', '*', '/'] + :type operator: string + :param children: A list of two or more elements comprised of a mixture + of real numbers and or SummitNodes + :type children: list + """ + self.operator = operator + self._validate_operator() + + self.children = children + self._validate_children() + + self.value = self._evaluate() + + def _validate_operator(self): + """ + Validate given operator with the allowed operators list + + :raises ~summit.exceptions.InvalidOperator: + If operator not in allowed list + """ + op_list = ['+', '-', '*', '/'] + if self.operator not in op_list: + raise InvalidOperator( + 'Please provide one of the following operators [ %s ]' + % str(op_list)) + + def _validate_children(self): + """ + Validate that at least two children were provided + + :raises ~summit.exceptions.NotEnoughChildren: If fewer than two + children were provided. + """ + child_count = len(self.children) + if child_count < 2: + raise NotEnoughChildren( + 'Expected two or more children, %d provided' % child_count) + + @staticmethod + def _get_child_value(child): + """ + Retrieves the value from the given child. + In the case of a SummitNode instance, this is the SumitNode.value + attribute, otherwise, it attempts to cast the value as a float and will + return the result. + + :param child: A child from SummitNode.children, may be an int/float or + another SummitNode instance + :type child: int, float, ~summit.node.SummitNode + :raises ~summit.exceptions.RealNumberExpected: Raised for a child value + other than SummitNode or an int/float + :return: The value of the given child + :rtype: float + """ + if isinstance(child, SummitNode): + return child.value + else: + try: + tmp_val = float(child) + if str(tmp_val).endswith(".0"): + tmp_val = int(child) + return tmp_val + except ValueError: + raise RealNumberExpected + except TypeError: + raise RealNumberExpected + + @staticmethod + def _divide(x, y): + """ + Performs division operation using subjects x - y. + + :param x: the dividend + :type x: float + :param y: the divisor to be applied to the dividend + :raises summit.exceptions.ZeroDivisionError: Raised when division by + zero is attempted + :returns: The result of the division + :rtype: float + """ + if y == 0: + raise ZeroDivisionError( + 'Cannot divide by zero, result is not real') + + if isinstance(x, int) and isinstance(y, int): + # Integer division for base integers + return x // y + + return x / y + + def _evaluate(self): + """ + Evaluate the children against the provided operator, returns result of + evaluation + + :returns: The result of evaluating children in the currentSummitNode + :rtype: float + """ + + op_map = { + '+': lambda x, y: x + y, + '-': lambda x, y: x - y, + '*': lambda x, y: x * y, + '/': self._divide + } + + operation = op_map[self.operator] + start_val = None + for child in self.children: + subject = self._get_child_value(child) + if start_val is None: + # Set basis for operation, need a value to work against! + start_val = subject + continue + start_val = operation(start_val, subject) + return start_val
+
+ +
+
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/index.txt b/docs/build/html/_sources/index.txt new file mode 100644 index 0000000..1ce76e0 --- /dev/null +++ b/docs/build/html/_sources/index.txt @@ -0,0 +1,24 @@ +.. Summit documentation master file, created by + sphinx-quickstart on Sun Apr 12 17:14:39 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Summit's documentation! +================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + manual + summit + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/build/html/_sources/manual.txt b/docs/build/html/_sources/manual.txt new file mode 100644 index 0000000..92c5d1e --- /dev/null +++ b/docs/build/html/_sources/manual.txt @@ -0,0 +1,103 @@ +User Manual +########### + +The Summit project provides a simple mathematical evaluation tool in the +form of a class named :class:`~summit.node.SummitNode`. + +Operations +********** +Using this object and standard integer or float literals, you can perform the +following operations. + + * (+) Addition + * (-) Subtraction + * (*) Multiplication + * (/) Division + +Now, knowing the operations possible, you probably want to know how to actually +use these. First, we need to know what we can perform these operations against. + +Operands (Children) +****************** +:class:`~summit.node.SummitNode` requires a *minimum* of *two* operands to be +provided. This is so you can fulfill both "sides" of the simple operations +listed in the `Operations` section. All four operations require a minimum of +two operands and as such, so does :class:`~summit.node.SummitNode`. + +Now, what are valid operands ? + + * :class:`~summit.node.SummitNode` : You can model more complex + expressions by nesting multiple :class:`~summit.node.SummitNode` + instances. + * :class:`int`: Standard Python integers + * :class:`float`: Standard Python float values + + + +Simple Example +************** + +To learn how to use this project, it's best to work with practical examples. +The following will be a very simple example to get your feet wet, there will +be more in depth examples later. + +Lets start with a simple script; + +.. code-block:: python + + from summit import SummitNode + + root = SummitNode('+', [1, 1]) + print(root.value) + # will print '6' + +The above script is 3 lines of code, simple right? Now to the explanation! + +The import at the top is basic Python, if you are not familiar, please use +your search engine of choice and look for "Dive into Python" before starting. + +Next, a new SummitNode is instantiated with the addition operator '+' and two +integer values that we want summed within a list. + +.. code-block:: python + + root = SummitNode('+', [1, 1]) + +Why a list ? Well, we need to +allow two or more elements to be operated on, and this is a straightforward +method of representing that! + +The SummitNode will automatically evaluate the expression upon +instantiation. Upon successful evaluation, the result can be retrieved +from the `value` attribute. + +.. code-block:: python + + print(root.value) + # will print '6' + +Now, for something more complex! + +Advanced Example +**************** + +Given the following code, the SummitNode will allow you to evaluate more +complex mathematical formulae. + +.. code-block:: python + :linenos: + + from summit import SummitNode + + node1 = SummitNode('+', [1, 2]) # 2 + node2 = SummitNode('-', [10, 2]) # 8 + node3 = SummitNode('*', [2, 2 ,2]) # 8 + node4 = SummitNode('/', [node2, 2] # 4 + node5 = SummitNode('*', [node4, node3]) # 32 + +In the example above, the ability to mix integers (or floats) and SummitNodes +can be used to build parts of a larger expression. + +Of course, in the above examples you have only been shown two operands being +provided to SummitNode, however, this is not a limitation, you can have many +more operands, the only limitation is you must have *at least* two operands. \ No newline at end of file diff --git a/docs/build/html/_sources/summit.txt b/docs/build/html/_sources/summit.txt new file mode 100644 index 0000000..cc3abcf --- /dev/null +++ b/docs/build/html/_sources/summit.txt @@ -0,0 +1,21 @@ +Developer Reference +=================== + +summit.node module +------------------ + +.. automodule:: summit.node + :members: + :undoc-members: + :show-inheritance: + + +summit.exceptions module +------------------------ + +.. automodule:: summit.exceptions + :members: + :undoc-members: + :show-inheritance: + + diff --git a/docs/build/html/_static/ajax-loader.gif b/docs/build/html/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/alabaster.css b/docs/build/html/_static/alabaster.css new file mode 100644 index 0000000..0857c04 --- /dev/null +++ b/docs/build/html/_static/alabaster.css @@ -0,0 +1,591 @@ + + + + + + + + + + + + + + + + + + + + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; + font-size: 17px; + background-color: white; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #ffffff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +div.related { + display: none; +} + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebar { + font-size: 14px; + line-height: 1.5; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: 'Garamond', 'Georgia', serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; + font-size: 1em; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #999; + background: #999; + + text-align: left; + margin-left: 0; + width: 50%; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Garamond', 'Georgia', serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #FCC; + border: 1px solid #FAA; +} + +div.admonition tt.xref, div.admonition a tt { + border-bottom: 1px solid #fafafa; +} + +dd div.admonition { + margin-left: -60px; + padding-left: 60px; +} + +div.admonition p.admonition-title { + font-family: 'Garamond', 'Georgia', serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: white; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #eee; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.footnote td.label { + width: 0px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +dl pre, blockquote pre, li pre { + margin-left: -60px; + padding-left: 60px; +} + +dl dl pre { + margin-left: -90px; + padding-left: 90px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid white; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: white; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: white; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.related { + display: block; + margin: 0; + padding: 10px 0 20px 0; + } + + div.related ul, + div.related ul li { + margin: 0; + padding: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Make nested-list/multi-paragraph items look better in Releases changelog + * pages. Without this, docutils' magical list fuckery causes inconsistent + * formatting between different release sub-lists. + */ +div#changelog > div.section > ul > li > p:only-child { + margin-bottom: 0; +} + +/* Hide fugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} \ No newline at end of file diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css new file mode 100644 index 0000000..9fa77d8 --- /dev/null +++ b/docs/build/html/_static/basic.css @@ -0,0 +1,599 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/build/html/_static/comment-bright.png b/docs/build/html/_static/comment-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..551517b8c83b76f734ff791f847829a760ad1903 GIT binary patch literal 3500 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 A2LJ#7 literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/comment.png b/docs/build/html/_static/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..92feb52b8824c6b0f59b658b1196c61de9162a95 GIT binary patch literal 3445 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 Xn!ZpXD%P(H00000NkvXXu0mjf= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/docs/build/html/_static/down-pressed.png b/docs/build/html/_static/down-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..7c30d004b71b32bb2fc06b3bd4dc8278baab0946 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~&H|6fVxZ#d zAk65bF}ngN$X?><>&kwMor^(NtW3yF87Slz;1l8sq&LUMQwy<>&kwMol#tg zK_ydLmzem(vK1>2TzUEGl*lj!N<7$PCrdoWV0 z$w0*Ap!bZ4if7h;-yfL#MC0e;t{xY+$l~DX2EWYIPet1cohf^BdG+jXhtuq&W-0|c zKPmlKv-7OTjb}T)7@fTGd9y~u4{g8An;)c2U=w=nwQ7}zVDc>n+a literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/file.png b/docs/build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..254c60bfbe2715ae2edca48ebccfd074deb8031d GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`j)FbFd;%$g$s6l5>) z^mS#w%FV~i&ZxO9L3Zxqw8>dd4I&zcKG){Yx14xKr0

ZQJ$m%mv17-NAAj}g)$7-<-@JMA z_U+TRK=AR}yLa#2zkmPX!-tO_KYsf3>Hq)#%qnY_1Fd8&3GxeO2wSmci|LJf=|BO- zByV>Yl`U*PX977no-U3d5|XS39sLdkFt8q|+|QqL_#ErUf6I%zFA7b%b>3$hFGGFs zc72AL|61pRJ1(+5wNdg|xP#*`gQ~lOnTFKiIjl#S3)+QV=h{~`9{M=hx#5uZ&-tIF sG!8onYS_8EFr8v&@CavkqYey&g)1epR*Fkm0PSV)boFyt=akR{044O6bN~PV literal 0 HcmV?d00001 diff --git a/docs/build/html/_static/jquery-1.11.1.js b/docs/build/html/_static/jquery-1.11.1.js new file mode 100644 index 0000000..d4b67f7 --- /dev/null +++ b/docs/build/html/_static/jquery-1.11.1.js @@ -0,0 +1,10308 @@ +/*! + * jQuery JavaScript Library v1.11.1 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-05-01T17:42Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper window is present, + // execute the factory and get jQuery + // For environments that do not inherently posses a window with a document + // (such as Node.js), expose a jQuery-making factory as module.exports + // This accentuates the need for the creation of a real window + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var deletedIds = []; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.11.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( support.ownLast ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.19 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-04-18 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, + doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", function() { + setDocument(); + }); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { + div.innerHTML = "

"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowclip^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !(--remaining) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + + +var strundefined = typeof undefined; + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownLast = i !== "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery(function() { + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +}); + + + + +(function() { + var div = document.createElement( "div" ); + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( elem ) { + var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute("classid") === noData; +}; + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[0], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; +}; +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + // Minified: var a,b,c + var input = document.createElement( "input" ), + div = document.createElement( "div" ), + fragment = document.createDocumentFragment(); + + // Setup + div.innerHTML = "
a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + support.noCloneEvent = true; + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } +})(); + + +(function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) + for ( i in { submit: true, change: true, focusin: true }) { + eventName = "on" + i; + + if ( !(support[ i + "Bubbles" ] = eventName in window) ) { + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!support.noCloneEvent || !support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + deletedIds.push( id ); + } + } + } + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "