From aa71ff9126e0ca697eb0b50173dce51d6a49825a Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Tue, 25 Aug 2026 19:20:54 -0800 Subject: [PATCH 01/12] add skipUnchanged option to prune equal subtrees Off by default. When enabled, morphNode returns early for a pair of nodes that are isEqualNode-equal, after announcing the root via beforeNodeMorphed/afterNodeMorphed. Hidden-state handling follows in the next commits. Refs #144. --- src/idiomorph.js | 48 +++++++++++++++++ test/index.html | 1 + test/skip-unchanged.js | 115 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 test/skip-unchanged.js diff --git a/src/idiomorph.js b/src/idiomorph.js index 835ae9a..5eea940 100644 --- a/src/idiomorph.js +++ b/src/idiomorph.js @@ -29,6 +29,7 @@ * @property {boolean} [ignoreActive] * @property {boolean} [ignoreActiveValue] * @property {boolean} [restoreFocus] + * @property {boolean} [skipUnchanged] * @property {ConfigCallbacks} [callbacks] * @property {ConfigHead} [head] */ @@ -70,6 +71,7 @@ * @property {boolean} [ignoreActive] * @property {boolean} [ignoreActiveValue] * @property {boolean} [restoreFocus] + * @property {boolean} [skipUnchanged] * @property {ConfigCallbacksInternal} callbacks * @property {ConfigHeadInternal} head */ @@ -107,6 +109,8 @@ var Idiomorph = (function () { * @property {ConfigInternal['ignoreActive']} ignoreActive * @property {ConfigInternal['ignoreActiveValue']} ignoreActiveValue * @property {ConfigInternal['restoreFocus']} restoreFocus + * @property {boolean} skipUnchanged + * @property {Set} unskippableNodes * @property {Map>} idMap * @property {Set} persistentIds * @property {ConfigInternal['callbacks']} callbacks @@ -143,6 +147,7 @@ var Idiomorph = (function () { afterHeadMorphed: noOp, }, restoreFocus: true, + skipUnchanged: false, }; /** @@ -641,6 +646,20 @@ var Idiomorph = (function () { return oldNode; } + if ( + ctx.skipUnchanged && + !ctx.unskippableNodes.has(oldNode) && + !ctx.unskippableNodes.has(newContent) && + // re-check the pair itself: beforeNodeMorphed may have changed hidden state since the pre-scan + !isUnskippable(oldNode) && + !isUnskippable(newContent) && + oldNode.isEqualNode(newContent) + ) { + // the whole subtree is unchanged; the root has been announced, its descendants are never visited + ctx.callbacks.afterNodeMorphed(oldNode, newContent); + return oldNode; + } + if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) { // ignore the head element } else if ( @@ -993,6 +1012,30 @@ var Idiomorph = (function () { return promises; } + //============================================================================= + // Unchanged Subtree Skipping + //============================================================================= + const { isUnskippable, createUnskippableNodeSet } = (function () { + /** + * @param {Node} node + * @returns {boolean} + */ + function isUnskippable(node) { + return false; + } + + /** + * @param {Element} oldRoot + * @param {Element} newRoot + * @returns {Set} + */ + function createUnskippableNodeSet(oldRoot, newRoot) { + return new Set(); + } + + return { isUnskippable, createUnskippableNodeSet }; + })(); + //============================================================================= // Create Morph Context Functions //============================================================================= @@ -1012,6 +1055,7 @@ var Idiomorph = (function () { if (!["innerHTML", "outerHTML"].includes(morphStyle)) { throw `Do not understand how to morph style ${morphStyle}`; } + const skipUnchanged = !!mergedConfig.skipUnchanged; return { target: oldNode, @@ -1021,6 +1065,10 @@ var Idiomorph = (function () { ignoreActive: mergedConfig.ignoreActive, ignoreActiveValue: mergedConfig.ignoreActiveValue, restoreFocus: mergedConfig.restoreFocus, + skipUnchanged: skipUnchanged, + unskippableNodes: skipUnchanged + ? createUnskippableNodeSet(oldNode, newContent) + : new Set(), idMap: idMap, persistentIds: persistentIds, pantry: createPantry(), diff --git a/test/index.html b/test/index.html index f835d73..11e2671 100644 --- a/test/index.html +++ b/test/index.html @@ -48,6 +48,7 @@

Mocha Test Suite

+
diff --git a/test/skip-unchanged.js b/test/skip-unchanged.js new file mode 100644 index 0000000..d6dfd05 --- /dev/null +++ b/test/skip-unchanged.js @@ -0,0 +1,115 @@ +describe("skipUnchanged option", function () { + setup(); + + // Records every beforeNodeMorphed/afterNodeMorphed call as [hook, oldNode.outerHTML|textContent] + function recordingCallbacks(calls) { + const label = (node) => node.outerHTML || node.textContent; + return { + beforeNodeMorphed: (oldNode) => { + calls.push(["before", label(oldNode)]); + }, + afterNodeMorphed: (oldNode) => { + calls.push(["after", label(oldNode)]); + }, + }; + } + + describe("off by default", function () { + it("still visits every node of an identical subtree", function () { + const calls = []; + const initial = make(`

x

`); + Idiomorph.morph(initial, `

x

`, { + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", "

x

"], + ["before", "

x

"], + ["before", "x"], + ["before", "x"], + ["after", "x"], + ["after", "x"], + ["after", "

x

"], + ["after", "

x

"], + ]); + }); + + it("still clears a typed input value as before", function () { + const initial = make(`
`); + initial.querySelector("input").value = "typed"; + Idiomorph.morph(initial, `
`); + initial.querySelector("input").value.should.equal(""); + }); + }); + + describe("on", function () { + it("skips the descendants of an equal subtree but still calls both hooks on its root", function () { + const calls = []; + const initial = make(`

x

`); + Idiomorph.morph(initial, `

x

`, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + initial.outerHTML.should.equal(`

x

`); + calls.should.eql([ + ["before", "

x

"], + ["after", "

x

"], + ]); + }); + + it("does not call beforeAttributeUpdated inside a skipped subtree", function () { + let attributeCalls = 0; + const initial = make(`

x

`); + Idiomorph.morph(initial, `

x

`, { + skipUnchanged: true, + callbacks: { + beforeAttributeUpdated: () => { + attributeCalls++; + }, + }, + }); + attributeCalls.should.equal(0); + }); + + it("still morphs a subtree whose deepest leaf changed", function () { + const calls = []; + const initial = make(`

x

same

`); + Idiomorph.morph(initial, `

y

same

`, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + initial.outerHTML.should.equal( + `

y

same

`, + ); + calls.should.eql([ + ["before", "

x

same

"], + ["before", "

x

"], + ["before", "x"], + ["before", "x"], + ["after", "y"], + ["after", "y"], + ["after", "

y

"], + ["before", "

same

"], + ["after", "

same

"], + ["after", "

y

same

"], + ]); + }); + + it("still honours beforeNodeMorphed returning false on an equal root", function () { + const calls = []; + const initial = make(`

x

`); + Idiomorph.morph(initial, `

x

`, { + skipUnchanged: true, + callbacks: { + beforeNodeMorphed: (oldNode) => { + calls.push(oldNode.outerHTML || oldNode.textContent); + return false; + }, + afterNodeMorphed: () => { + calls.push("after"); + }, + }, + }); + calls.should.eql(["

x

"]); + }); + }); +}); From 895b6442aa70201705ffd5a43610fd13bba35e3e Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Tue, 25 Aug 2026 19:43:24 -0800 Subject: [PATCH 02/12] never skip dirty form controls, templates or heads isEqualNode ignores the value/checked/selected properties, template content and the side effects of head merging. Re-check the pair at skip time so a beforeNodeMorphed callback that mutates the nodes it was handed keeps working. --- src/idiomorph.js | 63 ++++++ test/skip-unchanged.js | 441 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 504 insertions(+) diff --git a/src/idiomorph.js b/src/idiomorph.js index 5eea940..25a3efb 100644 --- a/src/idiomorph.js +++ b/src/idiomorph.js @@ -1017,13 +1017,76 @@ var Idiomorph = (function () { //============================================================================= const { isUnskippable, createUnskippableNodeSet } = (function () { /** + * Nodes whose subtree must never be skipped under `skipUnchanged`, because + * `isEqualNode` either ignores state a morph would sync, or lies about them. + * * @param {Node} node * @returns {boolean} */ function isUnskippable(node) { + if (node instanceof HTMLTemplateElement) { + // isEqualNode does not compare template .content + return true; + } + if (node instanceof HTMLHeadElement) { + // head merging has side effects (im-re-append) even when the head is unchanged + return true; + } + if (node instanceof HTMLInputElement) { + return ( + node.type !== "file" && + (node.checked !== node.defaultChecked || + node.value !== defaultValueOf(node)) + ); + } + if (node instanceof HTMLTextAreaElement) { + return node.value !== node.defaultValue; + } + if (node instanceof HTMLOptionElement) { + return node.selected !== defaultSelectedOf(node); + } + return false; + } + + /** + * Whether an option would be selected right after parsing its markup. + * In a single-select without any `selected` attribute the browser selects + * the first enabled option, and `defaultSelected` does not reflect that. + * + * @param {HTMLOptionElement} option + * @returns {boolean} + */ + function defaultSelectedOf(option) { + const select = option.closest("select"); + if (!select || select.multiple || select.size > 1) { + return option.defaultSelected; + } + const options = select.options; + // the last option with a selected attribute wins; otherwise the first enabled option + for (let i = options.length - 1; i >= 0; i--) { + if (options[i].defaultSelected) return options[i] === option; + } + for (let i = 0; i < options.length; i++) { + if (!options[i].disabled) return options[i] === option; + } return false; } + /** + * The value an input reports when its value property has not been touched. + * Checkbox and radio inputs report "on" when the value attribute is absent, + * while `defaultValue` reports "" in that case. + * + * @param {HTMLInputElement} input + * @returns {string} + */ + function defaultValueOf(input) { + if (input.type === "checkbox" || input.type === "radio") { + return input.getAttribute("value") ?? "on"; + } + return input.defaultValue; + } + /** * @param {Element} oldRoot * @param {Element} newRoot diff --git a/test/skip-unchanged.js b/test/skip-unchanged.js index d6dfd05..8cf336d 100644 --- a/test/skip-unchanged.js +++ b/test/skip-unchanged.js @@ -111,5 +111,446 @@ describe("skipUnchanged option", function () { }); calls.should.eql(["

x

"]); }); + + describe("dirty form controls are never skipped", function () { + // Each case morphs the control as an outerHTML root, so the pair given to + // morphNode is the control itself and the skip-time re-check decides. + + it("text input with a typed value is reset as before", function () { + const input = make(``); + input.value = "typed"; + Idiomorph.morph(input, ``, { skipUnchanged: true }); + input.value.should.equal(""); + }); + + it("checkbox with toggled checked is reset as before", function () { + const input = make(``); + input.checked = true; + Idiomorph.morph(input, ``, { + skipUnchanged: true, + }); + input.checked.should.equal(false); + }); + + it("checkbox with a programmatic value and untouched checked is synced as before", function () { + // setting .value on a checkbox reflects to the value attribute, so this is caught by + // isEqualNode rather than the predicate; kept as a regression guard for the "on" default rule + const input = make(``); + input.value = "b"; + Idiomorph.morph(input, ``, { + skipUnchanged: true, + }); + input.value.should.equal("a"); + }); + + it("radio with toggled checked is reset as before", function () { + const input = make(``); + input.checked = true; + Idiomorph.morph(input, ``, { skipUnchanged: true }); + input.checked.should.equal(false); + }); + + it("text input with programmatic checked is synced as before", function () { + const input = make(``); + input.checked = true; + Idiomorph.morph(input, ``, { skipUnchanged: true }); + input.checked.should.equal(false); + }); + + it("textarea with a typed value is reset as before", function () { + const textarea = make(``); + textarea.value = "typed"; + Idiomorph.morph(textarea, ``, { + skipUnchanged: true, + }); + textarea.value.should.equal("foo"); + }); + + // The following five cases morph a `, + ); + select.value = "b"; + Idiomorph.morph( + select, + ``, + { skipUnchanged: true }, + ); + select.value.should.equal("a"); + }); + + it.skip("single select whose selected attribute is on a later option is reset as before", function () { + const select = make( + ``, + ); + select.value = "a"; + Idiomorph.morph( + select, + ``, + { skipUnchanged: true }, + ); + select.value.should.equal("b"); + }); + + it.skip("multiple select with a changed option is reset as before", function () { + const select = make( + ``, + ); + select.options[1].selected = true; + Idiomorph.morph( + select, + ``, + { skipUnchanged: true }, + ); + select.options[1].selected.should.equal(false); + }); + + it.skip("listbox (size > 1) select with a changed option is reset as before", function () { + const select = make( + ``, + ); + select.value = "b"; + Idiomorph.morph( + select, + ``, + { skipUnchanged: true }, + ); + select.selectedIndex.should.equal(-1); + }); + + it.skip("option outside a select uses defaultSelected", function () { + const datalist = make( + ``, + ); + datalist.firstChild.selected = true; + Idiomorph.morph( + datalist, + ``, + { + skipUnchanged: true, + }, + ); + datalist.firstChild.selected.should.equal(false); + }); + + // The cases above morph a container whose own markup never changes, so + // isUnskippable is only ever asked about the container (never the option) + // until Task 3's pre-scan exists. Morphing the option itself as the root + // exercises defaultSelectedOf's branches directly today. + + it("standalone option (outside any select) is reset via defaultSelected", function () { + const option = make(``); + option.selected = true; + Idiomorph.morph(option, ``, { + skipUnchanged: true, + }); + option.selected.should.equal(false); + }); + + it("option inside a multiple select is reset via defaultSelected", function () { + const select = make( + ``, + ); + const option = select.options[1]; + option.selected = true; + Idiomorph.morph(option, ``, { + skipUnchanged: true, + }); + option.selected.should.equal(false); + }); + + it("option inside a listbox (size > 1) select is reset via defaultSelected", function () { + const select = make( + ``, + ); + const option = select.options[1]; + option.selected = true; + Idiomorph.morph(option, ``, { + skipUnchanged: true, + }); + option.selected.should.equal(false); + }); + + it("file input is never considered dirty", function () { + const calls = []; + const input = make(``); + Idiomorph.morph(input, ``, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", ``], + ["after", ``], + ]); + }); + }); + + describe("clean form controls are skipped", function () { + it("skips an attribute-less checkbox (value defaults to 'on')", function () { + const calls = []; + const initial = make(`
`); + Idiomorph.morph(initial, `
`, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", `
`], + ["after", `
`], + ]); + }); + + it("skips a single select whose selected attribute is on a later option", function () { + const calls = []; + const html = `
`; + const initial = make(html); + Idiomorph.morph(initial, html, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", html], + ["after", html], + ]); + }); + + it("skips a single select whose first option is disabled", function () { + const calls = []; + const html = `
`; + const initial = make(html); + Idiomorph.morph(initial, html, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", html], + ["after", html], + ]); + }); + + it("skips a single select whose options are all disabled", function () { + const calls = []; + const html = `
`; + const initial = make(html); + Idiomorph.morph(initial, html, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", html], + ["after", html], + ]); + }); + + it("skips a checkbox with a value attribute", function () { + const calls = []; + const initial = make(`
`); + Idiomorph.morph( + initial, + `
`, + { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }, + ); + calls.should.eql([ + ["before", `
`], + ["after", `
`], + ]); + }); + + it("skips a clean text input, textarea and select", function () { + // the first option of an untouched single-select reports selected=true but + // defaultSelected=false; the effective-default rule must still treat it as clean + const calls = []; + const html = `
`; + const initial = make(html); + Idiomorph.morph(initial, html, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", html], + ["after", html], + ]); + }); + + // Same reasoning as the "option inside a ... select is reset" tests above: + // morphing the option itself as the root exercises defaultSelectedOf's + // single-select branches (explicit `selected`, implicit first option, + // disabled options) directly today. + + it("skips a clean option that is explicitly selected", function () { + const calls = []; + const select = make( + ``, + ); + const option = select.options[1]; + Idiomorph.morph(option, ``, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", ``], + ["after", ``], + ]); + }); + + it("skips a clean, implicitly-selected first option", function () { + const calls = []; + const select = make( + ``, + ); + const option = select.options[0]; + Idiomorph.morph(option, ``, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", ``], + ["after", ``], + ]); + }); + + it("skips a clean option following a disabled option", function () { + const calls = []; + const select = make( + ``, + ); + const option = select.options[1]; + Idiomorph.morph(option, ``, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", ``], + ["after", ``], + ]); + }); + + it("skips a clean option when every option in the select is disabled", function () { + const calls = []; + const select = make( + ``, + ); + const option = select.options[0]; + Idiomorph.morph(option, ``, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls.should.eql([ + ["before", ``], + ["after", ``], + ]); + }); + }); + + describe("templates and the head are never skipped", function () { + it("re-morphs template content even though the template's outerHTML looks unchanged", function () { + // isEqualNode does not look inside .content, so without the special case + // this mutation would be missed and the skip would leave "changed" in place + const template = make(``); + template.content.querySelector("p").textContent = "changed"; + Idiomorph.morph(template, ``, { + skipUnchanged: true, + }); + template.content.querySelector("p").textContent.should.equal("x"); + }); + + it("still applies head re-append side effects when the head looks unchanged", function () { + // im-re-append removes and re-adds a matching head element even when it's + // otherwise identical; isEqualNode can't see that, so without the special + // case the head would be skipped and the re-append would never happen + const parser = new DOMParser(); + const doc = parser.parseFromString( + ``, + "text/html", + ); + const originalMeta = doc.head.firstChild; + Idiomorph.morph(doc.head, ``, { + skipUnchanged: true, + }); + doc.head.firstChild.should.not.equal(originalMeta); + }); + }); + + describe("dirty state on the new side", function () { + // The dirty input inside `final` is a descendant of the pair root `
`, + // not the pair itself; this only passes once Task 3 adds the pre-scan. + it.skip("morphs when the new input carries a programmatic value", function () { + const initial = make(`
`); + const final = make(`
`); + final.querySelector("input").value = "b"; + Idiomorph.morph(initial, final, { skipUnchanged: true }); + initial.querySelector("input").value.should.equal("b"); + }); + }); + + describe("hidden state mutated by beforeNodeMorphed", function () { + it("honours a callback that sets the new node's value", function () { + const initial = make(``); + Idiomorph.morph(initial, ``, { + skipUnchanged: true, + callbacks: { + beforeNodeMorphed: (oldNode, newNode) => { + newNode.value = "x"; + }, + }, + }); + initial.value.should.equal("x"); + }); + + it("keeps working for the #132 two-way-binding pattern (copy the typed value onto the new node)", function () { + // https://github.com/bigskysoftware/idiomorph/issues/132 — incoming markup has no + // value attribute; the app preserves user input from beforeNodeMorphed + const initial = make(`
`); + initial.querySelector("input").value = "typed"; + Idiomorph.morph(initial, `
`, { + skipUnchanged: true, + callbacks: { + beforeNodeMorphed: (oldNode, newNode) => { + if (oldNode instanceof HTMLInputElement) + newNode.value = oldNode.value; + }, + }, + }); + initial.querySelector("input").value.should.equal("typed"); + }); + + it("honours a callback that sets the old node's value (reset to the new value, as today)", function () { + const initial = make(``); + Idiomorph.morph(initial, ``, { + skipUnchanged: true, + callbacks: { + beforeNodeMorphed: (oldNode) => { + oldNode.value = "client"; + }, + }, + }); + initial.value.should.equal("a"); + }); + + it("does not honour a callback that mutates a descendant of an equal root (documented limitation)", function () { + const initial = make(`
`); + Idiomorph.morph(initial, `
`, { + skipUnchanged: true, + callbacks: { + beforeNodeMorphed: (oldNode) => { + if (oldNode.tagName === "DIV") { + oldNode.querySelector("input").value = "client"; + } + }, + }, + }); + // the div was equal and clean at skip time, so the mutated input inside it was never visited + initial.querySelector("input").value.should.equal("client"); + }); + }); }); }); From de6ae8797bbcb836c84e057f26b03fad93855e3e Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Tue, 25 Aug 2026 20:09:20 -0800 Subject: [PATCH 03/12] pre-scan unskippable nodes and their ancestors isEqualNode reports two ancestors equal even when a nested template's content differs or a nested input holds a typed value, so mark every unskippable node and its ancestors up to the morph root before the walk. Scan template content explicitly since querySelectorAll does not enter it. Also compare live `selected` state directly between an old/new option pair: a single-select's implicit default selection depends on every option in the select, so removing `selected` from one option can silently flip an untouched sibling's effective selectedness, which neither side's own dirtiness check alone can see. Found via the default-flip smoke run against the full test suite. Corrected the #132 regression test too: it set a bare `.value` property that idiomorph's value sync never reads, so it passed only by accident before this pre-scan existed. It now sets the "value" attribute, as the workaround actually requires. --- src/idiomorph.js | 249 +++++++++++++++++++++++++++++------------ test/skip-unchanged.js | 199 ++++++++++++++++++++++++++++++-- 2 files changed, 367 insertions(+), 81 deletions(-) diff --git a/src/idiomorph.js b/src/idiomorph.js index 25a3efb..bc2364a 100644 --- a/src/idiomorph.js +++ b/src/idiomorph.js @@ -653,6 +653,9 @@ var Idiomorph = (function () { // re-check the pair itself: beforeNodeMorphed may have changed hidden state since the pre-scan !isUnskippable(oldNode) && !isUnskippable(newContent) && + // a sibling option's change can flip this option's implicit selectedness + // without either side's own isUnskippable check ever seeing it + !optionSelectionDiffers(oldNode, newContent) && oldNode.isEqualNode(newContent) ) { // the whole subtree is unchanged; the root has been announced, its descendants are never visited @@ -1015,89 +1018,189 @@ var Idiomorph = (function () { //============================================================================= // Unchanged Subtree Skipping //============================================================================= - const { isUnskippable, createUnskippableNodeSet } = (function () { - /** - * Nodes whose subtree must never be skipped under `skipUnchanged`, because - * `isEqualNode` either ignores state a morph would sync, or lies about them. - * - * @param {Node} node - * @returns {boolean} - */ - function isUnskippable(node) { - if (node instanceof HTMLTemplateElement) { - // isEqualNode does not compare template .content - return true; - } - if (node instanceof HTMLHeadElement) { - // head merging has side effects (im-re-append) even when the head is unchanged - return true; - } - if (node instanceof HTMLInputElement) { - return ( - node.type !== "file" && - (node.checked !== node.defaultChecked || - node.value !== defaultValueOf(node)) - ); - } - if (node instanceof HTMLTextAreaElement) { - return node.value !== node.defaultValue; + const { isUnskippable, optionSelectionDiffers, createUnskippableNodeSet } = + (function () { + const UNSKIPPABLE_SELECTOR = "input,textarea,option,template,head"; + + /** + * Nodes whose subtree must never be skipped under `skipUnchanged`, because + * `isEqualNode` either ignores state a morph would sync, or lies about them. + * + * @param {Node} node + * @returns {boolean} + */ + function isUnskippable(node) { + if (node instanceof HTMLTemplateElement) { + // isEqualNode does not compare template .content + return true; + } + if (node instanceof HTMLHeadElement) { + // head merging has side effects (im-re-append) even when the head is unchanged + return true; + } + if (node instanceof HTMLInputElement) { + return ( + node.type !== "file" && + (node.checked !== node.defaultChecked || + node.value !== defaultValueOf(node)) + ); + } + if (node instanceof HTMLTextAreaElement) { + return node.value !== node.defaultValue; + } + if (node instanceof HTMLOptionElement) { + return node.selected !== defaultSelectedOf(node); + } + return false; } - if (node instanceof HTMLOptionElement) { - return node.selected !== defaultSelectedOf(node); + + /** + * Whether an option pair's live `selected` state has diverged even though + * neither side looks dirty on its own `isUnskippable` check. A + * single-select's implicit default selection depends on every option in + * the select, so removing the `selected` attribute from one option can + * flip another, untouched option's effective selectedness as a side + * effect once the morph runs — something neither side can see by + * comparing itself only against its own default. + * + * Only meaningful when both sides sit in a real single-select: an option + * morphed on its own (no ``, ); @@ -186,7 +186,7 @@ describe("skipUnchanged option", function () { select.value.should.equal("a"); }); - it.skip("single select whose selected attribute is on a later option is reset as before", function () { + it("single select whose selected attribute is on a later option is reset as before", function () { const select = make( ``, ); @@ -199,7 +199,7 @@ describe("skipUnchanged option", function () { select.value.should.equal("b"); }); - it.skip("multiple select with a changed option is reset as before", function () { + it("multiple select with a changed option is reset as before", function () { const select = make( ``, ); @@ -212,7 +212,7 @@ describe("skipUnchanged option", function () { select.options[1].selected.should.equal(false); }); - it.skip("listbox (size > 1) select with a changed option is reset as before", function () { + it("listbox (size > 1) select with a changed option is reset as before", function () { const select = make( ``, ); @@ -225,7 +225,7 @@ describe("skipUnchanged option", function () { select.selectedIndex.should.equal(-1); }); - it.skip("option outside a select uses defaultSelected", function () { + it("option outside a select uses defaultSelected", function () { const datalist = make( ``, ); @@ -483,7 +483,7 @@ describe("skipUnchanged option", function () { describe("dirty state on the new side", function () { // The dirty input inside `final` is a descendant of the pair root `
`, // not the pair itself; this only passes once Task 3 adds the pre-scan. - it.skip("morphs when the new input carries a programmatic value", function () { + it("morphs when the new input carries a programmatic value", function () { const initial = make(`
`); const final = make(`
`); final.querySelector("input").value = "b"; @@ -508,7 +508,9 @@ describe("skipUnchanged option", function () { it("keeps working for the #132 two-way-binding pattern (copy the typed value onto the new node)", function () { // https://github.com/bigskysoftware/idiomorph/issues/132 — incoming markup has no - // value attribute; the app preserves user input from beforeNodeMorphed + // value attribute; the app preserves user input from beforeNodeMorphed by setting + // the *attribute* on newNode (syncInputValue only ever consults newNode's + // "value" attribute, never a bare .value property assignment) const initial = make(`
`); initial.querySelector("input").value = "typed"; Idiomorph.morph(initial, `
`, { @@ -516,7 +518,7 @@ describe("skipUnchanged option", function () { callbacks: { beforeNodeMorphed: (oldNode, newNode) => { if (oldNode instanceof HTMLInputElement) - newNode.value = oldNode.value; + newNode.setAttribute("value", oldNode.value); }, }, }); @@ -552,5 +554,186 @@ describe("skipUnchanged option", function () { initial.querySelector("input").value.should.equal("client"); }); }); + + describe("ancestors of unskippable nodes are not skipped", function () { + it("resets a typed input nested inside an otherwise equal subtree", function () { + const initial = make(`

`); + initial.querySelector("input").value = "typed"; + Idiomorph.morph(initial, `

`, { + skipUnchanged: true, + }); + initial.querySelector("input").value.should.equal(""); + }); + + it("resets two typed inputs under the same parent", function () { + const initial = make(`
`); + const [first, second] = initial.querySelectorAll("input"); + first.value = "one"; + second.value = "two"; + Idiomorph.morph(initial, `
`, { + skipUnchanged: true, + }); + first.value.should.equal(""); + second.value.should.equal(""); + }); + + it("morphs a template whose content differs", function () { + const initial = make(`
`); + Idiomorph.morph(initial, `
`, { + skipUnchanged: true, + }); + initial.querySelector("template").innerHTML.should.equal(`B`); + }); + + it("resets a typed input inside template content", function () { + const initial = make(`
`); + initial.querySelector("template").content.querySelector("input").value = + "typed"; + Idiomorph.morph(initial, `
`, { + skipUnchanged: true, + }); + initial + .querySelector("template") + .content.querySelector("input") + .value.should.equal(""); + }); + + it("morphs a nested template inside template content", function () { + const initial = make( + `
`, + ); + Idiomorph.morph( + initial, + `
`, + { skipUnchanged: true }, + ); + initial + .querySelector("template") + .content.querySelector("template") + .innerHTML.should.equal(`B`); + }); + }); + + describe("head handling keeps its side effects", function () { + it("re-appends im-re-append elements in an otherwise equal document", function () { + const html = + "Foo"; + const doc = parseHTML(html); + const originalHead = doc.head; + const originalTitle = originalHead.children[0]; + Idiomorph.morph(doc, html, { skipUnchanged: true }); + originalHead.should.equal(doc.head); + originalHead.children.length.should.equal(1); + originalHead.children[0].outerHTML.should.equal( + 'Foo', + ); + originalHead.children[0].should.not.equal(originalTitle); + }); + + it("skips the body of an equal document while still visiting the head", function () { + const calls = []; + const html = + "Foo

x

"; + const doc = parseHTML(html); + Idiomorph.morph(doc, html, { + skipUnchanged: true, + callbacks: recordingCallbacks(calls), + }); + calls + .filter( + ([, label]) => label.startsWith("

") || label.startsWith(""), + ) + .should.eql([]); + calls + .some(([, label]) => label.startsWith("")) + .should.equal(true); + }); + }); + + describe("root shapes", function () { + it("scans string content (template fragment root without matches)", function () { + // the dirty input sits under an equal

, so only the pre-scan of the parsed + // fragment can stop the

from being skipped + const initial = make(`

`); + initial.querySelector("input").value = "typed"; + Idiomorph.morph(initial, `

`, { + morphStyle: "innerHTML", + skipUnchanged: true, + }); + initial.querySelector("input").value.should.equal(""); + }); + + it("scans a new node that has siblings (SlicedParentNode root)", function () { + const initial = make(`
`); + const wrapper = make( + `
`, + ); + const final = wrapper.firstElementChild; + final.querySelector("input").value = "b"; + Idiomorph.morph(initial, final, { skipUnchanged: true }); + initial.querySelector("input").value.should.equal("b"); + }); + + it("checks the old root itself when it is a dirty control (outerHTML morph)", function () { + // the pre-scan must include the root: querySelectorAll excludes it + const attributeCalls = []; + const parent = make(`
`); + const input = parent.querySelector("input"); + input.value = "typed"; + Idiomorph.morph(input, ``, { + skipUnchanged: true, + callbacks: { + // neutralise the skip-time re-check so only the pre-scan can catch this + beforeNodeMorphed: (oldNode) => { + if (oldNode.tagName === "INPUT") oldNode.value = ""; + }, + beforeAttributeUpdated: (name, node, type) => { + attributeCalls.push([name, type]); + }, + }, + }); + // syncInputValue ran (it asks before removing the value attribute); a skip would never ask + attributeCalls.should.eql([["value", "remove"]]); + }); + }); + + describe("interplay with other options", function () { + it("ignoreActive still wins over skipUnchanged", function () { + getWorkArea().append(make(`
`)); + const input = document.getElementById("active"); + input.focus(); + input.value = "typed"; + Idiomorph.morph( + getWorkArea(), + `
`, + { morphStyle: "innerHTML", skipUnchanged: true, ignoreActive: true }, + ); + input.getAttribute("class").should.equal("a"); + input.value.should.equal("typed"); + }); + }); + + describe("sibling options coupled through implicit selection", function () { + it("selects the first option when a later option's explicit selection is removed", function () { + // neither option's own markup changes match isUnskippable's per-node check: the + // first option was never dirty, and the second option's own selectedness (now + // false either way) matches its own new-side default too. Only comparing the + // live `selected` property across the pair reveals that the first option's + // effective selectedness has changed as a side effect of the second option's + // attribute being removed. + const select = make( + ``, + ); + Idiomorph.morph( + select, + ``, + { skipUnchanged: true }, + ); + select.value.should.equal("a"); + select.outerHTML.should.equal( + ``, + ); + }); + }); }); }); From 9ae2772f96d1acf114cc83ce67850badd1307340 Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Tue, 25 Aug 2026 20:23:46 -0800 Subject: [PATCH 04/12] let perf runs pass morph options Needed to benchmark opt-in options such as skipUnchanged against a version that predates them. --- PERFORMANCE.md | 7 +++++++ perf/runner.html | 3 ++- perf/runner.js | 14 ++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/PERFORMANCE.md b/PERFORMANCE.md index 9ad3326..6d37de1 100644 --- a/PERFORMANCE.md +++ b/PERFORMANCE.md @@ -13,6 +13,7 @@ npm run perf [versus=morphdom] [benchmarks...] ### Arguments * The optional `versus` argument can be used to compare with morphdom (the default), previous Idiomorph releases specified by the git release tag, e.g. `v0.3.0`, or a path to a local `.js` file that defines `Idiomorph`. * The optional `benchmarks` argument can be used to run specific benchmarks, defaulting to all of them. +* The optional `--options=''` argument passes a config object to `Idiomorph.morph` in both runs, e.g. `--options='{"skipUnchanged":true}'`. A previous version that does not know the option ignores it, which makes this the way to measure an opt-in option against the code it replaces. Pass it after `--` so npm does not swallow it. Examples: Running only the `table` and `checkboxes` benchmarks against morphdom: @@ -36,6 +37,12 @@ cp src/idiomorph.js tmp/before.js # then edit src/idiomorph.js npm run perf tmp/before.js ``` +Measuring an opt-in option against the current code: +```bash +cp src/idiomorph.js tmp/before.js +npm run perf -- tmp/before.js --options='{"skipUnchanged":true}' +``` + ## Adding Benchmarks You can add more benchmarks by creating new `benchmark-name.old.html` and `benchmark-name.new.html` files in the `perf/benchmarks` directory, containing the starting and final morph HTML respectively. diff --git a/perf/runner.html b/perf/runner.html index 6f0ccf0..39c10cf 100644 --- a/perf/runner.html +++ b/perf/runner.html @@ -24,6 +24,7 @@ const benchmark = params.get("benchmark"); const startUrl = `/perf/benchmarks/${benchmark}.old.html`; const endUrl = `/perf/benchmarks/${benchmark}.new.html`; + const options = JSON.parse(params.get("options") || "{}"); Promise.all([ fetch(startUrl).then((r) => r.text()), @@ -34,7 +35,7 @@ if (params.get("using").includes("morphdom")) { morphdom(document.body.firstElementChild, end); } else { - Idiomorph.morph(document.body.firstElementChild, end); + Idiomorph.morph(document.body.firstElementChild, end, options); } bench.stop(); }); diff --git a/perf/runner.js b/perf/runner.js index 5f3463c..3981206 100755 --- a/perf/runner.js +++ b/perf/runner.js @@ -5,6 +5,16 @@ const path = require("path"); let benchmarks = process.argv.slice(2); let versus; +let options = "{}"; + +benchmarks = benchmarks.filter((arg) => { + const match = arg.match(/^--options=(.*)$/); + if (match) { + options = match[1]; + return false; + } + return true; +}); if ( benchmarks[0] === "morphdom" || @@ -36,12 +46,12 @@ benchmarks.forEach((benchmark) => { benchmarks: [ { name: `${benchmark}: ${versus}`, - url: `../perf/runner.html?using=${versus}&benchmark=${benchmark}`, + url: `../perf/runner.html?using=${versus}&benchmark=${benchmark}&options=${encodeURIComponent(options)}`, browser, }, { name: `${benchmark}: src/idiomorph.js`, - url: `../perf/runner.html?using=idiomorph&benchmark=${benchmark}`, + url: `../perf/runner.html?using=idiomorph&benchmark=${benchmark}&options=${encodeURIComponent(options)}`, browser, }, ], From 2877691e34d058beaebeae339d900d5ff7ac0004 Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Tue, 25 Aug 2026 20:32:43 -0800 Subject: [PATCH 05/12] add deep-last-leaf worst-case perf benchmark --- PERFORMANCE.md | 2 + perf/benchmarks/deep-last-leaf.new.html | 2522 +++++++++++++++++++++++ perf/benchmarks/deep-last-leaf.old.html | 2522 +++++++++++++++++++++++ perf/generate-deep-last-leaf.js | 34 + 4 files changed, 5080 insertions(+) create mode 100644 perf/benchmarks/deep-last-leaf.new.html create mode 100644 perf/benchmarks/deep-last-leaf.old.html create mode 100644 perf/generate-deep-last-leaf.js diff --git a/PERFORMANCE.md b/PERFORMANCE.md index 6d37de1..9b3eaaf 100644 --- a/PERFORMANCE.md +++ b/PERFORMANCE.md @@ -46,3 +46,5 @@ npm run perf -- tmp/before.js --options='{"skipUnchanged":true}' ## Adding Benchmarks You can add more benchmarks by creating new `benchmark-name.old.html` and `benchmark-name.new.html` files in the `perf/benchmarks` directory, containing the starting and final morph HTML respectively. +`deep-last-leaf` is generated by `node perf/generate-deep-last-leaf.js` and is the deliberate worst case for the `skipUnchanged` option: every section changes, but only in its last and deepest text node, so every `isEqualNode` call walks a whole subtree before failing. + diff --git a/perf/benchmarks/deep-last-leaf.new.html b/perf/benchmarks/deep-last-leaf.new.html new file mode 100644 index 0000000..2141550 --- /dev/null +++ b/perf/benchmarks/deep-last-leaf.new.html @@ -0,0 +1,2522 @@ +
+
+
+

