@digital-blueprint/sublibrary-app
Version: 
[GitHub Repository](https://github.com/digital-blueprint/sublibrary-app) | [npmjs package](https://www.npmjs.com/package/@digital-blueprint/sublibrary-app) | [Unpkg CDN](https://unpkg.com/browse/@digital-blueprint/sublibrary-app/) | [Sublibrary Bundle](ht
1,115 lines • 400 kB
JavaScript
let _2 = t => t,
  _t4,
  _t5,
  _t6;
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/*!
 * License: LGPL-2.1-or-later
 * Dependencies:
 *
 * @webcomponents/scoped-custom-element-registry: BSD-3-Clause
 * @dbp-toolkit/app-shell: LGPL-2.1-or-later
 * @dbp-toolkit/language-select: LGPL-2.1-or-later
 * @dbp-toolkit/common: LGPL-2.1-or-later
 * @dbp-toolkit/auth: LGPL-2.1-or-later
 * @dbp-toolkit/notification: LGPL-2.1-or-later
 * @dbp-toolkit/theme-switcher: LGPL-2.1-or-later
 * path-to-regexp: MIT
 * universal-router: MIT
 * generateUrls: MIT
 * @dbp-toolkit/matomo: LGPL-2.1-or-later
 * @dbp-toolkit/person-select: LGPL-2.1-or-later
 * datatables.net: MIT
 * datatables.net-responsive: MIT
 * datatables.net-responsive-dt: MIT
 * datatables.net-dt: MIT
 * jszip: (MIT OR GPL-3.0-or-later)
 * datatables.net-buttons-dt: MIT
 * datatables.net-buttons: MIT
 * @dbp-toolkit/data-table-view: LGPL-2.1-or-later
 */
import { r as t, $ as e } from "./library-select.Cpz1ozX8.es.js";
import { w as n, c as r, a, A as i, i as o, g as s, b as l, h as u, p as d, x as c } from "./notification.BYDDIHux.es.js";
var f,
  h = {
    exports: {}
  };
/*! DataTables 1.12.1
 * ©2008-2022 SpryMedia Ltd - datatables.net/license
 */
function p() {
  return f || (f = 1, h.exports = function (e, n) {
    return e || (e = window), n || (n = "undefined" != typeof window ? t() : t()(e)), function (t, e, n, r) {
      var a,
        i,
        o,
        s,
        l = function l(e, n) {
          if (this instanceof l) return t(e).DataTable(n);
          n = e, this.$ = function (t, e) {
            return this.api(!0).$(t, e);
          }, this._ = function (t, e) {
            return this.api(!0).rows(t, e).data();
          }, this.api = function (t) {
            return new i(t ? he(this[a.iApiIndex]) : this);
          }, this.fnAddData = function (e, n) {
            var a = this.api(!0),
              i = Array.isArray(e) && (Array.isArray(e[0]) || t.isPlainObject(e[0])) ? a.rows.add(e) : a.row.add(e);
            return (n === r || n) && a.draw(), i.flatten().toArray();
          }, this.fnAdjustColumnSizing = function (t) {
            var e = this.api(!0).columns.adjust(),
              n = e.settings()[0],
              a = n.oScroll;
            t === r || t ? e.draw(!1) : "" === a.sX && "" === a.sY || qt(n);
          }, this.fnClearTable = function (t) {
            var e = this.api(!0).clear();
            (t === r || t) && e.draw();
          }, this.fnClose = function (t) {
            this.api(!0).row(t).child.hide();
          }, this.fnDeleteRow = function (t, e, n) {
            var a = this.api(!0),
              i = a.rows(t),
              o = i.settings()[0],
              s = o.aoData[i[0][0]];
            return i.remove(), e && e.call(this, o, s), (n === r || n) && a.draw(), s;
          }, this.fnDestroy = function (t) {
            this.api(!0).destroy(t);
          }, this.fnDraw = function (t) {
            this.api(!0).draw(t);
          }, this.fnFilter = function (t, e, n, a, i, o) {
            var s = this.api(!0);
            null === e || e === r ? s.search(t, n, a, o) : s.column(e).search(t, n, a, o), s.draw();
          }, this.fnGetData = function (t, e) {
            var n = this.api(!0);
            if (t !== r) {
              var a = t.nodeName ? t.nodeName.toLowerCase() : "";
              return e !== r || "td" == a || "th" == a ? n.cell(t, e).data() : n.row(t).data() || null;
            }
            return n.data().toArray();
          }, this.fnGetNodes = function (t) {
            var e = this.api(!0);
            return t !== r ? e.row(t).node() : e.rows().nodes().flatten().toArray();
          }, this.fnGetPosition = function (t) {
            var e = this.api(!0),
              n = t.nodeName.toUpperCase();
            if ("TR" == n) return e.row(t).index();
            if ("TD" == n || "TH" == n) {
              var r = e.cell(t).index();
              return [r.row, r.columnVisible, r.column];
            }
            return null;
          }, this.fnIsOpen = function (t) {
            return this.api(!0).row(t).child.isShown();
          }, this.fnOpen = function (t, e, n) {
            return this.api(!0).row(t).child(e, n).show().child()[0];
          }, this.fnPageChange = function (t, e) {
            var n = this.api(!0).page(t);
            (e === r || e) && n.draw(!1);
          }, this.fnSetColumnVis = function (t, e, n) {
            var a = this.api(!0).column(t).visible(e);
            (n === r || n) && a.columns.adjust().draw();
          }, this.fnSettings = function () {
            return he(this[a.iApiIndex]);
          }, this.fnSort = function (t) {
            this.api(!0).order(t).draw();
          }, this.fnSortListener = function (t, e, n) {
            this.api(!0).order.listener(t, e, n);
          }, this.fnUpdate = function (t, e, n, a, i) {
            var o = this.api(!0);
            return n === r || null === n ? o.row(e).data(t) : o.cell(e, n).data(t), (i === r || i) && o.columns.adjust(), (a === r || a) && o.draw(), 0;
          }, this.fnVersionCheck = a.fnVersionCheck;
          var o = this,
            s = n === r,
            u = this.length;
          for (var d in s && (n = {}), this.oApi = this.internal = a.internal, l.ext.internal) d && (this[d] = an(d));
          return this.each(function () {
            var e,
              a = u > 1 ? ge({}, n, !0) : n,
              i = 0,
              d = this.getAttribute("id"),
              c = !1,
              f = l.defaults,
              h = t(this);
            if ("table" == this.nodeName.toLowerCase()) {
              O(f), z(f.column), B(f, f, !0), B(f.column, f.column, !0), B(f, t.extend(a, h.data()), !0);
              var p = l.settings;
              for (i = 0, e = p.length; i < e; i++) {
                var m = p[i];
                if (m.nTable == this || m.nTHead && m.nTHead.parentNode == this || m.nTFoot && m.nTFoot.parentNode == this) {
                  var g = a.bRetrieve !== r ? a.bRetrieve : f.bRetrieve,
                    b = a.bDestroy !== r ? a.bDestroy : f.bDestroy;
                  if (s || g) return m.oInstance;
                  if (b) {
                    m.oInstance.fnDestroy();
                    break;
                  }
                  return void pe(m, 0, "Cannot reinitialise DataTable", 3);
                }
                if (m.sTableId == this.id) {
                  p.splice(i, 1);
                  break;
                }
              }
              null !== d && "" !== d || (d = "DataTables_Table_" + l.ext._unique++, this.id = d);
              var v = t.extend(!0, {}, l.models.oSettings, {
                sDestroyWidth: h[0].style.width,
                sInstance: d,
                sTableId: d
              });
              v.nTable = this, v.oApi = o.internal, v.oInit = a, p.push(v), v.oInstance = 1 === o.length ? o : h.dataTable(), O(a), E(a.oLanguage), a.aLengthMenu && !a.iDisplayLength && (a.iDisplayLength = Array.isArray(a.aLengthMenu[0]) ? a.aLengthMenu[0][0] : a.aLengthMenu[0]), a = ge(t.extend(!0, {}, f), a), me(v.oFeatures, a, ["bPaginate", "bLengthChange", "bFilter", "bSort", "bSortMulti", "bInfo", "bProcessing", "bAutoWidth", "bSortClasses", "bServerSide", "bDeferRender"]), me(v, a, ["asStripeClasses", "ajax", "fnServerData", "fnFormatNumber", "sServerMethod", "aaSorting", "aaSortingFixed", "aLengthMenu", "sPaginationType", "sAjaxSource", "sAjaxDataProp", "iStateDuration", "sDom", "bSortCellsTop", "iTabIndex", "fnStateLoadCallback", "fnStateSaveCallback", "renderer", "searchDelay", "rowId", ["iCookieDuration", "iStateDuration"], ["oSearch", "oPreviousSearch"], ["aoSearchCols", "aoPreSearchCols"], ["iDisplayLength", "_iDisplayLength"]]), me(v.oScroll, a, [["sScrollX", "sX"], ["sScrollXInner", "sXInner"], ["sScrollY", "sY"], ["bScrollCollapse", "bCollapse"]]), me(v.oLanguage, a, "fnInfoCallback"), ve(v, "aoDrawCallback", a.fnDrawCallback, "user"), ve(v, "aoServerParams", a.fnServerParams, "user"), ve(v, "aoStateSaveParams", a.fnStateSaveParams, "user"), ve(v, "aoStateLoadParams", a.fnStateLoadParams, "user"), ve(v, "aoStateLoaded", a.fnStateLoaded, "user"), ve(v, "aoRowCallback", a.fnRowCallback, "user"), ve(v, "aoRowCreatedCallback", a.fnCreatedRow, "user"), ve(v, "aoHeaderCallback", a.fnHeaderCallback, "user"), ve(v, "aoFooterCallback", a.fnFooterCallback, "user"), ve(v, "aoInitComplete", a.fnInitComplete, "user"), ve(v, "aoPreDrawCallback", a.fnPreDrawCallback, "user"), v.rowIdFn = nt(a.rowId), N(v);
              var y = v.oClasses;
              if (t.extend(y, l.ext.classes, a.oClasses), h.addClass(y.sTable), v.iInitDisplayStart === r && (v.iInitDisplayStart = a.iDisplayStart, v._iDisplayStart = a.iDisplayStart), null !== a.iDeferLoading) {
                v.bDeferLoading = !0;
                var _ = Array.isArray(a.iDeferLoading);
                v._iRecordsDisplay = _ ? a.iDeferLoading[0] : a.iDeferLoading, v._iRecordsTotal = _ ? a.iDeferLoading[1] : a.iDeferLoading;
              }
              var w = v.oLanguage;
              t.extend(!0, w, a.oLanguage), w.sUrl ? (t.ajax({
                dataType: "json",
                url: w.sUrl,
                success: function (e) {
                  B(f.oLanguage, e), E(e), t.extend(!0, w, e, v.oInit.oLanguage), ye(v, null, "i18n", [v]), jt(v);
                },
                error: function () {
                  jt(v);
                }
              }), c = !0) : ye(v, null, "i18n", [v]), null === a.asStripeClasses && (v.asStripeClasses = [y.sStripeOdd, y.sStripeEven]);
              var x = v.asStripeClasses,
                S = h.children("tbody").find("tr").eq(0);
              -1 !== t.inArray(!0, t.map(x, function (t, e) {
                return S.hasClass(t);
              })) && (t("tbody tr", this).removeClass(x.join(" ")), v.asDestroyStripes = x.slice());
              var C,
                I = [],
                D = this.getElementsByTagName("thead");
              if (0 !== D.length && (gt(v.aoHeader, D[0]), I = bt(v)), null === a.aoColumns) for (C = [], i = 0, e = I.length; i < e; i++) C.push(null);else C = a.aoColumns;
              for (i = 0, e = C.length; i < e; i++) P(v, I ? I[i] : null);
              if (V(v, a.aoColumnDefs, C, function (t, e) {
                j(v, t, e);
              }), S.length) {
                var k = function k(t, e) {
                  return null !== t.getAttribute("data-" + e) ? e : null;
                };
                t(S[0]).children("th, td").each(function (t, e) {
                  var n = v.aoColumns[t];
                  if (n.mData === t) {
                    var a = k(e, "sort") || k(e, "order"),
                      i = k(e, "filter") || k(e, "search");
                    null === a && null === i || (n.mData = {
                      _: t + ".display",
                      sort: null !== a ? t + ".@data-" + a : r,
                      type: null !== a ? t + ".@data-" + a : r,
                      filter: null !== i ? t + ".@data-" + i : r
                    }, j(v, t));
                  }
                });
              }
              var T = v.oFeatures,
                F = function F() {
                  if (a.aaSorting === r) {
                    var n = v.aaSorting;
                    for (i = 0, e = n.length; i < e; i++) n[i][1] = v.aoColumns[i].asSorting[0];
                  }
                  le(v), T.bSort && ve(v, "aoDrawCallback", function () {
                    if (v.bSorted) {
                      var e = re(v),
                        n = {};
                      t.each(e, function (t, e) {
                        n[e.src] = e.dir;
                      }), ye(v, null, "order", [v, e, n]), ie(v);
                    }
                  }), ve(v, "aoDrawCallback", function () {
                    (v.bSorted || "ssp" === xe(v) || T.bDeferRender) && le(v);
                  }, "sc");
                  var o = h.children("caption").each(function () {
                      this._captionSide = t(this).css("caption-side");
                    }),
                    s = h.children("thead");
                  0 === s.length && (s = t("<thead/>").appendTo(h)), v.nTHead = s[0];
                  var l = h.children("tbody");
                  0 === l.length && (l = t("<tbody/>").insertAfter(s)), v.nTBody = l[0];
                  var u = h.children("tfoot");
                  if (0 === u.length && o.length > 0 && ("" !== v.oScroll.sX || "" !== v.oScroll.sY) && (u = t("<tfoot/>").appendTo(h)), 0 === u.length || 0 === u.children().length ? h.addClass(y.sNoFooter) : u.length > 0 && (v.nTFoot = u[0], gt(v.aoFooter, v.nTFoot)), a.aaData) for (i = 0; i < a.aaData.length; i++) X(v, a.aaData[i]);else (v.bDeferLoading || "dom" == xe(v)) && q(v, t(v.nTBody).children("tr"));
                  v.aiDisplay = v.aiDisplayMaster.slice(), v.bInitialised = !0, !1 === c && jt(v);
                };
              ve(v, "aoDrawCallback", de, "state_save"), a.bStateSave ? (T.bStateSave = !0, ce(v, a, F)) : F();
            } else pe(null, 0, "Non-table node initialisation (" + this.nodeName + ")", 2);
          }), o = null, this;
        },
        u = {},
        d = /[\r\n\u2028]/g,
        c = /<.*?>/g,
        f = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,
        h = new RegExp("(\\" + ["/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^", "-"].join("|\\") + ")", "g"),
        p = /['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,
        m = function m(t) {
          return !t || !0 === t || "-" === t;
        },
        g = function g(t) {
          var e = parseInt(t, 10);
          return !isNaN(e) && isFinite(t) ? e : null;
        },
        b = function b(t, e) {
          return u[e] || (u[e] = new RegExp(At(e), "g")), "string" == typeof t && "." !== e ? t.replace(/\./g, "").replace(u[e], ".") : t;
        },
        v = function v(t, e, n) {
          var r = "string" == typeof t;
          return !!m(t) || (e && r && (t = b(t, e)), n && r && (t = t.replace(p, "")), !isNaN(parseFloat(t)) && isFinite(t));
        },
        y = function y(t) {
          return m(t) || "string" == typeof t;
        },
        _ = function _(t, e, n) {
          return !!m(t) || y(t) && !!v(I(t), e, n) || null;
        },
        w = function w(t, e, n) {
          var a = [],
            i = 0,
            o = t.length;
          if (n !== r) for (; i < o; i++) t[i] && t[i][e] && a.push(t[i][e][n]);else for (; i < o; i++) t[i] && a.push(t[i][e]);
          return a;
        },
        x = function x(t, e, n, a) {
          var i = [],
            o = 0,
            s = e.length;
          if (a !== r) for (; o < s; o++) t[e[o]][n] && i.push(t[e[o]][n][a]);else for (; o < s; o++) i.push(t[e[o]][n]);
          return i;
        },
        S = function S(t, e) {
          var n,
            a = [];
          e === r ? (e = 0, n = t) : (n = e, e = t);
          for (var i = e; i < n; i++) a.push(i);
          return a;
        },
        C = function C(t) {
          for (var e = [], n = 0, r = t.length; n < r; n++) t[n] && e.push(t[n]);
          return e;
        },
        I = function I(t) {
          return t.replace(c, "");
        },
        D = function D(t) {
          if (t.length < 2) return !0;
          for (var e = t.slice().sort(), n = e[0], r = 1, a = e.length; r < a; r++) {
            if (e[r] === n) return !1;
            n = e[r];
          }
          return !0;
        },
        k = function k(t) {
          if (D(t)) return t.slice();
          var e,
            n,
            r,
            a = [],
            i = t.length,
            o = 0;
          t: for (n = 0; n < i; n++) {
            for (e = t[n], r = 0; r < o; r++) if (a[r] === e) continue t;
            a.push(e), o++;
          }
          return a;
        },
        T = function T(t, e) {
          if (Array.isArray(e)) for (var n = 0; n < e.length; n++) T(t, e[n]);else t.push(e);
          return t;
        },
        F = function F(t, e) {
          return e === r && (e = 0), -1 !== this.indexOf(t, e);
        };
      function A(e) {
        var n,
          r,
          a = "a aa ai ao as b fn i m o s ",
          i = {};
        t.each(e, function (t, o) {
          (n = t.match(/^([^A-Z]+?)([A-Z])/)) && -1 !== a.indexOf(n[1] + " ") && (r = t.replace(n[0], n[2].toLowerCase()), i[r] = t, "o" === n[1] && A(e[t]));
        }), e._hungarianMap = i;
      }
      function B(e, n, a) {
        var i;
        e._hungarianMap || A(e), t.each(n, function (o, s) {
          (i = e._hungarianMap[o]) === r || !a && n[i] !== r || ("o" === i.charAt(0) ? (n[i] || (n[i] = {}), t.extend(!0, n[i], n[o]), B(e[i], n[i], a)) : n[i] = n[o]);
        });
      }
      function E(t) {
        var e = l.defaults.oLanguage,
          n = e.sDecimal;
        if (n && qe(n), t) {
          var r = t.sZeroRecords;
          !t.sEmptyTable && r && "No data available in table" === e.sEmptyTable && me(t, t, "sZeroRecords", "sEmptyTable"), !t.sLoadingRecords && r && "Loading..." === e.sLoadingRecords && me(t, t, "sZeroRecords", "sLoadingRecords"), t.sInfoThousands && (t.sThousands = t.sInfoThousands);
          var a = t.sDecimal;
          a && n !== a && qe(a);
        }
      }
      Array.isArray || (Array.isArray = function (t) {
        return "[object Array]" === Object.prototype.toString.call(t);
      }), Array.prototype.includes || (Array.prototype.includes = F), String.prototype.trim || (String.prototype.trim = function () {
        return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
      }), String.prototype.includes || (String.prototype.includes = F), l.util = {
        throttle: function (t, e) {
          var n,
            a,
            i = e !== r ? e : 200;
          return function () {
            var e = this,
              o = +new Date(),
              s = arguments;
            n && o < n + i ? (clearTimeout(a), a = setTimeout(function () {
              n = r, t.apply(e, s);
            }, i)) : (n = o, t.apply(e, s));
          };
        },
        escapeRegex: function (t) {
          return t.replace(h, "\\$1");
        },
        set: function (e) {
          if (t.isPlainObject(e)) return l.util.set(e._);
          if (null === e) return function () {};
          if ("function" == typeof e) return function (t, n, r) {
            e(t, "set", n, r);
          };
          if ("string" != typeof e || -1 === e.indexOf(".") && -1 === e.indexOf("[") && -1 === e.indexOf("(")) return function (t, n) {
            t[e] = n;
          };
          var n = function n(t, e, a) {
            for (var i, o, s, l, u, d = et(a), c = d[d.length - 1], f = 0, h = d.length - 1; f < h; f++) {
              if ("__proto__" === d[f] || "constructor" === d[f]) throw new Error("Cannot set prototype values");
              if (o = d[f].match(Q), s = d[f].match(tt), o) {
                if (d[f] = d[f].replace(Q, ""), t[d[f]] = [], (i = d.slice()).splice(0, f + 1), u = i.join("."), Array.isArray(e)) for (var p = 0, m = e.length; p < m; p++) n(l = {}, e[p], u), t[d[f]].push(l);else t[d[f]] = e;
                return;
              }
              s && (d[f] = d[f].replace(tt, ""), t = t[d[f]](e)), null !== t[d[f]] && t[d[f]] !== r || (t[d[f]] = {}), t = t[d[f]];
            }
            c.match(tt) ? t = t[c.replace(tt, "")](e) : t[c.replace(Q, "")] = e;
          };
          return function (t, r) {
            return n(t, r, e);
          };
        },
        get: function (e) {
          if (t.isPlainObject(e)) {
            var n = {};
            return t.each(e, function (t, e) {
              e && (n[t] = l.util.get(e));
            }), function (t, e, a, i) {
              var o = n[e] || n._;
              return o !== r ? o(t, e, a, i) : t;
            };
          }
          if (null === e) return function (t) {
            return t;
          };
          if ("function" == typeof e) return function (t, n, r, a) {
            return e(t, n, r, a);
          };
          if ("string" != typeof e || -1 === e.indexOf(".") && -1 === e.indexOf("[") && -1 === e.indexOf("(")) return function (t, n) {
            return t[e];
          };
          var a = function a(t, e, n) {
            var i, o, s, l;
            if ("" !== n) for (var u = et(n), d = 0, c = u.length; d < c; d++) {
              if (i = u[d].match(Q), o = u[d].match(tt), i) {
                if (u[d] = u[d].replace(Q, ""), "" !== u[d] && (t = t[u[d]]), s = [], u.splice(0, d + 1), l = u.join("."), Array.isArray(t)) for (var f = 0, h = t.length; f < h; f++) s.push(a(t[f], e, l));
                var p = i[0].substring(1, i[0].length - 1);
                t = "" === p ? s : s.join(p);
                break;
              }
              if (o) u[d] = u[d].replace(tt, ""), t = t[u[d]]();else {
                if (null === t || t[u[d]] === r) return r;
                t = t[u[d]];
              }
            }
            return t;
          };
          return function (t, n) {
            return a(t, n, e);
          };
        }
      };
      var R = function R(t, e, n) {
        t[e] !== r && (t[n] = t[e]);
      };
      function O(t) {
        R(t, "ordering", "bSort"), R(t, "orderMulti", "bSortMulti"), R(t, "orderClasses", "bSortClasses"), R(t, "orderCellsTop", "bSortCellsTop"), R(t, "order", "aaSorting"), R(t, "orderFixed", "aaSortingFixed"), R(t, "paging", "bPaginate"), R(t, "pagingType", "sPaginationType"), R(t, "pageLength", "iDisplayLength"), R(t, "searching", "bFilter"), "boolean" == typeof t.sScrollX && (t.sScrollX = t.sScrollX ? "100%" : ""), "boolean" == typeof t.scrollX && (t.scrollX = t.scrollX ? "100%" : "");
        var e = t.aoSearchCols;
        if (e) for (var n = 0, r = e.length; n < r; n++) e[n] && B(l.models.oSearch, e[n]);
      }
      function z(t) {
        R(t, "orderable", "bSortable"), R(t, "orderData", "aDataSort"), R(t, "orderSequence", "asSorting"), R(t, "orderDataType", "sortDataType");
        var e = t.aDataSort;
        "number" != typeof e || Array.isArray(e) || (t.aDataSort = [e]);
      }
      function N(n) {
        if (!l.__browser) {
          var r = {};
          l.__browser = r;
          var a = t("<div/>").css({
              position: "fixed",
              top: 0,
              left: -1 * t(e).scrollLeft(),
              height: 1,
              width: 1,
              overflow: "hidden"
            }).append(t("<div/>").css({
              position: "absolute",
              top: 1,
              left: 1,
              width: 100,
              overflow: "scroll"
            }).append(t("<div/>").css({
              width: "100%",
              height: 10
            }))).appendTo("body"),
            i = a.children(),
            o = i.children();
          r.barWidth = i[0].offsetWidth - i[0].clientWidth, r.bScrollOversize = 100 === o[0].offsetWidth && 100 !== i[0].clientWidth, r.bScrollbarLeft = 1 !== Math.round(o.offset().left), r.bBounding = !!a[0].getBoundingClientRect().width, a.remove();
        }
        t.extend(n.oBrowser, l.__browser), n.oScroll.iBarWidth = l.__browser.barWidth;
      }
      function L(t, e, n, a, i, o) {
        var s,
          l = a,
          u = !1;
        for (n !== r && (s = n, u = !0); l !== i;) t.hasOwnProperty(l) && (s = u ? e(s, t[l], l, t) : t[l], u = !0, l += o);
        return s;
      }
      function P(e, r) {
        var a = l.defaults.column,
          i = e.aoColumns.length,
          o = t.extend({}, l.models.oColumn, a, {
            nTh: r || n.createElement("th"),
            sTitle: a.sTitle ? a.sTitle : r ? r.innerHTML : "",
            aDataSort: a.aDataSort ? a.aDataSort : [i],
            mData: a.mData ? a.mData : i,
            idx: i
          });
        e.aoColumns.push(o);
        var s = e.aoPreSearchCols;
        s[i] = t.extend({}, l.models.oSearch, s[i]), j(e, i, t(r).data());
      }
      function j(e, n, a) {
        var i = e.aoColumns[n],
          o = e.oClasses,
          s = t(i.nTh);
        if (!i.sWidthOrig) {
          i.sWidthOrig = s.attr("width") || null;
          var u = (s.attr("style") || "").match(/width:\s*(\d+[pxem%]+)/);
          u && (i.sWidthOrig = u[1]);
        }
        if (a !== r && null !== a) {
          z(a), B(l.defaults.column, a, !0), a.mDataProp === r || a.mData || (a.mData = a.mDataProp), a.sType && (i._sManualType = a.sType), a.className && !a.sClass && (a.sClass = a.className), a.sClass && s.addClass(a.sClass);
          var d = i.sClass;
          t.extend(i, a), me(i, a, "sWidth", "sWidthOrig"), d !== i.sClass && (i.sClass = d + " " + i.sClass), a.iDataSort !== r && (i.aDataSort = [a.iDataSort]), me(i, a, "aDataSort");
        }
        var c = i.mData,
          f = nt(c),
          h = i.mRender ? nt(i.mRender) : null,
          p = function p(t) {
            return "string" == typeof t && -1 !== t.indexOf("@");
          };
        i._bAttrSrc = t.isPlainObject(c) && (p(c.sort) || p(c.type) || p(c.filter)), i._setter = null, i.fnGetData = function (t, e, n) {
          var a = f(t, e, r, n);
          return h && e ? h(a, e, t, n) : a;
        }, i.fnSetData = function (t, e, n) {
          return rt(c)(t, e, n);
        }, "number" != typeof c && (e._rowReadObject = !0), e.oFeatures.bSort || (i.bSortable = !1, s.addClass(o.sSortableNone));
        var m = -1 !== t.inArray("asc", i.asSorting),
          g = -1 !== t.inArray("desc", i.asSorting);
        i.bSortable && (m || g) ? m && !g ? (i.sSortingClass = o.sSortableAsc, i.sSortingClassJUI = o.sSortJUIAscAllowed) : !m && g ? (i.sSortingClass = o.sSortableDesc, i.sSortingClassJUI = o.sSortJUIDescAllowed) : (i.sSortingClass = o.sSortable, i.sSortingClassJUI = o.sSortJUI) : (i.sSortingClass = o.sSortableNone, i.sSortingClassJUI = "");
      }
      function H(t) {
        if (!1 !== t.oFeatures.bAutoWidth) {
          var e = t.aoColumns;
          Jt(t);
          for (var n = 0, r = e.length; n < r; n++) e[n].nTh.style.width = e[n].sWidth;
        }
        var a = t.oScroll;
        "" === a.sY && "" === a.sX || qt(t), ye(t, null, "column-sizing", [t]);
      }
      function U(t, e) {
        var n = Z(t, "bVisible");
        return "number" == typeof n[e] ? n[e] : null;
      }
      function W(e, n) {
        var r = Z(e, "bVisible"),
          a = t.inArray(n, r);
        return -1 !== a ? a : null;
      }
      function M(e) {
        var n = 0;
        return t.each(e.aoColumns, function (e, r) {
          r.bVisible && "none" !== t(r.nTh).css("display") && n++;
        }), n;
      }
      function Z(e, n) {
        var r = [];
        return t.map(e.aoColumns, function (t, e) {
          t[n] && r.push(e);
        }), r;
      }
      function $(t) {
        var e,
          n,
          a,
          i,
          o,
          s,
          u,
          d,
          c,
          f = t.aoColumns,
          h = t.aoData,
          p = l.ext.type.detect;
        for (e = 0, n = f.length; e < n; e++) if (c = [], !(u = f[e]).sType && u._sManualType) u.sType = u._sManualType;else if (!u.sType) {
          for (a = 0, i = p.length; a < i; a++) {
            for (o = 0, s = h.length; o < s && (c[o] === r && (c[o] = J(t, o, e, "type")), (d = p[a](c[o], t)) || a === p.length - 1) && ("html" !== d || m(c[o])); o++);
            if (d) {
              u.sType = d;
              break;
            }
          }
          u.sType || (u.sType = "string");
        }
      }
      function V(e, n, a, i) {
        var o,
          s,
          l,
          u,
          d,
          c,
          f,
          h = e.aoColumns;
        if (n) for (o = n.length - 1; o >= 0; o--) {
          var p = (f = n[o]).target !== r ? f.target : f.targets !== r ? f.targets : f.aTargets;
          for (Array.isArray(p) || (p = [p]), l = 0, u = p.length; l < u; l++) if ("number" == typeof p[l] && p[l] >= 0) {
            for (; h.length <= p[l];) P(e);
            i(p[l], f);
          } else if ("number" == typeof p[l] && p[l] < 0) i(h.length + p[l], f);else if ("string" == typeof p[l]) for (d = 0, c = h.length; d < c; d++) ("_all" == p[l] || t(h[d].nTh).hasClass(p[l])) && i(d, f);
        }
        if (a) for (o = 0, s = a.length; o < s; o++) i(o, a[o]);
      }
      function X(e, n, a, i) {
        var o = e.aoData.length,
          s = t.extend(!0, {}, l.models.oRow, {
            src: a ? "dom" : "data",
            idx: o
          });
        s._aData = n, e.aoData.push(s);
        for (var u = e.aoColumns, d = 0, c = u.length; d < c; d++) u[d].sType = null;
        e.aiDisplayMaster.push(o);
        var f = e.rowIdFn(n);
        return f !== r && (e.aIds[f] = s), !a && e.oFeatures.bDeferRender || ut(e, o, a, i), o;
      }
      function q(e, n) {
        var r;
        return n instanceof t || (n = t(n)), n.map(function (t, n) {
          return r = lt(e, n), X(e, r.data, n, r.cells);
        });
      }
      function K(t, e) {
        return e._DT_RowIndex !== r ? e._DT_RowIndex : null;
      }
      function G(e, n, r) {
        return t.inArray(r, e.aoData[n].anCells);
      }
      function J(t, e, n, a) {
        "search" === a ? a = "filter" : "order" === a && (a = "sort");
        var i = t.iDraw,
          o = t.aoColumns[n],
          s = t.aoData[e]._aData,
          u = o.sDefaultContent,
          d = o.fnGetData(s, a, {
            settings: t,
            row: e,
            col: n
          });
        if (d === r) return t.iDrawError != i && null === u && (pe(t, 0, "Requested unknown parameter " + ("function" == typeof o.mData ? "{function}" : "'" + o.mData + "'") + " for row " + e + ", column " + n, 4), t.iDrawError = i), u;
        if (d !== s && null !== d || null === u || a === r) {
          if ("function" == typeof d) return d.call(s);
        } else d = u;
        if (null === d && "display" === a) return "";
        if ("filter" === a) {
          var c = l.ext.type.search;
          c[o.sType] && (d = c[o.sType](d));
        }
        return d;
      }
      function Y(t, e, n, r) {
        var a = t.aoColumns[n],
          i = t.aoData[e]._aData;
        a.fnSetData(i, r, {
          settings: t,
          row: e,
          col: n
        });
      }
      var Q = /\[.*?\]$/,
        tt = /\(\)$/;
      function et(e) {
        return t.map(e.match(/(\\.|[^\.])+/g) || [""], function (t) {
          return t.replace(/\\\./g, ".");
        });
      }
      var nt = l.util.get,
        rt = l.util.set;
      function at(t) {
        return w(t.aoData, "_aData");
      }
      function it(t) {
        t.aoData.length = 0, t.aiDisplayMaster.length = 0, t.aiDisplay.length = 0, t.aIds = {};
      }
      function ot(t, e, n) {
        for (var a = -1, i = 0, o = t.length; i < o; i++) t[i] == e ? a = i : t[i] > e && t[i]--;
        -1 != a && n === r && t.splice(a, 1);
      }
      function st(t, e, n, a) {
        var i,
          o,
          s = t.aoData[e],
          l = function l(n, r) {
            for (; n.childNodes.length;) n.removeChild(n.firstChild);
            n.innerHTML = J(t, e, r, "display");
          };
        if ("dom" !== n && (n && "auto" !== n || "dom" !== s.src)) {
          var u = s.anCells;
          if (u) if (a !== r) l(u[a], a);else for (i = 0, o = u.length; i < o; i++) l(u[i], i);
        } else s._aData = lt(t, s, a, a === r ? r : s._aData).data;
        s._aSortData = null, s._aFilterData = null;
        var d = t.aoColumns;
        if (a !== r) d[a].sType = null;else {
          for (i = 0, o = d.length; i < o; i++) d[i].sType = null;
          dt(t, s);
        }
      }
      function lt(t, e, n, a) {
        var i,
          o,
          s,
          l = [],
          u = e.firstChild,
          d = 0,
          c = t.aoColumns,
          f = t._rowReadObject;
        a = a !== r ? a : f ? {} : [];
        var h = function h(t, e) {
            if ("string" == typeof t) {
              var n = t.indexOf("@");
              if (-1 !== n) {
                var r = t.substring(n + 1);
                rt(t)(a, e.getAttribute(r));
              }
            }
          },
          p = function p(t) {
            n !== r && n !== d || (o = c[d], s = t.innerHTML.trim(), o && o._bAttrSrc ? (rt(o.mData._)(a, s), h(o.mData.sort, t), h(o.mData.type, t), h(o.mData.filter, t)) : f ? (o._setter || (o._setter = rt(o.mData)), o._setter(a, s)) : a[d] = s), d++;
          };
        if (u) for (; u;) "TD" != (i = u.nodeName.toUpperCase()) && "TH" != i || (p(u), l.push(u)), u = u.nextSibling;else for (var m = 0, g = (l = e.anCells).length; m < g; m++) p(l[m]);
        var b = e.firstChild ? e : e.nTr;
        if (b) {
          var v = b.getAttribute("id");
          v && rt(t.rowId)(a, v);
        }
        return {
          data: a,
          cells: l
        };
      }
      function ut(e, r, a, i) {
        var o,
          s,
          l,
          u,
          d,
          c,
          f = e.aoData[r],
          h = f._aData,
          p = [];
        if (null === f.nTr) {
          for (o = a || n.createElement("tr"), f.nTr = o, f.anCells = p, o._DT_RowIndex = r, dt(e, f), u = 0, d = e.aoColumns.length; u < d; u++) l = e.aoColumns[u], (s = (c = !a) ? n.createElement(l.sCellType) : i[u])._DT_CellIndex = {
            row: r,
            column: u
          }, p.push(s), !c && (!l.mRender && l.mData === u || t.isPlainObject(l.mData) && l.mData._ === u + ".display") || (s.innerHTML = J(e, r, u, "display")), l.sClass && (s.className += " " + l.sClass), l.bVisible && !a ? o.appendChild(s) : !l.bVisible && a && s.parentNode.removeChild(s), l.fnCreatedCell && l.fnCreatedCell.call(e.oInstance, s, J(e, r, u), h, r, u);
          ye(e, "aoRowCreatedCallback", null, [o, h, r, p]);
        }
      }
      function dt(e, n) {
        var r = n.nTr,
          a = n._aData;
        if (r) {
          var i = e.rowIdFn(a);
          if (i && (r.id = i), a.DT_RowClass) {
            var o = a.DT_RowClass.split(" ");
            n.__rowc = n.__rowc ? k(n.__rowc.concat(o)) : o, t(r).removeClass(n.__rowc.join(" ")).addClass(a.DT_RowClass);
          }
          a.DT_RowAttr && t(r).attr(a.DT_RowAttr), a.DT_RowData && t(r).data(a.DT_RowData);
        }
      }
      function ct(e) {
        var n,
          r,
          a,
          i,
          o,
          s = e.nTHead,
          l = e.nTFoot,
          u = 0 === t("th, td", s).length,
          d = e.oClasses,
          c = e.aoColumns;
        for (u && (i = t("<tr/>").appendTo(s)), n = 0, r = c.length; n < r; n++) o = c[n], a = t(o.nTh).addClass(o.sClass), u && a.appendTo(i), e.oFeatures.bSort && (a.addClass(o.sSortingClass), !1 !== o.bSortable && (a.attr("tabindex", e.iTabIndex).attr("aria-controls", e.sTableId), se(e, o.nTh, n))), o.sTitle != a[0].innerHTML && a.html(o.sTitle), we(e, "header")(e, a, o, d);
        if (u && gt(e.aoHeader, s), t(s).children("tr").children("th, td").addClass(d.sHeaderTH), t(l).children("tr").children("th, td").addClass(d.sFooterTH), null !== l) {
          var f = e.aoFooter[0];
          for (n = 0, r = f.length; n < r; n++) (o = c[n]).nTf = f[n].cell, o.sClass && t(o.nTf).addClass(o.sClass);
        }
      }
      function ft(e, n, a) {
        var i,
          o,
          s,
          l,
          u,
          d,
          c,
          f,
          h,
          p = [],
          m = [],
          g = e.aoColumns.length;
        if (n) {
          for (a === r && (a = !1), i = 0, o = n.length; i < o; i++) {
            for (p[i] = n[i].slice(), p[i].nTr = n[i].nTr, s = g - 1; s >= 0; s--) e.aoColumns[s].bVisible || a || p[i].splice(s, 1);
            m.push([]);
          }
          for (i = 0, o = p.length; i < o; i++) {
            if (c = p[i].nTr) for (; d = c.firstChild;) c.removeChild(d);
            for (s = 0, l = p[i].length; s < l; s++) if (f = 1, h = 1, m[i][s] === r) {
              for (c.appendChild(p[i][s].cell), m[i][s] = 1; p[i + f] !== r && p[i][s].cell == p[i + f][s].cell;) m[i + f][s] = 1, f++;
              for (; p[i][s + h] !== r && p[i][s].cell == p[i][s + h].cell;) {
                for (u = 0; u < f; u++) m[i + u][s + h] = 1;
                h++;
              }
              t(p[i][s].cell).attr("rowspan", f).attr("colspan", h);
            }
          }
        }
      }
      function ht(e, n) {
        vt(e);
        var r = ye(e, "aoPreDrawCallback", "preDraw", [e]);
        if (-1 === t.inArray(!1, r)) {
          var a = [],
            i = 0,
            o = e.asStripeClasses,
            s = o.length,
            l = e.oLanguage,
            u = "ssp" == xe(e),
            d = e.aiDisplay,
            c = e._iDisplayStart,
            f = e.fnDisplayEnd();
          if (e.bDrawing = !0, e.bDeferLoading) e.bDeferLoading = !1, e.iDraw++, Vt(e, !1);else if (u) {
            if (!e.bDestroying && !n) return void _t(e);
          } else e.iDraw++;
          if (0 !== d.length) for (var h = u ? 0 : c, p = u ? e.aoData.length : f, m = h; m < p; m++) {
            var g = d[m],
              b = e.aoData[g];
            null === b.nTr && ut(e, g);
            var v = b.nTr;
            if (0 !== s) {
              var y = o[i % s];
              b._sRowStripe != y && (t(v).removeClass(b._sRowStripe).addClass(y), b._sRowStripe = y);
            }
            ye(e, "aoRowCallback", null, [v, b._aData, i, m, g]), a.push(v), i++;
          } else {
            var _ = l.sZeroRecords;
            1 == e.iDraw && "ajax" == xe(e) ? _ = l.sLoadingRecords : l.sEmptyTable && 0 === e.fnRecordsTotal() && (_ = l.sEmptyTable), a[0] = t("<tr/>", {
              class: s ? o[0] : ""
            }).append(t("<td />", {
              valign: "top",
              colSpan: M(e),
              class: e.oClasses.sRowEmpty
            }).html(_))[0];
          }
          ye(e, "aoHeaderCallback", "header", [t(e.nTHead).children("tr")[0], at(e), c, f, d]), ye(e, "aoFooterCallback", "footer", [t(e.nTFoot).children("tr")[0], at(e), c, f, d]);
          var w = t(e.nTBody);
          w.children().detach(), w.append(t(a)), ye(e, "aoDrawCallback", "draw", [e]), e.bSorted = !1, e.bFiltered = !1, e.bDrawing = !1;
        } else Vt(e, !1);
      }
      function pt(t, e) {
        var n = t.oFeatures,
          r = n.bSort,
          a = n.bFilter;
        r && ae(t), a ? It(t, t.oPreviousSearch) : t.aiDisplay = t.aiDisplayMaster.slice(), !0 !== e && (t._iDisplayStart = 0), t._drawHold = e, ht(t), t._drawHold = !1;
      }
      function mt(e) {
        var n = e.oClasses,
          r = t(e.nTable),
          a = t("<div/>").insertBefore(r),
          i = e.oFeatures,
          o = t("<div/>", {
            id: e.sTableId + "_wrapper",
            class: n.sWrapper + (e.nTFoot ? "" : " " + n.sNoFooter)
          });
        e.nHolding = a[0], e.nTableWrapper = o[0], e.nTableReinsertBefore = e.nTable.nextSibling;
        for (var s, u, d, c, f, h, p = e.sDom.split(""), m = 0; m < p.length; m++) {
          if (s = null, "<" == (u = p[m])) {
            if (d = t("<div/>")[0], "'" == (c = p[m + 1]) || '"' == c) {
              for (f = "", h = 2; p[m + h] != c;) f += p[m + h], h++;
              if ("H" == f ? f = n.sJUIHeader : "F" == f && (f = n.sJUIFooter), -1 != f.indexOf(".")) {
                var g = f.split(".");
                d.id = g[0].substr(1, g[0].length - 1), d.className = g[1];
              } else "#" == f.charAt(0) ? d.id = f.substr(1, f.length - 1) : d.className = f;
              m += h;
            }
            o.append(d), o = t(d);
          } else if (">" == u) o = o.parent();else if ("l" == u && i.bPaginate && i.bLengthChange) s = Wt(e);else if ("f" == u && i.bFilter) s = Ct(e);else if ("r" == u && i.bProcessing) s = $t(e);else if ("t" == u) s = Xt(e);else if ("i" == u && i.bInfo) s = Nt(e);else if ("p" == u && i.bPaginate) s = Mt(e);else if (0 !== l.ext.feature.length) for (var b = l.ext.feature, v = 0, y = b.length; v < y; v++) if (u == b[v].cFeature) {
            s = b[v].fnInit(e);
            break;
          }
          if (s) {
            var _ = e.aanFeatures;
            _[u] || (_[u] = []), _[u].push(s), o.append(s);
          }
        }
        a.replaceWith(o), e.nHolding = null;
      }
      function gt(e, n) {
        var r,
          a,
          i,
          o,
          s,
          l,
          u,
          d,
          c,
          f,
          h,
          p = t(n).children("tr"),
          m = function m(t, e, n) {
            for (var r = t[e]; r[n];) n++;
            return n;
          };
        for (e.splice(0, e.length), i = 0, l = p.length; i < l; i++) e.push([]);
        for (i = 0, l = p.length; i < l; i++) for (d = 0, a = (r = p[i]).firstChild; a;) {
          if ("TD" == a.nodeName.toUpperCase() || "TH" == a.nodeName.toUpperCase()) for (c = (c = 1 * a.getAttribute("colspan")) && 0 !== c && 1 !== c ? c : 1, f = (f = 1 * a.getAttribute("rowspan")) && 0 !== f && 1 !== f ? f : 1, u = m(e, i, d), h = 1 === c, s = 0; s < c; s++) for (o = 0; o < f; o++) e[i + o][u + s] = {
            cell: a,
            unique: h
          }, e[i + o].nTr = r;
          a = a.nextSibling;
        }
      }
      function bt(t, e, n) {
        var r = [];
        n || (n = t.aoHeader, e && gt(n = [], e));
        for (var a = 0, i = n.length; a < i; a++) for (var o = 0, s = n[a].length; o < s; o++) !n[a][o].unique || r[o] && t.bSortCellsTop || (r[o] = n[a][o].cell);
        return r;
      }
      function vt(t) {
        var e = "ssp" == xe(t),
          n = t.iInitDisplayStart;
        n !== r && -1 !== n && (t._iDisplayStart = e ? n : n >= t.fnRecordsDisplay() ? 0 : n, t.iInitDisplayStart = -1);
      }
      function yt(e, n, r) {
        if (ye(e, "aoServerParams", "serverParams", [n]), n && Array.isArray(n)) {
          var a = {},
            i = /(.*?)\[\]$/;
          t.each(n, function (t, e) {
            var n = e.name.match(i);
            if (n) {
              var r = n[0];
              a[r] || (a[r] = []), a[r].push(e.value);
            } else a[e.name] = e.value;
          }), n = a;
        }
        var o,
          s = e.ajax,
          l = e.oInstance,
          u = function u(t) {
            var n = e.jqXHR ? e.jqXHR.status : null;
            (null === t || "number" == typeof n && 204 == n) && St(e, t = {}, []);
            var a = t.error || t.sError;
            a && pe(e, 0, a), e.json = t, ye(e, null, "xhr", [e, t, e.jqXHR]), r(t);
          };
        if (t.isPlainObject(s) && s.data) {
          var d = "function" == typeof (o = s.data) ? o(n, e) : o;
          n = "function" == typeof o && d ? d : t.extend(!0, n, d), delete s.data;
        }
        var c = {
          data: n,
          success: u,
          dataType: "json",
          cache: !1,
          type: e.sServerMethod,
          error: function (n, r, a) {
            var i = ye(e, null, "xhr", [e, null, e.jqXHR]);
            -1 === t.inArray(!0, i) && ("parsererror" == r ? pe(e, 0, "Invalid JSON response", 1) : 4 === n.readyState && pe(e, 0, "Ajax error", 7)), Vt(e, !1);
          }
        };
        e.oAjaxData = n, ye(e, null, "preXhr", [e, n]), e.fnServerData ? e.fnServerData.call(l, e.sAjaxSource, t.map(n, function (t, e) {
          return {
            name: e,
            value: t
          };
        }), u, e) : e.sAjaxSource || "string" == typeof s ? e.jqXHR = t.ajax(t.extend(c, {
          url: s || e.sAjaxSource
        })) : "function" == typeof s ? e.jqXHR = s.call(l, n, u, e) : (e.jqXHR = t.ajax(t.extend(c, s)), s.data = o);
      }
      function _t(t) {
        t.iDraw++, Vt(t, !0), yt(t, wt(t), function (e) {
          xt(t, e);
        });
      }
      function wt(e) {
        var n,
          r,
          a,
          i,
          o = e.aoColumns,
          s = o.length,
          u = e.oFeatures,
          d = e.oPreviousSearch,
          c = e.aoPreSearchCols,
          f = [],
          h = re(e),
          p = e._iDisplayStart,
          m = !1 !== u.bPaginate ? e._iDisplayLength : -1,
          g = function g(t, e) {
            f.push({
              name: t,
              value: e
            });
          };
        g("sEcho", e.iDraw), g("iColumns", s), g("sColumns", w(o, "sName").join(",")), g("iDisplayStart", p), g("iDisplayLength", m);
        var b = {
          draw: e.iDraw,
          columns: [],
          order: [],
          start: p,
          length: m,
          search: {
            value: d.sSearch,
            regex: d.bRegex
          }
        };
        for (n = 0; n < s; n++) a = o[n], i = c[n], r = "function" == typeof a.mData ? "function" : a.mData, b.columns.push({
          data: r,
          name: a.sName,
          searchable: a.bSearchable,
          orderable: a.bSortable,
          search: {
            value: i.sSearch,
            regex: i.bRegex
          }
        }), g("mDataProp_" + n, r), u.bFilter && (g("sSearch_" + n, i.sSearch), g("bRegex_" + n, i.bRegex), g("bSearchable_" + n, a.bSearchable)), u.bSort && g("bSortable_" + n, a.bSortable);
        u.bFilter && (g("sSearch", d.sSearch), g("bRegex", d.bRegex)), u.bSort && (t.each(h, function (t, e) {
          b.order.push({
            column: e.col,
            dir: e.dir
          }), g("iSortCol_" + t, e.col), g("sSortDir_" + t, e.dir);
        }), g("iSortingCols", h.length));
        var v = l.ext.legacy.ajax;
        return null === v ? e.sAjaxSource ? f : b : v ? f : b;
      }
      function xt(t, e) {
        var n = function n(t, n) {
            return e[t] !== r ? e[t] : e[n];
          },
          a = St(t, e),
          i = n("sEcho", "draw"),
          o = n("iTotalRecords", "recordsTotal"),
          s = n("iTotalDisplayRecords", "recordsFiltered");
        if (i !== r) {
          if (1 * i < t.iDraw) return;
          t.iDraw = 1 * i;
        }
        a || (a = []), it(t), t._iRecordsTotal = parseInt(o, 10), t._iRecordsDisplay = parseInt(s, 10);
        for (var l = 0, u = a.length; l < u; l++) X(t, a[l]);
        t.aiDisplay = t.aiDisplayMaster.slice(), ht(t, !0), t._bInitComplete || Ht(t, e), Vt(t, !1);
      }
      function St(e, n, a) {
        var i = t.isPlainObject(e.ajax) && e.ajax.dataSrc !== r ? e.ajax.dataSrc : e.sAjaxDataProp;
        if (!a) return "data" === i ? n.aaData || n[i] : "" !== i ? nt(i)(n) : n;
        rt(i)(n, a);
      }
      function Ct(e) {
        var r = e.oClasses,
          a = e.sTableId,
          i = e.oLanguage,
          o = e.oPreviousSearch,
          s = e.aanFeatures,
          l = '<input type="search" class="' + r.sFilterInput + '"/>',
          u = i.sSearch;
        u = u.match(/_INPUT_/) ? u.replace("_INPUT_", l) : u + l;
        var d = t("<div/>", {
            id: s.f ? null : a + "_filter",
            class: r.sFilter
          }).append(t("<label/>").append(u)),
          c = function c(t) {
            s.f;
            var n = this.value ? this.value : "";
            o.return && "Enter" !== t.key || n != o.sSearch && (It(e, {
              sSearch: n,
              bRegex: o.bRegex,
              bSmart: o.bSmart,
              bCaseInsensitive: o.bCaseInsensitive,
              return: o.return
            }), e._iDisplayStart = 0, ht(e));
          },
          f = null !== e.searchDelay ? e.searchDelay : "ssp" === xe(e) ? 400 : 0,
          h = t("input", d).val(o.sSearch).attr("placeholder", i.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT", f ? Yt(c, f) : c).on("mouseup", function (t) {
            setTimeout(function () {
              c.call(h[0], t);
            }, 10);
          }).on("keypress.DT", function (t) {
            if (13 == t.keyCode) return !1;
          }).attr("aria-controls", a);
        return t(e.nTable).on("search.dt.DT", function (t, r) {
          if (e === r) try {
            h[0] !== n.activeElement && h.val(o.sSearch);
          } catch (t) {}
        }), d[0];
      }
      function It(t, e, n) {
        var a = t.oPreviousSearch,
          i = t.aoPreSearchCols,
          o = function o(t) {
            a.sSearch = t.sSearch, a.bRegex = t.bRegex, a.bSmart = t.bSmart, a.bCaseInsensitive = t.bCaseInsensitive, a.return = t.return;
          },
          s = function s(t) {
            return t.bEscapeRegex !== r ? !t.bEscapeRegex : t.bRegex;
          };
        if ($(t), "ssp" != xe(t)) {
          Tt(t, e.sSearch, n, s(e), e.bSmart, e.bCaseInsensitive, e.return), o(e);
          for (var l = 0; l < i.length; l++) kt(t, i[l].sSearch, l, s(i[l]), i[l].bSmart, i[l].bCaseInsensitive);
          Dt(t);
        } else o(e);
        t.bFiltered = !0, ye(t, null, "search", [t]);
      }
      function Dt(e) {
        for (var n, r, a = l.ext.search, i = e.aiDisplay, o = 0, s = a.length; o < s; o++) {
          for (var u = [], d = 0, c = i.length; d < c; d++) r = i[d], n = e.aoData[r], a[o](e, n._aFilterData, r, n._aData, d) && u.push(r);
          i.length = 0, t.merge(i, u);
        }
      }
      function kt(t, e, n, r, a, i) {
        if ("" !== e) {
          for (var o, s = [], l = t.aiDisplay, u = Ft(e, r, a, i), d = 0; d < l.length; d++) o = t.aoData[l[d]]._aFilterData[n], u.test(o) && s.push(l[d]);
          t.aiDisplay = s;
        }
      }
      function Tt(t, e, n, r, a, i) {
        var o,
          s,
          u,
          d = Ft(e, r, a, i),
          c = t.oPreviousSearch.sSearch,
          f = t.aiDisplayMaster,
          h = [];
        if (0 !== l.ext.search.length && (n = !0), s = Rt(t), e.length <= 0) t.aiDisplay = f.slice();else {
          for ((s || n || r || c.length > e.length || 0 !== e.indexOf(c) || t.bSorted) && (t.aiDisplay = f.slice()), o = t.aiDisplay, u = 0; u < o.length; u++) d.test(t.aoData[o[u]]._sFilterRow) && h.push(o[u]);
          t.aiDisplay = h;
        }
      }