section 0 level 1 item 0

+

section 0 level 1 item 1

+

section 0 level 1 item 2

+

section 0 level 1 item 3

+
+

section 0 level 2 item 0

+

section 0 level 2 item 1

+

section 0 level 2 item 2

+

section 0 level 2 item 3

+
+

section 0 level 3 item 0

+

section 0 level 3 item 1

+

section 0 level 3 item 2

+

section 0 level 3 item 3

+
+

section 0 level 4 item 0

+

section 0 level 4 item 1

+

section 0 level 4 item 2

+

section 0 level 4 item 3

+
+

section 0 level 5 item 0

+

section 0 level 5 item 1

+

section 0 level 5 item 2

+

section 0 level 5 item 3

+
+

section 0 level 6 item 0

+

section 0 level 6 item 1

+

section 0 level 6 item 2

+

section 0 level 6 item 3

+
+

section 0 level 7 item 0

+

section 0 level 7 item 1

+

section 0 level 7 item 2

+

section 0 level 7 item 3

+
+

section 0 level 8 item 0

+

section 0 level 8 item 1

+

section 0 level 8 item 2

+

section 0 level 8 item 3

+
+

section 0 level 9 item 0

+

section 0 level 9 item 1

+

section 0 level 9 item 2

+

section 0 level 9 item 3

+
+

section 0 level 10 item 0

+

section 0 level 10 item 1

+

section 0 level 10 item 2

+

section 0 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 1 level 1 item 0

+

section 1 level 1 item 1

+

section 1 level 1 item 2

+

section 1 level 1 item 3

+
+

section 1 level 2 item 0

+

section 1 level 2 item 1

+

section 1 level 2 item 2

+

section 1 level 2 item 3

+
+

section 1 level 3 item 0

+

section 1 level 3 item 1

+

section 1 level 3 item 2

+

section 1 level 3 item 3

+
+

section 1 level 4 item 0

+

section 1 level 4 item 1

+

section 1 level 4 item 2

+

section 1 level 4 item 3

+
+

section 1 level 5 item 0

+

section 1 level 5 item 1

+

section 1 level 5 item 2

+

section 1 level 5 item 3

+
+

section 1 level 6 item 0

+

section 1 level 6 item 1

+

section 1 level 6 item 2

+

section 1 level 6 item 3

+
+

section 1 level 7 item 0

+

section 1 level 7 item 1

+

section 1 level 7 item 2

+

section 1 level 7 item 3

+
+

section 1 level 8 item 0

+

section 1 level 8 item 1

+

section 1 level 8 item 2

+

section 1 level 8 item 3

+
+

section 1 level 9 item 0

+

section 1 level 9 item 1

+

section 1 level 9 item 2

+

section 1 level 9 item 3

+
+

section 1 level 10 item 0

+

section 1 level 10 item 1

+

section 1 level 10 item 2

+

section 1 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 2 level 1 item 0

+

section 2 level 1 item 1

+

section 2 level 1 item 2

+

section 2 level 1 item 3

+
+

section 2 level 2 item 0

+

section 2 level 2 item 1

+

section 2 level 2 item 2

+

section 2 level 2 item 3

+
+

section 2 level 3 item 0

+

section 2 level 3 item 1

+

section 2 level 3 item 2

+

section 2 level 3 item 3

+
+

section 2 level 4 item 0

+

section 2 level 4 item 1

+

section 2 level 4 item 2

+

section 2 level 4 item 3

+
+

section 2 level 5 item 0

+

section 2 level 5 item 1

+

section 2 level 5 item 2

+

section 2 level 5 item 3

+
+

section 2 level 6 item 0

+

section 2 level 6 item 1

+

section 2 level 6 item 2

+

section 2 level 6 item 3

+
+

section 2 level 7 item 0

+

section 2 level 7 item 1

+

section 2 level 7 item 2

+

section 2 level 7 item 3

+
+

section 2 level 8 item 0

+

section 2 level 8 item 1

+

section 2 level 8 item 2

+

section 2 level 8 item 3

+
+

section 2 level 9 item 0

+

section 2 level 9 item 1

+

section 2 level 9 item 2

+

section 2 level 9 item 3

+
+

section 2 level 10 item 0

+

section 2 level 10 item 1

+

section 2 level 10 item 2

+

section 2 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 3 level 1 item 0

+

section 3 level 1 item 1

+

section 3 level 1 item 2

+

section 3 level 1 item 3

+
+

section 3 level 2 item 0

+

section 3 level 2 item 1

+

section 3 level 2 item 2

+

section 3 level 2 item 3

+
+

section 3 level 3 item 0

+

section 3 level 3 item 1

+

section 3 level 3 item 2

+

section 3 level 3 item 3

+
+

section 3 level 4 item 0

+

section 3 level 4 item 1

+

section 3 level 4 item 2

+

section 3 level 4 item 3

+
+

section 3 level 5 item 0

+

section 3 level 5 item 1

+

section 3 level 5 item 2

+

section 3 level 5 item 3

+
+

section 3 level 6 item 0

+

section 3 level 6 item 1

+

section 3 level 6 item 2

+

section 3 level 6 item 3

+
+

section 3 level 7 item 0

+

section 3 level 7 item 1

+

section 3 level 7 item 2

+

section 3 level 7 item 3

+
+

section 3 level 8 item 0

+

section 3 level 8 item 1

+

section 3 level 8 item 2

+

section 3 level 8 item 3

+
+

section 3 level 9 item 0

+

section 3 level 9 item 1

+

section 3 level 9 item 2

+

section 3 level 9 item 3

+
+

section 3 level 10 item 0

+

section 3 level 10 item 1

+

section 3 level 10 item 2

+

section 3 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 4 level 1 item 0

+

section 4 level 1 item 1

+

section 4 level 1 item 2

+

section 4 level 1 item 3

+
+

section 4 level 2 item 0

+

section 4 level 2 item 1

+

section 4 level 2 item 2

+

section 4 level 2 item 3

+
+

section 4 level 3 item 0

+

section 4 level 3 item 1

+

section 4 level 3 item 2

+

section 4 level 3 item 3

+
+

section 4 level 4 item 0

+

section 4 level 4 item 1

+

section 4 level 4 item 2

+

section 4 level 4 item 3

+
+

section 4 level 5 item 0

+

section 4 level 5 item 1

+

section 4 level 5 item 2

+

section 4 level 5 item 3

+
+

section 4 level 6 item 0

+

section 4 level 6 item 1

+

section 4 level 6 item 2

+

section 4 level 6 item 3

+
+

section 4 level 7 item 0

+

section 4 level 7 item 1

+

section 4 level 7 item 2

+

section 4 level 7 item 3

+
+

section 4 level 8 item 0

+

section 4 level 8 item 1

+

section 4 level 8 item 2

+

section 4 level 8 item 3

+
+

section 4 level 9 item 0

+

section 4 level 9 item 1

+

section 4 level 9 item 2

+

section 4 level 9 item 3

+
+

section 4 level 10 item 0

+

section 4 level 10 item 1

+

section 4 level 10 item 2

+

section 4 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 5 level 1 item 0

+

section 5 level 1 item 1

+

section 5 level 1 item 2

+

section 5 level 1 item 3

+
+

section 5 level 2 item 0

+

section 5 level 2 item 1

+

section 5 level 2 item 2

+

section 5 level 2 item 3

+
+

section 5 level 3 item 0

+

section 5 level 3 item 1

+

section 5 level 3 item 2

+

section 5 level 3 item 3

+
+

section 5 level 4 item 0

+

section 5 level 4 item 1

+

section 5 level 4 item 2

+

section 5 level 4 item 3

+
+

section 5 level 5 item 0

+

section 5 level 5 item 1

+

section 5 level 5 item 2

+

section 5 level 5 item 3

+
+

section 5 level 6 item 0

+

section 5 level 6 item 1

+

section 5 level 6 item 2

+

section 5 level 6 item 3

+
+

section 5 level 7 item 0

+

section 5 level 7 item 1

+

section 5 level 7 item 2

+

section 5 level 7 item 3

+
+

section 5 level 8 item 0

+

section 5 level 8 item 1

+

section 5 level 8 item 2

+

section 5 level 8 item 3

+
+

section 5 level 9 item 0

+

section 5 level 9 item 1

+

section 5 level 9 item 2

+

section 5 level 9 item 3

+
+

section 5 level 10 item 0

+

section 5 level 10 item 1

+

section 5 level 10 item 2

+

section 5 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 6 level 1 item 0

+

section 6 level 1 item 1

+

section 6 level 1 item 2

+

section 6 level 1 item 3

+
+

section 6 level 2 item 0

+

section 6 level 2 item 1

+

section 6 level 2 item 2

+

section 6 level 2 item 3

+
+

section 6 level 3 item 0

+

section 6 level 3 item 1

+

section 6 level 3 item 2

+

section 6 level 3 item 3

+
+

section 6 level 4 item 0

+

section 6 level 4 item 1

+

section 6 level 4 item 2

+

section 6 level 4 item 3

+
+

section 6 level 5 item 0

+

section 6 level 5 item 1

+

section 6 level 5 item 2

+

section 6 level 5 item 3

+
+

section 6 level 6 item 0

+

section 6 level 6 item 1

+

section 6 level 6 item 2

+

section 6 level 6 item 3

+
+

section 6 level 7 item 0

+

section 6 level 7 item 1

+

section 6 level 7 item 2

+

section 6 level 7 item 3

+
+

section 6 level 8 item 0

+

section 6 level 8 item 1

+

section 6 level 8 item 2

+

section 6 level 8 item 3

+
+

section 6 level 9 item 0

+

section 6 level 9 item 1

+

section 6 level 9 item 2

+

section 6 level 9 item 3

+
+

section 6 level 10 item 0

+

section 6 level 10 item 1

+

section 6 level 10 item 2

+

section 6 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 7 level 1 item 0

+

section 7 level 1 item 1

+

section 7 level 1 item 2

+

section 7 level 1 item 3

+
+

section 7 level 2 item 0

+

section 7 level 2 item 1

+

section 7 level 2 item 2

+

section 7 level 2 item 3

+
+

section 7 level 3 item 0

+

section 7 level 3 item 1

+

section 7 level 3 item 2

+

section 7 level 3 item 3

+
+

section 7 level 4 item 0

+

section 7 level 4 item 1

+

section 7 level 4 item 2

+

section 7 level 4 item 3

+
+

section 7 level 5 item 0

+

section 7 level 5 item 1

+

section 7 level 5 item 2

+

section 7 level 5 item 3

+
+

section 7 level 6 item 0

+

section 7 level 6 item 1

+

section 7 level 6 item 2

+

section 7 level 6 item 3

+
+

section 7 level 7 item 0

+

section 7 level 7 item 1

+

section 7 level 7 item 2

+

section 7 level 7 item 3

+
+

section 7 level 8 item 0

+

section 7 level 8 item 1

+

section 7 level 8 item 2

+

section 7 level 8 item 3

+
+

section 7 level 9 item 0

+

section 7 level 9 item 1

+

section 7 level 9 item 2

+

section 7 level 9 item 3

+
+

section 7 level 10 item 0

+

section 7 level 10 item 1

+

section 7 level 10 item 2

+

section 7 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 8 level 1 item 0

+

section 8 level 1 item 1

+

section 8 level 1 item 2

+

section 8 level 1 item 3

+
+

section 8 level 2 item 0

+

section 8 level 2 item 1

+

section 8 level 2 item 2

+

section 8 level 2 item 3

+
+

section 8 level 3 item 0

+

section 8 level 3 item 1

+

section 8 level 3 item 2

+

section 8 level 3 item 3

+
+

section 8 level 4 item 0

+

section 8 level 4 item 1

+

section 8 level 4 item 2

+

section 8 level 4 item 3

+
+

section 8 level 5 item 0

+

section 8 level 5 item 1

+

section 8 level 5 item 2

+

section 8 level 5 item 3

+
+

section 8 level 6 item 0

+

section 8 level 6 item 1

+

section 8 level 6 item 2

+

section 8 level 6 item 3

+
+

section 8 level 7 item 0

+

section 8 level 7 item 1

+

section 8 level 7 item 2

+

section 8 level 7 item 3

+
+

section 8 level 8 item 0

+

section 8 level 8 item 1

+

section 8 level 8 item 2

+

section 8 level 8 item 3

+
+

section 8 level 9 item 0

+

section 8 level 9 item 1

+

section 8 level 9 item 2

+

section 8 level 9 item 3

+
+

section 8 level 10 item 0

+

section 8 level 10 item 1

+

section 8 level 10 item 2

+

section 8 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 9 level 1 item 0

+

section 9 level 1 item 1

+

section 9 level 1 item 2

+

section 9 level 1 item 3

+
+

section 9 level 2 item 0

+

section 9 level 2 item 1

+

section 9 level 2 item 2

+

section 9 level 2 item 3

+
+

section 9 level 3 item 0

+

section 9 level 3 item 1

+

section 9 level 3 item 2

+

section 9 level 3 item 3

+
+

section 9 level 4 item 0

+

section 9 level 4 item 1

+

section 9 level 4 item 2

+

section 9 level 4 item 3

+
+

section 9 level 5 item 0

+

section 9 level 5 item 1

+

section 9 level 5 item 2

+

section 9 level 5 item 3

+
+

section 9 level 6 item 0

+

section 9 level 6 item 1

+

section 9 level 6 item 2

+

section 9 level 6 item 3

+
+

section 9 level 7 item 0

+

section 9 level 7 item 1

+

section 9 level 7 item 2

+

section 9 level 7 item 3

+
+

section 9 level 8 item 0

+

section 9 level 8 item 1

+

section 9 level 8 item 2

+

section 9 level 8 item 3

+
+

section 9 level 9 item 0

+

section 9 level 9 item 1

+

section 9 level 9 item 2

+

section 9 level 9 item 3

+
+

section 9 level 10 item 0

+

section 9 level 10 item 1

+

section 9 level 10 item 2

+

section 9 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 10 level 1 item 0

+

section 10 level 1 item 1

+

section 10 level 1 item 2

+

section 10 level 1 item 3

+
+

section 10 level 2 item 0

+

section 10 level 2 item 1

+

section 10 level 2 item 2

+

section 10 level 2 item 3

+
+

section 10 level 3 item 0

+

section 10 level 3 item 1

+

section 10 level 3 item 2

+

section 10 level 3 item 3

+
+

section 10 level 4 item 0

+

section 10 level 4 item 1

+

section 10 level 4 item 2

+

section 10 level 4 item 3

+
+

section 10 level 5 item 0

+

section 10 level 5 item 1

+

section 10 level 5 item 2

+

section 10 level 5 item 3

+
+

section 10 level 6 item 0

+

section 10 level 6 item 1

+

section 10 level 6 item 2

+

section 10 level 6 item 3

+
+

section 10 level 7 item 0

+

section 10 level 7 item 1

+

section 10 level 7 item 2

+

section 10 level 7 item 3

+
+

section 10 level 8 item 0

+

section 10 level 8 item 1

+

section 10 level 8 item 2

+

section 10 level 8 item 3

+
+

section 10 level 9 item 0

+

section 10 level 9 item 1

+

section 10 level 9 item 2

+

section 10 level 9 item 3

+
+

section 10 level 10 item 0

+

section 10 level 10 item 1

+

section 10 level 10 item 2

+

section 10 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 11 level 1 item 0

+

section 11 level 1 item 1

+

section 11 level 1 item 2

+

section 11 level 1 item 3

+
+

section 11 level 2 item 0

+

section 11 level 2 item 1

+

section 11 level 2 item 2

+

section 11 level 2 item 3

+
+

section 11 level 3 item 0

+

section 11 level 3 item 1

+

section 11 level 3 item 2

+

section 11 level 3 item 3

+
+

section 11 level 4 item 0

+

section 11 level 4 item 1

+

section 11 level 4 item 2

+

section 11 level 4 item 3

+
+

section 11 level 5 item 0

+

section 11 level 5 item 1

+

section 11 level 5 item 2

+

section 11 level 5 item 3

+
+

section 11 level 6 item 0

+

section 11 level 6 item 1

+

section 11 level 6 item 2

+

section 11 level 6 item 3

+
+

section 11 level 7 item 0

+

section 11 level 7 item 1

+

section 11 level 7 item 2

+

section 11 level 7 item 3

+
+

section 11 level 8 item 0

+

section 11 level 8 item 1

+

section 11 level 8 item 2

+

section 11 level 8 item 3

+
+

section 11 level 9 item 0

+

section 11 level 9 item 1

+

section 11 level 9 item 2

+

section 11 level 9 item 3

+
+

section 11 level 10 item 0

+

section 11 level 10 item 1

+

section 11 level 10 item 2

+

section 11 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 12 level 1 item 0

+

section 12 level 1 item 1

+

section 12 level 1 item 2

+

section 12 level 1 item 3

+
+

section 12 level 2 item 0

+

section 12 level 2 item 1

+

section 12 level 2 item 2

+

section 12 level 2 item 3

+
+

section 12 level 3 item 0

+

section 12 level 3 item 1

+

section 12 level 3 item 2

+

section 12 level 3 item 3

+
+

section 12 level 4 item 0

+

section 12 level 4 item 1

+

section 12 level 4 item 2

+

section 12 level 4 item 3

+
+

section 12 level 5 item 0

+

section 12 level 5 item 1

+

section 12 level 5 item 2

+

section 12 level 5 item 3

+
+

section 12 level 6 item 0

+

section 12 level 6 item 1

+

section 12 level 6 item 2

+

section 12 level 6 item 3

+
+

section 12 level 7 item 0

+

section 12 level 7 item 1

+

section 12 level 7 item 2

+

section 12 level 7 item 3

+
+

section 12 level 8 item 0

+

section 12 level 8 item 1

+

section 12 level 8 item 2

+

section 12 level 8 item 3

+
+

section 12 level 9 item 0

+

section 12 level 9 item 1

+

section 12 level 9 item 2

+

section 12 level 9 item 3

+
+

section 12 level 10 item 0

+

section 12 level 10 item 1

+

section 12 level 10 item 2

+

section 12 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 13 level 1 item 0

+

section 13 level 1 item 1

+

section 13 level 1 item 2

+

section 13 level 1 item 3

+
+

section 13 level 2 item 0

+

section 13 level 2 item 1

+

section 13 level 2 item 2

+

section 13 level 2 item 3

+
+

section 13 level 3 item 0

+

section 13 level 3 item 1

+

section 13 level 3 item 2

+

section 13 level 3 item 3

+
+

section 13 level 4 item 0

+

section 13 level 4 item 1

+

section 13 level 4 item 2

+

section 13 level 4 item 3

+
+

section 13 level 5 item 0

+

section 13 level 5 item 1

+

section 13 level 5 item 2

+

section 13 level 5 item 3

+
+

section 13 level 6 item 0

+

section 13 level 6 item 1

+

section 13 level 6 item 2

+

section 13 level 6 item 3

+
+

section 13 level 7 item 0

+

section 13 level 7 item 1

+

section 13 level 7 item 2

+

section 13 level 7 item 3

+
+

section 13 level 8 item 0

+

section 13 level 8 item 1

+

section 13 level 8 item 2

+

section 13 level 8 item 3

+
+

section 13 level 9 item 0

+

section 13 level 9 item 1

+

section 13 level 9 item 2

+

section 13 level 9 item 3

+
+

section 13 level 10 item 0

+

section 13 level 10 item 1

+

section 13 level 10 item 2

+

section 13 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 14 level 1 item 0

+

section 14 level 1 item 1

+

section 14 level 1 item 2

+

section 14 level 1 item 3

+
+

section 14 level 2 item 0

+

section 14 level 2 item 1

+

section 14 level 2 item 2

+

section 14 level 2 item 3

+
+

section 14 level 3 item 0

+

section 14 level 3 item 1

+

section 14 level 3 item 2

+

section 14 level 3 item 3

+
+

section 14 level 4 item 0

+

section 14 level 4 item 1

+

section 14 level 4 item 2

+

section 14 level 4 item 3

+
+

section 14 level 5 item 0

+

section 14 level 5 item 1

+

section 14 level 5 item 2

+

section 14 level 5 item 3

+
+

section 14 level 6 item 0

+

section 14 level 6 item 1

+

section 14 level 6 item 2

+

section 14 level 6 item 3

+
+

section 14 level 7 item 0

+

section 14 level 7 item 1

+

section 14 level 7 item 2

+

section 14 level 7 item 3

+
+

section 14 level 8 item 0

+

section 14 level 8 item 1

+

section 14 level 8 item 2

+

section 14 level 8 item 3

+
+

section 14 level 9 item 0

+

section 14 level 9 item 1

+

section 14 level 9 item 2

+

section 14 level 9 item 3

+
+

section 14 level 10 item 0

+

section 14 level 10 item 1

+

section 14 level 10 item 2

+

section 14 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 15 level 1 item 0

+

section 15 level 1 item 1

+

section 15 level 1 item 2

+

section 15 level 1 item 3

+
+

section 15 level 2 item 0

+

section 15 level 2 item 1

+

section 15 level 2 item 2

+

section 15 level 2 item 3

+
+

section 15 level 3 item 0

+

section 15 level 3 item 1

+

section 15 level 3 item 2

+

section 15 level 3 item 3

+
+

section 15 level 4 item 0

+

section 15 level 4 item 1

+

section 15 level 4 item 2

+

section 15 level 4 item 3

+
+

section 15 level 5 item 0

+

section 15 level 5 item 1

+

section 15 level 5 item 2

+

section 15 level 5 item 3

+
+

section 15 level 6 item 0

+

section 15 level 6 item 1

+

section 15 level 6 item 2

+

section 15 level 6 item 3

+
+

section 15 level 7 item 0

+

section 15 level 7 item 1

+

section 15 level 7 item 2

+

section 15 level 7 item 3

+
+

section 15 level 8 item 0

+

section 15 level 8 item 1

+

section 15 level 8 item 2

+

section 15 level 8 item 3

+
+

section 15 level 9 item 0

+

section 15 level 9 item 1

+

section 15 level 9 item 2

+

section 15 level 9 item 3

+
+

section 15 level 10 item 0

+

section 15 level 10 item 1

+

section 15 level 10 item 2

+

section 15 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 16 level 1 item 0

+

section 16 level 1 item 1

+

section 16 level 1 item 2

+

section 16 level 1 item 3

+
+

section 16 level 2 item 0

+

section 16 level 2 item 1

+

section 16 level 2 item 2

+

section 16 level 2 item 3

+
+

section 16 level 3 item 0

+

section 16 level 3 item 1

+

section 16 level 3 item 2

+

section 16 level 3 item 3

+
+

section 16 level 4 item 0

+

section 16 level 4 item 1

+

section 16 level 4 item 2

+

section 16 level 4 item 3

+
+

section 16 level 5 item 0

+

section 16 level 5 item 1

+

section 16 level 5 item 2

+

section 16 level 5 item 3

+
+

section 16 level 6 item 0

+

section 16 level 6 item 1

+

section 16 level 6 item 2

+

section 16 level 6 item 3

+
+

section 16 level 7 item 0

+

section 16 level 7 item 1

+

section 16 level 7 item 2

+

section 16 level 7 item 3

+
+

section 16 level 8 item 0

+

section 16 level 8 item 1

+

section 16 level 8 item 2

+

section 16 level 8 item 3

+
+

section 16 level 9 item 0

+

section 16 level 9 item 1

+

section 16 level 9 item 2

+

section 16 level 9 item 3

+
+

section 16 level 10 item 0

+

section 16 level 10 item 1

+

section 16 level 10 item 2

+

section 16 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 17 level 1 item 0

+

section 17 level 1 item 1

+

section 17 level 1 item 2

+

section 17 level 1 item 3

+
+

section 17 level 2 item 0

+

section 17 level 2 item 1

+

section 17 level 2 item 2

+

section 17 level 2 item 3

+
+

section 17 level 3 item 0

+

section 17 level 3 item 1

+

section 17 level 3 item 2

+

section 17 level 3 item 3

+
+

section 17 level 4 item 0

+

section 17 level 4 item 1

+

section 17 level 4 item 2

+

section 17 level 4 item 3

+
+

section 17 level 5 item 0

+

section 17 level 5 item 1

+

section 17 level 5 item 2

+

section 17 level 5 item 3

+
+

section 17 level 6 item 0

+

section 17 level 6 item 1

+

section 17 level 6 item 2

+

section 17 level 6 item 3

+
+

section 17 level 7 item 0

+

section 17 level 7 item 1

+

section 17 level 7 item 2

+

section 17 level 7 item 3

+
+

section 17 level 8 item 0

+

section 17 level 8 item 1

+

section 17 level 8 item 2

+

section 17 level 8 item 3

+
+

section 17 level 9 item 0

+

section 17 level 9 item 1

+

section 17 level 9 item 2

+

section 17 level 9 item 3

+
+

section 17 level 10 item 0

+

section 17 level 10 item 1

+

section 17 level 10 item 2

+

section 17 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 18 level 1 item 0

+

section 18 level 1 item 1

+

section 18 level 1 item 2

+

section 18 level 1 item 3

+
+

section 18 level 2 item 0

+

section 18 level 2 item 1

+

section 18 level 2 item 2

+

section 18 level 2 item 3

+
+

section 18 level 3 item 0

+

section 18 level 3 item 1

+

section 18 level 3 item 2

+

section 18 level 3 item 3

+
+

section 18 level 4 item 0

+

section 18 level 4 item 1

+

section 18 level 4 item 2

+

section 18 level 4 item 3

+
+

section 18 level 5 item 0

+

section 18 level 5 item 1

+

section 18 level 5 item 2

+

section 18 level 5 item 3

+
+

section 18 level 6 item 0

+

section 18 level 6 item 1

+

section 18 level 6 item 2

+

section 18 level 6 item 3

+
+

section 18 level 7 item 0

+

section 18 level 7 item 1

+

section 18 level 7 item 2

+

section 18 level 7 item 3

+
+

section 18 level 8 item 0

+

section 18 level 8 item 1

+

section 18 level 8 item 2

+

section 18 level 8 item 3

+
+

section 18 level 9 item 0

+

section 18 level 9 item 1

+

section 18 level 9 item 2

+

section 18 level 9 item 3

+
+

section 18 level 10 item 0

+

section 18 level 10 item 1

+

section 18 level 10 item 2

+

section 18 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 19 level 1 item 0

+

section 19 level 1 item 1

+

section 19 level 1 item 2

+

section 19 level 1 item 3

+
+

section 19 level 2 item 0

+

section 19 level 2 item 1

+

section 19 level 2 item 2

+

section 19 level 2 item 3

+
+

section 19 level 3 item 0

+

section 19 level 3 item 1

+

section 19 level 3 item 2

+

section 19 level 3 item 3

+
+

section 19 level 4 item 0

+

section 19 level 4 item 1

+

section 19 level 4 item 2

+

section 19 level 4 item 3

+
+

section 19 level 5 item 0

+

section 19 level 5 item 1

+

section 19 level 5 item 2

+

section 19 level 5 item 3

+
+

section 19 level 6 item 0

+

section 19 level 6 item 1

+

section 19 level 6 item 2

+

section 19 level 6 item 3

+
+

section 19 level 7 item 0

+

section 19 level 7 item 1

+

section 19 level 7 item 2

+

section 19 level 7 item 3

+
+

section 19 level 8 item 0

+

section 19 level 8 item 1

+

section 19 level 8 item 2

+

section 19 level 8 item 3

+
+

section 19 level 9 item 0

+

section 19 level 9 item 1

+

section 19 level 9 item 2

+

section 19 level 9 item 3

+
+

section 19 level 10 item 0

+

section 19 level 10 item 1

+

section 19 level 10 item 2

+

section 19 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 20 level 1 item 0

+

section 20 level 1 item 1

+

section 20 level 1 item 2

+

section 20 level 1 item 3

+
+

section 20 level 2 item 0

+

section 20 level 2 item 1

+

section 20 level 2 item 2

+

section 20 level 2 item 3

+
+

section 20 level 3 item 0

+

section 20 level 3 item 1

+

section 20 level 3 item 2

+

section 20 level 3 item 3

+
+

section 20 level 4 item 0

+

section 20 level 4 item 1

+

section 20 level 4 item 2

+

section 20 level 4 item 3

+
+

section 20 level 5 item 0

+

section 20 level 5 item 1

+

section 20 level 5 item 2

+

section 20 level 5 item 3

+
+

section 20 level 6 item 0

+

section 20 level 6 item 1

+

section 20 level 6 item 2

+

section 20 level 6 item 3

+
+

section 20 level 7 item 0

+

section 20 level 7 item 1

+

section 20 level 7 item 2

+

section 20 level 7 item 3

+
+

section 20 level 8 item 0

+

section 20 level 8 item 1

+

section 20 level 8 item 2

+

section 20 level 8 item 3

+
+

section 20 level 9 item 0

+

section 20 level 9 item 1

+

section 20 level 9 item 2

+

section 20 level 9 item 3

+
+

section 20 level 10 item 0

+

section 20 level 10 item 1

+

section 20 level 10 item 2

+

section 20 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 21 level 1 item 0

+

section 21 level 1 item 1

+

section 21 level 1 item 2

+

section 21 level 1 item 3

+
+

section 21 level 2 item 0

+

section 21 level 2 item 1

+

section 21 level 2 item 2

+

section 21 level 2 item 3

+
+

section 21 level 3 item 0

+

section 21 level 3 item 1

+

section 21 level 3 item 2

+

section 21 level 3 item 3

+
+

section 21 level 4 item 0

+

section 21 level 4 item 1

+

section 21 level 4 item 2

+

section 21 level 4 item 3

+
+

section 21 level 5 item 0

+

section 21 level 5 item 1

+

section 21 level 5 item 2

+

section 21 level 5 item 3

+
+

section 21 level 6 item 0

+

section 21 level 6 item 1

+

section 21 level 6 item 2

+

section 21 level 6 item 3

+
+

section 21 level 7 item 0

+

section 21 level 7 item 1

+

section 21 level 7 item 2

+

section 21 level 7 item 3

+
+

section 21 level 8 item 0

+

section 21 level 8 item 1

+

section 21 level 8 item 2

+

section 21 level 8 item 3

+
+

section 21 level 9 item 0

+

section 21 level 9 item 1

+

section 21 level 9 item 2

+

section 21 level 9 item 3

+
+

section 21 level 10 item 0

+

section 21 level 10 item 1

+

section 21 level 10 item 2

+

section 21 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 22 level 1 item 0

+

section 22 level 1 item 1

+

section 22 level 1 item 2

+

section 22 level 1 item 3

+
+

section 22 level 2 item 0

+

section 22 level 2 item 1

+

section 22 level 2 item 2

+

section 22 level 2 item 3

+
+

section 22 level 3 item 0

+

section 22 level 3 item 1

+

section 22 level 3 item 2

+

section 22 level 3 item 3

+
+

section 22 level 4 item 0

+

section 22 level 4 item 1

+

section 22 level 4 item 2

+

section 22 level 4 item 3

+
+

section 22 level 5 item 0

+

section 22 level 5 item 1

+

section 22 level 5 item 2

+

section 22 level 5 item 3

+
+

section 22 level 6 item 0

+

section 22 level 6 item 1

+

section 22 level 6 item 2

+

section 22 level 6 item 3

+
+

section 22 level 7 item 0

+

section 22 level 7 item 1

+

section 22 level 7 item 2

+

section 22 level 7 item 3

+
+

section 22 level 8 item 0

+

section 22 level 8 item 1

+

section 22 level 8 item 2

+

section 22 level 8 item 3

+
+

section 22 level 9 item 0

+

section 22 level 9 item 1

+

section 22 level 9 item 2

+

section 22 level 9 item 3

+
+

section 22 level 10 item 0

+

section 22 level 10 item 1

+

section 22 level 10 item 2

+

section 22 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 23 level 1 item 0

+

section 23 level 1 item 1

+

section 23 level 1 item 2

+

section 23 level 1 item 3

+
+

section 23 level 2 item 0

+

section 23 level 2 item 1

+

section 23 level 2 item 2

+

section 23 level 2 item 3

+
+

section 23 level 3 item 0

+

section 23 level 3 item 1

+

section 23 level 3 item 2

+

section 23 level 3 item 3

+
+

section 23 level 4 item 0

+

section 23 level 4 item 1

+

section 23 level 4 item 2

+

section 23 level 4 item 3

+
+

section 23 level 5 item 0

+

section 23 level 5 item 1

+

section 23 level 5 item 2

+

section 23 level 5 item 3

+
+

section 23 level 6 item 0

+

section 23 level 6 item 1

+

section 23 level 6 item 2

+

section 23 level 6 item 3

+
+

section 23 level 7 item 0

+

section 23 level 7 item 1

+

section 23 level 7 item 2

+

section 23 level 7 item 3

+
+

section 23 level 8 item 0

+

section 23 level 8 item 1

+

section 23 level 8 item 2

+

section 23 level 8 item 3

+
+

section 23 level 9 item 0

+

section 23 level 9 item 1

+

section 23 level 9 item 2

+

section 23 level 9 item 3

+
+

section 23 level 10 item 0

+

section 23 level 10 item 1

+

section 23 level 10 item 2

+

section 23 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 24 level 1 item 0

+

section 24 level 1 item 1

+

section 24 level 1 item 2

+

section 24 level 1 item 3

+
+

section 24 level 2 item 0

+

section 24 level 2 item 1

+

section 24 level 2 item 2

+

section 24 level 2 item 3

+
+

section 24 level 3 item 0

+

section 24 level 3 item 1

+

section 24 level 3 item 2

+

section 24 level 3 item 3

+
+

section 24 level 4 item 0

+

section 24 level 4 item 1

+

section 24 level 4 item 2

+

section 24 level 4 item 3

+
+

section 24 level 5 item 0

+

section 24 level 5 item 1

+

section 24 level 5 item 2

+

section 24 level 5 item 3

+
+

section 24 level 6 item 0

+

section 24 level 6 item 1

+

section 24 level 6 item 2

+

section 24 level 6 item 3

+
+

section 24 level 7 item 0

+

section 24 level 7 item 1

+

section 24 level 7 item 2

+

section 24 level 7 item 3

+
+

section 24 level 8 item 0

+

section 24 level 8 item 1

+

section 24 level 8 item 2

+

section 24 level 8 item 3

+
+

section 24 level 9 item 0

+

section 24 level 9 item 1

+

section 24 level 9 item 2

+

section 24 level 9 item 3

+
+

section 24 level 10 item 0

+

section 24 level 10 item 1

+

section 24 level 10 item 2

+

section 24 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 25 level 1 item 0

+

section 25 level 1 item 1

+

section 25 level 1 item 2

+

section 25 level 1 item 3

+
+

section 25 level 2 item 0

+

section 25 level 2 item 1

+

section 25 level 2 item 2

+

section 25 level 2 item 3

+
+

section 25 level 3 item 0

+

section 25 level 3 item 1

+

section 25 level 3 item 2

+

section 25 level 3 item 3

+
+

section 25 level 4 item 0

+

section 25 level 4 item 1

+

section 25 level 4 item 2

+

section 25 level 4 item 3

+
+

section 25 level 5 item 0

+

section 25 level 5 item 1

+

section 25 level 5 item 2

+

section 25 level 5 item 3

+
+

section 25 level 6 item 0

+

section 25 level 6 item 1

+

section 25 level 6 item 2

+

section 25 level 6 item 3

+
+

section 25 level 7 item 0

+

section 25 level 7 item 1

+

section 25 level 7 item 2

+

section 25 level 7 item 3

+
+

section 25 level 8 item 0

+

section 25 level 8 item 1

+

section 25 level 8 item 2

+

section 25 level 8 item 3

+
+

section 25 level 9 item 0

+

section 25 level 9 item 1

+

section 25 level 9 item 2

+

section 25 level 9 item 3

+
+

section 25 level 10 item 0

+

section 25 level 10 item 1

+

section 25 level 10 item 2

+

section 25 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 26 level 1 item 0

+

section 26 level 1 item 1

+

section 26 level 1 item 2

+

section 26 level 1 item 3

+
+

section 26 level 2 item 0

+

section 26 level 2 item 1

+

section 26 level 2 item 2

+

section 26 level 2 item 3

+
+

section 26 level 3 item 0

+

section 26 level 3 item 1

+

section 26 level 3 item 2

+

section 26 level 3 item 3

+
+

section 26 level 4 item 0

+

section 26 level 4 item 1

+

section 26 level 4 item 2

+

section 26 level 4 item 3

+
+

section 26 level 5 item 0

+

section 26 level 5 item 1

+

section 26 level 5 item 2

+

section 26 level 5 item 3

+
+

section 26 level 6 item 0

+

section 26 level 6 item 1

+

section 26 level 6 item 2

+

section 26 level 6 item 3

+
+

section 26 level 7 item 0

+

section 26 level 7 item 1

+

section 26 level 7 item 2

+

section 26 level 7 item 3

+
+

section 26 level 8 item 0

+

section 26 level 8 item 1

+

section 26 level 8 item 2

+

section 26 level 8 item 3

+
+

section 26 level 9 item 0

+

section 26 level 9 item 1

+

section 26 level 9 item 2

+

section 26 level 9 item 3

+
+

section 26 level 10 item 0

+

section 26 level 10 item 1

+

section 26 level 10 item 2

+

section 26 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 27 level 1 item 0

+

section 27 level 1 item 1

+

section 27 level 1 item 2

+

section 27 level 1 item 3

+
+

section 27 level 2 item 0

+

section 27 level 2 item 1

+

section 27 level 2 item 2

+

section 27 level 2 item 3

+
+

section 27 level 3 item 0

+

section 27 level 3 item 1

+

section 27 level 3 item 2

+

section 27 level 3 item 3

+
+

section 27 level 4 item 0

+

section 27 level 4 item 1

+

section 27 level 4 item 2

+

section 27 level 4 item 3

+
+

section 27 level 5 item 0

+

section 27 level 5 item 1

+

section 27 level 5 item 2

+

section 27 level 5 item 3

+
+

section 27 level 6 item 0

+

section 27 level 6 item 1

+

section 27 level 6 item 2

+

section 27 level 6 item 3

+
+

section 27 level 7 item 0

+

section 27 level 7 item 1

+

section 27 level 7 item 2

+

section 27 level 7 item 3

+
+

section 27 level 8 item 0

+

section 27 level 8 item 1

+

section 27 level 8 item 2

+

section 27 level 8 item 3

+
+

section 27 level 9 item 0

+

section 27 level 9 item 1

+

section 27 level 9 item 2

+

section 27 level 9 item 3

+
+

section 27 level 10 item 0

+

section 27 level 10 item 1

+

section 27 level 10 item 2

+

section 27 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 28 level 1 item 0

+

section 28 level 1 item 1

+

section 28 level 1 item 2

+

section 28 level 1 item 3

+
+

section 28 level 2 item 0

+

section 28 level 2 item 1

+

section 28 level 2 item 2

+

section 28 level 2 item 3

+
+

section 28 level 3 item 0

+

section 28 level 3 item 1

+

section 28 level 3 item 2

+

section 28 level 3 item 3

+
+

section 28 level 4 item 0

+

section 28 level 4 item 1

+

section 28 level 4 item 2

+

section 28 level 4 item 3

+
+

section 28 level 5 item 0

+

section 28 level 5 item 1

+

section 28 level 5 item 2

+

section 28 level 5 item 3

+
+

section 28 level 6 item 0

+

section 28 level 6 item 1

+

section 28 level 6 item 2

+

section 28 level 6 item 3

+
+

section 28 level 7 item 0

+

section 28 level 7 item 1

+

section 28 level 7 item 2

+

section 28 level 7 item 3

+
+

section 28 level 8 item 0

+

section 28 level 8 item 1

+

section 28 level 8 item 2

+

section 28 level 8 item 3

+
+

section 28 level 9 item 0

+

section 28 level 9 item 1

+

section 28 level 9 item 2

+

section 28 level 9 item 3

+
+

section 28 level 10 item 0

+

section 28 level 10 item 1

+

section 28 level 10 item 2

+

section 28 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 29 level 1 item 0

+

section 29 level 1 item 1

+

section 29 level 1 item 2

+

section 29 level 1 item 3

+
+

section 29 level 2 item 0

+

section 29 level 2 item 1

+

section 29 level 2 item 2

+

section 29 level 2 item 3

+
+

section 29 level 3 item 0

+

section 29 level 3 item 1

+

section 29 level 3 item 2

+

section 29 level 3 item 3

+
+

section 29 level 4 item 0

+

section 29 level 4 item 1

+

section 29 level 4 item 2

+

section 29 level 4 item 3

+
+

section 29 level 5 item 0

+

section 29 level 5 item 1

+

section 29 level 5 item 2

+

section 29 level 5 item 3

+
+

section 29 level 6 item 0

+

section 29 level 6 item 1

+

section 29 level 6 item 2

+

section 29 level 6 item 3

+
+

section 29 level 7 item 0

+

section 29 level 7 item 1

+

section 29 level 7 item 2

+

section 29 level 7 item 3

+
+

section 29 level 8 item 0

+

section 29 level 8 item 1

+

section 29 level 8 item 2

+

section 29 level 8 item 3

+
+

section 29 level 9 item 0

+

section 29 level 9 item 1

+

section 29 level 9 item 2

+

section 29 level 9 item 3

+
+

section 29 level 10 item 0

+

section 29 level 10 item 1

+

section 29 level 10 item 2

+

section 29 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 30 level 1 item 0

+

section 30 level 1 item 1

+

section 30 level 1 item 2

+

section 30 level 1 item 3

+
+

section 30 level 2 item 0

+

section 30 level 2 item 1

+

section 30 level 2 item 2

+

section 30 level 2 item 3

+
+

section 30 level 3 item 0

+

section 30 level 3 item 1

+

section 30 level 3 item 2

+

section 30 level 3 item 3

+
+

section 30 level 4 item 0

+

section 30 level 4 item 1

+

section 30 level 4 item 2

+

section 30 level 4 item 3

+
+

section 30 level 5 item 0

+

section 30 level 5 item 1

+

section 30 level 5 item 2

+

section 30 level 5 item 3

+
+

section 30 level 6 item 0

+

section 30 level 6 item 1

+

section 30 level 6 item 2

+

section 30 level 6 item 3

+
+

section 30 level 7 item 0

+

section 30 level 7 item 1

+

section 30 level 7 item 2

+

section 30 level 7 item 3

+
+

section 30 level 8 item 0

+

section 30 level 8 item 1

+

section 30 level 8 item 2

+

section 30 level 8 item 3

+
+

section 30 level 9 item 0

+

section 30 level 9 item 1

+

section 30 level 9 item 2

+

section 30 level 9 item 3

+
+

section 30 level 10 item 0

+

section 30 level 10 item 1

+

section 30 level 10 item 2

+

section 30 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 31 level 1 item 0

+

section 31 level 1 item 1

+

section 31 level 1 item 2

+

section 31 level 1 item 3

+
+

section 31 level 2 item 0

+

section 31 level 2 item 1

+

section 31 level 2 item 2

+

section 31 level 2 item 3

+
+

section 31 level 3 item 0

+

section 31 level 3 item 1

+

section 31 level 3 item 2

+

section 31 level 3 item 3

+
+

section 31 level 4 item 0

+

section 31 level 4 item 1

+

section 31 level 4 item 2

+

section 31 level 4 item 3

+
+

section 31 level 5 item 0

+

section 31 level 5 item 1

+

section 31 level 5 item 2

+

section 31 level 5 item 3

+
+

section 31 level 6 item 0

+

section 31 level 6 item 1

+

section 31 level 6 item 2

+

section 31 level 6 item 3

+
+

section 31 level 7 item 0

+

section 31 level 7 item 1

+

section 31 level 7 item 2

+

section 31 level 7 item 3

+
+

section 31 level 8 item 0

+

section 31 level 8 item 1

+

section 31 level 8 item 2

+

section 31 level 8 item 3

+
+

section 31 level 9 item 0

+

section 31 level 9 item 1

+

section 31 level 9 item 2

+

section 31 level 9 item 3

+
+

section 31 level 10 item 0

+

section 31 level 10 item 1

+

section 31 level 10 item 2

+

section 31 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 32 level 1 item 0

+

section 32 level 1 item 1

+

section 32 level 1 item 2

+

section 32 level 1 item 3

+
+

section 32 level 2 item 0

+

section 32 level 2 item 1

+

section 32 level 2 item 2

+

section 32 level 2 item 3

+
+

section 32 level 3 item 0

+

section 32 level 3 item 1

+

section 32 level 3 item 2

+

section 32 level 3 item 3

+
+

section 32 level 4 item 0

+

section 32 level 4 item 1

+

section 32 level 4 item 2

+

section 32 level 4 item 3

+
+

section 32 level 5 item 0

+

section 32 level 5 item 1

+

section 32 level 5 item 2

+

section 32 level 5 item 3

+
+

section 32 level 6 item 0

+

section 32 level 6 item 1

+

section 32 level 6 item 2

+

section 32 level 6 item 3

+
+

section 32 level 7 item 0

+

section 32 level 7 item 1

+

section 32 level 7 item 2

+

section 32 level 7 item 3

+
+

section 32 level 8 item 0

+

section 32 level 8 item 1

+

section 32 level 8 item 2

+

section 32 level 8 item 3

+
+

section 32 level 9 item 0

+

section 32 level 9 item 1

+

section 32 level 9 item 2

+

section 32 level 9 item 3

+
+

section 32 level 10 item 0

+

section 32 level 10 item 1

+

section 32 level 10 item 2

+

section 32 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 33 level 1 item 0

+

section 33 level 1 item 1

+

section 33 level 1 item 2

+

section 33 level 1 item 3

+
+

section 33 level 2 item 0

+

section 33 level 2 item 1

+

section 33 level 2 item 2

+

section 33 level 2 item 3

+
+

section 33 level 3 item 0

+

section 33 level 3 item 1

+

section 33 level 3 item 2

+

section 33 level 3 item 3

+
+

section 33 level 4 item 0

+

section 33 level 4 item 1

+

section 33 level 4 item 2

+

section 33 level 4 item 3

+
+

section 33 level 5 item 0

+

section 33 level 5 item 1

+

section 33 level 5 item 2

+

section 33 level 5 item 3

+
+

section 33 level 6 item 0

+

section 33 level 6 item 1

+

section 33 level 6 item 2

+

section 33 level 6 item 3

+
+

section 33 level 7 item 0

+

section 33 level 7 item 1

+

section 33 level 7 item 2

+

section 33 level 7 item 3

+
+

section 33 level 8 item 0

+

section 33 level 8 item 1

+

section 33 level 8 item 2

+

section 33 level 8 item 3

+
+

section 33 level 9 item 0

+

section 33 level 9 item 1

+

section 33 level 9 item 2

+

section 33 level 9 item 3

+
+

section 33 level 10 item 0

+

section 33 level 10 item 1

+

section 33 level 10 item 2

+

section 33 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 34 level 1 item 0

+

section 34 level 1 item 1

+

section 34 level 1 item 2

+

section 34 level 1 item 3

+
+

section 34 level 2 item 0

+

section 34 level 2 item 1

+

section 34 level 2 item 2

+

section 34 level 2 item 3

+
+

section 34 level 3 item 0

+

section 34 level 3 item 1

+

section 34 level 3 item 2

+

section 34 level 3 item 3

+
+

section 34 level 4 item 0

+

section 34 level 4 item 1

+

section 34 level 4 item 2

+

section 34 level 4 item 3

+
+

section 34 level 5 item 0

+

section 34 level 5 item 1

+

section 34 level 5 item 2

+

section 34 level 5 item 3

+
+

section 34 level 6 item 0

+

section 34 level 6 item 1

+

section 34 level 6 item 2

+

section 34 level 6 item 3

+
+

section 34 level 7 item 0

+

section 34 level 7 item 1

+

section 34 level 7 item 2

+

section 34 level 7 item 3

+
+

section 34 level 8 item 0

+

section 34 level 8 item 1

+

section 34 level 8 item 2

+

section 34 level 8 item 3

+
+

section 34 level 9 item 0

+

section 34 level 9 item 1

+

section 34 level 9 item 2

+

section 34 level 9 item 3

+
+

section 34 level 10 item 0

+

section 34 level 10 item 1

+

section 34 level 10 item 2

+

section 34 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 35 level 1 item 0

+

section 35 level 1 item 1

+

section 35 level 1 item 2

+

section 35 level 1 item 3

+
+

section 35 level 2 item 0

+

section 35 level 2 item 1

+

section 35 level 2 item 2

+

section 35 level 2 item 3

+
+

section 35 level 3 item 0

+

section 35 level 3 item 1

+

section 35 level 3 item 2

+

section 35 level 3 item 3

+
+

section 35 level 4 item 0

+

section 35 level 4 item 1

+

section 35 level 4 item 2

+

section 35 level 4 item 3

+
+

section 35 level 5 item 0

+

section 35 level 5 item 1

+

section 35 level 5 item 2

+

section 35 level 5 item 3

+
+

section 35 level 6 item 0

+

section 35 level 6 item 1

+

section 35 level 6 item 2

+

section 35 level 6 item 3

+
+

section 35 level 7 item 0

+

section 35 level 7 item 1

+

section 35 level 7 item 2

+

section 35 level 7 item 3

+
+

section 35 level 8 item 0

+

section 35 level 8 item 1

+

section 35 level 8 item 2

+

section 35 level 8 item 3

+
+

section 35 level 9 item 0

+

section 35 level 9 item 1

+

section 35 level 9 item 2

+

section 35 level 9 item 3

+
+

section 35 level 10 item 0

+

section 35 level 10 item 1

+

section 35 level 10 item 2

+

section 35 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 36 level 1 item 0

+

section 36 level 1 item 1

+

section 36 level 1 item 2

+

section 36 level 1 item 3

+
+

section 36 level 2 item 0

+

section 36 level 2 item 1

+

section 36 level 2 item 2

+

section 36 level 2 item 3

+
+

section 36 level 3 item 0

+

section 36 level 3 item 1

+

section 36 level 3 item 2

+

section 36 level 3 item 3

+
+

section 36 level 4 item 0

+

section 36 level 4 item 1

+

section 36 level 4 item 2

+

section 36 level 4 item 3

+
+

section 36 level 5 item 0

+

section 36 level 5 item 1

+

section 36 level 5 item 2

+

section 36 level 5 item 3

+
+

section 36 level 6 item 0

+

section 36 level 6 item 1

+

section 36 level 6 item 2

+

section 36 level 6 item 3

+
+

section 36 level 7 item 0

+

section 36 level 7 item 1

+

section 36 level 7 item 2

+

section 36 level 7 item 3

+
+

section 36 level 8 item 0

+

section 36 level 8 item 1

+

section 36 level 8 item 2

+

section 36 level 8 item 3

+
+

section 36 level 9 item 0

+

section 36 level 9 item 1

+

section 36 level 9 item 2

+

section 36 level 9 item 3

+
+

section 36 level 10 item 0

+

section 36 level 10 item 1

+

section 36 level 10 item 2

+

section 36 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 37 level 1 item 0

+

section 37 level 1 item 1

+

section 37 level 1 item 2

+

section 37 level 1 item 3

+
+

section 37 level 2 item 0

+

section 37 level 2 item 1

+

section 37 level 2 item 2

+

section 37 level 2 item 3

+
+

section 37 level 3 item 0

+

section 37 level 3 item 1

+

section 37 level 3 item 2

+

section 37 level 3 item 3

+
+

section 37 level 4 item 0

+

section 37 level 4 item 1

+

section 37 level 4 item 2

+

section 37 level 4 item 3

+
+

section 37 level 5 item 0

+

section 37 level 5 item 1

+

section 37 level 5 item 2

+

section 37 level 5 item 3

+
+

section 37 level 6 item 0

+

section 37 level 6 item 1

+

section 37 level 6 item 2

+

section 37 level 6 item 3

+
+

section 37 level 7 item 0

+

section 37 level 7 item 1

+

section 37 level 7 item 2

+

section 37 level 7 item 3

+
+

section 37 level 8 item 0

+

section 37 level 8 item 1

+

section 37 level 8 item 2

+

section 37 level 8 item 3

+
+

section 37 level 9 item 0

+

section 37 level 9 item 1

+

section 37 level 9 item 2

+

section 37 level 9 item 3

+
+

section 37 level 10 item 0

+

section 37 level 10 item 1

+

section 37 level 10 item 2

+

section 37 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 38 level 1 item 0

+

section 38 level 1 item 1

+

section 38 level 1 item 2

+

section 38 level 1 item 3

+
+

section 38 level 2 item 0

+

section 38 level 2 item 1

+

section 38 level 2 item 2

+

section 38 level 2 item 3

+
+

section 38 level 3 item 0

+

section 38 level 3 item 1

+

section 38 level 3 item 2

+

section 38 level 3 item 3

+
+

section 38 level 4 item 0

+

section 38 level 4 item 1

+

section 38 level 4 item 2

+

section 38 level 4 item 3

+
+

section 38 level 5 item 0

+

section 38 level 5 item 1

+

section 38 level 5 item 2

+

section 38 level 5 item 3

+
+

section 38 level 6 item 0

+

section 38 level 6 item 1

+

section 38 level 6 item 2

+

section 38 level 6 item 3

+
+

section 38 level 7 item 0

+

section 38 level 7 item 1

+

section 38 level 7 item 2

+

section 38 level 7 item 3

+
+

section 38 level 8 item 0

+

section 38 level 8 item 1

+

section 38 level 8 item 2

+

section 38 level 8 item 3

+
+

section 38 level 9 item 0

+

section 38 level 9 item 1

+

section 38 level 9 item 2

+

section 38 level 9 item 3

+
+

section 38 level 10 item 0

+

section 38 level 10 item 1

+

section 38 level 10 item 2

+

section 38 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 39 level 1 item 0

+

section 39 level 1 item 1

+

section 39 level 1 item 2

+

section 39 level 1 item 3

+
+

section 39 level 2 item 0

+

section 39 level 2 item 1

+

section 39 level 2 item 2

+

section 39 level 2 item 3

+
+

section 39 level 3 item 0

+

section 39 level 3 item 1

+

section 39 level 3 item 2

+

section 39 level 3 item 3

+
+

section 39 level 4 item 0

+

section 39 level 4 item 1

+

section 39 level 4 item 2

+

section 39 level 4 item 3

+
+

section 39 level 5 item 0

+

section 39 level 5 item 1

+

section 39 level 5 item 2

+

section 39 level 5 item 3

+
+

section 39 level 6 item 0

+

section 39 level 6 item 1

+

section 39 level 6 item 2

+

section 39 level 6 item 3

+
+

section 39 level 7 item 0

+

section 39 level 7 item 1

+

section 39 level 7 item 2

+

section 39 level 7 item 3

+
+

section 39 level 8 item 0

+

section 39 level 8 item 1

+

section 39 level 8 item 2

+

section 39 level 8 item 3

+
+

section 39 level 9 item 0

+

section 39 level 9 item 1

+

section 39 level 9 item 2

+

section 39 level 9 item 3

+
+

section 39 level 10 item 0

+

section 39 level 10 item 1

+

section 39 level 10 item 2

+

section 39 level 10 item 3

+ changed +
+
+
+
+
+
+
+
+
+
+
+
diff --git a/perf/benchmarks/deep-last-leaf.old.html b/perf/benchmarks/deep-last-leaf.old.html new file mode 100644 index 0000000..d9bea0c --- /dev/null +++ b/perf/benchmarks/deep-last-leaf.old.html @@ -0,0 +1,2522 @@ +
+
+
+

section 0 level 1 item 0

+

section 0 level 1 item 1

+

section 0 level 1 item 2

+

section 0 level 1 item 3

+
+

section 0 level 2 item 0

+

section 0 level 2 item 1

+

section 0 level 2 item 2

+

section 0 level 2 item 3

+
+

section 0 level 3 item 0

+

section 0 level 3 item 1

+

section 0 level 3 item 2

+

section 0 level 3 item 3

+
+

section 0 level 4 item 0

+

section 0 level 4 item 1

+

section 0 level 4 item 2

+

section 0 level 4 item 3

+
+

section 0 level 5 item 0

+

section 0 level 5 item 1

+

section 0 level 5 item 2

+

section 0 level 5 item 3

+
+

section 0 level 6 item 0

+

section 0 level 6 item 1

+

section 0 level 6 item 2

+

section 0 level 6 item 3

+
+

section 0 level 7 item 0

+

section 0 level 7 item 1

+

section 0 level 7 item 2

+

section 0 level 7 item 3

+
+

section 0 level 8 item 0

+

section 0 level 8 item 1

+

section 0 level 8 item 2

+

section 0 level 8 item 3

+
+

section 0 level 9 item 0

+

section 0 level 9 item 1

+

section 0 level 9 item 2

+

section 0 level 9 item 3

+
+

section 0 level 10 item 0

+

section 0 level 10 item 1

+

section 0 level 10 item 2

+

section 0 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 1 level 1 item 0

+

section 1 level 1 item 1

+

section 1 level 1 item 2

+

section 1 level 1 item 3

+
+

section 1 level 2 item 0

+

section 1 level 2 item 1

+

section 1 level 2 item 2

+

section 1 level 2 item 3

+
+

section 1 level 3 item 0

+

section 1 level 3 item 1

+

section 1 level 3 item 2

+

section 1 level 3 item 3

+
+

section 1 level 4 item 0

+

section 1 level 4 item 1

+

section 1 level 4 item 2

+

section 1 level 4 item 3

+
+

section 1 level 5 item 0

+

section 1 level 5 item 1

+

section 1 level 5 item 2

+

section 1 level 5 item 3

+
+

section 1 level 6 item 0

+

section 1 level 6 item 1

+

section 1 level 6 item 2

+

section 1 level 6 item 3

+
+

section 1 level 7 item 0

+

section 1 level 7 item 1

+

section 1 level 7 item 2

+

section 1 level 7 item 3

+
+

section 1 level 8 item 0

+

section 1 level 8 item 1

+

section 1 level 8 item 2

+

section 1 level 8 item 3

+
+

section 1 level 9 item 0

+

section 1 level 9 item 1

+

section 1 level 9 item 2

+

section 1 level 9 item 3

+
+

section 1 level 10 item 0

+

section 1 level 10 item 1

+

section 1 level 10 item 2

+

section 1 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 2 level 1 item 0

+

section 2 level 1 item 1

+

section 2 level 1 item 2

+

section 2 level 1 item 3

+
+

section 2 level 2 item 0

+

section 2 level 2 item 1

+

section 2 level 2 item 2

+

section 2 level 2 item 3

+
+

section 2 level 3 item 0

+

section 2 level 3 item 1

+

section 2 level 3 item 2

+

section 2 level 3 item 3

+
+

section 2 level 4 item 0

+

section 2 level 4 item 1

+

section 2 level 4 item 2

+

section 2 level 4 item 3

+
+

section 2 level 5 item 0

+

section 2 level 5 item 1

+

section 2 level 5 item 2

+

section 2 level 5 item 3

+
+

section 2 level 6 item 0

+

section 2 level 6 item 1

+

section 2 level 6 item 2

+

section 2 level 6 item 3

+
+

section 2 level 7 item 0

+

section 2 level 7 item 1

+

section 2 level 7 item 2

+

section 2 level 7 item 3

+
+

section 2 level 8 item 0

+

section 2 level 8 item 1

+

section 2 level 8 item 2

+

section 2 level 8 item 3

+
+

section 2 level 9 item 0

+

section 2 level 9 item 1

+

section 2 level 9 item 2

+

section 2 level 9 item 3

+
+

section 2 level 10 item 0

+

section 2 level 10 item 1

+

section 2 level 10 item 2

+

section 2 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 3 level 1 item 0

+

section 3 level 1 item 1

+

section 3 level 1 item 2

+

section 3 level 1 item 3

+
+

section 3 level 2 item 0

+

section 3 level 2 item 1

+

section 3 level 2 item 2

+

section 3 level 2 item 3

+
+

section 3 level 3 item 0

+

section 3 level 3 item 1

+

section 3 level 3 item 2

+

section 3 level 3 item 3

+
+

section 3 level 4 item 0

+

section 3 level 4 item 1

+

section 3 level 4 item 2

+

section 3 level 4 item 3

+
+

section 3 level 5 item 0

+

section 3 level 5 item 1

+

section 3 level 5 item 2

+

section 3 level 5 item 3

+
+

section 3 level 6 item 0

+

section 3 level 6 item 1

+

section 3 level 6 item 2

+

section 3 level 6 item 3

+
+

section 3 level 7 item 0

+

section 3 level 7 item 1

+

section 3 level 7 item 2

+

section 3 level 7 item 3

+
+

section 3 level 8 item 0

+

section 3 level 8 item 1

+

section 3 level 8 item 2

+

section 3 level 8 item 3

+
+

section 3 level 9 item 0

+

section 3 level 9 item 1

+

section 3 level 9 item 2

+

section 3 level 9 item 3

+
+

section 3 level 10 item 0

+

section 3 level 10 item 1

+

section 3 level 10 item 2

+

section 3 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 4 level 1 item 0

+

section 4 level 1 item 1

+

section 4 level 1 item 2

+

section 4 level 1 item 3

+
+

section 4 level 2 item 0

+

section 4 level 2 item 1

+

section 4 level 2 item 2

+

section 4 level 2 item 3

+
+

section 4 level 3 item 0

+

section 4 level 3 item 1

+

section 4 level 3 item 2

+

section 4 level 3 item 3

+
+

section 4 level 4 item 0

+

section 4 level 4 item 1

+

section 4 level 4 item 2

+

section 4 level 4 item 3

+
+

section 4 level 5 item 0

+

section 4 level 5 item 1

+

section 4 level 5 item 2

+

section 4 level 5 item 3

+
+

section 4 level 6 item 0

+

section 4 level 6 item 1

+

section 4 level 6 item 2

+

section 4 level 6 item 3

+
+

section 4 level 7 item 0

+

section 4 level 7 item 1

+

section 4 level 7 item 2

+

section 4 level 7 item 3

+
+

section 4 level 8 item 0

+

section 4 level 8 item 1

+

section 4 level 8 item 2

+

section 4 level 8 item 3

+
+

section 4 level 9 item 0

+

section 4 level 9 item 1

+

section 4 level 9 item 2

+

section 4 level 9 item 3

+
+

section 4 level 10 item 0

+

section 4 level 10 item 1

+

section 4 level 10 item 2

+

section 4 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 5 level 1 item 0

+

section 5 level 1 item 1

+

section 5 level 1 item 2

+

section 5 level 1 item 3

+
+

section 5 level 2 item 0

+

section 5 level 2 item 1

+

section 5 level 2 item 2

+

section 5 level 2 item 3

+
+

section 5 level 3 item 0

+

section 5 level 3 item 1

+

section 5 level 3 item 2

+

section 5 level 3 item 3

+
+

section 5 level 4 item 0

+

section 5 level 4 item 1

+

section 5 level 4 item 2

+

section 5 level 4 item 3

+
+

section 5 level 5 item 0

+

section 5 level 5 item 1

+

section 5 level 5 item 2

+

section 5 level 5 item 3

+
+

section 5 level 6 item 0

+

section 5 level 6 item 1

+

section 5 level 6 item 2

+

section 5 level 6 item 3

+
+

section 5 level 7 item 0

+

section 5 level 7 item 1

+

section 5 level 7 item 2

+

section 5 level 7 item 3

+
+

section 5 level 8 item 0

+

section 5 level 8 item 1

+

section 5 level 8 item 2

+

section 5 level 8 item 3

+
+

section 5 level 9 item 0

+

section 5 level 9 item 1

+

section 5 level 9 item 2

+

section 5 level 9 item 3

+
+

section 5 level 10 item 0

+

section 5 level 10 item 1

+

section 5 level 10 item 2

+

section 5 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 6 level 1 item 0

+

section 6 level 1 item 1

+

section 6 level 1 item 2

+

section 6 level 1 item 3

+
+

section 6 level 2 item 0

+

section 6 level 2 item 1

+

section 6 level 2 item 2

+

section 6 level 2 item 3

+
+

section 6 level 3 item 0

+

section 6 level 3 item 1

+

section 6 level 3 item 2

+

section 6 level 3 item 3

+
+

section 6 level 4 item 0

+

section 6 level 4 item 1

+

section 6 level 4 item 2

+

section 6 level 4 item 3

+
+

section 6 level 5 item 0

+

section 6 level 5 item 1

+

section 6 level 5 item 2

+

section 6 level 5 item 3

+
+

section 6 level 6 item 0

+

section 6 level 6 item 1

+

section 6 level 6 item 2

+

section 6 level 6 item 3

+
+

section 6 level 7 item 0

+

section 6 level 7 item 1

+

section 6 level 7 item 2

+

section 6 level 7 item 3

+
+

section 6 level 8 item 0

+

section 6 level 8 item 1

+

section 6 level 8 item 2

+

section 6 level 8 item 3

+
+

section 6 level 9 item 0

+

section 6 level 9 item 1

+

section 6 level 9 item 2

+

section 6 level 9 item 3

+
+

section 6 level 10 item 0

+

section 6 level 10 item 1

+

section 6 level 10 item 2

+

section 6 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 7 level 1 item 0

+

section 7 level 1 item 1

+

section 7 level 1 item 2

+

section 7 level 1 item 3

+
+

section 7 level 2 item 0

+

section 7 level 2 item 1

+

section 7 level 2 item 2

+

section 7 level 2 item 3

+
+

section 7 level 3 item 0

+

section 7 level 3 item 1

+

section 7 level 3 item 2

+

section 7 level 3 item 3

+
+

section 7 level 4 item 0

+

section 7 level 4 item 1

+

section 7 level 4 item 2

+

section 7 level 4 item 3

+
+

section 7 level 5 item 0

+

section 7 level 5 item 1

+

section 7 level 5 item 2

+

section 7 level 5 item 3

+
+

section 7 level 6 item 0

+

section 7 level 6 item 1

+

section 7 level 6 item 2

+

section 7 level 6 item 3

+
+

section 7 level 7 item 0

+

section 7 level 7 item 1

+

section 7 level 7 item 2

+

section 7 level 7 item 3

+
+

section 7 level 8 item 0

+

section 7 level 8 item 1

+

section 7 level 8 item 2

+

section 7 level 8 item 3

+
+

section 7 level 9 item 0

+

section 7 level 9 item 1

+

section 7 level 9 item 2

+

section 7 level 9 item 3

+
+

section 7 level 10 item 0

+

section 7 level 10 item 1

+

section 7 level 10 item 2

+

section 7 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 8 level 1 item 0

+

section 8 level 1 item 1

+

section 8 level 1 item 2

+

section 8 level 1 item 3

+
+

section 8 level 2 item 0

+

section 8 level 2 item 1

+

section 8 level 2 item 2

+

section 8 level 2 item 3

+
+

section 8 level 3 item 0

+

section 8 level 3 item 1

+

section 8 level 3 item 2

+

section 8 level 3 item 3

+
+

section 8 level 4 item 0

+

section 8 level 4 item 1

+

section 8 level 4 item 2

+

section 8 level 4 item 3

+
+

section 8 level 5 item 0

+

section 8 level 5 item 1

+

section 8 level 5 item 2

+

section 8 level 5 item 3

+
+

section 8 level 6 item 0

+

section 8 level 6 item 1

+

section 8 level 6 item 2

+

section 8 level 6 item 3

+
+

section 8 level 7 item 0

+

section 8 level 7 item 1

+

section 8 level 7 item 2

+

section 8 level 7 item 3

+
+

section 8 level 8 item 0

+

section 8 level 8 item 1

+

section 8 level 8 item 2

+

section 8 level 8 item 3

+
+

section 8 level 9 item 0

+

section 8 level 9 item 1

+

section 8 level 9 item 2

+

section 8 level 9 item 3

+
+

section 8 level 10 item 0

+

section 8 level 10 item 1

+

section 8 level 10 item 2

+

section 8 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 9 level 1 item 0

+

section 9 level 1 item 1

+

section 9 level 1 item 2

+

section 9 level 1 item 3

+
+

section 9 level 2 item 0

+

section 9 level 2 item 1

+

section 9 level 2 item 2

+

section 9 level 2 item 3

+
+

section 9 level 3 item 0

+

section 9 level 3 item 1

+

section 9 level 3 item 2

+

section 9 level 3 item 3

+
+

section 9 level 4 item 0

+

section 9 level 4 item 1

+

section 9 level 4 item 2

+

section 9 level 4 item 3

+
+

section 9 level 5 item 0

+

section 9 level 5 item 1

+

section 9 level 5 item 2

+

section 9 level 5 item 3

+
+

section 9 level 6 item 0

+

section 9 level 6 item 1

+

section 9 level 6 item 2

+

section 9 level 6 item 3

+
+

section 9 level 7 item 0

+

section 9 level 7 item 1

+

section 9 level 7 item 2

+

section 9 level 7 item 3

+
+

section 9 level 8 item 0

+

section 9 level 8 item 1

+

section 9 level 8 item 2

+

section 9 level 8 item 3

+
+

section 9 level 9 item 0

+

section 9 level 9 item 1

+

section 9 level 9 item 2

+

section 9 level 9 item 3

+
+

section 9 level 10 item 0

+

section 9 level 10 item 1

+

section 9 level 10 item 2

+

section 9 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 10 level 1 item 0

+

section 10 level 1 item 1

+

section 10 level 1 item 2

+

section 10 level 1 item 3

+
+

section 10 level 2 item 0

+

section 10 level 2 item 1

+

section 10 level 2 item 2

+

section 10 level 2 item 3

+
+

section 10 level 3 item 0

+

section 10 level 3 item 1

+

section 10 level 3 item 2

+

section 10 level 3 item 3

+
+

section 10 level 4 item 0

+

section 10 level 4 item 1

+

section 10 level 4 item 2

+

section 10 level 4 item 3

+
+

section 10 level 5 item 0

+

section 10 level 5 item 1

+

section 10 level 5 item 2

+

section 10 level 5 item 3

+
+

section 10 level 6 item 0

+

section 10 level 6 item 1

+

section 10 level 6 item 2

+

section 10 level 6 item 3

+
+

section 10 level 7 item 0

+

section 10 level 7 item 1

+

section 10 level 7 item 2

+

section 10 level 7 item 3

+
+

section 10 level 8 item 0

+

section 10 level 8 item 1

+

section 10 level 8 item 2

+

section 10 level 8 item 3

+
+

section 10 level 9 item 0

+

section 10 level 9 item 1

+

section 10 level 9 item 2

+

section 10 level 9 item 3

+
+

section 10 level 10 item 0

+

section 10 level 10 item 1

+

section 10 level 10 item 2

+

section 10 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 11 level 1 item 0

+

section 11 level 1 item 1

+

section 11 level 1 item 2

+

section 11 level 1 item 3

+
+

section 11 level 2 item 0

+

section 11 level 2 item 1

+

section 11 level 2 item 2

+

section 11 level 2 item 3

+
+

section 11 level 3 item 0

+

section 11 level 3 item 1

+

section 11 level 3 item 2

+

section 11 level 3 item 3

+
+

section 11 level 4 item 0

+

section 11 level 4 item 1

+

section 11 level 4 item 2

+

section 11 level 4 item 3

+
+

section 11 level 5 item 0

+

section 11 level 5 item 1

+

section 11 level 5 item 2

+

section 11 level 5 item 3

+
+

section 11 level 6 item 0

+

section 11 level 6 item 1

+

section 11 level 6 item 2

+

section 11 level 6 item 3

+
+

section 11 level 7 item 0

+

section 11 level 7 item 1

+

section 11 level 7 item 2

+

section 11 level 7 item 3

+
+

section 11 level 8 item 0

+

section 11 level 8 item 1

+

section 11 level 8 item 2

+

section 11 level 8 item 3

+
+

section 11 level 9 item 0

+

section 11 level 9 item 1

+

section 11 level 9 item 2

+

section 11 level 9 item 3

+
+

section 11 level 10 item 0

+

section 11 level 10 item 1

+

section 11 level 10 item 2

+

section 11 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 12 level 1 item 0

+

section 12 level 1 item 1

+

section 12 level 1 item 2

+

section 12 level 1 item 3

+
+

section 12 level 2 item 0

+

section 12 level 2 item 1

+

section 12 level 2 item 2

+

section 12 level 2 item 3

+
+

section 12 level 3 item 0

+

section 12 level 3 item 1

+

section 12 level 3 item 2

+

section 12 level 3 item 3

+
+

section 12 level 4 item 0

+

section 12 level 4 item 1

+

section 12 level 4 item 2

+

section 12 level 4 item 3

+
+

section 12 level 5 item 0

+

section 12 level 5 item 1

+

section 12 level 5 item 2

+

section 12 level 5 item 3

+
+

section 12 level 6 item 0

+

section 12 level 6 item 1

+

section 12 level 6 item 2

+

section 12 level 6 item 3

+
+

section 12 level 7 item 0

+

section 12 level 7 item 1

+

section 12 level 7 item 2

+

section 12 level 7 item 3

+
+

section 12 level 8 item 0

+

section 12 level 8 item 1

+

section 12 level 8 item 2

+

section 12 level 8 item 3

+
+

section 12 level 9 item 0

+

section 12 level 9 item 1

+

section 12 level 9 item 2

+

section 12 level 9 item 3

+
+

section 12 level 10 item 0

+

section 12 level 10 item 1

+

section 12 level 10 item 2

+

section 12 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 13 level 1 item 0

+

section 13 level 1 item 1

+

section 13 level 1 item 2

+

section 13 level 1 item 3

+
+

section 13 level 2 item 0

+

section 13 level 2 item 1

+

section 13 level 2 item 2

+

section 13 level 2 item 3

+
+

section 13 level 3 item 0

+

section 13 level 3 item 1

+

section 13 level 3 item 2

+

section 13 level 3 item 3

+
+

section 13 level 4 item 0

+

section 13 level 4 item 1

+

section 13 level 4 item 2

+

section 13 level 4 item 3

+
+

section 13 level 5 item 0

+

section 13 level 5 item 1

+

section 13 level 5 item 2

+

section 13 level 5 item 3

+
+

section 13 level 6 item 0

+

section 13 level 6 item 1

+

section 13 level 6 item 2

+

section 13 level 6 item 3

+
+

section 13 level 7 item 0

+

section 13 level 7 item 1

+

section 13 level 7 item 2

+

section 13 level 7 item 3

+
+

section 13 level 8 item 0

+

section 13 level 8 item 1

+

section 13 level 8 item 2

+

section 13 level 8 item 3

+
+

section 13 level 9 item 0

+

section 13 level 9 item 1

+

section 13 level 9 item 2

+

section 13 level 9 item 3

+
+

section 13 level 10 item 0

+

section 13 level 10 item 1

+

section 13 level 10 item 2

+

section 13 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 14 level 1 item 0

+

section 14 level 1 item 1

+

section 14 level 1 item 2

+

section 14 level 1 item 3

+
+

section 14 level 2 item 0

+

section 14 level 2 item 1

+

section 14 level 2 item 2

+

section 14 level 2 item 3

+
+

section 14 level 3 item 0

+

section 14 level 3 item 1

+

section 14 level 3 item 2

+

section 14 level 3 item 3

+
+

section 14 level 4 item 0

+

section 14 level 4 item 1

+

section 14 level 4 item 2

+

section 14 level 4 item 3

+
+

section 14 level 5 item 0

+

section 14 level 5 item 1

+

section 14 level 5 item 2

+

section 14 level 5 item 3

+
+

section 14 level 6 item 0

+

section 14 level 6 item 1

+

section 14 level 6 item 2

+

section 14 level 6 item 3

+
+

section 14 level 7 item 0

+

section 14 level 7 item 1

+

section 14 level 7 item 2

+

section 14 level 7 item 3

+
+

section 14 level 8 item 0

+

section 14 level 8 item 1

+

section 14 level 8 item 2

+

section 14 level 8 item 3

+
+

section 14 level 9 item 0

+

section 14 level 9 item 1

+

section 14 level 9 item 2

+

section 14 level 9 item 3

+
+

section 14 level 10 item 0

+

section 14 level 10 item 1

+

section 14 level 10 item 2

+

section 14 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 15 level 1 item 0

+

section 15 level 1 item 1

+

section 15 level 1 item 2

+

section 15 level 1 item 3

+
+

section 15 level 2 item 0

+

section 15 level 2 item 1

+

section 15 level 2 item 2

+

section 15 level 2 item 3

+
+

section 15 level 3 item 0

+

section 15 level 3 item 1

+

section 15 level 3 item 2

+

section 15 level 3 item 3

+
+

section 15 level 4 item 0

+

section 15 level 4 item 1

+

section 15 level 4 item 2

+

section 15 level 4 item 3

+
+

section 15 level 5 item 0

+

section 15 level 5 item 1

+

section 15 level 5 item 2

+

section 15 level 5 item 3

+
+

section 15 level 6 item 0

+

section 15 level 6 item 1

+

section 15 level 6 item 2

+

section 15 level 6 item 3

+
+

section 15 level 7 item 0

+

section 15 level 7 item 1

+

section 15 level 7 item 2

+

section 15 level 7 item 3

+
+

section 15 level 8 item 0

+

section 15 level 8 item 1

+

section 15 level 8 item 2

+

section 15 level 8 item 3

+
+

section 15 level 9 item 0

+

section 15 level 9 item 1

+

section 15 level 9 item 2

+

section 15 level 9 item 3

+
+

section 15 level 10 item 0

+

section 15 level 10 item 1

+

section 15 level 10 item 2

+

section 15 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 16 level 1 item 0

+

section 16 level 1 item 1

+

section 16 level 1 item 2

+

section 16 level 1 item 3

+
+

section 16 level 2 item 0

+

section 16 level 2 item 1

+

section 16 level 2 item 2

+

section 16 level 2 item 3

+
+

section 16 level 3 item 0

+

section 16 level 3 item 1

+

section 16 level 3 item 2

+

section 16 level 3 item 3

+
+

section 16 level 4 item 0

+

section 16 level 4 item 1

+

section 16 level 4 item 2

+

section 16 level 4 item 3

+
+

section 16 level 5 item 0

+

section 16 level 5 item 1

+

section 16 level 5 item 2

+

section 16 level 5 item 3

+
+

section 16 level 6 item 0

+

section 16 level 6 item 1

+

section 16 level 6 item 2

+

section 16 level 6 item 3

+
+

section 16 level 7 item 0

+

section 16 level 7 item 1

+

section 16 level 7 item 2

+

section 16 level 7 item 3

+
+

section 16 level 8 item 0

+

section 16 level 8 item 1

+

section 16 level 8 item 2

+

section 16 level 8 item 3

+
+

section 16 level 9 item 0

+

section 16 level 9 item 1

+

section 16 level 9 item 2

+

section 16 level 9 item 3

+
+

section 16 level 10 item 0

+

section 16 level 10 item 1

+

section 16 level 10 item 2

+

section 16 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 17 level 1 item 0

+

section 17 level 1 item 1

+

section 17 level 1 item 2

+

section 17 level 1 item 3

+
+

section 17 level 2 item 0

+

section 17 level 2 item 1

+

section 17 level 2 item 2

+

section 17 level 2 item 3

+
+

section 17 level 3 item 0

+

section 17 level 3 item 1

+

section 17 level 3 item 2

+

section 17 level 3 item 3

+
+

section 17 level 4 item 0

+

section 17 level 4 item 1

+

section 17 level 4 item 2

+

section 17 level 4 item 3

+
+

section 17 level 5 item 0

+

section 17 level 5 item 1

+

section 17 level 5 item 2

+

section 17 level 5 item 3

+
+

section 17 level 6 item 0

+

section 17 level 6 item 1

+

section 17 level 6 item 2

+

section 17 level 6 item 3

+
+

section 17 level 7 item 0

+

section 17 level 7 item 1

+

section 17 level 7 item 2

+

section 17 level 7 item 3

+
+

section 17 level 8 item 0

+

section 17 level 8 item 1

+

section 17 level 8 item 2

+

section 17 level 8 item 3

+
+

section 17 level 9 item 0

+

section 17 level 9 item 1

+

section 17 level 9 item 2

+

section 17 level 9 item 3

+
+

section 17 level 10 item 0

+

section 17 level 10 item 1

+

section 17 level 10 item 2

+

section 17 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 18 level 1 item 0

+

section 18 level 1 item 1

+

section 18 level 1 item 2

+

section 18 level 1 item 3

+
+

section 18 level 2 item 0

+

section 18 level 2 item 1

+

section 18 level 2 item 2

+

section 18 level 2 item 3

+
+

section 18 level 3 item 0

+

section 18 level 3 item 1

+

section 18 level 3 item 2

+

section 18 level 3 item 3

+
+

section 18 level 4 item 0

+

section 18 level 4 item 1

+

section 18 level 4 item 2

+

section 18 level 4 item 3

+
+

section 18 level 5 item 0

+

section 18 level 5 item 1

+

section 18 level 5 item 2

+

section 18 level 5 item 3

+
+

section 18 level 6 item 0

+

section 18 level 6 item 1

+

section 18 level 6 item 2

+

section 18 level 6 item 3

+
+

section 18 level 7 item 0

+

section 18 level 7 item 1

+

section 18 level 7 item 2

+

section 18 level 7 item 3

+
+

section 18 level 8 item 0

+

section 18 level 8 item 1

+

section 18 level 8 item 2

+

section 18 level 8 item 3

+
+

section 18 level 9 item 0

+

section 18 level 9 item 1

+

section 18 level 9 item 2

+

section 18 level 9 item 3

+
+

section 18 level 10 item 0

+

section 18 level 10 item 1

+

section 18 level 10 item 2

+

section 18 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 19 level 1 item 0

+

section 19 level 1 item 1

+

section 19 level 1 item 2

+

section 19 level 1 item 3

+
+

section 19 level 2 item 0

+

section 19 level 2 item 1

+

section 19 level 2 item 2

+

section 19 level 2 item 3

+
+

section 19 level 3 item 0

+

section 19 level 3 item 1

+

section 19 level 3 item 2

+

section 19 level 3 item 3

+
+

section 19 level 4 item 0

+

section 19 level 4 item 1

+

section 19 level 4 item 2

+

section 19 level 4 item 3

+
+

section 19 level 5 item 0

+

section 19 level 5 item 1

+

section 19 level 5 item 2

+

section 19 level 5 item 3

+
+

section 19 level 6 item 0

+

section 19 level 6 item 1

+

section 19 level 6 item 2

+

section 19 level 6 item 3

+
+

section 19 level 7 item 0

+

section 19 level 7 item 1

+

section 19 level 7 item 2

+

section 19 level 7 item 3

+
+

section 19 level 8 item 0

+

section 19 level 8 item 1

+

section 19 level 8 item 2

+

section 19 level 8 item 3

+
+

section 19 level 9 item 0

+

section 19 level 9 item 1

+

section 19 level 9 item 2

+

section 19 level 9 item 3

+
+

section 19 level 10 item 0

+

section 19 level 10 item 1

+

section 19 level 10 item 2

+

section 19 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 20 level 1 item 0

+

section 20 level 1 item 1

+

section 20 level 1 item 2

+

section 20 level 1 item 3

+
+

section 20 level 2 item 0

+

section 20 level 2 item 1

+

section 20 level 2 item 2

+

section 20 level 2 item 3

+
+

section 20 level 3 item 0

+

section 20 level 3 item 1

+

section 20 level 3 item 2

+

section 20 level 3 item 3

+
+

section 20 level 4 item 0

+

section 20 level 4 item 1

+

section 20 level 4 item 2

+

section 20 level 4 item 3

+
+

section 20 level 5 item 0

+

section 20 level 5 item 1

+

section 20 level 5 item 2

+

section 20 level 5 item 3

+
+

section 20 level 6 item 0

+

section 20 level 6 item 1

+

section 20 level 6 item 2

+

section 20 level 6 item 3

+
+

section 20 level 7 item 0

+

section 20 level 7 item 1

+

section 20 level 7 item 2

+

section 20 level 7 item 3

+
+

section 20 level 8 item 0

+

section 20 level 8 item 1

+

section 20 level 8 item 2

+

section 20 level 8 item 3

+
+

section 20 level 9 item 0

+

section 20 level 9 item 1

+

section 20 level 9 item 2

+

section 20 level 9 item 3

+
+

section 20 level 10 item 0

+

section 20 level 10 item 1

+

section 20 level 10 item 2

+

section 20 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 21 level 1 item 0

+

section 21 level 1 item 1

+

section 21 level 1 item 2

+

section 21 level 1 item 3

+
+

section 21 level 2 item 0

+

section 21 level 2 item 1

+

section 21 level 2 item 2

+

section 21 level 2 item 3

+
+

section 21 level 3 item 0

+

section 21 level 3 item 1

+

section 21 level 3 item 2

+

section 21 level 3 item 3

+
+

section 21 level 4 item 0

+

section 21 level 4 item 1

+

section 21 level 4 item 2

+

section 21 level 4 item 3

+
+

section 21 level 5 item 0

+

section 21 level 5 item 1

+

section 21 level 5 item 2

+

section 21 level 5 item 3

+
+

section 21 level 6 item 0

+

section 21 level 6 item 1

+

section 21 level 6 item 2

+

section 21 level 6 item 3

+
+

section 21 level 7 item 0

+

section 21 level 7 item 1

+

section 21 level 7 item 2

+

section 21 level 7 item 3

+
+

section 21 level 8 item 0

+

section 21 level 8 item 1

+

section 21 level 8 item 2

+

section 21 level 8 item 3

+
+

section 21 level 9 item 0

+

section 21 level 9 item 1

+

section 21 level 9 item 2

+

section 21 level 9 item 3

+
+

section 21 level 10 item 0

+

section 21 level 10 item 1

+

section 21 level 10 item 2

+

section 21 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 22 level 1 item 0

+

section 22 level 1 item 1

+

section 22 level 1 item 2

+

section 22 level 1 item 3

+
+

section 22 level 2 item 0

+

section 22 level 2 item 1

+

section 22 level 2 item 2

+

section 22 level 2 item 3

+
+

section 22 level 3 item 0

+

section 22 level 3 item 1

+

section 22 level 3 item 2

+

section 22 level 3 item 3

+
+

section 22 level 4 item 0

+

section 22 level 4 item 1

+

section 22 level 4 item 2

+

section 22 level 4 item 3

+
+

section 22 level 5 item 0

+

section 22 level 5 item 1

+

section 22 level 5 item 2

+

section 22 level 5 item 3

+
+

section 22 level 6 item 0

+

section 22 level 6 item 1

+

section 22 level 6 item 2

+

section 22 level 6 item 3

+
+

section 22 level 7 item 0

+

section 22 level 7 item 1

+

section 22 level 7 item 2

+

section 22 level 7 item 3

+
+

section 22 level 8 item 0

+

section 22 level 8 item 1

+

section 22 level 8 item 2

+

section 22 level 8 item 3

+
+

section 22 level 9 item 0

+

section 22 level 9 item 1

+

section 22 level 9 item 2

+

section 22 level 9 item 3

+
+

section 22 level 10 item 0

+

section 22 level 10 item 1

+

section 22 level 10 item 2

+

section 22 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 23 level 1 item 0

+

section 23 level 1 item 1

+

section 23 level 1 item 2

+

section 23 level 1 item 3

+
+

section 23 level 2 item 0

+

section 23 level 2 item 1

+

section 23 level 2 item 2

+

section 23 level 2 item 3

+
+

section 23 level 3 item 0

+

section 23 level 3 item 1

+

section 23 level 3 item 2

+

section 23 level 3 item 3

+
+

section 23 level 4 item 0

+

section 23 level 4 item 1

+

section 23 level 4 item 2

+

section 23 level 4 item 3

+
+

section 23 level 5 item 0

+

section 23 level 5 item 1

+

section 23 level 5 item 2

+

section 23 level 5 item 3

+
+

section 23 level 6 item 0

+

section 23 level 6 item 1

+

section 23 level 6 item 2

+

section 23 level 6 item 3

+
+

section 23 level 7 item 0

+

section 23 level 7 item 1

+

section 23 level 7 item 2

+

section 23 level 7 item 3

+
+

section 23 level 8 item 0

+

section 23 level 8 item 1

+

section 23 level 8 item 2

+

section 23 level 8 item 3

+
+

section 23 level 9 item 0

+

section 23 level 9 item 1

+

section 23 level 9 item 2

+

section 23 level 9 item 3

+
+

section 23 level 10 item 0

+

section 23 level 10 item 1

+

section 23 level 10 item 2

+

section 23 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 24 level 1 item 0

+

section 24 level 1 item 1

+

section 24 level 1 item 2

+

section 24 level 1 item 3

+
+

section 24 level 2 item 0

+

section 24 level 2 item 1

+

section 24 level 2 item 2

+

section 24 level 2 item 3

+
+

section 24 level 3 item 0

+

section 24 level 3 item 1

+

section 24 level 3 item 2

+

section 24 level 3 item 3

+
+

section 24 level 4 item 0

+

section 24 level 4 item 1

+

section 24 level 4 item 2

+

section 24 level 4 item 3

+
+

section 24 level 5 item 0

+

section 24 level 5 item 1

+

section 24 level 5 item 2

+

section 24 level 5 item 3

+
+

section 24 level 6 item 0

+

section 24 level 6 item 1

+

section 24 level 6 item 2

+

section 24 level 6 item 3

+
+

section 24 level 7 item 0

+

section 24 level 7 item 1

+

section 24 level 7 item 2

+

section 24 level 7 item 3

+
+

section 24 level 8 item 0

+

section 24 level 8 item 1

+

section 24 level 8 item 2

+

section 24 level 8 item 3

+
+

section 24 level 9 item 0

+

section 24 level 9 item 1

+

section 24 level 9 item 2

+

section 24 level 9 item 3

+
+

section 24 level 10 item 0

+

section 24 level 10 item 1

+

section 24 level 10 item 2

+

section 24 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 25 level 1 item 0

+

section 25 level 1 item 1

+

section 25 level 1 item 2

+

section 25 level 1 item 3

+
+

section 25 level 2 item 0

+

section 25 level 2 item 1

+

section 25 level 2 item 2

+

section 25 level 2 item 3

+
+

section 25 level 3 item 0

+

section 25 level 3 item 1

+

section 25 level 3 item 2

+

section 25 level 3 item 3

+
+

section 25 level 4 item 0

+

section 25 level 4 item 1

+

section 25 level 4 item 2

+

section 25 level 4 item 3

+
+

section 25 level 5 item 0

+

section 25 level 5 item 1

+

section 25 level 5 item 2

+

section 25 level 5 item 3

+
+

section 25 level 6 item 0

+

section 25 level 6 item 1

+

section 25 level 6 item 2

+

section 25 level 6 item 3

+
+

section 25 level 7 item 0

+

section 25 level 7 item 1

+

section 25 level 7 item 2

+

section 25 level 7 item 3

+
+

section 25 level 8 item 0

+

section 25 level 8 item 1

+

section 25 level 8 item 2

+

section 25 level 8 item 3

+
+

section 25 level 9 item 0

+

section 25 level 9 item 1

+

section 25 level 9 item 2

+

section 25 level 9 item 3

+
+

section 25 level 10 item 0

+

section 25 level 10 item 1

+

section 25 level 10 item 2

+

section 25 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 26 level 1 item 0

+

section 26 level 1 item 1

+

section 26 level 1 item 2

+

section 26 level 1 item 3

+
+

section 26 level 2 item 0

+

section 26 level 2 item 1

+

section 26 level 2 item 2

+

section 26 level 2 item 3

+
+

section 26 level 3 item 0

+

section 26 level 3 item 1

+

section 26 level 3 item 2

+

section 26 level 3 item 3

+
+

section 26 level 4 item 0

+

section 26 level 4 item 1

+

section 26 level 4 item 2

+

section 26 level 4 item 3

+
+

section 26 level 5 item 0

+

section 26 level 5 item 1

+

section 26 level 5 item 2

+

section 26 level 5 item 3

+
+

section 26 level 6 item 0

+

section 26 level 6 item 1

+

section 26 level 6 item 2

+

section 26 level 6 item 3

+
+

section 26 level 7 item 0

+

section 26 level 7 item 1

+

section 26 level 7 item 2

+

section 26 level 7 item 3

+
+

section 26 level 8 item 0

+

section 26 level 8 item 1

+

section 26 level 8 item 2

+

section 26 level 8 item 3

+
+

section 26 level 9 item 0

+

section 26 level 9 item 1

+

section 26 level 9 item 2

+

section 26 level 9 item 3

+
+

section 26 level 10 item 0

+

section 26 level 10 item 1

+

section 26 level 10 item 2

+

section 26 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 27 level 1 item 0

+

section 27 level 1 item 1

+

section 27 level 1 item 2

+

section 27 level 1 item 3

+
+

section 27 level 2 item 0

+

section 27 level 2 item 1

+

section 27 level 2 item 2

+

section 27 level 2 item 3

+
+

section 27 level 3 item 0

+

section 27 level 3 item 1

+

section 27 level 3 item 2

+

section 27 level 3 item 3

+
+

section 27 level 4 item 0

+

section 27 level 4 item 1

+

section 27 level 4 item 2

+

section 27 level 4 item 3

+
+

section 27 level 5 item 0

+

section 27 level 5 item 1

+

section 27 level 5 item 2

+

section 27 level 5 item 3

+
+

section 27 level 6 item 0

+

section 27 level 6 item 1

+

section 27 level 6 item 2

+

section 27 level 6 item 3

+
+

section 27 level 7 item 0

+

section 27 level 7 item 1

+

section 27 level 7 item 2

+

section 27 level 7 item 3

+
+

section 27 level 8 item 0

+

section 27 level 8 item 1

+

section 27 level 8 item 2

+

section 27 level 8 item 3

+
+

section 27 level 9 item 0

+

section 27 level 9 item 1

+

section 27 level 9 item 2

+

section 27 level 9 item 3

+
+

section 27 level 10 item 0

+

section 27 level 10 item 1

+

section 27 level 10 item 2

+

section 27 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 28 level 1 item 0

+

section 28 level 1 item 1

+

section 28 level 1 item 2

+

section 28 level 1 item 3

+
+

section 28 level 2 item 0

+

section 28 level 2 item 1

+

section 28 level 2 item 2

+

section 28 level 2 item 3

+
+

section 28 level 3 item 0

+

section 28 level 3 item 1

+

section 28 level 3 item 2

+

section 28 level 3 item 3

+
+

section 28 level 4 item 0

+

section 28 level 4 item 1

+

section 28 level 4 item 2

+

section 28 level 4 item 3

+
+

section 28 level 5 item 0

+

section 28 level 5 item 1

+

section 28 level 5 item 2

+

section 28 level 5 item 3

+
+

section 28 level 6 item 0

+

section 28 level 6 item 1

+

section 28 level 6 item 2

+

section 28 level 6 item 3

+
+

section 28 level 7 item 0

+

section 28 level 7 item 1

+

section 28 level 7 item 2

+

section 28 level 7 item 3

+
+

section 28 level 8 item 0

+

section 28 level 8 item 1

+

section 28 level 8 item 2

+

section 28 level 8 item 3

+
+

section 28 level 9 item 0

+

section 28 level 9 item 1

+

section 28 level 9 item 2

+

section 28 level 9 item 3

+
+

section 28 level 10 item 0

+

section 28 level 10 item 1

+

section 28 level 10 item 2

+

section 28 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 29 level 1 item 0

+

section 29 level 1 item 1

+

section 29 level 1 item 2

+

section 29 level 1 item 3

+
+

section 29 level 2 item 0

+

section 29 level 2 item 1

+

section 29 level 2 item 2

+

section 29 level 2 item 3

+
+

section 29 level 3 item 0

+

section 29 level 3 item 1

+

section 29 level 3 item 2

+

section 29 level 3 item 3

+
+

section 29 level 4 item 0

+

section 29 level 4 item 1

+

section 29 level 4 item 2

+

section 29 level 4 item 3

+
+

section 29 level 5 item 0

+

section 29 level 5 item 1

+

section 29 level 5 item 2

+

section 29 level 5 item 3

+
+

section 29 level 6 item 0

+

section 29 level 6 item 1

+

section 29 level 6 item 2

+

section 29 level 6 item 3

+
+

section 29 level 7 item 0

+

section 29 level 7 item 1

+

section 29 level 7 item 2

+

section 29 level 7 item 3

+
+

section 29 level 8 item 0

+

section 29 level 8 item 1

+

section 29 level 8 item 2

+

section 29 level 8 item 3

+
+

section 29 level 9 item 0

+

section 29 level 9 item 1

+

section 29 level 9 item 2

+

section 29 level 9 item 3

+
+

section 29 level 10 item 0

+

section 29 level 10 item 1

+

section 29 level 10 item 2

+

section 29 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 30 level 1 item 0

+

section 30 level 1 item 1

+

section 30 level 1 item 2

+

section 30 level 1 item 3

+
+

section 30 level 2 item 0

+

section 30 level 2 item 1

+

section 30 level 2 item 2

+

section 30 level 2 item 3

+
+

section 30 level 3 item 0

+

section 30 level 3 item 1

+

section 30 level 3 item 2

+

section 30 level 3 item 3

+
+

section 30 level 4 item 0

+

section 30 level 4 item 1

+

section 30 level 4 item 2

+

section 30 level 4 item 3

+
+

section 30 level 5 item 0

+

section 30 level 5 item 1

+

section 30 level 5 item 2

+

section 30 level 5 item 3

+
+

section 30 level 6 item 0

+

section 30 level 6 item 1

+

section 30 level 6 item 2

+

section 30 level 6 item 3

+
+

section 30 level 7 item 0

+

section 30 level 7 item 1

+

section 30 level 7 item 2

+

section 30 level 7 item 3

+
+

section 30 level 8 item 0

+

section 30 level 8 item 1

+

section 30 level 8 item 2

+

section 30 level 8 item 3

+
+

section 30 level 9 item 0

+

section 30 level 9 item 1

+

section 30 level 9 item 2

+

section 30 level 9 item 3

+
+

section 30 level 10 item 0

+

section 30 level 10 item 1

+

section 30 level 10 item 2

+

section 30 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 31 level 1 item 0

+

section 31 level 1 item 1

+

section 31 level 1 item 2

+

section 31 level 1 item 3

+
+

section 31 level 2 item 0

+

section 31 level 2 item 1

+

section 31 level 2 item 2

+

section 31 level 2 item 3

+
+

section 31 level 3 item 0

+

section 31 level 3 item 1

+

section 31 level 3 item 2

+

section 31 level 3 item 3

+
+

section 31 level 4 item 0

+

section 31 level 4 item 1

+

section 31 level 4 item 2

+

section 31 level 4 item 3

+
+

section 31 level 5 item 0

+

section 31 level 5 item 1

+

section 31 level 5 item 2

+

section 31 level 5 item 3

+
+

section 31 level 6 item 0

+

section 31 level 6 item 1

+

section 31 level 6 item 2

+

section 31 level 6 item 3

+
+

section 31 level 7 item 0

+

section 31 level 7 item 1

+

section 31 level 7 item 2

+

section 31 level 7 item 3

+
+

section 31 level 8 item 0

+

section 31 level 8 item 1

+

section 31 level 8 item 2

+

section 31 level 8 item 3

+
+

section 31 level 9 item 0

+

section 31 level 9 item 1

+

section 31 level 9 item 2

+

section 31 level 9 item 3

+
+

section 31 level 10 item 0

+

section 31 level 10 item 1

+

section 31 level 10 item 2

+

section 31 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 32 level 1 item 0

+

section 32 level 1 item 1

+

section 32 level 1 item 2

+

section 32 level 1 item 3

+
+

section 32 level 2 item 0

+

section 32 level 2 item 1

+

section 32 level 2 item 2

+

section 32 level 2 item 3

+
+

section 32 level 3 item 0

+

section 32 level 3 item 1

+

section 32 level 3 item 2

+

section 32 level 3 item 3

+
+

section 32 level 4 item 0

+

section 32 level 4 item 1

+

section 32 level 4 item 2

+

section 32 level 4 item 3

+
+

section 32 level 5 item 0

+

section 32 level 5 item 1

+

section 32 level 5 item 2

+

section 32 level 5 item 3

+
+

section 32 level 6 item 0

+

section 32 level 6 item 1

+

section 32 level 6 item 2

+

section 32 level 6 item 3

+
+

section 32 level 7 item 0

+

section 32 level 7 item 1

+

section 32 level 7 item 2

+

section 32 level 7 item 3

+
+

section 32 level 8 item 0

+

section 32 level 8 item 1

+

section 32 level 8 item 2

+

section 32 level 8 item 3

+
+

section 32 level 9 item 0

+

section 32 level 9 item 1

+

section 32 level 9 item 2

+

section 32 level 9 item 3

+
+

section 32 level 10 item 0

+

section 32 level 10 item 1

+

section 32 level 10 item 2

+

section 32 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 33 level 1 item 0

+

section 33 level 1 item 1

+

section 33 level 1 item 2

+

section 33 level 1 item 3

+
+

section 33 level 2 item 0

+

section 33 level 2 item 1

+

section 33 level 2 item 2

+

section 33 level 2 item 3

+
+

section 33 level 3 item 0

+

section 33 level 3 item 1

+

section 33 level 3 item 2

+

section 33 level 3 item 3

+
+

section 33 level 4 item 0

+

section 33 level 4 item 1

+

section 33 level 4 item 2

+

section 33 level 4 item 3

+
+

section 33 level 5 item 0

+

section 33 level 5 item 1

+

section 33 level 5 item 2

+

section 33 level 5 item 3

+
+

section 33 level 6 item 0

+

section 33 level 6 item 1

+

section 33 level 6 item 2

+

section 33 level 6 item 3

+
+

section 33 level 7 item 0

+

section 33 level 7 item 1

+

section 33 level 7 item 2

+

section 33 level 7 item 3

+
+

section 33 level 8 item 0

+

section 33 level 8 item 1

+

section 33 level 8 item 2

+

section 33 level 8 item 3

+
+

section 33 level 9 item 0

+

section 33 level 9 item 1

+

section 33 level 9 item 2

+

section 33 level 9 item 3

+
+

section 33 level 10 item 0

+

section 33 level 10 item 1

+

section 33 level 10 item 2

+

section 33 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 34 level 1 item 0

+

section 34 level 1 item 1

+

section 34 level 1 item 2

+

section 34 level 1 item 3

+
+

section 34 level 2 item 0

+

section 34 level 2 item 1

+

section 34 level 2 item 2

+

section 34 level 2 item 3

+
+

section 34 level 3 item 0

+

section 34 level 3 item 1

+

section 34 level 3 item 2

+

section 34 level 3 item 3

+
+

section 34 level 4 item 0

+

section 34 level 4 item 1

+

section 34 level 4 item 2

+

section 34 level 4 item 3

+
+

section 34 level 5 item 0

+

section 34 level 5 item 1

+

section 34 level 5 item 2

+

section 34 level 5 item 3

+
+

section 34 level 6 item 0

+

section 34 level 6 item 1

+

section 34 level 6 item 2

+

section 34 level 6 item 3

+
+

section 34 level 7 item 0

+

section 34 level 7 item 1

+

section 34 level 7 item 2

+

section 34 level 7 item 3

+
+

section 34 level 8 item 0

+

section 34 level 8 item 1

+

section 34 level 8 item 2

+

section 34 level 8 item 3

+
+

section 34 level 9 item 0

+

section 34 level 9 item 1

+

section 34 level 9 item 2

+

section 34 level 9 item 3

+
+

section 34 level 10 item 0

+

section 34 level 10 item 1

+

section 34 level 10 item 2

+

section 34 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 35 level 1 item 0

+

section 35 level 1 item 1

+

section 35 level 1 item 2

+

section 35 level 1 item 3

+
+

section 35 level 2 item 0

+

section 35 level 2 item 1

+

section 35 level 2 item 2

+

section 35 level 2 item 3

+
+

section 35 level 3 item 0

+

section 35 level 3 item 1

+

section 35 level 3 item 2

+

section 35 level 3 item 3

+
+

section 35 level 4 item 0

+

section 35 level 4 item 1

+

section 35 level 4 item 2

+

section 35 level 4 item 3

+
+

section 35 level 5 item 0

+

section 35 level 5 item 1

+

section 35 level 5 item 2

+

section 35 level 5 item 3

+
+

section 35 level 6 item 0

+

section 35 level 6 item 1

+

section 35 level 6 item 2

+

section 35 level 6 item 3

+
+

section 35 level 7 item 0

+

section 35 level 7 item 1

+

section 35 level 7 item 2

+

section 35 level 7 item 3

+
+

section 35 level 8 item 0

+

section 35 level 8 item 1

+

section 35 level 8 item 2

+

section 35 level 8 item 3

+
+

section 35 level 9 item 0

+

section 35 level 9 item 1

+

section 35 level 9 item 2

+

section 35 level 9 item 3

+
+

section 35 level 10 item 0

+

section 35 level 10 item 1

+

section 35 level 10 item 2

+

section 35 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 36 level 1 item 0

+

section 36 level 1 item 1

+

section 36 level 1 item 2

+

section 36 level 1 item 3

+
+

section 36 level 2 item 0

+

section 36 level 2 item 1

+

section 36 level 2 item 2

+

section 36 level 2 item 3

+
+

section 36 level 3 item 0

+

section 36 level 3 item 1

+

section 36 level 3 item 2

+

section 36 level 3 item 3

+
+

section 36 level 4 item 0

+

section 36 level 4 item 1

+

section 36 level 4 item 2

+

section 36 level 4 item 3

+
+

section 36 level 5 item 0

+

section 36 level 5 item 1

+

section 36 level 5 item 2

+

section 36 level 5 item 3

+
+

section 36 level 6 item 0

+

section 36 level 6 item 1

+

section 36 level 6 item 2

+

section 36 level 6 item 3

+
+

section 36 level 7 item 0

+

section 36 level 7 item 1

+

section 36 level 7 item 2

+

section 36 level 7 item 3

+
+

section 36 level 8 item 0

+

section 36 level 8 item 1

+

section 36 level 8 item 2

+

section 36 level 8 item 3

+
+

section 36 level 9 item 0

+

section 36 level 9 item 1

+

section 36 level 9 item 2

+

section 36 level 9 item 3

+
+

section 36 level 10 item 0

+

section 36 level 10 item 1

+

section 36 level 10 item 2

+

section 36 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 37 level 1 item 0

+

section 37 level 1 item 1

+

section 37 level 1 item 2

+

section 37 level 1 item 3

+
+

section 37 level 2 item 0

+

section 37 level 2 item 1

+

section 37 level 2 item 2

+

section 37 level 2 item 3

+
+

section 37 level 3 item 0

+

section 37 level 3 item 1

+

section 37 level 3 item 2

+

section 37 level 3 item 3

+
+

section 37 level 4 item 0

+

section 37 level 4 item 1

+

section 37 level 4 item 2

+

section 37 level 4 item 3

+
+

section 37 level 5 item 0

+

section 37 level 5 item 1

+

section 37 level 5 item 2

+

section 37 level 5 item 3

+
+

section 37 level 6 item 0

+

section 37 level 6 item 1

+

section 37 level 6 item 2

+

section 37 level 6 item 3

+
+

section 37 level 7 item 0

+

section 37 level 7 item 1

+

section 37 level 7 item 2

+

section 37 level 7 item 3

+
+

section 37 level 8 item 0

+

section 37 level 8 item 1

+

section 37 level 8 item 2

+

section 37 level 8 item 3

+
+

section 37 level 9 item 0

+

section 37 level 9 item 1

+

section 37 level 9 item 2

+

section 37 level 9 item 3

+
+

section 37 level 10 item 0

+

section 37 level 10 item 1

+

section 37 level 10 item 2

+

section 37 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 38 level 1 item 0

+

section 38 level 1 item 1

+

section 38 level 1 item 2

+

section 38 level 1 item 3

+
+

section 38 level 2 item 0

+

section 38 level 2 item 1

+

section 38 level 2 item 2

+

section 38 level 2 item 3

+
+

section 38 level 3 item 0

+

section 38 level 3 item 1

+

section 38 level 3 item 2

+

section 38 level 3 item 3

+
+

section 38 level 4 item 0

+

section 38 level 4 item 1

+

section 38 level 4 item 2

+

section 38 level 4 item 3

+
+

section 38 level 5 item 0

+

section 38 level 5 item 1

+

section 38 level 5 item 2

+

section 38 level 5 item 3

+
+

section 38 level 6 item 0

+

section 38 level 6 item 1

+

section 38 level 6 item 2

+

section 38 level 6 item 3

+
+

section 38 level 7 item 0

+

section 38 level 7 item 1

+

section 38 level 7 item 2

+

section 38 level 7 item 3

+
+

section 38 level 8 item 0

+

section 38 level 8 item 1

+

section 38 level 8 item 2

+

section 38 level 8 item 3

+
+

section 38 level 9 item 0

+

section 38 level 9 item 1

+

section 38 level 9 item 2

+

section 38 level 9 item 3

+
+

section 38 level 10 item 0

+

section 38 level 10 item 1

+

section 38 level 10 item 2

+

section 38 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
+
+

section 39 level 1 item 0

+

section 39 level 1 item 1

+

section 39 level 1 item 2

+

section 39 level 1 item 3

+
+

section 39 level 2 item 0

+

section 39 level 2 item 1

+

section 39 level 2 item 2

+

section 39 level 2 item 3

+
+

section 39 level 3 item 0

+

section 39 level 3 item 1

+

section 39 level 3 item 2

+

section 39 level 3 item 3

+
+

section 39 level 4 item 0

+

section 39 level 4 item 1

+

section 39 level 4 item 2

+

section 39 level 4 item 3

+
+

section 39 level 5 item 0

+

section 39 level 5 item 1

+

section 39 level 5 item 2

+

section 39 level 5 item 3

+
+

section 39 level 6 item 0

+

section 39 level 6 item 1

+

section 39 level 6 item 2

+

section 39 level 6 item 3

+
+

section 39 level 7 item 0

+

section 39 level 7 item 1

+

section 39 level 7 item 2

+

section 39 level 7 item 3

+
+

section 39 level 8 item 0

+

section 39 level 8 item 1

+

section 39 level 8 item 2

+

section 39 level 8 item 3

+
+

section 39 level 9 item 0

+

section 39 level 9 item 1

+

section 39 level 9 item 2

+

section 39 level 9 item 3

+
+

section 39 level 10 item 0

+

section 39 level 10 item 1

+

section 39 level 10 item 2

+

section 39 level 10 item 3

+ original +
+
+
+
+
+
+
+
+
+
+
+
diff --git a/perf/generate-deep-last-leaf.js b/perf/generate-deep-last-leaf.js new file mode 100644 index 0000000..668be8f --- /dev/null +++ b/perf/generate-deep-last-leaf.js @@ -0,0 +1,34 @@ +// Generates the worst case for skipUnchanged: every section differs, but only +// in its last, deepest text node, so every ancestor's isEqualNode walks its +// whole subtree before failing. Deterministic; re-run to regenerate. +const fs = require("fs"); +const path = require("path"); + +const SECTIONS = 40; +const DEPTH = 10; +const FILLERS_PER_LEVEL = 4; + +function level(section, depth, changed) { + const fillers = Array.from( + { length: FILLERS_PER_LEVEL }, + (_, i) => + `

section ${section} level ${depth} item ${i}

`, + ).join(""); + if (depth === DEPTH) { + const leaf = changed ? "changed" : "original"; + return `
${fillers}${leaf}
`; + } + return `
${fillers}${level(section, depth + 1, changed)}
`; +} + +function document(changed) { + const sections = Array.from( + { length: SECTIONS }, + (_, i) => `
${level(i, 1, changed)}
`, + ).join("\n"); + return `
\n${sections}\n
\n`; +} + +const dir = path.join(__dirname, "benchmarks"); +fs.writeFileSync(path.join(dir, "deep-last-leaf.old.html"), document(false)); +fs.writeFileSync(path.join(dir, "deep-last-leaf.new.html"), document(true)); From c967f511fb8d69bd27657fc38005bf4135553a77 Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Tue, 25 Aug 2026 20:45:32 -0800 Subject: [PATCH 06/12] shrink deep-last-leaf fixture size --- perf/benchmarks/deep-last-leaf.new.html | 2460 ++++------------------- perf/benchmarks/deep-last-leaf.old.html | 2460 ++++------------------- perf/generate-deep-last-leaf.js | 7 +- 3 files changed, 803 insertions(+), 4124 deletions(-) diff --git a/perf/benchmarks/deep-last-leaf.new.html b/perf/benchmarks/deep-last-leaf.new.html index 2141550..fb422d9 100644 --- a/perf/benchmarks/deep-last-leaf.new.html +++ b/perf/benchmarks/deep-last-leaf.new.html @@ -1,55 +1,35 @@
-

section 0 level 1 item 0

-

section 0 level 1 item 1

-

section 0 level 1 item 2

-

section 0 level 1 item 3

+

s0d1i0

+

s0d1i1

-

section 0 level 2 item 0

-

section 0 level 2 item 1

-

section 0 level 2 item 2

-

section 0 level 2 item 3

+

s0d2i0

+

s0d2i1

-

section 0 level 3 item 0

-

section 0 level 3 item 1

-

section 0 level 3 item 2

-

section 0 level 3 item 3

+

s0d3i0

+

s0d3i1

-

section 0 level 4 item 0

-

section 0 level 4 item 1

-

section 0 level 4 item 2

-

section 0 level 4 item 3

+

s0d4i0

+

s0d4i1

-

section 0 level 5 item 0

-

section 0 level 5 item 1

-

section 0 level 5 item 2

-

section 0 level 5 item 3

+

s0d5i0

+

s0d5i1

-

section 0 level 6 item 0

-

section 0 level 6 item 1

-

section 0 level 6 item 2

-

section 0 level 6 item 3

+

s0d6i0

+

s0d6i1

-

section 0 level 7 item 0

-

section 0 level 7 item 1

-

section 0 level 7 item 2

-

section 0 level 7 item 3

+

s0d7i0

+

s0d7i1

-

section 0 level 8 item 0

-

section 0 level 8 item 1

-

section 0 level 8 item 2

-

section 0 level 8 item 3

+

s0d8i0

+

s0d8i1

-

section 0 level 9 item 0

-

section 0 level 9 item 1

-

section 0 level 9 item 2

-

section 0 level 9 item 3

+

s0d9i0

+

s0d9i1

-

section 0 level 10 item 0

-

section 0 level 10 item 1

-

section 0 level 10 item 2

-

section 0 level 10 item 3

+

s0d10i0

+

s0d10i1

changed
@@ -64,55 +44,35 @@
-

section 1 level 1 item 0

-

section 1 level 1 item 1

-

section 1 level 1 item 2

-

section 1 level 1 item 3

+

s1d1i0

+

s1d1i1

-

section 1 level 2 item 0

-

section 1 level 2 item 1

-

section 1 level 2 item 2

-

section 1 level 2 item 3

+

s1d2i0

+

s1d2i1

-

section 1 level 3 item 0

-

section 1 level 3 item 1

-

section 1 level 3 item 2

-

section 1 level 3 item 3

+

s1d3i0

+

s1d3i1

-

section 1 level 4 item 0

-

section 1 level 4 item 1

-

section 1 level 4 item 2

-

section 1 level 4 item 3

+

s1d4i0

+

s1d4i1

-

section 1 level 5 item 0

-

section 1 level 5 item 1

-

section 1 level 5 item 2

-

section 1 level 5 item 3

+

s1d5i0

+

s1d5i1

-

section 1 level 6 item 0

-

section 1 level 6 item 1

-

section 1 level 6 item 2

-

section 1 level 6 item 3

+

s1d6i0

+

s1d6i1

-

section 1 level 7 item 0

-

section 1 level 7 item 1

-

section 1 level 7 item 2

-

section 1 level 7 item 3

+

s1d7i0

+

s1d7i1

-

section 1 level 8 item 0

-

section 1 level 8 item 1

-

section 1 level 8 item 2

-

section 1 level 8 item 3

+

s1d8i0

+

s1d8i1

-

section 1 level 9 item 0

-

section 1 level 9 item 1

-

section 1 level 9 item 2

-

section 1 level 9 item 3

+

s1d9i0

+

s1d9i1

-

section 1 level 10 item 0

-

section 1 level 10 item 1

-

section 1 level 10 item 2

-

section 1 level 10 item 3

+

s1d10i0

+

s1d10i1

changed
@@ -127,55 +87,35 @@
-

section 2 level 1 item 0

-

section 2 level 1 item 1

-

section 2 level 1 item 2

-

section 2 level 1 item 3

+

s2d1i0

+

s2d1i1

-

section 2 level 2 item 0

-

section 2 level 2 item 1

-

section 2 level 2 item 2

-

section 2 level 2 item 3

+

s2d2i0

+

s2d2i1

-

section 2 level 3 item 0

-

section 2 level 3 item 1

-

section 2 level 3 item 2

-

section 2 level 3 item 3

+

s2d3i0

+

s2d3i1

-

section 2 level 4 item 0

-

section 2 level 4 item 1

-

section 2 level 4 item 2

-

section 2 level 4 item 3

+

s2d4i0

+

s2d4i1

-

section 2 level 5 item 0

-

section 2 level 5 item 1

-

section 2 level 5 item 2

-

section 2 level 5 item 3

+

s2d5i0

+

s2d5i1

-

section 2 level 6 item 0

-

section 2 level 6 item 1

-

section 2 level 6 item 2

-

section 2 level 6 item 3

+

s2d6i0

+

s2d6i1

-

section 2 level 7 item 0

-

section 2 level 7 item 1

-

section 2 level 7 item 2

-

section 2 level 7 item 3

+

s2d7i0

+

s2d7i1

-

section 2 level 8 item 0

-

section 2 level 8 item 1

-

section 2 level 8 item 2

-

section 2 level 8 item 3

+

s2d8i0

+

s2d8i1

-

section 2 level 9 item 0

-

section 2 level 9 item 1

-

section 2 level 9 item 2

-

section 2 level 9 item 3

+

s2d9i0

+

s2d9i1

-

section 2 level 10 item 0

-

section 2 level 10 item 1

-

section 2 level 10 item 2

-

section 2 level 10 item 3

+

s2d10i0

+

s2d10i1

changed
@@ -190,55 +130,35 @@
-

section 3 level 1 item 0

-

section 3 level 1 item 1

-

section 3 level 1 item 2

-

section 3 level 1 item 3

+

s3d1i0

+

s3d1i1

-

section 3 level 2 item 0

-

section 3 level 2 item 1

-

section 3 level 2 item 2

-

section 3 level 2 item 3

+

s3d2i0

+

s3d2i1

-

section 3 level 3 item 0

-

section 3 level 3 item 1

-

section 3 level 3 item 2

-

section 3 level 3 item 3

+

s3d3i0

+

s3d3i1

-

section 3 level 4 item 0

-

section 3 level 4 item 1

-

section 3 level 4 item 2

-

section 3 level 4 item 3

+

s3d4i0

+

s3d4i1

-

section 3 level 5 item 0

-

section 3 level 5 item 1

-

section 3 level 5 item 2

-

section 3 level 5 item 3

+

s3d5i0

+

s3d5i1

-

section 3 level 6 item 0

-

section 3 level 6 item 1

-

section 3 level 6 item 2

-

section 3 level 6 item 3

+

s3d6i0

+

s3d6i1

-

section 3 level 7 item 0

-

section 3 level 7 item 1

-

section 3 level 7 item 2

-

section 3 level 7 item 3

+

s3d7i0

+

s3d7i1

-

section 3 level 8 item 0

-

section 3 level 8 item 1

-

section 3 level 8 item 2

-

section 3 level 8 item 3

+

s3d8i0

+

s3d8i1

-

section 3 level 9 item 0

-

section 3 level 9 item 1

-

section 3 level 9 item 2

-

section 3 level 9 item 3

+

s3d9i0

+

s3d9i1

-

section 3 level 10 item 0

-

section 3 level 10 item 1

-

section 3 level 10 item 2

-

section 3 level 10 item 3

+

s3d10i0

+

s3d10i1

changed
@@ -253,55 +173,35 @@
-

section 4 level 1 item 0

-

section 4 level 1 item 1

-

section 4 level 1 item 2

-

section 4 level 1 item 3

+

s4d1i0

+

s4d1i1

-

section 4 level 2 item 0

-

section 4 level 2 item 1

-

section 4 level 2 item 2

-

section 4 level 2 item 3

+

s4d2i0

+

s4d2i1

-

section 4 level 3 item 0

-

section 4 level 3 item 1

-

section 4 level 3 item 2

-

section 4 level 3 item 3

+

s4d3i0

+

s4d3i1

-

section 4 level 4 item 0

-

section 4 level 4 item 1

-

section 4 level 4 item 2

-

section 4 level 4 item 3

+

s4d4i0

+

s4d4i1

-

section 4 level 5 item 0

-

section 4 level 5 item 1

-

section 4 level 5 item 2

-

section 4 level 5 item 3

+

s4d5i0

+

s4d5i1

-

section 4 level 6 item 0

-

section 4 level 6 item 1

-

section 4 level 6 item 2

-

section 4 level 6 item 3

+

s4d6i0

+

s4d6i1

-

section 4 level 7 item 0

-

section 4 level 7 item 1

-

section 4 level 7 item 2

-

section 4 level 7 item 3

+

s4d7i0

+

s4d7i1

-

section 4 level 8 item 0

-

section 4 level 8 item 1

-

section 4 level 8 item 2

-

section 4 level 8 item 3

+

s4d8i0

+

s4d8i1

-

section 4 level 9 item 0

-

section 4 level 9 item 1

-

section 4 level 9 item 2

-

section 4 level 9 item 3

+

s4d9i0

+

s4d9i1

-

section 4 level 10 item 0

-

section 4 level 10 item 1

-

section 4 level 10 item 2

-

section 4 level 10 item 3

+

s4d10i0

+

s4d10i1

changed
@@ -316,55 +216,35 @@
-

section 5 level 1 item 0

-

section 5 level 1 item 1

-

section 5 level 1 item 2

-

section 5 level 1 item 3

+

s5d1i0

+

s5d1i1

-

section 5 level 2 item 0

-

section 5 level 2 item 1

-

section 5 level 2 item 2

-

section 5 level 2 item 3

+

s5d2i0

+

s5d2i1

-

section 5 level 3 item 0

-

section 5 level 3 item 1

-

section 5 level 3 item 2

-

section 5 level 3 item 3

+

s5d3i0

+

s5d3i1

-

section 5 level 4 item 0

-

section 5 level 4 item 1

-

section 5 level 4 item 2

-

section 5 level 4 item 3

+

s5d4i0

+

s5d4i1

-

section 5 level 5 item 0

-

section 5 level 5 item 1

-

section 5 level 5 item 2

-

section 5 level 5 item 3

+

s5d5i0

+

s5d5i1

-

section 5 level 6 item 0

-

section 5 level 6 item 1

-

section 5 level 6 item 2

-

section 5 level 6 item 3

+

s5d6i0

+

s5d6i1

-

section 5 level 7 item 0

-

section 5 level 7 item 1

-

section 5 level 7 item 2

-

section 5 level 7 item 3

+

s5d7i0

+

s5d7i1

-

section 5 level 8 item 0

-

section 5 level 8 item 1

-

section 5 level 8 item 2

-

section 5 level 8 item 3

+

s5d8i0

+

s5d8i1

-

section 5 level 9 item 0

-

section 5 level 9 item 1

-

section 5 level 9 item 2

-

section 5 level 9 item 3

+

s5d9i0

+

s5d9i1

-

section 5 level 10 item 0

-

section 5 level 10 item 1

-

section 5 level 10 item 2

-

section 5 level 10 item 3

+

s5d10i0

+

s5d10i1

changed
@@ -379,55 +259,35 @@
-

section 6 level 1 item 0

-

section 6 level 1 item 1

-

section 6 level 1 item 2

-

section 6 level 1 item 3

+

s6d1i0

+

s6d1i1

-

section 6 level 2 item 0

-

section 6 level 2 item 1

-

section 6 level 2 item 2

-

section 6 level 2 item 3

+

s6d2i0

+

s6d2i1

-

section 6 level 3 item 0

-

section 6 level 3 item 1

-

section 6 level 3 item 2

-

section 6 level 3 item 3

+

s6d3i0

+

s6d3i1

-

section 6 level 4 item 0

-

section 6 level 4 item 1

-

section 6 level 4 item 2

-

section 6 level 4 item 3

+

s6d4i0

+

s6d4i1

-

section 6 level 5 item 0

-

section 6 level 5 item 1

-

section 6 level 5 item 2

-

section 6 level 5 item 3

+

s6d5i0

+

s6d5i1

-

section 6 level 6 item 0

-

section 6 level 6 item 1

-

section 6 level 6 item 2

-

section 6 level 6 item 3

+

s6d6i0

+

s6d6i1

-

section 6 level 7 item 0

-

section 6 level 7 item 1

-

section 6 level 7 item 2

-

section 6 level 7 item 3

+

s6d7i0

+

s6d7i1

-

section 6 level 8 item 0

-

section 6 level 8 item 1

-

section 6 level 8 item 2

-

section 6 level 8 item 3

+

s6d8i0

+

s6d8i1

-

section 6 level 9 item 0

-

section 6 level 9 item 1

-

section 6 level 9 item 2

-

section 6 level 9 item 3

+

s6d9i0

+

s6d9i1

-

section 6 level 10 item 0

-

section 6 level 10 item 1

-

section 6 level 10 item 2

-

section 6 level 10 item 3

+

s6d10i0

+

s6d10i1

changed
@@ -442,55 +302,35 @@
-

section 7 level 1 item 0

-

section 7 level 1 item 1

-

section 7 level 1 item 2

-

section 7 level 1 item 3

+

s7d1i0

+

s7d1i1

-

section 7 level 2 item 0

-

section 7 level 2 item 1

-

section 7 level 2 item 2

-

section 7 level 2 item 3

+

s7d2i0

+

s7d2i1

-

section 7 level 3 item 0

-

section 7 level 3 item 1

-

section 7 level 3 item 2

-

section 7 level 3 item 3

+

s7d3i0

+

s7d3i1

-

section 7 level 4 item 0

-

section 7 level 4 item 1

-

section 7 level 4 item 2

-

section 7 level 4 item 3

+

s7d4i0

+

s7d4i1

-

section 7 level 5 item 0

-

section 7 level 5 item 1

-

section 7 level 5 item 2

-

section 7 level 5 item 3

+

s7d5i0

+

s7d5i1

-

section 7 level 6 item 0

-

section 7 level 6 item 1

-

section 7 level 6 item 2

-

section 7 level 6 item 3

+

s7d6i0

+

s7d6i1

-

section 7 level 7 item 0

-

section 7 level 7 item 1

-

section 7 level 7 item 2

-

section 7 level 7 item 3

+

s7d7i0

+

s7d7i1

-

section 7 level 8 item 0

-

section 7 level 8 item 1

-

section 7 level 8 item 2

-

section 7 level 8 item 3

+

s7d8i0

+

s7d8i1

-

section 7 level 9 item 0

-

section 7 level 9 item 1

-

section 7 level 9 item 2

-

section 7 level 9 item 3

+

s7d9i0

+

s7d9i1

-

section 7 level 10 item 0

-

section 7 level 10 item 1

-

section 7 level 10 item 2

-

section 7 level 10 item 3

+

s7d10i0

+

s7d10i1

changed
@@ -505,55 +345,35 @@
-

section 8 level 1 item 0

-

section 8 level 1 item 1

-

section 8 level 1 item 2

-

section 8 level 1 item 3

+

s8d1i0

+

s8d1i1

-

section 8 level 2 item 0

-

section 8 level 2 item 1

-

section 8 level 2 item 2

-

section 8 level 2 item 3

+

s8d2i0

+

s8d2i1

-

section 8 level 3 item 0

-

section 8 level 3 item 1

-

section 8 level 3 item 2

-

section 8 level 3 item 3

+

s8d3i0

+

s8d3i1

-

section 8 level 4 item 0

-

section 8 level 4 item 1

-

section 8 level 4 item 2

-

section 8 level 4 item 3

+

s8d4i0

+

s8d4i1

-

section 8 level 5 item 0

-

section 8 level 5 item 1

-

section 8 level 5 item 2

-

section 8 level 5 item 3

+

s8d5i0

+

s8d5i1

-

section 8 level 6 item 0

-

section 8 level 6 item 1

-

section 8 level 6 item 2

-

section 8 level 6 item 3

+

s8d6i0

+

s8d6i1

-

section 8 level 7 item 0

-

section 8 level 7 item 1

-

section 8 level 7 item 2

-

section 8 level 7 item 3

+

s8d7i0

+

s8d7i1

-

section 8 level 8 item 0

-

section 8 level 8 item 1

-

section 8 level 8 item 2

-

section 8 level 8 item 3

+

s8d8i0

+

s8d8i1

-

section 8 level 9 item 0

-

section 8 level 9 item 1

-

section 8 level 9 item 2

-

section 8 level 9 item 3

+

s8d9i0

+

s8d9i1

-

section 8 level 10 item 0

-

section 8 level 10 item 1

-

section 8 level 10 item 2

-

section 8 level 10 item 3

+

s8d10i0

+

s8d10i1

changed
@@ -568,55 +388,35 @@
-

section 9 level 1 item 0

-

section 9 level 1 item 1

-

section 9 level 1 item 2

-

section 9 level 1 item 3

+

s9d1i0

+

s9d1i1

-

section 9 level 2 item 0

-

section 9 level 2 item 1

-

section 9 level 2 item 2

-

section 9 level 2 item 3

+

s9d2i0

+

s9d2i1

-

section 9 level 3 item 0

-

section 9 level 3 item 1

-

section 9 level 3 item 2

-

section 9 level 3 item 3

+

s9d3i0

+

s9d3i1

-

section 9 level 4 item 0

-

section 9 level 4 item 1

-

section 9 level 4 item 2

-

section 9 level 4 item 3

+

s9d4i0

+

s9d4i1

-

section 9 level 5 item 0

-

section 9 level 5 item 1

-

section 9 level 5 item 2

-

section 9 level 5 item 3

+

s9d5i0

+

s9d5i1

-

section 9 level 6 item 0

-

section 9 level 6 item 1

-

section 9 level 6 item 2

-

section 9 level 6 item 3

+

s9d6i0

+

s9d6i1

-

section 9 level 7 item 0

-

section 9 level 7 item 1

-

section 9 level 7 item 2

-

section 9 level 7 item 3

+

s9d7i0

+

s9d7i1

-

section 9 level 8 item 0

-

section 9 level 8 item 1

-

section 9 level 8 item 2

-

section 9 level 8 item 3

+

s9d8i0

+

s9d8i1

-

section 9 level 9 item 0

-

section 9 level 9 item 1

-

section 9 level 9 item 2

-

section 9 level 9 item 3

+

s9d9i0

+

s9d9i1

-

section 9 level 10 item 0

-

section 9 level 10 item 1

-

section 9 level 10 item 2

-

section 9 level 10 item 3

+

s9d10i0

+

s9d10i1

changed
@@ -631,55 +431,35 @@
-

section 10 level 1 item 0

-

section 10 level 1 item 1

-

section 10 level 1 item 2

-

section 10 level 1 item 3

+

s10d1i0

+

s10d1i1

-

section 10 level 2 item 0

-

section 10 level 2 item 1

-

section 10 level 2 item 2

-

section 10 level 2 item 3

+

s10d2i0

+

s10d2i1

-

section 10 level 3 item 0

-

section 10 level 3 item 1

-

section 10 level 3 item 2

-

section 10 level 3 item 3

+

s10d3i0

+

s10d3i1

-

section 10 level 4 item 0

-

section 10 level 4 item 1

-

section 10 level 4 item 2

-

section 10 level 4 item 3

+

s10d4i0

+

s10d4i1

-

section 10 level 5 item 0

-

section 10 level 5 item 1

-

section 10 level 5 item 2

-

section 10 level 5 item 3

+

s10d5i0

+

s10d5i1

-

section 10 level 6 item 0

-

section 10 level 6 item 1

-

section 10 level 6 item 2

-

section 10 level 6 item 3

+

s10d6i0

+

s10d6i1

-

section 10 level 7 item 0

-

section 10 level 7 item 1

-

section 10 level 7 item 2

-

section 10 level 7 item 3

+

s10d7i0

+

s10d7i1

-

section 10 level 8 item 0

-

section 10 level 8 item 1

-

section 10 level 8 item 2

-

section 10 level 8 item 3

+

s10d8i0

+

s10d8i1

-

section 10 level 9 item 0

-

section 10 level 9 item 1

-

section 10 level 9 item 2

-

section 10 level 9 item 3

+

s10d9i0

+

s10d9i1

-

section 10 level 10 item 0

-

section 10 level 10 item 1

-

section 10 level 10 item 2

-

section 10 level 10 item 3

+

s10d10i0

+

s10d10i1

changed
@@ -694,55 +474,35 @@
-

section 11 level 1 item 0

-

section 11 level 1 item 1

-

section 11 level 1 item 2

-

section 11 level 1 item 3

+

s11d1i0

+

s11d1i1

-

section 11 level 2 item 0

-

section 11 level 2 item 1

-

section 11 level 2 item 2

-

section 11 level 2 item 3

+

s11d2i0

+

s11d2i1

-

section 11 level 3 item 0

-

section 11 level 3 item 1

-

section 11 level 3 item 2

-

section 11 level 3 item 3

+

s11d3i0

+

s11d3i1

-

section 11 level 4 item 0

-

section 11 level 4 item 1

-

section 11 level 4 item 2

-

section 11 level 4 item 3

+

s11d4i0

+

s11d4i1

-

section 11 level 5 item 0

-

section 11 level 5 item 1

-

section 11 level 5 item 2

-

section 11 level 5 item 3

+

s11d5i0

+

s11d5i1

-

section 11 level 6 item 0

-

section 11 level 6 item 1

-

section 11 level 6 item 2

-

section 11 level 6 item 3

+

s11d6i0

+

s11d6i1

-

section 11 level 7 item 0

-

section 11 level 7 item 1

-

section 11 level 7 item 2

-

section 11 level 7 item 3

+

s11d7i0

+

s11d7i1

-

section 11 level 8 item 0

-

section 11 level 8 item 1

-

section 11 level 8 item 2

-

section 11 level 8 item 3

+

s11d8i0

+

s11d8i1

-

section 11 level 9 item 0

-

section 11 level 9 item 1

-

section 11 level 9 item 2

-

section 11 level 9 item 3

+

s11d9i0

+

s11d9i1

-

section 11 level 10 item 0

-

section 11 level 10 item 1

-

section 11 level 10 item 2

-

section 11 level 10 item 3

+

s11d10i0

+

s11d10i1

changed
@@ -757,55 +517,35 @@
-

section 12 level 1 item 0

-

section 12 level 1 item 1

-

section 12 level 1 item 2

-

section 12 level 1 item 3

+

s12d1i0

+

s12d1i1

-

section 12 level 2 item 0

-

section 12 level 2 item 1

-

section 12 level 2 item 2

-

section 12 level 2 item 3

+

s12d2i0

+

s12d2i1

-

section 12 level 3 item 0

-

section 12 level 3 item 1

-

section 12 level 3 item 2

-

section 12 level 3 item 3

+

s12d3i0

+

s12d3i1

-

section 12 level 4 item 0

-

section 12 level 4 item 1

-

section 12 level 4 item 2

-

section 12 level 4 item 3

+

s12d4i0

+

s12d4i1

-

section 12 level 5 item 0

-

section 12 level 5 item 1

-

section 12 level 5 item 2

-

section 12 level 5 item 3

+

s12d5i0

+

s12d5i1

-

section 12 level 6 item 0

-

section 12 level 6 item 1

-

section 12 level 6 item 2

-

section 12 level 6 item 3

+

s12d6i0

+

s12d6i1

-

section 12 level 7 item 0

-

section 12 level 7 item 1

-

section 12 level 7 item 2

-

section 12 level 7 item 3

+

s12d7i0

+

s12d7i1

-

section 12 level 8 item 0

-

section 12 level 8 item 1

-

section 12 level 8 item 2

-

section 12 level 8 item 3

+

s12d8i0

+

s12d8i1

-

section 12 level 9 item 0

-

section 12 level 9 item 1

-

section 12 level 9 item 2

-

section 12 level 9 item 3

+

s12d9i0

+

s12d9i1

-

section 12 level 10 item 0

-

section 12 level 10 item 1

-

section 12 level 10 item 2

-

section 12 level 10 item 3

+

s12d10i0

+

s12d10i1

changed
@@ -820,55 +560,35 @@
-

section 13 level 1 item 0

-

section 13 level 1 item 1

-

section 13 level 1 item 2

-

section 13 level 1 item 3

+

s13d1i0

+

s13d1i1

-

section 13 level 2 item 0

-

section 13 level 2 item 1

-

section 13 level 2 item 2

-

section 13 level 2 item 3

+

s13d2i0

+

s13d2i1

-

section 13 level 3 item 0

-

section 13 level 3 item 1

-

section 13 level 3 item 2

-

section 13 level 3 item 3

+

s13d3i0

+

s13d3i1

-

section 13 level 4 item 0

-

section 13 level 4 item 1

-

section 13 level 4 item 2

-

section 13 level 4 item 3

+

s13d4i0

+

s13d4i1

-

section 13 level 5 item 0

-

section 13 level 5 item 1

-

section 13 level 5 item 2

-

section 13 level 5 item 3

+

s13d5i0

+

s13d5i1

-

section 13 level 6 item 0

-

section 13 level 6 item 1

-

section 13 level 6 item 2

-

section 13 level 6 item 3

+

s13d6i0

+

s13d6i1

-

section 13 level 7 item 0

-

section 13 level 7 item 1

-

section 13 level 7 item 2

-

section 13 level 7 item 3

+

s13d7i0

+

s13d7i1

-

section 13 level 8 item 0

-

section 13 level 8 item 1

-

section 13 level 8 item 2

-

section 13 level 8 item 3

+

s13d8i0

+

s13d8i1

-

section 13 level 9 item 0

-

section 13 level 9 item 1

-

section 13 level 9 item 2

-

section 13 level 9 item 3

+

s13d9i0

+

s13d9i1

-

section 13 level 10 item 0

-

section 13 level 10 item 1

-

section 13 level 10 item 2

-

section 13 level 10 item 3

+

s13d10i0

+

s13d10i1

changed
@@ -883,55 +603,35 @@
-

section 14 level 1 item 0

-

section 14 level 1 item 1

-

section 14 level 1 item 2

-

section 14 level 1 item 3

+

s14d1i0

+

s14d1i1

-

section 14 level 2 item 0

-

section 14 level 2 item 1

-

section 14 level 2 item 2

-

section 14 level 2 item 3

+

s14d2i0

+

s14d2i1

-

section 14 level 3 item 0

-

section 14 level 3 item 1

-

section 14 level 3 item 2

-

section 14 level 3 item 3

+

s14d3i0

+

s14d3i1

-

section 14 level 4 item 0

-

section 14 level 4 item 1

-

section 14 level 4 item 2

-

section 14 level 4 item 3

+

s14d4i0

+

s14d4i1

-

section 14 level 5 item 0

-

section 14 level 5 item 1

-

section 14 level 5 item 2

-

section 14 level 5 item 3

+

s14d5i0

+

s14d5i1

-

section 14 level 6 item 0

-

section 14 level 6 item 1

-

section 14 level 6 item 2

-

section 14 level 6 item 3

+

s14d6i0

+

s14d6i1

-

section 14 level 7 item 0

-

section 14 level 7 item 1

-

section 14 level 7 item 2

-

section 14 level 7 item 3

+

s14d7i0

+

s14d7i1

-

section 14 level 8 item 0

-

section 14 level 8 item 1

-

section 14 level 8 item 2

-

section 14 level 8 item 3

+

s14d8i0

+

s14d8i1

-

section 14 level 9 item 0

-

section 14 level 9 item 1

-

section 14 level 9 item 2

-

section 14 level 9 item 3

+

s14d9i0

+

s14d9i1

-

section 14 level 10 item 0

-

section 14 level 10 item 1

-

section 14 level 10 item 2

-

section 14 level 10 item 3

+

s14d10i0

+

s14d10i1

changed
@@ -946,55 +646,35 @@
-

section 15 level 1 item 0

-

section 15 level 1 item 1

-

section 15 level 1 item 2

-

section 15 level 1 item 3

+

s15d1i0

+

s15d1i1

-

section 15 level 2 item 0

-

section 15 level 2 item 1

-

section 15 level 2 item 2

-

section 15 level 2 item 3

+

s15d2i0

+

s15d2i1

-

section 15 level 3 item 0

-

section 15 level 3 item 1

-

section 15 level 3 item 2

-

section 15 level 3 item 3

+

s15d3i0

+

s15d3i1

-

section 15 level 4 item 0

-

section 15 level 4 item 1

-

section 15 level 4 item 2

-

section 15 level 4 item 3

+

s15d4i0

+

s15d4i1

-

section 15 level 5 item 0

-

section 15 level 5 item 1

-

section 15 level 5 item 2

-

section 15 level 5 item 3

+

s15d5i0

+

s15d5i1

-

section 15 level 6 item 0

-

section 15 level 6 item 1

-

section 15 level 6 item 2

-

section 15 level 6 item 3

+

s15d6i0

+

s15d6i1

-

section 15 level 7 item 0

-

section 15 level 7 item 1

-

section 15 level 7 item 2

-

section 15 level 7 item 3

+

s15d7i0

+

s15d7i1

-

section 15 level 8 item 0

-

section 15 level 8 item 1

-

section 15 level 8 item 2

-

section 15 level 8 item 3

+

s15d8i0

+

s15d8i1

-

section 15 level 9 item 0

-

section 15 level 9 item 1

-

section 15 level 9 item 2

-

section 15 level 9 item 3

+

s15d9i0

+

s15d9i1

-

section 15 level 10 item 0

-

section 15 level 10 item 1

-

section 15 level 10 item 2

-

section 15 level 10 item 3

+

s15d10i0

+

s15d10i1

changed
@@ -1009,55 +689,35 @@
-

section 16 level 1 item 0

-

section 16 level 1 item 1

-

section 16 level 1 item 2

-

section 16 level 1 item 3

+

s16d1i0

+

s16d1i1

-

section 16 level 2 item 0

-

section 16 level 2 item 1

-

section 16 level 2 item 2

-

section 16 level 2 item 3

+

s16d2i0

+

s16d2i1

-

section 16 level 3 item 0

-

section 16 level 3 item 1

-

section 16 level 3 item 2

-

section 16 level 3 item 3

+

s16d3i0

+

s16d3i1

-

section 16 level 4 item 0

-

section 16 level 4 item 1

-

section 16 level 4 item 2

-

section 16 level 4 item 3

+

s16d4i0

+

s16d4i1

-

section 16 level 5 item 0

-

section 16 level 5 item 1

-

section 16 level 5 item 2

-

section 16 level 5 item 3

+

s16d5i0

+

s16d5i1

-

section 16 level 6 item 0

-

section 16 level 6 item 1

-

section 16 level 6 item 2

-

section 16 level 6 item 3

+

s16d6i0

+

s16d6i1

-

section 16 level 7 item 0

-

section 16 level 7 item 1

-

section 16 level 7 item 2

-

section 16 level 7 item 3

+

s16d7i0

+

s16d7i1

-

section 16 level 8 item 0

-

section 16 level 8 item 1

-

section 16 level 8 item 2

-

section 16 level 8 item 3

+

s16d8i0

+

s16d8i1

-

section 16 level 9 item 0

-

section 16 level 9 item 1

-

section 16 level 9 item 2

-

section 16 level 9 item 3

+

s16d9i0

+

s16d9i1

-

section 16 level 10 item 0

-

section 16 level 10 item 1

-

section 16 level 10 item 2

-

section 16 level 10 item 3

+

s16d10i0

+

s16d10i1

changed
@@ -1072,55 +732,35 @@
-

section 17 level 1 item 0

-

section 17 level 1 item 1

-

section 17 level 1 item 2

-

section 17 level 1 item 3

+

s17d1i0

+

s17d1i1

-

section 17 level 2 item 0

-

section 17 level 2 item 1

-

section 17 level 2 item 2

-

section 17 level 2 item 3

+

s17d2i0

+

s17d2i1

-

section 17 level 3 item 0

-

section 17 level 3 item 1

-

section 17 level 3 item 2

-

section 17 level 3 item 3

+

s17d3i0

+

s17d3i1

-

section 17 level 4 item 0

-

section 17 level 4 item 1

-

section 17 level 4 item 2

-

section 17 level 4 item 3

+

s17d4i0

+

s17d4i1

-

section 17 level 5 item 0

-

section 17 level 5 item 1

-

section 17 level 5 item 2

-

section 17 level 5 item 3

+

s17d5i0

+

s17d5i1

-

section 17 level 6 item 0

-

section 17 level 6 item 1

-

section 17 level 6 item 2

-

section 17 level 6 item 3

+

s17d6i0

+

s17d6i1

-

section 17 level 7 item 0

-

section 17 level 7 item 1

-

section 17 level 7 item 2

-

section 17 level 7 item 3

+

s17d7i0

+

s17d7i1

-

section 17 level 8 item 0

-

section 17 level 8 item 1

-

section 17 level 8 item 2

-

section 17 level 8 item 3

+

s17d8i0

+

s17d8i1

-

section 17 level 9 item 0

-

section 17 level 9 item 1

-

section 17 level 9 item 2

-

section 17 level 9 item 3

+

s17d9i0

+

s17d9i1

-

section 17 level 10 item 0

-

section 17 level 10 item 1

-

section 17 level 10 item 2

-

section 17 level 10 item 3

+

s17d10i0

+

s17d10i1

changed
@@ -1135,55 +775,35 @@
-

section 18 level 1 item 0

-

section 18 level 1 item 1

-

section 18 level 1 item 2

-

section 18 level 1 item 3

+

s18d1i0

+

s18d1i1

-

section 18 level 2 item 0

-

section 18 level 2 item 1

-

section 18 level 2 item 2

-

section 18 level 2 item 3

+

s18d2i0

+

s18d2i1

-

section 18 level 3 item 0

-

section 18 level 3 item 1

-

section 18 level 3 item 2

-

section 18 level 3 item 3

+

s18d3i0

+

s18d3i1

-

section 18 level 4 item 0

-

section 18 level 4 item 1

-

section 18 level 4 item 2

-

section 18 level 4 item 3

+

s18d4i0

+

s18d4i1

-

section 18 level 5 item 0

-

section 18 level 5 item 1

-

section 18 level 5 item 2

-

section 18 level 5 item 3

+

s18d5i0

+

s18d5i1

-

section 18 level 6 item 0

-

section 18 level 6 item 1

-

section 18 level 6 item 2

-

section 18 level 6 item 3

+

s18d6i0

+

s18d6i1

-

section 18 level 7 item 0

-

section 18 level 7 item 1

-

section 18 level 7 item 2

-

section 18 level 7 item 3

+

s18d7i0

+

s18d7i1

-

section 18 level 8 item 0

-

section 18 level 8 item 1

-

section 18 level 8 item 2

-

section 18 level 8 item 3

+

s18d8i0

+

s18d8i1

-

section 18 level 9 item 0

-

section 18 level 9 item 1

-

section 18 level 9 item 2

-

section 18 level 9 item 3

+

s18d9i0

+

s18d9i1

-

section 18 level 10 item 0

-

section 18 level 10 item 1

-

section 18 level 10 item 2

-

section 18 level 10 item 3

+

s18d10i0

+

s18d10i1

changed
@@ -1198,1315 +818,35 @@
-

section 19 level 1 item 0

-

section 19 level 1 item 1

-

section 19 level 1 item 2

-

section 19 level 1 item 3

+

s19d1i0

+

s19d1i1

-

section 19 level 2 item 0

-

section 19 level 2 item 1

-

section 19 level 2 item 2

-

section 19 level 2 item 3

+

s19d2i0

+

s19d2i1

-

section 19 level 3 item 0

-

section 19 level 3 item 1

-

section 19 level 3 item 2

-

section 19 level 3 item 3

+

s19d3i0

+

s19d3i1

-

section 19 level 4 item 0

-

section 19 level 4 item 1

-

section 19 level 4 item 2

-

section 19 level 4 item 3

+

s19d4i0

+

s19d4i1

-

section 19 level 5 item 0

-

section 19 level 5 item 1

-

section 19 level 5 item 2

-

section 19 level 5 item 3

+

s19d5i0

+

s19d5i1

-

section 19 level 6 item 0

-

section 19 level 6 item 1

-

section 19 level 6 item 2

-

section 19 level 6 item 3

+

s19d6i0

+

s19d6i1

-

section 19 level 7 item 0

-

section 19 level 7 item 1

-

section 19 level 7 item 2

-

section 19 level 7 item 3

+

s19d7i0

+

s19d7i1

-

section 19 level 8 item 0

-

section 19 level 8 item 1

-

section 19 level 8 item 2

-

section 19 level 8 item 3

+

s19d8i0

+

s19d8i1

-

section 19 level 9 item 0

-

section 19 level 9 item 1

-

section 19 level 9 item 2

-

section 19 level 9 item 3

+

s19d9i0

+

s19d9i1

-

section 19 level 10 item 0

-

section 19 level 10 item 1

-

section 19 level 10 item 2

-

section 19 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 20 level 1 item 0

-

section 20 level 1 item 1

-

section 20 level 1 item 2

-

section 20 level 1 item 3

-
-

section 20 level 2 item 0

-

section 20 level 2 item 1

-

section 20 level 2 item 2

-

section 20 level 2 item 3

-
-

section 20 level 3 item 0

-

section 20 level 3 item 1

-

section 20 level 3 item 2

-

section 20 level 3 item 3

-
-

section 20 level 4 item 0

-

section 20 level 4 item 1

-

section 20 level 4 item 2

-

section 20 level 4 item 3

-
-

section 20 level 5 item 0

-

section 20 level 5 item 1

-

section 20 level 5 item 2

-

section 20 level 5 item 3

-
-

section 20 level 6 item 0

-

section 20 level 6 item 1

-

section 20 level 6 item 2

-

section 20 level 6 item 3

-
-

section 20 level 7 item 0

-

section 20 level 7 item 1

-

section 20 level 7 item 2

-

section 20 level 7 item 3

-
-

section 20 level 8 item 0

-

section 20 level 8 item 1

-

section 20 level 8 item 2

-

section 20 level 8 item 3

-
-

section 20 level 9 item 0

-

section 20 level 9 item 1

-

section 20 level 9 item 2

-

section 20 level 9 item 3

-
-

section 20 level 10 item 0

-

section 20 level 10 item 1

-

section 20 level 10 item 2

-

section 20 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 21 level 1 item 0

-

section 21 level 1 item 1

-

section 21 level 1 item 2

-

section 21 level 1 item 3

-
-

section 21 level 2 item 0

-

section 21 level 2 item 1

-

section 21 level 2 item 2

-

section 21 level 2 item 3

-
-

section 21 level 3 item 0

-

section 21 level 3 item 1

-

section 21 level 3 item 2

-

section 21 level 3 item 3

-
-

section 21 level 4 item 0

-

section 21 level 4 item 1

-

section 21 level 4 item 2

-

section 21 level 4 item 3

-
-

section 21 level 5 item 0

-

section 21 level 5 item 1

-

section 21 level 5 item 2

-

section 21 level 5 item 3

-
-

section 21 level 6 item 0

-

section 21 level 6 item 1

-

section 21 level 6 item 2

-

section 21 level 6 item 3

-
-

section 21 level 7 item 0

-

section 21 level 7 item 1

-

section 21 level 7 item 2

-

section 21 level 7 item 3

-
-

section 21 level 8 item 0

-

section 21 level 8 item 1

-

section 21 level 8 item 2

-

section 21 level 8 item 3

-
-

section 21 level 9 item 0

-

section 21 level 9 item 1

-

section 21 level 9 item 2

-

section 21 level 9 item 3

-
-

section 21 level 10 item 0

-

section 21 level 10 item 1

-

section 21 level 10 item 2

-

section 21 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 22 level 1 item 0

-

section 22 level 1 item 1

-

section 22 level 1 item 2

-

section 22 level 1 item 3

-
-

section 22 level 2 item 0

-

section 22 level 2 item 1

-

section 22 level 2 item 2

-

section 22 level 2 item 3

-
-

section 22 level 3 item 0

-

section 22 level 3 item 1

-

section 22 level 3 item 2

-

section 22 level 3 item 3

-
-

section 22 level 4 item 0

-

section 22 level 4 item 1

-

section 22 level 4 item 2

-

section 22 level 4 item 3

-
-

section 22 level 5 item 0

-

section 22 level 5 item 1

-

section 22 level 5 item 2

-

section 22 level 5 item 3

-
-

section 22 level 6 item 0

-

section 22 level 6 item 1

-

section 22 level 6 item 2

-

section 22 level 6 item 3

-
-

section 22 level 7 item 0

-

section 22 level 7 item 1

-

section 22 level 7 item 2

-

section 22 level 7 item 3

-
-

section 22 level 8 item 0

-

section 22 level 8 item 1

-

section 22 level 8 item 2

-

section 22 level 8 item 3

-
-

section 22 level 9 item 0

-

section 22 level 9 item 1

-

section 22 level 9 item 2

-

section 22 level 9 item 3

-
-

section 22 level 10 item 0

-

section 22 level 10 item 1

-

section 22 level 10 item 2

-

section 22 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 23 level 1 item 0

-

section 23 level 1 item 1

-

section 23 level 1 item 2

-

section 23 level 1 item 3

-
-

section 23 level 2 item 0

-

section 23 level 2 item 1

-

section 23 level 2 item 2

-

section 23 level 2 item 3

-
-

section 23 level 3 item 0

-

section 23 level 3 item 1

-

section 23 level 3 item 2

-

section 23 level 3 item 3

-
-

section 23 level 4 item 0

-

section 23 level 4 item 1

-

section 23 level 4 item 2

-

section 23 level 4 item 3

-
-

section 23 level 5 item 0

-

section 23 level 5 item 1

-

section 23 level 5 item 2

-

section 23 level 5 item 3

-
-

section 23 level 6 item 0

-

section 23 level 6 item 1

-

section 23 level 6 item 2

-

section 23 level 6 item 3

-
-

section 23 level 7 item 0

-

section 23 level 7 item 1

-

section 23 level 7 item 2

-

section 23 level 7 item 3

-
-

section 23 level 8 item 0

-

section 23 level 8 item 1

-

section 23 level 8 item 2

-

section 23 level 8 item 3

-
-

section 23 level 9 item 0

-

section 23 level 9 item 1

-

section 23 level 9 item 2

-

section 23 level 9 item 3

-
-

section 23 level 10 item 0

-

section 23 level 10 item 1

-

section 23 level 10 item 2

-

section 23 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 24 level 1 item 0

-

section 24 level 1 item 1

-

section 24 level 1 item 2

-

section 24 level 1 item 3

-
-

section 24 level 2 item 0

-

section 24 level 2 item 1

-

section 24 level 2 item 2

-

section 24 level 2 item 3

-
-

section 24 level 3 item 0

-

section 24 level 3 item 1

-

section 24 level 3 item 2

-

section 24 level 3 item 3

-
-

section 24 level 4 item 0

-

section 24 level 4 item 1

-

section 24 level 4 item 2

-

section 24 level 4 item 3

-
-

section 24 level 5 item 0

-

section 24 level 5 item 1

-

section 24 level 5 item 2

-

section 24 level 5 item 3

-
-

section 24 level 6 item 0

-

section 24 level 6 item 1

-

section 24 level 6 item 2

-

section 24 level 6 item 3

-
-

section 24 level 7 item 0

-

section 24 level 7 item 1

-

section 24 level 7 item 2

-

section 24 level 7 item 3

-
-

section 24 level 8 item 0

-

section 24 level 8 item 1

-

section 24 level 8 item 2

-

section 24 level 8 item 3

-
-

section 24 level 9 item 0

-

section 24 level 9 item 1

-

section 24 level 9 item 2

-

section 24 level 9 item 3

-
-

section 24 level 10 item 0

-

section 24 level 10 item 1

-

section 24 level 10 item 2

-

section 24 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 25 level 1 item 0

-

section 25 level 1 item 1

-

section 25 level 1 item 2

-

section 25 level 1 item 3

-
-

section 25 level 2 item 0

-

section 25 level 2 item 1

-

section 25 level 2 item 2

-

section 25 level 2 item 3

-
-

section 25 level 3 item 0

-

section 25 level 3 item 1

-

section 25 level 3 item 2

-

section 25 level 3 item 3

-
-

section 25 level 4 item 0

-

section 25 level 4 item 1

-

section 25 level 4 item 2

-

section 25 level 4 item 3

-
-

section 25 level 5 item 0

-

section 25 level 5 item 1

-

section 25 level 5 item 2

-

section 25 level 5 item 3

-
-

section 25 level 6 item 0

-

section 25 level 6 item 1

-

section 25 level 6 item 2

-

section 25 level 6 item 3

-
-

section 25 level 7 item 0

-

section 25 level 7 item 1

-

section 25 level 7 item 2

-

section 25 level 7 item 3

-
-

section 25 level 8 item 0

-

section 25 level 8 item 1

-

section 25 level 8 item 2

-

section 25 level 8 item 3

-
-

section 25 level 9 item 0

-

section 25 level 9 item 1

-

section 25 level 9 item 2

-

section 25 level 9 item 3

-
-

section 25 level 10 item 0

-

section 25 level 10 item 1

-

section 25 level 10 item 2

-

section 25 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 26 level 1 item 0

-

section 26 level 1 item 1

-

section 26 level 1 item 2

-

section 26 level 1 item 3

-
-

section 26 level 2 item 0

-

section 26 level 2 item 1

-

section 26 level 2 item 2

-

section 26 level 2 item 3

-
-

section 26 level 3 item 0

-

section 26 level 3 item 1

-

section 26 level 3 item 2

-

section 26 level 3 item 3

-
-

section 26 level 4 item 0

-

section 26 level 4 item 1

-

section 26 level 4 item 2

-

section 26 level 4 item 3

-
-

section 26 level 5 item 0

-

section 26 level 5 item 1

-

section 26 level 5 item 2

-

section 26 level 5 item 3

-
-

section 26 level 6 item 0

-

section 26 level 6 item 1

-

section 26 level 6 item 2

-

section 26 level 6 item 3

-
-

section 26 level 7 item 0

-

section 26 level 7 item 1

-

section 26 level 7 item 2

-

section 26 level 7 item 3

-
-

section 26 level 8 item 0

-

section 26 level 8 item 1

-

section 26 level 8 item 2

-

section 26 level 8 item 3

-
-

section 26 level 9 item 0

-

section 26 level 9 item 1

-

section 26 level 9 item 2

-

section 26 level 9 item 3

-
-

section 26 level 10 item 0

-

section 26 level 10 item 1

-

section 26 level 10 item 2

-

section 26 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 27 level 1 item 0

-

section 27 level 1 item 1

-

section 27 level 1 item 2

-

section 27 level 1 item 3

-
-

section 27 level 2 item 0

-

section 27 level 2 item 1

-

section 27 level 2 item 2

-

section 27 level 2 item 3

-
-

section 27 level 3 item 0

-

section 27 level 3 item 1

-

section 27 level 3 item 2

-

section 27 level 3 item 3

-
-

section 27 level 4 item 0

-

section 27 level 4 item 1

-

section 27 level 4 item 2

-

section 27 level 4 item 3

-
-

section 27 level 5 item 0

-

section 27 level 5 item 1

-

section 27 level 5 item 2

-

section 27 level 5 item 3

-
-

section 27 level 6 item 0

-

section 27 level 6 item 1

-

section 27 level 6 item 2

-

section 27 level 6 item 3

-
-

section 27 level 7 item 0

-

section 27 level 7 item 1

-

section 27 level 7 item 2

-

section 27 level 7 item 3

-
-

section 27 level 8 item 0

-

section 27 level 8 item 1

-

section 27 level 8 item 2

-

section 27 level 8 item 3

-
-

section 27 level 9 item 0

-

section 27 level 9 item 1

-

section 27 level 9 item 2

-

section 27 level 9 item 3

-
-

section 27 level 10 item 0

-

section 27 level 10 item 1

-

section 27 level 10 item 2

-

section 27 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 28 level 1 item 0

-

section 28 level 1 item 1

-

section 28 level 1 item 2

-

section 28 level 1 item 3

-
-

section 28 level 2 item 0

-

section 28 level 2 item 1

-

section 28 level 2 item 2

-

section 28 level 2 item 3

-
-

section 28 level 3 item 0

-

section 28 level 3 item 1

-

section 28 level 3 item 2

-

section 28 level 3 item 3

-
-

section 28 level 4 item 0

-

section 28 level 4 item 1

-

section 28 level 4 item 2

-

section 28 level 4 item 3

-
-

section 28 level 5 item 0

-

section 28 level 5 item 1

-

section 28 level 5 item 2

-

section 28 level 5 item 3

-
-

section 28 level 6 item 0

-

section 28 level 6 item 1

-

section 28 level 6 item 2

-

section 28 level 6 item 3

-
-

section 28 level 7 item 0

-

section 28 level 7 item 1

-

section 28 level 7 item 2

-

section 28 level 7 item 3

-
-

section 28 level 8 item 0

-

section 28 level 8 item 1

-

section 28 level 8 item 2

-

section 28 level 8 item 3

-
-

section 28 level 9 item 0

-

section 28 level 9 item 1

-

section 28 level 9 item 2

-

section 28 level 9 item 3

-
-

section 28 level 10 item 0

-

section 28 level 10 item 1

-

section 28 level 10 item 2

-

section 28 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 29 level 1 item 0

-

section 29 level 1 item 1

-

section 29 level 1 item 2

-

section 29 level 1 item 3

-
-

section 29 level 2 item 0

-

section 29 level 2 item 1

-

section 29 level 2 item 2

-

section 29 level 2 item 3

-
-

section 29 level 3 item 0

-

section 29 level 3 item 1

-

section 29 level 3 item 2

-

section 29 level 3 item 3

-
-

section 29 level 4 item 0

-

section 29 level 4 item 1

-

section 29 level 4 item 2

-

section 29 level 4 item 3

-
-

section 29 level 5 item 0

-

section 29 level 5 item 1

-

section 29 level 5 item 2

-

section 29 level 5 item 3

-
-

section 29 level 6 item 0

-

section 29 level 6 item 1

-

section 29 level 6 item 2

-

section 29 level 6 item 3

-
-

section 29 level 7 item 0

-

section 29 level 7 item 1

-

section 29 level 7 item 2

-

section 29 level 7 item 3

-
-

section 29 level 8 item 0

-

section 29 level 8 item 1

-

section 29 level 8 item 2

-

section 29 level 8 item 3

-
-

section 29 level 9 item 0

-

section 29 level 9 item 1

-

section 29 level 9 item 2

-

section 29 level 9 item 3

-
-

section 29 level 10 item 0

-

section 29 level 10 item 1

-

section 29 level 10 item 2

-

section 29 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 30 level 1 item 0

-

section 30 level 1 item 1

-

section 30 level 1 item 2

-

section 30 level 1 item 3

-
-

section 30 level 2 item 0

-

section 30 level 2 item 1

-

section 30 level 2 item 2

-

section 30 level 2 item 3

-
-

section 30 level 3 item 0

-

section 30 level 3 item 1

-

section 30 level 3 item 2

-

section 30 level 3 item 3

-
-

section 30 level 4 item 0

-

section 30 level 4 item 1

-

section 30 level 4 item 2

-

section 30 level 4 item 3

-
-

section 30 level 5 item 0

-

section 30 level 5 item 1

-

section 30 level 5 item 2

-

section 30 level 5 item 3

-
-

section 30 level 6 item 0

-

section 30 level 6 item 1

-

section 30 level 6 item 2

-

section 30 level 6 item 3

-
-

section 30 level 7 item 0

-

section 30 level 7 item 1

-

section 30 level 7 item 2

-

section 30 level 7 item 3

-
-

section 30 level 8 item 0

-

section 30 level 8 item 1

-

section 30 level 8 item 2

-

section 30 level 8 item 3

-
-

section 30 level 9 item 0

-

section 30 level 9 item 1

-

section 30 level 9 item 2

-

section 30 level 9 item 3

-
-

section 30 level 10 item 0

-

section 30 level 10 item 1

-

section 30 level 10 item 2

-

section 30 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 31 level 1 item 0

-

section 31 level 1 item 1

-

section 31 level 1 item 2

-

section 31 level 1 item 3

-
-

section 31 level 2 item 0

-

section 31 level 2 item 1

-

section 31 level 2 item 2

-

section 31 level 2 item 3

-
-

section 31 level 3 item 0

-

section 31 level 3 item 1

-

section 31 level 3 item 2

-

section 31 level 3 item 3

-
-

section 31 level 4 item 0

-

section 31 level 4 item 1

-

section 31 level 4 item 2

-

section 31 level 4 item 3

-
-

section 31 level 5 item 0

-

section 31 level 5 item 1

-

section 31 level 5 item 2

-

section 31 level 5 item 3

-
-

section 31 level 6 item 0

-

section 31 level 6 item 1

-

section 31 level 6 item 2

-

section 31 level 6 item 3

-
-

section 31 level 7 item 0

-

section 31 level 7 item 1

-

section 31 level 7 item 2

-

section 31 level 7 item 3

-
-

section 31 level 8 item 0

-

section 31 level 8 item 1

-

section 31 level 8 item 2

-

section 31 level 8 item 3

-
-

section 31 level 9 item 0

-

section 31 level 9 item 1

-

section 31 level 9 item 2

-

section 31 level 9 item 3

-
-

section 31 level 10 item 0

-

section 31 level 10 item 1

-

section 31 level 10 item 2

-

section 31 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 32 level 1 item 0

-

section 32 level 1 item 1

-

section 32 level 1 item 2

-

section 32 level 1 item 3

-
-

section 32 level 2 item 0

-

section 32 level 2 item 1

-

section 32 level 2 item 2

-

section 32 level 2 item 3

-
-

section 32 level 3 item 0

-

section 32 level 3 item 1

-

section 32 level 3 item 2

-

section 32 level 3 item 3

-
-

section 32 level 4 item 0

-

section 32 level 4 item 1

-

section 32 level 4 item 2

-

section 32 level 4 item 3

-
-

section 32 level 5 item 0

-

section 32 level 5 item 1

-

section 32 level 5 item 2

-

section 32 level 5 item 3

-
-

section 32 level 6 item 0

-

section 32 level 6 item 1

-

section 32 level 6 item 2

-

section 32 level 6 item 3

-
-

section 32 level 7 item 0

-

section 32 level 7 item 1

-

section 32 level 7 item 2

-

section 32 level 7 item 3

-
-

section 32 level 8 item 0

-

section 32 level 8 item 1

-

section 32 level 8 item 2

-

section 32 level 8 item 3

-
-

section 32 level 9 item 0

-

section 32 level 9 item 1

-

section 32 level 9 item 2

-

section 32 level 9 item 3

-
-

section 32 level 10 item 0

-

section 32 level 10 item 1

-

section 32 level 10 item 2

-

section 32 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 33 level 1 item 0

-

section 33 level 1 item 1

-

section 33 level 1 item 2

-

section 33 level 1 item 3

-
-

section 33 level 2 item 0

-

section 33 level 2 item 1

-

section 33 level 2 item 2

-

section 33 level 2 item 3

-
-

section 33 level 3 item 0

-

section 33 level 3 item 1

-

section 33 level 3 item 2

-

section 33 level 3 item 3

-
-

section 33 level 4 item 0

-

section 33 level 4 item 1

-

section 33 level 4 item 2

-

section 33 level 4 item 3

-
-

section 33 level 5 item 0

-

section 33 level 5 item 1

-

section 33 level 5 item 2

-

section 33 level 5 item 3

-
-

section 33 level 6 item 0

-

section 33 level 6 item 1

-

section 33 level 6 item 2

-

section 33 level 6 item 3

-
-

section 33 level 7 item 0

-

section 33 level 7 item 1

-

section 33 level 7 item 2

-

section 33 level 7 item 3

-
-

section 33 level 8 item 0

-

section 33 level 8 item 1

-

section 33 level 8 item 2

-

section 33 level 8 item 3

-
-

section 33 level 9 item 0

-

section 33 level 9 item 1

-

section 33 level 9 item 2

-

section 33 level 9 item 3

-
-

section 33 level 10 item 0

-

section 33 level 10 item 1

-

section 33 level 10 item 2

-

section 33 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 34 level 1 item 0

-

section 34 level 1 item 1

-

section 34 level 1 item 2

-

section 34 level 1 item 3

-
-

section 34 level 2 item 0

-

section 34 level 2 item 1

-

section 34 level 2 item 2

-

section 34 level 2 item 3

-
-

section 34 level 3 item 0

-

section 34 level 3 item 1

-

section 34 level 3 item 2

-

section 34 level 3 item 3

-
-

section 34 level 4 item 0

-

section 34 level 4 item 1

-

section 34 level 4 item 2

-

section 34 level 4 item 3

-
-

section 34 level 5 item 0

-

section 34 level 5 item 1

-

section 34 level 5 item 2

-

section 34 level 5 item 3

-
-

section 34 level 6 item 0

-

section 34 level 6 item 1

-

section 34 level 6 item 2

-

section 34 level 6 item 3

-
-

section 34 level 7 item 0

-

section 34 level 7 item 1

-

section 34 level 7 item 2

-

section 34 level 7 item 3

-
-

section 34 level 8 item 0

-

section 34 level 8 item 1

-

section 34 level 8 item 2

-

section 34 level 8 item 3

-
-

section 34 level 9 item 0

-

section 34 level 9 item 1

-

section 34 level 9 item 2

-

section 34 level 9 item 3

-
-

section 34 level 10 item 0

-

section 34 level 10 item 1

-

section 34 level 10 item 2

-

section 34 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 35 level 1 item 0

-

section 35 level 1 item 1

-

section 35 level 1 item 2

-

section 35 level 1 item 3

-
-

section 35 level 2 item 0

-

section 35 level 2 item 1

-

section 35 level 2 item 2

-

section 35 level 2 item 3

-
-

section 35 level 3 item 0

-

section 35 level 3 item 1

-

section 35 level 3 item 2

-

section 35 level 3 item 3

-
-

section 35 level 4 item 0

-

section 35 level 4 item 1

-

section 35 level 4 item 2

-

section 35 level 4 item 3

-
-

section 35 level 5 item 0

-

section 35 level 5 item 1

-

section 35 level 5 item 2

-

section 35 level 5 item 3

-
-

section 35 level 6 item 0

-

section 35 level 6 item 1

-

section 35 level 6 item 2

-

section 35 level 6 item 3

-
-

section 35 level 7 item 0

-

section 35 level 7 item 1

-

section 35 level 7 item 2

-

section 35 level 7 item 3

-
-

section 35 level 8 item 0

-

section 35 level 8 item 1

-

section 35 level 8 item 2

-

section 35 level 8 item 3

-
-

section 35 level 9 item 0

-

section 35 level 9 item 1

-

section 35 level 9 item 2

-

section 35 level 9 item 3

-
-

section 35 level 10 item 0

-

section 35 level 10 item 1

-

section 35 level 10 item 2

-

section 35 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 36 level 1 item 0

-

section 36 level 1 item 1

-

section 36 level 1 item 2

-

section 36 level 1 item 3

-
-

section 36 level 2 item 0

-

section 36 level 2 item 1

-

section 36 level 2 item 2

-

section 36 level 2 item 3

-
-

section 36 level 3 item 0

-

section 36 level 3 item 1

-

section 36 level 3 item 2

-

section 36 level 3 item 3

-
-

section 36 level 4 item 0

-

section 36 level 4 item 1

-

section 36 level 4 item 2

-

section 36 level 4 item 3

-
-

section 36 level 5 item 0

-

section 36 level 5 item 1

-

section 36 level 5 item 2

-

section 36 level 5 item 3

-
-

section 36 level 6 item 0

-

section 36 level 6 item 1

-

section 36 level 6 item 2

-

section 36 level 6 item 3

-
-

section 36 level 7 item 0

-

section 36 level 7 item 1

-

section 36 level 7 item 2

-

section 36 level 7 item 3

-
-

section 36 level 8 item 0

-

section 36 level 8 item 1

-

section 36 level 8 item 2

-

section 36 level 8 item 3

-
-

section 36 level 9 item 0

-

section 36 level 9 item 1

-

section 36 level 9 item 2

-

section 36 level 9 item 3

-
-

section 36 level 10 item 0

-

section 36 level 10 item 1

-

section 36 level 10 item 2

-

section 36 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 37 level 1 item 0

-

section 37 level 1 item 1

-

section 37 level 1 item 2

-

section 37 level 1 item 3

-
-

section 37 level 2 item 0

-

section 37 level 2 item 1

-

section 37 level 2 item 2

-

section 37 level 2 item 3

-
-

section 37 level 3 item 0

-

section 37 level 3 item 1

-

section 37 level 3 item 2

-

section 37 level 3 item 3

-
-

section 37 level 4 item 0

-

section 37 level 4 item 1

-

section 37 level 4 item 2

-

section 37 level 4 item 3

-
-

section 37 level 5 item 0

-

section 37 level 5 item 1

-

section 37 level 5 item 2

-

section 37 level 5 item 3

-
-

section 37 level 6 item 0

-

section 37 level 6 item 1

-

section 37 level 6 item 2

-

section 37 level 6 item 3

-
-

section 37 level 7 item 0

-

section 37 level 7 item 1

-

section 37 level 7 item 2

-

section 37 level 7 item 3

-
-

section 37 level 8 item 0

-

section 37 level 8 item 1

-

section 37 level 8 item 2

-

section 37 level 8 item 3

-
-

section 37 level 9 item 0

-

section 37 level 9 item 1

-

section 37 level 9 item 2

-

section 37 level 9 item 3

-
-

section 37 level 10 item 0

-

section 37 level 10 item 1

-

section 37 level 10 item 2

-

section 37 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 38 level 1 item 0

-

section 38 level 1 item 1

-

section 38 level 1 item 2

-

section 38 level 1 item 3

-
-

section 38 level 2 item 0

-

section 38 level 2 item 1

-

section 38 level 2 item 2

-

section 38 level 2 item 3

-
-

section 38 level 3 item 0

-

section 38 level 3 item 1

-

section 38 level 3 item 2

-

section 38 level 3 item 3

-
-

section 38 level 4 item 0

-

section 38 level 4 item 1

-

section 38 level 4 item 2

-

section 38 level 4 item 3

-
-

section 38 level 5 item 0

-

section 38 level 5 item 1

-

section 38 level 5 item 2

-

section 38 level 5 item 3

-
-

section 38 level 6 item 0

-

section 38 level 6 item 1

-

section 38 level 6 item 2

-

section 38 level 6 item 3

-
-

section 38 level 7 item 0

-

section 38 level 7 item 1

-

section 38 level 7 item 2

-

section 38 level 7 item 3

-
-

section 38 level 8 item 0

-

section 38 level 8 item 1

-

section 38 level 8 item 2

-

section 38 level 8 item 3

-
-

section 38 level 9 item 0

-

section 38 level 9 item 1

-

section 38 level 9 item 2

-

section 38 level 9 item 3

-
-

section 38 level 10 item 0

-

section 38 level 10 item 1

-

section 38 level 10 item 2

-

section 38 level 10 item 3

- changed -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 39 level 1 item 0

-

section 39 level 1 item 1

-

section 39 level 1 item 2

-

section 39 level 1 item 3

-
-

section 39 level 2 item 0

-

section 39 level 2 item 1

-

section 39 level 2 item 2

-

section 39 level 2 item 3

-
-

section 39 level 3 item 0

-

section 39 level 3 item 1

-

section 39 level 3 item 2

-

section 39 level 3 item 3

-
-

section 39 level 4 item 0

-

section 39 level 4 item 1

-

section 39 level 4 item 2

-

section 39 level 4 item 3

-
-

section 39 level 5 item 0

-

section 39 level 5 item 1

-

section 39 level 5 item 2

-

section 39 level 5 item 3

-
-

section 39 level 6 item 0

-

section 39 level 6 item 1

-

section 39 level 6 item 2

-

section 39 level 6 item 3

-
-

section 39 level 7 item 0

-

section 39 level 7 item 1

-

section 39 level 7 item 2

-

section 39 level 7 item 3

-
-

section 39 level 8 item 0

-

section 39 level 8 item 1

-

section 39 level 8 item 2

-

section 39 level 8 item 3

-
-

section 39 level 9 item 0

-

section 39 level 9 item 1

-

section 39 level 9 item 2

-

section 39 level 9 item 3

-
-

section 39 level 10 item 0

-

section 39 level 10 item 1

-

section 39 level 10 item 2

-

section 39 level 10 item 3

+

s19d10i0

+

s19d10i1

changed
diff --git a/perf/benchmarks/deep-last-leaf.old.html b/perf/benchmarks/deep-last-leaf.old.html index d9bea0c..b4abe8c 100644 --- a/perf/benchmarks/deep-last-leaf.old.html +++ b/perf/benchmarks/deep-last-leaf.old.html @@ -1,55 +1,35 @@
-

section 0 level 1 item 0

-

section 0 level 1 item 1

-

section 0 level 1 item 2

-

section 0 level 1 item 3

+

s0d1i0

+

s0d1i1

-

section 0 level 2 item 0

-

section 0 level 2 item 1

-

section 0 level 2 item 2

-

section 0 level 2 item 3

+

s0d2i0

+

s0d2i1

-

section 0 level 3 item 0

-

section 0 level 3 item 1

-

section 0 level 3 item 2

-

section 0 level 3 item 3

+

s0d3i0

+

s0d3i1

-

section 0 level 4 item 0

-

section 0 level 4 item 1

-

section 0 level 4 item 2

-

section 0 level 4 item 3

+

s0d4i0

+

s0d4i1

-

section 0 level 5 item 0

-

section 0 level 5 item 1

-

section 0 level 5 item 2

-

section 0 level 5 item 3

+

s0d5i0

+

s0d5i1

-

section 0 level 6 item 0

-

section 0 level 6 item 1

-

section 0 level 6 item 2

-

section 0 level 6 item 3

+

s0d6i0

+

s0d6i1

-

section 0 level 7 item 0

-

section 0 level 7 item 1

-

section 0 level 7 item 2

-

section 0 level 7 item 3

+

s0d7i0

+

s0d7i1

-

section 0 level 8 item 0

-

section 0 level 8 item 1

-

section 0 level 8 item 2

-

section 0 level 8 item 3

+

s0d8i0

+

s0d8i1

-

section 0 level 9 item 0

-

section 0 level 9 item 1

-

section 0 level 9 item 2

-

section 0 level 9 item 3

+

s0d9i0

+

s0d9i1

-

section 0 level 10 item 0

-

section 0 level 10 item 1

-

section 0 level 10 item 2

-

section 0 level 10 item 3

+

s0d10i0

+

s0d10i1

original
@@ -64,55 +44,35 @@
-

section 1 level 1 item 0

-

section 1 level 1 item 1

-

section 1 level 1 item 2

-

section 1 level 1 item 3

+

s1d1i0

+

s1d1i1

-

section 1 level 2 item 0

-

section 1 level 2 item 1

-

section 1 level 2 item 2

-

section 1 level 2 item 3

+

s1d2i0

+

s1d2i1

-

section 1 level 3 item 0

-

section 1 level 3 item 1

-

section 1 level 3 item 2

-

section 1 level 3 item 3

+

s1d3i0

+

s1d3i1

-

section 1 level 4 item 0

-

section 1 level 4 item 1

-

section 1 level 4 item 2

-

section 1 level 4 item 3

+

s1d4i0

+

s1d4i1

-

section 1 level 5 item 0

-

section 1 level 5 item 1

-

section 1 level 5 item 2

-

section 1 level 5 item 3

+

s1d5i0

+

s1d5i1

-

section 1 level 6 item 0

-

section 1 level 6 item 1

-

section 1 level 6 item 2

-

section 1 level 6 item 3

+

s1d6i0

+

s1d6i1

-

section 1 level 7 item 0

-

section 1 level 7 item 1

-

section 1 level 7 item 2

-

section 1 level 7 item 3

+

s1d7i0

+

s1d7i1

-

section 1 level 8 item 0

-

section 1 level 8 item 1

-

section 1 level 8 item 2

-

section 1 level 8 item 3

+

s1d8i0

+

s1d8i1

-

section 1 level 9 item 0

-

section 1 level 9 item 1

-

section 1 level 9 item 2

-

section 1 level 9 item 3

+

s1d9i0

+

s1d9i1

-

section 1 level 10 item 0

-

section 1 level 10 item 1

-

section 1 level 10 item 2

-

section 1 level 10 item 3

+

s1d10i0

+

s1d10i1

original
@@ -127,55 +87,35 @@
-

section 2 level 1 item 0

-

section 2 level 1 item 1

-

section 2 level 1 item 2

-

section 2 level 1 item 3

+

s2d1i0

+

s2d1i1

-

section 2 level 2 item 0

-

section 2 level 2 item 1

-

section 2 level 2 item 2

-

section 2 level 2 item 3

+

s2d2i0

+

s2d2i1

-

section 2 level 3 item 0

-

section 2 level 3 item 1

-

section 2 level 3 item 2

-

section 2 level 3 item 3

+

s2d3i0

+

s2d3i1

-

section 2 level 4 item 0

-

section 2 level 4 item 1

-

section 2 level 4 item 2

-

section 2 level 4 item 3

+

s2d4i0

+

s2d4i1

-

section 2 level 5 item 0

-

section 2 level 5 item 1

-

section 2 level 5 item 2

-

section 2 level 5 item 3

+

s2d5i0

+

s2d5i1

-

section 2 level 6 item 0

-

section 2 level 6 item 1

-

section 2 level 6 item 2

-

section 2 level 6 item 3

+

s2d6i0

+

s2d6i1

-

section 2 level 7 item 0

-

section 2 level 7 item 1

-

section 2 level 7 item 2

-

section 2 level 7 item 3

+

s2d7i0

+

s2d7i1

-

section 2 level 8 item 0

-

section 2 level 8 item 1

-

section 2 level 8 item 2

-

section 2 level 8 item 3

+

s2d8i0

+

s2d8i1

-

section 2 level 9 item 0

-

section 2 level 9 item 1

-

section 2 level 9 item 2

-

section 2 level 9 item 3

+

s2d9i0

+

s2d9i1

-

section 2 level 10 item 0

-

section 2 level 10 item 1

-

section 2 level 10 item 2

-

section 2 level 10 item 3

+

s2d10i0

+

s2d10i1

original
@@ -190,55 +130,35 @@
-

section 3 level 1 item 0

-

section 3 level 1 item 1

-

section 3 level 1 item 2

-

section 3 level 1 item 3

+

s3d1i0

+

s3d1i1

-

section 3 level 2 item 0

-

section 3 level 2 item 1

-

section 3 level 2 item 2

-

section 3 level 2 item 3

+

s3d2i0

+

s3d2i1

-

section 3 level 3 item 0

-

section 3 level 3 item 1

-

section 3 level 3 item 2

-

section 3 level 3 item 3

+

s3d3i0

+

s3d3i1

-

section 3 level 4 item 0

-

section 3 level 4 item 1

-

section 3 level 4 item 2

-

section 3 level 4 item 3

+

s3d4i0

+

s3d4i1

-

section 3 level 5 item 0

-

section 3 level 5 item 1

-

section 3 level 5 item 2

-

section 3 level 5 item 3

+

s3d5i0

+

s3d5i1

-

section 3 level 6 item 0

-

section 3 level 6 item 1

-

section 3 level 6 item 2

-

section 3 level 6 item 3

+

s3d6i0

+

s3d6i1

-

section 3 level 7 item 0

-

section 3 level 7 item 1

-

section 3 level 7 item 2

-

section 3 level 7 item 3

+

s3d7i0

+

s3d7i1

-

section 3 level 8 item 0

-

section 3 level 8 item 1

-

section 3 level 8 item 2

-

section 3 level 8 item 3

+

s3d8i0

+

s3d8i1

-

section 3 level 9 item 0

-

section 3 level 9 item 1

-

section 3 level 9 item 2

-

section 3 level 9 item 3

+

s3d9i0

+

s3d9i1

-

section 3 level 10 item 0

-

section 3 level 10 item 1

-

section 3 level 10 item 2

-

section 3 level 10 item 3

+

s3d10i0

+

s3d10i1

original
@@ -253,55 +173,35 @@
-

section 4 level 1 item 0

-

section 4 level 1 item 1

-

section 4 level 1 item 2

-

section 4 level 1 item 3

+

s4d1i0

+

s4d1i1

-

section 4 level 2 item 0

-

section 4 level 2 item 1

-

section 4 level 2 item 2

-

section 4 level 2 item 3

+

s4d2i0

+

s4d2i1

-

section 4 level 3 item 0

-

section 4 level 3 item 1

-

section 4 level 3 item 2

-

section 4 level 3 item 3

+

s4d3i0

+

s4d3i1

-

section 4 level 4 item 0

-

section 4 level 4 item 1

-

section 4 level 4 item 2

-

section 4 level 4 item 3

+

s4d4i0

+

s4d4i1

-

section 4 level 5 item 0

-

section 4 level 5 item 1

-

section 4 level 5 item 2

-

section 4 level 5 item 3

+

s4d5i0

+

s4d5i1

-

section 4 level 6 item 0

-

section 4 level 6 item 1

-

section 4 level 6 item 2

-

section 4 level 6 item 3

+

s4d6i0

+

s4d6i1

-

section 4 level 7 item 0

-

section 4 level 7 item 1

-

section 4 level 7 item 2

-

section 4 level 7 item 3

+

s4d7i0

+

s4d7i1

-

section 4 level 8 item 0

-

section 4 level 8 item 1

-

section 4 level 8 item 2

-

section 4 level 8 item 3

+

s4d8i0

+

s4d8i1

-

section 4 level 9 item 0

-

section 4 level 9 item 1

-

section 4 level 9 item 2

-

section 4 level 9 item 3

+

s4d9i0

+

s4d9i1

-

section 4 level 10 item 0

-

section 4 level 10 item 1

-

section 4 level 10 item 2

-

section 4 level 10 item 3

+

s4d10i0

+

s4d10i1

original
@@ -316,55 +216,35 @@
-

section 5 level 1 item 0

-

section 5 level 1 item 1

-

section 5 level 1 item 2

-

section 5 level 1 item 3

+

s5d1i0

+

s5d1i1

-

section 5 level 2 item 0

-

section 5 level 2 item 1

-

section 5 level 2 item 2

-

section 5 level 2 item 3

+

s5d2i0

+

s5d2i1

-

section 5 level 3 item 0

-

section 5 level 3 item 1

-

section 5 level 3 item 2

-

section 5 level 3 item 3

+

s5d3i0

+

s5d3i1

-

section 5 level 4 item 0

-

section 5 level 4 item 1

-

section 5 level 4 item 2

-

section 5 level 4 item 3

+

s5d4i0

+

s5d4i1

-

section 5 level 5 item 0

-

section 5 level 5 item 1

-

section 5 level 5 item 2

-

section 5 level 5 item 3

+

s5d5i0

+

s5d5i1

-

section 5 level 6 item 0

-

section 5 level 6 item 1

-

section 5 level 6 item 2

-

section 5 level 6 item 3

+

s5d6i0

+

s5d6i1

-

section 5 level 7 item 0

-

section 5 level 7 item 1

-

section 5 level 7 item 2

-

section 5 level 7 item 3

+

s5d7i0

+

s5d7i1

-

section 5 level 8 item 0

-

section 5 level 8 item 1

-

section 5 level 8 item 2

-

section 5 level 8 item 3

+

s5d8i0

+

s5d8i1

-

section 5 level 9 item 0

-

section 5 level 9 item 1

-

section 5 level 9 item 2

-

section 5 level 9 item 3

+

s5d9i0

+

s5d9i1

-

section 5 level 10 item 0

-

section 5 level 10 item 1

-

section 5 level 10 item 2

-

section 5 level 10 item 3

+

s5d10i0

+

s5d10i1

original
@@ -379,55 +259,35 @@
-

section 6 level 1 item 0

-

section 6 level 1 item 1

-

section 6 level 1 item 2

-

section 6 level 1 item 3

+

s6d1i0

+

s6d1i1

-

section 6 level 2 item 0

-

section 6 level 2 item 1

-

section 6 level 2 item 2

-

section 6 level 2 item 3

+

s6d2i0

+

s6d2i1

-

section 6 level 3 item 0

-

section 6 level 3 item 1

-

section 6 level 3 item 2

-

section 6 level 3 item 3

+

s6d3i0

+

s6d3i1

-

section 6 level 4 item 0

-

section 6 level 4 item 1

-

section 6 level 4 item 2

-

section 6 level 4 item 3

+

s6d4i0

+

s6d4i1

-

section 6 level 5 item 0

-

section 6 level 5 item 1

-

section 6 level 5 item 2

-

section 6 level 5 item 3

+

s6d5i0

+

s6d5i1

-

section 6 level 6 item 0

-

section 6 level 6 item 1

-

section 6 level 6 item 2

-

section 6 level 6 item 3

+

s6d6i0

+

s6d6i1

-

section 6 level 7 item 0

-

section 6 level 7 item 1

-

section 6 level 7 item 2

-

section 6 level 7 item 3

+

s6d7i0

+

s6d7i1

-

section 6 level 8 item 0

-

section 6 level 8 item 1

-

section 6 level 8 item 2

-

section 6 level 8 item 3

+

s6d8i0

+

s6d8i1

-

section 6 level 9 item 0

-

section 6 level 9 item 1

-

section 6 level 9 item 2

-

section 6 level 9 item 3

+

s6d9i0

+

s6d9i1

-

section 6 level 10 item 0

-

section 6 level 10 item 1

-

section 6 level 10 item 2

-

section 6 level 10 item 3

+

s6d10i0

+

s6d10i1

original
@@ -442,55 +302,35 @@
-

section 7 level 1 item 0

-

section 7 level 1 item 1

-

section 7 level 1 item 2

-

section 7 level 1 item 3

+

s7d1i0

+

s7d1i1

-

section 7 level 2 item 0

-

section 7 level 2 item 1

-

section 7 level 2 item 2

-

section 7 level 2 item 3

+

s7d2i0

+

s7d2i1

-

section 7 level 3 item 0

-

section 7 level 3 item 1

-

section 7 level 3 item 2

-

section 7 level 3 item 3

+

s7d3i0

+

s7d3i1

-

section 7 level 4 item 0

-

section 7 level 4 item 1

-

section 7 level 4 item 2

-

section 7 level 4 item 3

+

s7d4i0

+

s7d4i1

-

section 7 level 5 item 0

-

section 7 level 5 item 1

-

section 7 level 5 item 2

-

section 7 level 5 item 3

+

s7d5i0

+

s7d5i1

-

section 7 level 6 item 0

-

section 7 level 6 item 1

-

section 7 level 6 item 2

-

section 7 level 6 item 3

+

s7d6i0

+

s7d6i1

-

section 7 level 7 item 0

-

section 7 level 7 item 1

-

section 7 level 7 item 2

-

section 7 level 7 item 3

+

s7d7i0

+

s7d7i1

-

section 7 level 8 item 0

-

section 7 level 8 item 1

-

section 7 level 8 item 2

-

section 7 level 8 item 3

+

s7d8i0

+

s7d8i1

-

section 7 level 9 item 0

-

section 7 level 9 item 1

-

section 7 level 9 item 2

-

section 7 level 9 item 3

+

s7d9i0

+

s7d9i1

-

section 7 level 10 item 0

-

section 7 level 10 item 1

-

section 7 level 10 item 2

-

section 7 level 10 item 3

+

s7d10i0

+

s7d10i1

original
@@ -505,55 +345,35 @@
-

section 8 level 1 item 0

-

section 8 level 1 item 1

-

section 8 level 1 item 2

-

section 8 level 1 item 3

+

s8d1i0

+

s8d1i1

-

section 8 level 2 item 0

-

section 8 level 2 item 1

-

section 8 level 2 item 2

-

section 8 level 2 item 3

+

s8d2i0

+

s8d2i1

-

section 8 level 3 item 0

-

section 8 level 3 item 1

-

section 8 level 3 item 2

-

section 8 level 3 item 3

+

s8d3i0

+

s8d3i1

-

section 8 level 4 item 0

-

section 8 level 4 item 1

-

section 8 level 4 item 2

-

section 8 level 4 item 3

+

s8d4i0

+

s8d4i1

-

section 8 level 5 item 0

-

section 8 level 5 item 1

-

section 8 level 5 item 2

-

section 8 level 5 item 3

+

s8d5i0

+

s8d5i1

-

section 8 level 6 item 0

-

section 8 level 6 item 1

-

section 8 level 6 item 2

-

section 8 level 6 item 3

+

s8d6i0

+

s8d6i1

-

section 8 level 7 item 0

-

section 8 level 7 item 1

-

section 8 level 7 item 2

-

section 8 level 7 item 3

+

s8d7i0

+

s8d7i1

-

section 8 level 8 item 0

-

section 8 level 8 item 1

-

section 8 level 8 item 2

-

section 8 level 8 item 3

+

s8d8i0

+

s8d8i1

-

section 8 level 9 item 0

-

section 8 level 9 item 1

-

section 8 level 9 item 2

-

section 8 level 9 item 3

+

s8d9i0

+

s8d9i1

-

section 8 level 10 item 0

-

section 8 level 10 item 1

-

section 8 level 10 item 2

-

section 8 level 10 item 3

+

s8d10i0

+

s8d10i1

original
@@ -568,55 +388,35 @@
-

section 9 level 1 item 0

-

section 9 level 1 item 1

-

section 9 level 1 item 2

-

section 9 level 1 item 3

+

s9d1i0

+

s9d1i1

-

section 9 level 2 item 0

-

section 9 level 2 item 1

-

section 9 level 2 item 2

-

section 9 level 2 item 3

+

s9d2i0

+

s9d2i1

-

section 9 level 3 item 0

-

section 9 level 3 item 1

-

section 9 level 3 item 2

-

section 9 level 3 item 3

+

s9d3i0

+

s9d3i1

-

section 9 level 4 item 0

-

section 9 level 4 item 1

-

section 9 level 4 item 2

-

section 9 level 4 item 3

+

s9d4i0

+

s9d4i1

-

section 9 level 5 item 0

-

section 9 level 5 item 1

-

section 9 level 5 item 2

-

section 9 level 5 item 3

+

s9d5i0

+

s9d5i1

-

section 9 level 6 item 0

-

section 9 level 6 item 1

-

section 9 level 6 item 2

-

section 9 level 6 item 3

+

s9d6i0

+

s9d6i1

-

section 9 level 7 item 0

-

section 9 level 7 item 1

-

section 9 level 7 item 2

-

section 9 level 7 item 3

+

s9d7i0

+

s9d7i1

-

section 9 level 8 item 0

-

section 9 level 8 item 1

-

section 9 level 8 item 2

-

section 9 level 8 item 3

+

s9d8i0

+

s9d8i1

-

section 9 level 9 item 0

-

section 9 level 9 item 1

-

section 9 level 9 item 2

-

section 9 level 9 item 3

+

s9d9i0

+

s9d9i1

-

section 9 level 10 item 0

-

section 9 level 10 item 1

-

section 9 level 10 item 2

-

section 9 level 10 item 3

+

s9d10i0

+

s9d10i1

original
@@ -631,55 +431,35 @@
-

section 10 level 1 item 0

-

section 10 level 1 item 1

-

section 10 level 1 item 2

-

section 10 level 1 item 3

+

s10d1i0

+

s10d1i1

-

section 10 level 2 item 0

-

section 10 level 2 item 1

-

section 10 level 2 item 2

-

section 10 level 2 item 3

+

s10d2i0

+

s10d2i1

-

section 10 level 3 item 0

-

section 10 level 3 item 1

-

section 10 level 3 item 2

-

section 10 level 3 item 3

+

s10d3i0

+

s10d3i1

-

section 10 level 4 item 0

-

section 10 level 4 item 1

-

section 10 level 4 item 2

-

section 10 level 4 item 3

+

s10d4i0

+

s10d4i1

-

section 10 level 5 item 0

-

section 10 level 5 item 1

-

section 10 level 5 item 2

-

section 10 level 5 item 3

+

s10d5i0

+

s10d5i1

-

section 10 level 6 item 0

-

section 10 level 6 item 1

-

section 10 level 6 item 2

-

section 10 level 6 item 3

+

s10d6i0

+

s10d6i1

-

section 10 level 7 item 0

-

section 10 level 7 item 1

-

section 10 level 7 item 2

-

section 10 level 7 item 3

+

s10d7i0

+

s10d7i1

-

section 10 level 8 item 0

-

section 10 level 8 item 1

-

section 10 level 8 item 2

-

section 10 level 8 item 3

+

s10d8i0

+

s10d8i1

-

section 10 level 9 item 0

-

section 10 level 9 item 1

-

section 10 level 9 item 2

-

section 10 level 9 item 3

+

s10d9i0

+

s10d9i1

-

section 10 level 10 item 0

-

section 10 level 10 item 1

-

section 10 level 10 item 2

-

section 10 level 10 item 3

+

s10d10i0

+

s10d10i1

original
@@ -694,55 +474,35 @@
-

section 11 level 1 item 0

-

section 11 level 1 item 1

-

section 11 level 1 item 2

-

section 11 level 1 item 3

+

s11d1i0

+

s11d1i1

-

section 11 level 2 item 0

-

section 11 level 2 item 1

-

section 11 level 2 item 2

-

section 11 level 2 item 3

+

s11d2i0

+

s11d2i1

-

section 11 level 3 item 0

-

section 11 level 3 item 1

-

section 11 level 3 item 2

-

section 11 level 3 item 3

+

s11d3i0

+

s11d3i1

-

section 11 level 4 item 0

-

section 11 level 4 item 1

-

section 11 level 4 item 2

-

section 11 level 4 item 3

+

s11d4i0

+

s11d4i1

-

section 11 level 5 item 0

-

section 11 level 5 item 1

-

section 11 level 5 item 2

-

section 11 level 5 item 3

+

s11d5i0

+

s11d5i1

-

section 11 level 6 item 0

-

section 11 level 6 item 1

-

section 11 level 6 item 2

-

section 11 level 6 item 3

+

s11d6i0

+

s11d6i1

-

section 11 level 7 item 0

-

section 11 level 7 item 1

-

section 11 level 7 item 2

-

section 11 level 7 item 3

+

s11d7i0

+

s11d7i1

-

section 11 level 8 item 0

-

section 11 level 8 item 1

-

section 11 level 8 item 2

-

section 11 level 8 item 3

+

s11d8i0

+

s11d8i1

-

section 11 level 9 item 0

-

section 11 level 9 item 1

-

section 11 level 9 item 2

-

section 11 level 9 item 3

+

s11d9i0

+

s11d9i1

-

section 11 level 10 item 0

-

section 11 level 10 item 1

-

section 11 level 10 item 2

-

section 11 level 10 item 3

+

s11d10i0

+

s11d10i1

original
@@ -757,55 +517,35 @@
-

section 12 level 1 item 0

-

section 12 level 1 item 1

-

section 12 level 1 item 2

-

section 12 level 1 item 3

+

s12d1i0

+

s12d1i1

-

section 12 level 2 item 0

-

section 12 level 2 item 1

-

section 12 level 2 item 2

-

section 12 level 2 item 3

+

s12d2i0

+

s12d2i1

-

section 12 level 3 item 0

-

section 12 level 3 item 1

-

section 12 level 3 item 2

-

section 12 level 3 item 3

+

s12d3i0

+

s12d3i1

-

section 12 level 4 item 0

-

section 12 level 4 item 1

-

section 12 level 4 item 2

-

section 12 level 4 item 3

+

s12d4i0

+

s12d4i1

-

section 12 level 5 item 0

-

section 12 level 5 item 1

-

section 12 level 5 item 2

-

section 12 level 5 item 3

+

s12d5i0

+

s12d5i1

-

section 12 level 6 item 0

-

section 12 level 6 item 1

-

section 12 level 6 item 2

-

section 12 level 6 item 3

+

s12d6i0

+

s12d6i1

-

section 12 level 7 item 0

-

section 12 level 7 item 1

-

section 12 level 7 item 2

-

section 12 level 7 item 3

+

s12d7i0

+

s12d7i1

-

section 12 level 8 item 0

-

section 12 level 8 item 1

-

section 12 level 8 item 2

-

section 12 level 8 item 3

+

s12d8i0

+

s12d8i1

-

section 12 level 9 item 0

-

section 12 level 9 item 1

-

section 12 level 9 item 2

-

section 12 level 9 item 3

+

s12d9i0

+

s12d9i1

-

section 12 level 10 item 0

-

section 12 level 10 item 1

-

section 12 level 10 item 2

-

section 12 level 10 item 3

+

s12d10i0

+

s12d10i1

original
@@ -820,55 +560,35 @@
-

section 13 level 1 item 0

-

section 13 level 1 item 1

-

section 13 level 1 item 2

-

section 13 level 1 item 3

+

s13d1i0

+

s13d1i1

-

section 13 level 2 item 0

-

section 13 level 2 item 1

-

section 13 level 2 item 2

-

section 13 level 2 item 3

+

s13d2i0

+

s13d2i1

-

section 13 level 3 item 0

-

section 13 level 3 item 1

-

section 13 level 3 item 2

-

section 13 level 3 item 3

+

s13d3i0

+

s13d3i1

-

section 13 level 4 item 0

-

section 13 level 4 item 1

-

section 13 level 4 item 2

-

section 13 level 4 item 3

+

s13d4i0

+

s13d4i1

-

section 13 level 5 item 0

-

section 13 level 5 item 1

-

section 13 level 5 item 2

-

section 13 level 5 item 3

+

s13d5i0

+

s13d5i1

-

section 13 level 6 item 0

-

section 13 level 6 item 1

-

section 13 level 6 item 2

-

section 13 level 6 item 3

+

s13d6i0

+

s13d6i1

-

section 13 level 7 item 0

-

section 13 level 7 item 1

-

section 13 level 7 item 2

-

section 13 level 7 item 3

+

s13d7i0

+

s13d7i1

-

section 13 level 8 item 0

-

section 13 level 8 item 1

-

section 13 level 8 item 2

-

section 13 level 8 item 3

+

s13d8i0

+

s13d8i1

-

section 13 level 9 item 0

-

section 13 level 9 item 1

-

section 13 level 9 item 2

-

section 13 level 9 item 3

+

s13d9i0

+

s13d9i1

-

section 13 level 10 item 0

-

section 13 level 10 item 1

-

section 13 level 10 item 2

-

section 13 level 10 item 3

+

s13d10i0

+

s13d10i1

original
@@ -883,55 +603,35 @@
-

section 14 level 1 item 0

-

section 14 level 1 item 1

-

section 14 level 1 item 2

-

section 14 level 1 item 3

+

s14d1i0

+

s14d1i1

-

section 14 level 2 item 0

-

section 14 level 2 item 1

-

section 14 level 2 item 2

-

section 14 level 2 item 3

+

s14d2i0

+

s14d2i1

-

section 14 level 3 item 0

-

section 14 level 3 item 1

-

section 14 level 3 item 2

-

section 14 level 3 item 3

+

s14d3i0

+

s14d3i1

-

section 14 level 4 item 0

-

section 14 level 4 item 1

-

section 14 level 4 item 2

-

section 14 level 4 item 3

+

s14d4i0

+

s14d4i1

-

section 14 level 5 item 0

-

section 14 level 5 item 1

-

section 14 level 5 item 2

-

section 14 level 5 item 3

+

s14d5i0

+

s14d5i1

-

section 14 level 6 item 0

-

section 14 level 6 item 1

-

section 14 level 6 item 2

-

section 14 level 6 item 3

+

s14d6i0

+

s14d6i1

-

section 14 level 7 item 0

-

section 14 level 7 item 1

-

section 14 level 7 item 2

-

section 14 level 7 item 3

+

s14d7i0

+

s14d7i1

-

section 14 level 8 item 0

-

section 14 level 8 item 1

-

section 14 level 8 item 2

-

section 14 level 8 item 3

+

s14d8i0

+

s14d8i1

-

section 14 level 9 item 0

-

section 14 level 9 item 1

-

section 14 level 9 item 2

-

section 14 level 9 item 3

+

s14d9i0

+

s14d9i1

-

section 14 level 10 item 0

-

section 14 level 10 item 1

-

section 14 level 10 item 2

-

section 14 level 10 item 3

+

s14d10i0

+

s14d10i1

original
@@ -946,55 +646,35 @@
-

section 15 level 1 item 0

-

section 15 level 1 item 1

-

section 15 level 1 item 2

-

section 15 level 1 item 3

+

s15d1i0

+

s15d1i1

-

section 15 level 2 item 0

-

section 15 level 2 item 1

-

section 15 level 2 item 2

-

section 15 level 2 item 3

+

s15d2i0

+

s15d2i1

-

section 15 level 3 item 0

-

section 15 level 3 item 1

-

section 15 level 3 item 2

-

section 15 level 3 item 3

+

s15d3i0

+

s15d3i1

-

section 15 level 4 item 0

-

section 15 level 4 item 1

-

section 15 level 4 item 2

-

section 15 level 4 item 3

+

s15d4i0

+

s15d4i1

-

section 15 level 5 item 0

-

section 15 level 5 item 1

-

section 15 level 5 item 2

-

section 15 level 5 item 3

+

s15d5i0

+

s15d5i1

-

section 15 level 6 item 0

-

section 15 level 6 item 1

-

section 15 level 6 item 2

-

section 15 level 6 item 3

+

s15d6i0

+

s15d6i1

-

section 15 level 7 item 0

-

section 15 level 7 item 1

-

section 15 level 7 item 2

-

section 15 level 7 item 3

+

s15d7i0

+

s15d7i1

-

section 15 level 8 item 0

-

section 15 level 8 item 1

-

section 15 level 8 item 2

-

section 15 level 8 item 3

+

s15d8i0

+

s15d8i1

-

section 15 level 9 item 0

-

section 15 level 9 item 1

-

section 15 level 9 item 2

-

section 15 level 9 item 3

+

s15d9i0

+

s15d9i1

-

section 15 level 10 item 0

-

section 15 level 10 item 1

-

section 15 level 10 item 2

-

section 15 level 10 item 3

+

s15d10i0

+

s15d10i1

original
@@ -1009,55 +689,35 @@
-

section 16 level 1 item 0

-

section 16 level 1 item 1

-

section 16 level 1 item 2

-

section 16 level 1 item 3

+

s16d1i0

+

s16d1i1

-

section 16 level 2 item 0

-

section 16 level 2 item 1

-

section 16 level 2 item 2

-

section 16 level 2 item 3

+

s16d2i0

+

s16d2i1

-

section 16 level 3 item 0

-

section 16 level 3 item 1

-

section 16 level 3 item 2

-

section 16 level 3 item 3

+

s16d3i0

+

s16d3i1

-

section 16 level 4 item 0

-

section 16 level 4 item 1

-

section 16 level 4 item 2

-

section 16 level 4 item 3

+

s16d4i0

+

s16d4i1

-

section 16 level 5 item 0

-

section 16 level 5 item 1

-

section 16 level 5 item 2

-

section 16 level 5 item 3

+

s16d5i0

+

s16d5i1

-

section 16 level 6 item 0

-

section 16 level 6 item 1

-

section 16 level 6 item 2

-

section 16 level 6 item 3

+

s16d6i0

+

s16d6i1

-

section 16 level 7 item 0

-

section 16 level 7 item 1

-

section 16 level 7 item 2

-

section 16 level 7 item 3

+

s16d7i0

+

s16d7i1

-

section 16 level 8 item 0

-

section 16 level 8 item 1

-

section 16 level 8 item 2

-

section 16 level 8 item 3

+

s16d8i0

+

s16d8i1

-

section 16 level 9 item 0

-

section 16 level 9 item 1

-

section 16 level 9 item 2

-

section 16 level 9 item 3

+

s16d9i0

+

s16d9i1

-

section 16 level 10 item 0

-

section 16 level 10 item 1

-

section 16 level 10 item 2

-

section 16 level 10 item 3

+

s16d10i0

+

s16d10i1

original
@@ -1072,55 +732,35 @@
-

section 17 level 1 item 0

-

section 17 level 1 item 1

-

section 17 level 1 item 2

-

section 17 level 1 item 3

+

s17d1i0

+

s17d1i1

-

section 17 level 2 item 0

-

section 17 level 2 item 1

-

section 17 level 2 item 2

-

section 17 level 2 item 3

+

s17d2i0

+

s17d2i1

-

section 17 level 3 item 0

-

section 17 level 3 item 1

-

section 17 level 3 item 2

-

section 17 level 3 item 3

+

s17d3i0

+

s17d3i1

-

section 17 level 4 item 0

-

section 17 level 4 item 1

-

section 17 level 4 item 2

-

section 17 level 4 item 3

+

s17d4i0

+

s17d4i1

-

section 17 level 5 item 0

-

section 17 level 5 item 1

-

section 17 level 5 item 2

-

section 17 level 5 item 3

+

s17d5i0

+

s17d5i1

-

section 17 level 6 item 0

-

section 17 level 6 item 1

-

section 17 level 6 item 2

-

section 17 level 6 item 3

+

s17d6i0

+

s17d6i1

-

section 17 level 7 item 0

-

section 17 level 7 item 1

-

section 17 level 7 item 2

-

section 17 level 7 item 3

+

s17d7i0

+

s17d7i1

-

section 17 level 8 item 0

-

section 17 level 8 item 1

-

section 17 level 8 item 2

-

section 17 level 8 item 3

+

s17d8i0

+

s17d8i1

-

section 17 level 9 item 0

-

section 17 level 9 item 1

-

section 17 level 9 item 2

-

section 17 level 9 item 3

+

s17d9i0

+

s17d9i1

-

section 17 level 10 item 0

-

section 17 level 10 item 1

-

section 17 level 10 item 2

-

section 17 level 10 item 3

+

s17d10i0

+

s17d10i1

original
@@ -1135,55 +775,35 @@
-

section 18 level 1 item 0

-

section 18 level 1 item 1

-

section 18 level 1 item 2

-

section 18 level 1 item 3

+

s18d1i0

+

s18d1i1

-

section 18 level 2 item 0

-

section 18 level 2 item 1

-

section 18 level 2 item 2

-

section 18 level 2 item 3

+

s18d2i0

+

s18d2i1

-

section 18 level 3 item 0

-

section 18 level 3 item 1

-

section 18 level 3 item 2

-

section 18 level 3 item 3

+

s18d3i0

+

s18d3i1

-

section 18 level 4 item 0

-

section 18 level 4 item 1

-

section 18 level 4 item 2

-

section 18 level 4 item 3

+

s18d4i0

+

s18d4i1

-

section 18 level 5 item 0

-

section 18 level 5 item 1

-

section 18 level 5 item 2

-

section 18 level 5 item 3

+

s18d5i0

+

s18d5i1

-

section 18 level 6 item 0

-

section 18 level 6 item 1

-

section 18 level 6 item 2

-

section 18 level 6 item 3

+

s18d6i0

+

s18d6i1

-

section 18 level 7 item 0

-

section 18 level 7 item 1

-

section 18 level 7 item 2

-

section 18 level 7 item 3

+

s18d7i0

+

s18d7i1

-

section 18 level 8 item 0

-

section 18 level 8 item 1

-

section 18 level 8 item 2

-

section 18 level 8 item 3

+

s18d8i0

+

s18d8i1

-

section 18 level 9 item 0

-

section 18 level 9 item 1

-

section 18 level 9 item 2

-

section 18 level 9 item 3

+

s18d9i0

+

s18d9i1

-

section 18 level 10 item 0

-

section 18 level 10 item 1

-

section 18 level 10 item 2

-

section 18 level 10 item 3

+

s18d10i0

+

s18d10i1

original
@@ -1198,1315 +818,35 @@
-

section 19 level 1 item 0

-

section 19 level 1 item 1

-

section 19 level 1 item 2

-

section 19 level 1 item 3

+

s19d1i0

+

s19d1i1

-

section 19 level 2 item 0

-

section 19 level 2 item 1

-

section 19 level 2 item 2

-

section 19 level 2 item 3

+

s19d2i0

+

s19d2i1

-

section 19 level 3 item 0

-

section 19 level 3 item 1

-

section 19 level 3 item 2

-

section 19 level 3 item 3

+

s19d3i0

+

s19d3i1

-

section 19 level 4 item 0

-

section 19 level 4 item 1

-

section 19 level 4 item 2

-

section 19 level 4 item 3

+

s19d4i0

+

s19d4i1

-

section 19 level 5 item 0

-

section 19 level 5 item 1

-

section 19 level 5 item 2

-

section 19 level 5 item 3

+

s19d5i0

+

s19d5i1

-

section 19 level 6 item 0

-

section 19 level 6 item 1

-

section 19 level 6 item 2

-

section 19 level 6 item 3

+

s19d6i0

+

s19d6i1

-

section 19 level 7 item 0

-

section 19 level 7 item 1

-

section 19 level 7 item 2

-

section 19 level 7 item 3

+

s19d7i0

+

s19d7i1

-

section 19 level 8 item 0

-

section 19 level 8 item 1

-

section 19 level 8 item 2

-

section 19 level 8 item 3

+

s19d8i0

+

s19d8i1

-

section 19 level 9 item 0

-

section 19 level 9 item 1

-

section 19 level 9 item 2

-

section 19 level 9 item 3

+

s19d9i0

+

s19d9i1

-

section 19 level 10 item 0

-

section 19 level 10 item 1

-

section 19 level 10 item 2

-

section 19 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 20 level 1 item 0

-

section 20 level 1 item 1

-

section 20 level 1 item 2

-

section 20 level 1 item 3

-
-

section 20 level 2 item 0

-

section 20 level 2 item 1

-

section 20 level 2 item 2

-

section 20 level 2 item 3

-
-

section 20 level 3 item 0

-

section 20 level 3 item 1

-

section 20 level 3 item 2

-

section 20 level 3 item 3

-
-

section 20 level 4 item 0

-

section 20 level 4 item 1

-

section 20 level 4 item 2

-

section 20 level 4 item 3

-
-

section 20 level 5 item 0

-

section 20 level 5 item 1

-

section 20 level 5 item 2

-

section 20 level 5 item 3

-
-

section 20 level 6 item 0

-

section 20 level 6 item 1

-

section 20 level 6 item 2

-

section 20 level 6 item 3

-
-

section 20 level 7 item 0

-

section 20 level 7 item 1

-

section 20 level 7 item 2

-

section 20 level 7 item 3

-
-

section 20 level 8 item 0

-

section 20 level 8 item 1

-

section 20 level 8 item 2

-

section 20 level 8 item 3

-
-

section 20 level 9 item 0

-

section 20 level 9 item 1

-

section 20 level 9 item 2

-

section 20 level 9 item 3

-
-

section 20 level 10 item 0

-

section 20 level 10 item 1

-

section 20 level 10 item 2

-

section 20 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 21 level 1 item 0

-

section 21 level 1 item 1

-

section 21 level 1 item 2

-

section 21 level 1 item 3

-
-

section 21 level 2 item 0

-

section 21 level 2 item 1

-

section 21 level 2 item 2

-

section 21 level 2 item 3

-
-

section 21 level 3 item 0

-

section 21 level 3 item 1

-

section 21 level 3 item 2

-

section 21 level 3 item 3

-
-

section 21 level 4 item 0

-

section 21 level 4 item 1

-

section 21 level 4 item 2

-

section 21 level 4 item 3

-
-

section 21 level 5 item 0

-

section 21 level 5 item 1

-

section 21 level 5 item 2

-

section 21 level 5 item 3

-
-

section 21 level 6 item 0

-

section 21 level 6 item 1

-

section 21 level 6 item 2

-

section 21 level 6 item 3

-
-

section 21 level 7 item 0

-

section 21 level 7 item 1

-

section 21 level 7 item 2

-

section 21 level 7 item 3

-
-

section 21 level 8 item 0

-

section 21 level 8 item 1

-

section 21 level 8 item 2

-

section 21 level 8 item 3

-
-

section 21 level 9 item 0

-

section 21 level 9 item 1

-

section 21 level 9 item 2

-

section 21 level 9 item 3

-
-

section 21 level 10 item 0

-

section 21 level 10 item 1

-

section 21 level 10 item 2

-

section 21 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 22 level 1 item 0

-

section 22 level 1 item 1

-

section 22 level 1 item 2

-

section 22 level 1 item 3

-
-

section 22 level 2 item 0

-

section 22 level 2 item 1

-

section 22 level 2 item 2

-

section 22 level 2 item 3

-
-

section 22 level 3 item 0

-

section 22 level 3 item 1

-

section 22 level 3 item 2

-

section 22 level 3 item 3

-
-

section 22 level 4 item 0

-

section 22 level 4 item 1

-

section 22 level 4 item 2

-

section 22 level 4 item 3

-
-

section 22 level 5 item 0

-

section 22 level 5 item 1

-

section 22 level 5 item 2

-

section 22 level 5 item 3

-
-

section 22 level 6 item 0

-

section 22 level 6 item 1

-

section 22 level 6 item 2

-

section 22 level 6 item 3

-
-

section 22 level 7 item 0

-

section 22 level 7 item 1

-

section 22 level 7 item 2

-

section 22 level 7 item 3

-
-

section 22 level 8 item 0

-

section 22 level 8 item 1

-

section 22 level 8 item 2

-

section 22 level 8 item 3

-
-

section 22 level 9 item 0

-

section 22 level 9 item 1

-

section 22 level 9 item 2

-

section 22 level 9 item 3

-
-

section 22 level 10 item 0

-

section 22 level 10 item 1

-

section 22 level 10 item 2

-

section 22 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 23 level 1 item 0

-

section 23 level 1 item 1

-

section 23 level 1 item 2

-

section 23 level 1 item 3

-
-

section 23 level 2 item 0

-

section 23 level 2 item 1

-

section 23 level 2 item 2

-

section 23 level 2 item 3

-
-

section 23 level 3 item 0

-

section 23 level 3 item 1

-

section 23 level 3 item 2

-

section 23 level 3 item 3

-
-

section 23 level 4 item 0

-

section 23 level 4 item 1

-

section 23 level 4 item 2

-

section 23 level 4 item 3

-
-

section 23 level 5 item 0

-

section 23 level 5 item 1

-

section 23 level 5 item 2

-

section 23 level 5 item 3

-
-

section 23 level 6 item 0

-

section 23 level 6 item 1

-

section 23 level 6 item 2

-

section 23 level 6 item 3

-
-

section 23 level 7 item 0

-

section 23 level 7 item 1

-

section 23 level 7 item 2

-

section 23 level 7 item 3

-
-

section 23 level 8 item 0

-

section 23 level 8 item 1

-

section 23 level 8 item 2

-

section 23 level 8 item 3

-
-

section 23 level 9 item 0

-

section 23 level 9 item 1

-

section 23 level 9 item 2

-

section 23 level 9 item 3

-
-

section 23 level 10 item 0

-

section 23 level 10 item 1

-

section 23 level 10 item 2

-

section 23 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 24 level 1 item 0

-

section 24 level 1 item 1

-

section 24 level 1 item 2

-

section 24 level 1 item 3

-
-

section 24 level 2 item 0

-

section 24 level 2 item 1

-

section 24 level 2 item 2

-

section 24 level 2 item 3

-
-

section 24 level 3 item 0

-

section 24 level 3 item 1

-

section 24 level 3 item 2

-

section 24 level 3 item 3

-
-

section 24 level 4 item 0

-

section 24 level 4 item 1

-

section 24 level 4 item 2

-

section 24 level 4 item 3

-
-

section 24 level 5 item 0

-

section 24 level 5 item 1

-

section 24 level 5 item 2

-

section 24 level 5 item 3

-
-

section 24 level 6 item 0

-

section 24 level 6 item 1

-

section 24 level 6 item 2

-

section 24 level 6 item 3

-
-

section 24 level 7 item 0

-

section 24 level 7 item 1

-

section 24 level 7 item 2

-

section 24 level 7 item 3

-
-

section 24 level 8 item 0

-

section 24 level 8 item 1

-

section 24 level 8 item 2

-

section 24 level 8 item 3

-
-

section 24 level 9 item 0

-

section 24 level 9 item 1

-

section 24 level 9 item 2

-

section 24 level 9 item 3

-
-

section 24 level 10 item 0

-

section 24 level 10 item 1

-

section 24 level 10 item 2

-

section 24 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 25 level 1 item 0

-

section 25 level 1 item 1

-

section 25 level 1 item 2

-

section 25 level 1 item 3

-
-

section 25 level 2 item 0

-

section 25 level 2 item 1

-

section 25 level 2 item 2

-

section 25 level 2 item 3

-
-

section 25 level 3 item 0

-

section 25 level 3 item 1

-

section 25 level 3 item 2

-

section 25 level 3 item 3

-
-

section 25 level 4 item 0

-

section 25 level 4 item 1

-

section 25 level 4 item 2

-

section 25 level 4 item 3

-
-

section 25 level 5 item 0

-

section 25 level 5 item 1

-

section 25 level 5 item 2

-

section 25 level 5 item 3

-
-

section 25 level 6 item 0

-

section 25 level 6 item 1

-

section 25 level 6 item 2

-

section 25 level 6 item 3

-
-

section 25 level 7 item 0

-

section 25 level 7 item 1

-

section 25 level 7 item 2

-

section 25 level 7 item 3

-
-

section 25 level 8 item 0

-

section 25 level 8 item 1

-

section 25 level 8 item 2

-

section 25 level 8 item 3

-
-

section 25 level 9 item 0

-

section 25 level 9 item 1

-

section 25 level 9 item 2

-

section 25 level 9 item 3

-
-

section 25 level 10 item 0

-

section 25 level 10 item 1

-

section 25 level 10 item 2

-

section 25 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 26 level 1 item 0

-

section 26 level 1 item 1

-

section 26 level 1 item 2

-

section 26 level 1 item 3

-
-

section 26 level 2 item 0

-

section 26 level 2 item 1

-

section 26 level 2 item 2

-

section 26 level 2 item 3

-
-

section 26 level 3 item 0

-

section 26 level 3 item 1

-

section 26 level 3 item 2

-

section 26 level 3 item 3

-
-

section 26 level 4 item 0

-

section 26 level 4 item 1

-

section 26 level 4 item 2

-

section 26 level 4 item 3

-
-

section 26 level 5 item 0

-

section 26 level 5 item 1

-

section 26 level 5 item 2

-

section 26 level 5 item 3

-
-

section 26 level 6 item 0

-

section 26 level 6 item 1

-

section 26 level 6 item 2

-

section 26 level 6 item 3

-
-

section 26 level 7 item 0

-

section 26 level 7 item 1

-

section 26 level 7 item 2

-

section 26 level 7 item 3

-
-

section 26 level 8 item 0

-

section 26 level 8 item 1

-

section 26 level 8 item 2

-

section 26 level 8 item 3

-
-

section 26 level 9 item 0

-

section 26 level 9 item 1

-

section 26 level 9 item 2

-

section 26 level 9 item 3

-
-

section 26 level 10 item 0

-

section 26 level 10 item 1

-

section 26 level 10 item 2

-

section 26 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 27 level 1 item 0

-

section 27 level 1 item 1

-

section 27 level 1 item 2

-

section 27 level 1 item 3

-
-

section 27 level 2 item 0

-

section 27 level 2 item 1

-

section 27 level 2 item 2

-

section 27 level 2 item 3

-
-

section 27 level 3 item 0

-

section 27 level 3 item 1

-

section 27 level 3 item 2

-

section 27 level 3 item 3

-
-

section 27 level 4 item 0

-

section 27 level 4 item 1

-

section 27 level 4 item 2

-

section 27 level 4 item 3

-
-

section 27 level 5 item 0

-

section 27 level 5 item 1

-

section 27 level 5 item 2

-

section 27 level 5 item 3

-
-

section 27 level 6 item 0

-

section 27 level 6 item 1

-

section 27 level 6 item 2

-

section 27 level 6 item 3

-
-

section 27 level 7 item 0

-

section 27 level 7 item 1

-

section 27 level 7 item 2

-

section 27 level 7 item 3

-
-

section 27 level 8 item 0

-

section 27 level 8 item 1

-

section 27 level 8 item 2

-

section 27 level 8 item 3

-
-

section 27 level 9 item 0

-

section 27 level 9 item 1

-

section 27 level 9 item 2

-

section 27 level 9 item 3

-
-

section 27 level 10 item 0

-

section 27 level 10 item 1

-

section 27 level 10 item 2

-

section 27 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 28 level 1 item 0

-

section 28 level 1 item 1

-

section 28 level 1 item 2

-

section 28 level 1 item 3

-
-

section 28 level 2 item 0

-

section 28 level 2 item 1

-

section 28 level 2 item 2

-

section 28 level 2 item 3

-
-

section 28 level 3 item 0

-

section 28 level 3 item 1

-

section 28 level 3 item 2

-

section 28 level 3 item 3

-
-

section 28 level 4 item 0

-

section 28 level 4 item 1

-

section 28 level 4 item 2

-

section 28 level 4 item 3

-
-

section 28 level 5 item 0

-

section 28 level 5 item 1

-

section 28 level 5 item 2

-

section 28 level 5 item 3

-
-

section 28 level 6 item 0

-

section 28 level 6 item 1

-

section 28 level 6 item 2

-

section 28 level 6 item 3

-
-

section 28 level 7 item 0

-

section 28 level 7 item 1

-

section 28 level 7 item 2

-

section 28 level 7 item 3

-
-

section 28 level 8 item 0

-

section 28 level 8 item 1

-

section 28 level 8 item 2

-

section 28 level 8 item 3

-
-

section 28 level 9 item 0

-

section 28 level 9 item 1

-

section 28 level 9 item 2

-

section 28 level 9 item 3

-
-

section 28 level 10 item 0

-

section 28 level 10 item 1

-

section 28 level 10 item 2

-

section 28 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 29 level 1 item 0

-

section 29 level 1 item 1

-

section 29 level 1 item 2

-

section 29 level 1 item 3

-
-

section 29 level 2 item 0

-

section 29 level 2 item 1

-

section 29 level 2 item 2

-

section 29 level 2 item 3

-
-

section 29 level 3 item 0

-

section 29 level 3 item 1

-

section 29 level 3 item 2

-

section 29 level 3 item 3

-
-

section 29 level 4 item 0

-

section 29 level 4 item 1

-

section 29 level 4 item 2

-

section 29 level 4 item 3

-
-

section 29 level 5 item 0

-

section 29 level 5 item 1

-

section 29 level 5 item 2

-

section 29 level 5 item 3

-
-

section 29 level 6 item 0

-

section 29 level 6 item 1

-

section 29 level 6 item 2

-

section 29 level 6 item 3

-
-

section 29 level 7 item 0

-

section 29 level 7 item 1

-

section 29 level 7 item 2

-

section 29 level 7 item 3

-
-

section 29 level 8 item 0

-

section 29 level 8 item 1

-

section 29 level 8 item 2

-

section 29 level 8 item 3

-
-

section 29 level 9 item 0

-

section 29 level 9 item 1

-

section 29 level 9 item 2

-

section 29 level 9 item 3

-
-

section 29 level 10 item 0

-

section 29 level 10 item 1

-

section 29 level 10 item 2

-

section 29 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 30 level 1 item 0

-

section 30 level 1 item 1

-

section 30 level 1 item 2

-

section 30 level 1 item 3

-
-

section 30 level 2 item 0

-

section 30 level 2 item 1

-

section 30 level 2 item 2

-

section 30 level 2 item 3

-
-

section 30 level 3 item 0

-

section 30 level 3 item 1

-

section 30 level 3 item 2

-

section 30 level 3 item 3

-
-

section 30 level 4 item 0

-

section 30 level 4 item 1

-

section 30 level 4 item 2

-

section 30 level 4 item 3

-
-

section 30 level 5 item 0

-

section 30 level 5 item 1

-

section 30 level 5 item 2

-

section 30 level 5 item 3

-
-

section 30 level 6 item 0

-

section 30 level 6 item 1

-

section 30 level 6 item 2

-

section 30 level 6 item 3

-
-

section 30 level 7 item 0

-

section 30 level 7 item 1

-

section 30 level 7 item 2

-

section 30 level 7 item 3

-
-

section 30 level 8 item 0

-

section 30 level 8 item 1

-

section 30 level 8 item 2

-

section 30 level 8 item 3

-
-

section 30 level 9 item 0

-

section 30 level 9 item 1

-

section 30 level 9 item 2

-

section 30 level 9 item 3

-
-

section 30 level 10 item 0

-

section 30 level 10 item 1

-

section 30 level 10 item 2

-

section 30 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 31 level 1 item 0

-

section 31 level 1 item 1

-

section 31 level 1 item 2

-

section 31 level 1 item 3

-
-

section 31 level 2 item 0

-

section 31 level 2 item 1

-

section 31 level 2 item 2

-

section 31 level 2 item 3

-
-

section 31 level 3 item 0

-

section 31 level 3 item 1

-

section 31 level 3 item 2

-

section 31 level 3 item 3

-
-

section 31 level 4 item 0

-

section 31 level 4 item 1

-

section 31 level 4 item 2

-

section 31 level 4 item 3

-
-

section 31 level 5 item 0

-

section 31 level 5 item 1

-

section 31 level 5 item 2

-

section 31 level 5 item 3

-
-

section 31 level 6 item 0

-

section 31 level 6 item 1

-

section 31 level 6 item 2

-

section 31 level 6 item 3

-
-

section 31 level 7 item 0

-

section 31 level 7 item 1

-

section 31 level 7 item 2

-

section 31 level 7 item 3

-
-

section 31 level 8 item 0

-

section 31 level 8 item 1

-

section 31 level 8 item 2

-

section 31 level 8 item 3

-
-

section 31 level 9 item 0

-

section 31 level 9 item 1

-

section 31 level 9 item 2

-

section 31 level 9 item 3

-
-

section 31 level 10 item 0

-

section 31 level 10 item 1

-

section 31 level 10 item 2

-

section 31 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 32 level 1 item 0

-

section 32 level 1 item 1

-

section 32 level 1 item 2

-

section 32 level 1 item 3

-
-

section 32 level 2 item 0

-

section 32 level 2 item 1

-

section 32 level 2 item 2

-

section 32 level 2 item 3

-
-

section 32 level 3 item 0

-

section 32 level 3 item 1

-

section 32 level 3 item 2

-

section 32 level 3 item 3

-
-

section 32 level 4 item 0

-

section 32 level 4 item 1

-

section 32 level 4 item 2

-

section 32 level 4 item 3

-
-

section 32 level 5 item 0

-

section 32 level 5 item 1

-

section 32 level 5 item 2

-

section 32 level 5 item 3

-
-

section 32 level 6 item 0

-

section 32 level 6 item 1

-

section 32 level 6 item 2

-

section 32 level 6 item 3

-
-

section 32 level 7 item 0

-

section 32 level 7 item 1

-

section 32 level 7 item 2

-

section 32 level 7 item 3

-
-

section 32 level 8 item 0

-

section 32 level 8 item 1

-

section 32 level 8 item 2

-

section 32 level 8 item 3

-
-

section 32 level 9 item 0

-

section 32 level 9 item 1

-

section 32 level 9 item 2

-

section 32 level 9 item 3

-
-

section 32 level 10 item 0

-

section 32 level 10 item 1

-

section 32 level 10 item 2

-

section 32 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 33 level 1 item 0

-

section 33 level 1 item 1

-

section 33 level 1 item 2

-

section 33 level 1 item 3

-
-

section 33 level 2 item 0

-

section 33 level 2 item 1

-

section 33 level 2 item 2

-

section 33 level 2 item 3

-
-

section 33 level 3 item 0

-

section 33 level 3 item 1

-

section 33 level 3 item 2

-

section 33 level 3 item 3

-
-

section 33 level 4 item 0

-

section 33 level 4 item 1

-

section 33 level 4 item 2

-

section 33 level 4 item 3

-
-

section 33 level 5 item 0

-

section 33 level 5 item 1

-

section 33 level 5 item 2

-

section 33 level 5 item 3

-
-

section 33 level 6 item 0

-

section 33 level 6 item 1

-

section 33 level 6 item 2

-

section 33 level 6 item 3

-
-

section 33 level 7 item 0

-

section 33 level 7 item 1

-

section 33 level 7 item 2

-

section 33 level 7 item 3

-
-

section 33 level 8 item 0

-

section 33 level 8 item 1

-

section 33 level 8 item 2

-

section 33 level 8 item 3

-
-

section 33 level 9 item 0

-

section 33 level 9 item 1

-

section 33 level 9 item 2

-

section 33 level 9 item 3

-
-

section 33 level 10 item 0

-

section 33 level 10 item 1

-

section 33 level 10 item 2

-

section 33 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 34 level 1 item 0

-

section 34 level 1 item 1

-

section 34 level 1 item 2

-

section 34 level 1 item 3

-
-

section 34 level 2 item 0

-

section 34 level 2 item 1

-

section 34 level 2 item 2

-

section 34 level 2 item 3

-
-

section 34 level 3 item 0

-

section 34 level 3 item 1

-

section 34 level 3 item 2

-

section 34 level 3 item 3

-
-

section 34 level 4 item 0

-

section 34 level 4 item 1

-

section 34 level 4 item 2

-

section 34 level 4 item 3

-
-

section 34 level 5 item 0

-

section 34 level 5 item 1

-

section 34 level 5 item 2

-

section 34 level 5 item 3

-
-

section 34 level 6 item 0

-

section 34 level 6 item 1

-

section 34 level 6 item 2

-

section 34 level 6 item 3

-
-

section 34 level 7 item 0

-

section 34 level 7 item 1

-

section 34 level 7 item 2

-

section 34 level 7 item 3

-
-

section 34 level 8 item 0

-

section 34 level 8 item 1

-

section 34 level 8 item 2

-

section 34 level 8 item 3

-
-

section 34 level 9 item 0

-

section 34 level 9 item 1

-

section 34 level 9 item 2

-

section 34 level 9 item 3

-
-

section 34 level 10 item 0

-

section 34 level 10 item 1

-

section 34 level 10 item 2

-

section 34 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 35 level 1 item 0

-

section 35 level 1 item 1

-

section 35 level 1 item 2

-

section 35 level 1 item 3

-
-

section 35 level 2 item 0

-

section 35 level 2 item 1

-

section 35 level 2 item 2

-

section 35 level 2 item 3

-
-

section 35 level 3 item 0

-

section 35 level 3 item 1

-

section 35 level 3 item 2

-

section 35 level 3 item 3

-
-

section 35 level 4 item 0

-

section 35 level 4 item 1

-

section 35 level 4 item 2

-

section 35 level 4 item 3

-
-

section 35 level 5 item 0

-

section 35 level 5 item 1

-

section 35 level 5 item 2

-

section 35 level 5 item 3

-
-

section 35 level 6 item 0

-

section 35 level 6 item 1

-

section 35 level 6 item 2

-

section 35 level 6 item 3

-
-

section 35 level 7 item 0

-

section 35 level 7 item 1

-

section 35 level 7 item 2

-

section 35 level 7 item 3

-
-

section 35 level 8 item 0

-

section 35 level 8 item 1

-

section 35 level 8 item 2

-

section 35 level 8 item 3

-
-

section 35 level 9 item 0

-

section 35 level 9 item 1

-

section 35 level 9 item 2

-

section 35 level 9 item 3

-
-

section 35 level 10 item 0

-

section 35 level 10 item 1

-

section 35 level 10 item 2

-

section 35 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 36 level 1 item 0

-

section 36 level 1 item 1

-

section 36 level 1 item 2

-

section 36 level 1 item 3

-
-

section 36 level 2 item 0

-

section 36 level 2 item 1

-

section 36 level 2 item 2

-

section 36 level 2 item 3

-
-

section 36 level 3 item 0

-

section 36 level 3 item 1

-

section 36 level 3 item 2

-

section 36 level 3 item 3

-
-

section 36 level 4 item 0

-

section 36 level 4 item 1

-

section 36 level 4 item 2

-

section 36 level 4 item 3

-
-

section 36 level 5 item 0

-

section 36 level 5 item 1

-

section 36 level 5 item 2

-

section 36 level 5 item 3

-
-

section 36 level 6 item 0

-

section 36 level 6 item 1

-

section 36 level 6 item 2

-

section 36 level 6 item 3

-
-

section 36 level 7 item 0

-

section 36 level 7 item 1

-

section 36 level 7 item 2

-

section 36 level 7 item 3

-
-

section 36 level 8 item 0

-

section 36 level 8 item 1

-

section 36 level 8 item 2

-

section 36 level 8 item 3

-
-

section 36 level 9 item 0

-

section 36 level 9 item 1

-

section 36 level 9 item 2

-

section 36 level 9 item 3

-
-

section 36 level 10 item 0

-

section 36 level 10 item 1

-

section 36 level 10 item 2

-

section 36 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 37 level 1 item 0

-

section 37 level 1 item 1

-

section 37 level 1 item 2

-

section 37 level 1 item 3

-
-

section 37 level 2 item 0

-

section 37 level 2 item 1

-

section 37 level 2 item 2

-

section 37 level 2 item 3

-
-

section 37 level 3 item 0

-

section 37 level 3 item 1

-

section 37 level 3 item 2

-

section 37 level 3 item 3

-
-

section 37 level 4 item 0

-

section 37 level 4 item 1

-

section 37 level 4 item 2

-

section 37 level 4 item 3

-
-

section 37 level 5 item 0

-

section 37 level 5 item 1

-

section 37 level 5 item 2

-

section 37 level 5 item 3

-
-

section 37 level 6 item 0

-

section 37 level 6 item 1

-

section 37 level 6 item 2

-

section 37 level 6 item 3

-
-

section 37 level 7 item 0

-

section 37 level 7 item 1

-

section 37 level 7 item 2

-

section 37 level 7 item 3

-
-

section 37 level 8 item 0

-

section 37 level 8 item 1

-

section 37 level 8 item 2

-

section 37 level 8 item 3

-
-

section 37 level 9 item 0

-

section 37 level 9 item 1

-

section 37 level 9 item 2

-

section 37 level 9 item 3

-
-

section 37 level 10 item 0

-

section 37 level 10 item 1

-

section 37 level 10 item 2

-

section 37 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 38 level 1 item 0

-

section 38 level 1 item 1

-

section 38 level 1 item 2

-

section 38 level 1 item 3

-
-

section 38 level 2 item 0

-

section 38 level 2 item 1

-

section 38 level 2 item 2

-

section 38 level 2 item 3

-
-

section 38 level 3 item 0

-

section 38 level 3 item 1

-

section 38 level 3 item 2

-

section 38 level 3 item 3

-
-

section 38 level 4 item 0

-

section 38 level 4 item 1

-

section 38 level 4 item 2

-

section 38 level 4 item 3

-
-

section 38 level 5 item 0

-

section 38 level 5 item 1

-

section 38 level 5 item 2

-

section 38 level 5 item 3

-
-

section 38 level 6 item 0

-

section 38 level 6 item 1

-

section 38 level 6 item 2

-

section 38 level 6 item 3

-
-

section 38 level 7 item 0

-

section 38 level 7 item 1

-

section 38 level 7 item 2

-

section 38 level 7 item 3

-
-

section 38 level 8 item 0

-

section 38 level 8 item 1

-

section 38 level 8 item 2

-

section 38 level 8 item 3

-
-

section 38 level 9 item 0

-

section 38 level 9 item 1

-

section 38 level 9 item 2

-

section 38 level 9 item 3

-
-

section 38 level 10 item 0

-

section 38 level 10 item 1

-

section 38 level 10 item 2

-

section 38 level 10 item 3

- original -
-
-
-
-
-
-
-
-
-
-
-
-
-

section 39 level 1 item 0

-

section 39 level 1 item 1

-

section 39 level 1 item 2

-

section 39 level 1 item 3

-
-

section 39 level 2 item 0

-

section 39 level 2 item 1

-

section 39 level 2 item 2

-

section 39 level 2 item 3

-
-

section 39 level 3 item 0

-

section 39 level 3 item 1

-

section 39 level 3 item 2

-

section 39 level 3 item 3

-
-

section 39 level 4 item 0

-

section 39 level 4 item 1

-

section 39 level 4 item 2

-

section 39 level 4 item 3

-
-

section 39 level 5 item 0

-

section 39 level 5 item 1

-

section 39 level 5 item 2

-

section 39 level 5 item 3

-
-

section 39 level 6 item 0

-

section 39 level 6 item 1

-

section 39 level 6 item 2

-

section 39 level 6 item 3

-
-

section 39 level 7 item 0

-

section 39 level 7 item 1

-

section 39 level 7 item 2

-

section 39 level 7 item 3

-
-

section 39 level 8 item 0

-

section 39 level 8 item 1

-

section 39 level 8 item 2

-

section 39 level 8 item 3

-
-

section 39 level 9 item 0

-

section 39 level 9 item 1

-

section 39 level 9 item 2

-

section 39 level 9 item 3

-
-

section 39 level 10 item 0

-

section 39 level 10 item 1

-

section 39 level 10 item 2

-

section 39 level 10 item 3

+

s19d10i0

+

s19d10i1

original
diff --git a/perf/generate-deep-last-leaf.js b/perf/generate-deep-last-leaf.js index 668be8f..38d126e 100644 --- a/perf/generate-deep-last-leaf.js +++ b/perf/generate-deep-last-leaf.js @@ -4,15 +4,14 @@ const fs = require("fs"); const path = require("path"); -const SECTIONS = 40; +const SECTIONS = 20; const DEPTH = 10; -const FILLERS_PER_LEVEL = 4; +const FILLERS_PER_LEVEL = 2; function level(section, depth, changed) { const fillers = Array.from( { length: FILLERS_PER_LEVEL }, - (_, i) => - `

section ${section} level ${depth} item ${i}

`, + (_, i) => `

s${section}d${depth}i${i}

`, ).join(""); if (depth === DEPTH) { const leaf = changed ? "changed" : "original"; From abe63ef565a6cb1abd977fc81ddb3bf6a32bff69 Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Tue, 25 Aug 2026 21:00:31 -0800 Subject: [PATCH 07/12] add backlogs perf benchmark from a real page morph Trimmed from a real OpenProject backlogs_container capture (a Backlog/Foobar list plus one Sprint list). "new" is the same tree with one work-package card moved between lists, synthesised rather than a server re-render, so most of the tree is unchanged. --- perf/benchmarks/backlogs.new.html | 947 ++++++++++++++++++++++++++++++ perf/benchmarks/backlogs.old.html | 947 ++++++++++++++++++++++++++++++ 2 files changed, 1894 insertions(+) create mode 100644 perf/benchmarks/backlogs.new.html create mode 100644 perf/benchmarks/backlogs.old.html diff --git a/perf/benchmarks/backlogs.new.html b/perf/benchmarks/backlogs.new.html new file mode 100644 index 0000000..2acdf31 --- /dev/null +++ b/perf/benchmarks/backlogs.new.html @@ -0,0 +1,947 @@ + + +
+
+ +
+

+ Backlog283 +

+
+ + + +
+
+
+
+
+
+
+

+ + Foobar + +

+ 2 +
+
+
+
+
+ +
    +
  • +
    +
    +
    +
    + FEATURE +
    +
    + MYPN2-1 +
    +
    + + New +
    +
    +
    +
    + + + + 0 story points + + + + Normal + + + + + +
    +
    + Story 0 +
    +
    +
  • +
+
+ +
+
+ +
+
+
+
+ +
+

+ Sprints17 +

+
+ + + +
+
+
+
+
+
+
+

+ + Sprint 1 + +

+ 8 +
+
+
+ +
+ In planning + + + 0 points + + + +  –  + +
+
+ +
+
+
+ +
    +
  • +
    +
    +
    +
    + FEATURE +
    +
    + MYPN2-5 +
    +
    + + New +
    +
    +
    +
    + + + + 0 story points + + + + Normal + + + + + +
    +
    + Story 4 +
    +
    +
  • +
  • +
    +
    +
    +
    + FEATURE +
    +
    + MYPN2-6 +
    +
    + + New +
    +
    +
    +
    + + + + 0 story points + + + + Normal + + + + + +
    +
    + Story 5 +
    +
    +
  • +
+
+ +
+
+
+
+
+
diff --git a/perf/benchmarks/backlogs.old.html b/perf/benchmarks/backlogs.old.html new file mode 100644 index 0000000..f9ba3b0 --- /dev/null +++ b/perf/benchmarks/backlogs.old.html @@ -0,0 +1,947 @@ + + +
+
+ +
+

+ Backlog283 +

+
+ + + +
+
+
+
+
+
+
+

+ + Foobar + +

+ 2 +
+
+
+
+
+ +
    +
  • +
    +
    +
    +
    + FEATURE +
    +
    + MYPN2-5 +
    +
    + + New +
    +
    +
    +
    + + + + 0 story points + + + + Normal + + + + + +
    +
    + Story 4 +
    +
    +
  • +
  • +
    +
    +
    +
    + FEATURE +
    +
    + MYPN2-1 +
    +
    + + New +
    +
    +
    +
    + + + + 0 story points + + + + Normal + + + + + +
    +
    + Story 0 +
    +
    +
  • +
+
+ +
+
+ +
+
+
+
+ +
+

+ Sprints17 +

+
+ + + +
+
+
+
+
+
+
+

+ + Sprint 1 + +

+ 8 +
+
+
+ +
+ In planning + + + 0 points + + + +  –  + +
+
+ +
+
+
+ +
    +
  • +
    +
    +
    +
    + FEATURE +
    +
    + MYPN2-6 +
    +
    + + New +
    +
    +
    +
    + + + + 0 story points + + + + Normal + + + + + +
    +
    + Story 5 +
    +
    +
  • +
+
+ +
+
+
+
+
+
From bf1348a6f5c6f0bb520aea67da83c39e80d4966e Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Tue, 25 Aug 2026 21:52:13 -0800 Subject: [PATCH 08/12] document the skipUnchanged option --- CHANGELOG.md | 1 + README.md | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b176dbb..96f43bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ * Added: * Warn in the console when duplicate ids are detected during a morph, since they can cause subtle state loss (@botandrose) #142 + * New off-by-default `skipUnchanged` option that skips morphing subtrees whose old and new content are already identical, for large speedups on mostly-unchanged pages (@alexbcoles) #144 * Fixed: * Fix TypeError when restoring focus to an element that doesn't support text selection (@emaia) #150 diff --git a/README.md b/README.md index 422d520..af36ef2 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,7 @@ Idiomorph supports the following options: | `ignoreActive: false` | If `true`, idiomorph will skip the active element | `Idiomorph.morph(..., {ignoreActive:true})` | | `ignoreActiveValue: false` | If `true`, idiomorph will not update the active element's value | `Idiomorph.morph(..., {ignoreActiveValue:true})` | | `restoreFocus: true` | If `true`, idiomorph will attempt to restore any lost focus and selection state after the morph. | `Idiomorph.morph(..., {restoreFocus:true})` | +| `skipUnchanged: false` | If `true`, idiomorph will not descend into subtrees that are already identical. See the [skipping unchanged content](#skipping-unchanged-content) section | `Idiomorph.morph(..., {skipUnchanged:true})` | | `head: {style: 'merge', ...}` | Allows you to control how the `head` tag is merged. See the [head](#the-head-tag) section for more details | `Idiomorph.morph(..., {head:{style:'merge'}})` | | `callbacks: {...}` | Allows you to insert callbacks when events occur in the morph lifecycle. See the callback table below | `Idiomorph.morph(..., {callbacks:{beforeNodeAdded:function(node){...}})` | @@ -107,6 +108,18 @@ of the algorithm. | afterNodeRemoved(node) | Called after a node is removed from the DOM | none | | beforeAttributeUpdated(attributeName, node, mutationType) | Called before an attribute on an element is updated or removed (`mutationType` is either "update" or "remove") | return false to not update or remove the attribute | +### Skipping unchanged content + +Most real-world morphs change only a small part of a large page. With `skipUnchanged: true`, idiomorph compares each pair of old and new elements with [`isEqualNode`](https://developer.mozilla.org/en-US/docs/Web/API/Node/isEqualNode) and, when they are identical, leaves the whole subtree alone instead of walking into it. On pages that mostly stay the same this makes morphs many times faster. On pages where most of the content changes between morphs, though, the extra comparisons can cost slightly more than they save, so the option is best suited to mostly-unchanged pages. + +Idiomorph's own morphing produces the same DOM with or without the option. What changes is what your callbacks see, and callbacks that rely on being called for every node can therefore behave differently: + +* `beforeNodeMorphed` and `afterNodeMorphed` are still called for the root of an unchanged subtree, so you can still veto it, but they are **not** called for its descendants. `beforeAttributeUpdated` is never called inside it either, since nothing changes. +* Hidden state is respected: an ``, `